Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
subjects:programming:pascal [2015/10/19 14:58] ¶ создано |
subjects:programming:pascal [2018/05/31 21:22] ¶ удалено |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Pascal ====== | ====== Pascal ====== | ||
- | |||
**Паскаль** -- это императивный, структурированный компилируемый язык программирования. | **Паскаль** -- это императивный, структурированный компилируемый язык программирования. | ||
Часто используется в учебных заведениях в качестве "первого" языка. | Часто используется в учебных заведениях в качестве "первого" языка. | ||
+ | Является базой для ряда других языков. | ||
Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. | Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. | ||
- | Паскаль, в его первоначальном виде, представляет собою чисто процедурный язык и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, и т. д. Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций. | + | Паскаль, в первоначальном виде, представляет собою чисто процедурный язык и включает множество структур и конструкций с зарезервированными словами наподобие ''if'', ''then'', ''else'', ''while'', ''for'', и т. д. |
- | В современных диалектах (Free Pascal) доступны такие операции, как перегрузка операторов и функций. | + | Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций. |
+ | В современных диалектах (''Free Pascal'') доступны такие операции, как перегрузка операторов и функций. | ||
=====Стандартные функции===== | =====Стандартные функции===== | ||
Строка 13: | Строка 14: | ||
^Простые типы данных^^^^ | ^Простые типы данных^^^^ | ||
^DEC(N)|Уменьшение N|<code pascal>DEC(6);//=5</code>|| | ^DEC(N)|Уменьшение N|<code pascal>DEC(6);//=5</code>|| | ||
- | ^INC(N)|Увеличение N|<code pascal>INC(5);//=4</code>|| | + | ^INC(N)|Увеличение N|<code pascal>INC(5);//=6</code>|| |
- | ^ORD(N)|Порядковый номер N|<code pascal></code>|| | + | ^ORD(N)|Порядковый номер N|<code pascal>ORD(5);//=5 |
- | ^ODD(N)|Проверка N на чётность|<code pascal></code>|| | + | ORD('b');//=98</code>|| |
+ | ^ODD(N)|Проверка N на (''не'')чётность|<code pascal>ODD(5);//=True | ||
+ | ODD(4);//=False</code>|| | ||
^PRED(N)|Предшествующее значение N|<code pascal>PRED('b');//='a'</code>|| | ^PRED(N)|Предшествующее значение N|<code pascal>PRED('b');//='a'</code>|| | ||
^SUCC(N)|Последующее значение N|<code pascal>SUCC('B');//='C'</code>|| | ^SUCC(N)|Последующее значение N|<code pascal>SUCC('B');//='C'</code>|| | ||
- | + | ^Целые типы данных^^^^ | |
- | ^||<code pascal></code>|| | + | ^A DIV B|Целая часть от деления|<code pascal>14 DIV 3;//=4</code>|| |
+ | ^A MOD B|Остаток от деления|<code pascal>14 MOD 3;//=2</code>|| | ||
+ | ^TRUNC(X)|Получение целой части вещественного числа X|<code pascal>TRUNC(3.52);\\=3</code>|| | ||
+ | ^ROUND(X)|Округление до целого вещественного числа X|<code pascal>ROUND(3.52);\\=4</code>|| | ||
+ | ^Целые и вещественные типы данных^^^^ | ||
+ | ^ABS(NX)|Абсолютная величина NX|<code pascal>ABS(-3);//=3</code>|| | ||
+ | ^SQR(NX)|Квадрат числа NX|<code pascal>SQR(3);//=9</code>|| | ||
+ | ^Вещественные типы данных^^^^ | ||
+ | ^ARCTAN(X)|Арктангенс X|<code pascal></code>|| | ||
+ | ^COS(X)|Косинус X|<code pascal>COS(PI/3);//=0.5</code>|| | ||
+ | ^EXP(X)|e<sup>x</sup>|<code pascal></code>|| | ||
+ | ^FRAC(X)|Дробная часть X|<code pascal>FRAC(3.52);//=0.52</code>|| | ||
+ | ^INT(X)|Целая часть X|<code pascal>INT(3.52);//=3</code>|| | ||
+ | ^LN(X)|Натуральный логорифм (по основанию e)|<code pascal></code>|| | ||
+ | ^PI|Значение $\pi=3.1415926535897932385$|<code pascal></code>|| | ||
+ | ^SIN(X)|Синус X|<code pascal></code>|| | ||
+ | ^SQRT(X)|Квадратный корень из X|<code pascal>SQRT(9);//=3</code>|| | ||
+ | ^Логические операнды^^^^ | ||
+ | ^NOT|Отрицание|<code pascal></code>|| | ||
+ | ^OR|Объединение, или логическое сложение|<code pascal></code>|| | ||
+ | ^AND|Пересечение, или логическое умножение|<code pascal></code>|| | ||
+ | ^XOR|Исключающее ИЛИ, или сложение по модулю два|<code pascal></code>|| | ||
+ | ^Другое^^^^ | ||
+ | ^Randomize|Инициализация генератора случайных чисел (обычно, в начале программы, сразу после ''begin'')|<code pascal>Randomize;</code>|| | ||
+ | ^Random|Генерация случайного числа|<code pascal>a:=random(1000);//a от 0 до 999</code>|| | ||
=====Типы данных===== | =====Типы данных===== | ||
+ | Можно выделить следующие типы данных: | ||
+ | * Простые типы | ||
+ | * Целые типы -- SHORTINT, INTEGER, LOGINT, BYTE, WORD; | ||
+ | * Логический тип -- BOOLEAN | ||
+ | * Перечисляемые типы (определяются программистом через TYPE) | ||
+ | * Тип-диапазон <code pascal>TYPE NUM = -10..10;</code> | ||
+ | * Символьный тип -- CHAR | ||
+ | * Вещественные типы -- REAL, SINGLE, DOUBLE, EXTENDED, COMP; | ||
+ | * Текстовая строка -- STRING; | ||
+ | * Структурированные типы | ||
+ | * Массив<code pascal>M1 : ARRAY[1..10, 2..20] OF INTEGER;</code> | ||
+ | * ASCII-строка-- PCHAR; | ||
+ | * Запись (структура в Си) <code pascal>TYPE | ||
+ | HUMAN = RECORD | ||
+ | NAME : STRING; | ||
+ | DATA : INTEGER; | ||
+ | END;</code> Доступ к полям через имя_переменной.имя_поля. | ||
+ | * Множество (из порядковых элементов и общее число меньше 255) <code pascal>M = SET OF ['a', 'b', '5', '!'];</code> | ||
+ | * Файл | ||
+ | * Текстовый файл -- TEXT; | ||
+ | * Типизированные (FILE OF ''тип'') | ||
+ | * файлы без типа (FILE) | ||
+ | * Указатели | ||
+ | * Тип-указатель-- POINTER | ||
+ | * Процедурные типы (процедуры и функции допустимо использовать в качестве переменных) | ||
+ | * Объекты | ||
+ | |||
=====Объявление переменных:===== | =====Объявление переменных:===== | ||
+ | FIXME | ||
+ | |||
=====Ввод, Вывод сообщений в консоли:===== | =====Ввод, Вывод сообщений в консоли:===== | ||
- | =====Условие if():===== | + | INPUT, OUTPUT - работа с файлами |
- | ====Пример:==== | + | |
- | =====Циклы===== | + | Чтение: |
- | ====Цикл for():==== | + | <code pascal>READ (A, B, C); |
- | ====Цикл while():==== | + | //123 2345 -56 <Enter>| |
- | ====Цикл do while():==== | + | |
+ | READLN(A, B, C); | ||
+ | //123 2345 -56 <Enter> | ||
+ | |</code> | ||
+ | |||
+ | Запись: | ||
+ | <code pascal> | ||
+ | WRITE(); | ||
+ | WRITE(J:8, I:12); // Указание позиций вывода | ||
+ | WRITELN(); // WRITE + перевод строки | ||
+ | </code> | ||
+ | |||
+ | =====Структурированные операторы===== | ||
+ | ==== BEGIN … END ==== | ||
+ | Составной оператор ''BEGIN … END'' представляет собой совокупность последовательно выполняемых операторов, заключённых в операторные **скобки** ''BEGIN'' и ''END''. | ||
+ | |||
+ | ==== Выбор (условия) ==== | ||
+ | === IF … THEN === | ||
+ | <code pascal>IF True THEN <1>;</code> | ||
+ | |||
+ | <code pascal>IF True THEN <1> | ||
+ | ELSE <2>;</code> | ||
+ | |||
+ | <code pascal>IF True THEN | ||
+ | BEGIN | ||
+ | <1.1> | ||
+ | <1.…> | ||
+ | END | ||
+ | ELSE | ||
+ | BEGIN | ||
+ | <2.1> | ||
+ | <2.…> | ||
+ | END;</code> | ||
+ | |||
+ | === CASE … OF === | ||
+ | <code pascal>CASE PARAMETR OF | ||
+ | P1: <1>; | ||
+ | P2: <…>; | ||
+ | ELSE: <N> | ||
+ | END;</code> | ||
+ | |||
+ | ====Циклы==== | ||
+ | Во всех циклах можно использовать процедуры: ''BREAK'' , ''CONTINUE'' . | ||
+ | |||
+ | ===FOR … DO=== | ||
+ | Общий вид: | ||
+ | <code pascal>FOR I:=N1 TO N2 DO <1>;</code> | ||
+ | Пример: | ||
+ | <code pascal>FOR var i:=1 TO 5 DO | ||
+ | write(i); | ||
+ | //12345</code> | ||
+ | :!:Пример **для уменьшения** значения: | ||
+ | <code pascal>FOR var i:=5 DOWNTO 1 DO | ||
+ | write(i); | ||
+ | //54321</code> | ||
+ | |||
+ | ===REPEAT … UNTIL=== | ||
+ | **Цикл с постусловием**, т.е. цикл будет гарантированно пройден минимум один раз, т.к. проверка осуществляется после каждого выполнения тела цикла. | ||
+ | <code pascal>REPEAT | ||
+ | <1> | ||
+ | UNTIL <Условие>;</code> | ||
+ | Цикл выполняется до тех пор, пока условие не станет истинным. | ||
+ | |||
+ | ===WHILE … DO=== | ||
+ | Цикл с пред условием, т.к. проверка проводится до начала очередной итерации. | ||
+ | <code pascal>WHILE <Условие> DO | ||
+ | <1>;</code> | ||
=====Массив:===== | =====Массив:===== | ||
+ | FIXME | ||
=====Функции===== | =====Функции===== | ||
+ | FIXME | ||
+ | =====Работа с файлами===== | ||
+ | Файлы бывают 3-х видов: | ||
+ | * текстовые файлы | ||
+ | * типизированные файлы | ||
+ | * нетипизированные файлы. | ||
+ | |||
+ | ==== Открытие текстового файла для чтения ==== | ||
+ | <code pascal> | ||
+ | Program readtextfile; | ||
+ | Uses crt; | ||
+ | var | ||
+ | fl:text; // Для связи программы с текстовым файлом. Файловые переменные, предназначенные для работы с текстовыми файлами, должны иметь тип данных Text. | ||
+ | str:string; // Будем использовать для чтения строк из файла. | ||
+ | begin | ||
+ | clrscr; | ||
+ | assign (fl, 'programs\text.txt'); // Теперь посредством файловой переменной «fl» мы можем управлять файлом «text.txt». | ||
+ | reset (fl); // Инициация файла – это открытие файла для чтения, записи либо для чтения и записи одновременно. Процедура Reset говорит нам о том, что файл открывается только для чтения. | ||
+ | read (fl,str); // Для того чтобы получить доступ к записям, хранящимся в файле, используются процедуры Read, Readln, Write, Writeln. В результате действия процедуры Read из файловой переменной «fl» будет прочитана информация и эта информация будет записана в строковую переменную «str». | ||
+ | write(str); // Вывод на экран. | ||
+ | close(fl); // Стандартная процедура закрытия файла. | ||
+ | readln; | ||
+ | end. | ||
+ | </code> | ||
+ | |||
+ | FIXME | ||
=====ООП===== | =====ООП===== | ||
+ | FIXME | ||
=====Пример простой программы===== | =====Пример простой программы===== | ||
+ | FIXME |