- •4. Подпрограммы в Паскале. Подпрограммы-процедуры и подпрограммы-функции.
- •5. Формальные и фактические параметры подпрограмм Паскаля.
- •6. Формальные параметры подпрограмм Паскаля. Параметры-значения и параметры-переменные.
- •11. Тип массив в Турбо- Паскале (понятие, описание, размещение в памяти эвм).
- •16. Статическое и динамическое распределение памяти. Тип-указатель в Турбо Паскале ( понятие, описание, типизированные и нетипизированные указатели).
- •17. Общие представления об объектно-ориентированном программировании. Тип-объект в Турбо Паскале (понятие, особенности описания).
- •Пример.
- •23. Особенности компиляции Паскаль-программы модульной структуры.
- •24. Основный стандартные модули и их краткая характеристика.
- •28. Отладка программ ( понятие, цель, стадии отладки, основные фазы контроля корректности программ).
- •30. Восходящее и нисходящее тестирование программ.
- •37. Основные типы и структуры данных в Фортране. Объявление типа и структур данных в Фортране.
- •43. Простейший способ ввода-вывода данных на Фортране, управляемого списками ввода-вывода.
- •44. Запись операторов ввода-вывода в Фортране при использовании объявления формата данных.
Пример.
Type |
|
ByteRec = record |
|
Lo, Hi: Byte |
|
end; |
|
WordRec = record |
|
Low, High: Word |
|
end; |
|
PtrRec = record |
|
Ofs, Seg: Word |
|
end; |
|
BytePtr = ^Byte; |
|
Var |
|
В: Byte; |
|
W: Word; |
|
L: Longint; |
|
P: Pointer; |
|
begin |
|
W := $1234; |
{присвоение переменной W значения} |
В := ByteRec(W).Lo; |
{преобразование переменной типа Word в запись из двух байтов и выделение младшего байта} |
ByteRec(W).Hi := 0; |
{преобразование переменной типа Word в запись из двух байтов и запись в старший байт значения 0} |
L := $01234567; |
{присвоение переменной L значения} |
W := WordRec(L).Low; |
{преобразование переменной типа Longint в запись из двух слов и выделение младшего слова} |
В := ByteRec(WordRec(L).Low).Hi; |
{преобразование переменной типа Longint в запись из двух слов, выделение младшего слова, преобразование его в запись из двух байтов и выделение старшего байта} |
В := BytePtr(L)^; |
{преобразование переменной типа Longint в указатель и получение значения параметра, на который он указывает} |
Р :=Ptr ($40,$49); |
{Присвоение указателю Р значения с помощью стандартной функции Ptr} |
W := PtrRec(P).Seg; |
{преобразование указателя в запись из двух слов и выделение второго слова (фактически адреса сегмента)} |
Inc(PtrRec(P).Ofs, 4); |
{преобразование указателя в запись из двух слов, выделение первого слова (фактически смещения адреса) и увеличение его величины на 4 с помощью стандартной процедуры Inc} |
end; |
|
Такое преобразование возможно не только, когда исходный и окончательный типы имеют одинаковый размер. Оно возможно также в случае преобразования друг в друга двух порядковых типов, независимо от их размера, а также преобразования параметра без типа
20. Модули в Турбо Паскале( понятие модуля, особенности структуры модуля, средства связи модулей между собой и основной программой, преимущества и недостатки модульного программирования).
Модуль Паскаля – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части.
Здесь UNIT – зарезервированное слово (единица); начинает заголовок модуля;
<имя_модуля> - имя модуля (правильный идентификатор);
INTERFACE – зарезервированное слово (интерфейс); начинает интерфейсную часть модуля;
IMPLEMENTATION – зарезервированное слово (выполнение); начинает исполняемую часть модуля;
BEGIN – зарезервированное слово; начинает инициирующую часть модуля; причем конструкция begin <инициирующая часть> необязательна;
END – зарезервированное слово – признак конца модуля.
Таким образом, модуль Паскаля состоит из заголовка и трех составных частей, любая из которых может быть пустой.
Имя модуля Паскаля служит для его связи с другими модулями и основной программой. USES – зарезервированное слово, после которого должен эти список запрашиваемых модулей. Если в Паскале модули используются, то предложение uses <список модулей> должно стоять сразу после заголовка программы , т.е. должно открывать раздел описаний основной программы. В модулях Паскаля могут использоваться другие модули. В модулях предложение uses <список модулей> может стоять сразу после слова interface или сразу после слова implementation . Допускается и два предложения uses , т.е. оно может стоять и там, и там.
Преимущества и недостатки:
Компиляция
21. Назначения и особенности построения интерфейсной части модуля в Турбо Паскале. Интерфейсная часть открывается зарезервированным словом INTERFACE . В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны быть доступны основной программе и (или) другим модулям Паскаля. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок. объявление подпрограмм в интерфейсной части автоматически сопровождается их компиляцией с использованием дальней модели памяти. Таким образом, обеспечивается доступ к подпрограммам из основной программы и других модулей Паскаля. Следует учесть, что все константы и переменные, объявленные в интерфейсной части модуля Паскаля, равно как и глобальные константы и переменные основной программы, помещаются компилятором Турбо Паскаля в общий сегмент данных (максимальная длина сегмента 65536 байт). Порядок появления различных разделов объявлений и их количество может быть произвольным. Если в интерфейсной части объявляются внешние подпрограммы или подпрограммы в машинных кодах, их тела должны следовать сразу за их заголовками в исполняемой части модуля. В интерфейсной части модулей Паскаля нельзя использовать опережающее описание.
22. Назначение и особенности исполняющей и инициирующей частей модуля в Турбо Паскале.
Исполняемая часть модуля Паскаля начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и блоки, а также метки.
Описанию подпрограммы, объявленной в интерфейсной части модуля Паскаля, в исполняемой части должен предшествовать заголовок, в котором можно опустить список формальных параметров и тип результата для функции, так как они уже описаны в интерфейсной части. Но если заголовок подпрограммы приводится в полном виде, т.е. со списком параметров и объявлением типа результата для функции, то он должен полностью совпадать с заголовком подпрограммы в интерфейсной части. Инициирующая часть завершает модуль Паскаля. Она может отсутствовать вместе с начинающим ее словом BEGIN или быть пустой – тогда вслед за BEGIN сразу следует признак конца модуля.
В инициирующей части размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее работы.