Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Билет 17. Тип множество: описание, ввод, вывод, операции над множествами

Читайте также:
  1. H ;Перенос от предыдущей операции.
  2. Агентские операции
  3. АКТИВНЫЕ ОПЕРАЦИИ КОМЕРЧЕСКОГО БАНКА: ПОНЯТИЕ, ОСНОВНЫЕ ВИДЫ.
  4. Активные операции коммерческих банков, структура активов банка, их качественная характеристика.
  5. Алгебра случайных событий. Основные операции.
  6. Арендные и лизинговые операции.
  7. Арифметические выражения, арифметические операции, стандартные арифметические функции. Оператор присваивания.
  8. Арифметические и поразрядные операции.
  9. Арифметические операции
  10. Арифметические операции

Логические

Логические операторы анализируют булевы выражения и возвращают значения <истинно> или <ложно> в качестве результата. Perlобрабатывает операнды логических операций как булевы величины, т.е. как истинное или ложное значение. Логические операторы языка Perl включают следующие:

Логическое ИЛИ? && логическое И

Perl всегда обрабатывает логические выражения слева направо. Кроме того. Perl всегда прекращает оценку, если уже выполненнойоценки достаточно, чтобы определить значение результата.

Билет 17. Тип множество: описание, ввод, вывод, операции над множествами

Диапазон значений множественного типа представляет собой мощность множества для определенного порядкового типа (базового типа). Каждое возможное значение множественного типа является подмножеством возможных значений базового типа. Переменная множественного типа может принимать как все значения множества, так и ни одного. Базовый тип не должен иметь более 256 возможных значений, и порядковые значения верхней и нижней границы базового типа должны не превышать диапазона от 0 до 255. В силу этого базовый тип множества не может быть коротким целым (Shortint), целым (Integer), длинным целым (Longint) или словом (Word).Пример работы с множествами: type {определяем базовые для множеств перечислимый тип и тип-диапазон}colors = (red,green,blue);smallnumbers = 0..10;{определяем множества из наших типов}colorset = set of colors;numberset = set of smallnumbers;{можно и не задавать тип отдельно}anothernumberset = set of 0..20; {объявляем переменные типа множеств}var nset1,nset2,nset3:smallnumbers; cset:colorset;beginnset1:= [0,2,4,6,8,10]; {задаем в виде конструктора множества}cset:= [reb,blue]; {простым перечислением элементов}nset2:= [1,3,9,7,5]; {порядок перечисления неважен}nset3:= []; {пустое множество}nset1:= [0..5]; {возможно задавать элементы диапазоном}nset3:= nset1 + nset2; {объединение}nset3:= nset1 * nset2; {пересечение}nset3:= nset1 - nset2; {разность}if (5 in nset2) or {проверка на вхождение элемента} (green in cset) then...end; Операции над множествами:присвоениеобъединениепересечениедополнениетождественностьнетождественностьсодержится во множествесодержит множествопринадлежность элемента множеству Любой множественный тип может принимать значение [], которое называется пустым множеством. Билет 14. Порядковые типы. Перечисляемый тип Перечислимые типы определяют упорядоченные множества значений через перечисление идентификаторов, которые обозначают эти значения. Упорядочение множеств выполняется в соответствии с последовательностью, в которой перечисляются идентификаторы. При указании идентификатора в списке идентификаторов перечислимого типа он описывается как константа для блока, в котором указано описание перечислимого типа. Типом этой константы является описанный перечислимый тип. Порядковый номер перечислимой константы определяется ее позицией в списке идентификаторов при описании. Перечислимый тип, в котором описывается константа, становится ее типом. Первая перечислимая константа в списке имеет порядковый номер 0. Приведем пример перечислимого типа: type suit = (club, diamond, heart, spade); Согласно этим описаниям diamond является константой типа suit. При применении функции Ord к значению перечислимого типа Ord возвращает целое число, которое показывает, какое положение зани- мает это значение в отношении других значений этого перечислимого типа. Согласно предшествующим описаниям, Ord(club) возвращает 0, Ord(diamond) возвращает 1 и так далее. Билет 15. Тип массив (статический): описание, ввод, вывод. Форматный вывод Массивы содержат фиксированное число элементов одного типа, так называемого типа элемента. На приводимой ниже синтаксической диаграмме тип элемента следует за словом of. В индексных типах, по одному для каждой размерности массива, указывается число элементов. Допустимыми индексными типами являются все порядковые типы, за исключением длинного целого и поддиапазонов длинного целого. Массив может быть проиндексирован по каждой размерности всеми значениями соответствующего индексного типа; число элементов поэтому равно числу значений в каждом индексном типе. Число размерностей не ограничено. Приведем пример типа массив: array[1..100] of Real Если тип элемента в типе массив также является массивом, торезультат можно рассматривать как массив массивов или как одинмногомерный массив. Например, array[boolean] of array[1..100] of array[Size] of Real интерпретируется компилятором точно так же, как массив: array[boolean,1..10,Size] of Real Кроме того, можно записать выражение: packed array[1..10] of packed array[1..8] of Boolean как packed array[1..10,1..8] of Boolean Для доступа к элементам массива необходимо указать идентификатор массива с одним или несколькими индексами в скобках Тип массив, имеющий вид: packed array[M..N] of Char где M меньше N, называется упакованным строковым типом (слово packed можно опустить, поскольку оно не оказывает действия в Borland Pascal). Упакованный строковый тип имеет некоторые свойства, не характерные для других типов массив (см. раздел "Тождественные и совместимые типы" далее в этой главе). Массив вида: array[0..X] of Char где X - положительное целое число, называется массивом с нулевой базой. Массивы с нулевой базой используются для хранения строк с завершающим нулем, и, когда разрешен расширенный синтаксис (с помощью директивы компилятора {$X+}), символьный массив с нулевой базой совместим со значением типа PChar. Полностью эта тема обсуждается в Главе 18 "Использование строк с завершающим нулем". Параметр, описанный с помощью синтаксиса array of T, называется открытым строковым параметром. Открытые строковые параметры позволяют передавать одной и той же процедуре или функции строковые переменные изменяющегося размера. Билет 18. Текстовый файл: описание файловой переменной, основные операции. Использование параметров программы для передачи программе имен файловФайловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов: file of тип - типизированный файл (указан тип компоненты); text - текстовый файл; file - нетипизированный файл. Примеры описания файловых переменных: var f1: file of char; f2: file of integer; f3: file; t: text; Стандартные процедуры и функции assignFile(<ф.п.>,’<имя файла>’) – связывает файловую переменную с файлом; rewrite(<ф.п.>) – создание и открытие нового файла для записи; reset (<ф.п.>) – открытие существующего текстового файла (файла, связанного с файловой переменной <ф.п.>) для чтения; append(<ф.п.>) – открытие существующего текстового файла (файла, связанного с файловой переменной <ф.п.>) для дозаписи в конец; closeFile(<ф.п.>) – закрытие открытого файла. Операторы ввода-вывода: read(<ф.п.>,<список ввода > ) – чтение данных; элемент списка ввода для текстового файла – число или символ или строка string; write(<ф.п.>,<список вывода >) - запись данных согласно списку вывода; элемент списка вывода для текстового файла – число или символ или строка string. readln(<ф.п.>,<список ввода >) - чтение данных согласно списку ввода и переход на следующую строку; если в строке данных остались данные, не вошедшие в список ввода, они игнорируются writeln(<ф.п.>,<список вывода >) - запись данных в файл согласно списку вывода с добавлением в конце выведенной строки маркера конца строки (переход на следующую строку). Текстовый файл - это совокупность строк, разделенных метками конца строки. Сам файл заканчивается меткой конца файла. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Одновременная запись и чтение запрещены. Чтение из текстового файла: Read(f, список переменных);ReadLn(f, список переменных);Процедуры читают информацию из файла f в переменные. Способ чтения зависит от типа переменных, стоящих в списке. В переменную char помещаются символы из файла. В числовую переменную: пропускаются символы-разделители, начальные пробелы и считывается значение числа до появления следующего разделителя. В переменную типа string помещается количество символов, равное длине строки, но только в том случае, если раньше не встретились символы конца строки или конца файла. Отличие ReadLn от Read в том, что в нем после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки. Если список переменных отсутствует, то процедура ReadLn(f) пропускает строку при чтении текстового файла. Запись в текстовый файл: Write(f, список переменных);WriteLn(f, список переменных);Процедуры записывают информацию в текстовый файл. Способ записи зависит от типа переменных в списке (как и при выводе на экран). Учитывается формат вывода. WriteLn от Write отличается тем, что после записи всех значений из переменных записывает еще и метку конца строки (формируется законченная строка файла). Добавление информации к концу файла: Append(f)Процедура открывает текстовый файл для добавления информации к его концу. Используйте эту процедуру вместо Rewrite. Билет 19. Назначение и отличия процедур общего вида и функций Отличия между процедурами и функциями procedure <Имя> (<Список Формальных Параметров>); function <Имя> (<Список Формальных Параметров>): <Тип результата>; Объявление и работа с процедурами и функциями отличаются в следующем: в заголовке функции помимо описания формальных параметров обязательно указывается тип возвращаемого ею результата; для возврата функцией значения в точку вызова среди ее операторов должен быть хотя бы один, в котором имени функции или переменной Result присваивается значение результата; вызов процедуры выполняется отдельным оператором; вызов функции может выполняться там, где допускается ставить выражение, в частности, в правой части оператора присваивания. Процедура – это поименованное сложное действие, которое представляет собой совокупность операторов, вычисляющих некоторое число результатов в зависимости от некоторого числа аргументов. Процедура или функция (общее название – подпрограмма) определяется в разделе описаний основной программы или другой процедуры(функции). Процедура (функция) имеет ту же структуру, что и основная программа, т.е. состоит из заголовка, описательной части и выполняемой части. PROCEDURE < имя процедуры > [(<список формальных параметров >)]; Например: Procedure PR1(A,B,C:integer;Var S:real); здесь PR1 – имя процедуры, а А,В,С,S – имена переменных, являющихся параметрами. Синтаксис заголовка процедуры: PROCEDURE < имя процедуры > [(<список формальных параметров >)]; Например: Procedure PR1(A,B,C:integer;Var S:real); здесь PR1 – имя процедуры, а А,В,С,S – имена переменных, являющихся параметрами. В отличие от основной программы заголовок в процедуре обязателен, но завершается процедура не точкой, а точкой с запятой. Описание процедуры выполняется с формальными параметрами. В заголовке запись переменных напоминает объявление переменных в разделе описания переменных. Для всех элементов списка должен быть указан тип данных. Несколько переменных, отнесенных к одному типу, пишутся через запятую, а группы переменных различного типа отделяются точкой с запятой. Оператор процедуры служит для вызова процедуры из основной программы или из другой процедуры(функции). Вызов осуществляется в следующей форме: <имя процедуры > [(<список фактических параметров>)]; Таким образом, для приведенного заголовка процедуры можно написать такой оператор вызова: PR1 (A,B,C,S); Форматы списка параметров в заголовке процедуры и при вызове процедуры отличаются. При вызове переменные, константы или выражения следуют через запятую, причем указываются только имена. После обращения к процедуре управление передается на выполнение следующего за вызовом процедуры оператора. Рассмотрим пример реализации алгоритма вычисления синуса в виде процедуры с параметрами. В список формальных параметров включаются все данные необходимые для вычислений – это значение аргумента X и точности вычислений, обозначенной здесь через Е. Кроме входных данных в список параметров необходимо включить результаты работы процедуры, а именно – Y. var x,y,e:real; procedure sinx(x,e:real;var y:real); var u,z:real; k:integer; begin k:=0; y:=0; u:=x; z:=sqr(x); while abs(u)>e do begin y:=y+u; k:=k+2; u:=-u*z/(k*(k+1)); end; end; begin readln(x,e); sinx(x,e,y); writeln('sin=',sin(x),' y=',y); end. В главной программе остались три оператора: ввода исходных данных, обращения к процедуре и вывода результатов. Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими. Билет 26. Составление функциональных и структурных тестов Билет 9. Способы структуризации алгоритмов Структурированная программа (или подпрограмма) - это программа, составленная из фиксированного множества базовых конструкций. Рассмотрим основные определения и способы образования этих конструкций в схемах алгоритмов. Из операций, развилок и слияний строятся базовые конструкции: следование, ветвление, цикл. Применяя только эти три конструкции, можно реализовать алгоритм решения любой задачи. Конструкция, представляющая собой последовательное выполнение двух или более операций, называется следованием. Конструкция, состоящая из развилки, двух операций и слияния, называется ветвлением. Одна из операций может отсутствовать. Конструкция, имеющая линии управления, ведущие к предыдущим операциям или развилкам, называется циклом. Конструкции следование, ветвление и цикл можно представить как операции, так как они имеют единственный вход и единственный выход. Произвольную последовательность операций можно представить как одну операцию. Операция может быть реализована любым оператором языка ПАСКАЛЬ (простым или составным), либо группой операторов, за исключением оператора перехода GOTO. В языке ПАСКАЛЬ количество базовых конструкций увеличено до шести, это: -следование; -ветвление; -цикл с предусловием; -цикл с постусловием; -цикл с параметром; -вариант. Билет 22. Классы формальных параметров: параметры-константы, параметры-значения и параметры переменные. Ключевые слова const, var, out при описании параметров Параметры-значения Формальный параметр-значение обрабатывается, как локальная по отношению к процедуре или функции переменная, за исключением того, что он получает свое начальное значение из соответствующего фактического параметра при активизации процедуры или функции. Изменения, которые претерпевает формальный параметр-значение, не влияют на значение фактического параметра. Соответствующее фактическое значение параметра-значения должно быть выражением и его значение не должно иметь файловый тип или какой-либо структурный тип, содержащий в себе файловый тип. Фактический параметр должен иметь тип, совместимый по присваиванию с типом формального параметра-значения. Если параметр имеет строковый тип, то формальный параметр будет иметь атрибут размера, равный 255. Параметры-константы Формальные параметры-константы работают аналогично локальной переменной, доступной только по чтению, которая получает свое значение при активизации процедуры или функции от соответствующего фактического параметра. Присваивания формальному параметру-константе не допускаются. Формальный параметр-константа также не может передаваться в качестве фактического параметра другой процедуре или функции. Параметр-константа, соответствующий фактическому параметру в операторе процедуры или функции, должен подчиняться тем же правилам, что и фактическое значение параметра. В тех случаях, когда формальный параметр не изменяет при выполнении процедуры или функции своего значения, вместо параметра-значения следует использовать параметр-константу. Параметры-константы позволяют при реализации процедуры или функции защититься от случайных присваиваний формальному параметру. Кроме того, для параметров структурного и строкового типа компилятор при использовании вместо параметров-значений параметров-констант может генерировать более эффективный код. Параметры-переменные Параметр-переменная используется, когда значение должно передаваться из процедуры или функции вызывающей программе. Соответствующий фактический параметр в операторе вызова процедуры или функции должен быть ссылкой на переменную. При активизации процедуры или функции формальный параметр-переменная замещается фактической переменной, любые изменения в значении формального параметра-переменной отражаются на фактическом параметре. Внутри процедуры или функции любая ссылка на формальный параметр-переменную приводит к доступу к самому фактическому параметру. Тип фактического параметра должен совпадать с типом формального параметра-переменной (вы можете обойти это ограничение с помощью нетипизированного параметра-переменной). Примечание: Файловый тип может передаваться только, как параметр-переменная. Билет 27. Нисходящее и восходящее тестирование программ Восходящее тестирование. При восходящем подходе программа собирается и тестируется снизу вверх. Только модули самого нижнего уровня (модули, не вызывающие других модулей) тестируются независимо, автономно. После того как тестирование этих модулей завершено, вызов их должен быть так же надежен, как вызов встроенной функции языка или оператор присваивания. Затем тестируются модули, непосредственно вызывающие уже проверенные. Эти модули более высокого уровня тестируются не автономно, а вместе с уже проверенными модулями более низкого уровня. Процесс повторяется до тех пор, пока не будет достигнута вершина. Здесь завершаются и тестирование модулей, и тестирование сопряжений программы. Для каждого модуля необходимо написать небольшую ведущую программу. Нисходящее тестирование. Нисходящее тестирование не является полной противоположностью восходящему, но в первом приближении может рассматриваться как таковое. При нисходящем подходе программа собирается и тестируется сверху вниз. Изолированно тестируется только головной модуль. После того как тестирование этого модуля завершено, с ним соединяются один за другим, модули, непосредственно вызываемые им, и тестируется полученная комбинация. Процесс повторяется до тех пор, пока не будут собраны и проверены все модули. Для имитации функций недостающих модулей программируются модули-”заглушки”, которые моделируют функции отсутствующих модулей. Метод сэндвича. Тестирование методом сэндвича представляет собой компромисс между восходящим и нисходящим подходами. При использовании этого метода одновременно начинают восходящее и нисходящее тестирование, собирая программу как снизу так и сверху и встречаясь в конце концов где-то в середине. Точка встречи зависит от конкретной тестируемой программы и должна быть заранее определена при изучении ее структуры. Если разработчик может представить свою систему в виде уровня прикладных модулей, затем уровня модулей обработки запросов, затем уровня примитивных функций, то он может решить применять нисходящий метод на уровне прикладных модулей, а на остальных уровнях применить восходящий метод. В нашем случае применим метод сэндвича, поскольку перед проектированием основной программы необходимо создать комплекс интерфейсных и вспомогательных функций, которые, естественно должны быть проверены до создания основного тела программы. Билет 20. Описание и вызов процедур Формат описания процедуры имеет вид: procedure имя процедуры (формальные параметры); раздел описаний процедуры begin исполняемая часть процедуры end; Вызов: … имя процедуры (формальные параметры);… Билет 23. Массивы и записи как формальные параметры процедур и функций Открытые параметры-массивы дают возможность передавать в подпрограмму массивы, размер которых не фиксируется в объявлении подпрограммы. Этот механизм позволяет создавать максимально гибкие и универсальные подпрограммы для обработки массивов произвольного размера. Синтаксис описания открытых параметров-массивов: ИмяПодпрограммы (VAR P: array of ТипЭлементов); Это единственное исключение из правила, согласно которому типы формальных параметров в заголовках подпрограмм могут задаваться только посредством идентификаторов (см. замечание выше). Подпрограмма, содержащая открытый массив в списке своих формальных параметров, может быть вызвана с массивом ЛЮБОГО размера (типы элементов массивов из формального и фактического параметров должны, естественно, совпадать). Заметим, что в качетсве открытых массивов допускаются ТОЛЬКО одномерные массивы [1]. Реальные границы переданного в подпрограмму массива можно определить используя две функции Low и High. Эти функции предназначены для определения граничных значений типов и переменных. В данном случае функция Low будет всегда возвращать 0, а функция High - верхнее значение индекса равное (n-1), где n-число элементов в переданном массиве. Билет 26. Составление функциональных и структурных тестов на примере разработанной процедуры Функциональные тесты проверяют правильность работы программы по принципу: «не знаю как сделано, но знаю, что должно быть в результате, и именно это и проверяю». К функциональным тестам относятся: · «тепличные», проверяющие программу при корректных, нормальных значениях исходных данных; · «экстремальные» («стресс–тесты»), находящиеся на границе области определения (например, наибольшая или наименьшая нагрузка системы по количеству или по времени), проверяющие поведение системы в экстремальных ситуациях, которые могут произойти и на которые программа должна корректно реагировать. · «запредельные» («тесты обезьяны»), выходящие за границы области определения (а возможно, и здравого смысла), проверяющие ситуации, бессмысленные с точки зрения постановки задачи, но которые могут произойти из-за ошибок пользователя (корректная реакция системы на запрещенный или неподдерживаемый ввод и т.п., так называемая «защита от дурака») Структурные тесты контролируют (тестируют) работу всех структурных частей программы (функций, процедур, модулей, основной программы) по всем возможным маршрутам (ветвям программы). При структурном тестировании необходимо осуществлять контроль: · обращений к данным (т.е. проверять правильность инициализации переменных; а также размеры массивов и строк; отслеживать, не перепутаны ли строки со столбцами; соответствуют ли входных и выходных значений выбранным типам данных; проверять правильность обращения к файлам и т.п.); · вычислений (порядок следования операторов и запись выражений; переполнение разрядной сетки или получение машинного нуля; соответствие результата заданной точности и т.п.); · передачи управления (завершение циклов, функций, программы); · межмодульных интерфейсов (списки формальных и фактических параметров; отсутствие побочных эффектов, когда подпрограмма изменяет аргументы, которые не должны меняться и т.п.). Искусство тестирования сводится к разработке простого, полного и не избыточного набора тестов, а технология тестирования – к испытанию программы на всем наборе тестов, после внесения в нее каждого изменения. Билет 28. Описание констант, переменных и пользовательских типов. Области видимости констант и переменных Пример объявления констант: const A=10; B='Linux must die'; E:Real=2.71; C=A+5; D:array[0..4] of Integer=(5, A, 1, C, 123); Переменная– именованная область памяти, используемая для хранения значения, которое можно изменить при выполнении программы. Переменные подразделяются на простые и индексированные (переменные с индексом). Индексированными переменными являются элементы массивов. Все подробности о массивах будут рассмотрены в параграфе 2.4.6. Константа– именованная область памяти, используемая для хранения фиксированного значения, которое невозможно изменить при выполнении программы. Имена переменных и констант должны удовлетворять следующим правилам: - первым символом всегда должна быть буква; - в составе имени нельзя использовать символы:!, @, &, $, #, пробел; - в качестве имени нельзя использовать ключевые (зарезервированные) слова, входящие в конструкции языка VBA; - длина имени не может быть более 255 символов; - имя нельзя повторять в пределах области его видимости (действия). Область действия переменных и констант определяется с помощью ключевых слов: Private, Publicи Static. Private– область действия в пределах конкретного модуля. После завершения выполнения модуля память, отведенная под эти переменные, освобождается. Public– область действия в пределах приложения. Static– область действия в пределах конкретного модуля и внешних процедур, используемых в данном модуле. После завершения выполнения модуля значения этих переменных сохраняются и могут быть использованы при повторном выполнении модуля. Переменные и константы, в зависимости от области действия, подразделяются на глобальныеи локальные. Если переменная или константа описана внутри процедуры, то она является локальной, то есть она определена и может использоваться только в пределах данной процедуры. Если переменная или константа описана вне процедуры, то она будет глобальной. Такая переменная или константа может быть использована в нескольких процедурах. 1. Билет 21. Описание и вызов функций Формат описания функции: function имя функции (формальные параметры): тип результата; раздел описаний функции begin исполняемая часть функции end; Вызов: … Имя переменной:=имя функции (формальные параметры);… ИЛИ … имя процедуры (имя функции (формальные параметры)); Билет 24. Имена процедур и функций как формальные параметры. Процедурный тип Процедурные типы Процедурные типы - это нововведение фирмы Borland (в стандартном Паскале таких типов нет). Основное назначение этих типов - дать программисту гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям. Для объявления процедурного типа используется заголовок процедур, в котором опускается ее имя, например: type Proc = Procedure (a, b, с: real; Var d: real); Proc2 = Procedure (var a, b); РгосЗ = Procedure; В программе могут быть объявлены переменные процедурных типов, например, так: var р1: Proc; ар: array [1..N] of Proc2; Переменным процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограмм. После такого присваивания имя переменной становится синонимом имени подпрограммы. В отличие от стандартного Паскаля, в Турбо Паскале разрешается использовать в передаваемой процедуре как параметры-значения, так и параметры-переменные Билет 25. Модули в Паскале: назначение, описание, использование. Обязательные и дополнительные разделы Модульное программирование – это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам. Используя модули, вы можете разбивать программу на отдельные части и компилировать их отдельно. Программный модуль (unit) представляет собой набор констант, типов данных, переменных, процедур и функций, которые могут совместно использоваться несколькими программами. Каждый модуль аналогичен отдельной программе на Паскале: он может иметь основное тело, которое вызывается перед запуском вашей программы и осуществляет необходимую инициализацию. Структура модуля аналогична структуре программы, однако есть несколько существенных различий. Например, рассмотрим модуль: unit <идентификатор>; interface uses <список модулей>; { Необязательный } { глобальные описания } implementation uses <список_модулей>; { Необязательный } { локальные описания } { реализация процедур и функций } begin { код инициализации } end. Заголовок модуля начинается зарезервированным словом unit, за которым следует имя модуля (идентификатор) точно так же, как и в случае имени программы. Следующим элементом в модуле является ключевое слово interface. Оно обозначает начало интерфейсной секции модуля - части, доступной всем другим модулям или програм- мам, в которых он используется. Программный модуль может использовать другие модули, для этого они определяются в операторе uses. Оператор uses (если он имеет место) может содержаться в двух местах. Во-первых он может следовать сразу после ключевого слова interface. В этом случае любые константы и типы данных, описанные в интерфейсной секции этих модулей, могут использоваться в любом описании в интерфейс- ной части данного модуля. Во-вторых, он может следовать немедленно за ключевым словом implementation. В этом случае все описания из этих модулей могут использоваться только в секции реализации. Для использования специального модуля или набора модулей необходимо в начале программы поместить оператор uses, после которого указать список имен тех модулей, которые использоваться. Имена их должны разделяться запятыми: program MyProg; uses thisUnit, thatUnit, theOtherUnit; Когда компилятор встречает такой оператор uses, он прибавляет информацию из секции интерфейса каждого модуля к таблице идентификаторов и присоединяет машинный код, представленный в секции, к самой программе. Билет 29. Описание констант структурированных типов: массивов, записей и множеств Типизированные константы типа "массив" При описании константы типа "массив" компоненты каждой размерности массива заключаются в отдельные скобки и разделяются запятыми. Компоненты, расположенные в самых внутренних скобках соответствуют последней (самой правой) размерности массива. Примеры констант типа "массив": одномерный числовой массив const DigVector: array [1..7] of Real = (0.1, 3.25, 21.32, 55, 11.99, 78.1, 4.5); двумерный числовой массив const DigMatrix: array [1..3,1..2] of Integer = ((1,2), (3,4), (5,6)); В результате элементы матрицы DigMatrix получат такие значение DigMatrix[l,l] = 1; DigMatrix[1,2] = 2; DigMatrix[2,1] = 3; DigMatrix[2,2] = 4; DigMatrix[3,1] = 5; DigMatrix[3,2] = 6; трехмерный числовой массив const Dig3D: array [1..4,1..3,1..2] of Byte = (((1,2),(1,2),(1,2)), ((1,2), (1,2), (1,2)), ((1,2), (1,2), (1,2)), ((1,2), (1,2), (1,2))); одномерный массив символов const CharVect1: array [1..6] of Char = ('P','A', 'S', 'C, 'A', 'L'); или более кратко CharVect2: array [1..6] of Char = 'PASCAL'; Типизированные константы типа "множество" Синтаксис описания констант типа "множество" определяется следующими правилами. Каждый элемент константы типа "множество" может представлять собой либо отдельную константу соответствующего типа, либо интервал значений, состоящий из двух констант, разделенных символом.. (две точки). Примеры констант типа "множество": type Digits = set of 0..9; CharDig = set of '0'..'9'; const DigSetl: Digits = [0, 2, 4, 6, 8]; DigSet2: Digits = [1..3, 5..7]; CharDigSet1: CharDig = [ '0', '2', '4', '6', '8' ]; CharDigSet2: CharDig = ['0'..'3', '5'..'7']; CharSet: set of Char = ['a'..'z','A'..'Z']; Типизированные константы типа "запись" В описании константы типа "запись" указываются как значения всех полей записи, так и их идентификаторы. В типизированных константах типа "запись" не допускаются поля файлового типа. В вариантных константах-записях допускается указание только того варианта полей, который соответствует установленной предварительно константе поля-признака. Поля указываются в том же порядке, в котором они следуют в описании типа. Примеры типизированных констант типа "запись". type Reс = record R: Real; В: Boolean; C: Char; end; ArrayOfRec = array [1..3] of Rec; RecOfArray = record ArrInt: array [1..3] of Integer; ArrChar: array [1..2] of Char; end; RecOfRec = record I: Integer; S: String; Z: Rec; end; const RecElem: Rec = (R: 3.1415; B: True; С: '*'); ArrRec: ArrayOfRec = ((R: 3.1415; B: True; C: '*'), (R: 0.0; B: False; C: '$'), (R: 6.2832; B: True; C: '&')); RecArr: RecOfArray = (Arrlnt: (1,2,3); ArrChar: (' 1', ' 2')); RecRec: RecOfRec = (I: 32767; S: 'PASCAL'; Z: (R: 3.1415; В: True; С: '*'));              

 




Дата добавления: 2015-02-16; просмотров: 44 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Затраты и их классификация в управленческом учете. Точка безубыточности.| Структура культури і її функції

lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав