- •Вопросы к экзамену по курсу «Программирование на языке высокого уровня» для потока а-4,6,7,8,9-06
- •Алгоритм и его основные свойства
- •Методы нисходящего и восходящего проектирования
- •Этапы разработки программ. Цикл разработки программного обеспечения
- •Критерии качества программного продукта
- •Виды циклов в языке Паскаль. Итерационные циклы
- •Операторы ветвления if и case Операторы ветвления
- •Условный оператор if
- •Оператор выбора case
- •Иллюстрация if и case
- •Способы структуризации алгоритмов
- •Классификация типов данных в Delphi. Тип Real
- •Порядковые типы. Целые типы в Delphi, тип диапазон
- •Порядковые типы. Символьный тип
- •Логический тип. Логические операторы и операции сравнения
- •Порядковые типы. Перечисляемый тип
- •Тип массив (статический): описание, ввод, вывод
- •Тип запись: описание, ввод, вывод. Оператор With
- •Тип множество: описание, ввод, вывод, операции над множествами
- •Текстовый файл: описание, основные операции. Использование параметров программы для передачи программе имен файлов
- •Назначение и отличия процедур общего вида и функций
- •Описание и вызов процедур
- •Описание и вызов функций
- •Классы формальных параметров: параметры-константы, параметры-значения и параметры переменные. Ключевые слова const, var, out при описании параметров
- •Массивы и записи как формальные параметры процедур и функций
- •Имена процедур и функций как формальные параметры. Процедурный тип
- •Модули в Паскале: назначение, описание, использование. Обязательные и дополнительные разделы
- •Составление функциональных и структурных тестов на примере разработанной процедуры
- •Нисходящее и восходящее тестирование программ
- •Описание констант, переменных и пользовательских типов. Области видимости констант и переменных
- •Описание констант структурированных типов: массивов, записей и множеств
Порядковые типы. Перечисляемый тип
Определить перечисляемый тип — это значит перечислить все значения, которые может принимать переменная, относящаяся к данному типу.
В общем виде объявление перечисляемого типа выглядит так:
Тип =( Значение1, Значение2, ... Значение i)
где:
тип — имя перечисляемого типа данных;
Значение i — символьная константа, определяющая одно из значений, которое может принимать переменная типа Тип.
Примеры:
TDayOfWeek = (MON,TUE,WED,THU,FRI,SAT,SUN);
TColor = (Red,Yellow,Green);
Примечание
Согласно принятому в Delphi соглашению, имена типов должны начинаться с буквы Т (от слова Туре — тип).
После объявления типа можно объявить переменную, относящуюся к этому типу, например:
type
TDayOfWeek = (MON,TUE,WED,THU, FRI,SAT,SUN) ;
var
ThisDay, LastDay: TDayOfWeek;
Помимо указания значений, которые может принимать переменная, описание типа задает, как значения соотносятся друг с другом. Считается, что самый левый элемент списка значений является минимальным, а самый правый — максимальным. Для элементов типа DayOfWeek справедливо:
MON < TUE < WED < THU < FRI < SAT < SUN
Свойство упорядоченности элементов перечисляемого типа позволяет использовать переменные перечисляемого типа в управляющих инструкциях, например, так:
if (Day = SAT) OR (Day = SUN) then
begin
{ действия, если день — суббота или воскресенье }
end;
Приведенную инструкцию можно записать и так:
if Day > FRI then begin
{ действия, если день — суббота или воскресенье }
end;
Тип массив (статический): описание, ввод, вывод
Массивы содержат фиксированное число элементов одного типа, так называемого типа элемента. На приводимой ниже синтаксической диаграмме тип элемента следует за словом of.
В индексных типах, по одному для каждой размерности массива, указывается число элементов. Допустимыми индексными типами являются все порядковые типы, за исключением длинного целого и поддиапазонов длинного целого. Массив может быть проиндексирован по каждой размерности всеми значениями соответствующего индексного типа; число элементов поэтому равно числу значений в каждом индексном типе. Число размерностей не ограничено.
Приведем пример типа массив:
array[1..100] of Real
Если тип элемента в типе массив также является массивом, то результат можно рассматривать как массив массивов или как один многомерный массив. Например,
array[boolean] of array[1..100] of array[Size] of Real
интерпретируется компилятором точно так же, как массив:
array[boolean,1..10,Size] of Real
Ввод:
For i:=1 to 10 do readln(massiv[i]);
Вывод: тоже, но witeln
Тип запись: описание, ввод, вывод. Оператор With
Тип запись содержит установленное число элементов или полей,
которые могут быть различных типов. Описание типа запись указыва-
ет тип каждого поля и идентификатор, который именует поле.
--------- ------
тип запись --->¦ record +--T---------------->¦ end +-->
L--------- ¦ --------- ^ L------
L->¦ список +--
¦ полей ¦
L---------
список -------------
полейT->¦ фиксирован-+-T----------------------------T---------->
¦ ¦ ная часть ¦ ¦ ---- ------------- ^ ¦ ---- ^
¦ L------------- L->¦ ; +--->¦ вариантная +-- L->¦ ; +--
¦ L---- ^ ¦ часть ¦ L----
L--------------------------- L-------------
------------------ ---- ------
фиксированная ---->¦ список +-->¦ : +--->¦ тип +--T-->
часть ^ ¦ идентификаторов ¦ L---- L------ ¦
¦ L------------------ ¦
¦ ¦
¦ ---- ¦
L------------+ ; ¦<-------------------------
L----
Фиксированная часть типа запись содержит список фиксирован-
ных полей вместе с идентификатором и типом для каждого поля. Каж-
дое поле содержит информацию, которая всегда отыскивается одним и
тем же способом.
Приведем пример типа запись:
record
year: integer; { год }
month: 1..12; { месяц }
day: 1..31; { число }
end
В вариантной части, изображенной на синтаксической диаграмме
описания типа запись, память распределяется более чем для одного
списка полей, поэтому доступ к информации может быть осуществлен
более чем одним способом. Каждый список полей является вариантом.
Варианты налагаются друг на друга в памяти, поэтому в любое время
возможен доступ ко всем полям во всех вариантах.
вариантная часть
¦ ----- --------- --- --------
L->¦case+-T------------------->¦тип поля+->¦of+---->¦вариант+-T>
L----- ¦ ^ ¦признака¦ L--- ^ L-------- ¦
¦ -------- ---- ¦ L--------- ¦ ---- ¦
L>¦иденти-+>¦ : +-- L----+ ; ¦<----
¦фикатор¦ L---- L----
L--------
-----------------
тип поля ---->¦ идентификатор +---->
признака ¦порядкового типа¦
L-----------------
---------- ---- ---- ----
вариант ---->¦константа+-T->¦ : +->¦ ( +-T------------->¦ ) +-->
^ L---------- ¦ L---- L---- ¦ ^ L----
¦ ---- ¦ ¦ ¦
L----+ , ¦<----- ¦ ------- ¦
L---- L->¦список+--
¦полей ¦
L-------
Вы можете видеть на диаграмме, что каждый вариант идентифи-
цирован по крайней мере одной константой. Все константы должны
быть отличными друг от друга и иметь порядковый тип, совместимый
с типом поля признака. Доступ к вариантным и фиксированным полям
один и тот же.
В вариантной части можно указать необязательный идентифика-
тор - идентификатор признака поля. При наличии идентификатора
признака поля он становится идентификатором дополнительного фик-
сированного поля записи - поля признака. Программа может исполь-
зовать значение поля признака для указания, какой вариант являет-
ся активным в настоящий момент. Без указания поля признака
программа выбирает вариант по другому критерию.
Ниже приводятся несколько примеров типов запись:
record
firstName,lastName : string[40];
birthDate : Date;
case citizen : boolean of
True : (birthPlace: string[40]);
False : (country : string[20];
entryPort : string[20];
entryDate : Date;
exitDate : Date);
end
record
x,y : real;
case kind : Figure of
rectangle : (height,wigth: real); { прямоугольник }
triangle : (size1,side2,angle: real); { треугольник }
circle : (radius: real); { круг }
end
