Professional Documents
Culture Documents
Turbo Pascal Tetelek
Turbo Pascal Tetelek
hu
1. A.1. tétel
Algoritmus:
Eljárás
I:=1
Ciklus amíg I<=N és A(I) nem T tulajdonságú
I:=I+1
Ciklus vége
VAN:=I<=N
Ha VAN akkor SORSZ:=I
Eljárás vége.
Logaritmikus keresés
Algoritmus:
Eljárás
A:=1 : F:=N
Ciklus
K:=INT((A+F)/2)
Ha A(K)<X akkor A:=K+1
Ha A(K)>X akkor F:=K-1
amíg A<=F és A(K)<>X
Ciklus vége
VAN:=A<=F
Ha VAN akkor SORSZ:=K
Eljárás vége.
Forrás: http://www.doksi.hu
1. A.2. tétel
{programfej}
{globális hatású fordítási direktívák}
program programnév;
{deklarációs rész}
{lokális hatású fordítási direktívák}
uses {a használt unit könyvtárak felsorolása};
label {címkék deklarálása};
const {konstansok deklarálása};
type {típusok deklarálása};
var {változók deklarálása};
{a főprogram blokkja}
begin
{a főprogram törzsének utasításai}
end.
Forrás: http://www.doksi.hu
1. B. tétel
CREATE [<adatbázisnév>|?]
<adatbázisnév>-az új, üres adatbázis neve. Ha nem adjuk meg, vagy a
?-et alkalmazzuk, akkor a nevet az adatbázis létrehozásakor
adhatjuk meg. Az adatbázis a mezők nevének, típusának és
méretének definiálásával jön létre. A struktúra kialakítása
után azonnal tartalommal is feltölthető.
2. A.1. tétel
Az algoritmus tulajdonságai
Felépítése
Stuktogram
1.,
utasítás
terminális szimbólumok
utasítás
2., 3.,
Feltétel
i\ /n tesztelő doboz
utasítás
ciklusmag
ut. ut. értékadó utasítás
utasítás
Blokkdiagramm:
utasítás
Szöveges leírás:
1., Ha (feltétel) akkor (utasítás) különben (utasítás) elágazás vége
2. A.2 tétel
<feltétel>
i\ /n
<ciklusfeltétel(ek)>
Forrás: http://www.doksi.hu
<hasonlító kifejezés>
\ é1 : \ é2 : \ é3 : \ else
\ \ \ \ Otherwise
<feltétel1> <feltétel2> <feltétel3>
<ciklusfeltétel>
<hatáskör>
Forrás: http://www.doksi.hu
2. B. tétel
Mezôtípusok:
Karakteres (Character),(max. 254 byte)
• nyomtatható, billentyûzetrôl beírható szöveg (minden ASCII karakter)
szerepelhet benne
• max. 254 karakter hosszú
• olyan adatok tárolására alkalmazható amelyekkel matematikai mûveleteket nem
végezhetünk
FoxPro változók:
1., Adatfile : rekordjainak mezôi (7 típus) fix adattárolást végeznek.
2., Memóriaváltozó : program futás köz ben átmeneti adattárolás célját
szolgálja
Memória változók:
• nevûk legfeljebb 10 karakter (betû,szám,aláhuzás; betûvel kezd.)
• memória változók és adatbázis mezôi lehetnek egyezô nevüek
• számuk 256; 6000 byte, a memóriaváltozók tartalma .MEM állományba menthetô
• típus jellemzôk :
karakteres - max. 254 karakter hosszú, helyigény a karakterek száma + 2
numerikus - helyigény 9 byte
dátum - helyfoglalás 9 byte
logikai - 2 byte
• automatikus deklarálás
• értékadás
STORE <kif.> TO <memv.név [lista]> vagy <memv.>=<kif.>
• értékvisszajelzés
SET TALK ON, DISPLAY MEMORY
• változó törlése
RELEASE <memv.név [lista]> , RELEASE ALL LIKE <lista>
RELEASE ALL EXCEPT lista arról amit nem akarunk törölni
CLEAR MEMORY az összes változó törlése
• memóriavált. tartalmának mentése
SAVE TO <áll.név> [ALL, LIKE, EXCEPT]
• visszatöltés
RESTORE FROM <állomány név> [ADDITIVE]
csak az eddig még nem létezô változók jönnek be
Forrás: http://www.doksi.hu
3. A.1 tétel
Elemi típus:
bit
típusérték halmaza {0,1}
mûveletek halmaza {or, and, not, xor, <, >, =}
- Egészek:
Byte 0..255
Word 0..65,535
ShortInt -128..127
Integer -32,768..32,767
Longint -2,147,483,648..2,147,483,647
- Logikai:
Boolean True,False
- Karakter:
Char bármely ASCII karakter Pl: 'A'
- Felsorolt: a felsorolásban szereplô elemek Pl
T=(ôsz,tél)
- Intervallum: a már létezô sorszámozott típus egy
intervalluma
Pl: T = 1..100
- Valós:
Real 2.9E-39..1.7E38
Single 1.5E45..3.4E38
Double 5.0E-324..1.7E308
Extended 3.4E-4932..1.1E4932
Comp -2(63-on)+1..2(63-on)-1
(Lebegôpontos ábrázolás, Real "felett" aritmetikai társprocesszor
szükséges, illetve annak emulálása. Lásd $N és $E direktivákat.)
Forrás: http://www.doksi.hu
2.Struktúrált típusok
- String:
String[szám] Legfeljebb szám hosszúságú ASCII karakter
- Tömb:
Tomb : Array[index1,index2...] of alaptípus
(index csak sorszámozott típusú, az indexszámtól függ a
dimenzió)
- Record:
Valami = Record
[mezôlista;]
[Case [szelektor:] sorszámozott típus of
értékleírás : (mezôleírás)
[;értékleírás : (mezôleírás)..]]
End;
( A késôbbiekben láthatunk rá példákat)
3.mutató típusok
Típuskonstrukciók:
Típusok : A : Egészek
B : String
Elegy = Record
Szám: A
Név : B
End;
Matematikában jelölve : A = B U C
Programozásban pl. : Variálható rekord
Valtrek = Record
Szerzo : String; --> A könyvekre vonatkozik az egész rekord,
Cim : String; --> de a szelektortól függôen :
Case Kulcs : Char of
'n' : (Hely : Record
Terem : Char; --> ha 'N', a könyvek
Polc : Integer; --> helyének adatai
Sorsz : Integer; --> szerepelnek.
End);
'I' : (Olvaso: Record
Nev : String; --> ha 'I', a kölcsönzôk
Cim : String; --> adatai szerepelnek.
End);
End;
3. A.2. tétel
Értékadó utasítások
A legalapvetőbb Pascal utasítás az értékadás, amely áll egy bal
oldalból és egy jobb oldalból, a két oldalt az értékadás jele, a
:= köti össze. A bal oldalon csak változó állhat, a jobb oldalon
állhat konstans, változó és kifejezés. A konstans, a változó
valamint a kiértékelt kifejezés egyetlen értéket képvisel,
melyet a bal oldalon lévő változó vesz fel.
Az értékadó utasítás formája:
bal oldal:=jobb oldal;
Aritmetikai értékadás: az aritmetikai értékadásnál a változó
numerikus értéket vesz fel.
szk:=((a+b)/2);
Logikai értékadás: a Boolean típusú változók true vagy false
értéket vehet fel.
b1:=true;
Rekordérték adó utasítás: A with utasítással egyszerűbben adhatunk
rekordnak értéket, Általános formája:
with rekord_változó do utasítás;
Elágazások
Az if utasítás kétirányú, feltételes elágazást hajt végre . Az if
utasítás általános formája:
if logikai kifejezés then utasítás1 else utasítás2;
Ciklusok
A for ciklusutasítást akkor használjuk, ha pontosan ismerjük az
ismétlések darabszámát, így a ciklusmagot egy meghatározott
számszor végrehajtjuk. Általános alakja:
for ciklusváltozó:=kezdőérték to végérték do
begin
utasítások;
end;
4. A.1. tétel
4. A.2 tétel
Elemi típusértékhalmazok:
2. Struktúrált típusok
- String:
String[m] Legfeljebb m hosszúságú ASCII karakter
- Tömb:
Tomb : Array[index1, index2...] of alaptípus
(index csak sorszámozott típusú, az
indexszámtól függ a dimenzió)
- Record:
Valami = Record
[mezőlista;]
[Case [szelektor:] sorszámozott típus of
értékleírás : (mezéleírás)
[;értékleírás : (mezőleírás)..]]
End;
- Halmaz: Sorszámozott típusú elemek, maximum 256 db.
Set of alaptípus; Pl: Nagybetu = Set of ('A'..'Z')
Forrás: http://www.doksi.hu
- Állomány:
Típusos: File of alaptípus Pl : File of Integer;
(Komponensei egyforma méretek, az alaptípus
nem lehet állomány ill.objektum típus)
Típus nélküli: File Tipikus --> Pl :
BlockRead/Write
Szöveges: Text Felhasználásuk --> Pl : Listafile
(Csak szekvenciális elérés, soros szervezés)
- Eljárás
Procedure(formális paraméterlista)
Function(formális paraméterlista): típusazonosító
(paraméterlista elhagyható)
- (Objektum)
3.mutató típusok
Típuskonstrukciók
4.B tétel
Szintaxisa:
DIMENSION <tömb1>(<kifN1>[,<kifN2>])[,<tömb2>(<kifN3>[,<kifN4>])]...
<tömb1> - a létrehozandó tömb neve. Egyszerre több tömb is létrehozható
(<tömb2>, <tömb3>... stb.)
<kifN1>[,<kifN2>] - a tömb dimenziójának és méretének meghatározása. Ha csak
<kifN1>-et adjuk meg, akkor egydimenziós tömböt hozunk létre, egyébként
kétdimenzióst. <kifN1> és <kifN2> a sorok, illetve oszlopok száma.
Tömbkezelés
5. A.1. tétel
Elemi adattípusok
Egész szám:
Van olyan nyelv, amely megkülönbözteti az egész számokon végezhető
műveleteket a valós számokon végezhetőktől. Az egész számokat
legtöbbször 2 byte -on ábrázolják, kettes komplemens kódban. A
számítógépes egész számok köre nem zárt az alapműveletekre, azaz
lehetséges, hogy két egész szám összege nem számítható ki. Ezt
nevezzük túlcsordulásnak.
Valós számok:
A számítógépen ábrázolható valós szá mok igazából nem valósak, hanem
2-es vagy 10 -es számrendszerben véges sok számjeggyel leírható
racionális számok. A valós számokra kétféle korlátot ad hatunk:
létezik egy nagyságrendi korlát és egy pontossági korlát. A valós
számokra a műveletek sokasága létezik.
Logikai érték:
A Pascal ismeri a logikai típust, és rá vonatkozó műveleteket (AND,
OR, NOT).
Karakter:
Egy ilyen változóban egy tetszőleges karaktert tárolhatunk. A
karakterek kódolására legt öbbször az ASCII kódrendszert
használják. A karakterekre az összehasonlítás, a kódmegadás, a
következő, illetve az előző karakter képzése műveleteket szokták
megvalósítani.
Forrás: http://www.doksi.hu
5. A.2. tétel
A unitok felépítése:
Az interface rész
A kapcsolódási felület részt az interface foglalt szó nyitja meg.
Ebben a részben található a unit globális objektumainak deklarációja,
amelyek más modulokból is elérhetőek. A globális eljárásoknak és
függvényeknek csak a fejléce adható meg az interface részen
BEGIN
{ inicializációs rész }
END.
Forrás: http://www.doksi.hu
5. B. tétel
A TP matematikai függvényei
Általános leírása:
function függvény neve( paraméterlista ): függvény típusa ;
lokális deklarációs rész
###label, const, type, var, procedure, function###
begin
a függvény törzse ( végrehajtható utasítások
)
függvény neve := .......;
end;
6. A.1. tétel
Tömb:
Táblázat vagy mátrix lehet. Dimenzió: kiterjedés a síkban. Az egyes
tömbbeli elemek változó adattípusokat tartalmaznak. Az
egydimenziós tömböket más néven vektornak nevezzük. A tömb
statikus határai fixek.
11 12 13 21 22 23 31 32 33 sorfolytonos
11 21 31 12 22 32 13 23 33 oszlopfolytonos
Szöveg:
Ha egy adott tömb csak karaktereket tartalmaz és a tömbhatárok
dinamikusak, akkor, akkor szöveges összetett adatszerkezetről
beszélünk. Ez szükséges a szövegszerkesztésnél.
Forrás: http://www.doksi.hu
Verem:
A verem olyan sorozat, amelynek
csak az egyik végét tudjuk
kezelni, oda tehetünk be új d
elemet és onnan vehetünk ki
elemet. Amit legutoljára c
tettünk be, azt kell kivenni
először. Ez angolul Last In b
First Out (LIFO). A vele
végezhető műveletek: a verem a
tetejére való ráhelyezés és a
verem tetejéről való levétel.
Eljárás (PUSH(x))
Ha VM>N akkor HIBA („betelt a verem”)
különben V(VM):=x : VM:=VM+1
Ha vége
Eljárás vége.
Eljárás (POP(x))
Ha VM:=1 akkor HIBA („üres a verem”)
különben VM:=VM-1 : x:=V(VM)
Ha vége
Eljárás vége.
Sor:
A sor olyan sorozat, amelynek az egyik végére lehet tenni új
elemeket, a másik végéről pedig el lehet venni őket. Amit először
tettem be, azt veszem ki először. Angolul First In First Out
(FIFO).
Műveletek:
Eljárás (Üresre állítás)
HOVA:=1 : HONNAN:=1
Eljárás vége.
Eljárás (SORBA(x))
Ha HOVA>N akkor HIBA(„betelt a sor”)
különben S(HOVA):=x : HOVA:=HOVA+1
Ha vége
Eljárás vége.
Eljárás(SORBÓL(x))
Ha HONNAN:=HOVA akkor HIBA(„üres a sor”)
különben x:=S(HONNAN) : HONNAN:=HONNAN-1
Ha vége
Eljárás vége.
Forrás: http://www.doksi.hu
Lista:
A lista adatok egymás után láncolása valamilyen sorrendben.
Record:
A recordok valamilyen szempontból összefüggő adatok ,közös területen
való egymásután írása. Szelekciós o perátor, valamilyen pont. A
recordok halmazát file -oknak nevezzük. Nagy tömegű adatok
tárolásánál használjuk.
Műveletek: beírás, kiolvasás, törlés, record elemének módosítása,
szelekció vagy kiválasztás.
Név Fizetés
Név Fizetés
Név Fizetés
Alternatív szerkezet:
Olyan, mint a record, csak a record mezői típusától eltérnek
egymástól. A háttértárolón való tárolás szempontjából
szekvenciális-, direkt - és indexelt állományokat különböztetünk
meg.
Szekvenciális állomány:
Kétféle szekvenciális file-t különböztetünk meg. Szekvenciális Input
file és Szekvenciális Output file. Ez voltaképpen a sorhoz
hasonlít. Az input file-ból csak olvashatunk, az output file-ba
pedig csak írhatunk.
Műveletek: - bemeneti állományvégének érzékelése
- a kimeneti állomány végére írás
- az első elem feldolgozása és a következőre való lépés.
Direkt állomány:
Olvasható és írható egyszerre. A direktállományokban minden e gyes
recordhoz hozzá van rendelve egy sorszám.
Műveletek: - adott sorszámú record felhasználása ill. módosítása
- új record felvétele
Indexelt állomány:
Az indexelt állományoknál létezik egy úgynevezett indexelt tábla,
ahol az indexek rendezve vannak, és jelö lve van, hogy az indexek
mely adatokra mutatnak. Ha az indextábla elemeit sorba, egymás
után vagy szekvenciálisan érjük el, akkor az állományt indexelt
állománynak nevezzük.
Műveletek: - első record beolvasása, kiíratása
- logikailag következő record beolvasása, kiírása
- adott kulcsú record beolvasása, kiírása
- adott sorszámú record beolvasása, kiírása
Gráf:
Pontokból és vonalakból álló ábra. Rendezett számpárokkal jelöljük.
G(v,e), ahol v:vertex (csúcs), az e:edge ( él). A gráfot
szomszédsági-, él- vagy csúcsmátrixszal ábrázoljuk.
Forrás: http://www.doksi.hu
Fa:
A fa olyan összetett gráf, amely egyszerű, körmentes, összefüggő
gráf. Az adatokat a fa bejárásával érhetjük el. Háromféle bejárási
stratégia létezik: 1., KBJ (Középső, Baloldali, Jobboldali)
2., BKJ (Baloldali, Középső, Jobboldali)
3., BJK (Baloldali, Jobboldali, Középső)
Gyökérelemnek nevezzük azt az elemet, amelybe be nem vezet út, csak
ki.
Halmaz:
A halmaz egy olyan adatszerkezet, amelynek nincs meghatár ozva a
sorrendje. Műveletei az ismert halmazműveletek.
Forrás: http://www.doksi.hu
6. A.2. tétel
6. B.
IGAZGATÓ
↓ 1:n
FŐOSZTÁLYVEZETŐ
↓ 1:n
OSZTÁLYVEZETŐK
↓ 1:n
DOLGOZÓK
IGAZGATÓ
A1
E1 E2 E3
NIL
Forrás: http://www.doksi.hu
Hálós modell
Hálós adatbázis:
M 1
VEVŐ ELADÓ
1 1
M M
M N M N
TELEPHELY MEGRENDELÉS ÁRU SZÁLLITÓ
1 M
1 N
SPECIFIKÁCIÓ RAKTÁR
7. A.1. tétel
Összegzés tétele
Algoritmus:
Eljárás
S:=0
Ciklus I=1-től N-ig
S:=S+A(I)
Ciklus vége
Eljárás vége.
Eldöntés tétele
Algoritmus:
Eljárás
I:=1
Ciklus amíg I<=N és A(I) nem T tulajdonságú
I:=I+1
Ciklus vége
VAN:=I<=N
Eljárás vége
Kiválasztás tétele
Algoritmus:
Eljárás
I:=1
Ciklus amíg A(I) nem T tulajdonságú
I:=I+1
Ciklus vége
SORSZ:=I
Eljárás vége.
Forrás: http://www.doksi.hu
7. A.2 tétel
Speciális tömbök:
Direkt memória-elérést szolgáló elôre deklarált tömbök:
MEM [Szegmens : eltolás]---hivatkozás egy Byte tipusú elemre
MEMW[Szegmens : eltolás]---hivatkozás egy Word tipusú elemre
MEML[Szegmens : eltolás]---hivatkozás egy Longint tipusú elemre
A MEM, MEMW és MEML memóriatömbök lehetôvé teszik, hogy a memória bármely
címén levô Byte -ot, két Byte -os szót ill. négy Byte -os dupla szót
kiolvassunk ill. felülírjuk. Éppen ezért óvatosan használjuk!
A szegmens és az eltolás két Word tipusú kifejezés, melyeket a kettôspont
választ el egymástól.
7. B. tétel
8. A.1. tétel
Algoritmus:
Eljárás
Ciklus I=1-től N-1-ig
Ciklus J=I+1-től N-ig
Ha A(J)<A(I) akkor A:=A(J) : A(J):=A(I) : A(I):=A
Ciklus vége
Ciklus vége
Eljárás vége.
Rendezés minimumkiválsztással
Algoritmus:
Eljárás
Ciklus I=1-től N-1-ig
INDEX:=I : ÉRTÉK:=A(I)
Ciklus J=I+1-től N-ig
Ha ÉRTÉK>A(J) akkor ÉRTÉK:=A(J) : INDEX:=J
Ciklus vége
A(INDEX):=A(I) : A(I):=ÉRTÉK
Ciklus vége
Eljárás vége.
Forrás: http://www.doksi.hu
8. A.2. tétel
type
tömb = array[1..10][1..10] of real;
betuk = set of [a..z];
tfile = file of integer;
komplex = record
x, y: real;
end;
st12 = string[12];
var
st12 : string[12];
a : tomb;
f : tfile;
abc : betuk;
w, y : komplex;
fnev : st12;
procedure (x:tömb; olv:tfile; fn: st12);
...
begin
...
end;
Forrás: http://www.doksi.hu
8. B. tétel
ALLTRIM()
Egy karakter bevezető és záró szóközének levágása. Visszaadott
értéke egy karakteres kifejezés.
ALLTRIM(<kifC>)
ASC()
Egy karakter ASCII kódját határozza meg. Visszaadott értéke
numerikus, 0 és 256 közötti szám lehet.
ASC(<kifC>)
CHR()
Egy ASCII kód karakteres formáját adja meg. Visszaadott értéke egy
karakter, amely az ASCII kódnak felel meg.
CHR(<kifN>)
ISALPHA()
Azt vizsgálja, hogy egy karaktersorozat betűvel kezdődik-e.
Visszaadott értéke igaz (.T.) vagy hamis (.F.).
ISALPHA(<kifC>)
ISDIGIT()
Azt vizsgálja, hogy egy karaktersorozat számmal kezdődik-e.
Visszaadott értéke igaz (.T.) vagy hamis (.F.).
ISDIGIT(<kifC>)
LEFT()
A karaktersorozat meghatározott részét adja vissza a bal oldaltól
számítva.
LEFT(<kifC>,<kifN>)
LEN()
A karaktersorozat hosszát adja meg numerikus egészként. Minden
byte-ot 0-nak számol.
LEN(<kifC>)
LIKE()
Két karakteres kifejezést hasonlít össze. Nem tesz különbséget a
kis és nagybetűk között. Visszaadott értéke igaz vagy hamis
lehet.
LIKE(<kifC1>,<kifC2>)
LOWER()
A megadott karaktersorozatot kisbetűssé konvertálja. Csak a
betűknél végzi el a műveletet.
LOWER(<kifC>)
REPLICATE()
Egy karaktersorozat ismétlése kifN -szer. Maximum 64000 karakter
hosszan lehet megtenni. Ha 0 -t adunk meg, akkor a string „”
lesz.
REPLICATE(<kifC>,<kifN>)
Forrás: http://www.doksi.hu
RIGHT()
A karaktersorozat meghatározott részét adja vissza a jobb oldaltól
számítva.
RIGHT(<kifC>,<kifN>)
RTRIM()
Egy karaktersorozat jobb oldaláról levágja a szóközöket.
RTRIM(<kifC>)
SPACE()
Egy karakteres változót tölt fel szóközökkel. Visszaadott érétke
egy string kifN darab szóközzel.
SPACE(<kifN>)
STR()
Egy numerikus kifejezést karakteressé alakít.
STR(<kifN1>[,<kifN2>[,<kifN3>]])
TRANSFORM()
Tetszőleges adattípust formázott karaktersorozattá alakít.
TRANSFORM(<kifx>,<kifC>)
UPPER()
Adott karaktersorozatot nagybetűssé konvertál.
UPPER(<kifC>)
Forrás: http://www.doksi.hu
Algoritmus:
Eljárás
Ciklus I=2-től N-ig
Ciklus J=N-től I-ig -1-esével
Ha A(J-1)>A(J) akkor A:=A(J-1)
A(J-1):=A(J)
A(J):=A
Elágazás vége
Ciklus vége
Ciklus vége
Eljárás vége.
Forrás: http://www.doksi.hu
Kiválogatás tétele
Algoritmus:
Eljárás
J:=0
Ciklus I=1-től N-ig
Ha A(I) T tulajdonságú akkor J:=J+1 : B(J):=I
Ciklus vége
Eljárás vége.
Forrás: http://www.doksi.hu
Eljárások
Eljárásfej:
PROCEDURE eljárás-azonosító (formális paraméterlista);
Deklarációs rész:
LABEL...
CONST...
TYPE...
VAR...
PROCEDURE...
FUNCTION...
Blokk:
Begin
utasítások
End;
Formális paraméterlista
([Var]) azonosító (,azonosító...):típusazonosító
( ; ([Var]) azonosító (,azonosító...):típusazonosító...)
A formális paraméterlista elhagyható.
Ha a formális paraméterlista, vagy akár csak egy paraméter elôtt is, szerepel a
“Var” kulcsszó, az ilyen paraméterátadást címszerinti átadásnak nevezzük
(változó azonosító ð memória cím), elhagyása esetén pedig érték szerinti
paraméter átadásnak nevezzük. A címszerinti paraméter-átadás a hívó és hívott
modul között mindig kétirányú, az átadott paraméter értéke (pld. annak
megváltozásával) visszakerül a vívó modulhoz, míg az érték szerinti hívás
csak egyirányú, a hívótól a hívott modul felé irányul.
Forrás: http://www.doksi.hu
Aktuális paraméterlista
kifejezés/változó (,kifejezés/változó...)
Függvények
Függvény hívása:
Függvényazonosító (aktuális paraméterlista)
Rekurzív hívás
Egy eljárás vagy függvény önmagából való hívását rekurzív hívásnak nevezzük.
Ilyenkor a visszatérési címek, lokális változók újból és újból a verembe
kerülnek. Tehát a verem egyre csak telik, s ha nem vigyázunk, akkor könnyen
betelik, azaz túlcsordúl (Stack overflow). Rekurzió esetén meg kell adni a
lehetõséget arra, hogy a verem kiürüljön. A verem akkor tud csökkeni, amikor
az eljárás vagy függvényblokk záró End -jére kerül a vezérlés. Ekkor
megszûnnek a lokális változók, s a visszatérési cím alapján folytatódik a
programvezérlés. Ha tehát az End elõtt mindig újra hívjuk a rutint, a verem
csak telni tud. Általában egy feltételtõl függõen szokás újra hívni a rutint,
majd ha az a feltétel már nem teljesül, a program vissza tud keveredni az
induló programszintre.
Forrás: http://www.doksi.hu
Eljárás deklarálás:
PROCEDURE EljNév ( Változó : Típus ) ;
Eljárás hívása:
EljNév ( Változó | Konstans | Szám ) ;
A paraméter lehet egy változó, elõre deklarált konstans vagy konkrét szám. Az
EljNév-en belül a változó nem képes megváltozni. Egy irányú az adatforgalom.
Eljárás deklarálás:
PROCEDURE EljNév ( VAR változó : Típus ) ;
Eljárás hívása:
EljNév ( változó ) ;
Az EljNév -en belül a változó kaphat új értéket, mert az eljárás hívása során a
változónak nem az értéket adjuk át, hanem az abszolút címet. Az adatforgalom
kétiranyú.
A paraméter csak változó lehet, nem lehet konkrét szám vagy konstans.
Forrás: http://www.doksi.hu
11. B.
A metszetképzés tétele
Algoritmus:
Eljárás
CN:=0
Ciklus I=1-től N-ig
J:=1
Ciklus amíg J<=M és A(I)<>B(J)
J:=J+1
Ciklus vége
Ha J<=M akkor CN:=CN+1 : C(CN):=A(I)
Ciklus vége
Eljárás vége.
Unióképzés tétele
Algoritmus:
Eljárás
Ciklus I=1-től N-ig
C(I):=A(I)
Ciklus vége
CN:=N
Ciklus J=1-től M-ig
I:=1
Ciklus amíg I<=N és A(I)<>B(J)
I:=I+1
Ciklus vége
Ha I>N akkor CN:=CN+1 : C(CN):=B(J)
Ciklus vége
Eljárás vége.
Forrás: http://www.doksi.hu
12. B tétel
A Pascal a 2.0 verzió óta támogatja a grafika kezelését. Akkor csupán egy-két
eljárás segítette a programozó munkáját, míg a Pascal 5.5 -ben már 79 eljárás
illetve függvény hivatott ugyanerre a célra.
Grafikus file-ok :
GRAPH.TPU - graph unit,ez tartalmazza a grafikus eljárásokat ill.
függvényeket
*.BGI - ezek tartalmazzák a különbözô grafikus kártyákhoz tartozó grafikus
meghajtókat
*.CHR - a grafikus karakterkészletet tartalmazzák
Ezek olyan alakzatok, melyek rajzolásához elegendô egy vonal. Itt lehetôség
nyílik az egyenes rajzolási módjának beállítására is (SetLineStyle eljárás).
Vonalrajzoló eljárások a következôk:
Arc - Körív
Circle - Kör
Drawpoly - Polinom
Ellipse - Ellipszis
Line, LineTo, LineRel - Egyenes
Rectangle - Téglalap
Ide azok az eljárások sorolandók amelyek körvonala zárt belül pedig egy színnel
vagy mintával vannak kitöltve. Létrehozásuk két féle módon történhet: vagy
megrajzoljuk a körvonalat,és azt festjük ki (FloodFill eljárás), vagy pedig
eleve festett alakzatokat rajzolunk. Ez utóbbit a következô eljárásokkal
tehetjkük meg:
Bar - Téglalap
Bar3d - Téglatest
FillEllipse - Ellipszis
FillPoly - Sokszög
Pieslice - Körcikk
Sector - Elipsziscikk
Az animáció:
Eredeti: 64 56 8 42 5 12 16 40 3 31 47 22 24 33 7 46
1. menet után: 56 64 8 42 5 12 16 40 3 31 47 22 24 33 7 46
2. menet után: 8 56 64 42 5 12 16 40 3 31 47 22 24 33 7 46
3. menet után: 8 42 56 64 5 12 16 40 3 31 47 22 24 33 7 46
4. menet után: 5 8 42 56 64 12 16 40 3 31 47 22 24 33 7 46
5. menet után: 5 8 12 42 56 64 16 40 3 31 47 22 24 33 7 46
...........
...........
...........
15. menet után: 3 5 7 8 12 16 22 24 31 33 40 42 46 47 56 64
Algoritmus:
Eljárás
Ciklus J=2-től N-ig
I:=J-1 : A:=A(J)
Ciklus amíg I>0 és A<A(I)
A(I+1):=A(I) : I:=I-1
Ciklus vége
A(I+1):=A
Ciklus vége
Eljárás vége.
Forrás: http://www.doksi.hu
Lokális változók: csak egy adott alprogramban, vagy egy adott unit -ban
élnek. A program során csak erre az idôre terhelik a memóriát.
13. B. tétel
Algoritmus:
Eljárás
INT(LOG(N)/LOG(2))
D:=2
Ciklus
I:=1
Ciklus amíg I<=D és I+D<=N
Ciklus J=I+D-től N-ig D-esével
A:=A(J) : B:=J-D
Ciklus amíg B>0 és A<A(B)
A(B+D):=A(B) : B:=B-D
Ciklus vége
A(B+D):=A
Ciklus vége
I:=I+1
Ciklus vége
D:=INT(D/2)
amíg D>0
Ciklus vége
Eljárás vége.
Forrás: http://www.doksi.hu
Algoritmus:
Eljárás
I:=1
Ciklus amíg I>=1 és I<=N
Ha VAN_JÓ_ESET(I) akkor I:=I+1 : X(I):=0
különben I:=I-1
Elágazás vége
Ciklus vége
VAN:=I>N
Eljárás vége.
VAN_JÓ_ESET(I):
Ciklus
X(I):=X(I)+1
amíg X(I)<=M(I) és ROSSZ_ESET(I,X,(I))
Ciklus vége
VAN_JÓ_ESET:=X(I)<=M(I)
Eljárás vége.
ROSSZ_ESET(I,X(I)):
J:=1
Ciklus amíg J<I és (J,X(J)) nem zárja ki (I,X(I))-t
J:=J+1
Ciklus vége
ROSSZ_ESET:=J<I
Eljárás vége.
Forrás: http://www.doksi.hu
Adatok pl:
• színek,
• méretek,
• képernyőn való helyzet,
• állapot
Működések pl:
• megszületés, létrehozás,
• megjelenítés, Init,
• forgatás,
• mozgatás, eltolás,
• állapotváltás,
• eltűntetés, elrejtés,
Definíció:
Procedure MetódusNév[(ParTip)]; VIRTUAL;
Forrás: http://www.doksi.hu
A direktívák csoportosítása:
- Kapcsoló direktívák: csak két állapotuk lehet, aktív és passzív, ezt a
direktíva neve után tett '+' ill. '-' jellel tüntetjük fel. Szintaxisuk a
következô: a direktívákat kapcsos zárójelbe tesszük, de
megkülönböztetésül a kommentektől a nyitó zárójel '{' után dollár jel
'$'jelzi, hogy ez direktíva. Ezután a direktíva neve, majd az állapotot
jelzô '+' vagy ' -' jel következik. Például: {$I+} vagy {$B-}. Egymás után
több direktívát is felsorolhatunk, mint például: {$I+,B -,N+}. A kapcsoló
direktívák globálisak vagy lokálisak lehetnek:
{$IFxxx feltétel}
...
...
{$ELSE}
...
...
{$ENDIF}
Fordítási direktívák
BKJ-bejárás(MUT):
Ha MUT<>0 akkor BKJ-bejárás(BAL(MUT))
ki: ADAT(MUT)
BKJ-bejárás(JOBB(MUT))
Elágazás vége
Eljárás vége.
BJK-bejárás(MUT):
Ha MUT<>0 akkor BJK-bejárás(BAL(MUT))
BJK-bejárás(JOBB(MUT))
ki: ADAT(MUT)
Elágazás vége
Eljárás vége.
Forrás: http://www.doksi.hu
Művelet Text
Deklaráció Var f:text;
Irás/olvasás egy sor (CL/LF)
jellege csak írható vagy csak olvasható,
szekvenciális
Összerendelés Assign(f,filenév)
Nyitási módok Reset: csak olvasásra
Append: csak írás, bővítés a file végére
Rewrite: csak írás, felülírás
Írás Write(f,sor) nem tesz a sor végére CR/LF jelet
Writeln(f,sor) tesz a sor végére CR/LF jelet
Olvasás Read(f,sor) nem emel sort
Readln(f,sor) emel sort
Pozicionálás -
Pozíció- és fileméret Seekeof(f)
Forrás: http://www.doksi.hu
18.B. tétel
Turbo PASCAL
Az IF utasítás
A CASE utasítás
CASE selektor OF
cimke1 : utasítás1;
...
cimken : utasításn;
else utasításm;
END;
Forrás: http://www.doksi.hu
FoxPro
IF ... ENDIF
IF feltétel
utasítások
ELSE
utasítások
ENDIF
DO CASE
CASE feltétel1
utasítások
[CASE feltétel2]
utasítások
[OTHERWISE]
utasítások
END [CASE]
Forrás: http://www.doksi.hu
Művelet Típusos
Deklaráció Var f:file of típus;
Irás/olvasás egy komponens írható vagy olvasható (alaptípus)
jellege
Összerendelés Assign(f,filenév)
Nyitási módok Reset: irás/olvasás
Rewrite: írásra/olvasásra újra létrehoz
Írás Write(f,komponensek)
Olvasás Read(f,komponens)
Pozicionálás Seek(f,n)
Pozíció- és fileméret Filepos(f): longint;
Sizeof(f,komponens);
Filesize(f);
Forrás: http://www.doksi.hu
21. A.2.
Fordító direktívák