Вспомогательные алгоритмы и подпрограммы 9 класс кратко

Обновлено: 04.07.2024

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

В таком случае программа решения поставленной задачи разделяется на основную программу (основной алгоритм) и процедуры (вспомогательные алгоритмы). Каждая процедура должна иметь свое уникальное имя.

Формат команды обращения к процедуре, то есть общий вид, следующий:

Определение процедуры в программе называется ее описанием. Формат описания процедуры:

Нач

Кон

Имя в описании и имя в обращении должны точно совпадать (никаких склонений по падежам!). Описание процедур располагается после основной программы.

УПРАЖНЕНИЕ 1.

2. Выберите командный режим и отдайте исполнителю команды: шаг, поворот, прыжок с помощью функциональных клавиш F1, F2, F3 cсоответственно.

3. Удалите команды и очистите поле для рисования: установите курсор перед первой командой и нажмите на клавиатуре клавишу Delete.

4. Напишите программу для рисования квадрата со стороной 3 шага. Исходное положение: левый нижний угол квадрата, направление на восток. Кенгуренок должен вернуться в исходное положение.

1) Перейдите в программный режим;

2) Наберите следующую программу на поле для написания программ:

Шаг (нажать F2)

Шаг (нажать F2)

Шаг (нажать F2)

Поворот (нажать F3)

Шаг

Шаг

Шаг

Поворот

И т.д.

3) Установите исходное положение Кенгуренка в соответствии с условием задачи (левый нижний угол квадрата, направление на восток). Для этого обратитесь к меню Установкии клавишами F1 и F2 добейтесь нужного положения исполнителя.

5) Пронаблюдайте результат на поле для рисования

ЗАДАНИЕ 1.

Составьте программы рисования символов: Т, Б, Ц. Алгоритмы предварительно запишите в тетрадь.

УПРАЖНЕНИЕ 2.

Составьте программу для рисования квадрата из упр. 1 с использованием процедур:

1. Каков алгоритм решения данной задачи? Составьте в тетради его блок-схему.

2. Перейдите в режим написания программы.

4. Повторите обращение к процедуре сделай еще 3 раза.

5. Далее необходимо описать саму процедуру:

а) нажмите F8,напишите название процедуры

б) выполните описание процедуры:

г) нажмите 8 ,чтобы вставить команду окончания процедуры

Программа должна иметь следующий вид:

6. Выполните программу.

ЗАДАНИЕ 2.

Составьте программы с использованием процедур, предварительно записав их алгоритмы в тетрадь:

1) написания числа 1919. Исходное положение; внизу цифры 1, на восток.

2) рисования фигуры

3) рисования фигуры

Средневековье: основные этапы и закономерности развития: Эпоху Античности в Европе сменяет Средневековье. С чем связано.

Основные признаки растений: В современном мире насчитывают более 550 тыс. видов растений. Они составляют около.

§ 29. Вспомогательные алгоритмы и подпрограммы


Основные темы параграфа:

♦ что такое вспомогательный алгоритм;
♦ обращение к вспомогательному алгоритму (процедуре);
♦ описание вспомогательного алгоритма (процедуры);
♦ метод последовательной детализации;
♦ сборочный метод.

Что такое вспомогательный алгоритм

А сейчас решим следующую задачу.

Задача 2. Пусть требуется составить программу, по которой ГРИС напишет на экране четырехзначное число 1919 (рис. 5.6).

Рисование числа 1919

Конечно, можно поступить так, как в предыдущей задаче, написав одну длинную программу, по которой исполнитель шаг за шагом нарисует эти цифры. Но с очевидностью возникает другая идея: поскольку здесь дважды повторяются цифры 1 и 9, нельзя ли сократить работу, написав программу рисования той и другой цифры только один раз? Это действительно можно сделать.

Алгоритм, по которому решается некоторая подзадача из основной задачи и который, как правило, выполняется многократно, называется вспомогательным алгоритмом.

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

Обращение к вспомогательному алгоритму (процедуре)

В таком случае программа решения поставленной задачи разделяется на основную программу (основной алгоритм) и процедуры (вспомогательные алгоритмы). Каждая процедура должна иметь свое уникальное имя. Для рассматриваемой задачи имена процедур выберем следующими: ЕДИНИЦА и ДЕВЯТЬ. Тогда в основной программе команды обращения к этим процедурам будут такими:

сделай ЕДИНИЦА
сделай ДЕВЯТЬ

По этим командам управление передается соответствующим процедурам, и после их выполнения управление вернется к следующей команде основной программы.

Договоримся, что начальное и конечное состояния ГРИС при вычерчивании каждой цифры будут такими, как показано стрелками на рис. 5.6 (внизу, на восток). У единицы начальное и конечное состояния совпадают. Основная программа:

программа Число 1919
нач
сделай ЕДИНИЦА
прыжок
сделай ДЕВЯТЬ
прыжок
сделай ЕДИНИЦА
прыжок
сделай ДЕВЯТЬ
кон

Данный пример познакомил вас с новой командой из СКИ графического исполнителя — командой обращения к процедуре. Ее формат, т. е. общий вид, следующий:

сделай имя процедуры>

Описание вспомогательного алгоритма (процедуры)

Описание вспомогательного алгоритма

Определение процедуры в программе называется ее описанием. Формат описания процедуры:

Имя в описании и имя в обращении должны точно совпадать (никаких склонений по падежам!). Описание процедур располагается после основной программы.

Добавив к программе описание процедуры, мы тем самым расширили систему команд исполнителя. В данной программе стало возможным использование команды обращения к этой процедуре.

Метод последовательной детализации

Использованный нами подход облегчает программирование сложных задач. Задача разбивается на более простые подзадачи. Решение каждой оформляется в виде вспомогательного алгоритма, а основной алгоритм организует связку между ними.

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

Сборочный метод

Возможен и другой подход к построению сложных программ: первоначально составляется множество подпрограмм, которые могут понадобиться при решении задачи, а затем пишется основная программа, содержащая обращения к ним. Подпрограммы могут быть объединены в библиотеку подпрограмм и сохранены в долговременной памяти компьютера. Такую библиотеку можно постепенно пополнять новыми подпрограммами.

Например, если для управления графическим исполнителем создать библиотеку процедур рисования всех букв и цифр, то программа получения любого текста будет состоять из команд обращения к библиотечным процедурам.

Описанный метод называется сборочным программированием. Часто в литературе по программированию используется такая терминология: метод последовательной детализации называют программированием сверху вниз, а сборочный метод — программированием снизу вверх.

Коротко о главном

Для упрощения программирования сложных задач используются вспомогательные алгоритмы.

Вспомогательный алгоритм — это алгоритм решения некоторой подзадачи из исходной (основной) задачи.

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

Вспомогательный алгоритм должен быть описан. После этого в основном алгоритме можно использовать команду обращения к этому вспомогательному алгоритму.

Метод программирования, при котором сначала записывается основной алгоритм, а затем описываются использованные в нем вспомогательные алгоритмы, называется методом последовательной детализации или программированием сверху вниз. Обратный порядок программирования называется программированием снизу вверх.

Вопросы и задания

1. Что такое основной алгоритм; вспомогательный алгоритм?
2. Чем отличается описание вспомогательного алгоритма от обращения к вспомогательному алгоритму?
3. Каковы правила описания вспомогательных алгоритмов (процедур) для исполнителя ГРИС?
4. Как записывается команда обращения к процедуре в языке исполнителя ГРИС?
5. В чем суть метода последовательной детализации?
6. Что такое программирование снизу вверх; сверху вниз?
7. Используя вспомогательные алгоритмы, запрограммируйте рисование следующих фигур:

Фигуры


И. Семакин, Л. Залогова, С. Русаков, Л. Шестакова, Информатика, 9 класс
Отослано читателями из интернет-сайтов


Наибольшая библиотека рефератов, планирование уроков информатики, материалы для подготовки к урокам информатики, ответы на тесты, изучай информатику 9 класс бесплатно


Если у вас есть исправления или предложения к данному уроку, напишите нам.

Если вы хотите увидеть другие корректировки и пожелания к урокам, смотрите здесь - Образовательный форум.


В этом видеоуроке идёт речь о принципе декомпозиции задачи, а также о том, что такое вспомогательные алгоритмы и подпрограммы. Будет начато изучение подпрограмм в языкеPascal. Учащиеся узнают, что такое процедуры, как они описываются при программировании и для чего применяются.


В данный момент вы не можете посмотреть или раздать видеоурок ученикам

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

Получите невероятные возможности




Конспект урока "Вспомогательные алгоритмы и подпрограммы: процедуры"

· Применение процедур при написании программ.

Ранее мы изучили этапы разработки программы для решения задачи. Одним из таких этапов является построение алгоритма. Однако, в случае если задача сложная, то и алгоритм её решения сразу придумать сложно. Для того, чтобы облегчить построение алгоритма, задачу можно разбить на несколько, более простых, подзадач. Каждую из них можно решить по отдельности. Алгоритмы решения этих подзадач будут частями алгоритма решения исходной задачи. Каждая такая часть алгоритма называется вспомогательным алгоритмом.


При программировании вспомогательные алгоритмы оформляются в виде подпрограмм. Это обеспечивает возможность повторного использования таких алгоритмов. Например, единожды написав подпрограмму для нахождения расстояния между двумя точками, её можно использовать в задаче для нахождения периметра многоугольника, заданного своими вершинами.

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

В программах на языке Pascal, и процедуры и функции оформляются в разделе описания подпрограмм. Он размещается между разделом описания переменных и блоком операторов. Запись процедуры начинается со служебного слова procedure. После него через пробел следует имя процедуры. Оно не должно совпадать с именем программы или с именами переменных. После него через пробел в скобках следует описание формальных параметров. Оно начинается с описания параметров-значений, которые являются входными данными процедуры. Сначала через запятую перечисляются параметры одного типа. После них через двоеточие указывается тип параметров. Параметры разных типов разделяются точкой с запятой. Дальше со служебного слова var начинается описание параметров-переменных, которые являются выходными данными процедуры. Параметры-переменные описываются также, как и параметры-значения. После описания формальных параметров следует точка с запятой. На следующей строке, если нужны дополнительные переменные, следует раздел описания промежуточных параметров процедуры, который оформляется как раздел описания переменных в программе. Дальше между логическими скобками следует блок операторов процедуры. После служебного слова end следует точка с запятой.

procedure ( : ; var : );

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

При выполнении программы в которой содержится процедура выполняются сначала операторы, следующие в теле программы до вызова процедуры. При вызове процедуры фактические параметры, подставляются на места формальных параметров в её описании. После этого выполняются операторы, содержащиеся в операторном блоке процедуры. Дальше значения операторов-переменных, вычисленных при выполнении процедуры, подставляются в соответствующие им фактические параметры. После чего выполнение программы продолжается.

Важно понимать, что областью действия параметров, описанных в подпрограмме, является сама подпрограмма. Так переменные, описанные в подпрограмме, называются локальными переменными для этой подпрограммы. Переменные, описанные во внешней программе, называются глобальными по отношению к подпрограмме. Подпрограмма может обращаться к своим локальным и глобальным параметрам, но при этом внешняя программа не может обращаться к параметрам подпрограммы.

Данную задачу можно разделить на 3 подзадачи: в начале нужно, определить уравнения прямых по 2 точкам, которые на них лежат. Дальше нам нужно по уравнениям определить, являются ли заданные прямые параллельными. Если прямые не являются параллельными, то нужно вычислить координаты точки их пересечения. Так как выполнение первой подзадачи будет одинаковым для обеих прямых, оформим его в виде процедуры.


Давайте разберёмся, как вывести уравнение прямой если она задана 2 точками. Как мы помним уравнение прямой на плоскости имеет вид y = kx + b, где x и y – это координаты любой точки, принадлежащей этой прямой. Подставив в это уравнение координаты двух точек, которыми задана прямая, мы получим два уравнения, составляющих систему.


Нам остаётся лишь решить эту систему уравнений. Перенесём в обоих уравнениях первое слагаемое из правой части в левую часть. Мы получили что в правой части обоих уравнений остался только коэффициент b. Таким образом очевидно, что левые части этих уравнений равны между собой.


В полученном уравнении сгруппируем слагаемые с коэффициентом k в левой части, а слагаемые без него – в правой части.

В левой части полученного уравнения вынесем множитель k за скобки, после чего выражение в скобках перенесём в правую часть. Таким образом, мы получили:


Для того, чтобы вычислить коэффициент b нам достаточно подставить в любое из двух ранее полученных уравнений коэффициент k.

Теперь мы знаем, как вычислить коэффициенты уравнения прямой.

Получив уравнения для обеих прямых, мы можем определить параллельны ли они друг другу. Как мы помним, коэффициент k в уравнении прямой равен тангенсу угла её наклона. Таким образом, если коэффициенты k этих уравнений совпадают, то они имеют одинаковый угол наклона, а значит они параллельны друг другу.

Если же прямые не параллельны, мы должны найти точку их пересечения. Решение этой подзадачи при написании программы мы также оформим в виде процедуры. Так как эта точка будет принадлежать обеим прямым, для её нахождения нужно лишь решить систему, состоящую из двух полученных нами уравнений прямых.


Так как левые части этих уравнений совпадают, то их правые части равны друг другу.

В полученном уравнении в левой части сгруппируем слагаемые, содержащие координату x, а в правой части – оставшиеся 2 слагаемых.

В левой части вынесем за скобки множитель x, после чего выражение в скобках перенесём в правую часть. Таким образом, мы получим:


Для вычисления координаты y, подставим полученное значение x в одно из уравнений прямых.

Напишем программу для решения задачи. Назовём её tochka. Для работы программы нам потребуются переменные, которые будут хранить координаты точек, задающих прямые: x1_1, x1_2, x2_1, x2_2, y1_1, y1_2, y2_1, y1_2. Также нам понадобятся переменные, которые будут хранить коэффициенты уравнений прямых: k1, k2 и b1, b2 и переменные для координат точки пересечения прямых: x и y. Так как в условии не сказано, что они целые, объявим их вещественного типа real.

program tochka;

x1_1, x1_2, x2_1, x2_2, y1_1, y1_2, y2_1, y2_2, k1, k2, b1, b2, x, y: real;

Свидетельство и скидка на обучение каждому участнику

Зарегистрироваться 15–17 марта 2022 г.

Вспомогательные алгоритмы и подпрограммы

Описание презентации по отдельным слайдам:

Вспомогательные алгоритмы и подпрограммы

Вспомогательные алгоритмы и подпрограммы

Рассмотрим задачу Пусть требуется составить программу, по которой ГРИС напише.

Рассмотрим задачу Пусть требуется составить программу, по которой ГРИС напишет на экране четырехзначное число 1919 Так как цифры 1 и 9 повторяются, можно сократить работу, написав программу рисования той и другой цифры только один раз

Вспомогательный алгоритм Алгоритм, по которому решается некоторая подзадача и.

Вспомогательный алгоритм Алгоритм, по которому решается некоторая подзадача из основной задачи и который, как правило, выполняется многократно, называется вспомогательным алгоритмом.

Обращение к вспомогательному алгоритму (процедуре) Программа решения поставле.

Обращение к вспомогательному алгоритму (процедуре) Программа решения поставленной задачи разделяется на основную программу (основной алгоритм) и процедуры (вспомогательные алгоритмы). Каждая процедура должна иметь свое уникальное имя. Для рассматриваемой задачи имена процедур выберем следующими: ЕДИНИЦА и ДЕВЯТЬ. Тогда в основной программе команды обращения к этим процедурам будут такими: делай ЕДИНИЦА делай ДЕВЯТЬ

Основная программа: нач делай ЕДИНИЦА делай ДЕВЯТЬ .

Основная программа: нач делай ЕДИНИЦА делай ДЕВЯТЬ делай ЕДИНИЦА делай ДЕВЯТЬ кон

Вспомогательный алгоритм: На примере алгоритма ЕДИНИЦА : процедура ЕДИНИЦ.

Вспомогательный алгоритм: На примере алгоритма ЕДИНИЦА : процедура ЕДИНИЦА ПОВОРОТ ПОВОРОТ ПОВОРОТ ШАГ ШАГ ШАГ ПОВОРОТ ПРЫЖОК ПРЫЖОК конец процедуры

Описание вспомогательного алгоритма (процедуры): Напишите самостоятельно проц.

Описание вспомогательного алгоритма (процедуры): Напишите самостоятельно процедуры так, чтобы на выходе у Вас получился следующий рисунок:

Ответ к заданию:

Ответ к заданию:

Метод последовательной детализации Метод программирования, при котором сначал.

Метод последовательной детализации Метод программирования, при котором сначала пишется основная программа, в ней записываются обращения к пока еще не составленным подпрограммам, а потом описываются эти подпрограммы, называется методом последовательной (пошаговой) детализации.

Сборочный метод Возможен и другой подход к построению сложных программ: перво.

Сборочный метод Возможен и другой подход к построению сложных программ: первоначально составляется множество подпрограмм, которые могут понадобиться при решении задачи, а затем пишется основная программа, содержащая обращения к ним. Подпрограммы могут быть объединены в библиотеку подпрограмм и сохранены в долговременной памяти компьютера. Такую библиотеку можно постепенно пополнять новыми подпрограммами. Описанный метод называется сборочным программированием.

Задание: Напишите программу, используя процедуры, так, чтобы на выходе получи.

Задание: Напишите программу, используя процедуры, так, чтобы на выходе получился следующий рисунок

На этом уроке вы узнали что такое вспомогательный алгоритм(процедуры) и научи.

На этом уроке вы узнали что такое вспомогательный алгоритм(процедуры) и научились использовать их при написании программ.

  • подготовка к ЕГЭ/ОГЭ и ВПР
  • по всем предметам 1-11 классов

Курс повышения квалификации

Дистанционное обучение как современный формат преподавания


Курс повышения квалификации

Инструменты онлайн-обучения на примере программ Zoom, Skype, Microsoft Teams, Bandicam

  • Курс добавлен 31.01.2022
  • Сейчас обучается 29 человек из 18 регионов

Курс повышения квалификации

Педагогическая деятельность в контексте профессионального стандарта педагога и ФГОС

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

Дистанционные курсы для педагогов

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

5 611 952 материала в базе

  • ЗП до 91 000 руб.
  • Гибкий график
  • Удаленная работа

Самые массовые международные дистанционные

Школьные Инфоконкурсы 2022

Свидетельство и скидка на обучение каждому участнику

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

  • 05.03.2016 4674
  • PPTX 93.2 кбайт
  • 156 скачиваний
  • Рейтинг: 5 из 5
  • Оцените материал:

Настоящий материал опубликован пользователем Килочко Алиса Витальевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

Автор материала

40%

  • Подготовка к ЕГЭ/ОГЭ и ВПР
  • Для учеников 1-11 классов

Московский институт профессиональной
переподготовки и повышения
квалификации педагогов

Дистанционные курсы
для педагогов

663 курса от 690 рублей

Выбрать курс со скидкой

Выдаём документы
установленного образца!

Учителя о ЕГЭ: секреты успешной подготовки

Время чтения: 11 минут

Школы граничащих с Украиной районов Крыма досрочно уйдут на каникулы

Время чтения: 0 минут

Рособрнадзор предложил дать возможность детям из ДНР и ЛНР поступать в вузы без сдачи ЕГЭ

Время чтения: 1 минута

Отчисленные за рубежом студенты смогут бесплатно учиться в России

Время чтения: 1 минута

ГИА для школьников, находящихся за рубежом, может стать дистанционным

Время чтения: 1 минута

В Госдуме предложили ввести сертификаты на отдых детей от 8 до 17 лет

Время чтения: 1 минута

Новые курсы: преподавание блогинга и архитектуры, подготовка аспирантов и другие

Время чтения: 16 минут

Подарочные сертификаты

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

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение администрации может не совпадать с точкой зрения авторов.

Перечень вопросов, рассматриваемых в теме: структурное программирование, подпрограммы, формальные параметры, фактические параметры, параметры-значения, параметры-переменные, процедуры, функции, рекурсия.

Глоссарий по теме: структурное программирование, подпрограммы, процедуры, функции, рекурсия.

Основная литература по теме урока:

Л. Л. Босова, А. Ю. Босова. Информатика. Базовый уровень: учебник для 11 класса. — М.: БИНОМ. Лаборатория знаний, 2017

Дополнительная литература по теме урока:

- И. Г. Семакин, Т. Ю. Шеина, Л. В. Шестакова Информатика и ИКТ. Профильный уровень: учебник для 11 класса. — М.: БИНОМ. Лаборатория знаний, 2012

- Андреева Е. В. Программирование — это так просто, программирование — это так сложно. Современный учебник программирования. — М.: МЦНМО, 2015

Теоретический материал для самостоятельного изучения

На одном из прошлых уроков мы упоминали теорему, суть которой заключается в том, что для любой логической задачи можно составить алгоритм, используя лишь три базовых структуры: следование, ветвление и повторение. Эта теорема является одним из ключевых положений структурного программирования, о котором мы с вами сегодня и будем говорить.

Основные принципы структурного программирования заключаются в том, что:

Давайте узнаем, что такое подпрограммы, какими они могут быть и как их использовать.

