1 / 53

ifin811/ea1 C Program ozás: Algoritmusok

ifin811/ea1 C Program ozás: Algoritmusok. Vázlat. Problémák megoldása Algorit musok Változók és értékeik Programvezérlés. Anal izálás. P ontos meghatározás. Tervezés. Algorit mus. Probléma. Implem entáció. Program. Fordítás. Futtatás -> megoldás. A probléma megoldásának folyamata.

anneke
Download Presentation

ifin811/ea1 C Program ozás: Algoritmusok

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ifin811/ea1C Programozás:Algoritmusok

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

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

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

  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önyvmanual • Fizika : egyenletek • Természeti törvények -> modellek

  6. Azalgoritmus ö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. 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 vanmértékegységük: • Recept: hozzávalók

  8. 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. Ananászos lepénykék Forrás:Stahl Judit: Gyorsan valami finomat, Park Kiadó, 2003

  9. Ananászos lepénykék Előmelegítem a sütőt230° 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. 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ó Forrás:Stahl Judit: Gyorsan valami finomat, Park Kiadó, 2003

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

  11. A változók korlátai • A változók csakbizonyos típusúértékeket tudnak tartalmazni

  12. Azalgoritmusok 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)

  13. Utasítások Utasítások, hogyműveletekethajtsunk végreértékekenésváltozókon. • Vedd leacipőd • Számolj 10-ig • Vágjuk fela hagymát • 1 sima, • 1 fordított • Húzuk megszorosan a csavart Az utasítások egyértelműek, egyszerűek és végrehajthatóak

  14. Utasításokalkalmazása • Legtöbb műveletet csak bizonyos típusú változókon és értékeken lehet elvégezni • Példa: Aprítsuk fel

  15. Azalgoritmusok 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)

  16. 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

  17. Azalgoritmusok 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)

  18. Szubrutin • Egyelnevezettré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ó

  19. Szubrutin: példa szubrutinVezess_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... 52. 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 }

  20. Szubrutinhívása szubrutinHé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... } szubrutin39_hét { Hétfő Kedd Szerda Csütörtök ...stb...stb...stb... }

  21. Szubrutin szubrutinHé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... } A “szubrutin” helyett használható: • Részfeladat • Modul • Procedure • Függvény

  22. Szubrutin szubrutinHé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... } Kapcsos zárójelekjelzik a szubrutin elejét és végét.

  23. Szubrutin hívása szubrutinHé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... } Speciális utasítás“szubrutin hívás”

  24. Szubrutin • A szubrutinnak lehetnekparamé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” );

  25. Azalgoritmusok 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)

  26. Elágazások • Olyan utasítás amelyikeldö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

  27. 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 }

  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 } igazvagyhamis állítás

  29. 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 } Végrehajtódik, ha a feltételigaz.

  30. 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 } Végrehajtódik, ha a feltételhamis.

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

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

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

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

  35. Algoritmus: beolvasSzám; if (Számnem egyenlő 0) then { kiír 1/Szám; } else { kiír „végtelen”; } Elágazások: reciprok Egy adott konkrétSzámesetén csak az egyik ág hajtódik végre

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

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

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

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

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

  41. Elágazások: legalább egyfeltétel • Több feltétel közül elég ha egy teljesül ha ( éhes vagyokvagyelmúlt 11:00 óravagya padszomszédom szemet vetett az uzsonnámra ) akkor { Most megeszem az uzsonnát }

  42. Azalgoritmusok 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)

  43. Ismétlések • Ismételj egy utasítást... • ...addig amíg egy feltétel fennáll • Más néveniterációvagyciklus • Példa: • Randira hívás

  44. Ismétlések szubrutinRandiraHí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ámanullától;amíg (a válasz "Nem" éskönyörgések_száma < 100){Mond(„Na,lécci!"); könyörgések_számanövelése 1-el; VálasztHallgat ( );} }

  45. Ismétlések szubrutinRandiraHí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ámanullától;amíg (a válasz "Nem" éskönyörgések_száma < 100){Mond(„Na,lécci!"); könyörgések_számanövelése 1-el; VálasztHallgat ( );} } A feltételt vizsgáljuk meg először

  46. Ismétlések szubrutinRandiraHí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ámanullától;amíg (a válasz "Nem" éskönyörgések_száma < 100){Mond(„Na,lécci!"); könyörgések_számanövelése 1-el; VálasztHallgat ( );} } Lehet, hogy nem is hajtódik végre

  47. Ismétlések A változók kezdteti értékét helyesen kell beállítani szubrutinRandiraHí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ámanullától;amíg (a válasz "Nem" éskönyörgések_száma < 100){Mond(„Na,lécci!"); könyörgések_számanövelése 1-el; VálasztHallgat ( );} }

  48. Ismétlések szubrutinRandiraHí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ámanullától;amíg (a válasz "Nem" éskönyörgések_száma < 100){Mond(„Na,lécci!"); könyörgések_számanövelése 1-el; VálasztHallgat ( );} } A feltételben használt változót frissíteni kell

  49. Ismétlések Mi történik, ha nem frissítjük az értéket? szubrutinRandiraHí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ámanullától;amíg (a válasz "Nem" éskönyörgések_száma < 100){Mond(„Na,lécci!"); VálasztHallgat ( );} } Végtelen ciklus

More Related