Группа: Advanced
Сообщений: 412
Регистрация: 23-June 05
Из: Балашиха
Пользователь №: 7
Заходит на форум с гостевика или полного инета.
Паскаль –язык программирования созданный в 1991 году, специально для обучению принципов программирования. Сегодня познакомлю вас с основными аспектами этого языка, и советую сразу же переходить на изучение Delphi. На это есть свои причины: Язык программирования Delphi основан на Object Pascal, который, в свою очередь основана на Pascal, Delphi имеет визуальную среду программирования, что облегчает создание программ для ОС Windows и наконец Delphi намного мощнее Pascal.
Структура программы: program name; -вместо слова name поставьте любое слово. С этого начинается любое приложение написанное на Pascal. Далее идёт блок var - блок объявления переменных begin - начало программного кода ...... - ну сам код, конечно. end. завершаем программу После каждого оператора ставиться ; Оператор присваивания := также перед begin'ом можно вставить следующие блоки: label -объявления меток. const –константы. type –типы. var –переменные. procedure, function -процедуры и функции.
Группа: Advanced
Сообщений: 412
Регистрация: 23-June 05
Из: Балашиха
Пользователь №: 7
Заходит на форум с гостевика или полного инета.
Создадим нашу первую простейшую программу: Для начала изучим 2 простейших оператора: 1)Оператор вывода: write (''); 2)оператор ввода: read (); Если вы хотите чтоб после завершения работы оператора курсор переходил на следующую строку то ставьте ln перед оператором(только для операторов ввода\вывода), например: writeln (''); program chisla; var a,b:integer begin writeln ('Vvedite 2 4isla:'); readln (a,; writeln ('1 4islo= ',a,' 2 4islo= ',; end. Данная программа просит ввести 2 числа, а затем выводит их на экран.
ПРИМЕЧАНИЕ: Пару интересных операторов: abs (x) x-целое абсолютная по модулю величина (x) sqr (x) x-целое возведение в квадрат trunc(x) x-вещественное выделение целой части round (x) x-вещественное округление x до целого числа succ (x) x-целое следующее за x число pred (x) x-целое предыдущее за x число random(x) x-целое генерирует число от 0 до x-1, для работы оператора после begin напишите randomize;
Группа: Advanced
Сообщений: 412
Регистрация: 23-June 05
Из: Балашиха
Пользователь №: 7
Заходит на форум с гостевика или полного инета.
Представим ситуацию, когда надо вывести дробное число, например 3,48: тогда пишем: a:=3,48 writeln (a:4:2); и так 4- это общее число знаков, а 2- это кол-во позиций после запятой
Основные Операторы: Дальше я познакомлю вас с основными операторами паскаля: Оператор Варианта: 1)if <условие> then <оператор> else <оператор>
2)case <ключ выбора> of <список вариантов> else <оператор> end; case- как вы уже наверное знаете переводиться случай of- из
Пример программы с использованием оператора Варианта: Надо ввести 3 числа и найти наименьшее: program min; var a,b,c,min:integer; var begin writeln ('Введите 3 числа:'); readln (a,b,c); min:=a if b<min then min:=b if c<min then min:=c write ('Наименьшее число= ',min); end.
Цикл со счётчиком: for i:=n to m do begin <операторы> end; for -для i -счётчик n -начальное значение m -конечное значение do -делать
Группа: Advanced
Сообщений: 412
Регистрация: 23-June 05
Из: Балашиха
Пользователь №: 7
Заходит на форум с гостевика или полного инета.
Примеры: 1)program cikl; var i:integer; begin for i:=1 to 10 do begin writeln (i); writeln ('*'); end; end.
2)program cikl; var a,i:integer; begin randomize; for i:=1 to 10 do begin a:=random (100) writeln (i,' число= ',a); end; end.
ПРИМЕЧАНИЕ: для того чтобы уменьшать значения(то есть когда n>m), надо писать не to а downto. Начальное и конечное значения должны иметь тип Integer для операторов for.... и if.... : если после операторов if и for ставится всего 1 оператор то ставить begin и end не обязательно.. И еще в операторе стоящем перед else точка с запятой не ставиться.
Оператор цикла с условием: repeate <опраторы> until <условие>
repeat -повторять until -до Данный цикл повторяется пока условие не станет истинным..
Оператор цикла с предусловием: while <условие> do begin <операторы> end; while –пока do -делать Массивы Одномерные массивы: объявляется так: <имя массива>:array [1..n] of <тип эелементов> Далее небольшие примеры кода для работы с Массивами:
Группа: Advanced
Сообщений: 412
Регистрация: 23-June 05
Из: Балашиха
Пользователь №: 7
Заходит на форум с гостевика или полного инета.
1)Ввод с клавиатуры: for i:=1 to n do begin writeln ('Введите ',i,'-ый элемент'); readln (a[i]); end; 2)Задать массив случайным образом: randomize; for i:=1 to n do begin a[i]:=random (10); writeln ('a[',i,']=',a[i]); end; 3)Вывод массива: for i:=1 to n do writeln ('a[',i,']= ',a[i]); 4)Расчёт кол-ва элементов меньших t: t-любое целое число k:=0; for i:=1 to n do begin if a[i]<t then k:=k+1 end; writeln ('кол-во элементов <',t,'= ',k); 5)Подсчёт суммы: for i:=1 to n do s:=s+a[i]; writeln ('Сумма элементов= ',s);
Общее для всех элементов у нас будет: var a:array [1..n] of integer; b:array [1..n] of real;
6)Нахождение max и min: min:=a[1]; max:=a[1]; for i:=1 to n do begin if a[i]<min then min:=a[i]; if a[i]>max then max:=a[i]; end; writeln ('max= ',max,'; min= ',min); 7)Запись массива в обратном порядке: for i:=1 to n\2 do begin p:=a[i] a[i]:=a[n-i+1]; a[n-i+1]:=p; end; 8)Формирование нового массива из элементов старого: t-любое число. k:=0 for i:=1 to n do begin if a[i]>t then begin k:=k+1; c[k]:=a[i]; end; end. 9)Вставка элементов в массив на j-ое место(например будем вставлять число 10): for i:=n+1 downto j+1 do a[i]:=a[i-1]; a[j]:=10;
Группа: Advanced
Сообщений: 412
Регистрация: 23-June 05
Из: Балашиха
Пользователь №: 7
Заходит на форум с гостевика или полного инета.
Двумерные массивы: Описание: <имя массива>:array [кол-во строк] of array [кол-во столбцов] of <тип>; или <имя массива>:array [кол-во строк,кол-во столбцов] of <тип>; по-моему 2 способ более удобнее...
Например: 1)a:array [1..3,1..4] of real; то есть 3 строки, 4 столбца и тип REAL. 2)program vvod1; var a:array [1..3,1..3] of integer; i,j:integer; begin for i:=1 to 3 do -'для строк for j:=1 to 3 do -'для столбцов begin readln (a[i,j]); writeln ('a[',i,',',j,']=',a[i,j]); end; end.
И небольшие заготовки для ваших программ с использованием двумерных массивов: 1)Вывод ввиде таблици: program vvod2; var a:array [1..5,1..5] of real; i,j:integer; begin for i:=1 to 5 do begin for i:=1 to 5 do begin a[i,j]:=i,j;-'ну иль чё угодно напишите тут write (a[i,j]:6:2); end; writeln; end; end. 2)Заполнение случайными числами: program vvod3; var a:array [1..5,1..5] of integer; i,j:integer; begin randomize; for i:=1 to 5 do begin for j:=1 to 5 do begin a[i,j]:=random (9); write (a[i,j]+6); end; writeln; end; end. 3)Подсчёт суммы элементов: program summa1; var a:array [1..3,1..3] of integer; s,i,j:integer; begin s:=0 randomize; for i:=1 to 3 do begin for j:=1 to 3 do begin a[i,j]:=random (9); s:=s+a[i,j]; write (a[i,j]:4); end; А дальше есть не большой выбор действий: 1)writeln; end; writeln ('сумма= ',s); -'общая сумма end. 2)writeln ('Сумма= ',s); -'сумма по каждой строке writeln; end; end.
Группа: Advanced
Сообщений: 412
Регистрация: 23-June 05
Из: Балашиха
Пользователь №: 7
Заходит на форум с гостевика или полного инета.
ПОД ПРОГРАММЫ: 1)ПРОЦЕДУРЫ: procedure <имя> var <переменные> <параметры>:<тип> var <переменные> begin <операторы> end. 2)Функции: function <имя> (<переменные>):<тип функции> var <переменные> begin имя:= результат; end;
Пример: program minimum; var a,b:integer; function min(c1,c2:integer):integer; begin if c1<c2 then min:=c1; else min:=c2; end; begin writeln ('Введите 2 числа'); readln (a,; writeln ('наименьшее число',min(a,); end.
Работа с файлами: Объявление: имя: file of тип элемента; к примеру: a:file of integer; Операторы: 1)copy (p1,p2,p3) где p1-имя строки p2-номер знака p3-число копируемых элементов 2)Pos(s1,'<фрагмент>') -поцск фрагмента в строке 3)insert (s1,s2,n) -В S2 вставляем S1, начиная с позиции n 4)delete (s1,n,m) -из s1 удалмть m символов с позиции n 5)assign (f,'Путь+имя файла') -открытие файла. 6)rewrite (f) -открыть файл для записи 7)append (d) -открыть в режиме добавления 8)reset (f) -чтение 9)EOF (f) -проверка на конец файла 10)IORESULT -проверка на правильность операции открытия файла
Группа: Advanced
Сообщений: 412
Регистрация: 23-June 05
Из: Балашиха
Пользователь №: 7
Заходит на форум с гостевика или полного инета.
f:file; ch:char; st:string; begin writeln ('Введите имя файла'); readln (st); assign (f,st); writeln ('удалить файл(у); переименовать (п)'); readln (ch) case ch of 'У';'у':erace (f); 'п';'П':begin writeln ('Введите новое имя:'); readln (st); rename (f,st); end; end; end.
Ну и на последок напишем простейшую игру. Цель игры отгадать число от 1 до 9, задуманное компьютером за 5 попыток: program game007; var c,i,n,m:integer; begin randomize; writeln (' Game007 v1.4'); writeln (' newberkyt 2003'); writeln (' All right reserved.'); c:=random(9)+1; writeln (' Komputer zadumal shislo...'); writeln (' ot 1 do 9'); writeln (' Otgaday.....'); writeln (' y tebya est 5 popitok....'); n:=0; repeat n:=n+1; write (' Vash variant'); readln (i); if i>c then writeln (' chislo menshe....') else writeln (' shislo bolshe....'); until (n=5) or (c=i); if c=i then writeln (' You Win!!!! otvet= ',i) else writeln (' Game over, otvet= ',c); writeln ('E-Mail to:andreyereimn@yandex.ru') end.
Вот мы вкратце изучили Pascal. Теперь можно смело переходить к изучению Delphi. Т.к. основной синтаксис мы уже изучили, и дальнейшее изучение Delphi будет совсем простым. Удачи вам в этом совсем не лёгком деле.