Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции ИВАНОВ Книга Паскаль.doc
Скачиваний:
5
Добавлен:
18.11.2019
Размер:
1.93 Mб
Скачать

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

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

Формат:

type <имя типа>=(<значение 1>,<значение 2>,..,<значение n>);

var <имя переменной > : <имя типа>;

Пример:

type Nedelia = ( PN, VT, SR, CHET, PT, SB, VS);

var RbDay, VhDay: Nedelia;

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

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

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

Интервальный тип

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

Объявление интервального типа происходит следующим образом:

Формат:

type <имя типа> = <константа1>..< константа2>;

var <имя переменной > : <имя типа>;

Пример:

type Chahmat = ‘A’..’H’;

var Igra: Chahmat;

Благодаря диапазонным типам появляется возможность экономить память и проводить во время выполнения программы контроль присваиваний.

  1. Раздел описания процедур и функций

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

Именно в разделе описания процедур и функций размещаются тела подпрограмм.

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

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

Процедурой называется часть программы, предназначенная для решения определенной задачи или подзадачи. Для описания процедуры используется зарезервированное слово procedure.

Объявление процедуры:

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

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

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

end;

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

Например: Procedure Summa (a, b: real; n: integer);

Подпрограмма-функция предназначена для вычисления какого-либо параметра. Структура функции такая же как и у процедуры. Для описания функции используется зарезервированное слово function.

Объявление функции:

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

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

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

end;

Например: Function Summa (a, b: real): real;

2.5.4 Блок операторов

В программе на Паскале этот блок является самым основным, т.к. именно здесь с предварительно описанными величинами выполняются действия, позволяющие получить результат, ради которого составлялась вся программа. Раздел операторов начинается зарезервированным словом BEGIN затем следуют операторы, отделенные друг от друга точкой с запятой завершает раздел зарезервированное слово END с точкой. Слова BEGIN и END – аналог открывающей и закрывающей скобок в арифметических выражениях.

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

Формат:

BEGIN

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

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

…...…………;

<оператор n>;

END.

Необходимо обратить внимание на наличие точки после служебного слова END. После последнего оператора END всегда ставится точка, что означает окончание текста программы.

КОММЕНТАРИИ

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

Комментарии можно записать в любом месте программы, где разрешен пробел. Кроме фигурных скобок { }, могут использоваться также пары символов (* и *) слева и справа от комментария соответственно.

Текст комментария может содержать любые комбинации латинских и русских букв, цифр и других символов алфавита. Ограничений на длину нет, он может занимать несколько строк. В ограничителях (* и *) пробелы запрещены между звездочкой и скобкой. Ограничители { }, (* *) удобно использовать при отладке программы, т.к. с их помощью можно временно исключить выполнение какой-либо части программы.

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

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

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

uses список модулей;

label метки;

const объявление констант;

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

var объявление переменных;

procedure имя;

function имя;

BEGIN

тело программы (операторы)

END.

Контрольные вопросы

  1. Укажите буквы, символы, составные символы:

Y, !, ^, 1, *, <=, S, д, +

  1. Что в списке можно рассматривать как идентификаторы:

Summa, 25_dney, GOD_R, 453, Курс, Nomer.GR

  1. Сколько в списке зарезервированных слов:

begin, read, cos, then, summa, произведение

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

  • если в программе используются выражения?

  • если в вычислениях какой-либо операнд постоянно меняет свое значение?

  • если в программе используется какое-то число?

  1. Для чего используется указание типа данных величины?

  2. Какие типы данных относятся к скалярным?

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

  4. Какие результаты выполнения выражений неправильны:

12/3=4 ?

12 div 3 = 3 ?

15 +21 mod 7 = 18 ?

2 div 3 =1 ?

  1. Какие стандартные функции определены для целых чисел?

  2. Если необходимы вещественные числа из диапазона [a, b], каким образом применить функцию random?

  3. Чем отличаются вещественные числа от целых?

  4. Какие из следующих соотношений неправильны:

6.17Е+03 =617 ?

0.12Е05=12000 ?

14Е-02=0.14 ?

1200Е+03 = 12000.0 ?

  1. Где применяется булевский тип данных?

  2. Чему равен результат выражения:

61>91

10>-7

208>175

  1. Какой тип подходит для данного диапазона :

6 . . 90

-40 . . 45

10 . . 65000

100,0 . . 10000,0

    1. Определить тип выражения :

1+0.0

sqrt(16)

20/4

sin(0)

sqr(4)

trunc(-3.14)

      1. Если y – вещественная переменная, а n – целая, то какие из следующих операторов присваивания правильны, а какие – нет:

y:=n+1;

n:=y-1;

n:=4.0;

y:=trunc(y);

y:= n div 2;

y:= y div 2;

n:= n/2;

n:= sqr(sqrt(n));

      1. Какие результаты выполнения выражения неправильны :

Not (22<12) = False ?

(12<45) or (24>100)= True ?

(23<17) and (40>213) = True ?

47>>14 = True ?

  1. Что такое выражение, операнд, операция ? Какие операции в языке Паскаль вы знаете?

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

10+6*2/2

(10+6)*2/2

(10+6*2)/2

10+6*(2/2)

  1. Какая структура программы правильна:

Program MyProg;

Program MyFirst;

begin

begin

Writeln(‘ Привет ‘);

X:=Y+100;

end.

end.

  1. Какой из перечисленных разделов обязателен в программе: