Просмотр содержимого документа
«Паскаль для начинающих»
Паскаль для начинающих
Основы грамматики в таблицах и примерах
Pascal (Паскаль) - язык программирования общего назначения. Создан в 1970 году специалистами Технического Университета в Цюрихе (ETH, Zurich) под руководством профессора Никлауса Вирта (Niklaus Wirth). После появления языка Pascal были созданы новые промышленные версии языка, а также языки-потомки, которые сохраняют основные синтаксические и семантические свойства языка Вирта: Modula, Turbo Pascal, Object Pascal (Delphi), Component Pascal (Oberon-2), TMT Pascal, Free Pascal, Zonnon, Ada. Идеи языка Pascal оказали большое влияние на современные языки программирования, которые активно используются в современной промышленности: Java, Javascript, C#. При этом Pascal значительно проще и хорошо приспособлен для начального изучения программирования. Описание языка дано в соответствии с диалектом языка фирмы Borland Software (США): Turbo Pascal 7.1. (1992).
![]()
ЧАСТЬ I. 1. Основные правила грамматики
1. Текст программы состоит из трех составных частей. Это заголовок, описания, операторы. Заголовок программы содержит имя программы. Для версии ETH необходимо дополнительно указать источник и приемник данных для работы программы - файлы для ввода и вывода информации. По умолчанию файл inputсвязан с клавиатурой компьютера, а файл output - с экраном монитора. В Turbo Pascal заголовок имеет декоративное значение и использовать его не обязательно.
2. Описания - это символьные конструкции для описания свойств объектов программы. Все объекты программы надо обязательно указать в этой части программы. Операторы - это символьные конструкции для описания действий над объектами программы. Операторы должны находиться между словами begin иend. Эти слова считаются скобками.
3. В одной строке текста можно размещать несколько операторов или описаний. Поэтому между операторами надо обязательно ставить символ-разделитель. Для разделения операторов используется символ точка с запятой ( ; ). После последнего оператора разделитель ставить не обязательно.
4. Малые и большие буквы считаются эквивалентными (равнозначными). Имя любого объекта в записи программы может содержать только буквы латинского алфавита, цифры и символ подчеркивания ( _ ). Имя не может начинаться с цифры. Никакие другие типы символов в записи имен не разрешаются.
![]()
2. Общее строение программы
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. |
![]()
3. Основные типы переменных
Тип | Описатель типа (имя) | Значение типа (пример) |
Действительный | real | 16.32 |
| | -1.6320000000E+01 |
Тип | Описатель типа (имя) | Значение типа (пример) |
Целый | integer | 30000 |
Длинный целый | longint | 2000000000 |
Тип | Описатель типа (имя) | Значение типа (пример) |
Символьный (литерный) | char | 'a' |
| | #13 |
Строковый | string | 'задача' |
Логический (булевский) | boolean | false |
| | true |
Интервальный | M1..M2 | 100 |
![]()
4. Конструкции для описания величин
Описание переменных величин | Пример |
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'урока:'; |
![]()
5. Оператор присваивания
Форма оператора | Пример |
имя := выражение | a := 0; |
| x := x + 1; |
![]()
6. Ввод и вывод
Процедура | Пример 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) | Тип | Формат вывода | Результат вывода |
16 | integer | write(n) | 16 |
16 | integer | write(n:2) | 16 |
16 | integer | write(n:5) | 16 |
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 |
![]()
7. Модуль 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 |
![]()
8. Арифметические средства языка
Арифметическая операция | Описание операции | Пример |
+ | Сложение | |
- | Вычитание | |
* | Умножение | |
/ | Деление | 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. 9. Логические средства языка
Оператор условия - полная форма | Пример |
if условие then | if (x0) and (y0) then |
оператор 1 | begin x:=x+y; y:=0 end |
else | else |
оператор 2 | begin x:=x-y; y:=-y end |
Оператор условия - неполная форма | Пример |
if условие then | if xy then |
оператор | x:=x mod y |
Логическая операция | Описание операции | Приоритет (порядок выполнения операции) |
not | Отрицание (НЕ) | 1 |
and | Конъюнкция (И) | 2 |
or | Дизъюнкция (ИЛИ) | 3 |
xor | Сильная дизъюнкция (ИЛИ-ИЛИ) | 3 |
Логическое отношение (предикат) | Описание отношения | Приоритет (порядок выполнения операции) |
= | Равно | 4 |
| Больше | 4 |
| Меньше | 4 |
| Не равно | 4 |
| Не больше (меньше или равно) | 4 |
= | Не меньше (больше или равно) | 4 |
Оператор варианта | Пример |
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 |
![]()
10. Операторы цикла
Оператор цикла с управляющей переменной - форма "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 do |
оператор | begin read(a); s:=s+a; i:=i+1 end |
Оператор цикла с логическим пост-условием | Пример |
repeat | repeat |
операторы | write(i); i:=i-1 |
until условие-выхода | until i=0 |
![]()
11. Массивы
Тип массива | Описание массива | Пример |
Одномерный массив (вектор) | 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; |
![]()
12. Процедуры и функции пользователя
Процедура | Пример процедуры для обмена значений между целыми переменными m и n |
program имя-программы; | program primer; var x,y: integer; |
procedure имя(параметры); | procedure swap(var m,n:integer); |
описания локальных величин | var s: integer; |
begin | begin |
операторы процедуры | s:=m; m:=n; n:=s |
end; | end; |
BEGIN | BEGIN |
операторы программы | read(x,y); swap(x,y); writeln(x:10,y:10) |
END. | END. |
Функция | Пример функции для вычисления натуральной степени (n) целого числа (m) |
program имя-программы; | program primer; var x,y: integer; |
function имя(параметры): тип-результата; | function power(m,n:integer):integer; |
описания локальных величин | var s,i: integer; |
begin | begin |
операторы функции | s:=1; for i:=1 to n do s:=s*m; power:=s |
end; | end; |
BEGIN | BEGIN |
операторы программы | read(x,y); writeln(power(x,y)) |
END. | END. |
![]()
Часть III. 13. Символьные типы данных
Тип | Описатель типа (имя) | Значение типа (пример) |
Символьный (литерный) | char | 'a' |
| | #13 |
Строковый | string | 'задача' |
| | 'тема'#13#10'урока:' |
Функция | Результат функции | Пример |
length(s) | Длина строки | n:=length(s) |
pos(s1,s2) | Начало первого вхождения строки s1 внутри строки s2 (номер позиции) | n:=pos('+',s) |
copy(s,p,n) | Часть строки s длиной n, начиная с позиции p | c:=copy(s,4,2) |
concat(s1,s2,s3,...sn) | Соединить строки (функция конкатенации) | c:=concat(s,';',t,'.') |
Функция | Результат функции | Пример |
upcase(c) | Преобразовать малую букву латинского алфавита в большую (символ верхнего регистра) | c:=upcase(c) |
chr(n) | Символ с номером n | c:=chr(n) |
ord(c) | Номер символа со значением c | n:=ord(c) |
succ(c) | Следующий символ таблицы ASCII | c:=succ(c) |
pred(c) | Предыдущий символ таблицы ASCII | c:=pred(c) |
Процедура | Операция | Пример |
delete(s,p,n) | Удалить часть строки s длиной n, начиная с позиции p | delete(s,n,1) |
insert(s1,s2,p) | Вставить строку s1 в строку s2, начиная с позиции p | insert('+',s,1) |
val(s,x,r) | Преобразовать строку s в число x с признаком результата r | val(s,x,nan) |
str(x:f,s) | Преобразовать число x в строку s с форматом числа f | str(x:10,s) |
| | str(x:10:2,s) |
s1 + s2 | Соединить строки (операция конкатенации) | s:=s+';'+t+'.' |
![]()
14. Множества
Тип множества | Описание множества | Пример |
Постоянное множество (константа) | [ тип-элемента ] | const a = [ 0..100 ]; |
Переменное множество (переменная) | set of [ тип-элемента ] | var a: set of [ '0'..'9', '+', '-' ]; |
Пример описания постоянного множества | Элементы множества |
const A = [ 'A'..'Z', 'a'..'z' ]; | Буквы латинского алфавита |
const B = [ 'a'..'z' ]; | Малые буквы латинского алфавита |
const C = [ 'А'..'Я', 'а'..'п', 'р'..'я', 'Ё', 'ё' ]; | Буквы алфавита-кириллицы |
const D = [ 'А'..'Я' ]; | Большие буквы алфавита-кириллицы |
const M = [ '0'..'9' ]; | Цифровые символы от 0 до 9 |
const N = [ 0..100 ]; | Целые числа от 0 до 100 |
Пример описания переменного множества | Элементы множества |
var a set of [ 'A'..'Z', 'a'..'z' ]; | Буквы латинского алфавита |
var b set of [ 'a'..'z' ]; | Малые буквы латинского алфавита |
var c set of [ 'А'..'Я', 'а'..'п', 'р'..'я', 'Ё', 'ё' ]; | Буквы алфавита-кириллицы |
var d set of [ 'А'..'Я' ]; | Большие буквы алфавита-кириллицы |
var m set of [ '0'..'9' ]; | Цифровые символы от 0 до 9 |
var n set of [ 0..100 ]; | Целые числа от 0 до 100 |
Операция | Результат операции | Пример |
М1 + М2 | Объединение множеств М1 и М2 | ['0'..'9'] + ['+'] |
М1 - М2 | Разность множеств М1 и М2 | ['a'..'z'] - ['x'..'z'] |
М1 * М2 | Пересечение множеств М1 и М2 | ['a'..'m'] * ['c', 'i', 'n'] |
Операция | Когда результат операции равен true | Пример |
значение in множество | Значение является элементом множества | not (s[i] in ['a'..'z']) |
М1 = М2 | Множества М1 и М2 равны между собой | |
М1 М2 | Множества М1 и М2 не равны | |
М1 | Множество М1 является подмножеством множества М2 | |
М1 | Множество М1 является подмножеством множества М2 или равно М2 | |
М1 М2 | Множество М1 является надмножеством множества М2 | |
М1 = М2 | Множество М1 является надмножеством множества М2 или равно М2 | |
![]()
Часть IV. 15. Файлы
Тип файла | Описание файла | Пример |
текстовый файл (текст) | text | var t: text; |
типизированный файл | file of тип-элемента | var a: file of integer; |
Процедуры и функции | Операция | Пример |
read( файл, список ввода ) | Ввод данных из файла | read(t,a,b,c); |
readln( файл, список ввода ) | Ввод данных из файла | readln(t,a,b,c); |
write( файл, список вывода ) | Вывод данных в файл | write(t,x,y,z); |
writeln( файл, список вывода ) | Вывод данных в файл | writeln(t,x,y,z); |
assign( файл, имя файла ) | Определить имя файла | assign(t,'c:\text\info.txt'); |
reset( файл ) | Открыть файл для ввода | reset(t); |
rewrite( файл ) | Открыть файл для вывода | rewrite(t); |
close( файл ) | Закрыть файл | close(t); |
eof( файл ) | Если конец файла, то true (функция) | while not eof(t) do read(t,a); |
eoln( файл ) | Если конец строки, то true (функция) | while not eoln(t) do read(t,a); |
![]()
16. Типы и записи
Описание типа записи | Пример |
имя типа = record | type data = record |
имя-1: тип-1; | x:integer; |
имя-2: тип-2; | y:integer; |
имя-N: тип-N; | t:string; |
end; | end; |
| var a1, a2, a3: data; |
17. Ссылки и указатели
Описание указателя | Пример |
имя-указателя: ^имя-типа; | var pdata: ^data; |
Ссылка с помощью указателя | Пример |
имя-указателя^ | pdata^ := 0; |
Процедура | Операция | Пример |
new(имя-указателя) | Выделить память для переменной (создать переменную для указателя) | new(pdata); |
dispose(имя-указателя) | Освободить память переменной (указатель:=nil) | dispose(pdata); |
18. Объекты и классы
Описание типа объекта (класс) | Пример |
имя класса = object (класс-родитель) | type donkey = object (animals) |
свойство-1: тип-1; | x:integer; |
свойство-2: тип-2; | y:integer; |
свойство-N: тип-N; | t:string; |
метод-1(параметры); | function run(m:string):boolean; |
метод-2(параметры); | procedure show; |
метод-N(параметры); | procedure hide; |
end; | end; |
| var a1, a2, a3: donkey; |