SlideShare a Scribd company logo
1 of 16
ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ
АЛГОРИТМОВ НА ЯЗЫКЕ
Паскаль
НАЧАЛА ПРОГРАММИРОВАНИЯ
Ключевые слова
•подпрограмма
•процедура
•функция
•рекурсивная функция
Подпрограммы
Запись вспомогательных алгоритмов в языках
программирования осуществляется с помощью
подпрограмм.
Структура описания подпрограммы аналогична структуре
главной программы. Описание подпрограммы начинается с
заголовка и заканчивается оператором end.end.
ПроцедураПроцедура ФункцияФункция
ПодпрограммаПодпрограмма
Процедуры
Процедура - подпрограмма, имеющая произвольное
количество входных и выходных данных.
procedureprocedure <имя_процедуры> (<описание параметров-
значений>;
varvar:: <описание параметров-переменных>);
beginbegin
<операторы>
endend;;
Для вызова процедуры достаточно указать её имя со
списком фактических параметров.
Выходные
параметры
Входные параметры:
переменные, константы,
выражения
Алгоритм Евклида
Алгоритм ЕвклидаАлгоритм Евклида
Package
Процедура для нахождения НОД
procedureprocedure nod (a, b: integer; var c:
integer);
beginbegin
while a<>b do
ifif a>b thenthen a:=a-b elseelse b:=b-a;
c:=a
end;end;
Варианты вызова процедуры
Между фактическими и формальными
параметрами должно быть полное соответствие
по количеству, порядку следования и типу.
в качестве параметров-значений
использованы константы
nod (36, 15, z)
nod (x, y, z) в качестве параметров-значений
использованы имена переменных
nod (x+ y, 15, z) в качестве параметров-значений
использованы выражение и константа
!
programprogram n_20;
constconst m: array [1..6] of integer =(16, 32,
40, 64, 80, 128);
varvar I,x,y,z: integer;
procedureprocedure nod (a, b: integer;var c:integer);
beginbegin
while a<>b do
ifif a>b thenthen a:=a-b elseelse b:=b-a;
c:=a
end;end;
beginbegin
x:=m[1];
forfor i:=2 toto 6 dodo
beginbegin
y:=c[i];
nod (x, y, z);
x:=z
endend;
writeln ('НОД=', x)
endend.
Раздел описания операторов
главной программы
Раздел
описания
подпрограммы
Заголовок главной программы
Описание констант
Раздел описания переменных
Программа с процедурой
Функции
functionfunction <имя_функции> (<описание входных данных>):
<тип_функции>;
beginbegin
<операторы>;
<имя_функции> := <результат>
end;end;
Функция - подпрограмма, имеющая единственный
результат, записываемый в ячейку памяти, имя которой
совпадает с именем функции.
В блоке функции обязательно должен присутствовать
оператор <имя_функции>:=<результат>.<имя_функции>:=<результат>.
Перечень формальных
параметров и их типов
Тип результата
!
Для вызова функции её имя со списком параметров можно
в любом выражении, в условиях, в операторе writewrite главной
программы.
Функция поиска максимального из 2-х
programprogram n_20;
varvar a, b, c, d, f: integer;
functionfunction max (x, y: integer): integer;
beginbegin
ifif x>y thenthen max:=x elseelse max:=y;
end;end;
beginbegin
readln (a, b, c, d);
f:= max(max(a, b), max(c, d));
writeln ('f=', f);
end.end.
Заголовок главной программы
Описание переменных
Раздел
описания
подпрограммы
Раздел операторов
главной
программы
Последовательность Фибоначчи
В январе Саше подарили пару новорождённых кроликов. Через
два месяца они дали первый приплод - новую пару кроликов, а
затем давали приплод по паре кроликов каждый месяц.
Каждая новая пара также даёт первый приплод (пару кроликов)
через два месяца, а затем - по паре кроликов каждый месяц.
Сколько пар кроликов будет у Саши в декабре?
Числа 1, 1, 2, 3, 5, 8, … образуют так называемую
последовательность Фибоначчи, названную в честь итальянского
математика, впервые решившего соответствующую задачу ещё в
начале XIII века.
Математическая модель
Пусть f(n) количество пар кроликов в месяце с номером n.
По условию задачи:
f(1) = 1,
f(2) = 1,
f(3) = 2.
Из двух пар, имеющихся в марте,
дать приплод в апреле сможет только
одна: f(4) = 3.
Из пар, имеющихся в апреле, дать
приплод в мае смогут только пары,
родившиеся в марте и ранее:
f(5) = f(4) + f(3) = 3 + 2 = 5.
В общем случае:
f(n)= f(n –1)+ f(n – 2), n >= 3.
Функция
functionfunction f (n: integer): integer;
beginbegin
ifif (n=1) or (n=2) thenthen f:=1
elseelse f:=f(n-1)+f(n-2)
end;end;
Полученная функция рекурсивная - в ней реализован
способ вычисления очередного значения функции через
вычисление её предшествующих значений.
...33333 +++++
Самое главное
Запись вспомогательных алгоритмов в языках
программирования осуществляется с помощью
подпрограмм. В Паскале различают два вида
подпрограмм: процедуры и функции.
Процедура - подпрограмма, имеющая произвольное
количество входных и выходных данных.
Функция - подпрограмма, имеющая единственный
результат, записываемый в ячейку памяти, имя которой
совпадает с именем функции.
Вопросы и задания
Для чего используются подпрограммы?В чём основное различие процедур и функций?Напишите программу вычисления наименьшего
общего кратного следующих четырёх чисел: 36, 54, 18 и
15.
Используйте процедуру вычисления наибольшего
общего делителя двух чисел.
Напишите программу перестановки значений переменных a, b, с
в порядке возрастания, т. е. так, чтобы a < b < c. Используйте
процедуру swap.
procedure swap (var x, y: integer);
var m: integer;
begin
m:=x;
x:=y;
y:=m
end;
Исходные данные вводятся с клавиатуры.
Пример входных данных Пример выходных данных
1 2 3 1 2 3
2 1 3 1 2 3
3 1 2 1 2 3
2 3 1 1 2 3
Напишите программу поиска наибольшего из
четырёх чисел с использованием подпрограммы
поиска наибольшего из трёх чисел.
Видоизмените программу сортировки массива
выбором так, чтобы в ней использовалась процедура
выбора наибольшего элемента массива.
Напишите программу вычисления выражения:
s =1!+2!+3!+…+ n!
Используйте функцию вычисления факториала.
Напишите программу вычисления выражения:
s = x3
+ x5
+ xn
,
где x и n вводятся с клавиатуры.
Используйте функцию вычисления степени.
Напишите функцию, вычисляющую длину отрезка по
координатам его концов. С помощью этой функции
напишите программу, вычисляющую периметр
треугольника по координатам его вершин.
Напишите функцию, вычисляющую площадь
треугольника по целочисленным координатам его
вершин.
С помощью этой функции вычислите площадь
четырёхугольника по координатам его вершин.
Опорный конспект
Запись вспомогательных алгоритмов в языках
программирования осуществляется с помощью
подпрограмм.
Подпрограмма,
имеющая произвольное
количество входных и
выходных данных.
Подпрограмма, имеющая
единственный результат,
записываемый в ячейку
памяти, имя которой
совпадает с именем функции.
ПроцедураПроцедура ФункцияФункция
ПодпрограммаПодпрограмма
Источники информации
1. http://www.26206s029.edusite.ru/images/58b26c928ed0t.jpg - подпрограмма
2. http://www.ifportal.net/images/news/11/11/10/1250784848_number.jpg - поиск
в лабиринте
3. http://www.kencosgrovestudio.com/images/euclid_3.jpg - Евклид
4. http://krolevod.ucoz.ua/forum/9-140-1 - числа Фибоначи
5. http://www.disney-clipart.com/bambi/jpg/Thumper-1-lg.jpg - зайчик
6. http://literacyispriceless.files.wordpress.com/2009/08/recursive-daisy.jpg?
w=497&h=277 - рекурсия

