Язык Turbo Pascal - мощное расширение американского стандарта (ANSI Pascal), учитывающее архитектурные особенности операционной обстановки (MS-DOS) и снабженное внушительными по объему и разнообразию пакетами стандартных процедур.
Такие принципиальные нововведения, как аппарат модулей и объектно-ориентированные средства облегчают конструирование больших программных систем на основе технологии модульного программирования.
Компилятор входного языка системы Turbo Pascal работает по однопроходной схеме, реализует функции редактирования связей, формируя на выходе готовый к исполнению объектный код. Компилятор может осуществлять широкий набор локальных оптимизаций (свертывание констант, исключение неиспользуемого кода и лишних данных, оптимизация операций и т.д.), что способствует высокой эффективности результирующих программ.
Система Turbo Pascal является интегрированной средой, включающей ряд компонент, в совокупности поддерживающих все виды работ по созданию программ. Система содержит универсальный текстовый редактор, компилятор входного языка, редактор связей и встроенный символьный отладчик. Многооконный интерфейс с развитой системой меню обеспечивает высокую производительность труда программиста.
III. Программирование на языках программирования высокого уровня
1. Структура программы в Паскале
Программа на языке Pascal состоит из разделов:
Название программы
Program <Имя программы>;
раздел описания меток
Label <описание меток>;
раздел описания констант
Const <описание констант>;
раздел описания типов
Туре <описание типов>;
Раздел подключения модулей
Uses <название модуля>;
раздел описания переменных
Var <описание переменных>;
раздел описания процедур и функций
Procedure (Function) <описание подпрограмм>;
раздел операторов
Begin
<раздел операторов>;
Конец программы
End.
Для любой программы обязательным является лишь раздел операторов. Все программные объекты (константы, переменные, типы и пр.) должны быть описаны в соответствующих разделах описаний.
2. Правила написания имен в Паскале
1. Все имена пишутся на латинице.
2. Длина имени может быть до 256 символов.
3. Имя нельзя начинать с цифры.
4. В именах нельзя использовать знаки пунктуации.
5. В именах вместо пробела используется нижнее подчеркивание_.
6. В именах можно использовать цифры.
3. Стандартные модули в Паскале
Turbo Pascal имеет восемь стандартных модулей. Зарезервированное слово uses дает возможность подключать к программе библиотечные модули.
Программные ресурсы, сосредоточенные в стандартных модулях, образуют мощные пакеты системных средств, которые обеспечивают высокую эффективность и широкий спектр применений системы Turbo Pascal.
Каждый стандартный модуль содержит логически связанную совокупность типов, констант, переменных и подпрограмм, относящихся к определенной области применений. Далее приводится общая характеристика стандартных модулей.
· System
В модуль System входят все процедуры и функции авторской версии языка Pascal, подпрограммы стандартного Паскаля, а также много дополнительных подпрограмм общего характера, в частности, ориентированные на конкретную операционную среду.
· Dos
Модуль Dos содержит средства доступа к операционной системе и по существу является программным представлением системного интерфейса MS-DOS.
· Crt
Модуль Crt обеспечивает практически полный спектр возможностей для доступа к экрану дисплея в текстовом режиме. Кроме того, в данный модуль включены средства чтения информации с клавиатуры (включая расширенные коды клавиш) и простейшего управления звуком.
В модуле Crt находится процедура ClrScr, которая используется для очистки экрана (подключается в теле программы).
· Printer
Модуль Printer содержит единственный интерфейсный злемент – переменную Lst стандартного типа text, системно связанную с логическим устройством PRN (то есть с печатающим устройством, если оно имеется в конфигурации). Использование этой переменной в стандартных процедурах Write и WriteLn приводит к выводу информации на печать.
· Overlay
Модуль предоставляет средства для организации так называемых оверлейных программ, позволяющих обеспечить достаточно эффективное выполнение больших программных систем, размер которых превышает объем доступной оперативной памяти.
· Graph
Модуль Graph объединяет многочисленные программные средства управления графическим режимом работы дисплея. Данный модуль обеспечивает использование всех возможностей наиболее распространенных типов дисплейных адаптеров CGA, EGA, VGA, Hercules и т.п. как для монохромных, так и для цветных дисплеев и позволяет создавать разнообразные и эффективные графические программы.
Модули Turbo3 и Graph3 обеспечивают совместимость с данной версией системы Turbo Pascal тех программ, которые были разработаны для ранней версии 3.0.
Пример
Program moduli;
Uses crt; {Подключение модуля crt}
var <описание переменных>;
begin
clrscr; {Процедура очистки экрана}
<инструкции>;
end.
4. Типы переменных в Паскале
Тип
Диапазон
Объем памяти
Целые типы
Shortint
-128..127
8 бит
Integer
-32768..32767
16 бит
Longint
-2147483648..2147483647
32 бит
Byte
0..255
8 бит
Word
0..65535
16 бит
Логический тип
Boolean
False, True
1 бит
Символьный тип
Char
Символы из расширенного набора символов кода ASCII
a) Арифметические операции бывают унарными и бинарными. К унарным относится операция изменения знака.
В следующей таблице представлены бинарные арифметические операции Паскаля. А и В обозначают операнды, для типов величин использованы обозначения: I — целый, R — вещественный.
Выражение
Типы операндов
Тип рез-та
Операция
А + В
R, R
R
Сложение
I,I
I
I, R R, I
R
А - В
R,R
R
Вычитание
I,I
I
1, R R, I
R
А * В
R, R
R
Умножение
I,I
I
I, R R, I
R
А/В
R, R
R
Вещественное
I,I
R
деление
I,R R, I
R
A div В
I,I
I
Целое деление
A mod В
I,I
I
Остаток от целого деления
b) Стандартные математические функции Паскаля представлены в следующей таблице:
I – integer – целый тип; R – real – вещественный тип.
Обращение
Тип аргумента
Тип рез-та
Функция
abs (х)
I, R
I, R
Модуль аргумента
arctan (х)
I, R
R
Арктангенс( радианы )
cos (х)
I, R
R
Косинус (х в радианах)
ехр(х)
I, R
R
ех — экспонента
ln(x)
1, R
R
Натуральный логарифм
random
R
Псевдослучайное число в интервале [0, 1 ]
random (х)
I
I
Псевдослучайное число в интервале [0,х]
sin(x)
I, R
R
Синус (х — в радианах)
sqr(x)
I, R
R
Квадрат х
sqrt(x)
1, R
R
Корень квадратный
Старшинство операций
Мы знаем теперь, что Паскаль допускает использование сложных выражений, в которых могут объединяться арифметические, логические и некоторые другие операции. В этом случае следует учитывать порядок выполнения операций.
Порядок выполнения операций определяется их старшинством, или приоритетом. В следующей таблице приведены приоритеты операций. Первый уровень приоритетов является наивысшим, а четвертый — низшим.
Операция
Приоритет
not
Первый
*, /, div, mod, and, shl, shr
Второй
+, -, or, xor
Третий
-, o, <, >,<=, >=, in
Четвертый
При определении порядка выполнения операций следует учитывать следующее:
Операнд, находящийся между двумя операциями с различными приоритетами, относится к операции, имеющей более высокий приоритет.
Операнд, находящийся между двумя операциями с равными приоритетами, относится к той операции, которая находится слева от него.
Выражение, заключенное в скобки, перед использованием вычисляется как отдельный операнд.
Операции с равным приоритетом выполняются слева направо, если этот порядок не изменен с помощью круглых скобок.
c) Дополнительные функции в Паскале
· Inc (Dec)
Функции Inc и Dec используются для увеличения и уменьшения значения аргумента на единицу.
Пример
Inc(7) = 8;
Dec(7) = 6;
· Odd
Логическая функция Odd из модуля System принимает значение «истина» только в том случае, когда аргумент — нечетное число.
Пример
Odd(7) = true;
Odd(6) = false;
· Trunc
Функция возвращает целую часть аргумента как значение целого типа. Дробная часть аргумента при преобразовании не учитывается, т. е. функция не производит округление.
Пример
Trunc(7,2856) = 7;
Trunc(4,99) = 4;
· Round
Функция Round преобразует вещественное значение в ближайшее к нему значение типа LongInt, т. е. округляет аргумент до целого числа.
Пример
Round(7,2856) = 7;
Round(4,99) = 5;
· Int
Функция возвращает целую часть аргумента как значение вещественного типа. Дробная часть аргумента при преобразовании не учитывается, т. е. функция не производит округление.
Пример
Int(7,2856) = 7,0000;
· Frac
Функция возвращает дробную часть аргумента как значение вещественного типа. Дробная часть аргумента при преобразовании не учитывается, т. е. функция не производит округление.
Пример
Frac(7,2856) = 0,2856;
6. Линейное программирование на языке Pascal
a) Начало программы
Тело программы, или раздел инструкций, начинается со служебного слова begin, на алгоритмическом языке оно обозначается словом начало, блок-схема же выглядит как овал:
После слова begin никогда не ставится точка с запятой.
b) Конец программы
Слово begin в программе автоматически подразумевает, что после выполнения некоторых действий будет употреблено служебное слово end. End с точкой после него означает конец всей программы.
На алгоритмическом языке end обозначается словом конец, а в блок-схемах – овалом, как и begin.
c) Команда вывода данных на экран
Для вывода информации на экран используются две команды: Write (вывод данных на экран) и WriteLn (вывод данных на экран, начиная с новой строки).
Окончание -Ln означает переход в новую строку.
Эти команды позволяют выводить на экран текст: write('текст'); writeln('текст') (пользователь увидит на экране надпись, заключенную в одиночные кавычки, в данном случае слово текст). Если использовать эти команды без одиночных кавычек: write(x), writeln(x), на экран выведется значение переменной x.
На алгоритмическом языке команда записывается: вывести, а блок-схема выглядит следующим образом:
d) Команда ввода данных
Здесь также используются две команды: Read (загрузка введенных пользователем данных в переменную) и ReadLn (загрузка введенных пользователем данных в переменную и перевод каретки в новую строку).
Пример Read(x); readln(x) - переменная x приобретет значение, введенное пользователем с клавиатуры.
На алгоритмическом языке команда обозначается словом ввести (ввод), а в блок-схемах – параллелограммом.
e) Математическое действие
Присваивание переменной некоторого вычисляемого значения обозначается следующей записью: <перем.1>:=F (переменная 1 задается некоторой формулой, которая может быть как арифметическим выражением, так и функцией от других переменных соответствующего типа).
Математическое действие на алгоритмическом языке записывается так же, как и на языке программирования, а в блок-схеме обозначается прямоугольником:
Пример
Найдем сумму некоторых натуральных чисел a и b.
Решение задачи оформим в виде блок-схемы, на алгоритмическом языке и на Паскале.