Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль-конспект ИНФОРМАТИКА.doc
Скачиваний:
59
Добавлен:
09.04.2015
Размер:
639.49 Кб
Скачать

2.4.1. Символьные строковые константы

Символьные строки - последовательность любого, в том числе и равного нулю количества символов, заключенных в апострофы. Символы - из набора ASCII.

‘Номер’ , ‘Summa’ , ‘_ _ ‘ , ‘A+B’

‘Д’’АРТАНЬЯН’ - внутри апостроф - двойной

ConstC1 = ‘ ‘;

C2 = ‘РЕЗУЛЬТАТ’;

К строкам применимы операции отношения. Результат: TrueилиFalse, сравнение происходит посимвольно слева направо .

‘ABC’>=’ACB’результатFalse, т.к. ‘B’<’C’

Переменной нельзя присвоить значение строки!!! Ограничение - максимальный размер строки, воспринимаемый компилятором, - не более 126 символов. Строка, состоящая из одного символа, называется символьной константой. Если между апострофами нет ни одного символа, то такая строка называется пустой (см. далее раздел «Регулярные типы»).

Для включения в строку символов, не имеющих физического изображения, используется их ASCII-код с символом # перед ним,например, A= ‘#31’ - это- управляющий символ.

Задания

1. Можно ли выполнить / (деление) над переменными целого типа?

2. Определить:Odd(15)Odd(26)Succ(137)Pred(26)

3. Найти ошибки в записи вещественных чисел.

4. .0Е – 2 - 71 - 6.1 0.1Е – 5 А56 2.1

5. Вычислить:Trunc(5.61) Round(17.16) Round(- 17.16)

6. Что не правильно?

Odd(17.1)Cos(32.1)Cos(5)Sin(0.2)Succ(3.2)Pred(7)

7. Найти:

Ord(chr(49)) = 49 Chr(ord(‘+’)) = +

Pred(‘B’) = ‘A’ Succ(‘B’) = ‘C’

8. Вычислить при A= 2,B= 3,C= 4,M= 5,X= 6,E=True

а) (A+B)/C*M = (2+3)/4*5 =

б) 2+X*X/(X+(A+B)/5) = 2+6*6/(6+(2+3)/5) = 2+36/7 =

в) (A<B) and (X+A-<B) or (C<M) or E =

9. Записать:

а) Aне принадлежит отрезку [0;3]

б) Aпринадлежит отрезку [- 2,0]

в) Aпринадлежит промежуткам [- 5,- 4] или [0,2) или (3.2,7]

3. Нестандартные простые типы (определяемые пользователем)

Мы установили, что тип данных задает набор значений, которые могут принимать данные. Например,. данные целого типа могут принимать значения целых чисел. от -32768 до 32767, данные логического типа - значенияTrueиFalse. Задание типа данных устанавливает и ограниченный набор операций, которые могут выполняться над этими данными. Например, над данными вещественного типа можно выполнять операции +, - , * , / , но нельзя производить операцииDivиMod, которые предназначены для данных целого типа.

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

3.1. Перечисляемый тип

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

Пример. Type Colour = (Red , Orange , Green) ;

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

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

Язык Паскаль представляет программисту широкие возможности для задания дополнительных типов, характеристики которых программист может определить самостоятельно. Новые типы описываются в специальном разделе типов или определяются непосредственно при описании переменных.

Описание перечисляемого типа имеет вид:

TypeИмя типа = (Список констант);

Var: Имя переменной: имя типа;

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

В общем виде:

Type T = (A1, A2,...,An);

Пример. Type Year = (Winter , Spring , Summer , Autumn);

VarA:Year;

Здесь Year- имя перечисляемого типа:

Зима, Весна, Лето, Осень - константы;

A- переменная, которая может принимать значение любой из констант.

Объект, указанный в списке ,может присутствовать только в одном описании.

Пример. Type T1 = (One , two , three);

T2 = (Tree,four,five);

Эти два задания типов несовместимы.

Имена объектов, указанных в описании перечисленного типа, являются константами этого типа. В языке Паскаль допускается указывать константы перечислимого типа непосредственно в разделе переменных без использования раздела Type.

Пример. Var A: (Winter , Sprihg , Summer , Autumn);

Но лучше использовать описание данных с использованием раздела Type.

Нельзя присваивать переменной одного типа значения из имени другого типа.

Пример .

Type Name =(Jon , Tom , Nick) ;

Color =(Red , Blue , Black);

Var X , Y , Z : Name ;

C1 ,C2 :Color;

Каждая из констант имеет порядковый номер, счет начинается с нуля. Упорядоченность констант позволяет применять к ним операции отношения (сравнения): < ,<= ,= , <>, >, >=.Результат операции будет логического типа (Type,False).Winter<Spring<Summer<Autumn(Зима < Весна< Лето< Осень)

Свойства перечисляемого типа:

1) Ai<>Aj, еслиi><j(различимость).

2) Ai<Aj, еслиi<j(упорядоченность).

3) Значениями типа Т могут быть только А1, А2, ... Аn.

Упорядоченность определяется той последовательностью, в которой перечислены константные идентификаторы. Наличие упорядоченности позволяет применить стандартные функции:

Ord(x) - нахождение порядкового номера,

Pred(x) - нахождение предыдущего элемента,

Succ(x) - нахождение последующего элемента.

Succ(Ai) =Ai+1 дляi= 1,2,...n-1 - последующий член .

Pred(Ai) =Ai- 1 дляi= 1,2,3...n- предыдущий член .

Ord(Ai) =i-1 - функция определения порядкового номера Аi. Нумерация условно начинается с нуля.

Пример.

Имеется перечень зверей: лиса, волк, заяц, зубр, тигр, лев, медведь, косуля, олень, барс. Определить порядковый номер тигра (N1) и порядковый № зверя после косули (N2)

Program Zver;

Type Zver = (lisa,volk,zaiac,zubr,tigr,lev,medved,kosulia,olen,bars);

Var P1,P2: Zver;

N1,N2 : Integer;

Begin

P1 : = tigr;

P2 : = Succ (kosulia);

N1 : = Ord(P1)+1;

N2 : = Ord(P2)+1;

Writeln (‘N1 = ‘, N1:2);

writeln (‘N2 = ‘, N2 : 2);

End.

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

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

ProgramDen;

Type Week = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Var Day: Week;

Begin

For Day : = Monday To Sunday Do

If (Day : = (Wednesday) Or (Day = Friday)

Then Writeln (‘Study’)

Else If (Day : = (Saturday) Or (Day = Sunday)

Then Writeln (‘Nothing’)

else Writeln (‘Work’)

End.

Результат будет такой: Work

Work

Study

Work

Study

Nothing

Nothing

В языке Paskal нельзя вводить и выводить данные перечислимого типа с помощью операторов Read и Write.