metod_15.03.04_atppp_oaip_up_2016 (1016600), страница 7
Текст из файла (страница 7)
Вычислить при 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]4.
НЕСТАНДАРТНЫЕ ПРОСТЫЕ ТИПЫ (ОПРЕДЕЛЯЕМЫЕПОЛЬЗОВАТЕЛЕМ)Мы установили, что тип данных задает набор значений, которые могутпринимать данные. Например,. данные целого типа могут принимать значения34целых чисел. от -32768 до 32767, данные логического типа - значения True иFalse. Задание типа данных устанавливает и ограниченный набор операций,которые могут выполняться над этими данными. Например, над даннымивещественного типа можно выполнять операции +, - , * , / , но нельзяпроизводить операции Div и Mod, которые предназначены для данных целоготипа.Типизация данных значительно уменьшает возможность появленияошибок. Если все же ошибки возникают, то компилятор сам их обнаруживает исообщает нам об этом.
Учитывая ценность типизации данных, в языке Паскальпомимо стандартных типов (целого, действительного, логического,символьного) введены и другие типы, нестандартные (определяемыепользователем). Язык Паскаль предоставляет программисту широкиевозможности для задания дополнительных типов, характеристики которыхпрограммист может определить самостоятельно. Новые типы описываются вразделе типов или определяются непосредственно при описании переменных.4.1.
Перечисляемый типОчень часто в программах целое число используется не в качествеарифметической величины, а как указатель некоторого элемента сравнительнонебольшого множества. В таких случаях в описании программы обычноприводится список всех возможных значений вместе с указаниемпредполагаемой интерпретацией каждого значения. Такую величину можнорассматривать как элемент специального типа, который в языке Паскальназывается перечисляемым типом данных. Перечисляемый тип определяетсякак упорядоченный набор идентификаторов, заданный путем их перечисления.Пример. Type Colour = (Red , Orange , Green) ;Перечисляемый тип задается списком значений (объектов), которыемогут принимать переменные этого типа.
При этом каждый объект есть имя.Перечислимый тип задается самим программистом, в зависимости от того,какую задачу он решает.Перечислимый тип состоит из списка констант. Переменные этого типамогут принимать значения любой из этих констант. Числа, логические исимвольные константы не могут являться объектами перечислимых типов.Применение перечислимого типа повышает наглядность программы и даетвозможность автоматически контролировать допустимость значенийпеременных.Язык Паскаль представляет программисту широкие возможности длязадания дополнительных типов, характеристики которых программист можетопределить самостоятельно. Новые типы описываются в специальном разделетипов или определяются непосредственно при описании переменных.Описание перечисляемого типа имеет вид:Type Имя типа = (Список констант);Var : Имя переменной: имя типа;Здесь под константой понимается особый вид констант - констант,задаваемых пользователем.
Под списком понимается перечень констант,разделенных запятыми. Сам список заключается в круглые скобки .35В общем виде:Type T = (A1, A2,...,An);Пример. Type Year = (Winter , Spring , Summer , Autumn);Var A: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.
Нумерацияусловно начинается с нуля.Пример.36Имеется перечень зверей: лиса, волк, заяц, зубр, тигр, лев, медведь, косуля,олень, барс. Определить порядковый номер тигра (N1) и порядковый № зверяпосле косули (N2)Program Zver;Type Zver = (lisa,volk,zaiac,zubr,tigr,lev,medved,kosulia,olen,bars);Var P1,P2: Zver;N1,N2 : Integer;BeginP1 : = tigr;P2 : = Succ (kosulia);N1 : = Ord(P1)+1;N2 : = Ord(P2)+1;Writeln (‘N1 = ‘, N1:2);writeln (‘N2 = ‘, N2 : 2);End.Так как счет перечислимых начинается с нуля, а не с единицы, для вычисленияпорядкового номера необходимо прибавить единицу.Пример. Некто по средам и пятницам учится, в остальные будние дни работает.Составить программу, распечатывающую эти занятия последовательно по днямнедели.Program Den;Type Week = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);Var Day: Week;BeginFor Day : = Monday To Sunday DoIf (Day : = (Wednesday) Or (Day = Friday)Then Writeln (‘Study’)Else If (Day : = (Saturday) Or (Day = Sunday)Then Writeln (‘Nothing’)else Writeln (‘Work’)End.Результат будет такой: WorkWorkStudyWorkStudyNothingNothingВ языке Paskal нельзя вводить и выводить данные перечислимого типа спомощью операторов Read и Write.4.2.
Ограниченный тип (диапазон, интервал)Множество значений простых типов упорядоченно и конечно(разумеется, кроме вещественного типа). Если программисту необходимосузить диапазон значений, принимаемых некоторым объектом скалярного типа,то он осуществляет это в явном виде наложением ограничения на стандартный37или определенный ранее перечислимый тип, который в этом случае называетсябазовым. Если какая-то переменная принимает не все значения своего типа, атолько значения, содержащиеся в некотором ограниченном диапазоне, то ееможно рассматривать как переменную ограниченного типа (иногда говорятинтервальный тип или тип диапазон).Пример.Type Day = (Mo , Tu , We , Th , Fr , Sa , Su);Mom = 10...25Sss = ` C`...`X`;Wd = SA...SU;Для ограниченного типа Mom базовым является целый тип, для SSS символьный, для Wd - определённый ранее перечислимый тип Day.Попытка присвоить переменной ограниченного типа значение \, невходящее в заданный диапазон, приведёт к возникновению ошибки при счёте.Таким образом,.
введение ограниченных типов перекладывает проверкудопустимости значений с программиста на компилятор.Пусть, например, в разделе описания указан перечислимый тип Год:Type Year = ( Jan, Febr, Mart, Apr, May, Jun, Jul, Aug, Sent, Okt, Nov, Dec);А нам предстоит решать задачи, связанные только с весенним временем года.Тогда можно ввести ограниченный тип: Spring Sum = Маy .. Aug; которыйявляется частью перечислимого типа.При определении ограниченного типауказываются начальные иконечные значения диапазона, разделённые двумя точками.Общий вид описания ограниченного типа:Type имя типа = константа 1 .. константа N;Общий вид описания переменных ограниченного типа:Var имя переменной: имя типа;Пример.Type T = 1... 100;Var A, B: T;Переменные А и В могут принимать любые значения из диапазона 1..100.При использовании ограниченного типа должно выполняться следующееПравила:1) обе граничные константы должны быть одинакового типа;2) начальное значение не должно быть больше конечного;3) тип констант может быть любой простой, кроме действительного(целый, символьный, логический, перечислимый).Пример.