More Related Content

What's hot

Алгоритмическая конструкция следование
Алгоритмическая конструкция следованиеАлгоритмическая конструкция следование
Алгоритмическая конструкция следованиеAndrey Dolinin
 
19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3Ann Eres
 
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальAndrey Dolinin
 
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмовAndrey Dolinin
 
Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеAndrey Dolinin
 
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмовAndrey Dolinin
 
Представление информации в компьютере
Представление информации в компьютереПредставление информации в компьютере
Представление информации в компьютереAndrey Dolinin
 
введение в паскаль
введение в паскальвведение в паскаль
введение в паскальisva69
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика2berkas
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1igorm9so
 
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на rubyEvgeny Smirnov
 
Ruby — Паттерны программирования
Ruby — Паттерны программированияRuby — Паттерны программирования
Ruby — Паттерны программированияEvgeny Smirnov
 

What's hot (20)

8 3-5
8 3-58 3-5
8 3-5
 
Алгоритмическая конструкция следование
Алгоритмическая конструкция следованиеАлгоритмическая конструкция следование
Алгоритмическая конструкция следование
 
19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3
 
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль
 
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмов
 
Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция Повторение
 
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмов
 
Python
PythonPython
Python
 
Представление информации в компьютере
Представление информации в компьютереПредставление информации в компьютере
Представление информации в компьютере
 
Pri3
Pri3Pri3
Pri3
 
введение в паскаль
введение в паскальвведение в паскаль
введение в паскаль
 
Урок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графовУрок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графов
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
 
777
777777
777
 
Ruby строки
Ruby строкиRuby строки
Ruby строки
 
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на ruby
 
Ruby — Паттерны программирования
Ruby — Паттерны программированияRuby — Паттерны программирования
Ruby — Паттерны программирования
 
87
8787
87
 
структура программы
структура программыструктура программы
структура программы
 

Similar to Запись вспомогательный алгоритмов на языка Паскаль

вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмыЕлена Ключева
 
язык програмирования
язык програмированияязык програмирования
язык програмированияOlegmingalev1997
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программированияssusere39acb
 
Презентация. Основы Pascal
Презентация. Основы PascalПрезентация. Основы Pascal
Презентация. Основы PascalEvgen67
 
Cреда программирования
Cреда программированияCреда программирования
Cреда программированияirina8682
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013AliyaAringazinova
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовMikhail Kurnosov
 
трасировка Mpi приложений
трасировка Mpi приложенийтрасировка Mpi приложений
трасировка Mpi приложенийMichael Karpov
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioAndrey Karpov
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) it-people
 
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24MoscowJS
 
Параллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхПараллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхSergey Vasilyev
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
 
практика 5
практика 5практика 5
практика 5student_kai
 
якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)Michael Karpov
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 

Similar to Запись вспомогательный алгоритмов на языка Паскаль (20)

вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмы
 
язык програмирования
язык програмированияязык програмирования
язык програмирования
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программирования
 
лр7
лр7лр7
лр7
 
Презентация. Основы Pascal
Презентация. Основы PascalПрезентация. Основы Pascal
Презентация. Основы Pascal
 
Cреда программирования
Cреда программированияCреда программирования
Cреда программирования
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
паскаль
паскальпаскаль
паскаль
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
трасировка Mpi приложений
трасировка Mpi приложенийтрасировка Mpi приложений
трасировка Mpi приложений
 
паскаль 10кл 14
паскаль 10кл 14паскаль 10кл 14
паскаль 10кл 14
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
 
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
 
Параллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхПараллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данных
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
практика 5
практика 5практика 5
практика 5
 
якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
C++ теория
C++ теорияC++ теория
C++ теория
 

More from Andrey Dolinin

правила сетевого этикета
правила сетевого этикетаправила сетевого этикета
правила сетевого этикетаAndrey Dolinin
 
история вычислительной техники
история вычислительной техникиистория вычислительной техники
история вычислительной техникиAndrey Dolinin
 
информационная культура
информационная культураинформационная культура
информационная культураAndrey Dolinin
 
информационная безопасность
информационная безопасностьинформационная безопасность
информационная безопасностьAndrey Dolinin
 
логика к.поляков
логика к.поляковлогика к.поляков
логика к.поляковAndrey Dolinin
 
история логики и основные логические операции
история логики и основные логические операцииистория логики и основные логические операции
история логики и основные логические операцииAndrey Dolinin
 
представление чисел в памяти компьютера
представление чисел в памяти компьютерапредставление чисел в памяти компьютера
представление чисел в памяти компьютераAndrey Dolinin
 
правила перевода чисел в позиционных системах счисления
правила перевода чисел в  позиционных системах  счисленияправила перевода чисел в  позиционных системах  счисления
правила перевода чисел в позиционных системах счисленияAndrey Dolinin
 
12. задача о напитках
12. задача о напитках12. задача о напитках
12. задача о напиткахAndrey Dolinin
 
12. планируем работу в графическом редакторе
12. планируем работу в графическом редакторе12. планируем работу в графическом редакторе
12. планируем работу в графическом редактореAndrey Dolinin
 
12. обработка информации
12. обработка информации12. обработка информации
12. обработка информацииAndrey Dolinin
 
