Существует много версий языка Паскаль. Различия между ними порой весьма велики. Так, базовая версия Вирта имеет многократно меньше возможностей, чем версия Турбо-Паскаль 7.0. (первая, фактически - язык для обучения будущих программистов, а вторая - орудие профессиональных разработчиков прикладного программного обеспечения) Тем не менее, это версии одного языка.
Любая Паскаль - программа является текстовым файлом с собственным именем и с расширением. pas. Паскаль - программа имеет вид последовательности символов латинских и русских букв, арабских цифр, знаков операций, скобок, знаков препинания и некоторых дополнительных символов. В нем можно выделить описания данных и операторы, описывающие действия, которые надо выполнить машине над этими данными.
Схематически программа представляется в виде последовательности восьми разделов:
заголовок программы;
описание внешних модулей, процедур и функций;
описание меток;
описание констант;
описание типов переменных;
описание переменных;
описание функций и процедур;
раздел операторов.
Каждый раздел начинается со служебного слова, назначение которого зафиксировано в Паскале так, что его нельзя употреблять для других целей. Так например, описание заголовка начинается со служебного слова program, описание констант -const, описание переменных - var, раздел операторов начинается с begin. Программа заканчивается служебным словом end, после которого ставится точка. Описания величин и операторы друг от друга отделяются знаком "точка с запятой".
Для обозначения величин используются имена. Они состоят из латинских букв и цифр, причем первым символом должна быть буква.
Постоянные величины (константы) чаще всего бывают числовыми или символьными. Значения символьных констант заключаются в апострофы.
Постоянные величины описываются в разделе констант по схеме:
Const <имя> = < константа>
Данные, обрабатываемые программой, могут быть различных типов (числовые, символьные, строки, массивы и т.д.). Тип определяет область допустимых значений, а также операции и функции, применяемые к величинам этого типа. В Паскале имеется несколько встроенных простых типов со стандартными именами.
Группа типов, значения каждого из которых можно перечислить в некотором списке - скалярные типы. Для них определен порядковая функция ord (x) - номер значения х в списке; функция pred (x) -значение в списке, предшествующее х, и succ (x) - значение в списке, следующее за х.
Упорядоченный тип - это тип, значения которого упорядочены в обычном смысле.
Переменные описываются в раздел описания переменных по схеме:
Var <список имен переменных>: <тип>
Имена в списке разделяются запятой. В этом разделе может быть описано несколько переменных разного типа, например:
Var a,b,c,: real; k, i: integer; p: Boolean;
Над целыми величинами (тип integer) определены арифметические операции: * (умножение), div (деление нацело), mod (вычисление остатка от деления), +, - (сложение и вычитание); операции перечислены в порядке старшинства. Целый результат дают некоторые стандартные функции (аргумент заключается в круглые скобки):
Abs (x) Sqr (x) Trunk (x) Round (x) Random (x) | -абсолютная величина целого хж квадрат значения х; целая часть вещественной величины х; целое число, полученное из вещественного ч по правилу округления; случайное целое число из интервала от 0 до х |
Над вещественными величинами определены операции: *, +, -, /, а также стандартные функции, при вещественном или целом аргументе: abs (x), sqr (x), sin (x), cos (x), ln (x), sqrt (x) - квадратный корень из х, int (x) - целая часть из х, random - случайное число от 0 до 1. Указанные операции и функции дают вещественный результат.
Множество всех символов образуют символьные величины (тип char), которые являются упорядоченными.
Выражения - это конструкции, задающие правила вычисления значений переменных. В общем случае выражения строятся из переменных, констант, функций с помощью операций и скобок.
Эта роль выражения отражена в основном операторе языка - операторе присваивания. Он имеет следующий вид:
<имя переменной>: =<выражение>
Тип переменной и тип выражения должны быть согласованы (величины принадлежат к одному и тому же типу).
В Паскале можно вводить с клавиатуры числовые и символьные данные. Имеются две встроенные процедуры (подпрограммы) ввода:
1) read (< список переменных>);
2) readln (<список переменных>).
Процедура readln отличается от read только тем, что при завершении ввода курсор перемещается в начало строки.
Программа на Паскале может выводить на экран или на принтер значения числовых или символьных выражений. Имеются две процедуры вывода на экран:
1) write (<список выражений>);
2) writeln (<список выражений>).
Процедура write (x1,x2,x3,…xn) печатает на экран значения выражения из списка х1, х2,…хn. Для вывода на принтер используются те же процедуры с добавлением служебного слова lst перед списком выражений:
Пример: write (lst,’ нет решений‘);
Паскаль - это язык структурного программирования. Это значит, что программа должна выражать свои мысли очень дисциплинированно, с использованием малого числа четко оговоренных конструкций, используя как чередование их, так и вложения друг в друга. Не рекомендуется (хотя и возможно) использовать оператор перехода goto.
Реализация последовательности действий (т.е. структуры следования) выполняется с помощью составного оператора:
Begin <последовательность операторов> end
Раздел операторов в программе всегда является составным оператором. Служебные слова begin и end часто называют операторными скобками.
Для реализации развилки в Паскале предусмотрены два оператора: условный оператор и оператор варианта (выбора). Они предназначены для выделения из составляющих их операторов одного, который и выполняется.
Структура и действие условного оператора таковы:
IF < логическое выражение>
Then <оператор 1 >
Else < оператор 2>
Условный оператор может быть неполным, т.е. не содержать часть “else <оператор 2>". В этом случае, если значение логического выражения равно false, условный оператор не вызывает никаких действий.
Оператор варианта имеет следующую форму:
Case <выражение> of
<список констант 1>: <оператор 1>;
<список констант 2>: <оператор 2>;
………………………………………
<список констант n>: <оператор n>;
end;
Выражение, стоящее между служебными словами case и of, должно иметь значение ординального типа. Любой список констант может состоять из одной константы.
Оператор варианта вычисляет значение выражения, записанного после case. Если его значение совпадает с одной из констант в некотором списке, то выполняется оператор, стоящий после этого списка. Если значение выражения не совпало ни с одной константой во всех вариантах, то оператор варианта ничего не делает.
Для реализации циклов в Паскале имеются три оператора. Если число повторений известно заранее, то удобно воспользоваться оператором цикла с параметром. В других случаях следует использовать операторы цикла с предусловием (цикл "пока") или с постусловием (цикл "до").
Цикл с предусловием является наиболее мощным в Паскале. Другие операторы цикла можно выразить через него. Его форма такова:
While < логическое выражение> do <оператор >
Действие: вычисляется значение логического выражения. Если оно равно true, то выполняется оператор, после чего снова вычисляется значение логического выражения, в противном случае действие заканчивается.
Оператор цикла с постусловием имеет форму:
Repeat <последовательность операторов >
Until < логическое выражение>
Действие: выполняется последовательность операторов. Далее вычисляется значение логического выражения. Если оно равно true, то действие заканчивается, в противном случае снова выполняется последовательность операторов цикла и т.д.
Оператор цикла с параметром предусматривает повторное выполнение некоторого оператора с одновременным изменением по правилу арифметической прогрессии значения управляющей переменной (параметра) этого цикла. Оператор цикла с параметром имеет две формы.
Форма 1:
For < параметр>: = < выражение 1 > to < выражение 2 > do < оператор>
Параметр, выражение 1, выражение 2 должны быть одного ординального типа. Параметр в этом цикле возрастает. Действие эквивалентно действию следующего составного оператора:
Begin
< параметр >: = <выражение 1 >;
while < параметр> <= < выражение 2> do
begin
< оператор>;
<параметр >: = succ (<параметр >)
end
end.
Если в этом описании отношение <= заменить на >=, а функцию succ на pred, то параметр в цикле будет убывать, в этом случае цикл с параметром принимает форму 2.
Форма 2:
For < параметр>: = < выражение 1 > downto < выражение 2 > do < оператор>
В Паскале кроме простых типов данных: real, integer, boolean, byte, char, программист по своему желанию может определить новый тип путем перечисления его элементов - перечисляемый тип, который относится к простым ординальным типам.
Описание перечисляемого типа выполняется по схеме:
Type < имя типа> = <список имен >
Например, type operator = (plus, minus, multi, divide);