Pascal. Основы

Как и любой другой язык программирования, Паскаль имеет свой алфавит. Под алфавитом языка программирования понимают набор символов, с помощью которых могут быть образованы величины, выражения и операторы.

Алфавит языка Паскаль включает:

  • Латинские буквы;
  • Цифры;
  • Специальные символы (+ - * / = ^ < > ( ) { } [ ] . , : ; ‘# $ и др.).

Для описания величин в языке Паскаль используются константы и переменные.

Константы – величины, не изменяющие своего значения в процессе выполнения программы.

Переменные – величины, в ходе выполнения программы могут быть неоднократно переопределены.

Типы констант и переменных

Паскаль позволяет использовать следующие типы констант и переменных:

  • Простые
    • целочисленный тип (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.