Ettekanne teemal "PASCALi alamrogramm". Protseduurid ja funktsioonid Pascal rekursiooni menetluste ja funktsioonide esitamine

Subprogramme on sageli vaja korrata teatud operaatorite järjestust erinevates osades programmi. Selle järjestuse kirjeldamiseks üks kord ja korduvalt rakendamiseks kasutatakse programmeerimiskeeltes alamprokeeringuid. Subprogramme on spetsiaalselt kaunistatud programmi üksus, selle edasiseks korduvaks kasutamiseks peamises programmis võimaldab alampiiride kasutamist üks kaasaegsemaid programmeerimismeetodeid - struktuuriprogrammeerimine


Subprogrammid lahendavad kolm olulist ülesannet, hõlbustades oluliselt programmeerimist: 1. võrrelda vajadusest korrata sarnaseid fragmente programmi teksti tekstis, s.o. vähendada programmi ulatust; 2. Remont programmi struktuuri, hõlbustades arusaamist parsimise ajal; 3. Vigade tõenäosus ilmuvad, suurendab resistentsust programmeerimisvigadele ja ettenägematutele tagajärgedele, kui muudatused.


Pascal-keeles protseduurid ja funktsioonid on alltooted: protseduur (protseduur) ja funktsioon (funktsioon). Pascal'i protseduurid ja funktsioonid deklareeritakse muutuva sektsiooni kirjeldustes. Programmi nime programm; Var ... // Sektsiooni kirjeldused põhiprogrammi muutuja; Menetluse nimiprocessors; Var ... alustada ... // keha lõpp protseduuri; Alustada // keha põhiprogrammi lõppu.


Funktsioonid ja protseduurid on olemas parameetrid (muutujad, mis edastavad väärtust edastavad). Need on kaks liiki: 1) formaalsed - need, mis on subprogramme 2 kirjelduses 2) tegelik - need, mis edastatakse põhikorrast funktsiooni või protseduurile. Tegelikud parameetrid peavad vastama tellimuse ametlikule menetlusele ja tüübile.




Menetluste protseduurid kasutatakse juhtudel, kui allpoolselt on vaja saada mitmeid tulemusi. Pascalis on kahte tüüpi protseduure: protseduurid parameetritega ja ilma parameetriteta. Menetluse apellatsioonkaebus viiakse läbi menetluse nimega, millele järgneb tegelikud parameetrid. Kui menetlust nimetatakse, on komplekti tegelike ja formaalsete parameetrite vaheline vastastikku ühemõtteline mäng, seejärel edastatakse juhtimine protseduurile. Pärast protseduuri lõpetamist edastatakse kontroll pärast protseduuri helistamist järgnevale kontrollile helistaja operaatorile.


Näide 1. Menetlus ilma parameetriteta, mis prindib 60 tärni stringi. Menetlus PR; Var i: täisarv; Alusta i: \u003d 1 kuni 60 kirjutage (* "); WRITELN; lõpp; Alusta PR; Lõpp.


Näide 2. Tee kahe numbri vahetamise programm C \u003d 5 ja D \u003d 7 programmi Obmendan; Var c, D: täisarv; Menetlus OBMEN (A, B: täisarv); Var m: täisarv; Alustage m: \u003d a; A: \u003d B; B: \u003d m; WRITELN (A, B); lõpp; Alusta WRITELN ("Sisesta 2 numbrit:"); Readln (c, d); OBMEN (C, D); WRITELN (C, ", d); lõpp. C5 D 7 A 5 B 7 1) Obsenimenetluse kutsumisel kahe parameetriga 5 ja 7, muutujad A ja B paigutatakse ka number 5 ja 7, vastavalt: 2) protseduuri väärtused Mälu rakud A ja B: C5 D 7 A 7 B53), kuid muutujates C ja D, andmeid ei muudetud, sest Nad on teistes mälu rakkudes


Selleks, et muutujad c ja d, A ja B nimetatud sama mälu rakkude (kui A ja B väärtusi muudetakse, väärtused ja C, d) muudetakse formaalsete parameetrite kirjeldamisel, lisage sõna var: protseduur Obmen enne soovitud muutujaid (var a, b: täisarv); C5 D 7 A B


Näide 3. Avatakse 3 erinevat massiivi (iga suurus ei ületa 15). Igas mayas leidke elementide kogus ja keskmise meediumi väärtuse. Programmi Proc; Var i, n, summa: täisarv; SR: reaalne; Menetluse töö (R: täisarv; var s: täisarv; var s1: reaalne); VAR MAS: massiiv täisarv; J: täisarv; Alusta S: \u003d 0; J: \u003d 1 kuni r do Alusta lugemist (MAS [j]); S: S \u003d S + MAS [J]; lõpp; S1: \u003d S / R; lõpp;


(Põhiline programm) Alusta i: \u003d 1 kuni 3 alustavad kirjutamist ("Vvedite Razmer", I, MASIVA: "); Readln (n); töö (n, summa, sr); (Helistamismenetluse töö) WRITELN ("COMPA ELEMENDOV \u003d", summa); WRITELN ("SrednearIfmeticheskoe \u003d", SR: 4: 1); lõpp; lõpp.


Programmi tulemus: Programmi nimetatakse kolm korda tööprotseduur, milles ametlikud muutujad R, S, S1 asendatakse tegeliku N, summa, SR. Menetlus teostab massiivi elementide sisendit, arvutab summa ja keskmine väärtus. S ja S1 muutujad tagastatakse peamisse programmi, seega enne nende kirjeldust VAR Service Word on seatud. Kohalikud parameetrid MAS, j kehtivad ainult menetluses. Global - I, N, summa, SR on saadaval kogu programmi vältel.


Pascal funktsioonid Sisseehitatud funktsioonide komplekt Pascal Keel on üsna lai (ABS, SQR, TRUNCE jne). Kui programmis on uus, mittestandardne funktsioon, tuleb seda kirjeldada programmi tekstis, mille järel saate selle programmi juurde pääseda. Pildi juurdepääs viiakse läbi ülesande operaatori paremal küljel, mis näitab funktsiooni ja tegelike parameetrite nime. Funktsioonil võib olla oma kohalikud konstandid, tüübid, muutujad, protseduurid ja funktsioonid. Pascal funktsioonide kirjeldus on sarnane protseduuride kirjeldusega.




Näide 4. Kirjutage subroutiini-funktsiooni kraadi A x, kus a, x - mis tahes numbrid. Me kasutame valemit: ja X \u003d E x LN programm P2; Var f, b, s, t, c, d: reaalne; (Ülemaailmsed muutujad) funktsiooni STP (a, x: reaalne): reaalne; Var y: reaalne; (kohalikud muutujad) Alusta Y: \u003d Exp (x * ln (a)); STP: \u003d y; (Määrake alamprogrammi arvutamise funktsiooni nimi) lõpp; (Funktsiooni kirjeldus on lõpetatud) Alustage D: \u003d STP (2.4, 5); (Erinevate numbrite ja muutujate arvutamine) WRIRELN (D, STP (5,3,5)); Loe (F, B, S, T); C: \u003d STP (F, S) + STP (B, T); WRITELN (c); lõpp.


Funktsioonid Subroutiin on osa programmist, mis on kujundatud eraldi süntaksi kujundusena ja varustatud nimega (sõltumatu tarkvaraplokk), et lahendada individuaalseid ülesandeid. Protseduur Kirjeldus: Protseduur () (kohalik nimi) Alusta (operaatori jõudlus) lõpeb; Kirjeldus Funktsioon: funktsioon (): tüüp; (Kohalike nimede osa) Alusta (operaatorite partitsioon): \u003d; (nõutav parameeter) lõpp; Helistamismenetlus: (); Kõne funktsioon :: \u003d (); 1. Ülesandeoperaatori paremal küljel. 2. Orgaanilise operaatori seisundis seisvas väljendis. 3. Outringmenetluses funktsiooni tulemusena. Menetluse alamprogrammide kirjeldus


Protseduuride tekkimine ja funktsioonid Pascalis võivad põhjustada end, st omada üürniku vara. Rekursiivne funktsioon peab tingimata sisaldama rekursuse lõpu seisundit, et mitte põhjustada programmi loopingit. Iga rekursiivne kõne loob uue kohaliku muutujate komplekti. See tähendab, et väljaspool saadud funktsiooni asuvaid muutujaid ei muudeta.


1 funktsioon f (n: täisarv): täisarv; Alusta, kui n \u003d 1, siis f: \u003d 1 muu F: \u003d N * F (N -1); (Funktsioon F kutsub "Pealkiri \u003d" (! Lang: Näide 5. Tehke rekursiivne funktsioon, arvutades numbrite arvu N järgmiselt: n! \u003d 1, kui n \u003d 1 n! \u003d (N -1)! · N Kui n\u003e 1 funktsioon f (N: täisarv): täisarv; alustage, kui n \u003d 1, seejärel f: \u003d 1 mujal f: \u003d n * f (n -1); (F-funktsioon C kõned" class="link_thumb"> 19 !} Näide 5. Tehke rekursiivse funktsiooni arvutamise numbrite arvu n järgmiselt: n! \u003d 1, kui n \u003d 1 n! \u003d (N -1)! · N, kui n\u003e 1 funktsioon f (n: täisarv): täisarv; Alusta, kui n \u003d 1, siis f: \u003d 1 muu F: \u003d N * F (N-1); (Funktsioon f põhjustab ennast) lõpuni; 1 funktsioon f (n: täisarv): täisarv; Alusta, kui n \u003d 1, siis f: \u003d 1 muu F: \u003d N * F (N-1); (Funktsioon F kutsub ennast "\u003e 1 funktsioon f (N: täisarv): täisarv; Alustage, kas n \u003d 1, seejärel f: \u003d 1 mujal f: \u003d n * f (n -1); (funktsioon f põhjustab ise) otsa;" \u003e 1 Funktsioon F (N: täisarv): täisarv; Alusta, kui n \u003d 1, seejärel f: \u003d 1 mujal f: \u003d n * f (n -1); (funktsioon f kutsub "Pealkiri \u003d" (! Lang: Näide 5. Teha rekursiivse funktsiooni, arvutades faktori number N järgmiselt: n! \u003d 1, kui n \u003d 1 n! \u003d (N -1)! · N, kui n\u003e 1 funktsioon f (n: täisarv): täisarv; alustada, kui n \u003d 1, seejärel f: \u003d 1 mujal f: \u003d n * f (n -1); (funktsioon f põhjustab ennast"> title="Näide 5. Tehke rekursiivse funktsiooni arvutamise numbrite arvu n järgmiselt: n! \u003d 1, kui n \u003d 1 n! \u003d (N -1)! · N, kui n\u003e 1 funktsioon f (n: täisarv): täisarv; Alusta, kui n \u003d 1, siis f: \u003d 1 muu F: \u003d N * F (N-1); (Funktsioon f põhjustab ennast"> !}




Alampiir sisse Turbo Pascal


  • Programm See on nimega loogiliselt lõpetatud käskude meeskond, mida saab kutsuda mitmel korral programmi erinevatest programmidest.

Subroutiinide kasutamise põhjused

  • lihtsustada mitmete alamülesannete lagunemise meetodiga suurte programmide väljatöötamist;
  • programmi suur visuaalsus;
  • mälu kokkuhoid.

Alampiiride tüübid

protseduurid

funktsioonid

  • Protseduur - See on sõltumatu programmi osa programm, mille eesmärk on täita konkreetseid meetmeid.

Menetlused parameetriteta

  • Salvestusvorming :

menetlus. ;

lõpp. ;

  • Kõik muutujad, mida kasutatakse protseduurides ilma parameetriteta, on kirjeldatud peamisprogrammis (VAR-moodulis).

Näide . Looge silindri helitugevuse leidmiseks programm.

Programmi silinder;

Var r, h, v: reaalne;

Menetluse sisend; (Andmete sisestamise menetlus)

WRITELN ("sisestage raadiuse väärtus");

wRITELN ("sisestage kõrguse väärtus");

Menetluse valem; { protseduur arvutused maht }

V: \u003d PI * sqr (R) * H;

Menetluse väljund; (väljundmenetlus)

wRITELN ('V \u003d', V);


Protseduurid c. parameetrid

  • Menetlused võivad kirjeldada konstante, muutujaid, muid menetlusi.
  • Protseduuride kirjelduse kirjelduse sektsioonil on sama struktuur nagu põhiprogrammis.
  • Kohalikud muutujad - Need on protseduuri raames kirjeldatud muutujad.
  • Kohalikud muutujad ei ole saadaval väljaspool protseduuri.
  • Kohalike muutujatega toimuvad muutused protseduuri jooksul ei mõjuta samade nimedega muutujate väärtusi, kuid seda kirjeldatakse väljaspool seda protseduuri.

Protseduurid c. parameetrid

  • Global muutujad

Näide .

Programm Zadacha;

Var a, b: täisarv;

Menetlus Lokal;

Var a x: char; Jaoks protseduurid lokal:

alusta. muutuja x. - Kohalik muutuja

a: \u003d '! "; (Programm ei saa muuta selle väärtust)

b: \u003d B +1; muutuja b. - Ülemaailmne muutuja

lõpp; (Kõik selle muutuja väärtuse muutused menetluses

Alustamine salvestatakse ja pärast protseduuri väljumist)

b: \u003d 100; muutuja a. Põhikavas kogu tüüp

lokal; Ja protseduuril sümbolitüüp. Muutuja a.

wRITELN ('a \u003d', a); Kogu tüüp ei ole Lokal protseduuris saadaval.

wRITELN ('B \u003d', b);

Programmi tulemus: A \u003d 0; B \u003d 101.


); Alustada; lõpp; "Laius \u003d" 640 "

Parameetrite edastamine B. Turbo. Pascal

  • 1. Parameetrite ülekandmine väärtuse järgi
  • Parameetrid väärtused Muutujad kirjeldatud pärast nime protseduuri sulgudes. Enne nende puudumist Var Service Word.
  • Salvestusvorming :

menetlus. (:

muutuja);

lõpp. ;


  • ametlikud parameetrid .
  • tegelikud parameetrid .

Näide .

Programmi paramus;

Var m, n: täisarv;

Menetlus Summa (A, B: täisarv);

wRITELN ('S \u003d', s);

summa (M, N); või Summa (100.10);

Muutujad a. ja b. on formaalsed parameetrid ja muutujad m. ja n. - tegelik. Tegelike parameetrite väärtused m. \u003d 100 I. n. \u003d 10 edastatakse formaalsetele parameetritele a. ja b. .

Tegelike parameetrite muutused toimuvad ainult protseduuri raames ja neid ei mõjuta neid väljaspool seda protseduuri.


; Varte :); Alustada; lõpp; "Laius \u003d" 640 "

Parameetrite edastamine B. Turbo. Pascal

  • 2. Parameetrite ülekandmine nime järgi
  • Seaded-muutujad Muutujad kirjeldatud pärast nime protseduuri sulgudes ja mis salvestab VAR Service Word.
  • Salvestusvorming :

menetlus. (:

muutuja; Var.

muutuja :);

lõpp. ;



B siis min: \u003d b; Kui min cen min: \u003d C; lõpp; Alusta WRITELN (sisestage kolm numbrit "); Readln (A1, B1, C1); WRITELN ("Sisestage kolm numbrit"); Readln (A2, B2, C2); Minimaalne (A1, B1, C1, min1); Minimaalne (A2, B2, C2, MIN2); S: min1 + min 2; WRITELN ('S \u003d', s); Lõpp. Näide. Kaks parimat numbrit: A 1, B1, C1 ja A2, B2, C 2. Leidke koguse väärtus: S \u003d min (A1, B1, C1) + min (A2, B2, C2) " Laius \u003d "640"

Var A1, B1, C1, A2, B2, C2, Min1, Min2, S: reaalne;

Menetlus Minimaalne (A, B, C: reaalne; var min: reaalne);

kui min b siis min: \u003d b;

kui min cen min: \u003d C;

wRITELN ("Sisestage kolm numbrit");

readln (A1, B1, C1);

wRITELN ("Sisestage kolm numbrit");

readln (A2, B2, C2);

minimaalne (A1, B1, C1, min1);

minimaalne (A2, B2, C2, MIN2);

S: min1 + min 2;

wRITELN ('S \u003d', s);

Näide . Esitatakse kaks kolme numbrit: A 1, B1, C1 ja A2, B2, C 2. Leia koguse väärtus: S \u003d min (A1, B1, C1) + min (A2, B2, C2)


Ülesanne - See on subroutiin, mille tulemus on mõningane tähendus.

  • Salvestusvorming :

funktsiooni. (:

lõpp. ;

  • Funktsiooni nimetuse funktsioonis peate määrama selle täitmise tulemuse.
  • Kui helistate funktsiooni, selle nimi, mis näitab tegelike parameetrite nimekirja, tuleks kaasata väljendusena operandi.

Programm Vyrazenie;

funktsioon Modul (A: reaalne): reaalne;

wRITELN ("sisestage muutuja väärtus");

y: \u003d Modul (X-3) + Modul (x + 6);

wRITELN ('Y \u003d', Y);

Näide . Arvutage ekspressiooni väärtus: Y \u003d | x -3 | + | x +6 |

Rekursioon Pascalis Õpetaja: Tlekhurai Yu.v. MOU "LYCEUM №8" Mida sa pilte näed? Seda nähtut kunsti nimetatakse rekursioon "Ümberkorraldamise mõistmiseks peate kõigepealt rekursiooni mõistma." Ümberkorraldus on objekti osaline määratlus ise, eelnevalt määratletud objekti määratlus. Teadusteed: Rekursioon - meetod objekti klassi või meetodite kindlaksmääramiseks ühe või mitme (tavaliselt lihtsa) põhikirja või meetodite esialgse seadistamise määramiseks ning seejärel ülesannete aluseks olevate ülesannete alusel määratud klassi ehitamise eeskirjad. Peter Doych Peter Doych

Iteratsioon mehest.

Rekursioon - Jumalalt.

Rekursioon füüsika Ümberkorraldamise keeles ja kirjanduses klassikaline näide lõpmatu rekursiooni on kaks üksteise peeglite vastas: Nad moodustasid kaks koridorit peeglite pleekimisest. Teine näide lõpmatu rekursiooni kohta on enese-ergastamise mõju (positiivne tagasiside) mõju elektroonilistes tugevdamisskeemidesKui väljundsignaal tabab sisendit, suurendab taas ahela sisendit ja seda tugevdatakse uuesti. Võimendid, mille jaoks selline töörežiim on tavalised, nimetatakse auto taladeks. Rekursiivse sõnastiku artikkel: "Pap oli koer ..." - tüüpiline rekursioon. Mitmed Stanislav Lemi lood on pühendunud lõpmatu rekursiooni juhtumitele: lugu Sepulki kohta ("Star päevikud Jona Pichery") Milline kangelane liigub järjekindlalt sepulki artiklist summulatsiooni artikli kohta. Sepulkari II artiklile, kus saatmine artiklile "Sepulki" uuesti. Lugu mõistliku auto kohta, millel oli piisav meel ja laiskus, et lahendada ülesanne, et luua sarnane asi ülesande lahendamiseks ja selle otsusele usaldada (tulemus sai lõputu rekursiooniks, kui iga uus auto ehitas ennast sarnaste ja läbis tema ülesande). Programmeerimise rekursioon on arvutusprotsessi korraldamise meetod, milles tema operaatorite komponentide rakendamise protseduur või funktsioon on suunatud iseenesest. Selleks, et selline apellatsioonkaebus oleks lõpmatu, peaks olukord olema subprogrammi tekstis, mille eesmärk on saavutada edasikaebamine. Seega saab rekursiivset kaebust kaasata ainult alamprograkti ühele harule. Näide. Arvutamine faktori loodusliku numbri teha rekursiivne funktsioon arvutamisel faktori number N järgmiselt: Funktsioon F (N: täisarv): Longink; Alusta, kui n \u003d 1, siis f: \u003d 1 muu F: \u003d N * F (N -1); (Funktsioon sobib ise) Lõppprogramm Pascalis rekursiooni abil: var n: täisarv; A: Longint; Funktsioon Factorial (N: täisarv): Longink; Alusta, kui n \u003d 1 siis faktoriaal: \u003d 1 muu faktoriaal: \u003d N * faktoriaal (N-1); Lõpp; Alustage kirjutamist ('n \u003d'); Readln (n); A: \u003d faktoriaal (N); Kirjutage ('n! \u003d', A); Readln; lõpp. Leonardo Pisa Fibonacci

Fibonacci numbrid on numbrilise järjestuse elemendid

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ..., kus iga järgnev number on võrdne kahe eelmise summa summaga.

Ülesanne: kuvab mitmeid fibonacci numbreid, mis koosnevad n elementidest. Muutujate kirjeldus: N - seeria elementide arv; A, B - rea viimase elemendi väärtused; C - puhver ("varu") muutuja; I - Loendur. Probleemide lahendamise algoritm: 1. Hankige N. 2. Määrake vastavalt A ja B väärtused 0 ja 1 (need on Fibonacci rida esimesed numbrid). Kuva need ekraanil. 3. Alates 3. elemendist N-st N: a), et kuvada summa A ja B, b), et salvestada muutuja B väärtuse C, C), et kirjutada B-summa A ja B, D) väärtus. Programm Pascal Keel, kasutades iteratsiooni: programmi fibonacci; var. A, b, c, i, n: täisarvud; alusta. Kirjutage ("n \u003d"); Readln (n); A: \u003d 0; Kirjuta, ""); B: \u003d 1; Kirjutage (B, "); Sest i: \u003d 3 kuni n alustada Kirjutage (A + B, "); C: \u003d b; B: \u003d A + B; A: \u003d C; lõpp; readln; lõpp. Programm Pascal Keel kasutades rekursiooni: Rekursiivne määratlus Fibonacci numbrite arvutamiseks on järgmine: see fibonacci-numbrite määratlus on lihtne teisendada rekursiivseks funktsiooniks: Funktsioon F (N: täisarv): Longink; Alusta, kui N.<= 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. Домашнее задание Написать программу нахождения НОД двух натуральных чисел, используя алгоритм Евклида и рекурсию Даны два натуральных числа agaja b. Kui a aga= b,siis sõlme ( aga,b) \u003d a. Kui a aga>b,siis sõlme ( aga,b) \u003d. sõlme ( a -b.,b). Kui a aga< b,siis sõlme ( aga,b) \u003d. sõlme ( aga,b - A). Programm noddvyxciseli; Var a, b: lonnal; Funktsioon NOD (A, B: Longint): Longint; Alusta, kui A \u003d B siis NOD: \u003d A \u003d A \u003d A\u003e B siis NOD: \u003d NOD (A-B, B) muidu NOD: \u003d NOD (A, B-A) lõpp; Alustage kirjutamist ('a \u003d'); Readln (a); Kirjutage ('B \u003d'); Readln (b); A: \u003d NOD (A, B); Kirjutage ('NOD \u003d', a); Readln; lõpp. Khanyani tornide ülesanne. Samal ajal tuleb järgida järgmisi eeskirju:

  • korraga saate liikuda ainult ühe kettaga;
  • Suuremat ketast ei saa asetada väiksemale kettale;
  • Eemaldatud ketas tuleb panna mis tahes torni enne, kui teine \u200b\u200bketas eemaldatakse.
  • Hardworking Buddhist Monks Day ja öö taluvad kettad torni torni. Legend väidab, et kui mungad lõpetavad oma töö, tulevad maailma lõpp. Oleks võimalik arvutada, et lahendada probleemi 64 kettaga, see võtab 264- 1 nihked. Seega, nagu lõpuks maailma, see toimub pärast viis miljardit sajandit, kui me eeldame, et üks ketas liigub ühe sekundi jooksul. Kuid ülesanne ja legend tema tuli matemaatika Eduard Luke Saint-Louis College 1883.

Ühel kolmest teemantidest, kes kannavad 64 ringi kullaketast. Ketasil on erinevad radii ja asuvad tornil järjestuses laskuva raadiuse järjekorras baasist tippu. See on kohustatud kandma plaate esimesest tornast teise, kasutades vajadusel kolmanda torni.

Ülesanne. Tee rekursiivne programm, mis lahendaks ülaltoodud ülesande hanoiniliste tornide arvuga, mis on võrdne N (n \u003d 1, 2, ...). Otsus. Tutvustame nimesid Shiers: a, b, c. Las olla hanoi (N, A, B, C) - soovitud funktsioon, mis tagastab kettaliikumise järjestuse jada a. kohta b. kasutades c. Vastavalt ülaltoodud eeskirjadele. N \u003d 1-ga saame ülesande lahendada. Sa pead lihtsalt tegema operatsiooni "Liiguta a. kohta b.". Oletame, et me teame, kuidas seda probleemi N-1 kettale lahendada lahendada. Liiguta N-1 ketast a. kohta alates. Järgmisena liigutage üks ülejäänud ketas a. kohta b. Ja lõpuks, teisaldage N-1 ketas c.kohta b.. Sisendandmed: PEGS A ketaste arv; Väljund: sekveneerimine; Step0: (muutujate tüübi mõiste); 1. etapp: (Hanoi protseduuri kirjeldus, mis kuvab toimingute järjestuse); Step1.1: (liikuge (N-1) kettad Kolyka A \u200b\u200bPEG b); STEP1.2: (Liigutage NTH-ketas A-ga C-ga); STEP1.3: (teisaldage (N-1) ketas koos B-ga C-ga; (Sammud 1.2-1.3 viiakse läbi rekursiivselt); 2. etapp: (põhiprogramm); Step2.1: (sisestage kettade arv); Step2.2: (HanoI protseduuri kutsumine). Probleemi lahendamine Pascal programmis Bahnya; Var n: täisarv; A, b, c: char; Protseduur Hanoi (n: täisarv; a, b, c: char); Alusta, kui n\u003e 0 siis alustage Hanoi (N-1, A, C, B); WRITELN ("Pemestit Disk nii Sterzhnya", A, "Na Sterzhen", B); Hanoi (N-1, C, B, A); lõpp; lõpp; Alustage kirjutamist ("Vvedite naturalnoe chislo n"); readln (n ); a: \u003d "A"; B: \u003d "B"; C: \u003d "C"; Hanoi (N, A, C, B); Readln; End. Kodutöö kirjutada kraadi arvutusprogrammi loomuliku indikaatoriga: Sihtasutus h. Eksponent et Kui k \u003d 0, siis kraadi (K, X) \u003d 1, vastasel juhul astme (K, X) \u003d X · kraadi (K-1, X) programm Stepen; Var y: reaalne; n: täisarv; Funktsioonietapp (k: täisarv, X: reaalne): reaalne; Alusta, kui k \u003d 0, siis samm: \u003d 1 mujal: \u003d x * etapp (K-1, X) lõpp; Alustage kirjutamist ("Vvedite Osnovanie Stepeni X \u003d '); Readln (y); Kirjutage ("Vvedite Pokazatel Stepeni K \u003d '); Readln (n); Kirjutage ('x v Stepeni K \u003d', etapp (N, Y)); Readln; lõpp. Sõltumatu töö

  • Leia numbrite arv
  • Määrake, kas antud loomulik arv on lihtne
  • Leia esimene number number
  • Tõlgi loomulik arv decimal S.S. binaarses
  • Leidke elementide kogus täisarv massiivi, mis koosneb 20 elemendist
  • Muutke kahe täisarvu väärtusi
  • Sorteeri kolme muutuja väärtused a, b koosnende suurenemise järjekorras
  • Leia numbrite arv algses numbris n
  • Leia suurim kolm andmenumbrit
  • Leia positiivsete arvude arv nelja A, B, C, D seas
Vastused sõltumatu töö number 2 Programmi ProSoSoe; Var n, m, s: täisarv; Funktsioon Prost (M, N: täisarv): Boolean; Alusta, kui n \u003d m siis prost: \u003d Tõsi muu Prost: \u003d (n mod m<> 0) ja prost (M + 1, N); Lõpp; Alustage kirjutamist ('n \u003d'); Readln (n); M: \u003d 2; Kui prost (m, n) siis kirjuta (N, 'prostochislo ") muidu kirjutada (N,' Sostavnoe"); Readln; lõpp.

programmi perevod;

protseduur DVD (N: Longint);

Kui n\u003e 1 siis DVD (N Div 2);

kirjutage (N MOD 2);

Slaidi 1.

Slaid 3.

Subprogrammid: Global ja kohalikud muutujad Kõik alamprogramme tuleks kirjeldada kirjelduste osas. Iga alamprogrammi peab olema nimi. Teave peamise programmi ja subprogrammi vahel edastatakse globaalsete parameetrite (muutujate) vahel, kes tegutsevad mis tahes programmi mis tahes osas, millel on põhikavas kirjeldatud nimi. Subroutiini sees on võimalik kasutada kohalikke parameetreid (muutujad) - nende nimed ja väärtused on mõttekas ainult selle alampiiride piires ja ei ole helistaja programmi jaoks saadaval

Slaidi 4.

Ametlikud ja tegelikud parameetrid allpoolsete allkirjastamise kirjelduses näidatakse parameetrid ainult nimed, nii et neid nimetatakse formaalseks. Enne alldogrammi helistamist ei ole neil väärtusi. Nad reserveerivad ainult tegelike parameetrite koha, millega määratakse kindlaks nende number ja andmeliik. Tegelike parameetrite tüübid: Parameetrid väärtused näitavad, millist väärtust peate määrama konkreetse alamprogrammiparameetri määramiseks. Pärast alamprogrammi lõpetamist võtavad nad samaväärtusi, isegi kui neid all alamprograpeeritakse. Subroutiini parameetrid muutuvad formaalseks, võivad alamproutite täitmise ajal muuta oma väärtust ja säästa muutusi alamprogražiini väljumisel (enne parameetrite muutujaid Vari märksõna) väljumisel.

Slaidi 5.

Slaidi 6.

Programm PR1 protseduuri kirjeldus; Const ... tüüp ... var ... protseduur (); Kirjeldav osa algab lõppprotseduuri keha; Alusta ... (); ... lõpp. Menetluse kutsumisel asendatakse ametlikud parameetrid tegelikuga.

Slaid 7.

Programmi PR1 arvu summa arvutamise kord; Kasutab CRT; Var a, b, s: reaalne; Menetlus Summa (X, Y: reaalne; var Z: reaalne); Alusta Z: \u003d x + y; lõpp; Alustada CLRSCR; WRITELN ("Sisesta A, B"); Readln (a, b); Summa (A, B, S); WRITELN (numbrite arv ", A: 3: 1," ja ", B: 3: 1," \u003d ", S: 3: 1); Readln; lõpp. X, y, z - formaalsed parameetrid, kohalikud muutujad a, b, s - globaalsed muutujad a, b, s - tegelikud parameetrid x y z a b s parameetrid-väärtus parameeter-muutuja

Slaidi 8.

Slaidi 9.

Clade 10.

Arvutage ekspressiooniväärtuse A: \u003d (3N! + 2M!) / (M + N)! Faktori leidmiseks, millist muutujate tüüp on soovitatav kasutada? Programm PR2; Kasutab CRT; Var m, n, x, y, z: täisarv; A: reaalne; Menetlus Fakt (D: täisarv; VAR Q: täisarv); Var i: täisarv; Alusta Q: \u003d 1; I: \u003d 1 kuni D do Q: \u003d q * i; lõpp; Alustada CLRSCR; WRITELN ("Sisesta väärtused N, M"); Readln (n, m); Fakt (n, x); Fakt (m, y); Fakt (M + N, Z); A: \u003d (3 x x + 2 * y) / z; WRITELN ("ekspressiooniväärtus M \u003d", m: 4, "ja n \u003d", n: 4, "võrdne", a: 8: 3); Readln; lõpp. N! \u003d 1 · 2 · 3 · ... · n

Clade 11.

Ühemõõtmelise massiivi elementide väljundi sisestamine Juhuslik (x) funktsioon moodustab juhusliku numbri 0 kuni x terviku või reaalse tüübi (enne funktsiooni viidates on vajalik, et initsialiseerida, kasutades randomiseerimisprotseduuri). Kui parameetrit x ei ole määratud, on tulemus reaalse rea tüüp vahemikus 0,0 kuni 1,0. Kogu juhuslike numbrite hulga saamiseks juhuslikust vahemikust (BA + 1) + A, ülesanne on: sisestada ühemõõtmelise massiivi elementide sisestamine juhusliku numbri generaatori abil (väärtuste vahemik -10 kuni -10 kuni 20) ja elementide toodang korras. A \u003d -10 B \u003d 20 juhusliku (20 - (- 10) +1) + (- 10)

Slaidi 12.

Slaid 13.

Slaidi 14.

Funktsioonifunktsiooni kirjeldus on mõeldud ainult ühe väärtuse arvutamiseks 1. Seetõttu on selle esimene erinevus selles, et protseduuril võib olla mitmes parameetrites uusi väärtusi ja ainult ühe funktsiooni (see on tulemus). 2. Teine erinevus on funktsiooni päis. See koosneb sõnafunktsioonist, millele järgneb funktsiooni nimi, siis sulgudes on ametlike parameetrite nimekiri, mille järel kirjutatakse funktsiooni tüüp käärsoole kaudu. 3. Kehafunktsioonis peab olema vähemalt üks ülesande operaator, kus funktsioon nimi on vasakul küljel ja selle väärtus on selle väärtus. Funktsioon (): Kirjeldav osa alustada keha keha: \u003d; Lõpp;

Slaid 15.

Arvutage ekspressiooniväärtuse A: \u003d (3N! + 2M!) / (M + N)! Programm FN2; Kasutab CRT; Var m, n: täisarv; A: reaalne; Funktsioon Fakt (D: täisarv): Longint; Var i: täisarv; K: Longint; Alusta Q: \u003d 1; I: \u003d 1 kuni D do Q: \u003d q * i; Fakt: \u003d Q; lõpp; Alustada CLRSCR; WRITELN ("Sisesta väärtused N, M"); Readln (n, m); A: \u003d (3 * fakt (n) + 2 * fakt (m)) / fakt (M + N) ;; WRITELN ("ekspressiooniväärtus M \u003d", m: 4, "ja n \u003d", n: 4, "võrdsed", a: 8: 3); Readln; lõpp.

Slaidi 16.

Tee programm, mis leiab AB, see tähendab, et B-TH number A, kus A ja B on täisarvud ja\u003e 0, sisestatud klaviatuurilt. Tee programm PR2 protseduuri funktsiooni asendades; Kasutab CRT; Var a, b: täisarv; C: Longint; Funktsioon Stepen (X, Y: täisarv): Longink; Var i: täisarv; S: Longint; Alusta S: \u003d 1; I: \u003d 1 kuni y do s: \u003d S * X; Stepnen: \u003d S; lõpp; Alustada CLRSCR; WRITELN ("Sisestage väärtused A, B"); Readln (a, b); C: \u003d Stepen (a, b); WRITELN ("S \u003d", s); Readln; lõpp.

Slaid 17.

Slaid 18.

Parameetrite edastamise mehhanism funktsioonis ja protseduuris, mis on protseduuriga trükitud ja milline programm? Global muutujad kohalikud muutujad A B 3 3 -3 Aadress A B C 48 aadressiga a: \u003d B + 3 B: \u003d 3 * a C: \u003d A + B tingimus 24 5 8 vastusest

Slaid 19.