7.4. Локальные и глобальные описания объектов

Мы уже знаем, что программа – блок, т.е. раздел операторов, снабженный описаниями и имеющий заголовок. Вид блока-программы:

Program имя программы (возможны опции); {опции не обязательны}

Label …; {раздел описания меток}

Const …; {раздел описания констант}

Туре …; {раздел определения типов}

Var …; {раздел описания переменных}

Function …; Procedure …; {раздел описания функций и процедур}

BEGIN ... END. {раздел операторов}.

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

Procedure имя (список входных формальных параметров);

Var (список выходных формальных параметров);

Label …;

Const …;

Туре …;

Var ...;

function …;

procedure …;

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

begin ... end; {тело процедуры}

Таким образом, программа – всегда блок, в который могут быть вложены другие блоки.

Как один из вариантов, возможна следующая структура программы:

Program Prim38; { начало блока 1} label N,M; Const k=5.6; Type d=array[1..10] of integer; Var b,c:real; i,j:integer; z,y:d;

 function f(f,b,c:real):real; { начало блока 2}

begin f:=1; end; {конец блока 2}

 procedure proc(f,b,c:real; Var x,y,z:real); { начало блока 3}

label K,L;

var d,w,s:real;

function fp(a,b:real):real; { начало блока 4}

begin fp:=1; end; {тело fp, конец блока 4}

begin x:=1; y:=1; z:=1; end; {тело proc, конец блока 3}

BEGIN b:=1; END. {тело основной программы, конец блока 1}

Таким образом, программа состоит из четырех блоков. Все имена меток, констант, типов, переменных, функции f и Рrос известны в блоке 1, поскольку они даны в его описании. Считается, что они описаны здесь локально.

В блоке 2 – function – описаний нет, поэтому своих собственных объектов этот блок не имеет. Формальные параметры не в счет, поскольку они служат только для описания алгоритма вычисления результата с именем f в функции f, а ячейки памяти для b, с, f здесь не выделяются. Однако в этом блоке можно использовать все объекты, которые описаны в блоке 1, так как блок 2 является составляющей частью блока 1. Иногда говорят, что имена объектов блока 1 описаны глобально для блока 2.

Аналогичная ситуация и с блоком 3 – Procedure Рrос. Для нее все объекты блока 1 являются глобальными, т.е. доступны. Кроме того, в блоке 3 имеются свои описанные здесь объекты – метки К, L, переменные d, W, 8, функция fp, которые могут быть использованы только в блоке 3 и не известны в блоках 1 и 2.

Как следствие возможно применение одинаковых имен в различных блоках (см. имя d). В блоке 1 d – массив. В блоке 3 (в Рrос) имеется свое d, которое является собственным в блоке 3 и представляет собой не массив, а ячейку памяти типа real.


8. Строковые данные

 

8.1. Общие замечания

Строка – это последовательность символов длиной 0-255. Для описания данных строкового типа используется слово string, за которым могут следовать в квадратных скобках цифры, определяющие количество символов в строке. Если цифры в квадратных скобках и сами скобки отсутствуют, то для данной ячейки памяти будет выделяться максимально возможная длина: 256 байт для хранения 265 символов. Символьные константы (которые могут храниться) имеют вид совокупности символов, заключенных в апострофы.

Пример: 'a, b, с - символы'.

Примеры описаний:

Var а, b, с: string [70];

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

Например, возможны операторы:

а: = 'улица Садовая';

b: = улица Чкалова, 17, хаи';

с: = г. Харьков – большой город';

возможно предварительное описание типа:

Туре a=string [70];

Var b, с: а;

 

8.2. Строковые выражения

Выражения, в которых операндами служат строки, являются строковыми выражениями. Результат – строка. Опишем операции, которые можно применять при написании строковых выражений:

Операция сцепления, знак операции '+'.

'Дом'+' номер'+'43' дает результирующую строку 'Дом номер 43'.

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

Операции отношения выполняются раньше операции сцепления, т.е. имеют более высокий приоритет.

Сравнения между строками производятся посимвольно, слева направо, до первого несовпадающего символа. Та строка считается больше, в которой первый несовпадающий символ имеет больший код по таблице кодов. Результаты сравнения – True или False.

Если строки имеют различную длину и более короткая совпадает с началом более длинной, то последняя считается большей.

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

Допускается при записи выражений строкового типа применять данные, описанные с атрибутом char. В этом случае эти данные интерпретируются как string [ 1]. К отдельным символам данного строкового типа можно обратиться по номеру этого символа в строке (аналогично индексу в массивах). В нулевом байте хранится длина строки.

Program Prim39; var st1,st2:string[30]; BEGIN st1:='отдел № 256'; writeln(st1); {на экране "отдел № 256"} st2:=st1[10]; writeln(st2); {на экране "5"} writeln(ord(st1[0])); {на экране "11"}

readln; END.

Если бы в var было указано string[10], то writeln(st1), вывел бы результат "отдел № 25"

 


Информация о работе «Основы программирования на языке Паскаль»
Раздел: Информатика, программирование
Количество знаков с пробелами: 168304
Количество таблиц: 7
Количество изображений: 26

Похожие работы

Скачать
274963
85
0

... ячейка, а имя переменной превращается в адрес ячейки. Появление этого адреса происходит в результате работы специального оператора языка (NEW), однако его значение в большинстве случаев не используется при программировании на алгоритмических языках типа Паскаль. Условимся считать, что адрес ячейки, которая будет хранить переменную А, есть А. Или, другими словами, А - это общее имя переменной и ...

Скачать
11632
0
1

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

Скачать
47594
1
0

... , тем не менее, использование программ с перекрытиями снимает это ограничение. Два библиотечных модуля TURBO3 и GRAPH3 введены для совместимости с ранней версией 3.0 системы Турбо Паскаль. 2 Объекты Базовым в объектно-ориентированном программировании является понятие объекта. Объект имеет определённые свойства. ...

Скачать
17572
2
0

... выбрать режим Quit <Alt>-<X>, после чего нажать либо <Enter>, либо комбинацию <Alt>-<X>. ФУНКЦИОНАЛЬНЫЕ КЛАВИШИ Функциональные клавиши используются для управления средой Турбо Паскаля. Они обозначаются F1, F2,..., F12 и располагаются в самом верхнем ряду клавиатуры. С каждой из этих клавиш связывается некоторая команда меню. Действие почти всех функциональных ...

0 комментариев


Наверх