Pascal eljárások pascal nyelv (Pascal)

Eljárások Pascal

Alprogram - egy darab kódot, amely egy nevet és létrejön a szükség esetén elvégzi a kód egy kicsit (sok) időt. Alprogram le egyszer, mielőtt a fő program (kezdődik). A fordító átadja ezt a kódrészletet, míg a fő program nem felel meg a „hívás” alprogramot, ami úgy néz ki, mint egy utalás név szerint (talán a neve a felsorolt ​​indokok zárójelben).

Sok programozási nyelvek szubrutinok már csak formájában funkciókat. Azonban Pascal rutin - a függvény és az eljárás. A különbség nyilvánvaló lesz ebben a leckében.

Példa: eljárás paraméterek nélkül, amely kinyomtatja Csillag 60, minden egyes új sorban

eljárás pr; var i: integer; kezdődik i: = 1 és 60 nem kezdődik write ( '*'); writeln; végén; végén; kezdődik pr; végén.

Ebben a példában a művelet eljárást Pascal nyilvánvaló, hogy a fordító kihagyja a blokk leírások és eljárás folytatódik a főprogram (kódsor 9). És csak azután találkozik eljárás hívás (10 sor), a fordító hajtotta végre azt, visszatérve az 1. vonalra.

Eljárások paraméterekkel. Tényleges és formális paraméterek

Vegyük példának a szükségességét, hogy az eljárást.

például:
konstrukció egy alak

Mi az aktuális paraméter

Téma: Három hasonló számokat.

  • azonosítani az azonos vagy hasonló intézkedés (három darab)
  • találhatók a teljes (méret, forma, forgásszög) és különbségek (koordináták, szín)
  • különbségek írva ismeretlen változó, ők lesznek a paraméterei eljárás

Mi az aktuális paraméter

Megoldás Pascal:
eljárás:

Mi az aktuális paraméter

használja GraphABC; eljárás Tr (x, y: integer; szín: system.Drawing.Color); kezdenek MoveTo (x, y); LineTo (x, y-60); LineTo (x + 100, y); LineTo (x, y); FloodFill (x + 20, y-20, szín); végén; kezdenek SetPenColor (clBlack); Tr (100, 100, clBlue); Tr (200, 100, clGreen); Tr (200, 160, clRed); végén.

Példa: Write rutin, amely kiírja 60 alkalommal jelkép (be a billentyűzetről), mindegyik új sorban

Ebben a példában a bemeneti karakter fogja használni az eljárás paramétere. A formális paraméter egy olyan eljárás zárójelben annak leírását. Feltétlenül kell adnia, hogy milyen a formális paraméter egy kettőspont.

Az aktuális paraméter - ez az értelme, hogy a zárójelben jelzett hívás esetén az eljárást. Az aktuális paraméter lehet egy bizonyos értéket (szó szerint: számok, karakterek, vonósok ...), vagy egy változó, a fordító helyettesítheti a formális paraméter. Ezért az adatok típusát a formális és aktuális paraméter eljárásokat meg kell egyeznie.

var s: char; eljárás pr (a: char); var i: integer; kezdődnek a i: = 1 és 60 do kezdeni write (a); writeln; végén; végén; kezdenek writeln ( 'Simvol'); readln (s); pr (s); végén.

Ebben a példában az eljárás nevezzük fordító helyettesíti a formális paraméter aktuális paraméter s. azaz karakterkészlettel be a billentyűzetről. Mindkét paraméternek adattípust char.

  • Az aktuális paraméterek száma meg kell egyezzen a formális paraméterek számával;
  • a megfelelő tényleges és formális paraméterek meg kell egyeznie, hogy a megjelenés és az adatok típusának

A kihívás eljárás 1. Írj egy eljárást, hogy hozza bármely két szám (két választási lehetőség)

Eljárások paraméterekkel. változó paraméterek

Példa: maximális kereső két egész szám eljárások alkalmazásával

var x, y, m, n: egész szám; eljárás MaxNumber (a, b: egész szám; var max: integer); kezdeni, ha a> b, akkor max: = a mást max: = b; végén; kezdődik write ( 'vvedite x, y'); readln (x, y); MaxNumber (x, y, m); writeln ( 'max =', m) végén.

A példában a formális paraméterek és b alkalmazták a számok összehasonlított és egy változó paraméter max -, hogy mentse meg a maximum két szám. Változó paramétert vagy ki paraméter továbbítja annak értékét a fő rutin (m aktuális paraméter), azaz értéket ad vissza, akkor a formális paraméterek értékeit (input paraméter), éppen ellenkezőleg, értékeket vehetik a főprogram (aktuális paraméterek az x és y). A változó paraméter (max) használ a memória számára fenntartott megfelelő paraméter a hívás eljárás (Box m).

Így tudjuk megfogalmazni a koncepció:

