Bahay / Pangkalahatang-ideya ng Windows / Pagtatanghal ng mga pamamaraan at function sa Pascal recursion. Mga pamamaraan at pag-andar sa Pascal. Recursion. Mga Subroutine Kadalasan ang isang gawain ay nangangailangan sa iyo na ulitin ang isang tiyak na pagkakasunod-sunod ng mga pahayag sa iba't ibang bahagi ng programa. Pagpasa ng mga parameter. Mga pormal na parameter

Pagtatanghal ng mga pamamaraan at function sa Pascal recursion. Mga pamamaraan at pag-andar sa Pascal. Recursion. Mga Subroutine Kadalasan ang isang gawain ay nangangailangan sa iyo na ulitin ang isang tiyak na pagkakasunod-sunod ng mga pahayag sa iba't ibang bahagi ng programa. Pagpasa ng mga parameter. Mga pormal na parameter

Mga subroutine Kadalasan ang isang gawain ay nangangailangan ng pag-uulit isang tiyak na pagkakasunod-sunod mga operator sa iba't ibang bahagi ng programa. Upang mailarawan ang pagkakasunud-sunod na ito nang isang beses at mailapat ito nang maraming beses, ang mga programming language ay gumagamit ng mga subroutine. Ang subroutine ay isang espesyal na idinisenyong bloke ng isang programa para sa kasunod na paulit-ulit na paggamit nito sa pangunahing programa makabagong pamamaraan programming - structured programming


Nilulutas ng mga subroutine ang tatlong mahahalagang problema na lubos na nagpapadali sa programming: 1. inaalis nila ang pangangailangan na paulit-ulit na ulitin ang mga katulad na fragment sa teksto ng programa, i.e. bawasan ang laki ng programa; 2. mapapabuti ang istraktura ng programa, na ginagawang mas madaling maunawaan kapag nag-parse; 3.bawasan ang posibilidad ng mga error, dagdagan ang pagtutol sa mga error sa programming at hindi inaasahang kahihinatnan sa panahon ng pagbabago.


Mga Procedure at function Mayroong dalawang uri ng subroutine sa Pascal: procedure (PROCEDURE) at function (FUNCTION). Ang mga pamamaraan at function sa Pascal ay idineklara sa seksyon ng deklarasyon sa likod ng variable na seksyon. ProgramProgramName; VAR ... // seksyon para sa paglalarawan ng mga variable ng pangunahing programa; Pamamaraan Pangalan ng Pamamaraan; var ... begin ...//Procedure body end; simulan //katawan ng pangunahing pagtatapos ng programa.


May mga parameter ang mga function at procedure (mga variable na pumasa sa isang value). Ang mga ito ay may dalawang uri: 1) Pormal - ang mga nasa paglalarawan ng subroutine 2) Aktwal - ang mga inililipat mula sa pangunahing programa patungo sa isang function o pamamaraan. Ang aktwal na mga parameter ay dapat tumutugma sa mga pormal sa dami, pagkakasunud-sunod at uri.




Mga Pamamaraan Ang mga pamamaraan ay ginagamit kapag ang isang subroutine ay kailangang makakuha ng maraming resulta. Mayroong dalawang uri ng mga pamamaraan sa Pascal: mga pamamaraan na may mga parameter at walang mga parameter. Ang isang pamamaraan ay ina-access ng pangalan ng pamamaraan, na maaaring sundan ng mga aktwal na parameter. Kapag tinawag ang isang pamamaraan, ang isang isa-sa-isang pagsusulatan ay itinatag sa pagitan ng aktwal at pormal na mga parameter, pagkatapos ay ililipat ang kontrol sa pamamaraan. Matapos maisakatuparan ang pamamaraan, ang kontrol ay ililipat sa susunod na operator ng programa sa pagtawag pagkatapos tawagin ang pamamaraan.


Halimbawa 1: Isang pamamaraan na walang mga parameter na nagpi-print ng string ng 60 bituin. pamamaraan pr; var i: integer ; magsimula para sa i:=1 hanggang 60 isulat ang (* "); writeln; end; begin pr; end.


Halimbawa 2. Gumawa ng programa para sa pagpapalit ng dalawang numero c=5 at d=7 program obmenDan; var c,d:integer; pagpapalitan ng pamamaraan (a,b:integer); var m:integer; simulan ang m:=a; a:=b; b:=m; writeln(a,b); wakas; begin writeln("Ipasok ang 2 numero: "); readln(c,d); exchange(c,d); writeln(c," ",d); wakas. c5 d 7 a 5 b 7 1) kapag tumatawag sa obmen procedure na may dalawang parameter 5 at 7, ang parehong mga numero 5 at 7 ay inilalagay sa mga variable na a at b, ayon sa pagkakabanggit: 2) pagkatapos ay sa pamamaraan ang mga halaga ng memorya ang mga cell a at b ay muling inayos: c5 d 7 a 7 b 5 3) ngunit sa mga variable c at d ang data ay hindi nagbago, dahil sila ay nasa ibang mga cell ng memorya


Upang ang mga variable na c at d, a at b ay sumangguni sa parehong mga cell ng memorya (kung nagbabago ang mga halaga ng a at b, magbabago din ang mga halaga ng c, d), kapag naglalarawan ng mga pormal na parameter, ito kailangang idagdag ang salitang VAR bago ang mga kinakailangang variable: procedure exchange (var a,b:integer); с5 d 7 a b


