Как и любой другой язык программирования, Паскаль имеет свой алфавит. Под алфавитом языка программирования понимают набор символов, с помощью которых могут быть образованы величины, выражения и операторы.
Алфавит языка Паскаль включает:
- Латинские буквы;
- Цифры;
- Специальные символы (+ - * / = ^ < > ( ) { } [ ] . , : ; ‘# $ и др.).
Для описания величин в языке Паскаль используются константы и переменные.
Константы – величины, не изменяющие своего значения в процессе выполнения программы.
Переменные – величины, в ходе выполнения программы могут быть неоднократно переопределены.
Типы констант и переменных
Паскаль позволяет использовать следующие типы констант и переменных:
- Простые
- целочисленный тип (integer);
- логический (boolean);
- символьный (char);
- перечисляемый (задается перечислением всех возможных значений переменной);
- интервальный (задается с указанием наибольшего и наименьшего значений);
- вещественный (real);
- Строковые
- строка (string);
- Структурированные
- массивы (array);
- записи (record);
- множества (set);
- файл (file);
- Ссылочные.
Каждому из перечисленных типов соответствует свой набор операций по обработке данных. Так, для целочисленного и вещественного типов используются операции арифметических действий (сложение, вычитание, умножение, деление). Для логического типа выполняются операции and – логическое и, or – логическое или, xor – логическое исключающее или, not – логическое не.
Кроме того, Паскаль предусматривает возможность вычисления для каждого типа данных значений стандартных функций.
В данной таблице приведены стандартные арифметические функции.
Функция | Назначение |
Cos(x) |
Вычисление косинуса числа |
Sin(x) |
Вычисление синуса числа |
Abs(x) |
Вычисление абсолютного значения числа |
Sqr(x) |
Вычисление квадрата числа |
Sqrt(x) |
Вычисление квадратного корня числа |
Arctan(x) |
Вычисление арктангенса числа |
Exp(x) |
Вычисление экспоненты числа |
In(x) |
Вычисление натурального логарифма числа |
Odd(x) |
Вычисление четности числа |
Trunc(x) |
Вычисление целой части числа |
Round(x) |
Округление числа |
Примечание: Во всех тригонометрических функциях число x указывают в радианах.
Переменные и константы с помощью знаков операций, стандартных функций и круглых скобок могут связываться в выражения. Правила их записи близки к соответствующим правилам записи математических выражений. При вычислении значений выражений устанавливается следующий приоритет выполнения операций:
- Not;
- *, /, mod, div, and;
- +, -, or;
- <, <=, >, >=, <>, =.
Операции одного и того же старшинства выполняются слева направо в порядке их появления в выражении. Выражения в круглых скобках вычисляются в первую очередь.
Любая программа, написанная в Паскаль, строится в соответствии с рядом правил, определяющих ее структуру. В частности, в состав любой программы должны входить три раздела:
- Объявления и соглашения;
- Тексты процедур и функций;
- Основной блок программы.
Лишь в простейших программах второй из перечисленных разделов может отсутствовать. Каждый раздел имеет в свою очередь составные части, так что в целом структуру программы, написанной на языке Паскаль, можно представить следующим образом.
Раздел объявлений и соглашений
Program {заголовок программы} Uses {подключаемые библиотеки} Label {объявление меток} Const {объявление констант} Type {объявление типов} Var {объявление переменных} Раздел текстов процедур и функций: Procedure (function) {описание процедуры (функции)} Раздел основного блока программы: Begin {начало блока} Операторы End. {конец блока}
Кроме того, в программе могут использоваться комментарии – любой текст, ограниченный (*…*) или {…}. Комментарий может быть помещен в любом месте программы.
Рассмотрим более подробно назначение каждой части программы.
Заголовок программы состоит из зарезервированного слова Program и идентификатора – имени программы.
В строке Uses производится подключение используемых в данной программе библиотек (стандартных модулей). Паскаль содержит ряд модулей, в том числе:
- System – системный модуль низкоуровневых программ поддержки языка Паскаль; подключается автоматически, даже при отсутствии ссылки на него в строке uses;
- Dos и WinDos – модули поддержки часто используемых функций MS DOS и Windows;
- Crt – модуль управления режимами вывода информации на экран;
- Printer – модуль управления выводом информации на печать;
- Overlay – модуль управления оверлеями языка Паскаль; позволяет выполнять программы, которым требуются большие объемы памяти;
- Strings – используется при написании программ, совместимых с Windows;
- Graph – модуль для работы с графикой.
В разделе описания меток содержатся сведения об используемых в программе метках. Переход по ним выполняется оператором goto. Метки отделяются от помечаемого оператора знаком “:”, должны быть описаны, могут быть целочисленными (от 0 до 9999) или идентификаторами. Каждая описанная метка обязательно должна появиться в программе.
Для описания констант используется ключевое слово const, имя константы, знак “=” и значение константы:
Const Имя1 = значение 1; Имя2 = значение 2; …
В разделе описания типов Type программист может задавать свои типы, сформированные на основе определенных правил с использованием стандартных типов.
В разделе Var описываются переменные, используемые в программе:
Var список 1: имя типа 1; Список 2: имя типа 2; …
В списке переменных их имена отделяются запятой, в качестве имени типа можно использовать один из стандартных типов или идентификатор типа, объявленного в разделе Type. Описанные таким образом переменные могут использоваться в пределах блока, где они были описаны, а также во всех вложенных блоках, если в них эти переменные не описаны повторно.
В разделе текстов процедур и функций в соответствии с определенными правилами производится описание процедур и функций.
Процедура
Процедура имеет следующую структуру:
Procedure имя процедуры (формальные параметры); Раздел объявлений Begin Операторы End;
Раздел объявлений процедуры может включать подразделы Label, const, type, var для обявления локальных меток, постоянных, типов и переменных собственно. Слово «локальный» означает, что все перечисленные объекты могут быть использованы только в рамках данной процедуры или других подчиненных ей процедур.
Функция
Описание функций отличается по структуре от описания процедур только заголовком:
Function имя функции (формальные параметры): тип результата; Begin Операторы End;
Функция – это особый вид процедуры, результатом разботы которой является единственное значение. С этим значением связывается имя функции, в то время как име процедуры служит только для ее вызова.
Основной блок программы состоит из ряда операторов и является выполняемой частью программы. Он начинается со слова Begin и заканчивается словом end, после которого должна стоять точка. Операторы языка Паскль не привязаны к определенной позиции строки. В одной строке можно указывать несколько операторов. Исполняемые операторы отделяются друг от друга знаком « ; ».
Допускается перенос с одной строки на другую частей операторов (но без разделения ключевых слов).
Как было указано выше, основной блок программы представляет собой некоторый набор операторов.
Оператор – неделимый элемент программы, который позволяет выполнить определенные действия.
Операторы должны записываться строго в соответствии с правилами, установленными для данного языка программирования. Рассмотрим основные операторы языка Паскаль.
Оператор присваивания
Данный оператор предписывает запомнить некоторое значение в переменной. Значение и индентификатор переменной разделены парой знаков « := ». Типы объектов с обеих сторон данного знака должны строго совпадать, за исключением того случая, когда тип переменной – real, а тип выражения – integer.
Общий вид оператора:
<переменная>:=<выражение>
Например:
А:= A=1; C:= f/p*100;
Операторы ввода/вывода
Немногие программы обходятся без ввода данных и совсем нет таких, которые не выводят полученные результаты. Ввод данных с клавиатуры дисплея выполняется операторами:
Read(<список переменных>); Readln(<список переменных>);
Где <список переменных> - последовательность имен переменных, разделенных запятыми. Буквы ln добавляются в конце оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы.
Например:
Readln(x,y,z); Read(beta,gamma);
При выполнении оператора read (readln) программа останавливается и ждет, пока нужное количество чисел не будет введено с клавиатуры. Вводимые числа разделяют пробелами или нажатием клавиши Enter. По завершении ввода данных следует нажать Enter, после чего компьютер перейдет к выполнению следующего оператора программы.
Вывод данных на экран дисплея выполняется операторами:
Write(<список выражений>); Writeln(<список выражений>);
Выражения в списке разделяются запятыми. Значения выражений сначала вычисляются, а затем выводятся на экран. Буквы ln имеют то же значение, что и в операторе readln.
Вслед за выражением через двоеточие можно указать ширину поля экрана, в котором разместится выводимое значение.
Например:
Оператор
write(10:3, 55:6)
займет для вывода числа 10 три позиции, а для вывода числа 55 – шесть позиций на экране.
При выводе вещественных значений можно указать, сколько десятичных цифр следует сохранить в дробной части числа, причем количество цифр указывается вслед за шириной поля после двоеточия.
Например:
Если х =3,14159, то оператор
write(x:6:2)
займет для вывода переменной х шесть позиций, две из которых будут использованы для дробной части х (т.е. значение х будет округлено до 3,14).
Для того, чтобы прокомментировать выводимые значения, в список ввода можно помещать строки любых символов, заключенные в одинарные кавычки – апострофы.
Например:
При выполнении фрагмента программы
Х:=3.5; Write(‘Ответ:’, x:4, ‘км/с’);
На экран будет выведено:
Ответ: 3.5 км/с
Приведем пример Паскаль-программы.
Задача – составить программу для подсчета суммы двух заданных чисел. Для этого необходимо ввести текст в память компьютера и сохранить на диске под именем pr1. Далее запустить программу на выполнение. При наличии ошибок внести соответствующие исправления. Получить результаты работы программы.
Текст программы:
Program sum; Var a, b, s: real; Begin Write(‘Введите значения чисел a и b’); Readln(a,b); S:=a+b; Writeln(‘Сумма =’; s:7:2); End.