metod_15.03.04_atppp_oaip_ump_2016 (1016599), страница 28
Текст из файла (страница 28)
ТИПИЗИРОВАННЫЕ КОНСТАНТЫТипизированными называют константы, значения которых устанавливаютсяпри описании их типа в разделе описания.Форма определения одной типизированнойконстанты: Const Идентификатор : тип = значение ;Типизированным константам можно в программе присваивать другие значения, т.е.это переменная с присвоенным ей начальным значением. Типизированнаяконстанта получает значения, указанные при объявлении, т.е.
инициируется толькоодин раз к моменту начала работы программы. При повторном входе в даннуюподпрограмму (процедуру или функцию), в которой константа была инициирована,типизированная константа сохраняет свое значение, т.е. повторная инициализация непроизводится.Типизированные константы могут быть любого типа, кроме файлов.Типизированные константы простых типовПримеры:TYPE CVET = ( KR, GEL, ZEL ) ;CONSTPCV : CVET =KR ;X : REAL = 0.1 ;B: CHAR = ‘A’ ;124NAME : STRING = ‘Поляков’E : STRING [ 7 ] = ‘ Петя ‘Ограничения при использовании простых типизированных констант состоят в том,что нельзя:1) использовать простые типизированные константы в качестве границ индексовмассивов при их объявлении;2) использоватьспискиидентификаторовприопределениипростыхтипизированных констант;3) при определении простых типизированных констант использовать вызоввстроенных функций.Типизированные константы – массивыВ качестве значений типизированной константы – массива используется списокзначений элементов массива, заключенный в круглые скобки, в виде констант,разделенных запятыми.
В качестве значения символьного массива можно указатьстроку соответствующей длины. Например, определение типизированной константы –массива DIDG эквивалентно определению типизированной константы – массива DID:CONSTDIDG : ARRAY [ 0 .. 6 ] OF CHAR = ( ‘ 0 ‘, ‘ 1 ‘, ‘ 2 ‘, ‘ 3 ‘, ‘ 4 ‘, ‘ 5 ‘ )DID : ARAY [ 0 .. 6 ]OFCHAR = ‘ 012345’ ;В данном примере значения элементов константы – массива DID определеныстрокой.При объявлении многомерных типизированных констант – массивов значенияконстант, соответствующих каждому измерению, заключаются в дополнительныекруглые скобки. Например:TYPE A = ARRAY [ 1 .. 2, 1 ..
4) OF BYTE ;CONST M : A = (( 0, 1, 2, 3), (4, 5, 6, 7)) ;1-я строка2-я строка матрицы М.Типизированные константы – записиФорма определения константы-записи:Идентификатор : тип = (список значений полей) ;Элемент списка значений полей представляет собой:Имя поля : константа значения поля ;Элементы списка значений полей разделяются точкой с запятой.
Поля в спискезначений полей должны указываться в той последовательности, в которой ониперечислены в объявлении типа. Для записи с вариантными полями указывается толькоодин из возможных вариантов констант. Например:TYPE MES = (YAN, FEB, MAR, APR, MAY, IUN, IUL, AUG, SEN, OKT, NOV, DEC) ;DATE = RECORDD = 1 //31 ;M = MES ;G = 1900 ..
2004 ;END ;125CONST DAT : DATA = ( D : 18 ; M : MAY ; G : 1913) ;Типизированные константы-множестваЗначение типизированной константы – множества задается в виде конструктора.Например:TYPE DEN = SET OF 1 .. 31 ;BUK = SET OF ‘A’ .. ‘Z’ ;ERROR = SET OF 1 .. 24 ;CONST RABDNI : DEN [ 1 .. 5, 8 .. 12, 15 .. 19, 22 .. 26 ] ;GLASN : BUK = [ ‘A’, ‘E’, ‘I’, ‘O’, ‘U’ ] ;GLAS : SET OF CYAR = [ ‘A’, ‘E’, ‘И’, ‘О’, ‘У’, ‘Э’, ‘Я’ ] ;8.4. СОВМЕСТИМОСТЬ И ПРЕОБРАЗОВАНИЕ ТИПОВ ДАННЫХВ языке Паскаль строго соблюдается концепция типов, в соответствии с которой вседвухместные операции языка допустимы только над операндами совместимых типов.Совместимость типов учитывается при согласовании формальных и фактическихпараметров подпрограмм, вычислений выражений и выполнении операторовприсваивания.Ответ на вопрос, принадлежат ли переменные одному типу данных, зависит от того,как в языке трактуется эквивалентность: структурная или именная.Структурная эквивалентность – сравниваются число компонентов переменной и ихтипы.
Именная эквивалентность предполагает использование при описании одного итого же идентификатора.В языке Паскаль принята именная эквивалентность. Типы переменных Т1 и Т2идентичны (одинаковы), если:1) Т1и Т2 – это один и тот же тип;2) Т1 и Т2 определены друг через друга, т.е. TYPE T1 = T2 или T2 = T1;При вычислении выражений и при выполнении операции присваивания операндыдолжны быть совместимы. При вычислении выражений два типа операндовсовместимы, если:1)оба одного типа;2)один операнд - вещественный, а другой – целый;3)один операнд является диапазоном типа второго операнда;4)оба операнда – диапазоны одного и того же базового типа;5)оба операнда – множества, составленные из элементов одного и того жебазового типа данных;6)оба операнда – строки;7)один операнд типа – строка, другой – символ.Пусть T1 – тип переменной левой части оператора присваивания, а Т2 – типрезультата выражения его правой части.
Тогда выполнение операции присваиваниявозможно, если:1)Т1 и Т2 – один и тот же тип;2)Т1 и Т2 – совместимые порядковые типы и значение Т2 лежит в диапазоневозможных значений Т1;1263)Т1 и Т2 – вещественные типы и значение Т2 лежит в диапазоне возможныхзначений Т1;4)Т1 – вещественный тип, Т2 – целый тип;5)Т1 – строка, Т2 – строка или символ;6)Т1 и Т2 совместимые множества и все элементы Т2 принадлежат множествувозможных значений Т1.Преобразование типов в Паскале может быть явным или неявным.
При явномпреобразовании типа используются вызовы специальных функций, аргументы которыхпринадлежат одному типу, а результаты другому (ORD, ODD, TRUNC, ROUND, CHR).Данные одного типа могу автоматически (неявно) преобразовываться в данныедругого типа перед выполнением операций выражений и операций присваивания.Неявное преобразование типов возможно в трех случаях:1)в выражениях из вещественных и целочисленных данных целыеавтоматически преобразуются в вещественные, и результат выражения будетвещественного типа;2)при выполнении операции присваивания переменной вещественного типазначения целого типа оно преобразуется в значение вещественного типа и только послеэтого присваивается переменной левой части оператора присваивания;3)одна и та же область памяти попеременно содержит данные то одного, тодругого типа (совмещение в памяти данных разных типов).Явное преобразование типов может производиться с помощью стандартныхфункций и с помощью операции приведения типа.8.5.
ОПЕРАТОРЫ ОБРАБОТКИ ДАННЫХОПЕРАТОРЫОбработки данных(присваивания)ОрганизацииобработкиданныхВвода –выводаданныхАрифме тическиеПереходаТекстовыхЛоги ческиеРазветвленияТипизирован ныхСимволов истрокНад множествамиПустойЦикловФормированиямодулейПрограммПодпрограммПроцедурБестиповыхФункцийПрисоедине нияБиблиотекВызоваподпрограмм127Тело программы (раздел операторов) состоит из различных операторов языкаПаскаль.
Операторы – это единицы действий языка. Синонимы слова оператор:предложения, утверждения, инструкции, Statement. Операторы могут бытьвыполняемые и невыполняемые. Выполняемые производят вычисления или управляютпроцессом вычислений. Невыполняемые содержат сведения о структуре и организацииданных, их свойствах и размещении данных в памяти. Почти все операторы начинаютсяключевым словом.В одной строке текста программы можно поместить один и более операторов.
Одиноператор может занимать одну и более строк. В конце оператора ставится ;.Максимальная длина строки программы 126 символов, но целесообразно использоватьвидимую часть экрана – 78 символов строки. Программы и данные можно писать спервой позиции экрана.Оператор присваиванияОсновное назначение программы состоит в выполнении тех действий по обработкеданных, которые требуются для решения поставленной задачи. Как правило, решениелюбой задачи представляет собой процесс формирования результатов из заданныхправил и исходных данных. Правила формирования результатов задаются на языкеПаскаль с помощью выражений.Оператор присваивания определяет процесс вычисления нового значенияпеременной с помощью выражения и запоминание полученного результата в ОП.Выражение – это правило (формула) для вычисления нового значения.
Выражениестроится из операндов, операций и круглых скобок, с помощью которых можно задатьтребуемый порядок выполнения его операций. В качестве операндов могут бытьконстанты, переменные и функции. Результатом выполнения выражения являетсязначение арифметического или логического типа, строка или множество. Типрезультата определяется как типом операндов, так и видом операций, выполняемых надоперандами. Над различными типами данных допустимы различные совокупностиопераций.
К моменту вычисления выражения должны быть известны значения всехвходящих в него переменных.Форма оператора присваивания:A := B;где A – имя переменной (левая часть оператора присваивания);B – выражение для вычисления нового значения (правая часть оператораприсваивания). Тип результата выражения должен быть совместим с типом переменнойA.Правила выполнения оператора присваивания:1) вычисляется выражение правой части оператора присваивания;2) результат присваивается переменной левой части оператора: копируется в областьоперативной памяти, выделенную переменной левой части оператора присваивания.Примеры.
1. Традиционное представление арифметического выражения128На Паскале: Z := (X +Y) / (C – 0.5) + (X – Y) / (X*A) ;2. Традиционно: Ai = Bi+1 + Ci, j ; На Паскале: A [ I ] := B [ I + 1 ] + C [ I, J ];В алгебре нет аналогов следующих операторов: I := I + 1; X := X + DX; С помощьюданных операторов переменные I и X получают приращения равные соответственно 1 иDX.Операнды в выражениях соединяются знаками операций, которые могут бытьодноместные (например, +X, -Y, NOT Z; где NOT – не) или двухместные (например: X+ Y, A * B, C < D, E OR F, где OR – или, E AND F, где AND – и).Операции различаются по степени приоритета:1) одноместные операции (+, -, NOT );2) мультипликативные (размножающие) операции (*, /, DIV (ц/деление), MOD(остаток ц/деления), AND, SHL (сдвиг влево), SHR (сдвиг вправо);3) аддитивные (суммирующие) операции: +, -, OR, XOR (исключить ИЛИ);4) операции отношения: =, <>, <, <=, >=, >, IN (В) – принадлежность множеству.Если нет скобок, операции одного уровня приоритета (ранга) выполняются впоследовательности их написания слева направо.
Операции различных ранговвыполняются в последовательности их приоритета.Последовательность вычисления выражений:1) Сначала полностью вычисляются выражения в скобках, начиная с самыхвнутренних;2) Операции одного ранга (однородные) выполняются последовательно слеванаправо;3) При неоднородных операциях последовательность выполнения операцийследующая:a)значения функций;b)одноместные операции (например, -х, +а);c)двухместные операции в порядке их приоритета.Выражения на Паскале пишут на одном уровне, без изменения уровня написанияиндексов массивов. При написании выражений нельзя:1) пропускать знак * - умножения;2) при переносе выражения на следующую строку повторять знак арифметическойоперации.При написании выражений допускается:1) не писать + в одноместной операции, т.е. можно писать A := X, а не A := +X;2) делать пробелы между операндами, знаками операций и скобками;3) перенос (продолжение) выражения на следующую строку, не разрываяидентификатора, ключевых слов и чисел;4) использовать лишние скобки для удобства чтения выражений.Арифметические выраженияАрифметические выражения – это аналог алгебраических выражений математики.Арифметические выражения используются:1) в операторах присваивания;2) в качестве фактических параметров процедур и функций;1293) в операторах заголовков цикла;4) в списках данных операторов вывода.Необходимо помнить, что деление на 0 невозможно и поэтому при выполнениипрограммы даст ошибку.Тип выражения определяется типами операндов и операциями:Операция Действие+, -, *Сложение ВычитаниеУмножение/ДелениеDIV,MODТип операндаТип результата1) Оба целые2) Один вещественныйЦелыйВещественныйВещественныйЛюбойЦелочисленное деление,Оба целыхОстаток целочисленногоОба целыхделенияЦелыйЦелыйК арифметическим данным применимы встроенные процедуры и функции:А.














