
- •Информатика и Программирование
- •4.Понятие процедуры и функции в Паскале. Их назначение, применение, варианты размещения в программе
- •7.Сравнительный анализ возможностей процедуры и функции. Возможности преобразования процедуры в функцию и наоборот
- •8.Понятие рекурсии. Рекурсивные процедуры и функции, их применение, достоинства и недостатки
- •10.Запись как тип данных. Работа с записями: описание записи, оператор присоединения, запись с вариантами. Использование записей
- •12.Статическая и динамическая память. Общие сведения об управлении динамической памятью с помощью стандартных процедур и функций (GetMem, FreeMem; New, Dispose)
- •1. Автоматически по завершении всей программы.
- •2. С помощью стандартной процедуры dispose.
- •3. С помощью стандартной процедуры frеемеm.
- •4. С помощью стандартных процедур маrk и release.
- •13.Динамические структуры данных. Динамические массивы (одномерные и двумерные), работа с ними
- •14.Динамические структуры данных. Списки. Основные виды списков. Действия со списками
- •15.Однонаправленные (линейные) списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •16.Двунаправленные, симметричные списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •17.Кольцевые, циклические списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •18.Бинарное дерево. Основные определения и понятия. Бинарный поиск по дереву. Формирование бинарного дерева этим методом
- •19.Бинарное дерево. Основные операции с бинарными деревьями. Способы обхода бинарного дерева. Варианты поиска по бинарному дереву
- •20.Рекурсия при работе со списками и деревьями. Очередь, стек, дек как формы работы со списком, действия над ними
- •21.Тестирование. Понятие и цель тестирования. Правильное и неправильное определение тестирования. Основные определения. Тестирование методом «чёрного ящика». Тестирование методом «белого ящика»
- •22.Отладка. Общие принципы, методы отладки. Взаимосвязь процессов тестирования и отладки, использование автоматических средств отладки
- •23.Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Отличие объектно-ориентированного подхода от модульного при разработке программ
- •25.Основные отличия языка Object Pascal (Delphi) от Turbo Pascal. Динамические массивы в Delphi: описание, особенности, применение
- •26.Структура модулей в Delphi. Интерфейсная, исполняемая части, инициирующая и завершающая части. Процедуры и функции: особенности в Delphi
- •27.Работа с файлами и папками в Delphi: стандартные процедуры и функции, дополнительные возможности по сравнению с Паскалем, окна диалогов работы с файлами
- •28.Определение термина «сертификация», виды сертификации. Организационная система сертификации
- •29.Основные функции органа по сертификации
- •30.Правовые основы сертификации в Российской Федерации. Требования, предъявляемые к испытательным лабораториям
- •31.Значение метрологии программных средств для повышения их качества и конкурентоспособности
- •32.Качество программного средства и его оценка. Показатели качества программных средств
- •33.Надёжность программных средств и её оценка. Модели надёжности
- •34.Проблемы, цели и задачи технико-экономического анализа разработки программных средств. Показатели технико-экономического анализа
- •35.Оценка экономической эффективности программных средств
- •36.Сертификация, метрология и научно-технический прогресс
7.Сравнительный анализ возможностей процедуры и функции. Возможности преобразования процедуры в функцию и наоборот
Процедура - это поименованное сложное действие, которое представляет собой совокупность операторов, вычисляющих некоторое число результатов в зависимости от некоторого числа аргументов.
Синтаксис заголовка процедуры: PROCEDURE < имя процедуры > [( <список формальных параметров >)];
Функция предназначена для вычисления какого-либо одного значения и используется в выражениях аналогично стандартным функциям.
Синтаксис заголовка функции: FUNCTION < имя функции >[(<список формальных параметров>)]: <тип результата>;
Размещение:
Процедура или функция (общее название - подпрограмма) определяется в разделе описаний основной программы или другой процедуры(функции). Процедура(функция) имеет ту же структуру, что и основная программа, т.е. состоит из заголовка, описательной части и выполняемой части.
Отличие описания функции от процедуры:
результатом обращения к функции может быть одно единственное значение;
идентификатор результата не указывается в списке формальных параметров;
в выполняемой части функции , хотя бы один раз, имени функции должно быть присвоено значение результата ( чаще всего перед выходом из функции);
после списка формальных параметров задается тип результата;
после обращения к функции управление передается на выполнение следующей операции данного выражения (в соответствии с приоритетом).
Преобразование процедуры в функцию:
Только если на выходе процедуры 1 результат
PROCEDURE P1 (A,B,C : Integer; VAR Sum : Integer)
Begin
Sum:=A+B+C;
End;
Преобразование функции в процедуру: ВОЗМОЖНО ВСЕГДА
8.Понятие рекурсии. Рекурсивные процедуры и функции, их применение, достоинства и недостатки
Рекурсия - это способ организации вычислительного процесса, при котором процедура или функция в процессе выполнения входящих в ее состав операторов обращается сама к себе непосредственно, либо через другие процедуры и функции.
Рекурсия может быть прямой или косвенной. При прямой рекурсии оператор вызова подпрограммы содержится непосредственно в ее исполняемой части. Любую рекурсивную процедуру (функцию) можно сделать не рекурсивной. Рекурсивное описание обычно короче и нагляднее, но требует больших затрат машинного времени (за счет повторных обращений) и памяти машины (за счет дублирования переменных). Рекурсивная подпрограмма однократно вызывается извне. Условие полного окончания работы рекурсивной процедуры или функции должно находиться в ней самой.
Рассмотрим пример. Вычислить значение F=M! Рекурсивное определение значение факториала можно записать следующим образом: при М=1 F=1 ; при М> 1 F= M!= M*(M-1)!, т.е. М! определяется через (М-1)!
a) Рекурсивная функция
PROGRAM MAIN;
VAR M: INTEGER;
F:REAL;
FUNCTION FACT (N:INTEGER): REAL;
BEGIN
IF N=1 THEN
FACT:=1
ELSE
FACT:= N* FACT(N-1);
END;
BEGIN
READLN(M);
F:= FACT ( M );
WRITELN (' M!=', F);
END.
b) Рекурсивная процедура
PROGRAM MAIN;
VAR M: INTEGER;
F:REAL;
PROCEDURE FACT(N:INTEGER; VAR F: REAL);
VAR Q : REAL;
BEGIN
IF N=1 THEN Q:=1
ELSE FACT(N-1,Q);
F:=N*Q;
END;
BEGIN
READLN(M);
FACT ( M, F );
WRITELN (' M!=', F);
END.
B варианте а) при м=4 выполняются следующие действия: FACT:=4*FACT(3); FACT:=3*FACT(2); FACT:=2*FACT(1); FACT(1):=1.
При входе в функцию в первый раз отводится память под локальную переменную, соответствующую параметру-значению; ей присваивается значение фактического параметра (М). При каждом новом обращении строятся новые локальные переменные. Так как FACT(1)=1, то выполнение функции заканчивается. После этого выполняются действия: FACT(1):=1; FACT:=2*FACT(1); FACT(2):=2; FACT:=3*FACT(2); FACT(3):=3*2=6; FACT:=4*FACT(3); т.е. FACT=24.
9.Область действия (видимости) имен. Глобальные и локальные переменные. Достоинства и недостатки использования глобальных переменных и параметров при обмене информацией между программами. Рекомендации по применению
Любая подпрограмма представляет собой блок со своей областью описаний. Она может содержать внутри этого блока описания других процедур и функций, а также обращения к ним. Объекты, описанные внутри какого-либо блока, являются по отношению к нему локальными и не доступны внешним блокам. На них можно ссылаться только внутри блока, в котором они описаны. Под объектами понимаются имена констант, типов, переменных, процедур, функций. Объекты, описанные во внешних блоках и не описанные во внутренних, являются глобальными по отношению к внутренним и доступны как во внешних блоках, так и во внутренних. При совпадении имен глобальных и локальных переменных, локальные переменные отменяют действия глобальных в пределах области своего действия.
Если подпрограмма имеет параметры, то идентификаторы из списка формальных параметров являются локальными для этой процедуры (функции) и глобальными для каждой подпрограммы в ней (если таковые имеются).
Глобальная переменная представляет собой переменную, чье имя и значение известны на протяжении всей программы. Для создания глобальной переменной вы объявляете переменную в начале вашего исходного файла вне какой-либо функции. Все функции, которые следуют за таким объявлением, могут использовать эту глобальную переменную.
Достоинства и недостатки глобальных переменных:
Поскольку глобальные переменные могут быть легко изменены любой функцией, они привносят возможность появления трудно обнаруживаемых ошибок, поэтому избегайте чрезмерного использования глобальных переменных в своих программах.
В случае использования процедур и функций без параметров связь данных осуществляется через глобальные переменные. Подпрограммы должны быть, по возможности, независимы от основной программы, поэтому все переменные , нужные только в пределах подпрограммы, должны описываться как локальные. Связь основной программы с процедурой или функцией должна осуществляться, как правило, через список параметров, что придает подпрограммам необходимую гибкость.
Вместе с тем, слишком большое число параметров замедляет работу программы, поэтому переменные заведомо общие в основной программе и подпрограммах целесообразно использовать как глобальные.