Язык программирования Паскаль является языком программирования высокого уровня или алгоритмическим языком (т.е. языком, специально разработанным для записи алгоритмов вычислений). Особенностью таких языков как Бейсик, Паскаль по сравнению с большинством другими алгоритмическими языками, является их ориентация на диалоговый процесс программирования.
Алфавит языка Паскаль - набор символов, разрешенных к использованию и воспринимаемых компилятором, в соответствии с их смысловым значением может быть разбит на следующие группы:
1) буквы латинского алфавита (прописные и заглавные): A,B, ... ,Z и a,b,...,z
3) знаки арифметических операций:
+ - сложение, - - вычитание,
* - умножение / - деление,
div - деление нацело с отбрасыванием остатка,
mod - нахождение остатка от деления нацело;
4). знаки операций отношения:
= - равно, <> - не равно,
> - больше, < - меньше,
>= - больше или равно, <= - меньше или равно;
5). знаки логических операций:
NOT - отрицание, OR - логическое сложение,
AND - логическое умножение;
6). знаки операции присваивания := ;
7). специальные символы:
- пробел (разделитель) _ - подчеркивания
( - открывающая круглая скобка
) - закрывающая круглая скобка
[ - открывающая квадратная скобка
] - закрывающая квадратная скобка
- открывающая фигурная скобка
- закрывающая фигурная скобка
, - запятая
. - точка
; - точка с запятой
' - апостроф
: - двоеточие
8). ключевые слова:
AND -и, ARRAY - массив,
BEGIN -начало, CASE - вариант,
CONST -константа, DIV - деление нацело,
DO -выполнять, DOWNTO - уменьшать до,
ELSE -иначе, END - конец,
FILE -файл, FOR - для,
FORWARDвперед, FUNCTION - функция,
GOTO -переход на, IF - если,
IN -в, LABEL - метка,
MOD -модуль, NOT - не,
OF -из, OR - или,
PROCEDURE процедура, PROGRAM - программа,
RECORDзапись, REPEAT - повторить,
SET -множество, STRING- строка,
THEN -то, TO - к,
TYPE -тип, UNIT - модуль,
UNTIL -до, USES - используемые,
VAR -переменная, WHILE - пока,
WITH -с, XOR - арифмет. или.
9). стандартные идентификаторы (имена):
константы FALSE, TRUE и MAXINT;
типы BOOLEAN, INTEGER, REAL и CHAR;
файлы INPUT и OUTPUT;
процедуры READ, READLN, WRITE, WRITELN, GET, PUT, REWRITE, NEW и RESET;
Функция
Обращение
Аргумент
Функция
!х!
x2
abs(x)
sqr(x)
R и I
R и I
R и I
R и I
Sin x
Cos x
ex
Ln x
x
Arctg x
sin(x)
cos(x)
exp(x)
ln(x)
sqrt(x)
arctan(x)
R и I
R
Употребление букв русского алфавита в алгоритмическом языке Паскаль, ограничено по сравнению с английскими буквами, использованием как элементов символьных констант и в комментариях.
Структура программы
Программа на языке Паскаль состоит из двух основных частей
- описания данных, над которыми совершаются действия, и описание действий, которые должны осуществляться над данными. Действия задаются операторами, а данные - определениями и описаниями.
В структуре программы можно выделить заголовок и собственно программу, которая может содержать максимально шесть разделов:
- описание меток;
- описание констант;
- определение типов;
- описание переменных;
- описание функций и процедур;
- раздел операторов.
Раздел операторов заключается в операторные скобки, т.е. BEGIN...END. Любой раздел, кроме последнего, может отсутствовать. Разделителями между разделами и операторами служит точка с запятой. В конце программы должна стоять точка. Заголовок программы записывается в первой строке программы и начинается с ключевого слова program после которого указывается имя программы и связь программы с исходными данными и результатами обработки (т.е. файлы, доступные программе). В качестве имен файлов используются стандартные имена INPUT и OUTPUT.
program drev( input,output);
Кроме этого в любое место программы могут быть включены комментарии, при этом смысл программы не меняется. Комментарии заключатся в фигурные скобки. Если в системе нет фигурных скобок, то вместо них используются пары символов (* и *).
(* ПРИМЕР1 КОММЕНТАРИЯ НА ПАСКАЛЕ *)
{ ПРИМЕР2 КОММЕНТАРИЯ НА ПАСКАЛЕ }
Организация и описание данных
Программа, написанная на языке Паскаль, оперирует некоторыми объектами, называемыми данными. Каждый элемент данных в программе является либо константой, либо переменной. Для каждой переменной задается некоторый тип, определяющий как возможные значения переменной, так и операции, которые могут над ней выполняться. Имя в языке Паскаль состоит из последовательности букв, цифр и символа подчеркивания, начинающейся с буквы. Имена используются в программах для записи констант, переменных, функций и подпрограмм.
Тип переменной обязательно должен быть задан в разделе описания переменных. Именованная константа отличается от переменной тем, что ее значение не может изменяться во время выполнения программы и она описывается в разделе описания констант. Тип константы однозначно определяется ее значением и в явном виде не указывается. Константы могут являться значением следующих типов: целые, вещественные, логические ( булевские), литерные (символьные) и текстовые (строки).
Константы описываются следующим образом:
CONST имя1 = значение1; имя2 = значение2;
Если потребуется изменить константу, то при таком ее описании достаточно изменить ее значение в описании.
const log = true;
rmax= 24; zk = c;
Раздел "описание констант" в программе может отсутствовать, а раздел "описание переменных" должен присутствовать тогда, когда в программе используется хотя бы одна переменная. Выбор имен переменных желательно производить таким образом, чтобы был понятен их смысл и назначение.
Операторы описания данных
Язык Паскаль предоставляет богатые возможности для построения сложных типов данных, которые задаются в разделе типов. Однако все они строятся на основе стандартных типов: целый, вещественный, символьный и логический. Кроме этого, в языке Паскаль можно использовать перечисляемые типы.
Стандартные типы данных
Целый тип (INTEGER).
Для любой вычислительной машины значением переменной этого типа должно быть целое число n, лежащее в диапазоне:
-MAXINT <= N <= MAXINT
Помимо стандартного целого типа на персональном компьютере в среде Турбо-Паскаль возможны следующие целочисленные типы которые отличаются размером при хранении в памяти и способом кодировки значений (с представлением знака или без него):
Над целыми числами кроме обычных арифметических и стандартных операций могут выполняться:
- операции целочисленного деления и поиска остатка от целочисленного деления:
15 div 4 = 3 13 mod 4 = 1
- операции поиска предыдущего и последующих значений аргумента:
pred(9) = 8 succ(-9) = -8
pred(-9) = -10 succ(9) = 10
- функция позволяющая определить четность или нечетность аргумента:
odd(7) - true
odd(6) - false.
Переменные целого типа описываются следующим образом:
var a, g, jh, gg: integer;
Вещественный тип (REAL)
Значением переменной этого типа является вещественное число, заданное либо в естественной форме -6.7694
или в экспоненциальной 5.6Е-2.
Вещественные переменные обладают двумя важными характеристиками - диапазоном значений и точностью, которые определяются структурными особенностями конкретной ЭВМ.
Помимо стандартного вещественного типа на персональном компьютере в среде Турбо-Паскаль возможны следующие вещественные типы, являющиеся приближением к точным значением:
Для вещественных аргументов кроме перечисленных выше функций могут использоваться стандартные функции преобразования значений вещественного типа в значение целого типа :
- функция trunc вырабатывает целый результат путем отбрасывания дробной части аргумента:
trunc(23.54) = 23
trunc(-3.54) = -3
- функция round вырабатывает целый результат путем округления до ближайшего целого:
round(23.53) = 24
round(-3.53) = -4
- функция int выделяет целую часть числа:
int(23.54) = 23.0
int(-3.54) = -3.0
- функция frac выделяет мантиссу аргумента:
frac(23.54) = 0.54
frac(-1.67) = -0.67
Переменные вещественного типа описываются следующим образом:
var ad, gs, fh, nn: real;
Булевский тип (BOOLEAN)
Этот тип данных на языке Паскаль называется логическим. Над логическими данными вычисляются следующие операции:
OR, NOT и AND.
Логическими данными и операции над ними имеют важное значение в информатике, так как позволяют ввести в расчеты элементы формальной логики.
Так как значения true и false можно рассматривать как упорядоченное множество, состоящее из двух элементов, то для этого типа данных помимо succ и pred, определена функция ord, определяющая порядковый номер для значений перечисляемого типа:
pred(false) = true succ(true) = false
ord(false) = 0 ord(true) = 1
Переменные логического типа описываются следующим образом: var w, y, z, vv: boolean;
Символьный тип (CHAR)
Символьными значениями переменной символьного типа являются элементы конечного и упорядоченного набора символов. Набор символов должен отвечать следующим минимальным требованиям:
- содержать буквы, упорядоченные в алфавитном порядке;
- содержать цифры, расположенные в порядке возрастания;
- содержать символ пробел.
Каждый символ должен иметь свой порядковый номер. При записи данных символьного типа символ должен заключаться в апострофы:
'2','g','k','s','0'.
С данными символьного типа связаны функции:
- ord(символ) - дает порядковый номер символа в упорядоченном массиве:
ord('?') = 63
ord('5') = 53
ord('I') = 73
- сhr(номер) - дает символ, стоящий под указанным номером в упорядоченном множестве символов:
chr(53) = '5'
chr(53) = '5'
ord(73) = 'I'
К аргументам символьного типа применимы функции pred и succ, которые выдают предыдущий и последующий символы, а также операции отношения ( символ 1 считается больше символа 2, если его порядковый номер в множестве символов больше сравниваемого):
pred('M') = 'L'
succ('M') = 'N'
Переменные символьного типа описываются следующим образом:
var w, y, z, vv: сhar;
Строковый тип (STRING).
Значениями переменной строкового типа являются последовательности символов, заключенные в апострофы. Имеющиеся внутри текста апострофы должны быть отдублированы:
'2gk', 's''0', 'Program''System'''.
Переменные строкового типа описываются следующим образом:
var wf, yyy, zs, vev: string [10];
Описание массивов
Массив представляет собой упорядоченный набор значений одного типа, имеющих общее имя. Местоположение элемента в массиве задается индексом, который записывается в квадратных скобках:
имя: array [ Nmin..Nmax ] of тип;
При описании массивов большей размерности пределы измерения должны отделяться друг от друга запятой:
имя: array [ Nmin..Nmax, Kmin..Kmax, Rmin..Rmax] of тип;