Контрольные вопросы и упражнения
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
| 05_Холера |
| 10.4. Исследование регистров |
| 1112 |
| 12 |
| 1285 |
| 1560 |
| 1568 |
| 1604248853606027 |
| 1673 |
| 17 |