Ha a formális paraméter tartalmazza a szokásos jelző változó annak típusától, az ilyen paraméter egy értékét vagy bemeneti paraméter (a és b a példában). Típusa a formális paraméter-érték adatait meg kell egyeznie az adatok típusát annak aktuális paraméter (a és b meg kell egyeznie a típusú adatok párok x és y).

A változtatható paraméterek, amely lehetővé teszi, hogy kevesebbet költenek memória

var x, y: integer; eljárás csere (a: integer; var b: egész szám); var c: integer; kezdeni, ha a> b ezután kezdődik c: = A; A: = B; b: = C; végén; végén; kezdődik writeln ( „Adja két szám”); readln (x, y); csere (x, y); writeln ( 'max =', y) végén.

Ezzel a módszerrel a probléma megoldásának, már elhagyható a harmadik paraméter. Ebből a célból az eljárás más módszerrel lokális változó c. Az eljárást a változó változók értékeit a és b, hogy b mindig maximalizálni. Ezért, a programban sorban 15, mint a kimeneti teljesítményt a második paraméter (y), a megfelelő formális paraméter b.

Feladat eljárás 2. Meg kell határozni a legnagyobb közös osztó két szám beírt eljárás (két paraméter értékét egy változó paraméter)

Keresés algoritmus megoldása GCD:

A kihívás a 3. eljárás szerint eljárva építésére ábra:

Mi az aktuális paraméter

Feladat Eljárás 4. kapnak 3 különböző tömb egész (a mérete minden 15 elem). Minden tömb, hogy megtalálják a elemek összege és a számtani középérték.
Hogy kialakítsuk a tömb elemeinek, és kiszámítjuk az összeg a számtani átlag és használni egy eljárást (számtani középértéket és az összeget a sorsolás-szerű változtatható paraméterek).

A problémák Pascal közös szükséges kitölteni egy sor adatot, majd megjeleníti az értékeket a képernyőn. Miért nem automatizálják a feladatra, hogy betöltse ezt a tömböt és kimenet - azaz kibocsátották az eljárásokat, és továbbra is ezt az eljárást alkalmazza, ha szükséges.

Példa: Készítsen egy eljárást kimenetre a tíz tömb elemeinek (két paraméter: az elemek száma a tömbben)

const n = 10; var i: integer; a, b: array [1..n] az egész; eljárás arr_out (k: integer; arr: array [1..n] az egész); var i: byte; kezdődik write ( 'kimeneti tömb:'); i: = 1 k do write (arr [i]: 4); writeln; végén; kezdődnek a i: = 1-től n csinál egy [i]: = random (10); arr_out (n, a); végén.

Magyarázat:
A fő szerve a program:
- képező tömb elemeinek (véletlenszerű függvény).
- egy eljárás hívás két paraméterrel: az elemek számát a tömbben.
Az eljárás test:
- kijelző a tömb elemeinek a paraméterek alkalmazása

Folytatjuk a feladatunk:

Példa: Készítsen egy eljárást, hogy töltse egy tömb véletlenszerű funkció

const n = 10; var a, b: array [1..n] az egész; eljárás arr_rand (k: integer; var arr: array [1..n] az egész); var i: byte; kezdődik write ( „kitöltő tömböt véletlen számokkal”); véletlenszerű; i: = 1 és k nem arr [i]: = véletlenszerű (100); végén; kezdenek arr_rand (n, a); végén.

Feladat Eljárás 5. össze mind megoldani a problémát (töltésére és kimeneti tömb)

Feladat eljárás 6. Hozzáadjuk a feladat eljárást kitöltésével a felhasználó tömb értékek (bemeneti értékeket a billentyűzeten). Rendezzük kimenet két különböző tömbök - az egyik érték képződött véletlenszerűen, egy másik - az értékek a felhasználó által megadott

Feladat eljárás 7. Készítsen programot a számítási eljárást a hatalom a szám (bemeneti paraméterek: a száma és mértéke). Ahhoz, hogy az eredményét használja változó paraméter.

Feladat eljárás 8. Készítsen programot Pascal a számítási eljárást faktoriális. (0! = 1, 1, = 1, 2, = 2, 3! = 6, ...)

önálló munka

1. lehetőség: 5, hogy meghatározzuk a termék az egydimenziós tömbök A tömb mindegyik eleme, az eljárást két paraméter - a tömb elemeinek számát és egy változó paraméter a kimeneti termék.

2. lehetőség: 5, hogy meghatározzák a minimális dimenziós tömbök A tömb mindegyik eleme, az eljárást két paraméter - a tömb elemeinek számát és egy változó paraméter kimenetre minimális elem.

* Módon nehéz formában random egydimenziós tömb 10 elemek (az értékek -20 és +20). Hívása az eljárást, amíg amíg meg nem jelenik körében értéke nulla.