Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пользовательские скалярные типы данных

Стандартные типы

Простые (скалярные) типы

 

Порядковые (ординальные) типы:

Натуральные числа (cardinal) стандартный

Целый тип (integer) стандартный

Символьный тип (char) стандартный

Булевский тип (boolean) стандартный

Вещественные числа (real) стандартный

Ссылочный (указательный) стандартный

Перечислимый не стандартный

Ограниченный не стандартный

 

Производные (структурированные) типы

Массив (array)

Строковый (string)

Множества (set)

Записи (record)

Файл (file)

Текст (text)

 

Тип называется стандартным, если его множество значений фиксировано; и пользовательским в противном случае (множество значений определяется пользователем).

 

Абстрактные типы

А также string и text.

 

 

 

Целый тип - integer

Синтаксис значений: обычно [знак ±] последовательность цифр

Семантика: множество значений – все целые числа из некоторого интервала [Low(integer), High(integer)]

Стандартные функции: функция с двумя целыми переменными, которая имеет целые значения:

Двуместные: integer x integer → integer

+, –, *

div (целочисленное деление)

mod (остаток от деления) в арифметических выражениях имеет тот же приоритет, что и умножение

Одноместные: –x обратное

sqr(x) x2

abs(x) |x|

Функции real → integer:

trunс(x) целая часть числа

round(x) округление до ближайшего целого

Функция integer → boolean:

odd(x) нечетность (true – нечётная, false – чётная)

На значениях целого типа определен естественный порядок:

≤ integer x integer → boolean

А также связанные с ним функции:

succ(x) x+1

pred(x) x–1

ord(x) номер значения в заданном порядке

Типы, на которые определено сравнение: предшествующий, последующий, называются порядковыми или ординальными.

 

Вещественный тип

Синтаксис значений:

запись с фиксированной точкой вида: ± целое.целое

запись с плавающей точкой вида: вещественное с плавающей точкой Е целое a•10b

Множество значений:

Рациональные числа из некоторого интервала [Low(real), High(real)]. Все операции над вещественными числами (в отличии от целых) выполняются приближенно с некоторой заданной точностью.

Операции:

Real x Real → Real

+, –, *, / - всегда дают значение real, если хотя бы один из элементов real.

Real → Real

sin(x), cos(x), arctan(x), ln(x), sqr(x), sqrt(x), abs(x), exp(x)

На вещественных числах также определено естественное сравнение

≤ Real x Real → Boolean

но не определены не имеющие смысла на вещественных числах операции последователь и предшественник, то есть тип real не является порядковым (ординальным).

Exp(x)=∑xn/n!

 

 

Перечислимые типы

Синтаксис: (Id1, …, Idn), где Idi – идентификатор.

Множество значений: { Id1, …, Idn}

Операции: любой перечислимый тип считается порядковым.

Id1< Id2<…<Idn

succ(Idi) = Idi+1

pred(Idi+1) = Idi

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

ord(Idi) = i

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

type tcolor=(red,green,blue);

tweek=(mon,tue,wen,th,fri,sat,sun);

trainbow=(red,orange,yellow,green,blue,violet);

Var x:tweek;

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

Задача: выяснить, является ли данный день недели выходным.

Program weekend(input,output);

Type tweek=(mon,tue,wen,th,fri,sat,sun);

Var x:tweek;

b:boolean;

begin

read(x);

b:=false;

if x=sat then b:=true

else if x=sun then b:=true;

write(b)

end.

Ошибка: ввод-вывод пользовательских типов невозможен. Придется применять кодирование, например вводить вместо дней недели их имена и лишь затем определять переменную x.

 

Ограниченный тип

Синтаксис определения типа: c1..c2, где с1, с2 – константы любого порядкового типа.

Множество значений: [c1,c2]

Операции:

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

Var i:1..10;

begin

i:=9; i:=-1;...

ошибка

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

 

Операторы над порядковыми типами

Inc(x) ~ x:=succ(x)

Dec(x) ~ x:=pred(x)

Case c of

Список1: S1;

………………

Списокn: Sn; [else Sn+1]

End

Где С – выражение порядкового типа, называемое селектором, списокi-ый – список констант, либо ограничений (a..b), значений того же типа, что и С.

x:=c; {вычисляется значение выражения С}

«Вернемся к нашим баранам»:

Var n:1..7;

Begin

Read(n);

Case n of

1: x:=mon;

2: x:=tue;

3: x:=wen;

4: x:=th;

5: x:=fri;

6: x:=sat;

else x:=sun

end;

case x of

mon..fri: write(‘Будни’);

sat,sun: write(‘Выходной’);

end;

end.

 

Операторы цикла с параметром

Синтаксис:

For v:=e1 to e2 do s

Где v – переменная конечного порядкового типа, e1, e2 – выражения того же типа, а s – оператор.

Семантика:

Очевидно, что цикл с параметром – частный случай цикла с предусловием. Оператор s не должен изменять значения переменных или счетчика v.

 

Ограниченность применения цикла со счетчиком

Нужно до цикла знать или уметь вычислить количество проходов цикла, что возможно не всегда. Например, вычисление с заданной точностью. Любая хорошая функция разлагается в ряд, то есть значения функции в точке есть некоторая бесконечная сумма. Выяснить, какое количество слагаемых необходимо просуммировать, чтобы обеспечить заданную точность. Трудная задача, поэтому в таких вычислениях суммируют только значимые члены. Складывают члены, |a|>E

Условие окончания цикла выглядит: |ai|<eps

 

<== предыдущая лекция | следующая лекция ==>
Основные операторы | Алгоритмическое определение булевских операций
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 338; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.023 сек.