Programozás

A tantárgy angol neve: Programming

Adatlap utolsó módosítása: 2019. május 17.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

BME Természettudományi Kar

Fizikus alapképzés (BSc) Szak

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIEEA024   2/0/2/f 4  
3. A tantárgyfelelős személy és tanszék Dr. Pohl László,
A tantárgy tanszéki weboldala http://www.eet.bme.hu/~kohari/vieea024/
4. A tantárgy előadója

Kohári Zsolt

Egyetemi tanársegéd

Elektronikus Eszközök Tsz

Dr. Pohl László
Egyetemi docens
Elektronikus Eszközök Tsz
6. Előtanulmányi rend
Kötelező:
Kepzes("9N-AF06")

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

7. A tantárgy célkitűzése A tantárgy célja megismertetni a hallgatókkal a számítógépes problémamegoldás általános lépéseit, tipikus adatszerkezeteket és azok kezelését valamint alapvető algoritmusokat (rendezés, keresés, egyes numerikus módszerek). A hallgatóknak készség szintű jártasságot szereznek egy, a gyakorlati életben széleskörűen alkalmazott programozási nyelv, a C nyelv használatában, melyre további tanulmányaik során támaszkodhatnak. A hallgatók megismerik a programfejlesztést támogató alapvető eszközök használatát. A tárgy további fontos célkitűzése a hordozható programok írásának elsajátíttatása.
8. A tantárgy részletes tematikája

1. hét

a tárgy tematikája, követelményei,

algoritmus, adat, nyelv,

programozási nyelvek, miért pont a c?

specifikáció, tervezés, kódolás, tesztelés, dokumentálás

algoritmus választás kérdései LNKO kapcsán (próbálgatás, prímtényezők, euklideszi formula)

algoritmusok elemei: szekvencia, elágazás, ciklus

n! kiszámítása

- algoritmus kiválasztása, milyen elemekből épül fel, milyen adatszerkezeten dolgozik,

- algoritmus szöveges leírása

- algoritmus blokkvázlattal

- kódolás

itt kis elemzés: egy c program kötelező elemei, a keret. a main fv. szerepe, return 0

az indentálás célja es jelentősége.

scanf egész érték beolvasása, printf egész értékek kiírása.

2. hét

tárolási egységek

- változók, konstansok

- függvények

kötelező deklaráció/definíció

szintaktika/szemantika

- szintaxis diagram, egész szám szintaxisa

- alapvető szintaxis szabályok: szabad írásmód (whitespace-ek), a != A, #preproc, /* komment */, szabályos azonosítók

előre definiált típusok, miért int-et es double-t használjunk

egész konstans megadása, dec, okt, hexa alakban

logikai típus hiánya, számok logikai értéke

utasítások

- ;

- deklaráció/definíció

- kifejezés utasítás

- feltételes utasítás

- ciklus (most CSAK a while)

- vezérlésátadó (switch/case csak említés szinten)

- {}

if..else és while-nál blokkdiagram

feltételek

- relációs operatorok ('==' != '=', az ebben rejlő veszély)

- logikai operatorok !, &&, ||

3. hét

a múlt heti ismeretek kiegészítése és mélyítése. vezérlési szerkezetek, utasítások, beépített típusok, számábrázolási kérdések.

könyvtári függvények használata

4. hét

alapvető operatorok:

* aritmetikai, egész, valós,

* type cast,

* értékadó,

* sizeof,

* relációs,

* logikai, shortcut

* bitenkénti,

* ?:

5. hét

iteratív megoldások

=

pre/post ++ --, post veszélyei

tömbök, 1d, 2d, stringek

pointerek

6. hét

1d dinamikus tömb (példa a használatra)

(csak érintőleg, a használat szintjen:

getchar, putchar, EOF, ctrl+z/ctrl+d)

filter program template

enum típus

véges automata

példa: írjuk ki a beolvasott C kódból a kommenteket.

ly számláló

7. hét

Függvények

a program számára foglalt memóriaterületek, mi hol van/lesz,

heap, stack viselkedése, az eltérések következményei.

tárolási osztályok (lokális változókra)

a függvényhívás mechanizmusa

több érték visszaadása:

void descart2polar( double, double, double*, double*)

miért tilos lokális változó címét visszaadni

8. hét

- struct, . , ->

- typedef

- rendezés direct selection, bubble, struktúratömbre is.

- hasonlító függvények, strcmp, szöveg szerinti rendezések.

9. hét

- függvénypointerek,

- qsort használata,

- string, int, double hasonlító fv készítése (struktúratömb rendezése példáján),

- önhivatkozó szerkezet bevezetése,

- CSAK rajzolva egyirányú, kétirányú, több szempont szerint rendezett lista,

- bináris fa

- kód szinten csak a keresés a listában ciklus.

10. hét

listák kezelése

beszúró, kereső, törlő függvény

a két lehetséges head kezelés:

head=insert(head... ill. insert(&head,...

rekurzió értelmezése n!-on, bináris fák kezelése

kód szinten csak az inorder bejárás

11. hét

I/O FILE, fopen, fclose, feof, f/sprintf f/scanf, getc/s putc/s, main paraméterei

12. hét

Röviden, ami kimaradt: vessző op., (union, bitmező, vararg )

a C előfeldolgozó

13. hét

NAGYZH

14. hét

tartalék (ha nincs szükség elmaradt előadás pótlására, akkor több forrásmodulból álló programok kérdései)

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) A tárgy heti két órás előadásból és heti két órás számítógépes laboratóriumi gyakorlatból áll. A laborgyakorlat célja az előadáson elmondottak elmélyítése, gyakorlati kipróbálása, alapalgoritmusok elsajátítása.
10. Követelmények

a.       A szorgalmi időszakban:

A tárgyból heti 1 alkalommal 2 órás előadást és 2 órás laborgyakorlatokat tartunk.

 

A laborgyakorlatokon a megjelenés kötelező, a részvételt minden alkalommal ellenőrizzük. A laborgyakorlatokon a felkészültséget ún. beugróval ellenőrizhetjük, amelynek anyaga az adott labor előadáson már bemutatott anyagával kapcsolatos. A beugró lehet teszt, házi feladat vagy órai feladat is. Az elégtelen felkészültség mulasztott laboralkalomnak számít. A félév során a laborgyakorlatok alkalmával 5 kis zárthelyit iratunk “röp-zh” jelleggel. Ezeknek a pótlására nincs lehetőség, az elmulasztott kis zh-k eredményét 0-nak tekintjük. A három legeredményesebb kiszh átlaga számít.

 

A félév során a dékáni hivatal ütemezése szerinti időpontban egy nagy zárthelyi dolgozatot iratunk. A nagy zárthelyi dolgozat megírása kötelező. A nagy zárthelyi dolgozat megírására 1 pótlási lehetőséget biztosítunk a szemeszter végén. Főszabály szerint további pótlási lehetőség nincs.

 

A félév 6. hetében nagy házi feladat kiadására kerül sor a laborgyakorlatok alkalmával. A feladat beadása a szorgalmi időszak utolsó hetében, a laborgyakorlaton esedékes. Késedelmes feladatbeadás a pótlási időszak végéig lehetséges.

 

A félév elfogadásának és a félév végi jegy megadásának a feltétele:

 

Aláírást az kaphat,

·    aki a gyakorlatokról nem hiányzott többet, mint a TVSZ-ben meghatározott mérték (30%),

·    akinek a 3 legjobb kis zárthelyi dolgozat eredményéből számított átlaga legalább elégséges,

·    aki legalább elégséges osztályzatot szerzett a nagy zárthelyi dolgozatával, és

·       aki az előírt időn belül beadta a nagy házi feladatát és arra legalább elégséges osztályzatot kapott.

 

Félévközi jegyet az szerezhet, aki aláírást is szerzett. A félévközi jegy mind a kis zh-k, mind a nagy zh, mind a nagy házi feladat eredményétől függ, a következők szerint:

 

·    nagy zh eredménye:                                 35%    súllyal,

·    a 3 legjobb kis zh átlaga:                         35%    súllyal,

·       a nagy házi feladatra kapott osztályzat: 30%    súllyal.

 

Az így kialakuló osztályzatot a gyakorlatvezetők a hallgatóknak a laborfoglalkozásokon tanúsított aktivitása alapján, saját belátásuk szerint +/– 0.5 jeggyel módosíthatják. 

 

11. Pótlási lehetőségek

A nagy zárthelyi dolgozat megírására 1 pótlási lehetőséget biztosítunk a szemeszterben. Főszabály szerint további pótlási lehetőség nincs. Gyakorlaton való részvétel valamint a kis ZH-k pótlására nincs lehetőség. Házi feladat késedelmes beadása a pótlási időszak végéig lehetséges. 

12. Konzultációs lehetőségek Konzultáció e-mailen, illetve a hallgató igénye szerint személyesen, a gyakorlatvezetővel egyeztetve.
13. Jegyzet, tankönyv, felhasználható irodalom Bármely a C programozási nyelvvel foglalkozó könyv vagy jegyzet használható. A numerikus módszerek kapcsán különösen ajánlott az [1] vagy [2] példatárak használata.


[1] Benkő Tiborné, Benkő László, Tóth Bertalan:
Programozzunk C nyelven!
ComputerBooks Kiadó, 1995.

[2] Benkő Tiborné, Benkő László:
Programozási feladatok és algoritmusok Turbo C és C++ nyelven
ComputerBooks Kiadó, 1997.

[3] B.W. Kernighan - D.M. Ritchie:
A C programozás nyelv: az ANSI szerint szabványosított változat
Mûszaki Könyvkiadó, 1994.

[4] B.W. Kernighan - D.M. Ritchie:
The C Programming Language.
Prentice Hall, 1988. 2nd edition

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka

Kontakt óra

56

Készülés előadásokra

7

Készülés gyakorlatokra

0

Készülés laborra

14

Készülés zárthelyire

16

Házi feladat elkészítése

27

Önálló tananyag-feldolgozás

0

Vizsgafelkészülés

0

Összesen

120

15. A tantárgy tematikáját kidolgozta

Dr.Poppe András

Egyetemi docens

Elektronikus Eszközök Tsz

Kohári Zsolt

Egyetemi tanársegéd

Elektronikus Eszközök Tsz