Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
subjects:programming:pascal:start [2018/05/31 21:23] ¶ создано |
subjects:programming:pascal:start [2023/09/06 16:44] (текущий) ¶ [Разделы:] |
||
---|---|---|---|
Строка 8: | Строка 8: | ||
Паскаль, в первоначальном виде, представляет собою чисто процедурный язык и включает множество структур и конструкций с зарезервированными словами наподобие ''if'', ''then'', ''else'', ''while'', ''for'', и т. д. | Паскаль, в первоначальном виде, представляет собою чисто процедурный язык и включает множество структур и конструкций с зарезервированными словами наподобие ''if'', ''then'', ''else'', ''while'', ''for'', и т. д. | ||
Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций. | Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций. | ||
- | В современных диалектах (''Free Pascal'') доступны такие операции, как перегрузка операторов и функций. | + | Реализации Паскаля могут отличаться друг от друга стандартными модулями и возможностями (''т.е. имеются диалекты''). |
- | =====Стандартные функции===== | + | В современных диалектах (например: ''Free Pascal'') доступны такие операции, как перегрузка операторов и функций. |
- | |Функция|Описание|Пример|| | + | В учебных заведениях всё чаще встречается ''PascalABC.NET''. |
- | ^Простые типы данных^^^^ | + | |
- | ^DEC(N)|Уменьшение N|<code pascal>DEC(6);//=5</code>|| | + | |
- | ^INC(N)|Увеличение N|<code pascal>INC(5);//=6</code>|| | + | |
- | ^ORD(N)|Порядковый номер N|<code pascal>ORD(5);//=5 | + | |
- | 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>|| | + | |
- | ^SUCC(N)|Последующее значение N|<code pascal>SUCC('B');//='C'</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>|| | + | |
- | =====Типы данных===== | + | ===== Структура программы ===== |
- | Можно выделить следующие типы данных: | + | <code pascal>program <название программы>; |
- | * Простые типы | + | uses |
- | * Целые типы -- SHORTINT, INTEGER, LOGINT, BYTE, WORD; | + | <модули>; |
- | * Логический тип -- BOOLEAN | + | label |
- | * Перечисляемые типы (определяются программистом через TYPE) | + | <список меток>; |
- | * Тип-диапазон <code pascal>TYPE NUM = -10..10;</code> | + | const |
- | * Символьный тип -- CHAR | + | <константы>; |
- | * Вещественные типы -- REAL, SINGLE, DOUBLE, EXTENDED, COMP; | + | type |
- | * Текстовая строка -- STRING; | + | <описание типов> |
- | * Структурированные типы | + | var |
- | * Массив<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 | + | <функции> |
- | =====Ввод, Вывод сообщений в консоли:===== | + | begin |
- | INPUT, OUTPUT - работа с файлами | + | <главный код>; |
+ | end.</code> | ||
- | Чтение: | + | ===== Разделы: ===== |
- | <code pascal>READ (A, B, C); | + | * [[.standard_functions]] |
- | //123 2345 -56 <Enter>| | + | * [[.variable]] |
- | + | * [[.stream]] | |
- | READLN(A, B, C); | + | * [[.begin-end]] |
- | //123 2345 -56 <Enter> | + | * FIXME Массивы:[[.array]] |
- | |</code> | + | * [[.functions]] |
- | + | * [[.file]] | |
- | Запись: | + | * Модули: |
- | <code pascal> | + | * [[.pascalabc:graphabc]] |
- | WRITE(); | + | * [[.pascalabc:school]] |
- | WRITE(J:8, I:12); // Указание позиций вывода | + | * FIXME ООП:[[.oop]] |
- | WRITELN(); // WRITE + перевод строки | + | * FIXME Пример простой программы:[[.example]] |
- | </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 | + | ===== Полезно ===== |
- | =====ООП===== | + | * [[https://pascalabc.net/downloads/pabcnethelp/index.htm|ОнЛайн справка PascalABC.NET]] |
- | FIXME | + | |
- | =====Пример простой программы===== | + | |
- | FIXME | + |