ifin811/ea1 C Programozás: Algoritmusok

Slides:



Advertisements
Hasonló előadás

Advertisements

Kamarai prezentáció sablon
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Készítette: Boros Erzsi
Programozási feladatok
Algoritmusok.
Erőállóképesség mérése Találjanak teszteket az irodalomban
MATEMATIKA Év eleji felmérés 3. évfolyam
Humánkineziológia szak
Mellár János 5. óra Március 12. v
6) 7) 8) 9) 10) Mennyi az x, y és z értéke? 11) 12) 13) 14) 15)
Műveletek logaritmussal
Elektromos mennyiségek mérése
Utófeszített vasbeton lemez statikai számítása Részletes számítás
Euklidészi gyűrűk Definíció.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
A tételek eljuttatása az iskolákba
Elektronikai Áramkörök Tervezése és Megvalósítása
Mérés és adatgyűjtés laboratóriumi gyakorlat Karakterisztikák mérése 1 Makan Gergely, Mingesz Róbert, Nagy Tamás V
Elektronikai Áramkörök Tervezése és Megvalósítása
Mérés és adatgyűjtés Kincses Zoltán, Mingesz Róbert, Vadai Gergely 10. Óra MA-DAQ – Műszer vezérlése November 12., 15. v
Mérés és adatgyűjtés Szenzorok II. Mingesz Róbert
Virtuális méréstechnika 12. Óra Karakterisztikák mérése November 21. Mingesz Róbert v
Mérés és adatgyűjtés laboratóriumi gyakorlat levelező 4. Óra Karakterisztikák mérése November 23. Kincses Zoltán, Mellár János v
VÁLOGATÁS ISKOLÁNK ÉLETÉBŐL KÉPEKBEN.
Műszaki ábrázolás alapjai
5.2. Próbavizsga Próbáld ki tudásod!
5.2. Próbavizsga Próbáld ki tudásod!
Védőgázas hegesztések
1. IS2PRI2 02/96 B.Könyv SIKER A KÖNYVELÉSHEZ. 2. IS2PRI2 02/96 Mi a B.Könyv KönyvelésMérlegEredményAdóAnalitikaForintDevizaKönyvelésMérlegEredményAdóAnalitikaForintDeviza.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Programozás I. Ciklusok
Szerkezeti elemek teherbírásvizsgálata összetett terhelés esetén:
Sárgarépa piaca hasonlóságelemzéssel Gazdaság- és Társadalomtudományi kar Gazdasági és vidékfejlesztési agrármérnök I. évfolyam Fekete AlexanderKozma Richárd.
NOVÁK TAMÁS Nemzetközi Gazdaságtan
DRAGON BALL GT dbzgtlink féle változat! Illesztett, ráégetett, sárga felirattal! Japan és Angol Navigáláshoz használd a bal oldali léptető elemeket ! Verzio.
A közép- és emelt szintű vizsga tanári értékelése
Lineáris egyenletrendszerek (Az evolúciótól a megoldáshalmaz szerkezetéig) dr. Szalkai István Pannon Egyetem, Veszprém /' /
szakmérnök hallgatók számára
2. A KVANTUMMECHANIKA AXIÓMÁI 1. Erwin Schrödinger: Quantisierung als Eigenwertproblem (1926) 2.
A évi demográfiai adatok értékelése
Logikai szita Izsó Tímea 9.B.
Az LPQI rész a Partner Az LPQI-VES társfinanszírozója: Dr. Dán András Az MTA doktora, BME VET Meddőenergia kompenzálás elmélete és alkalmazása.
ALGORITMUSOK.
2007. május 22. Debrecen Digitalizálás és elektronikus hozzáférés 1 DEA: a Debreceni Egyetem elektronikus Archívuma Karácsony Gyöngyi DE Egyetemi és Nemzeti.
Ciklusok (iterációk).
A pneumatika alapjai A pneumatikában alkalmazott építőelemek és működésük vezérlő elemek (szelepek)
Két kvantitatív változó kapcsolatának vizsgálata
Csurik Magda Országos Tisztifőorvosi Hivatal
A klinikai transzfúziós tevékenység Ápolás szakmai ellenőrzése
2006. Peer-to-Peer (P2P) hálózatok Távközlési és Médiainformatikai Tanszék.
MENETREND HASZNÁLATÁNAK GYAKORLÁSA Feladat: autóbusz, villamos, trolibusz, fogaskerekű, HÉV menetrend gyakorlása El szeretnénk jutni a Selyemrét megállóból.
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
Objektum orientált programozás
1. Melyik jármű haladhat tovább elsőként az ábrán látható forgalmi helyzetben? a) A "V" jelű villamos. b) Az "M" jelű munkagép. c) Az "R" jelű rendőrségi.
Mérés és adatgyűjtés laboratóriumi gyakorlat - levelező Sub-VI és grafikonok 1 Mingesz Róbert V
ProgramozásProgramozás célja hosszabb számítások elvégzése ill. kiíratása akkor érdemes programot írni, ha sok számolni való van illetve ha ugyanazt az.
1 TANULÁSI TÍPUS TESZT.
Új szigetre érkeztünk, itt normálisak is laknak. Ők hol igazat mondanak, hol hazudnak. 39. A, B és C közül egy lovag, egy lókötő, egy normális. A: Normális.
> aspnet_regiis -i 8 9 TIPP: Az „Alap” telepítés gyors, nem kérdez, de később korlátozhat.
Algoritmusok. Az algoritmus meghatározott sorrendben elvégzendő műveletek előírása, mint azonos típusú (matematikai, logikai) feladatok megoldására alkalmas.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
A KÖVETKEZŐKBEN SZÁMOZOTT KÉRDÉSEKET VAGY KÉPEKET LÁT SZÁMOZOTT KÉPLETEKKEL. ÍRJA A SZÁMOZOTT KÉRDÉSRE ADOTT VÁLASZT, VAGY A SZÁMOZOTT KÉPLET NEVÉT A VÁLASZÍV.
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
1 Az igazság ideát van? Montskó Éva, mtv. 2 Célcsoport Az alábbi célcsoportokra vonatkozóan mutatjuk be az adatokat: 4-12 évesek,1.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Programozás C# -ban Elágazások.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmus készítés.
Előadás másolata:

