
- •Элементы технологии обработки информации с помощью эвм. Модели решения функциональных и вычислительных задач.
- •Алгоритмический язык Pascal. Алфавит языка, лексика, структура программы.
- •Общая структура Pascal-программы
- •Выражения. Операции.
- •2. Описание двумерных массивов
- •5. Организация сложных циклов.
- •2. Процедуры и функции. Блочная структура программы. Параметры.
- •Организация связи основной программы с подпрограммой
- •1. Структура подпрограмм
- •2. Функция
- •2.1. Структура функции
- •2.2. Обращение к функции
- •2.3. Программирование с использованием функции
- •3. Локальные и глобальные переменные.
- •4. Параметры - массивы.
- •5. Процедуры
- •5.1. Структура процедуры
- •5.2. Обращение к процедуре
- •5.3. Параметры-переменные и параметры-значения
Общая структура Pascal-программы
Pascal является алгоритмическим языком в традиционном понимании этого термина, т.е. правильная программа на этом языке представляет собой формальную запись некоторого алгоритма - конечной последовательности действий, приводящих к решению некоторой задачи. В соответствии с этим принципом программа на языке Pascal всегда состоит из двух основных частей: описания последовательности действий, которые необходимо выполнить, и описания данных, с которыми оперируют действия. Действия представляются операторами языка, которые вводятся посредством описаний и определений. Программа может быть снабжена заголовком, который задает имя программы и ее параметры. Авторский вариант - связь со средой; Turbo Pascal - комментарий. Текст программы должен завершаться '.'.
Описания данных текстуально предшествуют описанию действий и должны содержать упоминание всех объектов, используемых в действиях (операторах).
Совокупность описаний и определений и следующая за ней последовательность операторов называется блоком. Структура программы может быть представлена следующей диаграммой:
Программа
заголовок программы
блок
.k.
Блоки состоят из описаний, которые записаны и скомбинированы в любом порядке, и операторов. Каждый блок является частью описания процедуры или функции, или частью программы или модуля. Все идентификаторы и метки, описанные в разделе описания, являются для блока локальными. В общем виде любой блок имеет следующий формат:
Б
begin
end
оператор
Описание меток
;
описание констант
определение типов
описание переменных
описание процедур и функций
Объекты, вводимые посредством описаний и определений, имеют различную природу и могут быть разбиты на 5 классов:
- метки;
- константы;
- типы;
- переменные;
процедуры и функции.
Система типов языка. Скалярные типы.
Иерархия типов
В языке Pascal любая переменная характеризуется своим типом. Под типом понимается множество значений, которые может принимать переменная и, как следствие, множество операций, допустимых над данной переменной.
Pascal является типизированным или статическим языком. Это означает, что тип переменной определяется при ее описании и не может быть изменен. Переменная может участвовать только в операциях, допустимых с ее типом. Такой подход способствует большей аккуратности и ответственности при составлении программ, делает их поддающимися автоматической (при компиляции) проверке на корректность и в конечном итоге приводит к более высокой надежности создаваемых программ.
На основе небольшого числа стандартных типов программист может конструировать данные произвольной структуры и сложности.
Базовыми в системе типов являются простые. Составные по определенным правилам строятся из простых. Ограниченные формируются из простых путем сужения их ОДЗ. Первичными в иерархии типов являются стандартные скалярные, представляющие традиционные в языках программирования множества значений (целые, вещественные, символьные, булевские) и их модификации, учитывающие архитектурные особенности аппаратуры.
Стандартные скалярные типы в языке Turbo Pascal распадаются на четыре группы:
- целые типы;
- вещественные;
- символьный тип;
булевский тип.
На основе стандартных скалярных типов имеется возможность образовывать пользовательские скалярные типы.
Целые типы: integer, byte, shortint, word, longint.
-
SortInt
-128 .. 127
1 байт
Integer
-32768 .. 32767
2
LongInt
-2147483648 .. 2147483647
4
Byte
0 .. 255
1
Word
0 .. 65535
2
Над целыми числами допустимы операции: + - * / div mod. Операция деления дает вещественный результата, все остальные целый.
Вещественные типы: Real, Single, Double, Extended, Comp.
К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой и фиксированным числом цифр. Запись значения в формате с плавающей запятой обычно включает три значения - m, b и e, где m*b**e=n, где b всегда = 2, а m и e являются целочисленными значениями в диапазоне вещественного типа. Эти значения m и e далее определяют диапазон представления и точность вещественного числа.
Имеется пять видов вещественных типов: вещественное, с одинарной точностью, с двойной точностью, с повышенной точностью и сложное. Вещественные типы различаются диапазоном и точностью связанных с ними значений.
Диапазон представления и десятичные цифры для вещественных типов
-
Тип
Диапазон
число цифр мантиссы
размер памяти
Real Single Double Extended Comp
2.9E-39 .. 1.7e38
1.5E-45 .. 3.4E38
5.0E-324 .. 1.7E308
3.4E-4951 ..1.1E4932
-2E+63 .. 2E+63-1
11-12
7-8
15-16
19-20
6 байт
4
8
10
8
Сложный тип содержит только целочисленные значения в диапазоне от -263+1 до 263-1, что приблизительно равно -9.2x1018 и 9.2x1018.
Над вещественными числами допустимы 4 арифметических операции, результат вещественные, если хотя бы один операнд вещественный.
Символьный тип.
Символы из множества ASCII ( American Standart Code For Information Interchange ). Это множество из 256 символов, упорядоченных определенным образом.
Булевский тип: true, false.
Над значениями булевского типа допустимы операции сравнения, причем считается, что false < true. Кроме того, имеются 4 стандартных логических операции, обозначаемые служебными словами: and, or, xor, not.
1 байт.
Строковые типы
Значением строкового типа является последовательность символов с динамическим атрибутом длины (в зависимости от действительного числа символов при выполнении программы) и постоянным атрибутом размера в диапазоне от 1 до 255. Текущее значение атрибута длины можно получить с помощью стандартной функции Length.
Перечислимый тип задается посредством перечисления всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в скобки.
Порядковый номер перечислимой константы определяется ее позицией в списке идентификаторов при описании. Перечислимый тип, в котором описывается константа, становится ее типом. Первая перечислимая константа в списке имеет порядковый номер 0.
Приведем пример перечислимого типа:
suit = (club,diamond,heart,spade)
Согласно этим описаниям diamond является константой типа suit. При применении функции Ord к значению перечислимого типа Ord возвращает целое число, которое показывает, какое положение занимает это значение в отношении других значений этого перечислимого типа. Согласно предшествующим описаниям, Ord(club) возвращает 0, Ord(diamond) возвращает 1 и так далее.
Отрезок типа ( интервальный тип ).
Отрезок типа представляет собой собой диапазон значений из порядкового типа, называемого главным типом. Определение отрезка типа включает наименьшее и наибольшее значение в поддиапазоне. Оно имеет следующий синтаксис:
отрезок типа
Обе константы должны иметь один и тот же порядковый тип. Отрезки типов, имеющие вид a..b, предполагают, что a меньше или равно b.
Приведем примеры отрезков типов:
0..99 -128..127 club..heart
Переменная отрезка типа имеет все свойства переменных главного типа, однако ее значение на этапе выполнения должно принадлежать указанному интервалу.
Описание типов
Определение типов
type
описание типа
Описание переменных и констант
Описание переменных
В программе на языке Pascal любая используемая переменная, за исключением системных, должна быть определена до ее использования. Раздел описания переменных состоит из служебного слова var и следующих за ним определений переменных, локальных для этого блока. Переменные разделяются между собой запятыми.
Определение переменной должно содержать два элемента: имя переменной и ее тип. Идентификатор переменной и ее тип разделяются в определении символом ':', определение завершается разделителем ';'. Несколько переменных одного типа можно вводить через запятую. Каждая переменная должна быть описана не более одного раза. Область известности ("видимости") переменной ограничивается блоком, в котором она определена.
Определение переменной
Приведем пример раздела описания переменной:
var
X,Y,Z: real;
I,J,K: integer;
Digit: 0..9;
Done,Error: boolean;
Описание констант
В определениях констант не указывается тип, по умолчанию он определяется значением.
Описание констант
const
описание константы
описание типизированной константы
Определение константы
Предопределенные константы true, false.
Типизированные константы
Дополнительно к обычным константам Turbo Pascal допускает использование качественно новых объектов - типизированных констант. Такие константы занимают промежуточное положение между обычными константами и переменными, что отражается в следующих их характеристиках:
Типизированные константы описываются в разделе описаний констант вместе с обычными константами.
Так же, как обычные константы, типизированные константы получают при описании (начальное) значение.
Аналогично переменным, типизированные константы имеют тип, который задается при их описании, а также могут получать НОВЫЕ значения ( присваиваться ). Т.о., название "константа" в данном случае достаточно условно. Типизированные переменные можно использовать как и обычные переменные таких же типов. Отметим, что типизованные константы инициализируются только один раз - в начале выполнения программы. Таким образом, при каждом новом входе в процедуру или функцию локально описанные типизованные константы заново не инициализируются.
Описание типизированной константы
Примеры....
Описание типизованной константы с простым типом означает указание значения константы:
const
Maximum : integer = 9999;
Factor : real = -0.1;
Breakchar : char = #3;
Описание меток
Раздел описания процедур и функций состоит из описаний процедур и функций, локальных для этого блока.