Студопедия

Главная страница Случайная страница

Разделы сайта

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






Подпрограммы в Паскале






 

Понятие вспомогательного алгоритма уже рассматривалось в подразд. 1.5.[1]. В языках программирования вспомогательные алгоритмы называются подпрограммами. В паскале различают два вида подпрограмм: процедуры и функции.

Рассмотрим следующий пример: даны два натуральных числа а и b. Требуется определить наибольший общий делитель трех величин: a +b, |a – b|, a b. Запишем это в виде: НОД (a+b, |a-b|, a b).

Идея решения данной задачи состоит в следующем математическом факте: если x, y, z – три натуральных числа, то НОД (x, y, z) = НОД (НОД(x, y,) z). Иначе говоря, сначала следует найти НОД двух величин, а затем НОД полученного значения и третьего числа (попробуйте это доказать).

Очевидно, что вспомогательным алгоритмом для решения поставленной задачи является алгоритм получения наибольшего общего делителя двух чисел. Следовательно, эта задача решается с помощью известного алгоритма Евклида (см. подразд. 1.3.[1]), который запишем в форме процедуры на алгоритмическом языке:

 

процедура Евклид (цел M, N, K);

Нач

пока M < > N

Нц

если M > N

то M: = M – N

иначе N: = N – M

Кв

Кц;

К: = М

Кон

Здесь M и N являются формальными параметрами процедуры, т. е. это параметры-аргументы, а К – параметр-результат.

Основной алгоритм решения исходной задачи следующий:

 

алг задача

цел a, b, c

нач ввод (а, b)

Евклид (а + b, |а - b|, c)

Евклид (с, а * b, с)

вывод (с)

Кон

Процедуры. В отличи от АЯ, где процедура является внешней по отношению к вызывающей программе, процедуры в паскале описываются в разделе описания подпрограмм. Программа решения исходной поставленной задачи на ТурбоПаскале будет иметь следующий вид (см. раздел 6. программа NOD_1).

В данном случае обмен аргументами и результатами между основной программой и процедурой производится через параметры (формальные и фактические). Существует и другой механизм обмена – через глобальные переменные, что будет рассмотрено далее.

Синтаксическая диаграмма описания процедуры показана на рис. 9.

Из диаграммы видно, что процедура может иметь параметры, а может и не иметь. Чаще всего аргументы представляются как параметры-значения (но они могут быть и параметрами-переменными), для передачи результатов используются параметры-переменные.

;


< Описание процедуры> < Заголовок процедуры> < Блок>

 

 

< Заголовок> Procedure < Имя>

(
)


< Список формальных параметров>

 

 

< Формальные параметры>:: = < Параметры-значения> | < Параметры-переменные>

 

:
< Параметры-переменные> Var < Список переменных> < Тип>

 

:
< Параметры-значения> < Список переменных> < Тип>

 

Рис. 9. Синтаксическая диаграмма описания процедуры

 

< Оператор процедуры> < Имя процедуры>

(
)


< Список фактических параметров>

Рис.10. Структура оператора обращения к процедуре

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
ПП.01.ПМ01 625. 14  


Процедура в качестве результата может передавать в вызывающую программу множество значений (в частном случае – одно), а может и не передавать ни одного значения. Теперь рассмотрим правила обращения к процедуре. Обращение к процедуре производится в форме оператора процедуры (рис. 10).

Если описана процедура с формальными параметрами, то и обращение к ней производится оператором процедуры с фактическими параметрами. Правила соответствия между формальными и фактическими параметрами следующие: соответствие по количеству, по последовательности и по типам.

Первый вариант взаимодействия формальных и фактических параметров называется передачей по значению: вычисляется значение фактического параметра (выражения) и это значение присваивается соответствующему формальному параметру. Второй вариант взаимодействия формальных и фактических параметров называется передачей по имени: при выполнении процедуры имя формальной переменной заменяется именем соответствующей фактической переменной (в откомпилированной программе имени переменной соответствует адрес ячейки памяти).

В рассмотренном примере формальные параметры M и N являются параметрами-значениями. Это аргументы процедуры, при обращении к которым первый раз им соответствуют значения выражений A + B и Abs(A – B), а второй раз – значения С и А·В. Параметр К является параметром-переменной, в которой получают результат работы процедуры. В обоих обращениях к процедуре соответствующим фактическим параметром является переменная С, через которую основная программа получает результат.

Теперь рассмотрим пример программы, решающей исходную поставленную задачу с использованием процедуры без параметров (см. раздел 6. программу NOD_2).

Чтобы разобраться в этом примере, требуется рассмотреть понятие область действия описания.

Областью действия описания любого программного объекта (переменной, типа, константы и т.д.) является тот блок, в котором расположено это описание. Если данный блок вложен в другой (подпрограмма), то присутствующие в нем описания являются локальными и действуют только в пределах внутреннего блока. Описания же, стоящие во внешнем блоке, являются глобальными по отношению к внутреннему блоку. Если глобально описанный объект используется во внутреннем блоке, то на него распространяется внешнее (глобальное) описание.

В программе NOD1 переменные M, N, K – локальные внутри процедуры, а переменные А, В, С – глобальные. Однако внутри процедуры переменные А, В, С не используются. Связь между внешним блоком и процедурой осуществляется через параметры.

В программе NOD2 все переменные являются глобальными. В процедуре Evklid нет ни одной локальной переменной (нет и параметров), поэтому используемые в ней переменные

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
ПП.01.ПМ01 625. 14  

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
ПП.01.ПМ01 625. 14    
Заключение

 


За все время, прохождения производственной практики в ООО «ЦИТАДЕЛЬ» я овладел следующими профессиональными компетенциями:

· ПК 1.1. Выполнять разработку спецификаций отдельных компонент.

· ПК 1.2. Осуществлять разработку кода программного продукта на основе готовых спецификаций на уровне модуля.

· ПК 1.3. Выполнять отладку программных модулей с использованием специализированных программных средств.

· ПК 1.4. Выполнять тестирование программных модулей.

· ПК 1.5. Осуществлять оптимизацию программного кода модуля.

· ПК 1.6. Разрабатывать компоненты проектной и технической документации с использованием графических языков спецификаций.

 

Так же мной была выполнена следующая работа:

1. Создана база данных для системы онлайн комплектования ПК

2. Создана автоматизированная система комплектования ПК

3. Решены вопросы администрирования базы данных

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.