Halimbawa 3. Ibinigay ang 3 magkakaibang array ng mga integer (ang laki ng bawat isa ay hindi lalampas sa 15). Sa bawat array, hanapin ang kabuuan ng mga elemento at ang arithmetic mean. proc ng programa; var i, n, sum: integer; sr: tunay; procedure work (r:integer; var s:integer; var s1:real); var mas: array ng integer ; j:integer; simulan ang s:=0; para sa j:=1 upang simulan ang pagbabasa (mas[j]); s:=s+mas[j]; wakas; s1:=s/r; wakas;


(pangunahing programa) magsimula para sa i:=1 hanggang 3 magsisimulang magsulat ("Vvedite razmer",i, "masiva: "); readln(n); trabaho(n, sum, sr); (tawag sa pamamaraan ng trabaho) writeln ("Summa elementov = ",sum); writeln("Srednearifmeticheskoe = ",sr:4:1); wakas; wakas.


Resulta ng programa: Tinatawag ng programa ang pamamaraan ng trabaho nang tatlong beses, kung saan ang mga pormal na variable r, s, s1 ay pinalitan ng aktwal na n, sum, sr. Ang pamamaraan ay pumapasok sa mga elemento ng array, kinakalkula ang kabuuan at average. Ang mga variable na s at s1 ay ibinalik sa pangunahing programa, kaya ang service word na var ay inilalagay bago ang kanilang paglalarawan. Ang mga lokal na parameter mas, j ay may bisa lamang sa pamamaraan. Global - i, n, sum, sr ay magagamit sa buong programa.


Mga Function sa Pascal Ang hanay ng mga built-in na function sa wikang Pascal ay medyo malawak (ABS, SQR, TRUNC, atbp.). Kung ang isang bago, hindi karaniwang pag-andar ay kasama sa programa, dapat itong ilarawan sa teksto ng programa, pagkatapos nito ay ma-access ito mula sa programa. Ang isang function ay ina-access sa kanang bahagi ng assignment operator, na nagpapahiwatig ng pangalan ng function at aktwal na mga parameter. Ang isang function ay maaaring magkaroon ng sarili nitong mga lokal na constant, uri, variable, procedure at function. Ang paglalarawan ng mga function sa Pascal ay katulad ng paglalarawan ng mga pamamaraan.




