Elnevezések, ciklusok, feltételvizsgálat Programozás alapjai Elnevezések, ciklusok, feltételvizsgálat
Alapfogalmak Változó Konstans A változó egy mennyiség/objektum jelölése Informatikában egy „hely”, ahol értékeket tárolhatunk Matematikában egy ismeretlen mennyiség (függvények, paraméterek…) Rögzített, pillanatnyilag talán ismeretlen érték A változóval szembeállított fogalom, értéke állandó Informatikában nem változtatható értékű memóriaterület Matematikában egy olyan szám, aminek értéke nem változhat meg SEGÉDPROGRAM
Ciklusok „For”-ciklus „While”-ciklus Megadott értékig ismétli önmagát és a benne megadott parancsokat(ismerjük ismétlés darabszámát Pl: For i:=1 to 4 do Az i egy változó, a 4 egy konstans, ugyanis rögzítettük, hogy addig ismételje önmagát, amíg a változó (i) fel nem veszi a 4 értéket Addig fut a program, amíg a megadott értéket el nem éri, előfordulhat, hogy nem fut végig minden lehetséges változó értékén Pl: while i<4 do A ciklus addig fut, amíg a változó (i) értéke kisebb mint a konstans(4)
For ciklus A for ciklust fizikailag úgy kell elképzelni, mint egy kör, aminek annyiszor húzzuk meg körívét, amennyit a végértéknek megadunk A „piros” eset akkor lép fel, ha egymásba ágyazunk for ciklusokat SEGÉDPROGRAM
For ciklus Növekvő ciklus Csökkenő For i:=kezdőérték to végérték do Akkor fut le, ha végérték nagyobb/egyenlő a kezdőértékkel A ciklus akkor ér véget ha a változó eléri a végértéket For i:=kezdőérték downto végérték do Akkor fut le, ha végérték kisebb/egyenlő a kezdőértékkel A ciklus akkor ér véget ha a változó eléri a végértéket Kezdőérték< =végérték Ciklusváltozó:=kezdőérték utasítás Ciklusváltoz ó=végérték false Ciklusváltozó:=succ(ciklusválto zó) true A for-to utasítás folyamatábrája
A while ciklus folyamatábrája A while utasításban szereplő belépési feltétel (logikai kifejezés) vezérli a ciklus végrehajtását. A ciklusmag csak akkor hajtódik végre, ha a feltétel igaz. Ha a feltétel hamisra változik, akkor a ciklus befejezi a működését és a vezérlés a while ciklusutasítást követő utasításra kerül. Abban az esetben, ha a feltétel értéke a ciklusba való belépéskor false, a ciklusmag egyszer sem hajtódik végre. Ha a belépési feltétel true értéke nem változik a ciklus működése során, akkor ún. végtelen ciklust kapunk. feltétel utasítás A while ciklus folyamatábrája false SEGÉDPROGRAM
Feltételvizsgálat Ha a programunkat érzékennyé szeretnénk tenni a futás közben bekövetkező eseményekre, akkor szükségessé válik ezen esetek létrejöttének vizsgálata. Attól függően, hogy milyen esemény keletkezik, a programunk más és más úton halad tovább – elágazik. SEGÉDPROGRAM
Az if-then-else utasítás folyamatábrája Pl.: if i>4 then Ha teljesül a feltétel Ha nem teljesül Ha változónkra igaz a feltétel(itt: nagyobb mint 4), akkor a program módosítja azt, a megadott feltétel szerint Ha nem adtunk meg más parancsot, akkor nem veszi figyelembe, azaz megy tovább a program minden módosítás nélkül Ha megadtunk más parancsot(„else”-ág), akkor lényegében a feltételünk másik irányban teljesül,azaz az előbbi eset lép életbe feltét el utasítás1 utasítás2 igaz then-ág hamis else-ág Az if-then-else utasítás folyamatábrája
Case ciklus A case ciklus sok egymásba ágyazott feltételvizsgálat, amely segítségével többirányú elágazást írhatunk programunkba Case változó of feltétel : érték feltétel 2 : érték 2 stb end; Kifejezés kiértékelése érték 1 utasítás1 … érték N utasításN Máskülönben_utasítás SEGÉDPROGRAM
Konstans vagy változó Kívülről csak 2 ugyanolyan ábrát látunk, egy kis különbséggel. Az ördög a részletekben van
A tervező (Design) nézetből átkapcsoltam a Code fülre A gombok funkcióját az OnClick Event-tel diktáltam be, lényegében egy = jelként szolgálnak. A felső procedúránál két változót használtam (sz1, sz2) melyeket korábban a var fül alatt hoztam létre (változót mindig külön létre kell hozni) beírom a két számot, és annak veszi az összegét. Az alsó procedúrában már csak 1 változót használtam, és egy konstanst. Bármi számot írok a változó(sz3) helyére, az mindig 4-et ad hozzá. Ugyanúgy Edit-et használtam a konstans megjelenítésére, csak írásvédetté tettem a Readonly Propertie kipipálásával Az strtoint egy olyan parancs, amely (Str)ing típusból csinál (Int)eger típust (szövegből szám típust) Szükséges, mert a Delphi szövegként kezelte, a beviteli felület miatt.
A for ciklus szemléltetésére egy számokat kiíró minialkalmazást raktam össze. A program lényege, hogy a Button1 megnyomására a Memo1-ben megjelennek a számok 1-től 10-ig összeadva egymással Mivel ismét gombnyomásra indul a program, ezért ismételten a Button1 OnClick eventjét választjuk
Először is hogy a Memo1 üres legyen a Form1-nek a FormActive eventjét módosítjuk a piros téglalapban leírtak szerint Létrehozunk 2 változót. Az i mindig a ciklusváltozó, az n pedig az, amelyikbe a számokat tárolni fogjuk. A program azt csinálja így, hogy 10-szer lefuttatja azt a parancssort, amelyben az n-hez hozzáadom a ciklusváltozó értékét, azaz a számokat 1-től 10-ig. Kis kozmetikázás, hogy a program csak egyszer legyen futtatható, a gomb megnyomás után eltűnik Futtassuk és lássunk csodát V I S Z A
A while ciklust hasonló módon ábrázolom, mint a for-t A while ciklust hasonló módon ábrázolom, mint a for-t. Kívülről ugyanúgy néz ki. Van egy Memo-nk, meg egy gombunk. A gombot megnyomva kiírja a számokat, amíg a feltétel teljesül.
Ismét két változót hoztam létre. Az egyik egy számláló. Gombnyomásra fut le a ciklus. Az n-nek random számokat adunk, ami nem nagyobb, mint 15. A ciklus addig fut, amíg a szám kisebb, mint 10. Amint túllépi a 10-et, megáll a ciklus. A random számok miatt nagyrészt mások az eredmények. Mivel itt a második érték túllépte a 10-et, a ciklus megállt. V I S Z A
A legáltalánosabb feltételvizsgálat, az amikor két számot hasonlítunk össze, kisebb-nagyobb alapon Kérjünk be 3 Edit-et és egy gombot. A Caption és a Text property-knél nevezzük át őket tetszés szerint
A gomb megnyomására, a programunk megvizsgálja, melyik szám a nagyobb A gomb megnyomására, a programunk megvizsgálja, melyik szám a nagyobb. A var-nál felvettünk két változót, amik a számaink lesznek. Beállítjuk, hogy amit az Edit-ekbe írunk, az legyen a változók értéke. Beírjuk feltételvizsgálatunkat, majd a gombot letiltjuk, további megnyomástól. A feltételünk szerint az Edit3 tartalma megváltozik a nagyobbik számra. V I S Z A Kis apróság még annak elintézése, hogy az editekbe kattintva eltűnjön azok szövege.
A case-ciklus szemléltetéséhez vegyünk fel a Formunkra 2 editet, és egy gombot. Tetszés szerint feliratozzuk gombunkat, és editeinket. Extra beállításnak az Életkor(edit1) NumbersOnly propertyjét állítsuk True-ra.
A programunk szokás szerint gombnyomásra értékel ki. Felvesszük az ‘a’ változót, amelynek értéke mindig az Edit1 szövege lesz (kijelölt sor). A case ciklusba egybe beírhatunk minden értéket, az ábra szerint. Itt is beállíthatjuk, hogy kattintásra az editek üresek lesznek. Futtatjuk, a programot, és a kívánt évszámot beírva a kívánt értéket kapjuk.