![](/user_photo/2706_HbeT2.jpg)
- •Федеральное агенство по образованию российской федерации
- •1. Основные категории и понятия информатики
- •Предмет информатики как науки
- •1.2. Информация: структура, форма, измерение
- •2. Техническое и программное обеспечение пэвм
- •2.1. Структура аппаратных средств пэвм
- •2.2. Программное обеспечение пэвм
- •3. Основы алгоритмизации
- •Этапы разработки программ
- •3.2.Формы представления алгоритмов
- •Действие 1
- •Действие 2
- •Классификация и примеры алгоритмических структур
- •3.2.1. Алгоритм линейной структуры.
- •3.2.2. Алгоритм разветвляющейся структуры.
- •Да нет да да Рис 3.11
- •3.2.3. Алгоритмы циклической структуры.
- •4.2. Структура программы на языке Паскаль
- •4.3. Скалярные стандартные типы данных
- •4.4. Скалярные, пользовательские типы данных
- •5. Структурные типы данных
- •Массивы
- •5.3. Записи
- •5.4. Записи с вариантами
- •Множества
- •5.6.Файлы
- •6. Операции над данными скалярных типов. Выражения
- •7. Операторы языка Паскаль
- •7.1. Простые операторы
- •7.2. Структурные операторы
- •Оператор 2
- •8. Примеры программ на языке Паскаль
- •8.1. Пример 1. Арифметические выражения. Оператор присваивания
- •Пример 2. Условные операторы
- •Ввод чисел х, а
- •8.3. Пример 3. Программа обработки одномерного массива
- •8.4. Пример 4. Программа обработки двумерного массива
- •True False True False False
- •8.5. Пример 5. Программа обработки символьных строк
- •8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла
- •9.Разработка программ сложной структуры
- •9.1. Процедуры и функции
- •9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные
- •9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
- •9.4. Использование процедур и функций
- •True False Рис. 9.4
- •9.5. Массивы – параметры процедур и функций
- •True False True False Рис. 9.7
- •True False True False True False Рис 9.9
- •9.6. Рекурсивные процедуры и функции
- •True False Рис. 9.10 True False
- •True False Рис. 9.12
- •9.7. Модули
- •10. Динамические структуры данных
- •Основные определения
- •10.2. Объявление и создание динамических структур данных. Указатели
- •Операции над указателями
- •Программа создания и обработки линейного списка
- •Приложение. Контрольные вопросы
- •Литература
9.Разработка программ сложной структуры
9.1. Процедуры и функции
При создании программы решения сложной задачи выполняется декомпозиция (разделение) задачи на подзадачи, а подзадачи – на еще меньшие подзадачи. Каждая подзадача имеет точно определенное функциональное назначение и интерфейс, т.е. описание входных и выходных данных. Представление алгоритма решения задачи ив виде совокупности связанных между собой подзадач обусловливает структуру сложной программы в виде множества взаимосвязанных подпрограмм.
Подпрограмма– это отдельно запрограммированный алгоритм, который могут использовать другие алгоритмы. Подпрограмма является самостоятельной частью программы, имеет свое имя и оформляется в соответствии с правилами синтаксиса языка программирования высокого уровня.
В языке Паскаль существуют два вида подпрограмм: процедуры и функции. Каждая процедура или функция должна быть описана один раз, но может использоваться внутри программы многократно. Описания процедур и функций размещаются в программе после раздела объявления переменных.
Использование подпрограмм позволяет избежать повторений одной и той же последовательности операторов в программе, упростить разработку и отладку больших программ.
Описание процедуры или функции имеет такую же структуру, как и программа на Паскале, и может включать в себя разделы Label,Const,Type, Var, Procedure,Functionи раздел операторов. Любой из разделов, кроме раздела операторов, может отсутствовать. Процедуры и функции могут включать в себя другие, внутренние процедуры и функции.
Описание процедуры имеет следующий вид:
Procedure<имя> (<список формальных параметров>);
Label
Constразделы описаний меток, констант, типов,
Typeпеременных
Var
Procedureразделы
описаний внутренних
Functionпроцедур
и функций
Begin
<операторы>
end;
Описание функции имеет следующий вид:
Function<имя> (<список формальных параметров>): <тип результата>;
Label
Constразделы описаний меток, констант, типов,
Typeпеременных
Var
Procedureразделы
описаний внутренних
Functionпроцедур
и функций
Begin
<операторы>
end;
Описание процедуры или функции завершается точкой с запятой.
В разделе операторов функции должен быть хотя бы один оператор, который присваивает имени функции значение результата следующего вида:
<имя функции>:=<выражение>;
Тип значения выражения должен быть совместим с типом результата функции.
Предложение Procedure(Function) называется заголовком процедуры (функции). В заголовке в круглых скобках указывается список формальных параметров, с помощью которого осуществляется обмен данными между вызывающей программой или подпрограммой и вызываемой процедурой или функцией. Обмен данными между программами и подпрограммами осуществляется тремя способами:
с помощью глобальных переменных;
с помощью списка формальных параметров;
с помощью возвращаемых значений в случае функции.
Рассмотрим подробно все три способа.
9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные
Областью действияидентификатора называется часть программы, где он может быть использован и определяется местом его объявления. Если идентификаторы объявлены в рамках одной процедуры или функции, не содержащей вложенных процедур и функций, то такие идентификаторы называютсялокальнымии могут использоваться только в этой подпрограмме.
Если программа, процедура или функция содержит вложенные процедуры или функции, то объявленные в ней идентификаторы являются локальными для той подпрограммы, в которой они объявлены, и глобальными для процедур и функций, вложенных в нее.
Понятие «локальный» или «глобальный» следует понимать относительно, т. е. по отношению к конкретной процедуре или функции.
Пример.
Program Scope;
Var a0,b0,c0: integer;
Procedure p1;
Var a1,b1,c1: integer;
Begin
{ допустимо использование локальных переменных a1,b1,c1
и глобальных переменных a0,b0,c0 }
……….
End;
……….
Begin
{ допустимо использование локальных переменных a0,b0,c0}
…….
End.
Общие правила определения области действия для идентификаторов таковы:
действуют все идентификаторы, определенные внутри процедуры или функции;
действуют все идентификаторы окружающего контекста, если они отличаются от имен, объявленных внутри процедуры или функции;
локальные идентификаторы процедуры и функции во внешнем окружении не будут действовать;
в случае совпадения имен глобальной и локальной переменной будет действовать только внутренний, локальный идентификатор.
Локальные переменные создаются при вызове процедуры или функции и существуют только во время ее выполнения. Выделение памяти для локальной переменной происходит автоматически в начале выполнения подпрограммы, а освобождение этой памяти – как только выполнение подпрограммы заканчивается.
Операторы подпрограммы могут обращаться к глобальным данным. Изменение глобальных данных в процедуре или функции называется побочным эффектом. Использование побочного эффекта усложняет отладку программы и ее познаваемость.