Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика.pdf
Скачиваний:
305
Добавлен:
02.03.2016
Размер:
600.39 Кб
Скачать

Оператор выполняется следующим образом. Сначала вычисляется значение выражения, стоящего после служебного слово case. Затем оно последовательно сравнивается с константами, и выполняется тот оператор, одна из констант которого равна текущему значению выражения. После окончания выполнения выбранного оператора управление передается в конец оператора case Если константы, значение которой совпадает со значением выражения нет, то в случае полного оператора варианта выполняется оператор после служебного слова else, неполного — выполняется оператор после служебного слова еnd.

6.4. Структура программы на языке Паскаль

Программа на языке Паскаль состоит из заголовка, раздела указания используемых модулей (предложение uses), раздела описаний и раздела операторов.

Заголовок программы имеет вид:

program <идентификатор>;

где program — служебное слово, <идентификатор> — имя программы, задаваемое пользователем; желательно его выбирать таким образом, чтобы оно отражало главную функцию, выполняемую программой.

Заголовок программы отделяется от остального текста ; (точкой с запятой). Заголовок программы не обязателен и используется в декоративных целях.

Раздел указания используемых модулей начинается со служебного слова uses и имеет вид:

uses <список идентификаторов>;

Он предназначен для подключения стандартных модулей Турбо Паскаля (кроме модуля System) или модулей пользователя. Данный раздел в программе необязателен.

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

описаний меток (label),

описание констант (const),

описание типов (type),

описание переменных (var),

описание процедур (procedure) и функций (function).

Вскобках указаны служебные слова, с которых начинаются соответствующие разделы. Разделы описаний отделяются друг от друга ; (точкой с запятой).

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

Раздел операторов начинается со служебного слова begin. Операторы в теле программы разделяются ; (точкой с запятой). На одной строке можно рас-

64

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

Кроме описанных выше основных разделов, программа может содержать раздел глобальных директив компилятора вида {$ ...}. Этот раздел располагается после заголовка программы.

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

{Определение площади круга и длины окружности}

program skr;

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

uses crt ;

{Раздел указания используемых модулей}

const pi = 3.14159 ;

{Раздел описания констант}

var r, с, s : real

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

begin

 

clrcsr ;

write ( 'Введите радиус круга в см – ' ) ; readln ( r ) ;

c := 2 * p i* r ;

{длина окружности}

{Раздел }

s: = pi * r * r ;

{площадь круга}

{операторов}

writeln ( ' Площадь круга равна ' , s : 6 : 2 , ' кв.см ' ) ; writeln ( ' Длина окружности равна ' , c : 6 : 2 , ' см ' ) ;

end.

6.5. Процедуры и функции

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

Современный подход к разработке программ предлагает оформление в виде подпрограммы любого достаточно самостоятельного и законченного фрагмента программы.

В языке Паскаль имеется два вида подпрограмм: процедуры и функции. Структура подпрограмм в Паскале совпадает со структурой программ и

состоит из заголовка, раздела описаний и раздела операторов.

Заголовок процедуры имеет вид:

procedure <имя процедуры> (<список формальных параметров> : <тип> ; <список формальных параметров> : <тип> ;

...

<список формальных параметров> : <тип> ) ; В качестве формальных параметров используются параметры-значения,

параметры-переменные (перед ними ставится служебное слово var), парамет- ры-процедуры (перед ними должно стоять служебное слово procedure), пара- метры-функции (перед ними указывается служебное слово function).

65

Процедура может не содержать параметров. В этом случае ее заголовок имеет вид:

procedure <имя процедуры>;.

Заголовок функции имеет вид:

function <имя функции> (<список формальных параметров> : <тип> ; <список формальных параметров> : <тип> ;

...

<список формальных параметров> : <тип> ) : <тип> ; Он отличается от заголовка процедуры тем, что после закрывающейся круглой скобки указывается тип переменной — имя функции. Отличие от процедуры состоит также в том, что в исполнительной части функции обязательно

должен присутствовать оператор присваивания типа: <имя функции> := <выражение>;.

В разделе описаний процедуры или функции описываются переменные, константы, типы и т.д., которые используются только в данной процедуре. Они называются локальными.

Раздел операторов подпрограммы, также, как и раздел операторов программы, начинается со служебного слова begin и заканчивается служебным словом end, только в конце за служебным словом end ставится точка с запятой.

Процедура или функция вызывается главной программой или другой процедурой или функцией. При этом задаются значения параметров, которые используются в процедуре (функции). Эти параметры называются фактическими.

Оператор вызова и выполнения процедуры имеет вид:

<имя процедуры> (<список фактических параметров>); Количество фактических параметров и их порядок должны соответство-

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

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

<имя переменной> := <имя функции> (<список фактических параметров>); Пример.

Рассмотрим процедуру, вычисляющую значение n! (n! = 1×2× ... ×n).

procedure fact1 (n : integer; var y : integer) ; var i : integer ;

begin

y := 1 ;

for i := 1 to n do y := y * i ;

end ;

66