Написать программу для нахождения функции

Конспект урока Запись вспомогательных алгоритмов на языке Паскаль (9 класс, урок 48, учебник Босова Л.Л.). На уроке происходит знакомство с процедурами и функциями.

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

Решаемые учебные задачи:
1) напомнить сущность понятия вспомогательного алгоритма, ввести понятие подпрограммы;

Написать программу для нахождения НОК двух заданных натуральных чисел. Алгоритм


2) познакомить с правилами оформления подпрограммы в виде процедуры;
3) познакомить с правилами оформления подпрограммы в виде функции;
4) познакомить с примером рекурсивной функции.

Основные понятия, изучаемые на уроке:
— подпрограмма;
— процедура;
— функция;
— рекурсивная функция.

Используемые на уроке средства ИКТ:
— персональный компьютер (ПК) учителя, мультимедийный проектор, экран;
— ПК учащихся.

Электронные образовательные ресурсы
— презентация «Запись вспомогательных алгоритмов на языке Паскаль».

Особенности изложения содержания темы урока

1. Организационный момент (1 минута)
Приветствие учащихся, сообщение темы и целей урока.

2. Повторение (3 минуты)
1) проверка изученного материала по вопросу 10 к §4.7;
2) визуальная проверка выполнения домашнего задания в РТ № 206, 207, 208.
3) рассмотрение заданий, вызвавших затруднения при выполнении домашнего задания.

3. Изучение нового материала (18 минут)
Новый материал излагается в сопровождении презентации «Запись вспомогательных алгоритмов на языке Паскаль».

1 слайд — название презентации;

2 слайд — ключевые слова;
— подпрограмма
— процедура
— функция
— рекурсивная функция

3 слайд — подпрограммы;
Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм.
Структура описания подпрограммы аналогична структуре главной программы. Описание подпрограммы начинается с заголовка и заканчивается оператором end.

4 слайд — процедуры;
Процедура — подпрограмма, имеющая произвольное количество входных и выходных данных.
Описание процедуры имеет вид:
procedure ( ;
var: );
begin

end;
Для вызова процедуры достаточно указать её имя со списком фактических параметров.

Читайте также:
Данная программа не является приложением win32

5 слайд — алгоритм Евклида;
Процедура для нахождения НОД

Решение простых задач на python | Площадь и периметр прямоугольного треугольника


procedure nod (a, b: integer; var c: integer);
begin
while a<>b do
if a>b then a:=a-b else b:=b-a;
c:=a
end;

6 слайд — варианты вызова процедуры;
nod (36, 15, z) — в качестве параметров-значений использованы константы;
(x, y, z) — в качестве параметров-значений использованы имена переменных;
(x+y, 15, z) -в качестве параметров-значений использованы выражение и константа;
В любом случае между фактическими и формальными параметрами должно быть полное соответствие по количеству, порядку следования и типу.

7 слайд — программа с процедурой;
Напишем процедуру для нахождения наибольшего общего делителя
двух чисел с помощью алгоритма Евклида. Используем её для нахождения наибольшего общего делителя следующих шести чисел: 16, 32, 40, 64, 80 и 128. В программе найден первый из элементов, удовлетворяющих условию.
program n_20;
const m: array [1..6] of integer = (16, 32,40, 64, 80, 128);
var i, x, y, z: integer;
procedure nod (a, b: integer;
var c:integer);
begin
while a<>b do
if a>b then a:=a-b else b:=b-a;
c:=a
end;
begin
x:=m[1];
for i:=2 to 6 do
begin
y:=m[i];
nod (x, y, z);
x:=z
end;
writeln (‘НОД=’, x)
end.

8 слайд — функции;
Функция — подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции.
function ( ): ;
begin
;
:=
end;
В блоке функции обязательно должен присутствовать оператор := .
Для вызова функции её имя со списком параметров можно в любом выражении, в условиях, в операторе write главной программы.