11. компьютерная графика
11. компьютерная графика11. компьютерная графика
11. компьютерная графикаAndrey Dolinin
 

More from Andrey Dolinin (20)

23 24-211220132336
23 24-21122013233623 24-211220132336
23 24-211220132336
 
правила сетевого этикета
правила сетевого этикетаправила сетевого этикета
правила сетевого этикета
 
история вычислительной техники
история вычислительной техникиистория вычислительной техники
история вычислительной техники
 
информационная культура
информационная культураинформационная культура
информационная культура
 
информационная безопасность
информационная безопасностьинформационная безопасность
информационная безопасность
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
 
Css
CssCss
Css
 
логика к.поляков
логика к.поляковлогика к.поляков
логика к.поляков
 
история логики и основные логические операции
история логики и основные логические операцииистория логики и основные логические операции
история логики и основные логические операции
 
представление чисел в памяти компьютера
представление чисел в памяти компьютерапредставление чисел в памяти компьютера
представление чисел в памяти компьютера
 
правила перевода чисел в позиционных системах счисления
правила перевода чисел в  позиционных системах  счисленияправила перевода чисел в  позиционных системах  счисления
правила перевода чисел в позиционных системах счисления
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
Microsoft excel 2007
Microsoft excel 2007Microsoft excel 2007
Microsoft excel 2007
 
Word
WordWord
Word
 
Microsoft word 2007
Microsoft word 2007Microsoft word 2007
Microsoft word 2007
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
12. задача о напитках
12. задача о напитках12. задача о напитках
12. задача о напитках
 
12. планируем работу в графическом редакторе
12. планируем работу в графическом редакторе12. планируем работу в графическом редакторе
12. планируем работу в графическом редакторе
 
12. обработка информации
12. обработка информации12. обработка информации
12. обработка информации
 
11. компьютерная графика
11. компьютерная графика11. компьютерная графика
11. компьютерная графика
 

Запись вспомогательный алгоритмов на языка Паскаль

  • 1. ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ Паскаль НАЧАЛА ПРОГРАММИРОВАНИЯ
  • 3. Подпрограммы Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм. Структура описания подпрограммы аналогична структуре главной программы. Описание подпрограммы начинается с заголовка и заканчивается оператором end.end. ПроцедураПроцедура ФункцияФункция ПодпрограммаПодпрограмма
  • 4. Процедуры Процедура - подпрограмма, имеющая произвольное количество входных и выходных данных. procedureprocedure <имя_процедуры> (<описание параметров- значений>; varvar:: <описание параметров-переменных>); beginbegin <операторы> endend;; Для вызова процедуры достаточно указать её имя со списком фактических параметров. Выходные параметры Входные параметры: переменные, константы, выражения
  • 5. Алгоритм Евклида Алгоритм ЕвклидаАлгоритм Евклида Package Процедура для нахождения НОД procedureprocedure nod (a, b: integer; var c: integer); beginbegin while a<>b do ifif a>b thenthen a:=a-b elseelse b:=b-a; c:=a end;end;
  • 6. Варианты вызова процедуры Между фактическими и формальными параметрами должно быть полное соответствие по количеству, порядку следования и типу. в качестве параметров-значений использованы константы nod (36, 15, z) nod (x, y, z) в качестве параметров-значений использованы имена переменных nod (x+ y, 15, z) в качестве параметров-значений использованы выражение и константа !
  • 7. programprogram n_20; constconst m: array [1..6] of integer =(16, 32, 40, 64, 80, 128); varvar I,x,y,z: integer; procedureprocedure nod (a, b: integer;var c:integer); beginbegin while a<>b do ifif a>b thenthen a:=a-b elseelse b:=b-a; c:=a end;end; beginbegin x:=m[1]; forfor i:=2 toto 6 dodo beginbegin y:=c[i]; nod (x, y, z); x:=z endend; writeln ('НОД=', x) endend. Раздел описания операторов главной программы Раздел описания подпрограммы Заголовок главной программы Описание констант Раздел описания переменных Программа с процедурой
  • 8. Функции functionfunction <имя_функции> (<описание входных данных>): <тип_функции>; beginbegin <операторы>; <имя_функции> := <результат> end;end; Функция - подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции. В блоке функции обязательно должен присутствовать оператор <имя_функции>:=<результат>.<имя_функции>:=<результат>. Перечень формальных параметров и их типов Тип результата ! Для вызова функции её имя со списком параметров можно в любом выражении, в условиях, в операторе writewrite главной программы.
  • 9. Функция поиска максимального из 2-х programprogram n_20; varvar a, b, c, d, f: integer; functionfunction max (x, y: integer): integer; beginbegin ifif x>y thenthen max:=x elseelse max:=y; end;end; beginbegin readln (a, b, c, d); f:= max(max(a, b), max(c, d)); writeln ('f=', f); end.end. Заголовок главной программы Описание переменных Раздел описания подпрограммы Раздел операторов главной программы
  • 10. Последовательность Фибоначчи В январе Саше подарили пару новорождённых кроликов. Через два месяца они дали первый приплод - новую пару кроликов, а затем давали приплод по паре кроликов каждый месяц. Каждая новая пара также даёт первый приплод (пару кроликов) через два месяца, а затем - по паре кроликов каждый месяц. Сколько пар кроликов будет у Саши в декабре? Числа 1, 1, 2, 3, 5, 8, … образуют так называемую последовательность Фибоначчи, названную в честь итальянского математика, впервые решившего соответствующую задачу ещё в начале XIII века.
  • 11. Математическая модель Пусть f(n) количество пар кроликов в месяце с номером n. По условию задачи: f(1) = 1, f(2) = 1, f(3) = 2. Из двух пар, имеющихся в марте, дать приплод в апреле сможет только одна: f(4) = 3. Из пар, имеющихся в апреле, дать приплод в мае смогут только пары, родившиеся в марте и ранее: f(5) = f(4) + f(3) = 3 + 2 = 5. В общем случае: f(n)= f(n –1)+ f(n – 2), n >= 3.
  • 12. Функция functionfunction f (n: integer): integer; beginbegin ifif (n=1) or (n=2) thenthen f:=1 elseelse f:=f(n-1)+f(n-2) end;end; Полученная функция рекурсивная - в ней реализован способ вычисления очередного значения функции через вычисление её предшествующих значений. ...33333 +++++
  • 13. Самое главное Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм. В Паскале различают два вида подпрограмм: процедуры и функции. Процедура - подпрограмма, имеющая произвольное количество входных и выходных данных. Функция - подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции.
  • 14. Вопросы и задания Для чего используются подпрограммы?В чём основное различие процедур и функций?Напишите программу вычисления наименьшего общего кратного следующих четырёх чисел: 36, 54, 18 и 15. Используйте процедуру вычисления наибольшего общего делителя двух чисел. Напишите программу перестановки значений переменных a, b, с в порядке возрастания, т. е. так, чтобы a < b < c. Используйте процедуру swap. procedure swap (var x, y: integer); var m: integer; begin m:=x; x:=y; y:=m end; Исходные данные вводятся с клавиатуры. Пример входных данных Пример выходных данных 1 2 3 1 2 3 2 1 3 1 2 3 3 1 2 1 2 3 2 3 1 1 2 3 Напишите программу поиска наибольшего из четырёх чисел с использованием подпрограммы поиска наибольшего из трёх чисел. Видоизмените программу сортировки массива выбором так, чтобы в ней использовалась процедура выбора наибольшего элемента массива. Напишите программу вычисления выражения: s =1!+2!+3!+…+ n! Используйте функцию вычисления факториала. Напишите программу вычисления выражения: s = x3 + x5 + xn , где x и n вводятся с клавиатуры. Используйте функцию вычисления степени. Напишите функцию, вычисляющую длину отрезка по координатам его концов. С помощью этой функции напишите программу, вычисляющую периметр треугольника по координатам его вершин. Напишите функцию, вычисляющую площадь треугольника по целочисленным координатам его вершин. С помощью этой функции вычислите площадь четырёхугольника по координатам его вершин.
  • 15. Опорный конспект Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм. Подпрограмма, имеющая произвольное количество входных и выходных данных. Подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции. ПроцедураПроцедура ФункцияФункция ПодпрограммаПодпрограмма
  • 16. Источники информации 1. http://www.26206s029.edusite.ru/images/58b26c928ed0t.jpg - подпрограмма 2. http://www.ifportal.net/images/news/11/11/10/1250784848_number.jpg - поиск в лабиринте 3. http://www.kencosgrovestudio.com/images/euclid_3.jpg - Евклид 4. http://krolevod.ucoz.ua/forum/9-140-1 - числа Фибоначи 5. http://www.disney-clipart.com/bambi/jpg/Thumper-1-lg.jpg - зайчик 6. http://literacyispriceless.files.wordpress.com/2009/08/recursive-daisy.jpg? w=497&h=277 - рекурсия