ifin811/ea1 C Programozás: Algoritmusok

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

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

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

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

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ó

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

Ananászos lepénykék 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. 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

Ananászos lepénykék 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. 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

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

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

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)

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.

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

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)

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

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)

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ó

Szubrutin: példa { 1. a kulcsot keresd meg 2. központi zárat nyisd ki 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... 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 }

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

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

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 } Kapcsos zárójelek jelzik a szubrutin elejét és végét.

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 } Speciális utasítás “szubrutin hívás”

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” );

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)

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

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

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 igaz vagy hamis állítás

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étel igaz.

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étel hamis.

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” Feladat. Adjuk meg egy szám reciprokát.

Elágazások: reciprok Feladat. Adjuk meg egy szám reciprokát. 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.

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”; A Szám egy változó amely értéke attól függ, hogy mit adnak be a program futásakor.

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

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”; Egy adott konkrét Szám esetén csak az egyik ág hajtódik végre

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”; Végrehajtódik, ha Szám nem egyenlő 0-val

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

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

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

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

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 }

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)

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

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 ( ); } }

Ismétlések A feltételt vizsgáljuk meg először 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 feltételt vizsgáljuk meg először

Ismétlések Lehet, hogy nem is hajtódik végre 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 ( ); } } Lehet, hogy nem is hajtódik végre

Ismétlések A változók kezdteti értékét helyesen kell beállítani 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é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 ( ); } } A feltételben használt változót frissíteni kell

Ismétlések Végtelen ciklus Mi történik, ha nem frissítjük az értéket? 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 ( ); } } Végtelen ciklus

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)

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

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