Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1601

.pdf
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
1.46 Mб
Скачать

что означает перевод на PASCAL исходного математического выражения:

 

 

c

 

 

 

 

a b

 

sin(a b) c d

 

 

 

e

d

 

 

 

 

 

 

 

 

 

 

 

 

.

4.2.Основная часть

4.2.1.Структура программы на языке Pascal (правила написания программ на языке Pascal)

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

Программа на языке PASCAL состоит из:

1.Обязательного заголовка.

2.Блока (тела) программы.

3.И заканчивается точкой (после end).

Блок в свою очередь состоит из обязательного раздела описаний и раздела операторов.

Таким образом структура программы состоит из обязательных трех частей:

1.Заголовка.

2.Раздела описаний.

3.Раздела операторов.

Рассмотрим индивидуально каждый:

Раздел описаний состоит из разделов:

1.Описание меток.

2.Описание констант.

3.Описание типов.

4.Описание переменных.

5.Описание процедур и функций.

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

Begin

и заканчиваться словом:

End.

В результате образуется операторный блок или составной оператор. Иногда их называют операторными скобками (операторные скобки begin-end).

Таким образом, общую структуру программы можно представить:

<имя программы> <описание меток> <описание констант> <описание типов> <описание переменных>

<описание процедур и функций>

Begin

<операторы>

End.

Следует отметить, что в состав составного оператора (внутри begin и end) может входить другой составной оператор. Степень такого вложения не ограниченна.

Каждый из вышеперечисленных описаний должен начинаться ключевым словом:

Program, Label, Const, Type, Var, Procedure, Function.

Каждый из этих описаний будет изложен ниже. Заметим, что описания необходимо для того,

чтобы сообщить компилятору имена (адреса) ячеек памяти куда должны быть отправлены соответствующие данные (для const и var).

Указание типа данных, необходимо компилятору, для того чтобы он «знал», какие операции допустимы для содержимого той или иной ячейки памяти.

Описание программы на бланке (на листе бумаги) и на экране дисплея на языке PASCAL более произвольно, чем на других языках. Так допускается: произвольный перенос на новую строку (за исключением служебного слова), допускаются произвольные пробелы (за исключением служебного слова). Таким образом, служебные слова нельзя переносить и устраивать внутри них пробелы. Следует отметить, что каждый законченный описатель и оператор обязательно должен заканчиваться точкой с запятой. К тому же на каждой строке их может быть расположено в количестве двух, трех и т.д. В тоже время программа должна быть наглядной и легко читаемой. Несмотря на то, что не существует стандарта на стиль написания программы, следует придерживаться следующих рекомендаций:

1.Не следует операторы программы писать сплошным текстом (и описатели тоже). Для этого применяют пробелы для каждой конструкции оператора.

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

3.Конструкция языка одинаковых уровней располагать друг под другом.

4.Каждое описание и каждый оператор желательно писать с новой строки.

5.Избегать длинных строк – их необходимо переносить.

Заголовок программы

В заголовке программы после ключевого слова program через пробел необходимо указать имя программы (латинскими символами). После имени в круглых скобках можно указать имена файлов –

наборов каких-нибудь данных, размещенных на внешних периферийных устройств ax компьютера, с которыми взаимодействуют программы. Обычно используют имена стандартного входного (input) и выходного (output) файлов.

Например:

Program, sigma (input, output);

Во многих версиях языка PASCAL имена стандартных файлов в заголовке программы могут отсутствовать ( они принимаются по умолчанию). Чем мы и будем пользоваться в дальнейшем. В этом случае ввод будет осуществлен с клавиатуры, а вывод произойдет на экран дисплея компьютера. Например вместо вышеприведенного имени будем вводить:

Program sigma;

Изменяться будут только символы имени программы.

Раздел описаний

Данный раздел состоит из последовательного изложения вышеперечисленных описателей.

Описание меток

Если метки в программе отсутствуют, то и данный раздел в программе отсутствует.

Под меткой понимается целое число, стоящее перед каким-либо оператором и отделенное от него двоеточием. В этом случае в каком-либо участке программы можно сослаться на помеченный оператор с помощью операторов перехода (Goto и Case).

Интервал выбора для меток должен находиться в пределах: 1 9999.

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

Например:

Label_3,5,10,15,130,275;

или Label

3,5,10,15,130,275; и т.д.

Следует отметить, что метки в программе на языке PASCAL используются редко, так как язык PASCAL имеет мощные операторные средства.

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

За разделом меток может следовать раздел описания констант, который начинается со слова const. Из вышеизложенного известно, что константы на языке PASCAL могут быть, как простыми (целыми и вещественными), так и именованными. В этом случае в разделе констант этим именам должны быть присвоены некоторые значения, т.е. сразу после слова const необходимо осуществить присвоение.

Например:

Const

Max=1000;

Zet=3.929;

X=1,2E-3;

Следует отметить, что в отличие от оператора присваивания (см. ниже) здесь перед символом «=» символа <<:>> не должно быть.

Описание типов

Здесь рассмотрим такие простые или порядковые типы данных как: перечисляемые и типдапазон.

Перечисляемые типы

Выше было отмечено что любое данное характеризуются своими стандартными типами данных.

В языке Turbo Pascal предусмотрен механизм создания новых типов даны, благодаря чему общее количество типов, используемых в программе, может быть сколь угодно большим

Такие нестандартные типы называются перечисляемыми типами.

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

Например :

Type

day = (sat, sun, mon, thi); Zet =(crasn, see, sin);

К сожалению в Turbo Pascal нельзя использовать кириллицу в идентификаторах значений.

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

В последним случае должна использоваться например такая связка:

Type

mas = array [1..9]_of_real; {описание типа

массива} var

a: mas; {выделение памяти для массива} Другими словами, массив а имеет нестандартный

тип mas.

Тип - диапазон

Turbo Pascal также предоставляет возможность определять собственные типы данных, относящиеся как и предыдущие перечисляемые к нестандартным типам. При этом диапазон охватывает некоторое подмножество значений определенного порядкового типа (целые, логические, символьные и перечисляемые), который в данном случае будет теперь называться базовым типом. Иными словами, диапазон определяет интервал(границы – min и max) значений , допустимых для порядковой переменной; это дает возможность Turbo Pascal выявлять случаи, когда переменным присваиваются значения, лишенные смысла в программируемой задаче.

Для того, чтобы определить (объявить) типдиапозон, также как и любой иной новый (нестандартный) тип данных, необходимо ввести соответствующее описание (описатель), начинающийся с зарезервированного слова type. Следующий пример иллюстрирует объявление двух типовдиапазонов, а также переменных этих типов (после var):

Type

Letter = ‗A‘..‘Z‘;

DaysLnMonth = 1..31; Var

NextChar:Letter; {NextChar – прописная буква} InDay:DaysInMonth; {InDay – целое <=31}

Первый тип – диапазон Letter, использует в качестве базового тип Char, поэтому значение, соответствующее любому символу от ‗A‘ до ‗Z‘ включительно, может быть присвоено переменной типа Letter(NextChar). Компьютер может отображать сообщение об ошибке и прекратить выполнение программы, если попытаться в программе присвоить переменной типа Letter значение, соответствующее какому-либо иному символу.

Например, если

NextChar:=‘a‘,

то данный оператор присваивания станет причиной ошибки компиляции, поскольку ‗a‘ – это значение не принадлежащее типу Letter.

Второй выше объявленных типов – диапазонов, DaysInMoth. в качестве базового использует тип Integer.

Например, переменная типа DaysInMoth предназначена для содержания числа, соответствующего дню месяца – целочисленного значения от 1 до 31 включительно.

Таким образом, например, оператор

Readln(InDay)

позволит ввести с клавиатуры некоторое значение(число) и присвоит его значение переменой

InDay, принадлежащей типу DaysInMonth.

Базовый тип для типа – диапазона определяются двумя значениями (min и max), которые задают диапазон. При этом порядковый номер первого значения должен быть меньше или равен порядковому номеру второго значения.

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

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

Если программа попытается присвоить переменной, принадлежащей тип-диапозону, слишком маленькое или слишком большое значение(меньшее min

ибольшее max), будет зафиксирована ошибка Range check error(ошибка проверка диапазона). То же самое произойдет, если переменной, принадлежащий типудиапазону, будет присвоена неподходящая константа. В этом случае TurboPascal при компиляции программы отобразит сообщение о синтаксической ошибке Constant out of range (константа не принадлежит диапазону).

Таким образом, использование в программах ряда переменных тип-диапозона позволяет программистам, когда нужно, «заставлять» компьютер прекращать выполнение программы с выдачей соответствующих сообщений об ошибке (в аналогичных случаях – без типов-диапазонов никаких сообщений не будет, а результат будет ошибочным). Кроме того, использование типов-диазонов делают программу понятнее, т.к. они ясно указывают, для каких переменных допустимы ограниченные интервалы значений.

Взаключение отметим, сто в TurboPascal необязательно тип-диапазон описывать в разделе Type, а можно его указывать непосредственно при объявлении переменной например:

Var

Date: 1...31; month:1…12; Ichr:‘A‘…‘Z‘;

Строковой тип

Обособленно от других типов строковый тип string(см.рис.4.3.). Тип string(строка) в языке TurboPascal широко используется для обработки текстов. Например, часто возникает необходимость вставить один или несколько символов в имеющуюся строку, удалить или заменить часть строки, осуществить поиск подстроки или объединить две строки, создав при этом одну длинную строку. Строковой тип во многом похож на одномерный массив символьный Array 0..N _of_char, однако, в отличие от последнего, количество символов в строке – переменной может меняется от 0 до N, где N максимальное количество символов в строке.

Значение N определяется объявлением типа String(N) и может быть любой константой порядкового типа, но не больше 255. TurboPascal разрешает не указывать N, в этом случае длина строки по умолчанию принимается максимально возможной – 255.

Описание переменных строкового типа можно осуществить в два этапа, например:

Const

Capacity = co; Type

StringType = String(Capacity);