Материал: Паскаль. типы данных, операторы. методические указания для самостоятельной работы по дисциплине «Информатика». Кононов А.Д., Кононов А.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Контрольные вопросы и упражнения

1.Можно ли выполнять операцию вещественного деления ( / ) над переменными целого типа?

2.Какого типа будет результат деления 15 на 4?

3.Чему равно ODD(15) и ODD(24)?

4.Чему равно SUCC(137) и PRED(26)?

5.Какие из приведенных записей вещественных чисел являются неправильными и почему?

а) 7.

б) - 6.1

в) 0.0

г) 9

д) .0Е-2

е) 0.1Е-5

ж) -5.3Е4 з) +2.3Е+3

и) -71

к)0.31

л) А56

м) 2,1

6. Чему равно?

 

 

 

 

 

а) trunс (5.61)

 

б) trunc (-5.61)

 

 

в) round (17.16)

 

г) round (17.96)

 

 

д) round(-17.16)

 

e) round (-17.96)

 

 

ж) round (16.5)

 

з) round(-16,5)

 

7. Какие из приведенных записей являются неправильными и почему?

a) odd (17.1) в) cos (5) д) succ (3.2)

б) cos(32.1) г) sin 0.2 е) pred (7)

8. Чему равно?

 

а) ord (chr (59))

б) chr (ord (‘ * ’))

в) pred (‘ B ‘)

г) succ (‘ B ‘)

9. Какие операции определены над переменными булевского типа?

1.3. Перечисляемый и ограниченный типы данных

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

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

4

При этом каждый объект есть имя. Числа, логические и символьные константы не могут являться объектами перечисляемого типа.

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

type day = (mo, tu, we, th, fr, sa, su); var d1,d2,d3 : day;

означает, что переменные d1, d2, d3 типа day при выполнении программы могут принимать только одно из семи указанных значений. Объект, указанный в списке, может присутствовать не более, чем в одном описании. Например, описание

type t1= (one, two, three, four); type t2 = (four, five, six);

неправильно, эти два задания типов несовместимы, так как four встречается в обоих типах.

Имена объектов, указанных в описании перечисляемого типа, являются константами этого типа. Поэтому, имея описания

type name = (John, Tom, Nick, Ann, Jane ); type color = (red, blue, black);

var x, y, z : name; c1, c2, c3 :color;

можно записать следующие операторы присваивания: c1:= blue; x:= Ann; y:= Tom; c2:= red;

Нельзя присвоить переменной значение из описания другого типа, например, недопустимы присваивания

z:= black; c3:= Tom;

Для перечисляемого типа данных существенен порядок указанных объектов. К данным перечисляемого типа применимы операции отношения. Например, из предыдущего описания и примеров операторов присваивания следует, что выражения

x>John , c2<c1, y<x

имеют значение true.

Для объектов перечисляемых типов определены системные стандартные функции pred, succ и ord, имеющие тот же смысл, что и для стандартных скалярных типов. Например, для типа color результатом функции succ (red) является значение blue, результатом функции pred (black) – blue. Функция ord (blue) выработает значение, равное единице, так как нумерация объектов в списке начинается с нуля.

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

5

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

Type day = (mo, tu, we, th, fr, sa, su); nom = 10 .. 25;

sss = ‘c’ .. ‘x’; wd = sa .. su;

для ограниченного типа nom базовым является целый тип, для sss – символьный, для wd – определенный ранее перечисляемый тип day. Сначала указывается нижняя граница, потом верхняя (при этом нижняя граница не должна быть больше верхней). Попытка присвоить переменной ограниченного типа значение, не входящее в заданный диапазон, будет диагностирована как ошибка.

К переменным ограниченного типа применимы все операции и стандартные функции, которые допустимы при работе с переменными соответствующего базового скалярного (порядкового) типа.

Контрольные вопросы и упражнения

1.Описать переменную i как переменную ограниченного типа, принимающую целочисленные значения от 20 до 35.

2.Можно ли задать переменную ограниченного типа, принимающую вещественные значения на отрезке [2; 5]?

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

4.Указать ошибки в следующих описаниях:

const a = 2 .. 30; b:= ‘b’, pi = 3,14159; type length = (1 .. 20);

town = (Моsсow; Тоmsc; Оmsc; Voronezh); letter =(‘a’, ‘b’, ‘c’, ‘d’);

nom =(0,1,2,3,4,5,6,7,8,9).

5. Можно ли в разделе типов описать одновременно два следующих перечисляемых типа

type pencil = (blue, red, green);

6

color = (jellow, blue, black)?

6. Имеются следующие описания:

type figure = (circle, square, triangle); var x,t : figure; z,y : (basket, bag, portfolio).

Какие из перечисленных операторов присваивания неправильно записаны и почему?

а)

х:= circle;

б) z:= square;

в)

t:= x;

г) y:= ord(z) + 1.

7. Правильно ли описаны следующие переменные:

var text : (summer, autumn, winter, spring); text1: summer .. winter;

text2 : spring .. autumn; text3 : winter .. winter.

8. Найти ошибки в следующей программе:

program error;

type month = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec); autumn = sep .. nov;

var m : autumn; d: ‘0’ .. ‘9’; k: 0 .. 9; begin

read(m, d, k);

if m>sep then d:=k else k:=ord(m) – 8; writeln( k, d + k)

end.

Объяснить, какие правила языка Паскаль нарушены.

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

10.Каким базовым скалярным типам соответствуют типы, опи-

санные ниже? Какие операции и стандартные функции определены для переменных этих типов?

type computer = (ENIAC, Mir, Iskra, Elektronika, СM4, IBM); var x,y : ENIAC .. Iskra; i : 3 .. 9.

7

2.ПРОСТЫЕ ОПЕРАТОРЫ

2.1.Выражения и оператор присваивания

Значение выражения вычисляется с учетом расставленных скобок и старшинства операций (уровней приоритета):

1)вычисление значений функций;

2)NOT;

3)* , / , MOD, DIV, AND;

4)+ , - , OR;

5)< ,<= , > , >= , <> , = .

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

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

 

 

(ter – ln(x) > 2.5 * kl) and ( ord(s) < ni),

у которого типы входящих переменных определены как

 

 

ni, kl : integer; ter,x :real; s :char;

следует последовательно определить:

1) a1

= ln(x)

тип real;

2) a2

= 2,5 * kl

тип real;

3) a3

= ter – a1

тип real;

4) a4

= a3 > a2

тип boolean;

5) a5

= ord(s)

тип integer;

6) a6

= a5 < ni

тип boolean;

7) a4 and a6

тип boolean.

Присваивание - это операция придания переменной ее значения. Общий вид оператора присваивания

V := A;

где V – имя переменной, А – выражение, := – операция присваивания (неделимый символ).

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

8