На прошлом уроке мы рассмотрели один из базовых алгоритмов обработки числовых данных — алгоритм нахождения НОД натуральных чисел.


Вернемся к нему для решения задачи нахождения НОД трех натуральных чисел a, b, c. Для решения воспользуемся следующим математическим фактом: если a, b, c — три натуральных числа, то НОД (a, b, c) = НОД (НОД (a, b), c). Иначе говоря, нужно найти НОД двух величин, а затем НОД полученного значения и третьего числа.


Аналогичным образом можно было решить задачу нахождения НОД четырех, пяти и т. д. чисел. Понятно, что при этом код программы увеличился бы за счет добавления однотипных блоков. А можно ли каким-либо образом сократить запись алгоритма? Давайте разберемся.

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

Подпрограммы подразделяются на процедуры (procedure) и функции (function).

Описание процедуры в Паскале имеет следующий формат:

Оформим в нашем примере в качестве процедуры подпрограмму нахождения НОД двух натуральных чисел.


Теперь разберемся, какая служебная информация находится в круглых скобка рядом с именем процедуры.

Подпрограмма реализует некоторый частный алгоритм, который вызывается в основной программе. Для реализации алгоритма подпрограмме могут понадобиться некоторые данные из основной программы. Обработав эти данные, подпрограмма возвращает результат основной программе, если в этом есть необходимость. Передавать информацию из основной программы в подпрограмму и наоборот мы можем только через переменные, которые носят специальное название — параметры. Именно они и указываются в круглых скобках рядом с именем процедуры.

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


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


Параметры-значения указываются так:


Чаще всего параметры-значения служат для работы с входной в процедуру информацией, а параметры-переменные — для работы с выходной информацией.

Вернемся к программе nod1. Наша процедура evklid должна получить на вход две переменные, найти для них НОД и передать его в основную программу. Получаем:


Теперь рассмотрим другой вариант программы, решающий ту же задачу. В ней используется процедура без параметров.

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

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

В программе nod2 переменные x, y, nod1 являются локальными внутри процедуры; переменные a, b, c — глобальные. Однако внутри процедуры переменные a, b, c не используются. Связь между внешним блоком и процедурой осуществляется через параметры.

В программе nod2 все переменные являются глобальными. В процедуре evklid нет ни одной локальной переменной. Здесь обмен значениями между основной программой и процедурой осуществляется через глобальные переменные.

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

Формат описания функции следующий:

Как и у процедуры, у функции служебная информация содержит список формальных параметров, среди которых могут присутствовать как параметры-значения, так и параметры-переменные. Все это — аргументы функции. Параметры могут вообще отсутствовать, если аргументы передаются глобально.

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


Сравнивая приведенные выше программы, можно сделать вывод, что программа nod4 имеет определенные преимущества перед другими. Функция позволяет получить результат путем выполнения одного оператора присваивания. Здесь также демонстрируется возможность того, что фактическим параметром при обращении к функции может быть эта же функция.

Среди всевозможных подпрограмм особый интерес представляют так называемые рекурсивные подпрограммы.

Рекурсивная подпрограмма (функция, процедура) — подпрограмма, содержащая в своем описании вызов самой себя.

Пример 1. Как известно, факториал натурального числа определяется следующим образом:

Иначе это можно записать так:

F(n)=F(n–1) · n при n > 1.

В определении факториала через рекурсию имеется условие n ≤ 1, при достижении которого вызов рекурсии прекращается. Такое условие (оно называется граничным) в рекурсивном определении должно присутствовать обязательно!

Пример 2. Алгоритм вычисления функции F(n), где n — натуральное число, задан следующими соотношениями:

F(n)=F(n–1) +3· F(n–2) при n > 2.

Требуется выяснить, чему равно значение функции F(7).

По условию, F(1) = F(2) = 1.

F(3) = F(2) + 3 · F(1) = 1 + 3 · 1 = 4.

F(4) = F(3) + 3 · F(2) = 4 + 3 · 1 = 7.

F(5) = F(4) + 3 · F(3) = 7 + 3 · 4 = 19.

F(6) = F(5) + 3 · F(4) = 19 + 3 · 7 = 40.

F(7) = F(6) + 3 · F(5) = 40 + 3 · 19 = 97.

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


И в завершение вспомним задачу вычисления НОД и модифицируем с использованием рекурсивной функции.


Читайте также: