Этапы разработки программы. Разработка или выбор алгоритма решения поставленной задачи. Оформление документации на программу, страница 16

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

Однако в ряде случаев этих мер контроля оказывается недостаточно. Например, пусть переменная и в примере представляет текущее число какого-либо месяца. Ясно, что эта переменная должна принимать целочисленное значение. Но если мы ей припишем тип integer, то она вправе принимать любое целочисленное значение. Однако по существу решаемой задачи имеют смысл только такие значения переменной n , которые принадлежат отрезку ( 1,31)

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

Для достижения этих целей служат ограниченные типы ( диапазоны ).

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

В качестве базовых могут использоваться стандартные типы: char, Boolean, integer, перечислимые типы. Тип real   не может фигурировать в качестве базового, т.к. множество значений этого типа в Паскале не являются пронумерованными. Синтаксис ограниченного типа имеет вид:

Type <имя типа> = <конст> .. <конст >

Пример: type INDEX = 0.. 60;

LIT = ‘ A ‘.. ‘Z’;

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

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

Например; встретив в тексте программы условие if b = 5 then невозможно сразу понять о чем здесь идет речь. Если же по смыслу b передает какой – то день, то недели и нужно проверить является ли он пятницей, то гораздо удобнее не прибегать к кодировке, а записать это условие в естественной форме: if b =Friday then …..

Идентификатор    (именованные константы)

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

 


Например:

type day = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

var b : day;

В языке PASCAL имеется только один стандартный перечислимый тип – тип Boolean = (true, false);

Каждая из констант перечислимого типа имеет порядковый номер, счет начинается с 0.

Например:  Monday – 0, Tuesday - 2, Wednesday – 3 ……

Упорядоченность констант перечислимого типа позволяет применять к ним операции сравнения: <,=<,=……..

Также стандартные функции: ord - код, pred - предыдущий, succ - последующий

12.5 Множественный тип данных

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

 


Пример: type mn = set of 1..5;

var  s : mn;

Переменная s может принимать из следующей совокупности целых чисел:

<пусто>           Нужно обратить внимание на следующее обстоятельство: порядок расположения                                            

1,2                    элементов в множестве никак не фиксируется т.е. множество [1,2,3] и [3,2,1] – 

1,2,3                 эквивалентны. Каков должен быть базовый тип множества? Turbo PASCAL

1,5                    допускает в качестве базовых типов для множества дискретные типы не более