Algoritmusok és a programozás alapjai
|
|
- Nikolett Soós
- 6 évvel ezelőtt
- Látták:
Átírás
1 Algoritmusok és a programozás alapjai Dr. Varga Imre Debreceni Egyetem, Informatikai Kar Lektorálta: Dr. Biró Piroska, Dr. Kósa Márk, Dr. Pánovics János EFOP
2 Témák Hogyan írjunk le és oldjunk meg problémákat? Mi is az az algoritmus? Milyen tulajdonságai vannak? Hogyan írhatunk le algoritmusokat? Mit jelent a programírás? Példák, példák, példák És még sok minden más 2
3 Számítógépes problémamegoldás Szorosan kapcsolódva a szoftver életciklusához
4 Számítógépes problémamegoldás A probléma definíciója Megoldási vázlat Részletes megoldási terv Tesztelési stratégia fejlesztése Program kódolása és tesztelése Dokumentáció befejezése A program karbantartása 4
5 1: A probléma definíciója Mi az ismeretlen (az elvárt eredmény)? Mi az összefüggés a rendelkezésre álló információk és az ismeretlen között? A megadott információk elegendőek egyáltalán a probléma megoldásához? A probléma leírásnak precíznek, pontosnak kell lennie. A felhasználónak és a programozónak együtt kell működnie. A probléma teljes specifikációjára szükség van, az inputot és a kívánt outputot is beleértve. 5
6 2: Megoldási vázlat A probléma körvonalának definiálása. Az eredeti probléma több részproblémára osztása. A részproblémák legyenek kisebbek és könnyebben megoldhatóak. Ezek megoldásai a végső megoldás komponensei lesznek. Oszd meg és uralkodj! 6
7 3: Részletes megoldási terv Az előző lépésben nincs megmondva, hogyan kell a részfeladatokat végrehajtani. Finomítás szükséges a részletek megadásával. Kerülni kell a félreérthetőséget. A pontos módszer tartalmazza a jól meghatározott lépések sorozatát, amit algoritmusnak hívunk. Különböző formalizmusokkal írható le. 7
8 4: Tesztelési stratégia fejlesztése Ki kell próbálni az algoritmust több különböző inputkombinációval, hogy biztosak legyünk, hogy jó eredményt ad minden esetben. A bemeneti adatok különböző kombinációit teszteseteknek nevezzük. Ez nemcsak normál adatokat foglal magába, hanem extrém bemeneteket is, hogy teszteljük a határokat. Komplett tesztesetekkel ellenőrizhetjük magát az algoritmust. 8
9 5: Program kódolása és tesztelése Az előző szinteken leírt algoritmus nem hajtható végre közvetlenül a számítógép által. Át kell alakítani egy konkrét programnyelvre. A kódolás közben/után tesztelni kell a programot a kidolgozott tesztelési stratégia szerint. Ha hibára derül fény, akkor megfelelő átdolgozásra és újratesztelésre van szükség, amíg a program minden körülmények között jó eredményt nem ad. A kódolás és tesztelés folyamatát implementációnak hívjuk. 9
10 6: Dokumentáció befejezése A dokumentáció már az első lépésnél elkezdődik és a program egész élettartamán át tart. Tartalmazza: az összes lépés magyarázatát, a meghozott strukturális döntéseket, a felmerült problémákat, az alkalmazott algoritmusok leírását, a program szövegét és annak magyarázatát, felhasználói kézikönyvet, stb. 10
11 7: A program karbantartása A program nem megy tönkre. Néha viszont hibázhat, összeomolhat, elbukhat. A programhibák oka, hogy sosem volt tesztelve az adott körülmények között. Az újonnan felfedezett hibákat ki kell küszöbölni (átadás után is). Néha a felhasználóknak új igényei, elvárásai vannak a programmal szemben. Ennek megfelelően átalakítás, bővítés lehet szükséges. Ezek után frissíteni kell a dokumentációt is. 11
12 Részletes megoldási terv Az algoritmus
13 Algoritmus Terv jól ismert tevékenységek véges sorozatának végrehajtására, amivel elérhetjük a kívánt célt. Precíz definíciója tevékenységeknek, amelyeknek a végrehajtása megadja a megoldási vázlat minden egyes részfeladatának a megoldását. Néhány tulajdonsága: pontos, félreérthetetlen, minden eshetőségre felkészített, a tevékenységek sorozata véges, elérhető vele a cél, megadja a megoldást, hatékony, elegáns, egyszerű, 13
14 Algoritmusok leírása Természetes (beszélt) emberi nyelv Mondatszerű leírás Folyamatábra Pszeudokód Struktogram Grafikus Algebraszerű Adat-folyam diagram Hierarchikus Táblázatos Programnyelv 14
15 Példa y = sign(x) függvény Mi az? Mit jelent? Mi az eredmény? Hogyan működik? Hogyan tudjuk meghatározni az értékét? Ha x egyenlő -4, mi az y értéke? 15
16 y = sign(x) Mondatszerű reprezentáció: 1. Ha x egyenlő 0, y értéke legyen 0! 2. Különben ha x nagyobb, mint 0, y értéke legyen +1! 3. Egyébként ha x kisebb, mint 0, akkor a függvény adjon -1 értéket! 16
17 y = sign(x) Grafikus reprezentáció: y +1 0 x -1 17
18 y = sign(x) Algebraszerű reprezentáció: x y {-1, 0, +1} x, x>0 y=+1 x, x<0 y=-1 x=0 y=0 18
19 y = sign(x) Struktogramos reprezentáció: igen y=0 x=0 nem x>0 igen nem y=+1 y=-1 19
20 y = sign(x) Folyamatábrás reprezentáció: Start igaz x=0 hamis y=0 igaz x>0 hamis y=+1 y=-1 Vége 20
21 y = sign(x) Pszeudokódos reprezentáció: if x=0 then y=0 else if x>0 then y=+1 else y=-1 endif endif 21
22 y = sign(x) Programozási nyelven történő reprezentáció: if x == 0: y = 0 else: if x>0: y = +1 else: y = -1 22
23 A folyamatábra elemei Kiinduló- és végállapot Start Vége Elemi utasítás X=1 Input/output Be: y Feltétel igen x<y nem Beágyazás f(x) = x N Csak a nyilak mentén haladhatunk. 23
24 Az algoritmus alap struktúrái folyamatábrával Szekvencia Elágazás Ismétlés Start Start Start Tevékenység 1 igaz feltétel hamis feltétel hamis Tevékenység 2 Tevékenység A Tevékenység B igaz Tevékenység 3 Vége Vége Tevékenység Vége 24
25 Algoritmusok módosítása Az algoritmusokat gyakran módosítani kell, hogy jobbak legyenek. Általánosítás: több esetre is alkalmazható legyen Kiterjesztés: esetek újfajta körére is alkalmazható legyen Beágyazás: egy algoritmus újrahasznosítása egy másikon belül Bolondbiztossá tétel: megbízhatóvá, robosztussá, hibaelkerülővé tétel 25
26 Algoritmus általánosítása Eredeti: Start Általánosított: Start Be: nettó Be: nettó, ÁFA bruttó=nettó*(100%+25%) bruttó=nettó*(100%+áfa) Ki: bruttó Ki: bruttó Vége Vége 26
27 Algoritmus kiterjesztése Eredeti: Start Kiterjesztett: Start Be: óraszám, óradíj igen Főnök? nem fizetés=óraszám*óradíj Be: profit Be: óraszám, óradíj Ki: fizetés fizetés=profit/2 fizetés=óraszám*óradíj Vége Ki: fizetés Vége 27
28 Algoritmus beágyazása Eredeti: y=abs(x) Start Beágyazott: y=sign(x) Start x=0 hiba! igaz y=-x x<0 hamis y=+x y=abs(x) igaz Be: x x<0 hamis Vége y=-x y=+x Ki: x/y Vége 28
29 Algoritmus bolondbiztossá tétele Eredeti: Start Be: kor Bolondbiztos: Start Be: kor igen kor<18 nem igen kor<0 nem Ki: gyerek Ki: felnőtt Ki: hiba igen kor<18 nem Vége Ki: gyerek Ki: felnőtt Vége 29
30 Alternatív algoritmus Gyakran többféleképpen is elérhetjük ugyanazt a célt. Az algoritmusoknak különböző lehet a szerkezete, de azonos lehet a viselkedése. Ez azt jelenti, hogy azonos bemeneti adatokra azonos eredményeket adnak, de ezt máshogy érik el. Néha hasznos az egyik algoritmust előnyben részesíteni, néha viszont mindegy, melyiket használjuk. Olykor az egyik algoritmus határozottan egyszerűbb, kisebb, gyorsabb, megbízhatóbb lehet, mint a többi. 30
31 Alternatív algoritmus Start y = sign(x) Start igaz y=0 Be: x x=0 igaz y=+1 hamis x>0 hamis y=-1 hamis Be: x y=x x 0 igaz y=-x igaz x<0 hamis Ki: y Ki: x Ki: x/y Vége Vége 31
32 Az algoritmusok tulajdonságai Teljes: Minden lehetséges esetre/részletre tekintettel pontosan megadott Félreérthetetlen: csak egyféleképpen értelmezhető tevékenységek Determinisztikus: az utasításokat követve mindig biztosan elérhető a cél, a megoldás Véges: korlátozott számú lépés után véget ér az utasítássorozat 32
33 Rossz algoritmus Hogyan jussunk el a 2.-ról az 5. emeletre lifttel? 1. Nyomd meg a lift hívógombját! 2. Szállj be! 3. Nyomd meg az 5 gombot! 4. Várj! 5. Ha az ajtó kinyílik, szállj ki! Probléma (nem teljes): Mi van, ha az érkező lift lefelé megy? Mi van, ha valaki miatt megáll a lift a 3. emeleten is? 33
34 Rossz algoritmus Hogyan készítsünk sült csirkét? 1. Tedd be a csirkét a sütőbe! 2. Állítsd be a hőmérsékletet! 3. Várj, amíg kész lesz! 4. Szolgáld fel! Problémák (félreérthetőség): Mi a megfelelő hőmérséklet (50 C vagy 200 C)? Fagyasztott vagy élő csirke? Honnan tudjuk, hogy kész van? 34
35 Rossz algoritmus Hogyan legyünk milliomosok? 1. Vegyél egy lottót! 2. Húzd le a kívánt számokat! 3. Várj a nyereményre (vagy szomorkodj)! Problémák (véletlenszerű, nem determinisztikus): Az esetek többségében nem leszünk milliomosok. Csak néha működik, pedig mindig ugyanazt csináljuk. 35
36 Rossz algoritmus Hogyan buszozzunk? 1. Várj a buszra! 2. Szállj fel! 3. Vegyél jegyet! 4. Ülj le! 5. Ha megérkeztél, szállj le! Problémák (végtelen): Ha nem megállóban vársz, a busz sosem áll meg. Ha rossz buszra szálltunk, sosem szállhatunk le róla. 36
37 Nyilvános érmés telefon használata Start Kagyló fel Érme bedob Tárcsáz Beszél Kagyló le Vége Problémák: nem teljes félreérthető Módosítás: általánosítás kiterjesztés bolondbiztosá tétel teljessé tétel félreértések elkerülése 37
38 Nyilvános érmés telefon használata Várj Start Kagyló fel Előfeltétel: a fülkében vagyunk, van érménk, ismerjük a telefonszámot, Érme bedob igen Vonal van? nem igen Helyi hívás? nem körzetszám nem Beszélj Folytatod? igaz Lokális szám nem A pénz elég? igen igen Foglalt? nem Várj nem Van még pénz? igen nem Kagyló le Érme vissza Van válasz? igen Kagyló le Pénz bedob igen Újra? nem Vége 38
39 Logikai műveletek és kifejezések Logikai műveletek ÉS Hamis Igaz Hamis Hamis Hamis Igaz Hamis Igaz VAGY Hamis Igaz Hamis Hamis Igaz Igaz Igaz Igaz XOR Hamis Igaz Hamis Hamis Igaz Igaz Igaz Hamis Logikai ellentétek Ha ez Igaz, akkor ez Hamis = < > = > < Igaz = NEM Hamis Hamis = NEM Igaz X = NEM NEM X 39
40 Link a megoldásra Feladat: folyamatábra Hogyan változik az x, y és s értéke a folyamat során, ha kezdetben x=5 és y=4? Mi a kimenet ebben az esetben? Hányszor lett kiértékelve a feltétel? Mit csinál az algoritmus? Hogyan változtatnád meg az algoritmust, hogy x és y szorzatát határozza meg? hamis ki: s Vége Start be: x, y s=x y>0 igaz s=s+1 y=y-1 40
41 Feladat: folyamatábra Hogyan változik az x és y értéke a folyamat során, ha a bemenet 10? Mi a kimenet, ha a bemenet 60? Mit ír le az algoritmus? Működik, ha x=1? Ha az input 24, hányszor ismétlődik a ciklus? igaz ki: y x%y=0 igaz Start be: x y=2 y<=x hamis y=y+1 hamis Vége x=x/y 41
42 Feladat: folyamatábra Mi a kimenet, ha a bemenet: a=3, b=9, c=5? Mi a kimenet, ha a bemenet: a=5, b=2, c=7? igaz Start be: a, b, c a>c hamis igaz a>b hamis igaz b>c hamis R=a R=b R=c Mit csinál az algoritmus? ki: R Vége 42
43 Feladat: folyamatábra Ez a folyamatábra a maradékos osztás műveletét írja le. Helyettesítsd be a kifejezéseket! Start a<b a<0 b<=0 a=a-b hamis be: a, b ki: hiba ki: a Vége hamis hamis igaz igaz igaz 43
44 Feladat: folyamatábra Szökőév meghatározása Hatványozás Faktoriális kiszámítása Elsőfokú egyenlet megoldása Az év napjának meghatározása Decimális szám konvertálása binárissá Bináris számok inkrementálása Bináris számok összeadása Fibonacci-sorozat Collatz-sejtés 44
45 Pszeudokód Szekvencia: Elágazás: Ismétlés: utasítás1 utasítás2 utasítás3 if feltétel then utasítás (igaz) else utasítás (hamis) endif while feltétel do utasítás (igaz) enddo utasítás (hamis) 45
46 Konverzió Folyamatábra pszeudokód Egy feltétel tartozhat elágazáshoz és ismétléshez is Ismétlés: ha van vissza nyíl (enddo) a feltétel elé Elágazás: ha nincs vissza út a feltétel elé a két ág összekapcsolódik (endif) Az elágazás hamis (else) ága kihagyható Az ismétlés mindig csak igaz feltétel esetén történik Egy feltétel két ága felcserélhető a feltétel tagadásával Egyes ismétlések és elágazások megadásához szükséges lehet 46
47 Konverzió Start input T while T<>20 do be: T if T>20 then hamis T<>20 igaz T=T-1 else ki: Kész igaz T>20 hamis T=T+1 Vége T=T-1 T=T+1 endif enddo output Kész 47
48 Pszeudokód példa input R i=0 x=0 while x<=r do y=0 while y<=r do if x*x+y*y<=r*r then i=i+1 endif y=y+1 enddo x=x+1 enddo output 4*i/(R*R) A értékének közelítése y Nagyobb R érték pontosabb közelítést eredményez. R x (x, y) 48
49 Feladat: pszeudokód input a if a<0 then b=-1*a else b=a endif output b Mi a kimenet, ha a=10? Mi a kimenet, ha a=-4? Mit csinál az algoritmus? Mit csinál ez az algoritmus? input a if a<0 then a=-1*a endif output a 49
50 Feladat: pszeudokód input a A folyamatábra és a pszeudokód input b ugyanazt az algoritmust írják le? c=a if b>0 then Start b=b-1 c=c-1 be: a, b else c=a output c endif hamis b>0 igaz ki: c b=b-1 Vége c=c-1 50
51 Feladat: pszeudokód input a input b c=a while b>0 do b=b-1 c=c-1 enddo output c Hogyan változik a, b és c értéke a folyamat során, ha a=7 és b=3? Mi a kimenet ebben az esetben? Hányszor ismétlődik a ciklus? Hányszor kell kiértékelni a feltételt? Mit csinál az algoritmus? 51
52 Feladat: pszeudokód Írd le a folyamatábrát pszeudokóddal! Start be: x igaz x=0 hamis y=0 igaz y=+1 x>0 hamis y=-1 ki: y Vége 52
53 Feladat: pszeudokód Írd le a folyamatábrát pszeudokóddal! Start be: x s=0 hamis ki: s Vége x>0 igaz s=s+x x=x-1 53
54 Feladat: pszeudokód Írd le a folyamatábrát pszeudokóddal! Start be: x igaz x=0 hamis ki: x igaz x>0 hamis Vége x=x-1 x=x+1 54
55 Feladat: pszeudokód input N R=0 while N>0 do R=R*10+N%10 N=[N/10] enddo output R Hogyan változik N és R értéke a folyamat során, ha kezdetben N=73251? Mi a kimenet ebben az esetben? Mit csinál az algoritmus? Jelmagyarázat: %: maradékos osztás (modulo) [ ]: egészrész képzés (a törtrész elhagyása) 55
56 Feladat: pszeudokód input N input B R=0 P=1 while N<>0 do R=R+(N%B)*P P=P*10 N=[N/B] enddo output R Mi a kimenet, ha N=15, B=2? Mi a kimenet, ha N=16, B=2? Mi a kimenet, ha N=10, B=2? Mi a kimenet, ha N=5, B=2? Mi a kimenet, ha N=30, B=3? Mi a kimenet, ha N=20, B=3? Mi a kimenet, ha N=64, B=8? Mit csinál az algoritmus? 56
57 Feladat: pszeudokód input A input B while B>0 do C=B B=A%B A=C enddo output A Hogyan változik A, B és C értéke a folyamat során, ha kezdetben A=24 és B=18? Mi a kimenet ebben az esetben? Próbáld ki: A=30 és B=105! Próbáld ki: A=165 és B=48! Mit csinál az algoritmus? (Euklideszi algoritmus) 57
58 Feladat: pszeudokód input A input B while A<>B do if A>B then A=A-B else B=B-A endif enddo output B Hogyan változik A, B és C értéke a folyamat során, ha kezdetben A=24 és B=18? Mi a kimenet ebben az esetben? Próbáld ki: A=30 és B=105! Próbáld ki: A=165 és B=48! Mit csinál az algoritmus? Készíts folyamatábrát ehhez az algoritmushoz! 58
59 Feladat: pszeudokód Algoritmus mondatszerű leírása: 1. Mondj egy nemnegatív egész számot! 2. Ellenőrizd, hogy nagyobb, mint 1, vagy nem! 3. Ha nagyobb, vonj ki belőle kettőt, és menj a 2. lépéshez! 4. Különben ellenőrizd, hogy 0-e az érték! 5. Ha 0, akkor írd ki, hogy páros! 6. Különben írd ki, hogy páratlan! Írd le az algoritmust pszeudokóddal (és folyamatábrával)! 59
60 Feladat: pszeudokód Írd le az alábbi algoritmusokat pszeudokóddal! Az abszolút érték meghatározása Számok összege 10-től 20-ig Hatványozás Háromszög-egyenlőtlenség Derékszögű háromszög Faktoriális kiszámítása Eldönteni egy számról, hogy prím-e Prímtényezőkre bontás Fibonacci-sorozat 60
61 Tömbök Elemek sorozata, ahol minden elem egy (sorszám jellegű) index segítségével elérhető Egy N elemű tömb: A[0]=8, A[1]=-2,, A[N-1]=98 Példa: tömb elemeinek összege sum=0 i=0 while i<n do sum=sum+a[i] i=i+1 enddo output sum 61
62 Tömb példa N db értékek beolvasása, tárolás és kiírása fordított sorrendben i=0 N=5 while i<n do input A[i] i=i+1 enddo i while i>0 do i=i-1 input A[i] enddo A[0] A[1] A[2] A[3] A[4] 62
63 Keresés és rendezés Keresés Az adott elem benne van-e a tömbben (és ha igen hol)? Teljes keresés, lineáris keresés (őrszemmel), bináris keresés, stb. Rendezés Elemek érték szerint növekvő/csökkenő rendjének kialakítása (az értékek eredeti helyén). Kiválasztásos rendezés, beszúrásos rendezés, buborékrendezés, gyors rendezés, kupacrendezés stb. 63
64 Rendezés példa Beszúrásos rendezés 72, 63, 34, 54, 91, 38, 53 63, 72, 34, 54, 91, 38, 53 34, 63, 72, 54, 91, 38, 53 34, 54, 63, 72, 91, 38, 53 34, 54, 63, 72, 91, 38, 53 34, 38, 54, 63, 72, 91, 53 34, 38, 53, 54, 63, 72, 91 64
65 Rendezés példa Minimum kiválasztásos rendezés 72, 63, 34, 54, 91, 38, 53 34, 63, 72, 54, 91, 38, 53 34, 38, 72, 54, 91, 63, 53 34, 38, 53, 54, 91, 63, 72 34, 38, 53, 54, 91, 63, 72 34, 38, 53, 54, 63, 91, 72 34, 38, 53, 54, 63, 72, 91 65
66 Rendezés példa Buborékrendezés 72, 63, 34, 54, 91, 38, 53 63, 34, 54, 72, 38, 53, 91 34, 54, 63, 38, 53, 72, 91 34, 54, 38, 53, 63, 72, 91 34, 38, 53, 54, 63, 72, 91 34, 38, 53, 54, 63, 72, 91 34, 38, 53, 54, 63, 72, 91 66
67 Feladat: pszeudokód Tömb elemeinek átlaga Megkeresni egy elemet egy (rendezett) tömbben Minimum/maximum keresése Szélsőérték helyének megkeresése Két változó értékének felcserélése Szélsőérték-kiválasztásos rendezés Közvetlen beszúrásos rendezés Buborékrendezés Keresés rendezett bináris fában (azaz keresőfában) 67
68 Alprogram Az algoritmus elkülönített egysége Az újrafelhasználás és az absztrakció eszköze Újrafelhasználás: Nem szükséges ugyanazt az utasítássorozatot a kód több helyén is megírni. Be tudjuk tanítani a tevékenységet, hogy egyszerű utasításként működjön. Egy példa a beágyazás. Absztrakció: Nemcsak egy tevékenység, de hasonló tevékenységek halmazára is használható, paraméterekkel megadva a finomságokat. Az általánosítás megjelenési formája. 68
69 Alprogram Az alprogramok két fajtája: Függvény: utasításhalmaz egy érték (a visszatérési érték) előállítására valahol a kódban. Pl. Mi a koszinusza a 45 -nak? x=cos(45) Eljárás: tevékenységhalmaz valami megtételéhez a kód egy adott pontján (nincs visszatérési érték) Pl. Írd ki a neved! ird( Imre ) 69
70 Eljárás példa Eljárás definíció N db * karakter kiírásához eljárásnév (formális) paraméter procedure STARS ( N ) while N>0 do output * N=N-1 enddo end procedure Utasítások az elvégzendő tevékenységhez 70
71 Eljárás példa Az előző eljárás meghívása egy kódban output Hány csillag kell? input S call STARS (S) (aktuális) paraméter output Remélem tetszik! eljáráshívás (az utasításainak végrehajtása) 71
72 Eljárás példa Egy eljárás, amely megmondja egy számról pozitív-e procedure SIGN (x) if x>0 then output Pozitív else output Nem pozitív endif end procedure a végrehajtás itt kezdődik output Adj egy számot! input N call SIGN (N) 72eljárásdefiníciófőprogram
73 Függvény példa Függvénydefiníció két érték maximumának meghatározásához függvénynév function MAX( A, B ) if A>B then R=A else R=B endif return R end function (formális) paraméterek utasítások a kívánt érték meghatározásához utasítás az eredmény visszaadásához 73
74 Függvény példa Az előző függvény meghívása egy kódban output Adj meg két számot! input a, b c = MAX (a,b) (aktuális) paraméterek output A nagyobb:, c függvényhívás (az érték meghatározása) a visszaadott érték a c változóban tárolódik el 74
75 Függvény példa Egy másik függvény az abszolút érték kiszámításához function ABS (x) if x<0 then x=-1*x endif return x end function a végrehajtás itt kezdődik output Adj meg egy számot! input N A = abs (N) output Az abszolút értéke:, A függvénydefiníció főprogram 75
76 Hatáskör A különböző programegységek (függvények, eljárások, főprogram) saját változókkal rendelkeznek Egy változónév más és más változóra hivatkozik két eltérő programegységben Még akkor is, ha esetleg azonos a név alakja. function F( ABC ) ABC = ABC+1 end function ABC = 3 ABC = F(7) ABC = F(ABC)*2 Két külön változó 76
77 Feladat: alprogram function PP( a ) b=0 while b<a do a = a-1 b = b+1 enddo if a=b then return 1 else return 0 endif end function input a, b a = a*2 b = PP(a+b)+1 output b Hogyan változtak a változók értékei a végrehajtás során, ha a felhasználó az 1 és 4 értékeket adja meg bemenetként? Mi a kimenet ekkor? Mit csinál a függvény pozitív egész paraméter esetén? 77
78 Feladat: alprogram function VALTOZTAT( a ) return 1-a end function Mi a kimenet, ha a bemenet: 5? Mit csinál a program? input Max Mi a függvény szerepe? i=0 j=0 while j<=max do i = VALTOZTAT(i) j=j+i output j enddo 78
79 Feladat: alprogram Írj egy algoritmust pszeudokóddal, amely tartalmaz egy függvényt két (paraméterként megadott) szám átlagának meghatározásához! Írj egy pszeudokódot, amely tartalmaz egy eljárást az NxN-es szorzótábla kiírásához! Például, ha N=4:
80 Feladat: alprogram Írj egy pszeudokódot, amely tartalmaz egy eljárást egy 0 és 1 karakterekből álló NxN-es pepita minta megalkotásához! Például N=3 esetén: N=4 esetén: 80
81 Feladat: alprogram Írj egy algoritmust pszeudokóddal az alábbiak szerint: A kód tartalmazzon egy függvényt, amely három paraméterrel rendelkezik (óra, perc, másodperc) és ez alapján megadja, hogy az adott időpont a nap hányadik másodperce! A kód tartalmazzon egy eljárást, amely egy egész számot kap paraméterként és ezt az adott napon eltelt másodpercek számaként értelmezve kiírja az időpontot óra perc másodperc formátumban! 81
82 Rekurzió Amikor egy alprogram saját magát hívja meg főprogram call proc az eljárás egy másolat call proc a végrehajtás időrendje az eljárás egy másolat call proc az eljárás egy másolat 82
83 Rekurzió példa Faktoriális: Ha a szám (N) az 1, akkor a faktoriálisa is 1. Különben N! = N * (N-1)! function fakt(n) if N=1 then return 1 else return N*fakt(N-1) endif end function output fakt(5) 5! 5*4! 5*4*3! 5*4*3*2! 5*4*3*2*1! 5*4*3*2*1 5*4*3*2 5*4*6 5*
84 Feladat: rekurzió procedure KONVERTAL ( N, B ) if N<>0 then call KONVERTAL ( [N/B], B) output a%b endif output NEWLINE end procedure a hányados egészrésze Próbáld meg fejben futtatni! Mi a kimenet? Milyen hosszú a hívási lánc? Hol van a számjegyek fordított sorrendje lekódolva? call KONVERTAL ( 16, 8) call KONVERTAL ( 19, 2) 84
85 A tesztelési stratégia fejlesztése
86 Tesztelési stratégia példa Másodfokú egyenlet megoldása Általános alak: ax 2 + bx + c = 0 Bemeneti paraméterek: a, b, c Megoldás: Start be: a, b, c d = b 2-4ac x 1 = (-b+d 1/2 )/2a Minden esetre működik? x 2 = (-b-d 1/2 )/2a Mi a kimenet, ha a=1, b=2 és c=1? ki: x 1, x 2 Mi a kimenet, ha a=1, b=2 és c=2? Vége 86
87 Tesztelési stratégia példa Start be: a, b, c d = b 2-4ac Minden esetre működik? Mi a kimenet, ha a=0, b=2 és c=6? igaz x 1 = (-b-d 1/2 )/2a d>0 hamis igaz d=0 hamis x 1 = (-b+d 1/2 )/2a x = -b/2a ki: x 1, x 2 ki: x ki: nincs megoldás Vége 87
88 Tesztelési stratégia példa d = b 2-4ac Start be: a, b, c hamis a=0 igaz Minden esetre működik? Mi a kimenet, ha a=0, b=0 és c=1? igaz x 1 = (-b-d 1/2 )/2a d>0 hamis igaz d=0 hamis x 1 = (-b+d 1/2 )/2a x = -b/2a x = -c/b ki: x 1, x 2 ki: x ki: nincs megoldás ki: x Vége 88
89 Tesztelési stratégia példa Start be: a, b, c Minden esetre működik. x 1 = (-b-d 1/2 )/2a d = b 2-4ac hamis a=0 igaz d>0 hamis igaz igaz d=0 hamis igaz b=0 hamis x 1 = (-b+d 1/2 )/2a x = -b/2a x = -c/b ki: x 1, x 2 ki: x ki: nincs megoldás ki: x Vége 89
90 Tesztelési stratégia példa A jó megoldás pszeudokóddal: Minden esetre működik. Hogy elérjük ezt az állapotot, tesztelnünk kellett az algoritmust különböző input kombinációkra, és folyamatosan módosítanunk kellett azt. Tesztelési stratégiát alakítottunk ki. input a, b, c if a=0 then if b=0 then output error else x=-c/b output x endif else d=b*b-4*a*c if d>0 then x1=(-b+sqrt(d))/(2*a) x2=(-b-sqrt(d))/(2*a) output x1, x2 else if d=0 then x=-b/(2*a) output x else output error endif endif endif 90
91 A használt tesztelési stratégia a b c Magyarázat OK általános eset (nem 0, d>0) a nulla (elsőfokú) b nulla ( x 2 =-c/a ) c nulla ( x[ax+b]=0 ) több nulla (nem egyenlet) d<0 (nincs megoldás) d=0 (csak egy megoldás) negatív bemenetek 2,3 4,2 0,83 nem egész bemenetek 0, extrém kicsi/nagy értékek 91
92 Y=3 Feladat: tesztelési stratégia Ültetési rend: Egy téglalap alakú terület rácspontjain székeket helyezünk el. Minden sor X széket tartalmaz. Hány sor szükséges E ember számára? E=10 X=4 input E input X Y = E/X output Y Hozz létre tesztelési stratégiát a fenti algoritmushoz! Az E és X mely értékei elfogadhatóak? (Mikor szolgáltatja az algoritmus az elvárt eredményt?) 92
93 Feladat: tesztelési stratégia Számrendszerátváltás Hozz létre tesztelési stratégiát az algoritmushoz! Az N és B mely értékei elfogadhatóak? (Mikor szolgáltatja az algoritmus az elvárt eredményt?) input N input B R=0 P=1 while N<>0 do R=R+(N%B)*P P=P*10 N=[N/B] enddo output R 93
94 A program kódolása és tesztelése Forráskód létrehozása egy valós programnyelven
95 Alacsony szintű programnyelvek Magas szintű programnyelvek A programozás szintjei 4GL SELECT name FROM people WHERE age=20 3GL if (x==0) printf( zero ); idő 2GL SAVE: STA [$410A, X] assembly 1GL gépi kód 95
96 Programozási paradigmák Programozás Imperatív Deklaratív Egyéb Funkcionális Logikai Eljárásorientált Objektumorientált Adatfolyamvezérelt C Pascal Fortran Java C++ C# R LISP Haskell Prolog Labview Verilog 96
97 Fordító és interpreter A processzorok csak a gépi kódot értik meg A magas szintű kódokat át kell alakítani A nyelvek különböző technikákat használnak Fordítóprogram Pl.: Pascal, C, C++, Labview Interpreter Pl.: PHP, JavaScript, Python Kombinált (virtuális gép bájtkód) Pl.: Java, C# 97
98 Fordítóprogram Egy szoftver, amely a forráskódból egy tárgykódot generál A fordítóprogram lexikai, szintaktikai, szemantikai ellenőrzést, valamint kódgenerálást végez A forráskódnak hibátlannak kell lennie Egy kapcsolatszerkesztő program készít futtatható állományt a tárgykódból, majd a betöltő tölti be a RAM-ba futtatáshoz Fordítsd egyszer, futtasd később többször! A fordítás és a futtatás külön történik A futtatás gyors 98
99 Interpreter Közvetlen végrehajtás Analízis és kódgenerálás futási időben Nincs tárgykód Utasítások értelmezése egyesével Egyedüli utasítások sorozata a bemenet Szintaktikailag helytelen kód is futtatható lehet Hibák rejtve maradnak Minden futtatáshoz kell az interpreter Az értelmezés és futtatás összetartozik A végrehajtás gyakran lassú 99
100 Integrált fejlesztői környezet Egy (grafikus) program, ami egyszerűvé és gyorssá teszi a szoftverfejlesztést, eszközöket és segítséget nyújt a programozónak Az IDE (Integrated Development Environment) tartalmaz: nyelvérzékeny szövegszerkesztőt fordítót/interpretert nyomkövető rendszert verziókezelő eszközöket projektkezelési lehetőséget szimulátort 100
101 Integrált fejlesztői környezet Gyakran használt IDE-k: Code::Blocks Dev-C++ NetBeans Eclipse PyCharm MS Visual Studio Jbuilder MPLAB 101
102 Szintaxis és szemantika Szintaxis: A program szövegének formai szabályai. Szemantika: A nyelvi elemek és az algoritmus értelmezése, jelentése. Példa (előjel függvény): function sign (a) b=a if a>0 then b=-1*a enidf return a/b end function Szemantikai hiba (a<0) Szintaktikai hiba (endif) Futásidejű hiba (ha /0 ) 102
103 Fortran: Programozási nyelvek szintaxisa REAL FUNCTION FACT(N) FACT=1 IF (N.EQ. 0.OR. N.EQ. 1) RETURN DO 20 K=2,N 20 FACT=FACT*N RETURN END Python: def Fact(N): f=1 for i in range(1,n+1): f*=i return f APL: LabView: Pascal: FUNCTION FACT(N:INTEGER):REAL; BEGIN IF N=0 THEN FACT:=1 ELSE FACT:=FACT(N-1)*N; END; C: int Fact(unsigned N){ return N<=1?1:N*Fact(N-1); } 103
104 Feladat: szintaxis és szemantika Találj szintaktikai és szemantikai hibákat a következő pszeudokódban, amely az E nem negatív kitevőre emeli a B számot! input B R=0 wihle E<=0 R=R*B E-1=E endo output R 104
105 Adatreprezentáció, adattípusok A memóriában minden adat binárisan van tárolva. Különböző adattípusokat használunk eltérő tárolási mód eltérő adattartomány eltérő műveletek A leggyakrabban alkalmazott típusok: egész (5) valós (5.0) sztring ( 5 )
106 Fixpontos reprezentáció Hogyan tárolja a számítógép az (előjeles) egészeket? Lépések (az algoritmus): Jegyezd meg a szám előjelét, és az abszolút értékét váltsd át kettes számrendszerbe! Írj elé vezető nullákat (ha szükséges), hogy elérd a kívánt helyiértéket (bitet)! Ha az előjel negatív (a sign függvény -1 értéket ad), akkor minden bitet állíts át az ellentétére, adj hozzá az eredményhez 1-et (binárisan)! Ez a szám fixpontos reprezentációja. 106
107 Fixpontos reprezentáció Vége ki: eredmény Az eredményhez adj 1-et Biteket ellentétesre igen Start be: N S=sign(N) N=abs(N) Írd át N-et binárissá Egészítsd ki vezető 0-kkal S=-1 nem Példa MSB: előjelbit 107
108 előjeles előjel nélküli Fixpontos reprezentáció Reprezentáció hossz (bitszám) Minimum érték Maximum érték 1 bájt bájt bájt bájt bájt bájt
109 Feladat: adatreprezentáció 32 bites fixpontos reprezentációval add meg a Föld lakosságának (hozzávetőleges) számát! Add meg a -1 értékét 32 bites fixpontos reprezentációval! Melyik 4 bájtos, fixpontos bitsorozat jelenti: 15908? Melyik 4 bájtos, fixpontos bitsorozat jelenti: -666? Mi az értéke az alábbi bitsorozatnak 4 bájtos, fixpontos számábrázolás esetén?
110 Lebegőpontos reprezentáció Szabványosított (IEEE 754) technika valós számok (törtek, nem csak egészek) tárolására a számítógépen Lépések egy 4 bájtos példában: *2 4 decimális valós bináris valós normálforma: számjegyek * alap kitevő (-1) 1 * ( ) * (-1) S * (1+M) * 2 K Első bájt Második bájt Harmadik bájt Negyedik bájt 110
111 Lebegőpontos reprezentáció Reprezentáció hossz (bitszám) 4 bájt (egyszeres) 8 bájt (dupla) Előjelbitek száma 1 1 Kitevőbitek száma 8 11 Hasznos bitek szám Kitevőeltolás Minimum abszolút érték 1.175* * Maximum abszolút érték 3.403* * Pontosság (!) ~7 helyiérték ~16 helyiérték 111
112 Lebegőpontos reprezentáció Egy intervallum nem minden eleme reprezentálható Pl.: ; ; ; Kerekítést alkalmazunk ( ) Speciális értékek: +0.0 (pl ) -0.0 (egyenlő a +0.0-val; pl. -1.0*0.0) +Inf (+, pl. 1.0/0.0) -Inf (-, pl. -1.0/0.0) NaN (nem szám, pl. +Inf*0.0) 112
113 A forráskód egységei és elemei Karakterkészlet Lexikai egység Szintaktikai egység Utasítás Programegység Program Komplexitás nő Minden nyelvben különböző karaktereket, szimbólumokat, speciális kulcsszavakat, kifejezéseket és szabályokat használunk. 113
114 Kulcsszó, azonosító, megjegyzés Kulcsszó Speciális jelentésű karaktersorozat Pl.: if, else, while, for, return Azonosító Karaktersorozat, amely egy programozói eszköz neveként szerepel Pl.: i, Count, var2, abs_val Megjegyzés Olyan szöveg a forráskódban, amely csak a programozónak (olvasónak) szól, nincs hatása a program futásra Oldal = 5*cos(60) 114
115 Konstans A konstans (literál) egy fix érték a programban, amely futásidőben nem változtatható. Értéke és típusa van, amelyeket a felírás módja határoz meg. Speciális: nevesített konstans, fix érték azonosítóval. Példák , 5,.5, 5., 0x1F, F, F, alma while x>100 do X = A
116 Változó Egy memóriarekesz adattárolásra, amelyre az azonosítóval hivatkozhatunk Az eljárásorientált nyelvek legfontosabb eszköze Komponensei név (azonosító) érték (bitsorozat a RAM-ban) attribútum (típus) cím (RAM-beli pozíció) Példa (C nyelven) int A = 10; float Ugras1 = 11.5; 116
117 Operátorok Adatokon végzett egyszerű műveleteket jelentenek Lehetnek egy-, kettő- vagy háromoperandusúak Általános operátor csoportok: aritmetikai (pl.: +, -, *, /, %) hasonlító (pl.: >, <, ==, >=, <=,!=) logikai (pl.: &&,,!) bitenkénti (pl.: &,, ^, ~, <<, >>) értékadó (pl.: =, +=, *=) egyéb (pl.: *, &,? :,., ->) X = A
118 Kifejezés Operátorok & operandusok & zárójelek Operandus lehet: konstans, nevesített konstans, változó, függvényhívás A kifejezésnek értéke és típusa van (kiértékelés) Az alak lehet: infix (a precedencia/erősség fontos) például: * 2 prefix például: + * postfix például: * + 118
119 Feladatok: kifejezés Mi a következő infix kifejezés értéke? 9+2*6/3>8-7 Mi a következő infix kifejezés értéke (C nyelv esetén)? 2>3&&3*5-6/2>=11%2 Mi a következő prefix kifejezések értéke? * * 2 13 / 25 5 Mi a következő postfix kifejezések értéke? Alakítsd át őket infix alakúakká! * / * 25 5 /
120 Utasítások Csoportosítás Deklaráció Értékadás Feltételes utasítás kétirányú elágazás többirányú elágazás Iteráció feltételes ciklus előírt lépésszámú ciklus Egyéb nem futtatható futtatható 120
121 Deklaráció, értékadás Deklaráció: Azonosító és típus összerendelése. Memóriafoglalás, kezdőértékadás (néha). int i = 0; float Suly; Értékadás: Változóhoz érték rendelése. i = 6; Suly = 80.3*i; 121
122 Feltételes utasítás Választás két tevékenység közül. Két külön utasítássorozat. Az egyik utasítássorozat lehet üres. if(n<0.0) S=1; else S=0; Választás több tevékenység közül. switch (i){ case 1: X=1; break; case 2: X=10; break; default: X=100; } 122
123 Iteráció Utasítások, tevékenységek többszöri ismétlése. Működési szempontból (szemantikailag) határesetek: üres ciklus (a mag egyszer sem hajtódik vége) végtelen ciklus (soha nem áll meg, szemantikai hiba) Iteráció típusok (szintaktikailag) feltételes ciklus kezdőfeltételes végfeltételes előírt lépésszámú egyéb (végtelen, összetett) 123
124 Kezdőfeltételes ciklus A fej tartalmazz egy feltételt Szemantika: 1. A feltétel kiértékelése. 2. Ha igaz, a mag (törzs) végrehajtása és ismét kiértékelés (1.) Különben a ciklus véget, és folytatás a ciklus utáni utasítással. Lehet üres ciklus is, ha a feltétel kezdetben hamis. A mag végrehajtása hatással lehet a feltételre. while (x<2){ i=i+1; x=x-2; } 124
125 Végfeltételes ciklus A vég tartalmazza a feltételt. Szemantika: 1. A mag végrehajtása egyszer 2. A feltétel kiértékelése 3. Ha ez igaz (hamis), hajtsd végre a magot újra (1.) Különben a ciklus véget ér, és folytatás a ciklus utáni utasítással do{ Nem lehet üres ciklus, i=i+1; a mag legalább egyszer x=x-2; végrehajtódik. } while (x<2); 125
126 A Python programozási nyelv A nyelv néhány főbb eleme ( erősen lebutítva ): Adattípusok: int, float, str, Konstansok: 21, 21.0, 21, Operátorok: +, -, *, /, %, **, //,=, ==, >=, <=,!=, <<, >>, ~, &,, not, or, and, in, is, Elágaztatás: if-(elif)-else Ciklusszervezés: while, for Input/output: print(), input() Megjegyzés: komment, #komment stb. 126
127 Pszeudokód Python Pszeudokód: input a if a>0 then b=a else b=-1*a endif while b<>0 do b=b-1 enddo output b Python: a = int(input()) if a > 0: b = a else: b = -1*a while b!= 0: b = b-1 print(b) 127
128 A Python programozási nyelv 128
129 Feladat: Python A következő Python kódrészletben találd meg az alábbi fogalmak előfordulásait! kulcsszó megjegyzés azonosító konstans változó operátor kifejezés utasítás # Valami számolás Sum=0 for i in range(n): Sum+=i if(sum==0): print( összeg +Sum) else: z=10%2+n/n+cos(90) #return z 129
130 Algoritmusok Pythonban Értelmezz Python kódokat! Próbáld ki Pythont a PyCharm IDE segítségével! Olvass Python dokumentációt! Végezz kisebb módosításokat működőképes Python programokon! Írj át az eddig elkészített összes pszeudokódokat Pythonra! Gyakorold az algoritmizálást a Python segítségével! Írj saját algoritmust/programot Pythonban! 130
131 Ajánlott irodalom Simon Harris, James Ross: Kezdőkönyv az algoritmusokról, (Szak Kiadó, 2006) Gérard Swinnen: Tanuljunk meg programozni Python nyelven, (O'Reilly, 2005) Narasimha Karumanchi: Data Structures and Algorithmic Thinking with Python, (CareerMonk, 2017) Peter Wentworth, Jeffrey Elkner, Allen B. Downey and Chris Meyers: How to Think Like a Computer Scientist: Learning with Python 3, (online, 2012) Metrowerks CodeWarrior: Principles of Programing (online, 1995) 131
132 Megoldások
133 Vissza a feladathoz Megoldás: folyamatábra Nyomkövetés: x y s Start 5 4? be: x, y s=x Kimenet: 9 5 kifejezés kiértékelés Összeadás: s=x+y hamis ki: s Vége y>0 igaz s=s+1 y=y-1 Módosítások: s=x s=1 s=s+1 s=s+x 133
134 Megoldás: folyamatábra Nyomkövetés: x y Start 10? 10 2 be: x Kimenet a 60 esetén: Prímtényezőkre bontás igaz ki: y x%y=0 igaz y=2 y<=x hamis y=y+1 hamis Vége Nincs kimenet Ismétlésszám: 5 x=x/y 134
135 Megoldás: folyamatábra Bemenet: a=3, b=9, c=5 Kimenet: 9 Bemenet: a=5, b=2, c=7 Kimenet: 7 igaz Start be: a, b, c a>c hamis igaz a>b hamis igaz b>c hamis R=a R=b R=c A számok maximuma. ki: R Vége 135
136 Megoldás: folyamatábra Ez a folyamatábra a maradékos osztás műveletét írja le. Helyettesítsd be a kifejezéseket! Start a<b a<0 b<=0 a=a-b hamis be: a, b ki: hiba a=a-b ki: a Vége hamis hamis a<b Start be: a, b igaz ki: a a<0 b<=0 igaz igaz ki: hiba Vége 136
137 Megoldás: folyamatábra Szökőév (Gergely-naptár) Start be: ev igaz ev%4=0 hamis hamis ev%100=0 igaz igaz ev%400=0 hamis ki: igen ki: nem Vége 137
138 Megoldás: folyamatábra Faktoriális (Pl.: 5!=120) Start be: szam igaz seged=seged*szam szam=szam-1 seged=1 szam>1 hamis fakt=seged ki: fakt Vége 138
139 Megoldás: folyamatábra Számrendszerváltás (10 2) Pl.: = Start be: szam igaz maradek=szam%2 szam=[szam/2] ki: maradek szam>0 hamis Olvasd visszafelé a kimenetet! Vége 139
140 Megoldás: folyamatábra Collatz-sejtés a n+1 = c, a n /2, 3a n + 1, ha n = 0 ha n > 0 és a n páros ha n > 0 és a n páratlan Start be: a ki: a igaz a==1 hamis igaz a%2=0 hamis ki: a=a/2 a=3*a+1 Vége 140
141 Megoldás: pszeudokód input a if a<0 then b=-1*a else b=a endif output b Alternatív algoritmusok! Bemenet: 10; Kimenet: 10 Bemenet: -4; Kimenet: 4 Egy szám abszolút értéke Egy szám abszolút értéke input a if a<0 then a=-1*a endif output a 141
142 input a input b c=a if b>0 then b=b-1 c=c-1 else output c endif Megoldás: pszeudokód Nem ugyanaz az algoritmus (nem alternatívák) Elágazás feltétel hamis Start be: a, b c=a b>0 igaz Ciklus feltétel ki: c Vége b=b-1 c=c-1 142
143 Megoldás: pszeudokód input a input b c=a while b>0 do b=b-1 c=c-1 enddo output c Nyomkövetés: Bemenet: a=7, b=3; Kimenet: 4 3 ismétlés 4 feltétel kiértékelés Különbség számítás c=a-b a b c 7 3?
144 Megoldás: pszeudokód Előjel függvény: input x if x=0 then y=0 else if x>0 the y=+1 else y=-1 endif endif output y y=0 igaz Start be: x x=0 hamis igaz y=+1 ki: y Vége x>0 hamis y=-1 144
145 Megoldás: pszeudokód Mindig nulla kimenet: input x while x<>0 do if x>0 then x=x-1 else x=x+1 endif enddo output x ki: x Vége igaz Start be: x x=0 x=x-1 hamis igaz x>0 hamis x=x+1 145
146 Megoldás: pszeudokód input N R=0 while N>0 do R=R*10+N%10 N=[N/10] enddo output R Nyomkövetés: Kimenet: Megfordítja egy szám számjegyeinek a sorrendjét. N R
147 Megoldás: pszeudokód Páros vagy páratlan: input szam while szam>1 do szam=szam-2 enddo if szam=0 then else output páros output páratlan endif szam=szam-2 igaz ki: páros igaz Start be: szam szam>1 hamis hamis szam=0 ki: páratlan Vége 147
148 Megoldás: pszeudokód Hatványozás (R=A K ): input A input K R=1 while K>0 do R=R*A K=K-1 enddo output R Prímszám-e? input N S=2 while S<=gyök(N) do if N%S=0 then output nem stop endif S=S+1 enddo output igen Kész, vége! 148
149 Megoldás: pszeudokód Háromszög-egyenlőtlenség input a, b, c if a<b+c and b<c+a and c<a+b then output Szerkeszthető háromszög else output Nem szerkeszthető háromszög endif a c b 149
150 Megoldás: pszeudokód Fibonacci-sorozat 1000-nél kisebb elemei F1=0 0, F2=1 f i = 1, f i 1 + f i 2 output F1, F2 F3=F1+F2 while F3<1000 do output F3 F3=F1+F2 F1=F2 F2=F3 enddo ha i = 1, ha i = 2, egyébként 150
151 Megoldás: pszeudokód Tömbelemek átlaga (innentől feltesszük: T egy N elemű inicializált tömb) sum=0 i=0 while i<n do sum=sum+t[i] enddo atlag=sum/n output atlag 151
152 Megoldás: pszeudokód Elemkeresés tömbben input Keresett i=0 while i<n and T[i]<>Keresett do i=i+1 enddo if T[i]=Keresett then output benne van else output nincs benne endif 152
153 Megoldás: pszeudokód Tömbelemek maximuma és annak indexe max_i=0 i=1 while i<n do if T[i]>T[max_i] then max_i=i endif i=i+1 enddo output max_i, T[max_i] 153
154 Megoldás: pszeudokód Változótartalmak megcserélése (x=5; y=8 x=8; y=5) z=x x=y y=z x=y y=x Alternatív megoldás, köztes átmeneti változó nélkül x=x+y y=x-y x=x-y 154
155 Megoldás: pszeudokód Buborékrendezés veg=n-1 while veg>0 do i=0 while i<veg do if T[i]>T[i+1] then x=t[i] T[i]=T[i+1] T[i+1]=x endif i=i+1 enddo veg=veg-1 enddo Lásd még: 155
156 Megoldás: alprogram function PP( a ) b=0 while b<a do a = a-1 b = b+1 enddo if a=b then return 1 else return 0 endif end function input a, b a = a*2 b = PP(a+b)+1 output b a b a b A kimenet: 2 Páros paraméter esetén 1-t ad, páratlan esetben 0-et. 156
157 Megoldás: alprogram function VALTOZTAT( a ) return 1-a end function Max= Egyeseket és nullákat ír ki. input Max A 0 1 és 1 0 váltogatás i=0 j=0 while j<=max do i = VALTOZTAT(i) j=j+i output j enddo 157
158 Megoldás: alprogram Átlag függvény function atl(a,b) return (a+b)/2 end function x=atl(2, 34) output x Szorzótábla eljárás procedure SzT(N) i=1 while i<=n do j=1 while j<=n do output i*j j=j+1 enddo output NEWLINE i=i+1 enddo end procedure call SzT(8) 158
159 Megoldás: alprogram function valt(x) return 1-x end function procedure pepita(x) szin=0 s=1 while s<=x do o=1 while o<=x do output szin szin=valt(szin) o=o+1 enddo output NEWLINE if x%2=0 then szin=valt(szin) endif s=s+1 enddo end procedure alprogram (függvény) alprogram (eljárás) input x főprogram call pepita(x) 159
160 Megoldás: alprogram function sec(ora, perc, masodperc) return (ora*60+perc)*60+masodperc end function procedure ido(t) s=t%60 m=[t/60]%60 h=[t/3600] output h, m, s end procedure call ido(sec(12,15,30)) 160
161 Megoldás: tesztelési stratégia N B Eredmény OK? B {2,3,4,5,6,7,8,9,10} N egész szám (-Limit(B)<N<Limit(B)) input N input B R=0 P=1 while N<>0 do R=R+(N%B)*P P=P*10 N=[N/B] enddo output R 161
162 Megoldás: szintaxis és szemantika Szintaktikai hibák: do hiányzik wihle while E-1=E E=E-1 endo enddo input B R=0 wihle E<=0 R=R*B E-1=E endo output R Szemantikai hibák: Inicializálatlan E Hiányzik: input E Multiplikatív egységelem kell R=0 R=1 E<=0 E>=0 162
163 Megoldás: adatreprezentáció Népesség több, mint Előjel nélküli fixpontos maximum = Nem ábrázolható! -1: : : :
164 Megoldás: kifejezés ((9+((2*6)/3))>(8-7)) érték: igaz (((2>3)&&((3*5)-(6/2)))>=(11%2)) érték: igaz (C nyelv) * érték: 9, azaz ((1+2)*(9-6)) * 2 13 / 25 5 érték: 22, azaz (1+((2*13)-(25/5))) * / érték: 3, azaz (30/(2*(15-(4+6)))) * 25 5 / - + érték: 22, azaz (1+((2*13)-(25/5))) 164
165 Megoldás: Python Kulcsszó: for, in, if, else Megjegyzés: # Valami számolás, #return z Azonosító: Sum, N, print, z, cos Konstans: 0, 10, 2, 90 Változó: Sum, N, z Operátor: =, +=, ==, %, +, / # Valami számolás Sum=0 for i in range(n): Sum+=i if(sum==0): print( összeg +Sum) else: z=10%2+n/n+cos(90) #return z Kifejezés: Sum=0, Sum+=i, Sum==0, összeg +Sum, z=10%2+n/n+cos(90) Függvényhívás: cos(90) Utasítás: Sum=0, for, if else, Sum+=1, print( ), z=10%2+n/n+cos(90) 165
Algoritmikus gondolkodás
Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02 Témák Hogyan írjunk le és oldjunk meg problémákat? Hogyan osszunk fel egy problémát kisebbekre?
Programozás alapjai (ANSI C)
Programozás alapjai (ANSI C) 1. Előadás vázlat A számítógép és programozása Dr. Baksáné dr. Varga Erika adjunktus Miskolci Egyetem, Informatikai Intézet Általános Informatikai Intézeti Tanszék www.iit.uni-miskolc.hu
Webprogramozás szakkör
Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás
Kifejezések. Kozsik Tamás. December 11, 2016
Kifejezések Kozsik Tamás December 11, 2016 Kifejezés versus utasítás C/C++: kifejezés plusz pontosvessző: utasítás kiértékeli a kifejezést jellemzően: mellékhatása is van például: értékadás Ada: n = 5;
3 A C programozási nyelv szintaktikai egységei
3 A C programozási nyelv szintaktikai egységei 3.1 Azonosítók Betűk és számjegyek sorozata, betűvel vagy _ (aláhúzás) karakterrel kell kezdődnie. A nagy- és kisbetűk különbözőek. Az azonosítók tetszőleges
Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása
1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június
Programozási alapismeretek 1. előadás
Programozási alapismeretek 1. előadás Tartalom A problémamegoldás lépései programkészítés folyamata A specifikáció Az algoritmus Algoritmikus nyelvek struktogram A kódolás a fejlesztői környezet 2/33 A
Felvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,
Python bevezető foglalkozás Python bevezető foglalkozás
Python bevezető foglalkozás program, programozás, programnyelvek a Python nyelv és az IDLE környezet változók és adattípusok konzol input és output (input(), print()) vezérlési szerkezetek (if/else, while)
Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.
Informatika 1 2011 Második előadás, vezérlési szerkezetek Szabó Adrienn 2011. szeptember 14. Tartalom Algoritmusok, vezérlési szerkezetek If - else: elágazás While ciklus For ciklus Egyszerű típusok Összetett
Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe
Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével
Programozás alapjai gyakorlat. 2. gyakorlat C alapok
Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel
Programzás I. - 1. gyakorlat
Programzás I. - 1. gyakorlat Alapok Tar Péter 1 Pannon Egyetem Műszaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 15, 2007 1 tar@dcs.vein.hu Tar Péter (PE-MIK-DCS)
Programozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)
Felvételi vizsga mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív
A C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt
Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.
Programozás I. 1. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2012. szeptember 10. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 1 /
Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1
Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1 Készítette: Gipsz Jakab Neptun-azonosító: ABC123 E-mail: gipszjakab@seholse.hu Kurzuskód: IT-13AAT1EG 1 A fenti
Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik
Java programozási nyelv
Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék
Assembly programozás: 2. gyakorlat
Assembly programozás: 2. gyakorlat Számrendszerek: Kettes (bináris) számrendszer: {0, 1} Nyolcas (oktális) számrendszer: {0,..., 7} Tízes (decimális) számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális
Programok értelmezése
Programok értelmezése Kód visszafejtés. Izsó Tamás 2016. szeptember 22. Izsó Tamás Programok értelmezése/ 1 Section 1 Programok értelmezése Izsó Tamás Programok értelmezése/ 2 programok szemantika értelmezése
Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }
Funkcionális és logikai programozás { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } http://www.ms.sapientia.ro/~mgyongyi ` 1 Jelenlét: Követelmények, osztályozás Az első 4 előadáson
A C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Javascript Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása
Hardver leíró nyelvek (HDL)
Hardver leíró nyelvek (HDL) Benesóczky Zoltán 2004 A jegyzetet a szerzıi jog védi. Azt a BME hallgatói használhatják, nyomtathatják tanulás céljából. Minden egyéb felhasználáshoz a szerzı belegyezése szükséges.
Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek
Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő
Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?
Bevezetés Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések Forráskód Hibajegyzék p2p.wrox.com xiii xiii xiv xiv xvi xvii xviii
Szoftvertervezés és -fejlesztés I.
Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik.
Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.
Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19. Programkészítés Megrendelői igények begyűjtése Megoldás megtervezése (algoritmuskészítés)
Algoritmizálás és adatmodellezés tanítása 1. előadás
Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az
Vezérlési szerkezetek
Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását
Objektumorientált Programozás III.
Objektumorientált Programozás III. Vezérlési szerkezetek ismétlés Matematikai lehetőségek Feladatok 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő
Programozás I. gyakorlat
Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt
1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb
1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb #include main() { int a, b; printf( "a=" ); scanf( "%d", &a ); printf( "b=" ); scanf( "%d", &b ); if( a< b ) { inttmp = a; a =
Java II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.
Programozás I. 1. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2012. szeptember 10. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 1 /
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért
S z á m í t ó g é p e s a l a p i s m e r e t e k
S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami
B I T M A N B I v: T M A N
Műszaki informatika Tesztek+Megoldások B I v: T 2015.04.19 M A N 1/42 Tesztek + Megoldások Alapfogalmi kitérő kérdéssor IPA kérdéssor CPA kérdéssor 2/42 Ellenőrző kérdések 1. 1. Melyik Neumann elv következménye
Bánsághi Anna 2014 Bánsághi Anna 1 of 68
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
Gyakorló feladatok Gyakorló feladatok
Gyakorló feladatok előző foglalkozás összefoglalása, gyakorlató feladatok a feltételes elágazásra, a while ciklusra, és sokminden másra amit eddig tanultunk Változók elnevezése a változók nevét a programozó
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Mintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás
Programozás alapjai 6. gyakorlat Futásidő, rekurzió, feladatmegoldás Háziellenőrzés Egészítsd ki úgy a simplemaths.c programot, hogy megfelelően működjön. A program feladata az inputon soronként megadott
Algoritmizálás + kódolás C++ nyelven és Pascalban
Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban
Kifejezések. Kozsik Tamás. December 11, 2016
Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},
Algoritmusok. Dr. Iványi Péter
Algoritmusok Dr. Iványi Péter Egyik legrégebbi algoritmus i.e. IV század, Alexandria, Euklidész két természetes szám legnagyobb közös osztójának meghatározása Tegyük fel, hogy a és b pozitív egész számok
Algoritmusok helyességének bizonyítása. A Floyd-módszer
Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t
Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék
Gyakorló feladatok Számrendszerek: Feladat: Ábrázold kettes számrendszerbe a 639 10, 16-os számrendszerbe a 311 10, 8-as számrendszerbe a 483 10 számot! /2 Maradék /16 Maradék /8 Maradék 639 1 311 7 483
Programozás alapjai. 2. előadás
2. előadás Általános Informatikai Tanszék A számítógépes feladatmegoldás eszközei Adatok (Amiken utasításokat hajtunk végre) Utasítások (Amiket végrehajtunk) Program struktúra Adatok Konstans (a programon
Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. szeptember 27. Háromszög szerkeszthet ségének ellen rzése ANSI C (C89) megvalósítás #i n c l u d e i n t main ( v
Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók
Haskell 1. Alapok tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók elég jól elkerülhetők így a mellékhatások könnyebben
Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs
Programozás I. 1. előadás: Algoritmusok alapjai Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 7. Sergyán
A programozás alapjai
A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,
Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.
Tartalom 1. előadás programozás során használt nyelvek A specifikáció Algoritmikus nyelvek A problémamegoldás lépései 3/41 (miből?, mit?) specifikáció (mivel?, hogyan?) adat- + algoritmus-leírás 3. (a
Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1
Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Készítette: Gipsz Jakab Neptun-azonosító: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Kurzuskód: IP-08PAED Gyakorlatvezető
Algoritmusok, adatszerkezetek, objektumok
Algoritmusok, adatszerkezetek, objektumok 1. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 14. Sergyán (OE NIK) AAO 01 2011.
Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente
Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char
10. gyakorlat Struktúrák, uniók, típusdefiníciók
10. gyakorlat Struktúrák, uniók, típusdefiníciók Házi - (f0218) Olvass be 5 darab maximum 99 karakter hosszú szót úgy, hogy mindegyiknek pontosan annyi helyet foglalsz, amennyi kell! A sztringeket írasd
INFORMATIKA javítókulcs 2016
INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.
Adatbázis és szoftverfejlesztés elmélet
Adatbázis és szoftverfejlesztés elmélet Témakör 4. Összefoglalás 1. A kódolás eszközei Általános szövegszerkesztő Programozói szövegszerkesztő Fejlesztői környezet Vizuális fejlesztői környezet Általános
Programozás alapjai. 5. előadás
5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk
Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja
Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2019. augusztus 29. Feladat: írjuk ki az els 10 természetes szám négyzetét! #i n c l u d e i n t main ( v o i d ) { p r
Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása
Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása 1. feladat: Eldönteni egy számról, hogy pozitív, negatív vagy 0. Próbálja megoldani a feladatot switch szerkezettel is. Mikor használható
2018, Diszkrét matematika
Diszkrét matematika 3. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: természetes
Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.
Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}
3. gyakorlat Számrendszerek: Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F} Alaki érték: 0, 1, 2,..., 9,... Helyi
Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1
Fordító részei Kód visszafejtés. Izsó Tamás 2016. szeptember 29. Izsó Tamás Fordító részei / 1 Section 1 Fordító részei Izsó Tamás Fordító részei / 2 Irodalom Izsó Tamás Fordító részei / 3 Irodalom Izsó
B I T M A N B I v: T M A N
Műszaki informatika IPA Tesztek+Megoldások B I v: T 2014.02.15 M A N 1/41 Ellenőrző kérdések Alapfogalmi kitérő kérdéssor IPA kérdéssor 2/41 Ellenőrző kérdések 1. 1. Melyik Neumann elv következménye a
Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!
A PL/SQL alapelemei Karakterkészlet Az angol ABC kis- és nagybetűi: a-z, A-Z Számjegyek: 0-9 Egyéb karakterek: ( ) + - * / < > =! ~ ^ ; :. ' @ %, " # $ & _ { }? [ ] Szóköz, tabulátor, kocsivissza A kis-
OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos
OOP I. Egyszerő algoritmusok és leírásuk Készítette: Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát képezik. Ismeretük
Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok
Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből
Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat
Formális nyelvek a gyakorlatban Formális nyelvek, 1 gyakorlat Segédanyagok Célja: A programozási nyelvek szintaxisának leírására használatos eszközök, módszerek bemutatása Fogalmak: BNF, szabály, levezethető,
Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala
BASH SCRIPT SHELL JEGYZETEK
BASH SCRIPT SHELL JEGYZETEK 1 TARTALOM Paraméterek... 4 Változók... 4 Környezeti változók... 4 Szűrők... 4 grep... 4 sed... 5 cut... 5 head, tail... 5 Reguláris kifejezések... 6 *... 6 +... 6?... 6 {m,n}...
2. Fejezet : Számrendszerek
2. Fejezet : Számrendszerek The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003 Wilson Wong, Bentley College
Matematikai alapok. Dr. Iványi Péter
Matematikai alapok Dr. Iványi Péter Számok A leggyakrabban használt adat típus Egész számok Valós számok Bináris számábrázolás Kettes számrendszer Bitek: és Byte: 8 bit 28 64 32 6 8 4 2 bináris decimális
Fordítóprogramok. Aszalós László. 2009. szeptember 7.
Fordítóprogramok Aszalós László 2009. szeptember 7. 1. Bemelegítés Honlap: www.inf.unideb.hu/ aszalos/diak.html (Fordítóprogramok, 2009) Jegymegajánló: utolsó hét előadásán. PótZH (csak gyakorlat) vizsgaidőszak
PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar
PROGRAMOZÁS tantárgy Gregorics Tibor egyetemi docens ELTE Informatikai Kar Követelmények A,C,E szakirány B szakirány Előfeltétel Prog. alapismeret Prog. alapismeret Diszkrét matematika I. Óraszám 2 ea
Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)
Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május) Teszt kérdések 1. Melyik állítás igaz a folytonos integrációval (CI) kapcsolatban? a. Folytonos
C programozás. 1 óra Bevezetés
C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}
Adminisztrációs feladatok Strukturált programok A C programnyelv elemei
Strukturált C-Strukturált Egyéb elemek Strukturált C-Strukturált Egyéb elemek Adminisztrációs feladatok Strukturált programok A C programnyelv elemei A programozás alapjai. álózati Rendszerek és Szolgáltatások
Oktatási segédlet 2014
Oktatási segédlet 2014 A kutatás a TÁMOP 4.2.4.A/2-11-1-2012- 0001 azonosító számú Nemzeti Kiválóság Program Hazai hallgatói, illetve kutatói személyi támogatást biztosító rendszer kidolgozása és működtetése
Programozás I gyakorlat
Programozás I. - 3. gyakorlat Operátorok, típuskonverziók, matematikai függvények Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24,
1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok
Számítógépes szimulációk 1. Bevezetés BME Fizika Intézet 2015. szeptember 9. Bevezetés A félév menete C-ismétlés, 1. rész Oktatók: Nagyfalusi Balázs: nagyfalusi@phy.bme.hu, F3 211. : tcsaba@eik.bme.hu,
Occam 1. Készítette: Szabó Éva
Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti
1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba
Hibaforrások Hiba A feladatok megoldása során különféle hibaforrásokkal találkozunk: Modellhiba, amikor a valóságnak egy közelítését használjuk a feladat matematikai alakjának felírásához. (Pl. egy fizikai
A félév során előkerülő témakörök
A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok
Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1
Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1 Készítette: Gipsz Jakab Neptun-azonosító: ABC123 E-mail: gipszjakab@seholse.hu Kurzuskód: IT-13AAT1EG Gyakorlatvezető
Programozás alapjai 2.Gy: A C nyelv alapjai P R O
Programozás alapjai 2.Gy: A C nyelv alapjai. P R O A L A G 1/32 B ITv: MAN 2018.10.02 Code::Blocks Indítsa el mindenki! 2/32 1 Code::Blocks Új projekt 2 3 4 5 3/32 Code::Blocks Forráskód Kód fordítása:
Programozási nyelvek a közoktatásban alapfogalmak II. előadás
Programozási nyelvek a közoktatásban alapfogalmak II. előadás Szintaxis, szemantika BNF szintaxisgráf absztrakt értelmező axiomatikus (elő- és utófeltétel) Pap Gáborné. Szlávi Péter, Zsakó László: Programozási
Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)
Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény