Студопедия

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

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

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






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






     

    Понятие вспомогательного алгоритма уже рассматривалось в подразд. 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.