Halimbawa 4. Sumulat ng subroutine function ng degree a x, kung saan ang a, x ay anumang mga numero. Gamitin natin ang formula: a x = e x ln a program p2; var f, b, s, t, c, d: tunay; (mga pandaigdigang variable) function stp (a, x: real): real; var y: tunay; ( local variables) begin y:= exp (x * ln (a)) ; stp:= y;(pagtatalaga ng pangalan ng function sa resulta ng subroutine kalkulasyon) dulo; (kumpleto ang paglalarawan ng function) magsimula d:= stp (2.4, 5); (pagkalkula ng mga kapangyarihan ng iba't ibang mga numero at variable) writeln (d, stp (5,3.5)); basahin(f, b, s, t); c:= stp (f, s)+stp (b, t); writeln(c); wakas.


Mga Function Ang subroutine ay isang bahagi ng isang programa, na idinisenyo bilang isang hiwalay na syntactic na istraktura at binibigyan ng isang pangalan (isang independiyenteng bloke ng programa), para sa paglutas ng mga indibidwal na problema. Paglalarawan ng pamamaraan: pamamaraan () (seksyon para sa pagpapatupad ng mga lokal na pangalan) Simula (seksyon para sa mga nagpapatupad ng mga operator) Tapusin; Paglalarawan ng function: function (): uri; (seksyon para sa paglalarawan ng mga lokal na pangalan) Magsimula (seksyon para sa mga executable na pahayag) := ; (kinakailangang parameter) End; Pamamaraan ng tawag: (); Function call: := (); 1. Sa kanang bahagi ng assignment operator. 2. Sa pagpapahayag sa kondisyon ng sumasanga operator. 3. Sa output procedure, bilang resulta ng function. Paglalarawan ng mga subroutine Mga Pamamaraan


Ang Recursion Procedure at function sa Pascal ay maaaring tumawag sa kanilang sarili, i.e. may ari-arian ng recursiveness. Ang isang recursive function ay dapat na naglalaman ng kundisyon para sa pagtatapos ng recursive upang hindi maging sanhi ng pag-loop ng program. Ang bawat recursive na tawag ay lumilikha ng bagong hanay ng mga lokal na variable. Iyon ay, ang mga variable na matatagpuan sa labas ng tinatawag na function ay hindi binago.


1 function f (n: integer): integer; magsimula kung n = 1 pagkatapos f:= 1 pa f:= n * f (n -1); (tinatawag ng function f ang sarili nito" title="Halimbawa 5. Lumikha ng recursive function na kinakalkula ang factorial ng numero n gaya ng sumusunod: n! = 1 kung n= 1 n!= (n -1)! · n kung n > 1 function f (n: integer): integer;" class="link_thumb"> 19 !} Halimbawa 5. Lumikha ng recursive function na kinakalkula ang factorial ng numero n gaya ng sumusunod: n! = 1 kung n= 1 n!= (n -1)! · n kung n > 1 function f (n: integer): integer; magsimula kung n = 1 pagkatapos f:= 1 pa f:= n * f (n -1); (function f tawag sa sarili) end; 1 function f (n: integer): integer; magsimula kung n = 1 pagkatapos f:= 1 pa f:= n * f (n -1); (tinatawag ng function f ang sarili nito"> 1 function f (n: integer): integer; simulan kung n = 1 pagkatapos f:= 1 pa f:= n * f (n -1); (tinatawag ng function f ang sarili nito) end; " > 1 function f (n: integer): integer; simulan kung n = 1 pagkatapos f:= 1 pa f:= n * f (n -1); . Create a recursive function that calculates the factorial of the number n as follows: n! = 1 if n= 1 n!= (n -1)! n if n > 1 function f (n: integer): integer; n = 1 pagkatapos f:= 1 pa f:= n * f (n -1);"> title="Halimbawa 5. Lumikha ng recursive function na kinakalkula ang factorial ng numero n gaya ng sumusunod: n! = 1 kung n= 1 n!= (n -1)! · n kung n > 1 function f (n: integer): integer; magsimula kung n = 1 pagkatapos f:= 1 pa f:= n * f (n -1); (tinatawag ng function f ang sarili nito"> !}




Mga subroutine V Turbo Pascal


  • Subroutine Ito ay isang pinangalanan, lohikal na kumpletong pangkat ng mga utos na maaaring tawagan para sa pagpapatupad anumang bilang ng beses mula sa iba't ibang mga lugar sa programa.

Mga dahilan para gumamit ng mga gawain

  • gawing simple ang pagbuo ng malalaking programa sa pamamagitan ng pag-decomposing (paghahati) ng isang gawain sa ilang mga subtasks;
  • higit na kakayahang makita ang programa;
  • pag-save ng memorya.

Mga uri ng subroutine

mga pamamaraan

mga function

  • Pamamaraan ay isang independiyenteng pinangalanang bahagi ng isang programa na idinisenyo upang magsagawa ng mga partikular na aksyon.

Mga pamamaraan na walang mga parameter

  • Format ng pagre-record :

pamamaraan ;

wakas ;

  • Ang lahat ng mga variable na ginagamit sa mga pamamaraan na walang mga parameter ay inilarawan sa pangunahing programa (sa Var module).

Halimbawa . Sumulat ng isang programa upang mahanap ang volume ng isang silindro.

Silindro ng programa;

Var R, H, V: tunay;

Pamamaraan Input ; (pamamaraan ng pagpasok ng data)

Writeln('ipasok ang halaga ng radius');

writeln('ipasok ang halaga ng taas');

Formula ng pamamaraan; { pamamaraan mga kalkulasyon dami }

V: =PI*sqr(R)*H;

Output ng Pamamaraan ; (pamamaraan sa paglabas ng resulta)

writeln('V=',V);


Mga Pamamaraan c mga parameter

  • Maaaring ilarawan ng mga pamamaraan ang mga constant, variable, at iba pang mga pamamaraan.
  • Ang seksyon ng paglalarawan sa mga pamamaraan ay may parehong istraktura tulad ng sa pangunahing programa.
  • Mga lokal na variable– ito ang mga variable na inilarawan sa loob ng pamamaraan.
  • Ang mga lokal na variable ay hindi naa-access sa labas ng pamamaraan.
  • Ang mga pagbabagong nagaganap sa mga lokal na variable sa loob ng isang pamamaraan ay hindi nakakaapekto sa mga halaga ng mga variable na may parehong mga pangalan, ngunit inilarawan sa labas ng pamamaraang ito.

Mga Pamamaraan c mga parameter

  • Mga Global Variable

Halimbawa .

Program zadacha;

Var a, b: integer;

Lokal na pamamaraan;

Var a, x: char; Para sa mga pamamaraan lokal:

magsimula variable x - lokal na variable

a:=’! '; (hindi mababago ng program ang halaga nito)

b:= b +1; variable b – pandaigdigang variable

wakas ; (lahat ng pagbabago sa halaga ng variable na ito sa procedure

Ang BEGIN ay nai-save kahit na pagkatapos na lumabas sa pamamaraan)

b:=100; variable a sa pangunahing programa isang buong uri

lokal ; at sa isang pamamaraan - isang simbolikong uri. Variable a

writeln('a =', a); Ang uri ng integer ay hindi magagamit sa lokal na pamamaraan.

writeln('b=',b);

Resulta ng pagpapatupad ng programa: a=0; b =101.


); simulan ; wakas ; "width="640"

Pagpasa ng mga parameter sa Turbo Pascal

  • 1. Pagpasa ng mga parameter ayon sa halaga
  • Mga parameter-halaga mga variable na inilarawan pagkatapos ng pangalan ng pamamaraan sa mga panaklong. Walang function word na Var sa harap nila.
  • Format ng pagre-record :

pamamaraan (:

variable);

wakas ;


  • pormal na mga parameter .
  • aktwal na mga parameter .

Halimbawa .

Mga parameter ng programa;

Var m, n: integer;

Procedure summa (a, b: integer);

writeln('S=',S);

summa(m,n); o summa(100,10);

Mga variable a At b ay mga pormal na parameter, at mga variable m At n - makatotohanan. Aktwal na Mga Halaga ng Parameter m =100 at n =10 ay ipinapasa sa mga pormal na parameter a At b .

Ang mga pagbabago sa aktwal na mga parameter ay nangyayari lamang sa loob ng isang pamamaraan at hindi nakakaapekto sa kanila sa labas ng pamamaraan.


; Var variable:); simulan ; wakas ; "width="640"

Pagpasa ng mga parameter sa Turbo Pascal

  • 2. Pagpasa ng mga parameter ayon sa pangalan
  • Mga variable na parameter mga variable na inilarawan pagkatapos ng pangalan ng pamamaraan sa mga panaklong at pinangungunahan ng salitang serbisyo na Var.
  • Format ng pagre-record :

pamamaraan (:

variable; Var

variable:);

wakas ;



b pagkatapos min:= b; kung min c pagkatapos min:= c; wakas ; BEGIN writeln('magpasok ng tatlong numero'); readln(a1, b1, c1); writeln('magpasok ng tatlong numero'); readln(a2,b2,c2); minimum(a1,b1,c1, min1); minimum(a2,b2,c2, min2); S:= min1 + min 2; writeln('S=', S); WAKAS. Halimbawa. Ibinigay ang dalawang triple ng mga numero: a 1, b 1, c 1 at a 2, b 2, c 2. Hanapin ang halaga ng kabuuan: S=min (a1, b1, c1) + min (a2, b2, c2) " lapad=" 640"

Var a1,b1,c1,a2,b2,c2, min1, min2, S: tunay;

Procedure minimum (a,b,c: real; Var min: real);

kung min b pagkatapos min:= b;

kung min c pagkatapos min:= c;

writeln('magpasok ng tatlong numero');

readln(a1, b1, c1);

writeln('magpasok ng tatlong numero');

readln(a2,b2,c2);

minimum(a1,b1,c1, min1);

minimum(a2,b2,c2, min2);

S:= min1 + min 2;

writeln('S=', S);

Halimbawa. Ibinigay ang dalawang triple ng mga numero: a 1, b 1, c 1 at a 2, b 2, c 2. Hanapin ang halaga ng kabuuan: S=min (a1, b1, c1) + min (a2, b2, c2)


Function ay isang subroutine na ang resulta ay isang tiyak na halaga.

  • Format ng pagre-record :

