1 / 14

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

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

rhett
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3.  { №2.Обчислення степенізнатуральнимпоказником. } uses crt; vary,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.

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

  5. №3. Обчислення НСД(алгоритм Евкліда) Uses crt; Varx,y:integer; FunctionNSD (n,m:integer):integer; begin if n=mthen NSD:=n Elseif n>mthen NSD:=NSD(n-m,m) else NSD:=NSD(n,m-n); end; BeginClrscr; writeln (‘введіть два числа: '); readln (x,y); writeln (‘НСД -> ',NSD(abs(x),abs(y))); End.

  6. Uses crt;{Factorial} VarRez:longint; i:integer; functionFactorial (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 do begin Rez:=Factorial(i); end; writeln('Rezultat -> ',Rez); End.

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

  8. Procedure Factorial(N:integer; Var F:Extended); • Begin • If N<=1 Then F:=1 ElseBeginFactorial(N-1, F); F:=F*N End End; FunctionFactorial(N:integer):Extended; BeginIf N<=1 Then Factorial:=1 ElseFactorial:=Factorial(N-1)*N End;

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

  10. Складітьпрограму, яка б обчислилаперші N чисел Фібоначчі. Знайдіть за допомогоюпрограми 15-е число Фібоначі. uses crt; varn,y:integer; Function Fib(k:integer):integer; begin if k<3 then Fib:=1 else Fib:=Fib(k-1) + Fib(k-2); end; begin clrscr; for n:=1 to 15 do begin Y:=fib(n); writeln(Y:5); end;end.

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

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

  13. Підпрограми Процедури Функції Без параметрів З параметрами

More Related