- •Вопросы к экзамену по курсу «Программирование» для потока а-4,6,7,8,9,12-XX
- •Алгоритм и его основные свойства
- •Методы нисходящего и восходящего проектирования
- •Критерии качества программного продукта
- •С точки зрения пользователя[
- •Виды циклов в языке Паскаль. Итерационные циклы
- •Оператор выбора case
- •Способы структуризации алгоритмов
- •Классификация типов данных в Delphi. Тип Real
- •Порядковые типы. Целые типы в Delphi, тип диапазон
- •Порядковые типы. Символьный тип
- •Логический тип. Логические операторы и операции сравнения
- •Реализация
- •Доступные операции
- •Применение
- •Порядковые типы. Перечисляемый тип
- •Тип массив (статический): описание, ввод, вывод
- •Тип запись: описание, ввод, вывод. Оператор Wlith
- •Вввод / вывод записей в Паскале
- •Тип множество: описание, ввод, вывод, операции над множествами
- •Текстовый файл: описание, основные операции. Использование параметров программы для передачи программе имен файлов
- •Назначение и отличия процедур общего вида и функций
- •Описание и вызов процедур
- •Описание и вызов функций
- •Классы формальных параметров: параметры-константы, параметры-значения и параметры переменные. Ключевые слова const, var, out при описании параметров
- •Массивы и записи как формальные параметры процедур и функций
- •Имена процедур и функций как формальные параметры. Процедурный тип
- •Модули в Паскале: назначение, описание, использование. Обязательные и дополнительные разделы
- •Составление функциональных и структурных тестов на примере разработанной процедуры
- •Нисходящее и восходящее тестирование программ
- •Описание констант, переменных и пользовательских типов. Области видимости констант и переменных
- •Описание констант структурированных типов: массивов, записей и множеств
Массивы и записи как формальные параметры процедур и функций
Открытые параметры-массивы дают возможность передавать в подпрограмму массивы, размер которых не фиксируется в объявлении подпрограммы. Этот механизм позволяет создавать максимально гибкие и универсальные подпрограммы для обработки массивов произвольного размера.
Синтаксис описания открытых параметров-массивов:
ИмяПодпрограммы ( VAR P : array of ТипЭлементов );
Это единственное исключение из правила, согласно которому типы формальных параметров в заголовках подпрограмм могут задаваться только посредством идентификаторов (см. замечание выше). Подпрограмма, содержащая открытый массив в списке своих формальных параметров, может быть вызвана с массивом ЛЮБОГО размера (типы элементов массивов из формального и фактического параметров должны, естественно, совпадать). Заметим, что в качетсве открытых массивов допускаются ТОЛЬКО одномерные массивы [1].
Реальные границы переданного в подпрограмму массива можно определить используя две функции Low и High. Эти функции предназначены для определения граничных значений типов и переменных. В данном случае функция Low будет всегда возвращать 0, а функция High - верхнее значение индекса равное (n-1), где n-число элементов в переданном массиве.
type tArr =array [ 1..100 ] of real; function Max ( A: tArr ) : real;
При передаче параметра по ссылке в подпрограмму передается адрес фактического параметра. Поэтому если параметр занимает много памяти (массив, запись), то обычно он также передается по ссылке. В результате в процедуру передается не сам параметр, а его адрес, что экономит память и время работы. При этом если параметр меняется внутри подпрограммы, то он передается с ключевым словом var, если не меняется - с ключевым словом const:
Например:
type Person = record name: string; age,height,weight: integer; end;
procedure Print(const p: Person); begin write(p.name,' ',p.age,' ',p.height,' ',p.weight); end;
procedure IncAge(var p: Person); begin Inc(p.age); end;
Имена процедур и функций как формальные параметры. Процедурный тип
Процедурные типы
Процедурные типы -
Основное назначение этих типов - дать программисту гибкие
средства передачи функций и процедур в качестве фактических параметров
обращения к другим процедурам и функциям.
Для объявления процедурного типа используется заголовок процедур, в
котором опускается ее имя, например:
type
Proc = Procedure (a, b, с : real; Var d : real);
Proc2 = Procedure (var a, b);
РгосЗ = Procedure;
В программе могут быть объявлены переменные процедурных типов, например,
так:
var
р1 : Proc;
ар : array [1..N] of Proc2;
Переменным процедурных типов допускается присваивать в качестве значений
имена соответствующих подпрограмм. После такого присваивания имя переменной
становится синонимом имени подпрограммы.
В отличие от стандартного Паскаля, в Турбо Паскале разрешается
использовать в передаваемой процедуре как параметры-значения, так и
параметры-переменные
Переменные, предназначенные для хранения процедур и функций, называются процедурными. Тип процедурной переменной представляет собой заголовок процедуры или функции без имени. Например:
type procI = procedure(i: integer); funI = function: integer;
Процедурной переменной можно присвоить процедуру или функцию с совместимым типом
Обычно процедурные переменные передаются как параметры для реализации обратного вызова