function (:

wakas ;

  • Sa katawan ng function, ang pangalan ng function ay dapat italaga sa resulta ng pagpapatupad nito.
  • Kapag tumatawag sa isang function, ang pangalan nito, kasama ang listahan ng mga aktwal na parameter, ay dapat isama sa expression bilang isang operand.

Programa vyrazenie;

function modul (a: real): real;

writeln('ipasok ang variable na halaga');

y:= modul(x-3) + modul(x+6);

writeln('y=', y);

Halimbawa . Kalkulahin ang halaga ng expression: y = | x -3 | + | x +6 |

Slide 1

Slide 3

Mga subroutine: mga global at lokal na variable Ang lahat ng subroutine ay dapat ilarawan sa seksyon ng paglalarawan. Dapat may pangalan ang bawat subroutine. Ang impormasyon sa pagitan ng pangunahing programa at mga subroutine ay ipinapadala ng mga pandaigdigang parameter (mga variable) na gumagana sa anumang bahagi ng programa at may pangalang inilarawan sa pangunahing programa. Ang mga lokal na parameter (mga variable) ay maaaring gamitin sa loob ng isang subroutine - ang kanilang mga pangalan at halaga ay may kahulugan lamang sa loob ng mga hangganan ng isang ibinigay na subroutine at hindi magagamit sa programa ng pagtawag

Slide 4

Pormal at aktwal na mga parameter Sa paglalarawan ng mga subroutine, ang mga parameter ay ipinahiwatig lamang ng mga pangalan, kaya tinawag silang pormal. Wala silang kahulugan hanggang sa tinatawag ang subroutine. Naglalaan lamang sila ng espasyo para sa aktwal na mga parameter, inaayos ang kanilang numero at uri ng data. Mga uri ng aktwal na parameter: Isinasaad ng mga parameter ng value kung anong value ang dapat italaga sa isang partikular na subroutine na parameter. Pagkatapos ng subroutine, kinukuha nila ang kanilang mga dating value, kahit na binago ang mga ito sa subroutine. Ang mga variable na parameter sa isang subroutine ay pumalit sa mga pormal, maaari nilang baguhin ang kanilang halaga sa panahon ng pagpapatupad ng subroutine at i-save ang mga pagbabago kapag lumabas sa subroutine (ang mga variable na parameter ay nauuna sa keyword na Var).

Slide 5

Slide 6

Paglalarawan ng pamamaraan Program Pr1; Const...Type...Var...Procedure(); Naglalarawang bahagi Simula Pamamaraan katawan Wakas; Simulan...(); ... wakas. Kapag tinawag ang isang pamamaraan, ang mga pormal na parameter ay pinapalitan ng mga aktwal.

Slide 7

Ang pamamaraan para sa pagkalkula ng kabuuan ng dalawang numero ng programa pr1; Usescrt; Var a,b,s:real; procedure summa(x,y:real;var z:real); simulan ang z:=x+y; wakas; simulan ang clrscr; writeln("ipasok ang a,b"); readln(a,b); summa(a,b,s); writeln(" kabuuan ng mga numero ",a:3:1," at ",b:3:1," = ",s:3:1); readln; wakas. x,y,z – mga pormal na parameter, mga lokal na variable a,b,s – mga global na variable a,b,s – aktwal na mga parameter x y z a b s Mga parameter ng halaga Variabel ng parameter

Slide 8

Slide 9

Slide 10

Kalkulahin ang halaga ng expression na a:=(3n!+2m!)/(m+n)! Upang mahanap ang factorial, anong uri ng mga variable ang angkop na gamitin? programa pr2; Usescrt; Var m,n,x,y,z:integer; a:totoo; procedure fact(d:integer;var q:integer); var i:integer; simulan q:=1; para sa i:=1 hanggang d gawin q:=q*i; wakas; simulan ang clrscr; writeln("ipasok ang mga halaga n, m"); readln(n,m); katotohanan(n,x); katotohanan(m,y); katotohanan(m+n,z); a:=(3*x+2*y)/z; writeln("ang halaga ng expression na may m= ",m:4," at n= ",n:4,"ay katumbas ng",a:8:3); readln; wakas. N!=1·2·3·…· N

Slide 11

Input output ng mga elemento ng isang one-dimensional array Ang Random(X) function ay bumubuo ng random na numero mula 0 hanggang X ng isang integer o totoong uri (bago tawagan ang function, dapat itong masimulan gamit ang Randomize procedure). Kung hindi tinukoy ang X parameter, ang resulta ay magiging uri ng Real sa hanay mula 0.0 hanggang 1.0. Upang makakuha ng hanay ng mga random na integer na numero mula sa random na range(B-A+1)+A Gawain: Bumuo ng input ng mga elemento ng isang one-dimensional array gamit ang random number generator (value range from -10 to 20) at ang output ng mga elemento bilang isang pamamaraan. Para sa A=-10 B=20 random(20-(-10)+1)+(-10)

Slide 12

Slide 13

Slide 14

Paglalarawan ng function Ang mga function ay idinisenyo upang kalkulahin ang isang halaga lamang, 1. Samakatuwid, ang unang pagkakaiba nito ay ang pamamaraan ay maaaring magkaroon ng mga bagong halaga para sa ilang mga parameter, ngunit ang function ay may isa lamang (ito ang magiging resulta). 2. Ang pangalawang pagkakaiba ay nasa pamagat ng function. Binubuo ito ng salitang FUNCTION, na sinusundan ng pangalan ng function, pagkatapos ay isang listahan ng mga pormal na parameter sa panaklong, na sinusundan ng uri ng resulta ng function, na pinaghihiwalay ng colon. 3. Ang function body ay dapat maglaman ng hindi bababa sa isang assignment operator, kung saan ang kaliwang bahagi ay naglalaman ng pangalan ng function, at ang kanang bahagi ay naglalaman ng halaga nito. Function (): Descriptive Begin Function body:=; Wakas;

Slide 15

Kalkulahin ang halaga ng expression na a:=(3n!+2m!)/(m+n)! programa fn2; Usescrt; Var m,n:integer; a:totoo; function fact(d:integer):longint; var i:integer; q:longint; simulan q:=1; para sa i:=1 hanggang d gawin q:=q*i; katotohanan:=q; wakas; simulan ang clrscr; writeln("ipasok ang mga halaga n, m"); readln(n,m); a:=(3*fact(n)+2*fact(m))/fact(m+n);; writeln("ang halaga ng expression na may m= ",m:4," at n= ",n:4,"ay katumbas ng",a:8:3); readln; wakas.

Slide 16

Sumulat ng isang programa na makakahanap ng ab, iyon ay bth degree mga numerong A, kung saan ang A at B ay mga integer at B>0, na ipinasok mula sa keyboard. Bumuo ng isang programa sa pamamagitan ng pagpapalit ng function sa procedure program pr2; Usescrt; Var a,b:integer; c:longint; Function stepen(x,y:integer):longint; var i:integer; s:mahaba; simulan ang s:=1; para sa i:=1 sa y do s:=s*x; Hakbang:=s; wakas; simulan ang clrscr; writeln("ipasok ang mga halaga a, b"); readln(a,b); C:=hakbang(a,b); writeln("s=",s); readln; wakas.

Slide 17

Slide 18

Mekanismo para sa pagpasa ng mga parameter sa mga function at procedure Ano ang ipi-print ng procedure at ano ng program? Global variable Mga lokal na variable a b 3 3 -3 Address c a b c 48 Address c A:=b+3 B:=3*a C:=a+b Estado C 24 5 8 Reply

Slide 19

Recursion sa Pascal Guro: Tlekhurai Yu.V. Institusyong pang-edukasyon ng munisipyo "Lyceum No. 8" Ano ang nakikita mo sa mga kuwadro na gawa? Ang kababalaghang ito sa sining ay tinatawag recursion "Upang maunawaan ang recursion, kailangan mo munang maunawaan ang recursion." recursion - bahagyang kahulugan ng isang bagay sa pamamagitan ng sarili nito, kahulugan ng isang bagay gamit ang mga naunang tinukoy.

Scientifically speaking:

Recursion

- isang paraan ng pagtukoy sa isang klase ng mga bagay o pamamaraan sa pamamagitan ng unang pagtukoy ng isa o higit pa (karaniwan ay simple) ng mga pangunahing kaso o pamamaraan nito, at pagkatapos ay tinukoy sa kanilang batayan ang mga patakaran para sa pagbuo ng klase na tinukoy. Recursion sa wika at panitikan Ang isang klasikong halimbawa ng infinite recursion ay dalawang salamin na nakalagay sa tapat ng isa't isa: dalawang koridor ang nabuo sa kanila mula sa kumukupas na mga pagmuni-muni ng mga salamin. Ang isa pang halimbawa ng walang katapusang recursion ay self-excitation effect (positibong feedback) sa mga electronic amplification circuit , kapag ang signal mula sa output ay umabot sa input, ay pinalakas, muling umabot sa input ng circuit at pinalakas muli. Ang mga amplifier kung saan pamantayan ang operating mode na ito ay tinatawag na mga self-oscillator. Isang halimbawa ng recursive na entry sa diksyunaryo: “The priest had a dog...” - tipikal na recursion Ilang kuwento ni Stanislaw Lem ay nakatuon sa mga insidenteng may walang katapusang recursion: Isang kuwento tungkol sa mga sepulk (“The Star Diaries of John the Quiet”), kung saan ang bayani ay sunud-sunod na lumilipat mula sa isang artikulo tungkol sa mga sepulk patungo sa isang artikulo tungkol sa sepulcar , mula doon sa isang artikulo tungkol sa sepulcaria, na muling naglalaman ng isang sanggunian sa artikulong "sepulcaria". Isang kuwento tungkol sa isang matalinong makina na may sapat na katalinuhan at katamaran upang bumuo ng katulad nito upang malutas ang isang partikular na problema, at ipagkatiwala ang solusyon dito (ang resulta ay isang walang katapusang recursion, kapag ang bawat isa bagong sasakyan

bumuo ng isang katulad sa kanyang sarili at ibinigay ang gawain sa kanya).

