[header]Запись вспомогательных алгоритмов на языке Паскаль[/header]
[u]План занятия[/u]
- Введение в тему
- Процедуры
- Функции
[u]Цели занятия[/u]
- научиться создавать процедуру на языке программирования Pascal
- научиться создавать функцию на языке программирования Pascal
[u]Разминка[/u]
- Что такое вспомогательный алгоритм?
- Как записываются вспомогательные алгоритмы для исполнителя Робот?
Введение в тему
Вспомогательными алгоритмами являются подпрограммы. В языке программирования Pascal имеются два вида продпрограмм: процедуры и функции.
Понимание, чем отличаются процедуры от функций, а также умение создавать их, увеличит скорость разработки программ. Например, можно написать программу для нахождения наибольшего общего делителя двух чисел, а можно создать такую процедуру/функцию. Создание процедуры/функции обеспечит возможность её быстрого внедрения в другие программы.
Процедуры
[line][/line][section icon='note']
Процедура — это подпрограмма, в которой может быть любое количество входных и выходных данных.
Общий вид процедуры:
procedure «имя_процедуры» («формальные параметры»; var «имя параметра: тип»);
begin
«исполняемая часть процедуры»
end;
[/section][line][/line]
[img url='https://onlineschool-1.hb.bizmrg.com/LNkR05jZ42ci_1.jpg' name='Рис. 1. Блок-схема задачи по нахождению факториала' float='right' width='40']Рассмотрим пример написания процедуры для алгоритма (рис. 1), написанного на предыдущем занятии.
Учтём свойство алгоритма «массовость» для написания программы и доработаем условие. Теперь нужно будет найти не 5!, а n!, т. е. можно указывать различные значения для которых факториала программа будет рассчитывать факториал.
[/img]
[line][/line][section icon='example']
Пример 1
Написать программу нахождения факториала. Представить решение в виде процедуры.
Рассмотрим, что собой представляет процедура, и научимся писать программу с применением процедур.
Решение
- Для лучшего понимания особенностей описания и размещения процедур и функций сначала напишем данную программу без использования вспомогательных алгоритмов.
[img url='https://onlineschool-1.hb.bizmrg.com/WxQngd0u97yg_2.png' name='Рис. 2. Раздел описания переменных' float='right' width='50']А) опираясь на блок-схему рис. 1, заполним раздел описания переменных var. Пусть имя программы будет factorial (рис. 2)[/img]
Б) в программном блоке организуем просьбу к пользователю ввести число, для которого нужно рассчитать факториал. Присвоим переменной факториал (F) значение равное 1 и организуем в цикле for нахождение произведения чисел по число введенное пользователем. Также организуем вывод факториала и его значения (рис. 3).
[img url='https://onlineschool-1.hb.bizmrg.com/D1FvC6Tnxc72_3.png' name='Рис. 3. Реализация программного блока' width='100'][/img]
Готовая программа будет иметь вид (рис. 4).
[img url='https://onlineschool-1.hb.bizmrg.com/NhY3jyEQSZtP_4.png' name='Рис. 4. Готовая программа к задаче 1 ' width='100'][/img]
Результат нахождения 5! показан на рис. 5.
[img url='https://onlineschool-1.hb.bizmrg.com/IDiNZLD21OZM_5.png' name='Рис. 5. Пример работы программы к задаче 1 ' width='100'][/img]
Исправим программу, чтобы сразу выводился ответ без промежуточных значений.
В) чтобы вывелось только последнее значение, необходимо вынести вывод данных за пределы цикла. Доработанная программа будет иметь следующий вид (рис. 6).
[img url='https://onlineschool-1.hb.bizmrg.com/6IKg3rhCn2H3_6.png' name='Рис. 6. Доработанная программа к задаче 1 (реализация вывода только значения необходимого числа)' width='100'][/img]
Результат нахождения 5! для доработанной программы представлен на рис. 7.
[img url='https://onlineschool-1.hb.bizmrg.com/f6EaZzh1AX3o_7.png' name='Рис. 7. Пример работы доработанной программы к задаче 1' width='100'][/img]
[img url='https://onlineschool-1.hb.bizmrg.com/lk2zDztr1Fbf_8.png' name='Рис. 8. Корректировка раздела var' float='right' width='50']Исправим задачу так, чтобы в ней для нахождения факториала использовалась процедура.
2. Уберём из раздела описания переменных переменную F (рис. 8).[/img]
[img url='https://onlineschool-1.hb.bizmrg.com/sUOPO3cHXG4Y_9.png' name='Рис. 9. Процедура' float='right' width='50']
3. Далее создадим процедуру. Назовем её Factorial и пропишем всё, что относится к вычислению факториала (рис. 9).
4. Далее следует основная часть программы, в которой остаётся обращение к пользователю ввести число, для которого нужно рассчитать факториал, считывание этого числа и обращение к процедуре по имени с выводом его значения (рис. 10).[/img]
[img url='https://onlineschool-1.hb.bizmrg.com/7kFkEpp8q06F_10.png' name='Рис. 10. Ввод-вывод данных в основной программе, обращение к факториалу' width='100'][/img]
Готовая программа с процедурой имеет следующий вид (рис. 11).
[img url='https://onlineschool-1.hb.bizmrg.com/sPh5aJRXu4SP_11.png' name='Рис. 11. Готовая программа к задаче 1 (с процедурой)' width='100'][/img]
Пример работы программы с использованием процедуры представлен на рис. 12.
[img url='https://onlineschool-1.hb.bizmrg.com/udlgzlVLuOqZ_12.png' name='Рис. 12. Пример результата работы программы (с процедурой)' width='100'][/img]
[/section]
[line][/line]
Функции
[line][/line][section icon='note']
Функция — это подпрограмма, после выполнения которой, выводится единственный результат.
Общий вид функции:
function «имя_функции» («формальные параметры»): «тип результата»;
«раздел описания функции»
begin
«исполняемая часть функции»
end;
[/section][line][/line]
Рассмотрим реализацию предыдущей задачи через написание функции.
[line][/line][section icon='example']
Пример 2
Написать программу нахождения факториала. Представить решение в виде функции.
Решение
[img url='https://onlineschool-1.hb.bizmrg.com/liryLCcsRki7_13.png' name='Рис. 13. Корректировка раздела var' float='right' width='50'] 1. В разделе описания переменных оставим только переменную n, отвечающую за вводимое пользователем число (рис. 13).[/img]
[img url='https://onlineschool-1.hb.bizmrg.com/1VHZptvrgSms_14.png' name='Рис. 14. Функция' float='right' width='50'] 2. Опишем функцию под названием Factorial. Зная, что факториал равен 1 при n = 1, иначе факториал находится, как число умноженное на факториал предыдущего числа (рис. 14). [/img]
3. Допишем основную программу (рис. 15).
[img url='https://onlineschool-1.hb.bizmrg.com/2SfDxJN83e9U_15.png' name='Рис. 15. Вывод функции' width='100'][/img]
Готовая программа с функцией имеет следующий вид (рис. 16).
[img url='https://onlineschool-1.hb.bizmrg.com/nxCneeyDm7y7_16.png' name='Рис. 16. Готовая программа к задаче 2 (с функцией)' width='100'][/img]
Пример работы программы с использованием функции представлен на рис. 17.
[img url='https://onlineschool-1.hb.bizmrg.com/z3cmaTwKO9zk_17.png' name='Рис. 17. Пример результата работы программы (с функцией)' width='100'][/img]
Анализируя программу, реализованную как с помощью процедуры, так и через функцию, следует отметить, что конструкция описания процедур и функций в Pascal схожа с описанием обычной программы.
[/section][line][/line]
[section icon='question']
Контрольные вопросы
- Что такое процедура?
- Что такое функция?
- В чём особенности написания процедур на языке Pascal?
- В чём особенности написания функций на языке Pascal?
- Изучите описанные выше программы, реализованные через процедуру и функцию. С какого числа программа неправильно рассчитывает результат вычисления факториала? Что следует исправить, чтобы программы выводили верный результат?
[/section][line][/line][section]