220 likes | 512 Views
Programozás alapjai GEIAL 3 12 B (ANSI C) BSc (Bachelor of Science) / Alap képzés 200 5 /200 6 . őszi f élév Miskolci Egyetem Általános Informatikai Tanszék. Stáblista. Előadó: Dr. Pance Miklós , egyetemi docens Info. 106/a, pance@iit.uni-miskolc.hu
E N D
Programozás alapjai GEIAL312B(ANSI C)BSc (Bachelor of Science) / Alap képzés2005/2006. őszi félévMiskolci Egyetem Általános Informatikai Tanszék
Stáblista • Előadó: Dr. Pance Miklós, egyetemi docensInfo. 106/a, pance@iit.uni-miskolc.hu • Gyakorlatvezetők:Kolcza Gábor, tudományos segédmunkatársInfo. 111., kolcza@iit.uni-miskolc.huSmid László, egyetemi tanársegédInfo. 111., altsmid@gold.uni-miskolc.hu • A Tisztelt Hallgatóság
Követelmények • 2 óra előadás, 2 óra gyakorlat • Aláírás, kollokvium • Aláírás feltételei: 5 kiszárthelyi dolgozat, 1 önálló programozási feladat • Vizsga: elméleti kérdések (50%) apró gyakorlati feladatok (50%)
Javasolt irodalom 1. • Brian W. Kernighan – Dennis M. Ritchie: A C programozási nyelv, Az ANSI szerint szabványosított változat. Műszaki Könyvkiadó, Budapest, 1996. • Clovis L. Tondo – Scott E. Gimpel: C programozási feladatok megoldásai. Műszaki Könyvkiadó, Budapest, 1996.
Javasolt irodalom 2. • Ficsór Lajos honlapján található, a tárgyhoz kapcsolódó anyagok:http://www.iit.uni-miskolc.hu/~ficsor/Oktatási segédlet, kódolási szabvány • Pance Miklós honlapján található előadásvázlat:http://www.iit.uni-miskolc.hu/~pance/
A számítógép programozás • Szórakozás (fun) • Kemény munka • Szellemi (intellektuális) kaland • Hivatás (karrier) • Olvasás, írás
Ber'senyi (Berzsenyi) Dániel: "A tudományok mécsek az éjben, a gyakorlat nélkül csak koporsói mécsek." Levél Gróf Széchenyi Istvánnak és báró Wesselényi Miklósnak Mikla (Nikla), Febr. 25. 1830.
Számítógép alapismeretek Számítógép fajták Működési elv szerint:analóg, digitális, hibrid. Digitális számítógép:elektronikus, digitális, automatikus, tárolt programú, programvezérlésű. Fizikai megvalósítás szerint:1. generációs (elektroncsöves),2. generációs (tranzisztoros),3. generációs (integrált áramkörös, IC),4. generációs (nagyfokú integrált áramkör, VLSI).
Számítógép alapismeretek Felhasználás szerint:univerzális,cél. Teljesítmény szerint:home, personal, mini, nagy, szuper ... Fő alkotó részei:tároló egység (memória) az adatok és programok tárolására,input, output eszközök,aritmetikai-logikai egység (ALU),vezérlő egység (CPU).
Számítógép alapismeretek Memória egységek:bit (binary digit): 0-1byte: 8 bitszó: CPU-tól függően néhány byte szószervezésű számítógép Hardware Software: rendszerprogramok, felhasználói programok. Programozási szintekgépi kód, assembler, magasszintű, objektum orientált.
Adatstruktúrák, algoritmusok Viszonylag állandó tudomány terület, mert nem kötődik szorosan egyetlen konkrét fizikai rendszerhez vagy konfigurációhoz sem. A számítógép belső állapotát leíró rész: az adatkomponens. A műveleteket leíró rész: a kód komponens. Az adatkomponensre vonatkozó utasítások a deklarációk: milyen adatelemek vannak és azok milyen típusúak. Niklaus Wirth: Adatstruktúrák + algoritmusok = programok Algoritmus: Mohamed Al-Khwarizmi (IX.sz.)
Adatstruktúrák, algoritmusok Algoritmus: Egy egyértelmű kiindulási és vég feltétellel megadott feladat megoldási részlépéseinek leírása. Jellemzői: absztrakciós szint (igazodjon a felhasználóhoz),helyesség (sokszor nehezen bizonyítható minden kiinduló állapotra),végesség (az algoritmus maga és a végrehajtás is),hatékonyság (kevesebb lépéssel, kevesebb erőforrással oldja meg a feladatot),egyértelműség (mindig eldönthető a következő lépés.
Adatstruktúrák, algoritmusok Egy klasszikus példa: LNKO meghatározása: adott két pozitív egész szám: m, n 1. r = min(m,n) 2. Ha r maradék nélkül osztja m-et és n-et, akkor r a LNKO, vége 3. r = r-1, vissza 2. Pl. m=1215, n=787 esetén a lépések száma: 787 lehet és kell finomítani (RSA titkosítás)
Adatstruktúrák, algoritmusok Egy hatékonyabb megoldás, Euclides (ie. 400-300) 1. r = m mod n 2. ha r = 0, akkor n a LNKO, vége 3. m = n, n = r, ugrás 1. Az előző példa megoldásához mindössze 8 lépés szükséges.
Adatstruktúrák, algoritmusok Leírási formalizmusok 1. Beszélt nyelv(előző példa) 2. Folyamatábraszimbólumok:művelet döntés adat I/O start/stop nyíl Ezen elemekből 3 alapvető struktúra építhető fel:szekvencia, elágazás, ciklus Gyakorlaton...
Adatstruktúrák, algoritmusok Elágazás:IF (feltétel) igaz ágELSE hamis ágEND Szekvencia:művelet1 művelet2 Értékadás: változó=kifejezés Ciklus: WHILE (feltétel) ciklusmag END 3. Metanyelv, elemei
Adatstruktúrák, algoritmusok Függvény deklaráció: FUNCTION függvénynév(formális paraméter lista) utasítások RETURN visszatérő érték END Függvény hívás: függvénynév(aktuális paraméterlista) Operátorok: + - * / < > = stb.
Adatstruktúrák, algoritmusok A LNKO algoritmus metanyelven: FUNCTION euclid()INPUT (m, n)r=m%n WHILE (r>0) m=n n=r r=m%nEND OUTPUT (n) END
Adatstruktúrák, algoritmusok max(a,b,c) IF (a>b) IF (a>c) max=a ELSE max=c END ELSE IF (b>c) max=b ELSE max=c END END További példák: max(a,b) IF (a>b) max=a ELSE max=b END
Adatstruktúrák, algoritmusok max=a IF (b>max) max=b END IF (c>max) max=c END Egy alternatív, perspektívikus megoldás: max=a IF (b>max) max=b END
Adatstruktúrák, algoritmusok N elem maximuma Sorozat-tár: tömb (az elemek a memóriában egymás utáni rekeszekben helyezkednek el) van neve, típusa, elemeinek indexe: a[1], a[2], ... , a[N] max=a[1]; i=2; WHILE (i<=N) IF (a[i]>max) max=a[i] END i=i+1 END
Adatstruktúrák, algoritmusok • vagy • s=0; i=1; • WHILE (i<=N) • s=s+a[i]/N • i=i+1 • END • atlag=s N elem átlaga: s=0; i=1; WHILE (i<=N) s=s+a[i] i=i+1 END atlag=s/N • További feladatok: • N elem közül a pozitívak mértani átlaga, • N! • Binomiális együttható • Polinom helyettesítési értéke • Függvény értéktáblázata