9 слайд — Функция поиска максимального из 2-х;
Напишем программу нахождения максимального из четырёх целых чисел, использующую функцию поиска максимального из двух чисел:
program n_20;
var a, b, c, d, f: integer;
function max (x, y: integer): integer;
begin
if x>y then max:=x else max:=y;
end;
begin
readln (a, b, c, d);
f:= max(max(a, b), max(c, d));
writeln (‘f=’, f);
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 слайд – функция;
function f (n: integer): integer;
begin
if (n=1) or (n=2) then f:=1
else f:=f(n-1)+f(n-2)
end;
Полученная функция рекурсивная — в ней реализован способ вычисления очередного значения функции через вычисление её предшествующих значений.

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

Вопросы и задания
14 слайд – вопросы и задания;
Вопросы 1-10 к параграфу 4.7.

4. Практическая часть (20 минут)
Выполнить, рассмотренные на уроке задачи № 3, 4, 10 из учебника на компьютере в среде программирования PascalABC.NET. Скачать ее можно по ссылке на сайте (https://pascalabc.net/).

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

5. Подведение итогов урока. Сообщение домашнего задания. Выставление оценок (3 минуты)
15 слайд — опорный конспект;
16 слайд — Д/з.

Домашнее задание.
§4.8, вопросы № 1-10 к параграфу.

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

Источник: infedu.ru

Рекурсивный метод нахождения чисел Фибоначчи

Программа принимает на вход число членов последовательности Фибоначчи и при помощи рекурсии вычисляет все числа, входящие в эту последовательность.

Решение задачи

  1. Принимаем на вход число членов последовательности и записываем его в отдельную переменную.
  2. Это число передается в качестве аргумента в рекурсивную функцию, которая будет вычислять n -й член последовательности.
  3. В качестве базового условия принимаем то обстоятельство, что число членов последовательности Фибоначчи не может быть меньше единицы либо равно ей. При наступление этого условия рекурсия останавливается.
  4. В противном случае функция вызывается вновь следующим образом: в качестве аргумента нашей рекурсивной функции передается введенное число, уменьшенное на единицу, и к этому прибавляется эта же функция с аргументом, уменьшенным уже на 2.
  5. Каждый вызов функции возвращает одно число, которое мы потом выводим на экран.
Читайте также:
Что вы ожидаете от программы и своей роли

Исходный код

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

def fibonacci(n): if (n

Объяснение работы программы

  1. Пользователь вводит число и оно записывается в переменную n .
  2. Передаем число n в качестве аргумента в рекурсивную функцию, которая вычисляет n-ый член последовательности.
  3. Так как первый член последовательности Фибоначчи по определению не может быть меньше 1, в качестве базового условия принимаем n
  4. В противном случае функция вызывается вновь следующим образом: fibonacci(n-1) + fibonacci(n-2) .
  5. Результаты выводятся на экран при помощи цикла for .

Результаты работы программы

Пример 1: Введите число членов последовательности:5 Последовательность Фибоначчи: 0 1 1 2 3 Пример 2: Введите число членов последовательности:7 Последовательность Фибоначчи: 0 1 1 2 3 5 8

Примечания переводчика

Как найти функцию зная только точки?

Судя по всему, то, о чем Вы говорите — аппроксимация функции. В Википедии более подробна статья про интерполяцию.

По сути, Ваша задача сводится к 2м шагам:
1. По точкам и общим зависимостям выбирается форма функции (например, полиномиальная, экспоненциальная и.т.п).
2. Строится модель, в которой задаётся функция с неизвестными параметрами. Задача — найти такие параметры, чтобы минимизировать функцию невязки(часто это квадрат разности между реальными значениями в заданых точках и значениями модельной функции, см. МНК).

Ответ написан более трёх лет назад
Нравится 4 2 комментария

Вы описываете задачу аппроксимации, это не то. Аппроксимация дает функцию, которая проходит РЯДОМ с точками, но не обязана пройти через все. Интерполяция же — как раз то, что и ищет ТС.

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

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru