14
Урок №6. Поняття підпрограми. 10-В клас 12.04.2013 Сьогодні на уроці Рекурсія

Урок №6. Поняття підпрограми

  • Upload
    rhett

  • View
    90

  • Download
    1

Embed Size (px)

DESCRIPTION

Сьогодн і на уроці. Рекурс ія. Урок №6. Поняття підпрограми. 10-В клас 12.04.2013. Розглянемо приклад рекурсивного виклику на обчисленні степеня числа х^n , де х - будь-яке дійсне число, а n - ціле , додатне число. Постає питання , коли і як припинити цей процес - PowerPoint PPT Presentation

Citation preview

Page 1: Урок  №6.  Поняття підпрограми

Урок №6. Поняття підпрограми.

10-В клас12.04.2013

Сьогодні на уроціРекурсія

Page 2: Урок  №6.  Поняття підпрограми

Розглянемо приклад рекурсивного виклику на обчисленні степеня числа х^n, де х - будь-яке дійсне число, а n - ціле, додатне число. Постає питання, коли і як припинити цей процес Тобто рекурсивна функція для обчислення степеня числа буде мати наступний вигляд:

Function Step(x:real; n:integer):real: Begin If n = 0 then Step:=1 else Step:=Step(x,n-1)*x; End; Проаналізуємо роботу цієї функції на прикладі знаходження значення 2,3. При першому виклику функції значення змінних буде дорівнювати відповідно:x = 2n = 3.Так як значення n не дорівнює 0 спрацює гілка else, тобто почне виконуватись такий операторStep:=Step(x,n-1)*x;де x буде дорівнювати 2, і n - теж 2.

Page 3: Урок  №6.  Поняття підпрограми

{ №2.Обчислення степені з натуральним показником. }uses crt; var y,rez:real; n:integer; function stepen(k:integer; x:real):real; begin if k=0 then stepen:=1 else stepen:=x*stepen(k-1,x); end; begin clrscr;writeln('Введіть основу степені: x=');readln (y);writeln('Введіть показник степені: k=');readln (n);rez:=stepen(n,y)жwriteln ('x в степені k=‘, rez);end.

Page 4: Урок  №6.  Поняття підпрограми

Умова: Знайти найбільший спільний дільник двох натуральних чисел n та m за алгоритмом Евкліда:

В даному випадку умовою виходу з рекурсії буде рівність двох чисел n=m. 

Page 5: Урок  №6.  Поняття підпрограми

№3. Обчислення НСД(алгоритм Евкліда)Uses crt;Var x,y:integer;Function NSD (n,m:integer):integer;beginif n=m then NSD:=nElse if n>m then NSD:=NSD(n-m,m)else NSD:=NSD(n,m-n);end;Begin Clrscr;writeln (‘введіть два числа: ');readln (x,y);writeln (‘НСД -> ',NSD(abs(x),abs(y)));End.

Page 6: Урок  №6.  Поняття підпрограми

Uses crt;{Factorial}Var Rez:longint;i:integer;function Factorial (n: integer): integer; begin if n> 0 then Factorial:= Factorial (n-1) * n else if n = 0 then Factorial:= 1 else writeln (‘значення n менше 0') end;Begin Clrscr;For i:=1 to 4 dobeginRez:=Factorial(i);end;writeln('Rezultat -> ',Rez);End.

Page 7: Урок  №6.  Поняття підпрограми
Page 8: Урок  №6.  Поняття підпрограми

Умова: Використовуючи підпрограму обчислення факторіалу, розробити програму обчислення суми факторіалів усіх цілих чисел від 1 до 10.Функція обчислення факторіалу є чи не найстандартнішою, яку приводять в усіх підручниках для пояснення явища рекурсії.

Тоді вихідна програма буде мати наступний вигляд:

Page 9: Урок  №6.  Поняття підпрограми

Procedure Factorial(N:integer; Var F:Extended); BeginIf N<=1 Then F:=1 Else Begin Factorial(N-1, F); F:=F*N End End;

Function Factorial(N:integer):Extended; Begin If N<=1 Then Factorial:=1 Else Factorial:=Factorial(N-1)*N End;

Page 10: Урок  №6.  Поняття підпрограми

Uses crt;Var Rez:longint;i:integer;Function Factorial (n:integer):longint;Beginif n=0then Factorial:=1else Factorial:=Factorial(n-1)*n;End;Begin Clrscr; rez:=0;For i:=1 to 10 dobeginRez:=rez+Factorial(i);end;writeln('Rezultat -> ',Rez);End.

Page 11: Урок  №6.  Поняття підпрограми

uses crt;var n,y:integer;Function Fib(k:integer):integer;beginif k<3 then Fib:=1 else Fib:=Fib(k-1) + Fib(k-2);end;begin clrscr;for n:=1 to 15 dobeginY:=fib(n);writeln(Y:5);end;end.

Складіть програму, яка б обчислила перші N чисел Фібоначчі. Знайдіть за допомогою програми 15-е число Фібоначі.

Page 12: Урок  №6.  Поняття підпрограми

Підпрограми

Це невелика за розміром логічно завершена частина програми,

яка має унікальне ім’я і до якої можна звернутися багато разів з різних місць програми.

Прописують підпрограму в розділі опису та оголошень, тобто над основною частиною програми.

Page 13: Урок  №6.  Поняття підпрограми

Для чого потрібна підпрограма?

Досить часто при розв’язанні складних, об’ємних задач роблять розбивку на підзадачі, і кожна підзадача розв’язується окремо. Наприклад знаходження площі поверхні призми: знаходять площу основи, площу бічних граней, а потім знаходять суму площ.

Page 14: Урок  №6.  Поняття підпрограми

Підпрограми

ПроцедуриФункції

З параметрами Без параметрів