Типизированные константы

Типизированные константы – это специальное средство Turbo. Они отличаются от обыкновенных констант тем, что выполняют присвоение начальных значений данным, т.е. включаются в программу лишь один раз, в то время как нетипизированные константы включаются всякий раз, когда используются.

Формат:

<идент. константы> : <тип> = <выражение>;

При построении выражения для задания значения констант можно использовать только ранее определенные константы, соединенные знаками операций и следующие функции: abs, odd, chr, ord, succ, pred, length, trunc, round.

Например,

Const

number_of_car : word = 672;

eps : real = 1e-11;

FirstLetter : char = ‘A’;

Header_C = ‘Главное меню’;

В отличие от нетипизированных констант типизированная константа может стоять на месте переменной в качестве Var-параметра процедуры или функции.

Задание 2.1

1. Запишите на Паскале следующие числа (в дробной части указывать до 4 цифр):

а) 5!; б) LXIV; в) 6,38;

г) –0,7(4); д) 11/4; е) –1/6;

ж) Типизированные константы - student2.ru ; з) p; и) 5 ×106;

к) –24,8 ×10-7; л) 106; м) 1/100000.

2. Запишите следующие числа без десятичного порядка:

а) –0.00027У+4; б) 777Е-3; в) 1Е1.

3. Укажите неправильные записи чисел:

а) 0006; б) –0; в) 7,0; г) 7.;

д) +0.3; е) .3; ж) 2/3; з) Е-1;

и) 8Е0; к) 0Е-4; л) 2*Е5; м) е.

Структура программы в Turbo Pascal. Ввод и вывод данных

Программа на языке Паскаль состоит из строк. Максимальная длина программной строки в Turbo Pascal ограничена 126 символами. Если строка содержит более 127 символов, то все лишние символы компилятором игнорируются.

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

Размер программы имеет предел. Редактор текстов и компилятор позволяют обрабатывать программы и библиотечные модули объемом до 64 Кбайт. Если программа требует большего количества памяти, следует использовать библиотечные модули (.tpu-файлы) или оверлейные структуры.

Структура программы

В стандартном Паскале программы имеют строгий формат:

Program имя программы;

Uses имена подключаемых модулей;

Label

метки;

Const

описание констант;

Type

определение типов данных;

Var

описания переменных;

Procedure и Function;

Begin

основное тело программы

End.

Turbo Pascal обеспечивает значительно более гибкую структуру программы. Все, что требуется, - это, чтобы оператор Program (если таковой имеется) был первым, а основное тело программы – последним. Между ними можно иметь сколь угодно много секций описания, в любом порядке и как угодно смешанными с процедурами и функциями. Но прежде, чем что-либо использовать, это должно быть определено, иначе на этапе компиляции появится сообщение об ошибке.

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

Предложение Uses (предложение использования) содержит список имен подключаемых библиотечных модулей, т.е. идентифицирует все модули (Unit), используемые программой. Существует несколько стандартных Unit:

System используется всегда и содержит процедуры и функции ввода-вывода, манипулирования строками, динамического управления памятью, арифметические и др. Этот модуль подключается автоматически, и его можно не указывать в Uses.

Dos содержит процедуры и функции обращения к функциям MS-DOS.

Crt содержит переменные, процедуры и функции, используемые при управлении выводом информации на экран монитора: окна, цвет, звук, определение положения курсора.

Graph включает в себя большое количество процедур для построения графических изображений.

Раздел описаний состоит из 5 секций.

Описание меток. Метка допустима везде, где допустим разделитель. Переход по метке выполняется оператором goto. Метки отделяются от оператора двоеточием. Все метки должны быть описаны. Метки могут быть целочисленными (от 0 до 9999) или идентификаторами. Каждая описанная метка должна появиться в программе. Например,

label M1, M2;

(…)

Begin

M1: <оператор 1>;

M2: <оператор 2>;

end;

Описание констант. Константы – элементы данных, значения которых в ходе выполнения программы не изменяются. Turbo Pascal позволяет использовать выражения-константы. Выражение-константа представляет собой выражение, которое может вычисляться компилятором без необходимости выполнения программы. Формат:

const <идентификатор> = <значение константы>;

Например, const

min = 0;

max = 100;

M = 25*16;

Er = ‘Ошибка’;

Описание типов. Тип данных может быть описан либо непосредственно в разделе описания переменных, либо определяться идентификатором типа. Стандартные типы не требуют описания в отличие от типов, образованных пользователем. Задавая свои типы, можно сделать программу более наглядной. Формат:

type <идентификатор> = <тип>;

Например, type

number = integer;

matrica = array [1..10, 1..10] of real;

dni = 1..31;

color = (red, green, blue);

Описание переменных. При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Формат:

var <идентификатор 1>, <идентификатор 2> : <тип>;

Например, var

a, b, c : integer;

summa : real;

v : boolean;

Описание процедур и функций. В этом разделе размещаются тела подпрограмм. В Паскале роль подпрограмм выполняют процедуры и функции. В общем случае подпрограмма имеет ту же структуру, что и программа. Для описания подпрограмм используются зарезервированные слова Procedure и Function, которые записываются в начале подпрограммы.

Формат процедуры:

procedure <имя процедуры> [<параметры>];

<разделы описаний>

<раздел операторов>

end;

Формат функции:

function <имя функции> [<параметры>] : <тип результата>;

<разделы описаний>

<раздел операторов>

end;

Операторная часть. Операторы программы заключаются между ключевыми словами begin .. end, а после end (в самом конце программы) ставится точка.

Begin

<оператор>;

<оператор>;

End.

Пример 3.1 Программа читает значение переменной x и печатает значение Типизированные константы - student2.ru .

program p31;

var x : real;

Begin

read(x); write(sqrt(x))

End.

Пример 3.2 Программа читает значение радиуса круга и печатает значение его площади.

program p32;

const pi = 3.14159;

var r : real;

Begin

read(r); write(‘площадь круга:’, r*r*pi)

End.

Ввод и вывод данных

Для выполнения операций ввода-вывода служат четыре процедуры: read, readln, write, writeln.

Ввод данных с клавиатуры производится процедурой read. Значения набираются минимум через один пробел на клавиатуре и высвечиваются на экране. После набора данных для одной процедуры read нажимается клавиша <Enter>. Значения переменных должны вводится в строгом соответствии с синтаксисом языка Паскаль. Если соответствие нарушено (например, х1 имеет тип integer, а при вводе набираются значения типа char), то возникают ошибки ввода-вывода. Например,

read(a); read(i, j, k);

Процедура readln аналогична процедуре read, единственное отличие заключается в том, что после считывания последней в списке значения для одной процедуры readln данные для следующей процедуры readln будут считываться с начала новой строки. Например, если

readln (A, B); sum1 := A + B;

readln (C, D); sum2 := C + D;

то после набора на клавиатуре значений для А и В курсор автоматически перейдет на новую строку, где будут набираться данные для С и D.

Для вывода (печати) данных на экран используется процедура write. Например,

write(a); write(i, j, k);

Для печати можно использовать процедуру writeln, которая выполняется в два такта: 1) печатает данные; 2) переводит курсор на следующую строку.

Процедура writeln без аргументов выполняет только перевод курсора в следующую строку.

Пример 3.3 Программа вычисляет и печатает значение определителя второго порядка.

program p33;

var a, b, c, d : real;

Begin

read(a, b, c, d);

writeln(‘Исходные данные: а=’, a:2, ‘, b=’, b:2, ‘, c=’, c:2, ‘, d=’, d:2);

writeln(‘Определитель:’, a*d – b*c)

End.

На экране: Исходные данные: а = 2, b = 4, c = 3, d = -1

Определитель: 10

Номера позиций, в которых печатаются символы, указываются в списке аргументов процедуры печати.

Пример 3.4 Пусть переменная х = 0.523 является аргументом функции sinx, а символ _ в данном примере означает пробел. Оператор writeln(‘x=_‘:5, x:5:2, ‘sin x =’:10, sin(x):3:1) напечатает: _ _ _ х =_0.52_ _ _ _ _ _ sin x = 0.5

Согласно формату x:5:2, указанному в операторе печати, значение вещественной переменной х – число 0,52 напечатано в пяти позициях, две из которых занимают цифры дробной части числа.

Выражения

Выражения задают порядок вычисления значений. Они состоят из операндов (переменных, констант, функций), соединенных операциями. Здесь речь будет идти лишь об операндах стандартных скалярных типов.

Результат вычисления выражения должен быть записан в переменную. Чтобы поместить данные в переменную, используется оператор присваивания.

Любое выражение ограниченное разделителями { и } или (* и *) представляет собой комментарии и поэтому игнорируется компилятором. Комментарий, содержащий знак $ сразу после открывающейся скобки { или (*, является директивой компилятора.

Операции

Операции подразделяются на арифметические операции, логические операции, строковые операции, операции над множествами, операции отношения и операцию @ (операция получения адреса).

Операции могут быть унарными и бинарными. В первом случае операция относится к одному операнду и всегда записывается перед ним, во втором - операция выражает отношение между двумя операндами и записывается между ними. Например, -А – унарная операция, В + С – бинарная.

Существуют порядок выполнения операций, упорядоченных по убыванию старшинства:

1. Унарный минус, @

2. Операция NOT

3. Операция типа умножения: * / div mod and shl shr

4. Операции типа сложения: + - or xor

5. Операции отношения: =, <>, < , > , <= , >= , in

Операции с равным приоритетом обычно выполняются слева направо, хотя иногда компилятор при генерации оптимального кода может переупорядочить операнды.

Наши рекомендации