Ang recursion sa programming ay isang paraan ng pag-oorganisa ng isang computational process kung saan ang isang procedure o function ay tumutukoy sa sarili nito sa panahon ng pagpapatupad ng mga constituent operator nito.

Upang ang ganoong tawag ay hindi maging walang katapusang, ang teksto ng subroutine ay dapat maglaman ng isang kundisyon kapag naabot na kung saan walang karagdagang tawag na magaganap. kaya, ang isang recursive na tawag ay maaari lamang isama sa isa sa mga sangay ng subroutine. Paglalarawan ng mga variable: n – bilang ng mga elemento ng serye; a, b - mga halaga ng huling dalawang elemento ng serye; c – buffer ("reserba") variable; ako – counter. Algorithm para sa paglutas ng problema: 1. Kunin ang halaga ng n. 2. Italaga sa a at b ang mga halaga 0 at 1 ayon sa pagkakabanggit (ito ang mga unang numero ng serye ng Fibonacci). Ipakita ang mga ito sa screen. 3. Simula sa ika-3 elemento hanggang n: a) ipakita ang kabuuan ng a at b, b) iimbak ang halaga ng variable b sa c, c) isulat ang kabuuan ng a at b hanggang b, d) italaga ang halaga ng c. Pascal program gamit ang pag-ulit: programang Fibonacci; var a,b,c,i,n: integer; magsimula write("n = "); readln(n); a:= 0; sumulat (a," "); b:= 1; isulat (b," "); para sa i:=3 sa n gawin magsimula write(a+b," "); c:= b;<= 1 Then f:= n else f:= f(n– 1) + f(n - 2); end; Program chislaFibonacci; var n,i: integer; a: longint; function fib (n: integer): longint; begin If n <= 1 Then fib:= n else fib:= fib(n– 1) + fib(n - 2); End; begin write(‘n=’); readln(n); for i:=0 to n do begin A:= fib (n); write (‘ ’,a); end; readln; end. Домашнее задание Написать программу нахождения НОД двух натуральных чисел, используя алгоритм Евклида и рекурсию Даны два натуральных числа b:= a + b; a:=c; wakas; readln; b:= a + b;= wakas. Pascal program gamit ang recursion: b:= a + b;,Ang recursive na kahulugan para sa pagkalkula ng mga numero ng Fibonacci ay ang mga sumusunod: Ang kahulugan ng mga numerong Fibonacci ay madaling ma-convert sa isang recursive function: function f(n: Integer): longint; readln; b:= a + b;>wakas. Pascal program gamit ang recursion: b:= a + b;,simulan Kung n A At,b. readln; b:= a + b;< wakas. Pascal program gamit ang recursion: b:= a + b;,simulan Kung n A b:= a + b;,Kung b,

  • pagkatapos ay node (
  • b)=a.
  • b)=
  • node (

a -b

Gawain. Lumikha ng recursive program na lulutasin ang problemang iniharap sa itaas tungkol sa Towers of Hanoi na may bilang ng mga disk na katumbas ng n (n = 1, 2, ...). Solusyon. Ipasok natin ang mga pangalan para sa mga spiers: a, b, c . Hayaan hanoi(n,a,b,c) a- ang kinakailangang function na nagbabalik ng pagkakasunud-sunod ng mga paggalaw ng mga disk na may b sa c gamit a- ang kinakailangang function na nagbabalik ng pagkakasunud-sunod ng mga paggalaw ng mga disk na may b ayon sa mga alituntuning inilarawan sa itaas. Kapag n=1 alam natin kung paano lutasin ang problema. Kailangan mo lang gawin ang "move" operation a- ang kinakailangang function na nagbabalik ng pagkakasunud-sunod ng mga paggalaw ng mga disk na may " Ipagpalagay natin na malulutas natin ang problemang ito para sa n – 1 disk. Ilipat ang n–1 na mga disk mula sa Sa a- ang kinakailangang function na nagbabalik ng pagkakasunud-sunod ng mga paggalaw ng mga disk na may b. Susunod, ilipat ang natitirang disk mula sa c at sa wakas ay ilipat ang n–1 na mga disk mula sa b. sa Input ang data : bilang ng mga disc sa peg a; itatak : pagkakasunud-sunod ng mga aksyon; Step0:(tukuyin ang uri ng variable); Hakbang 1: (paglalarawan ng pamamaraan ng hanoi, na nagpapakita ng pagkakasunud-sunod ng mga aksyon); Hakbang1.1:(ilipat ang (n-1) mga disk mula sa peg a hanggang sa peg b);

  • Hakbang1.2:(ilipat ang nth disk mula a hanggang c);
  • Hakbang1.3:(ilipat ang (n-1) disk mula b hanggang c);
  • (Ang mga hakbang 1.2-1.3 ay isinagawa nang recursively);
  • Hakbang 2: (pangunahing programa);
  • Hakbang 2.1: (ipasok ang bilang ng mga disk);
  • Hakbang2.2: (pagtawag sa pamamaraan ng hanoi).
  • Paglutas ng problema sa Pascal Program bahnya; var n: integer; a,b,c: char;
  • procedure hanoi(n: integer;a,b,c: char); simulan kung n>0 pagkatapos ay simulan hanoi(n-1,a,c,b); writeln ("Perestit disk so sterzhnya ",a," na sterzhen" ",b); hanoi(n-1,c,b,a); end; end; Simulan ang pagsulat ("Vvedite naturalnoe chislo n"); readln ( n); a:="a"; b:="c";
  • X
  • Hanapin ang bilang ng mga positibong numero sa apat na A, B, C, D
Mga sagot para sa malayang gawain No. 2 Simpleng programa;<>var n, m, s: integer;

function prost(m, n:integer): boolean;

simulan Kung n = m Pagkatapos prost:= true else prost:= (n mod m

0) at prost (m+1, n);

Wakas;

simulan ang write('n=');

Readln(n);


  • M:=2;
  • Kung prost(m,n) pagkatapos ay isulat ang (n,'prostoechislo') Iba pa isulat (n,'sostavnoe');

  • readln;

  • wakas.

pagsasalin ng programa;

procedure dvd(n:longint);

Kung n >1 Pagkatapos dvd (n div 2);

write(n mod 2);

ika-8 baitang. Programming sa ABC Pascal

Guro ng Informatics ng NIS ng Uralsk Physics and Mathematics Zelenov Boris Aleksandrovich



Gumagamit ang mga mag-aaral ng mga pamamaraan at function upang malutas ang mga problema

Natututo ang mga mag-aaral na lutasin ang malalaking problema sa pamamagitan ng paghahati-hati sa mga ito sa mas maliliit

Bumuo ng isang konsepto ng mga pamamaraan at mga function sa isang programming language.

Alam ng mga mag-aaral ang mga konsepto ng "procedure" at "functions", tinutukoy ang pormal at aktwal na mga parameter

Mga Inaasahang Resulta - Mga Deskriptor:

1. Alam ang kahulugan ng "pamamaraan"

2.Alam ang kahulugan ng "function"




3. Tinutukoy ang aktwal at pormal na mga parameter

4.Nakakaiba sa pagitan ng value at variable na mga parameter


5. Nakahanap ng tawag sa isang procedure o function sa program code

Karaniwang plano ni Elvira

1. Alisin ang mga papel

1. Alisin ang mga papel

2. Diligan ang mga bulaklak

3. Hugasan ang mga mesa

4. Punasan ang salamin

Pagtatapos ng algorithm


Paano pagbutihin ang organisasyon ng prosesong ito?

Paksa ng aralin

Subroutine Mga subroutine:

Ishki bagdarlama

Subroutine


  • Pamamaraan
  • Parameterler
  • Mga kapaki-pakinabang na parirala:

  • Upang maipasa ang mga variable na halaga sa isang pamamaraan (function), ang aktwal na mga parameter ay ginagamit...

Upang ilarawan ang pamamaraan, dapat mo munang..., pagkatapos...


  • Ang konsepto ng isang subroutine

  • Kahulugan

- Ito ay isang hiwalay na functionally independent na bahagi ng programa.



Mga subroutine

  • Mga Pamamaraan

alisin ang pangangailangan na paulit-ulit na ulitin ang mga katulad na fragment sa teksto ng programa;


Mga subroutine


Ang paglalarawan ng pamamaraan ay ang mga sumusunod:

pamamaraan pangalan(listahan ng mga pormal na parameter); seksyon ng mga paglalarawan Algorithm para sa paglutas ng problema: 1. Kunin ang halaga ng n. mga operator wakas ;


Ang paglalarawan ng function ay mukhang:

function pangalan(listahan ng mga pormal na parameter): uri ng pagbabalik;

seksyon ng mga paglalarawan Algorithm para sa paglutas ng problema: 1. Kunin ang halaga ng n. mga operator wakas ;


Lokasyon sa programa

Programa ...;

//Seksyon ng paglalarawan Mga Gumagamit, Const, Var, ...

pamamaraan A ;

Algorithm para sa paglutas ng problema: 1. Kunin ang halaga ng n. ....... wakas ;

pamamaraan B ;

Algorithm para sa paglutas ng problema: 1. Kunin ang halaga ng n. ........ wakas ;

Function C ;

Algorithm para sa paglutas ng problema: 1. Kunin ang halaga ng n. ........ wakas ;

//Pangunahing programa

Algorithm para sa paglutas ng problema: 1. Kunin ang halaga ng n. ........ wakas .


  • Ang pagkakaiba sa pagitan ng isang function at isang pamamaraan ay ang resulta ng pagpapatupad ng mga operator na bumubuo sa katawan ng function ay palaging isang solong halaga, kaya ang pagtawag sa isang function ay maaaring gamitin sa naaangkop na mga expression kasama ang mga variable at constants.

Mga Pamamaraan

Mga pag-andar

Maaaring magkaroon ng maraming resulta o magsagawa ng ilang pagkilos

Mayroon lamang isang resulta, ang uri ng kung saan ay tinukoy nang hiwalay kapag nagdedeklara ng function.

Ang mga resulta ay maaaring maging mga halaga ng anumang uri - mga array, string, numero, atbp.

Ang resulta ay maaari lamang maging isang halaga ng uri na real, integer o char.

Ang procedure call command ay isang hiwalay na command na maaaring magamit nang nakapag-iisa

Ang isang function na tawag ay maaari lamang gamitin bilang isang bahagi ng isang expression ng naaangkop na uri.

Ang function body ay dapat maglaman ng hindi bababa sa isang assignment operator na may pangalan ng function sa kaliwang bahagi.


b pagkatapos max:=a else max:=b; MaxNumber:= max; dulo;" width="640"

Pamamaraan o tungkulin?

MaxNumber(a,b: integer): integer;

var max: integer;

MaxNumber:= max;


b pagkatapos max:=a else max:=b; dulo;" width="640"

Pamamaraan o tungkulin?

MaxNumber(a,b: integer; var max: integer);

kung ab pagkatapos ay max:=a else max:=b;


Pamamaraan o tungkulin?

ChangeColor(C1, C2: Word);

TextBackGround(C2)


Pamamaraan o tungkulin?

Add(X, Y: Integer): Integer;


Aktwal

  • Ipinahiwatig sa pangunahing seksyon ng programa

Pormal

  • Tinukoy sa subroutine
  • Tinukoy sa subroutine

Ang pamamaraan ay tinatawag ng isang operator na may sumusunod na format:

pangalan ng pamamaraan (listahan ng aktwal na mga parameter);

  • Listahan ng mga aktwal na parameter- ito ay isang listahan ng mga ito na pinaghihiwalay ng mga kuwit.

  • Sa pamantayan ng wikang Pascal, ang mga parameter ay maaaring maipasa sa dalawang paraan - sa pamamagitan ng halaga at sa pamamagitan ng sanggunian. Ang mga parameter na ipinasa ng halaga ay tinatawag mga parameter-halaga, ipinadala sa pamamagitan ng sanggunian - mga parameter-mga variable. Ang huli ay naiiba sa na sa pamamaraan (function) na header ay pinangungunahan sila ng salitang serbisyo var.

Pagpasa ng mga parameter. Mga pormal na parameter

Mga variable

Mga halaga

Mga parameter ayon sa halaga

Mga pormal na parameter

Mga variable


Mga pormal na parameter

Mga parameter ayon sa halaga

  • Sa unang paraan (pagpasa sa halaga), ang mga halaga ng aktwal na mga parameter ay kinopya sa kaukulang pormal na mga parameter.

1. Alisin ang mga papel

Pangalan ng Pamamaraan (a, b: integer);

Pangunahing programa

Kapag binabago ang mga halagang ito sa panahon ng pagpapatupad ng isang pamamaraan (function), ang orihinal na data (aktwal na mga parameter) ay hindi maaaring magbago


Var c, d: integer;

  • Kapag dumadaan sa sanggunian, ang lahat ng mga pagbabagong nagaganap sa katawan ng isang pamamaraan (function) na may mga pormal na parameter ay humahantong sa agarang katulad na mga pagbabago sa kaukulang aktwal na mga parameter.

1. Alisin ang mga papel

Pangalan ng Pamamaraan (a, b: integer, Var c: real);

Pangunahing programa

Nagaganap ang mga pagbabago sa mga variable ng block sa pagtawag, kaya ang mga parameter ng output ay ipinasa sa pamamagitan ng sanggunian. Kapag tinawag, ang kanilang katumbas na aktwal na mga parameter ay maaari lamang maging mga variable.


Isulat:

1. Mga aktwal na parameter___________

Pamamaraan Kvad(R: real; var S: real);

2. Mga pormal na parameter ___________

3. Mga pormal na parameter-halaga __________

5. Pangalan ng Pamamaraan ___________

6. Pag-access sa isang pamamaraan mula sa programa _____________________


Interactive na gawain

http://www.bzfar.net/load/podprogrammy_procedury_i_funkcii_parametry/23-1-0-498


Si Elvira ang pinuno ng klase. Kailangan niyang gumawa ng plano para sa pangkalahatang paglilinis sa silid-aralan: mag-alis ng mga papel, bulaklak ng tubig, maghugas ng mga mesa, magpunas ng salamin. Paano niya mas maaayos ang kanyang trabaho? Tulungan mo si Elvira.


Advanced na Plano ni Elvira

4.Nakakaiba sa pagitan ng value at variable na mga parameter

Arsen - nagliligpit ng mga papel

Mila - nagdidilig ng mga bulaklak

Vitaly – naghuhugas ng mga mesa

Indira – nagpupunas ng salamin

1. I-execute si Arsen

2. Patakbuhin si Mila

3. I-execute si Vitaly

4. Patakbuhin si Indira

1. Alam ang kahulugan ng "pamamaraan"


  • Anong mga bagong istruktura ng programming language ang nakilala natin ngayon?
  • Pangalanan ang mga pinag-aralan na parameter
  • Paano ipinapasa ang mga parameter sa isang pamamaraan?

  • Buod ng aralin
  • Maghanap ng mga kahulugan: "Mga Lokal na Variable" at "Mga Global Variable"
  • Bumuo ng dalawang gawain kung saan maaari mong gamitin ang mga pamamaraan o function.

  • Paano mo matutukoy ang paksa ng aralin? (bumuo ng iyong sariling pangalan)
  • Ano sa palagay mo ang dapat mong matutunan sa susunod na aralin?

Magkita tayo

susunod na aralin!