Умножение, деление, сложение, вычитание вещественных чисел в Pascal.

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

Ветвления в Pascal.

Ветвления в Паскаль позволяют выполнять действия не поочередно, как мы делали в предыдущих программах, а в зависимости от каких - либо условий. Для этого в языке программирования Pascal предусмотрены различные условные операторы. В данном уроке мы ...

Ввод логических переменных с клавиатуры.

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

Циклы и массивы

Программирование циклов. Оператор безусловного перехода.

Цикл — это последовательность операторов, которая может выполняться более одного раза. В языке Паскаль разработано три механизма для конструирования циклов, использующих операторы FOR, WHILE, REPEAT.

...

ЗАПИСИ. ТИП ДАННЫХ RECORD.

В описании данных и связей между ними используют понятия: запись логическая и запись физическая. Физическое описание данных определяет способ их хранения во внешней памяти ЭВМ. Логическое описание ...

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

Паскаль позволяет программисту определять, конструировать новые пользовательские типы данных. В таблице 20 приведена классификация типов данных, используемых в языке Паскаль. Различают две большие группы данных: простые типы данных и структурированные (сложные). Простые типы являются основой (базой) для определения сложных типов. Типов данных в Паскале очень много, поэтому ограничим наш кругозор ниже приведенной классификацией. Если учесть тот факт, что Паскаль разрешает создавать такие структурированные типы как массив строк, массив записей, массив множеств, массив массивов, или запись, элементами которой являются массивы, записи, множества и т. д., то общее количество определяемых программистом типов будет сколь угодно велико.

programmirovanie dannihkh

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


 Конструирование простых пользовательских типов.


Данные простого типа (константы, переменные, выражения) имеют только одно значение, поэтому этот тип часто называют скалярным. К стандартным скалярным типам относятся следующие наиболее известные и часто употребляемые типы: REAL, INTEGER, BOOLEAN, CHAR. Последние три типа содержат ограниченное число значений, поэтому их называют стандартными перечисляемыми типами. Вещественные типы данных, в том числе и REAL, к перечисляемым типам не относятся. Пользователь на базе стандартных перечисляемых типов может создать свои пользовательские типы. Различают два простых пользовательских типа данных: пользовательские перечисляемые типы и интервальные (иногда говорят ограниченные) типы данных.


 Пользовательские перечисляемые типы.


Пользователь может конструировать новые скалярные перечисляемые типы, явно описываемые в разделе TYPE:
TYPE <имя типа> = (значение 1, значение 2,..., значение N);
При этом понимают, что «значение i» — это идентификатор элемента с номером i.
Допускается неявное определение перечисляемого типа непосредственно в разделе VAR:
VAR <список переменных> : (значение 1, значение 2,значение N);
Пример явного задания перечисляемых типов пользователя:
TYPE    G = (С, О, N, F);
VAR    Gl, G2: G;
Данные указанных типов можно использовать в операторах FOR и CASE, в функциях SUCC, PRED и ORD. К сожалению, в стандартных процедурах READ, READLN, WRITE, WRITELN эти данные не поддерживаются. Наиболее часто данные пользовательских перечисляемых типов используются при конструировании сложных типов данных (индексы массивов, указателей и т.д.).


 Пример 27. Для заданного года вычислить количество дней.

PROGRAM PR27;
TYPE MONTH - (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT,NOV, DEC); {Пользовательский перечисляемый тип данных}
VAR
S, YEAR: INTEGER;
MEC: MONTH;
BEGIN
    WRITELN ('ВВЕДИТЕ ГОД');
    READ (YEAR);
    S := 0;
   FOR MEC := JAN TO DEC     { Просмотр всех месяцев по порядку }
   DO CASE MEC OF
       APR, JUN, SEP, NOV: S := S+30; { Список месяцев, содержащих 30 дней}
       FEB: IF (YEAR MOD 4 = 0) AND (YEAR MOD 100 <> 0) OR (YEAR MOD 400 = 0)
                 THEN S := S+29    {Апрель, високосный год}
                 ELSE {IF } S := S+28;        { Апрель, не високосный год }
                 ELSE {CASE}S:=S+31
          END; {CASE}
   WRITELN ('ЧИСЛО ДНЕЙ:', S)
END.


Перечисляемые типы характеризуются упорядоченностью значений (элементов) этого типа. Существует порядковый номер для каждого идентификатора. Первый в списке идентификатор имеет номер 0, второй 1 и т.д. Исключение составляет тип INTEGER, где номер совпадает с числом. В пользовательском перечисляемом типе номера присваиваются в порядке перечисления идентификаторов при определении типа слева – направо, сверху – вниз. Оператор FOR осуществляет последовательный перебор значений порядковых элементов в соответствии с их упорядоченностью.
На перечисляемых типах данных (стандартных и пользовательских) определены встроенные функции SUCC, PRED, ORD (таблица 11).
Все идентификаторы перечисляемых типов упорядочены по номерам. Примеры:
JAN < FEB < MAR < ... < DEC,    (тип пользователя – MONTH);
FALSE < TRUE,    (тип – BOOLEAN);
-32768 < -32767 < ... < 32767,    (тип – INTEGER);
'a' < 'b' < 'c' < ... < 'z',    (тип – CHAR).
Допустимо использовать отношения <, >, =, <>, <=, >= для сравнения переменных, выражений или констант одного перечисляемого типа. Примеры: 'а' < 'b' — имеет значение TRUE;
MAR > DEC — имеет значение FALSE.


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


Для переменных порядкового типа можно создавать интервальный (ограниченный) тип, используя свойство упорядоченности его значений (элементов). Определение интервального типа:
TYPE <Имя типа> = <Левая граница> .. <Правая граница>;
Левая и правая границы представляют собой константы или идентификаторы значений базового типа и задают порядковые номера элементов, ограничивающие диапазон значений переменных создаваемого интервального типа.
Примеры задания интервальных типов:
TYPE
DAY = (SU, МО, TU, WE, ТН, FR, SA);
WORK_DAY = МО .. FR;    { Интервальный пользовательский тип}
YEAR = 1900.. 2000;    { Интервальные типы}
LAT_ALFABETH = 'А'.. 'Z';    {Стандартные типы}
Над переменными интервального типа допускаются все операции и функции, которые используются на базовом для него порядковом типе.


 Особенности программирования скалярных типов пользователя.


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

  • Явное задание пользовательских типов

TYPE_DAY = (SU, МО, TU, WE, ТН, FR, SA);
YEAR= 1900 .. 2000;
NUMERIC = '0'.. '9';
VAR Dl, D2 : DAY; G: YEAR; INTG: NUMERIC;

  • Неявное задание тех же типов

VAR
Dl, D2 : (SU, МО, TU, WE, ТН, FR, SA);
G: 1900 .. 2000;
INTG: '0' .. '9';
Паскаль не поддерживает операции ввода-вывода значений пользовательских перечисляемых типов.


Предыдущая статья: Вложенные итерационные циклы.
Оглавление: Лекции по Pascal.
Следующая статья: Массивы. Регулярные типы.


Комментарии  

 
+1 # стас 08.04.2014 13:14
:cry:
Ответить
 

Добавить комментарий

Защитный код
Обновить

   ГлавнаяПаскальЛекции по Паскаль