ЧАСТЬ I.
Основные правила грамматики
1. Текст программы состоит из трех составных частей. Это заголовок, описания, операторы. Заголовок программы содержит имя программы. Для версии ETH необходимо дополнительно указать источник и приемник данных для работы программы - файлы для ввода и вывода информации. По умолчанию файл input связан с клавиатурой компьютера, а файл output - с экраном монитора. В Turbo Pascal заголовок имеет декоративное значение и использовать его не обязательно.
2. Описания - это символьные конструкции для описания свойств объектов программы. Все объекты программы надо обязательно указать в этой части программы. Операторы - это символьные конструкции для описания действий над объектами программы. Операторы должны находиться между словами begin и end. Эти слова считаются скобками.
3. В одной строке текста можно размещать несколько операторов или описаний. Поэтому между операторами надо обязательно ставить символ-разделитель. Для разделения операторов используется символ точка с запятой (;). После последнего оператора разделитель ставить не обязательно.
4. Малые и большие буквы считаются эквивалентными (равнозначными). Имя любого объекта в записи программы может содержать только буквы латинского алфавита, цифры и символ подчеркивания (_). Имя не может начинаться с цифры. Никакие другие типы символов в записи имен не разрешаются.
Общее строение программы
| ETH Pascal | Пример |
| program имя(ввод,вывод); | program echo(input,output); |
| описания; | var n: integer; |
| BEGIN | BEGIN |
| оператор; | write('число?'); |
| оператор; | read(n); |
| оператор | write(n) |
| END. | END. |
| Turbo Pascal-Delphi | Пример |
| program имя; | program echo; |
| модули; | uses crt; |
| описания; | var n: integer; |
| BEGIN | BEGIN |
| оператор; | clrscr; read(n); |
| оператор; | write(n); |
| оператор | readkey |
| END. | END. |
Основные типы переменных
| Тип | Описатель типа (имя) | Значение типа (пример) |
| Действительный | real | 16.32 |
| -1.6320000000E+01 |
| Тип | Описатель типа (имя) | Значение типа (пример) |
| Целый | integer | |
| Длинный целый | longint |
| Тип | Описатель типа (имя) | Значение типа (пример) |
| Символьный (литерный) | char | 'a' |
| #13 | ||
| Строковый | string | 'задача' |
| Логический (булевский) | boolean | false |
| true | ||
| Интервальный | M1..M2 |
Конструкции для описания величин
| Описание переменных величин | Пример |
| var | var |
| имя-переменной: имя-типа; | a: real; |
| имя1, имя2, имя3: имя-типа; | x, y, z: integer; |
| i, j, k: char; | |
| p, q, r: 0..100; | |
| s, t, u: 'a'..'z'; |
| Описание постоянных величин | Пример |
| const | const |
| имя1 = значение1; | X = 40000; |
| имя2 = значение2; | Y = 16.32; |
| имя3 = значение3; | Z = -1.632E+10; |
| имяN = значениеN; | A = 'a'; |
| R = #13; | |
| T = 'тема'#13#10'урока:'; |
Оператор присваивания
| Форма оператора | Пример |
| имя:= выражение | a:= 0; |
| x:= x + 1; |
Ввод и вывод
| Процедура | Пример 1 | Пример 2 |
| read(список ввода) | program echo1(input,output); | program echo2(input,output); |
| readln(список ввода) | var m, n: integer; | var m, n: integer; |
| write(список вывода) | BEGIN | BEGIN |
| writeln(список вывода) | read(m,n); | readln(m,n); |
| write('m=',m); | writeln('m=',m); | |
| write('n=',n) | writeln('n=',n) | |
| END. | END. |
| Число (n) | Тип | Формат вывода | Результат вывода |
| integer | write(n) | ||
| integer | write(n:2) | ||
| integer | write(n:5) | ||
| 16.32 | real | write(n); | 1.6320000000E+01 |
| 16.32 | real | write(n:12) | 1.63200E+01 |
| 16.32 | real | write(n:5:2) | 16.32 |
| 16.32 | real | write(n:10:4) | 16.3200 |
Модуль crt (cathode ray tube)
| Процедуры и функции | Операция | Пример |
| clrscr | Очистить экран | clrscr |
| textcolor(цвет) | Установить цвет текста | textcolor(1) |
| textcolor(blue) | ||
| textbackground(цвет) | Установить цвет фона | textbackground(1) |
| textbackground(blue) | ||
| delay(время в миллисекундах) | Остановить выполнение на заданное время | delay(1000) |
| gotoxy(колонка,строка) | Установить курсор на заданную позицию | gotoxy(40,20) |
| keypressed | Если была нажата клавиша, то true (функция) | repeat write('o') until keypressed |
| readkey | Остановить выполнение до нажатия клавиши, прочитать код нажатой клавиши (функция) | readkey |
| c:=readkey |
| Номер и имя цвета | Номер и имя цвета |
| 0 black | 8 darkgray |
| 1 blue | 9 lightblue |
| 2 green | 10 lightgreen |
| 3 cyan | 11 lightcyan |
| 4 red | 12 lightred |
| 5 magenta | 13 lightmagenta |
| 6 brown | 14 yellow |
| 7 lightgray | 15 white |
Арифметические средства языка
| Арифметическая операция | Описание операции | Пример |
| + | Сложение | |
| - | Вычитание | |
| * | Умножение | |
| / | Деление | 5.0/2.0 = 2.5 |
| div | Целочисленное деление (деление без остатка) | 5 div 2 = 2 |
| mod | Остаток от деления | 5 mod 2 = 1 |
| shl | Двоичный сдвиг влево | 5 shl 1 = 10 |
| shr | Двоичный сдвиг вправо | 5 shr 1 = 2 |
| Функция | Результат функции | Пример |
| abs(x) | Модуль числа (абсолютное значение) | abs(-2) = 2 |
| sqr(x) | Квадрат числа | sqr(2) = 4 |
| sqrt(x) | Квадратный корень числа | sqrt(4) = 2.0 |
| pi | Число пи ~ 3.14... |
| Функция | Результат функции | Пример |
| sin(x) | Синус числа | sin(pi) = 0 |
| cos(x) | Косинус числа | cos(0) ~ 1.0 |
| ln(x) | Логарифм натуральный | ln(1) = 0 |
| exp(x) | Экспонента (число e в степени x) | exp(1) ~ 2.72 |
| Функция | Результат функции | Пример |
| int(x) | Целая часть числа | int(3.6) = 3.0 |
| trunc(x) | Целое число без округления | trunc(3.6) = 3 |
| round(x) | Целое число с округлением | round(3.6) = 4 |
ЧАСТЬ II.
Логические средства языка
| Оператор условия - полная форма | Пример |
| if условие then | if (x>0) and (y>0) then |
| оператор 1 | begin x:=x+y; y:=0 end |
| else | else |
| оператор 2 | begin x:=x-y; y:=-y end |
| Оператор условия - неполная форма | Пример |
| if условие then | if x>y then |
| оператор | x:=x mod y |
| Логическая операция | Описание операции | Приоритет (порядок выполнения операции) |
| not | Отрицание (НЕ) | |
| and | Конъюнкция (И) | |
| or | Дизъюнкция (ИЛИ) | |
| xor | Сильная дизъюнкция (ИЛИ-ИЛИ) |
| Логическое отношение (предикат) | Описание отношения | Приоритет (порядок выполнения операции) |
| = | Равно | |
| > | Больше | |
| < | Меньше | |
| <> | Не равно | |
| <= | Не больше (меньше или равно) | |
| >= | Не меньше (больше или равно) |
| Оператор варианта | Пример |
| case выражение of | case c of |
| вариант-1: оператор; | 0: x:=x+1; |
| вариант-2: оператор; | 1,2: x:=x-1; |
| вариант-N: оператор | 3..100: x:=-x |
| else | else |
| оператор | x:=0 |
| end | end |
Операторы цикла
| Оператор цикла с управляющей переменной - форма "to" | Пример |
| for имя:=значение1 to значение2 do | for i:=1 to n do |
| оператор | begin read(a); s:=s+a end |
| Оператор цикла с управляющей переменной - форма "downto" | Пример |
| for имя:=значение1 downto значение2 do | for i:=n downto 0 do |
| оператор | write(i) |
| Оператор цикла с логическим пред-условием | Пример |
| while условие-повторения do | while i<=n do |
| оператор | begin read(a); s:=s+a; i:=i+1 end |
| Оператор цикла с логическим пост-условием | Пример |
| repeat | repeat |
| операторы | write(i); i:=i-1 |
| until условие-выхода | until i=0 |
Массивы
| Тип массива | Описание массива | Пример |
| Одномерный массив (вектор) | array [ тип-индекса ] of тип-элемента | var a: array [ 1..100 ] of integer; |
| Тип массива | Описание массива | Пример |
| 2-мерный массив (матрица) | array [ тип-индекса-1, тип-индекса-2 ] of тип-элемента; | var a: array [ 1..M, 1..M ] of real; |
| 3-мерный массив | array [ тип-индекса-1, тип-индекса-2, тип-индекса-3 ] of тип-элемента; | var a: array [ 0..1, 0..M, 0..N ] of char; |
| 4-мерный массив | array [ тип-индекса-1, тип-индекса-2, тип-индекса-3, тип-индекса-4 ] of тип-элемента; | var a: array [ 0..1, 0..1, 0..1, 'a'..'z' ] of boolean; |






