Язык Pascal, названный в честь французского математика и философа Блеза Паскаля (1623-1662), был создан как учебный язык программирования в 1968-1971 годах Никлаусом Виртом. Целью работы Вирта было создание языка, который:
ü строился на небольшом количестве базовых понятий;
ü имел бы простой синтаксис;
ü допускал бы перевод программы в машинный код простым компилятором (компилятор - это программа, которая проверяет текст исходной программы на наличие синтаксических ошибок и генерирует машинный код);
Pascal - язык программирования высокого уровня, в котором длинные и сложные последовательности машинных операций заменены одним-единственным обозначающим их словом - оператором.
Алфавитом языка программирования называется разрешенный к использованию набор символов, с помощью которого могут быть образованы величины, выражения и операторы данного языка.
Алфавит языка Pascal составляют:
1. Заглавные и строчные буквы латинского алфавита: A-Z, a-z.
2. Арабские цифры: 0, 1, ..., 9
3. Знаки операций: + - * / (арифметические)
<>, <=, >=, =, >, < (сравнение)
:= (присваивания)
4. Ограничители: ' , . : ; ( ) { } [ ]
Из символов языка создаются более сложные конструкции: идентификаторы, операторы, выражения, ...
В любой программе необходимо хранить исходные данные для того, чтобы можно было использовать их при вычислениях. Возможно, необходимо хранить промежуточные и окончательные результаты. Для этих целей введено понятие переменной.
Переменная - это поименованная ячейка памяти компьютера.
В качестве имени переменной можно использовать последовательность букв латинского алфавита, цифр и знака подчеркивания, причем первым символом должна быть буква. Желательно, чтобы имя переменной было логически связано с ее назначением. Например: Summa Rezultat X_1 A_33
В результате операции присваивания переменная получает значение:(А:=6;В:=1;). Выражение с операцией :=, в конце которого стоит символ ; называется оператором присваивания.
Постоянные величины, значение которых не меняется в процессе выполнения программы, называются константами. Константы могут быть представлены непосредственно своим значением либо именем.
Выражение состоит из знаков операций и операндов (например, s/r). Если между операндами стоит хотя бы одна из операций < > <= >= = <>, то такие выражения называются отношениями: x1<x2-5; rez<>0.
Арифметическое выражение может включать в себя константы, переменные, стандартные функции, которые разделяются скобками и знаками арифметических операций.
(b1+b2+b3)/100
sun*0.75
Кроме стандартных арифметических операций (+ - / *) в языке Pascal доступны следующие операции над целыми числами:
div- вычисляет целое частное от деления
mod- вычисляет остаток от деления.
Например, 22 div 5=4, 22 mod 5=2.
Значение арифметического выражения может быть присвоено переменной с помощью операции присваивания:
A:=b*8.34/5;
x1:=(sqrt(x)-sin(x+1))/2;
Логические выражения представляют собой два или более отношения, связанные между собой логическими операциями (and, or, not).
(a+2*b<=5) and (a/b>b/a);
В арифметических и логических выражениях операции выполняются по приоритетам:
1. Выражения в скобках;
2. Логическое отрицание not;
3. Логическая операция and;
4. Логическая операция or;
5. Операции умножения и деления;
6. Операции сложения и вычитания;
7. Операции отношения.
Например, условие существования треугольника со сторонами A, B, C можно записать в виде логического выражения:
(A+B>C) and (A+C>B) and (B+C>A)
Часто при вычислении значений арифметических выражений приходится использовать математические (тригонометрические) функции (cos, sin, ln, ...) или выполнять специальные математические операции (извлекать корень Ö , выделять целую часть числа, округлять, и т.д.). Для выполнения всех этих действий в языке Pascal существуют стандартные функции (см. таблицу 1).
Таблица 1. Основные математические функции.
Обозначение функции
Описание функции
abs(x)
модуль аргумента х
arctan(x)
арктангенс аргумента х
cos(x)
косинус аргумента х
exp(x)
возведение числа е=2,71 в степень х
ln(x)
вычисление натурального логарифма (x>0)
log(x)
вычисление десятичного логарифма
round(x)
округление значения х до целого
sin(x)
синус аргумента х
sqr(x)
возведение в квадрат аргумента х
sqrt(x)
извлечение квадратного корня из х (x>=0)
trunc(x)
выделение целой части аргумента х
Random(n)
Генерирует случайное число из диапазона от 0 до n-1
Для возведения числа X в степень n рекомендуется пользоваться преобразованием вида:
Xn = e n ×ln X Þ exp(n*ln(X))
Любые данные в программе (константы или переменные) характеризуются своими типами.
К простым типам данных относятся:
1. целочисленный (byte) диапазона от 0 до 255
2. целочисленный (integer) диапазона от -32767 до +32768
5. логический (boolean): имеет только 2 значения true и false;
Типы всех переменных (входных, выходных, промежуточных), используемых в программе, необходимо описывать в начале текста программы в разделе var следующим образом:
список переменных: тип ;
Например: var a1, ket, pr: integer;
sum: real;
l, n: char;
Программы, написанные на языке Pascal, строятся в соответствии с определенными правилами. Любую программу можно условно разделить на 2 части:
1. раздел объявлений и соглашений (декларационная часть);
2. раздел основного блока.
В первой части программы объявляются метки (label 78, met;), константы (const year=1995;), переменные (var f, g: integer; kol: real;)
Основной блок программы состоит из последовательности операторов. На одной строке программы могут находиться несколько операторов, каждый из которых заканчивается символом ;. Тело основного блока ограничено операторами (операторными скобками) begin и end.
LABEL ...... ;
CONST ...... ;
VAR ......... ;
BEGIN ....................
....................
END.
В тексте программы могут присутствовать комментарии, необходимые для документирования (пояснения) программы. Комментарии представляют собой произвольный текст, ограниченный с двух сторон фигурными скобками { } либо скобками вида (* *).
{ ввод исходных данных } или (* вычисление суммы *)
Для того чтобы произвести какие-либо вычисления в программе необходимо, прежде всего, ввести исходные данные.
Начальные значения переменным можно задать с помощью оператора присваивания (А:=5.76 ; Tet:=7; Mer:='%'). Но значительно удобнее вводить исходные данные в диалоговом режиме в процессе выполнения программы. Для этого необходимо вызвать процедуру ввода данных с клавиатуры read (readln) следующим образом:
read (имя1, имя2, ...) ;
readln (имя1, имя2, ...) ;
где имя1, имя2, ... - имена вводимых переменных.
В операторе readln окончание ln (line - линия) означает, что после завершения ввода значений переменных курсор должен переместиться к началу следующей строки на экране монитора.
read (M, G, k); readln(n, m);
Если в списке вводимых переменных несколько, то они вводятся с клавиатуры либо через пробел, либо после каждого введенного значения нажимается Enter.
Вызов процедуры ввода данных может осуществляться без параметров, при этом оператор read; (readln;) будет ожидать нажатия любой клавиши на клавиатуре.
Для вывода на экран монитора сообщений и значений переменных служит процедура write (writeln), вызвать которую можно следующим образом:
write ('сообщение' , x1, ...);
writeln('сообщение' , x1, ...);
сообщение - любой выводимый текст (не обязателен);
x1, ... - имя переменной, значение которой выводится (не обязательно).
В операторе writeln окончание ln означает, что после завершения вывода значений переменных курсор перемещается к началу следующей строки на экране монитора. Пустой оператор writeln; просто перемещает курсор на строку вниз, не выводя никаких данных.
writeln ('Введите исходные данные ');
write (mm) ; write ('x1=' , x1, 'x2=' , x2) ;
writeln ;
Вывод числовых данных можно осуществлять в заданном формате. При этом определяется ширина поля вывода следующим образом:
X : P : Q
X - имя выводимой переменной;
P - общее число выводимых символов, включая десятичную точку;
Q - число символов, отводимое под дробную часть (для целых чисел не указ.).
Например, если х=123 writeln (x : 4) ;
если х=0.519876501 writeln (x : 5 : 2) ;
sin2 (x + γ) + cos x
Пример: Вычислить значение функции Z = ———————— ;
x + y4 e |x - y|
при x=-2.31; y=5; γ =12
CONST
x=-2.31;
y=5;
gamma=12;
VAR
z: real;
BEGIN
/* исходные данные известны, поэтому вычисляем значение функции */