Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 ifin811/ea1 C Programozás: Algoritmusok. 2 Vázlat Problémák megoldása Algoritmusok –Változók és értékeik –Programvezérlés.

Hasonló előadás


Az előadások a következő témára: "1 ifin811/ea1 C Programozás: Algoritmusok. 2 Vázlat Problémák megoldása Algoritmusok –Változók és értékeik –Programvezérlés."— Előadás másolata:

1 1 ifin811/ea1 C Programozás: Algoritmusok

2 2 Vázlat Problémák megoldása Algoritmusok –Változók és értékeik –Programvezérlés

3 3 A probléma megoldásának folyamata Pontos meghatározás Algoritmus Program Futtatás -> megoldás Tervezés Implementáció Fordítás Analizálás Probléma

4 4 Algoritmus és program Probléma C Program Algoritmus Algoritmus: a feladat végrehajtásához szükséges utasítások sorozata

5 5 Algoritmusok - példák (Étel) recept IKEA bútor összeszerelési útmutató Játékszabályok Video magnó használati utasítás Hogyan juthatsz el a házibulira Szabásminta Autó javítási kézikönyv manual Fizika : egyenletek Természeti törvények -> modellek

6 6 Az algoritmus összetevői Változók és értékeik Műveletek Utasítások sorozata Részfeladatok, szubrutinok Elágazások Ismétlések Dokumentáció

7 7 Változók és értékeik Mennyiségek, mérési eredmények, a probléma kiinduló paraméterei Lehetnek számok, betűk, összetett objektumok Gyakran van mértékegységük: –Recept: hozzávalók

8 8 Ananászos lepénykék 3 deka vaj 1 ek. méz 1 doboz ananászkonzerv ½ csomag mirelit leveles tészta Kevés liszt a deszkára és kiszúráshoz 2 ek. porcukor ½ tk. őrölt fahéj 2 csipetnyi frissen reszelt szerecsendió Előmelegítem a sütőt 230° C-ra. Gyenge lángon a vajat és belekeverem a mézet. A kiolvadt tésztát leheletvékonyra nyújtom, és 12 db körlapot vágok ki. Átteszem őket a sütőlappal kibélelt tepsibe. A lecsepegtetett ananászkarikákat ráteszem a tésztakarikákra. Egyenletesen megkenem őket a mézes vajjal. 15 percre betolom őket a forró sütőbe. Még forrón megszórom őket a fahéjas-szerecsendiós porcukorral. Forrás: Stahl Judit: Gyorsan valami finomat, Park Kiadó, 2003

9 9 Ananászos lepénykék 3 deka vaj 1 ek. méz 1 doboz ananászkonzerv ½ csomag mirelit leveles tészta Kevés liszt a deszkára és kiszúráshoz 2 ek. porcukor ½ tk. őrölt fahéj 2 csipetnyi frissen reszelt szerecsendió Előmelegítem a sütőt 230° C-ra. Gyenge lángon a vajat és belekeverem a mézet. A kiolvadt tésztát leheletvékonyra nyújtom, és 12 db körlapot vágok ki. Átteszem őket a sütőlappal kibélelt tepsibe. A lecsepegtetett ananászkarikákat ráteszem a tésztakarikákra. Egyenletesen megkenem őket a mézes vajjal. 15 percre betolom őket a forró sütőbe. Még forrón megszórom őket a fahéjas-szerecsendiós porcukorral. Forrás: Stahl Judit: Gyorsan valami finomat, Park Kiadó, 2003

10 10

11 11 Változók Ez az üveg tartalmazhat 10 gumicukorkát 50 gramm cukrot 3 szelet sütit stb. ÉrtékVáltozó Értékek – tárolására szolgálnak Példa:

12 12 A változók korlátai A változók csak bizonyos típusú értékeket tudnak tartalmazni

13 13 Az algoritmusok részei Változók és értékeik Utasítások, műveletek (primitív) Utsasítások sorozata Részfeladatok, szubrutinok (utasításokból állnak) Elágazások (különböző utasítások felé) Ismétlések (részfeladat) Dokumentáció (független az utasításoktól)

14 14 Utasítások Vedd le a cipőd Számolj 10 -ig Vágjuk fel a hagymát 1 sima, 1 fordított Húzuk meg szorosan a csavart Az utasítások egyértelműek, egyszerűek és végrehajthatóak Utasítások, hogy műveleteket hajtsunk végre értékeken és változókon.

15 15 Utasítások alkalmazása Legtöbb műveletet csak bizonyos típusú változókon és értékeken lehet elvégezni Példa:

16 16 Az algoritmusok részei Változók és értékeik Utasítások, műveletek (primitív) Utsasítások sorozata Részfeladatok, szubrutinok (utasításokból állnak) Elágazások (különböző utasítások felé) Ismétlések (részfeladat) Dokumentáció (független az utasításoktól)

17 17 Utasítások sorozata 1. Nyisd ki a hűtőt 2. Tedd be az elefántot 3. Csukd be a hűtő ajtaját 1. Nyisd ki a hűtőt 2. Vedd ki az elefántot 3. Tedd be a zsiráfot 4. Csukd be a hűtő ajtaját

18 18 Az algoritmusok részei Változók és értékeik Utasítások, műveletek (primitív) Utsasítások sorozata Részfeladatok, szubrutinok (utasításokból állnak) Elágazások (különböző utasítások felé) Ismétlések (részfeladat) Dokumentáció (független az utasításoktól)

19 19 Szubrutin Egy elnevezett részsorozata az utasításoknak Így: –Egyszerűen (nevével) lehet rá hivatkozni –...nem pedig külön-külön minden utasításra –Különböző paraméterekkel hívható

20 20 Szubrutin: példa szubrutin Vezess_az_ELTÉre { 1. a kulcsot keresd meg 2. központi zárat nyisd ki 3. ajtót nyisd ki 4. szállj be 5. csukd be az ajtót 6. tedd be a kulcsot 7. indítsd el az autót 8. tolass ki a parkolóból 9. menj el az utca végéig 10. fordulj jobbra 11. menj el az utca végéig 12. fordulj balra... stb. stb. stb…...stb.stb.stb találj parkolót 53. parkolj be 54. állítsd le a motort 55. vedd ki a kulcsot 56. nyisd ki az ajtót 57. szállj ki 58. csukd be az ajtót 59. zárd be a kocsit }

21 21 Szubrutin hívása szubrutin Hétfő { Kelj_fel Mosakodj_meg Egyél_reggelit Vezess_az_ELTÉre Ülj_be_C_programozásra...stb...stb...stb... Vezess_haza...stb...stb...stb... } szubrutin 39_hét { Hétfő Kedd Szerda Csütörtök...stb...stb...stb... }

22 22 Szubrutin A “szubrutin” helyett használható: Részfeladat Modul Procedure Függvény szubrutin Hétfő { Kelj_fel Mosakodj_meg Egyél_reggelit Vezess_az_ELTÉre Ülj_be_C_programozásra...stb...stb...stb... Vezess_haza...stb...stb...stb... }

23 23 Szubrutin Kapcsos zárójelek jelzik a szubrutin elejét és végét. szubrutin Hétfő { Kelj_fel Mosakodj_meg Egyél_reggelit Vezess_az_ELTÉre Ülj_be_C_programozásra...stb...stb...stb... Vezess_haza...stb...stb...stb... }

24 24 Szubrutin hívása Speciális utasítás “szubrutin hívás” szubrutin Hétfő { Kelj_fel Mosakodj_meg Egyél_reggelit Vezess_az_ELTÉre Ülj_be_C_programozásra...stb...stb...stb... Vezess_haza...stb...stb...stb... }

25 25 Szubrutin A szubrutinnak lehetnek paraméterei szubrutin ügyfélszolgálat ( nevem,napszak ) { mondd(“Jó napszakot”); mondd(“nevem vagyok”); mondd(“Miben segíthetek?”); } ügyfélszolgálat ( “Szebeni Anna”, “Reggel” ); ügyfélszolgálat (“Szebeni Anna”, “Nap” ); ügyfélszolgálat ( “Kriza Péter”, “Este” );

26 26 Az algoritmusok részei Változók és értékeik Utasítások, műveletek (primitív) Utsasítások sorozata Részfeladatok, szubrutinok (utasításokból állnak) Elágazások (különböző utasítások felé) Ismétlések (részfeladat) Dokumentáció (független az utasításoktól)

27 27 Elágazások Olyan utasítás amelyik eldönti, hogy a következő lehetséges két sorozatból melyiket hajtsuk végre A döntés egy igaz/hamis állításon múlik Példák: –Autójavítás –Reciprok

28 28 Elágazások: autójavítás ha (önindító megy) akkor { EllenőrizBenzin EllenőrizGyertya EllenőrizKarburátor } egyébként { EllenőrizAkkumulátor EllenőrizGyujtófej }

29 29 Elágazások: autójavítás igaz vagy hamis állítás ha (önindító megy) akkor { EllenőrizBenzin EllenőrizGyertya EllenőrizKarburátor } egyébként { EllenőrizAkkumulátor EllenőrizGyujtófej }

30 30 Elágazások: autójavítás Végrehajtódik, ha a feltétel igaz. ha (önindító megy) akkor { EllenőrizBenzin EllenőrizGyertya EllenőrizKarburátor } egyébként { EllenőrizAkkumulátor EllenőrizGyujtófej }

31 31 Elágazások: autójavítás Végrehajtódik, ha a feltétel hamis. ha (önindító megy) akkor { EllenőrizBenzin EllenőrizGyertya EllenőrizKarburátor } egyébként { EllenőrizAkkumulátor EllenőrizGyujtófej }

32 32 Elágazások: reciprok Feladat. Adjuk meg egy szám reciprokát. Példák: A 2 reciproka: 1/2 A -3/4 reciproka: 1/(-3/4) = -4/3 A 0 reciproka: “értelmetlen”

33 33 Elágazások: reciprok Algoritmus: beolvas Szám; if (Szám nem egyenlő 0) then { kiír 1/Szám; } else { kiír „végtelen”; } Feladat. Adjuk meg egy szám reciprokát.

34 34 Elágazások: reciprok A Szám egy változó amely értéke attól függ, hogy mit adnak be a program futásakor. Algoritmus: beolvas Szám; if (Szám nem egyenlő 0) then { kiír 1/Szám; } else { kiír „végtelen”; }

35 35 Elágazások: reciprok Az elágazás függ Szám értékétől Algoritmus: beolvas Szám; if (Szám nem egyenlő 0) then { kiír 1/Szám; } else { kiír „végtelen”; }

36 36 Elágazások: reciprok Egy adott konkrét Szám esetén csak az egyik ág hajtódik végre Algoritmus: beolvas Szám; if (Szám nem egyenlő 0) then { kiír 1/Szám; } else { kiír „végtelen”; }

37 37 Algoritmus: beolvas Szám; if (Szám nem egyenlő 0) then { kiír 1/Szám; } else { kiír „végtelen”; } Elágazások: reciprok Végrehajtódik, ha Szám nem egyenlő 0-val

38 38 Algoritmus: beolvas Szám; if (Szám nem egyenlő 0) then { kiír 1/Szám; } else { kiír „végtelen”; } Elágazások: reciprok Végrehajtódik, ha Szám egyenlő 0-val

39 39 Elágazások: feladat input Num; if (Num != 0) then { output 1/Num; } else { output „végtelen”; } Ugyanazt a kimentet adja a két alábbi algoritmus? Algoritmus 1: input Num; if (Num != 0) then { output 1/Num; } output „végtelen” ; Algoritmus 2:

40 40 Elágazások: összetett feltétel Mi van ha több feltételt kell kielégítteni? ha ( ma csütörtök van és 12:00 ) akkor { gyerünk az 160-as terembe } egyébként { gyerünk moziba } megoldás 1

41 41 Elágazások: összetett feltétel megoldás 2 “egymásba ágyazott” feltételek ha ( ma csütörtök van ) akkor { ha ( 12:00 ) akkor { gyerünk a 160-as terembe } egyébként …stb...

42 42 Elágazások: legalább egyfeltétel Több feltétel közül elég ha egy teljesül ha ( éhes vagyok vagy elmúlt 11:00 óra vagy a padszomszédom szemet vetett az uzsonnámra ) akkor { Most megeszem az uzsonnát }

43 43 Az algoritmusok részei Változók és értékeik Utasítások, műveletek (primitív) Utsasítások sorozata Részfeladatok, szubrutinok (utasításokból állnak) Elágazások (különböző utasítások felé) Ismétlések (részfeladat) Dokumentáció (független az utasításoktól)

44 44 Ismétlések Ismételj egy utasítást... –...addig amíg egy feltétel fennáll Más néven iteráció vagy ciklus Példa: –Randira hívás

45 45 Ismétlések szubrutin RandiraHívás ( név, időpont, hely ) { Felhív(név); Mond("Helló", név, „hogy vagy?"); Mond(„Eljössz velem", időpont, hely, "?"); VálasztHallgat( ); start könyörgések_száma nullától; amíg (a válasz "Nem" és könyörgések_száma < 100) { Mond(„Na, lécci!"); könyörgések_száma növelése 1-el; VálasztHallgat ( ); } }

46 46 szubrutin RandiraHívás ( név, időpont, hely ) { Felhív(név); Mond("Helló", név, „hogy vagy?"); Mond(„Eljössz velem", időpont, hely, "?"); VálasztHallgat( ); start könyörgések_száma nullától; amíg (a válasz "Nem" és könyörgések_száma < 100) { Mond(„Na, lécci!"); könyörgések_száma növelése 1-el; VálasztHallgat ( ); } } Ismétlések A feltételt vizsgáljuk meg először

47 47 szubrutin RandiraHívás ( név, időpont, hely ) { Felhív(név); Mond("Helló", név, „hogy vagy?"); Mond(„Eljössz velem", időpont, hely, "?"); VálasztHallgat( ); start könyörgések_száma nullától; amíg (a válasz "Nem" és könyörgések_száma < 100) { Mond(„Na, lécci!"); könyörgések_száma növelése 1-el; VálasztHallgat ( ); } } Ismétlések Lehet, hogy nem is hajtódik végre

48 48 Ismétlések szubrutin RandiraHívás ( név, időpont, hely ) { Felhív(név); Mond("Helló", név, „hogy vagy?"); Mond(„Eljössz velem", időpont, hely, "?"); VálasztHallgat( ); start könyörgések_száma nullától; amíg (a válasz "Nem" és könyörgések_száma < 100) { Mond(„Na, lécci!"); könyörgések_száma növelése 1-el; VálasztHallgat ( ); } } A változók kezdteti értékét helyesen kell beállítani

49 49 Ismétlések A feltételben használt változót frissíteni kell szubrutin RandiraHívás ( név, időpont, hely ) { Felhív(név); Mond("Helló", név, „hogy vagy?"); Mond(„Eljössz velem", időpont, hely, "?"); VálasztHallgat( ); start könyörgések_száma nullától; amíg (a válasz "Nem" és könyörgések_száma < 100) { Mond(„Na, lécci!"); könyörgések_száma növelése 1-el; VálasztHallgat ( ); } }

50 50 szubrutin RandiraHívás ( név, időpont, hely ) { Felhív(név); Mond("Helló", név, „hogy vagy?"); Mond(„Eljössz velem", időpont, hely, "?"); VálasztHallgat( ); start könyörgések_száma nullától; amíg (a válasz "Nem" és könyörgések_száma < 100) { Mond(„Na, lécci!"); VálasztHallgat ( ); } } Ismétlések Végtelen ciklus Mi történik, ha nem frissítjük az értéket?

51 51 Az algoritmusok részei Változók és értékeik Utasítások, műveletek (primitív) Utsasítások sorozata Részfeladatok, szubrutinok (utasításokból állnak) Elágazások (különböző utasítások felé) Ismétlések (részfeladat) Dokumentáció (független az utasításoktól)

52 52 Dokumentáció Mi célt szolgál az algoritmus Hogyan csinálja meg Milyen paramétereket vár és ad vissza Milyen részei vannak, mi azok feladata

53 53 Fölülről lefelé tervezés Írjuk le a feladatot Osszuk fel 3-7 részre Minden részfeladatot osszunk 3-7 részre Addig osszuk tovább, amíg a részfeladat utasításai egyszerre jól átláthatóak, pl. elemi utasítások


Letölteni ppt "1 ifin811/ea1 C Programozás: Algoritmusok. 2 Vázlat Problémák megoldása Algoritmusok –Változók és értékeik –Programvezérlés."

Hasonló előadás


Google Hirdetések