A programozás alapjai II.

A tantárgy angol neve: Basics of Programming II.

Adatlap utolsó módosítása: 2006. július 1.

Tantárgy lejárati dátuma: 2013. június 30.

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

Műszaki Informatika Szak

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIEE1240 2 0/2/0/f 2 2/2
3. A tantárgyfelelős személy és tanszék Dr. Poppe András,
4. A tantárgy előadója

Név:

Beosztás:

Tanszék, Int.:

Dr. Poppe András

egyetemi docens

EET

Vitéz András

egyetemi adjunktus

HIT

Dr. Szeberényi Imre

főtanácsos

IIT

Dr. Vajk István

egyetemi docens

AUT

A tantárgy előadója évente változik a tanszékek közötti munkamegosztásnak megfelelően. 2004-ben az előadó Szeberényi Imre.

5. A tantárgy az alábbi témakörök ismeretére épít

Programozás alapjai 1. félév (viee1239)

6. Előtanulmányi rend
Kötelező:
TárgyEredmény( "BMEVIEE1226" , "jegy" , _ ) >= 2 VAGY TárgyEredmény( "BMEVIHI1226" , "jegy" , _ ) >= 2 VAGY TárgyEredmény( "BMEVIAU1226" , "jegy" , _ ) >= 2 VAGY TárgyEredmény( "BMEVIMH1506" , "jegy" , _ ) >= 2 VAGY TárgyEredmény( "BMEVIMH1501" , "jegy" , _ ) >= 2 VAGY TárgyEredmény( "BMEVIEE1239" , "jegy" , _ ) >= 2

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

A kötelező előtanulmányi rendek grafikus formában itt láthatók.

Ajánlott:

Programozás alapjai 1. félév, (kötelező)
Számítógép labor 1. félév (ajánlott)

Tematikaütközés miatt a tárgyat csak azok vehetik fel, akik korábban nem hallgatták a következő tárgyakat:

-

7. A tantárgy célkitűzése

A tárgy alapvető célja, hogy alapozó tárgyként folytassa számítógépes problémamegoldás módszereinek és alapvető eszközeinek előző félévben megkezdett megismertetését olyan szinten, hogy azt a hallgatók további tanulmányaik során képesek legyenek hatékonyan alkalmazni.

Ezen félév alapvető célkitűzése, bevezessen az objektum-orientált programozásba. Ezt a tárgy az előző félévben megszerzett C nyelvi tudásra alapozva, a C++ nyelv megismertetésével éri el.

További cél, hogy részletesen megismertessen egy elterjedten alkalmazott többfelhasználós operációs rendszer felhasználói és programozói felületével, általános célú eszközeivel, valamint a hordozható programok írásának szabályaival. Ezt a UNIX operációs rendszer adta programfejlesztési lehetőségek bemutatásával éri el.

8. A tantárgy részletes tematikája

A célkitűzésnek megfelelően a tárgy két fő témára koncentrál:

I. UNIX rendszer eszközei, lehetőségei

  • A UNIX operációs rendszer felépítése, védelmi és állományrendszere.
  • Az alapvető Unix parancsok. Shell feladata, egy általánosan használt shell legfontosabb parancsainak megismerése.
  • Shell programozási alapok. Legfontosabb környezeti változók jelentése, kényelmi beállítások.
  • Állomány- és paraméterhelyettesítés, B/K átirányítás.
  • UNIX grafikus felhasználói felülete, általános alapelvek.
  • Szűrők és más segédprogramok jelentősége a UNIX-ban. Reguláris kifejezések.
  • Verzió követést, és forrásprogram karbantartást segítő eszközök bemutatása (rcs, cvs).
  • Speciális feldolgozó és elemző nyelvek (pl. awk, perl, yacc, lex) bemuatása.

II. Objektum-orientált programozás alapjai a C++ nyelv bemutatásával

C++ nyelv származtatása a C-ből

  • Makró (inline), konstans megvalósítás, típusértékű struct, enum;
  • prototípusok, default argumentumok és függvény túlterhelés;
  • memória allokáció, new, delete, new_handler;
  • referencia típus, függvény paraméterek és visszatérési érték, cin, cout, cerr objektumok;
  • adatok láthatóság és érvényessége.

Objektumok létrehozása

  • Objektum-orientált programozás alapfogalmai, elvei, objektum fogalma.
  • Osztály, fogalma, egységbezárás, védelem és információtakarás;
  • tagfüggvények típusai
  • védelem enyhítése, friend mechanizmus;
  • Konstruktor, destruktor.
  • Adatok (objektumok) inicializálása, this pointer használata.

Operátorok értelmezésének kiterjesztése (túlterhelés)

  • Operátor overload fogalma.
  • Dinamikusan allokált mezővel rendelkező objektumok értékadása és inicializásása, copy constructor.
  • Operátorok értelmezésének kiterjesztése tagfüggvénnyel és friend mechanizmussal.
  • Referencia típussal visszatérő függvény mint balérték (index operátor).

Öröklés

  • Az öröklés szerepe az objektumorientált programozásban.
  • Öröklés, származtatott osztály, alaposztály.
  • Védelem öröklés alatt.
  • Virtuális függvények, fordítási és késői összerendelés, inicializálás;
  • Többszörös öröklés.
  • Virtuális alaposztály.
  • Objektumok mint más objektumok attribútumai.
  • Objektum tömbök.

Generikus osztályok

  • Generikus adatszerkezetek jelentősége.
  • Dinamikus adatstruktúrák, generikus osztályok.
9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

(előadás, gyakorlat, laboratórium):

Gyakorlat, ill. összevont gyakorlat, amelyet előadás jelleggel tartunk az órarend szerinti helyen és időben, mely előadásokhoz mindvégig szorosan kapcsolódnak a Számítógép labor II című tárgy foglalkozásai.

10. Követelmények

A hallgatóknak készség szintű jártasságot kell szerezniük a C/C++ nyelv, valamint a UNIX operációs rendszer használatában olyan szinten, hogy azt további tanulmányaik során képesek legyenek hatékonyan alkalmazni.

A szorgalmi időszak alatt egy alkalommal, az évfolyamfelelős oktatóval egyeztetett időpontban nagyzárthelyi dolgozatot íratunk. A zárthelyi a szorgalmi időszakban egy alkalommal pótolható, a hallgatókkal egyeztetett időpontban.

A szorgalmi időszakban több gyakorló feladatot adunk ki, amelyek megoldását egy számítógépes program ellenőrzi.

A tárgy a félév végén félévközi jeggyel zárul. A félévközi jegy megszerzésének feltételei:

  • elégséges (pót)zárthelyi dolgozat megírása.
  • a legfeljebb 2 évvel korábban megszerzett aláírást fogadjuk el.

Félévközi jegy a nagyzárthelyi eredménye, amelyet fél jegy erejéig pozitívan módosíthat a számítógépen benyújtott gyakorló feladatok eredménye.

b, A vizsgaidőszakban:
A félévközi jegy megszerzésére ill. a félévközi követelmények pótlására a vizsgaidőszak első 2 hetében, a hallgatókkal egyeztetett időben, egyetlen alkalommal, beszámoló dolgozat megírásával van mód. Ennek eredménye a félévközi jegy.

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

A szorgalmi időszakban 1 alkalommal pótzárthelyit tartunk, a hallgatókkal egyeztetett időpontban. Vizsgaidőszakban a vizsgaidőszak első 2. hetének végéig további 1 alkalommal beszámoló dolgozat megírására van lehetőség. A szorgalmi időszakban kiadott gyakorló feladatok megoldása vizsgaidőszakban nem pótolható.

12. Konzultációs lehetőségek

A Zh előtt az előadóval történő előzetes időpont-egyeztetéssel tartunk konzultációt.

13. Jegyzet, tankönyv, felhasználható irodalom

[1] Kondorosi, László, Szirmay-Kalos:
Objektum orientált szoftver fejlesztés,
ComputerBooks, 1999

[2] B. Stroustrup:
A C++ programozási nyelv
Kiskapu, 2001

[3] Lippmann:
C++ Primer
Addison-Wesley, 1986

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

[5] Tóth Bertalan:
Programozzunk C++ nyelven
ComputerBooks, 2003

[6] Bartók Nagy János – Laufert Judit:
UNIX felhasználói ismeretek
Openinfo Könyvek, Budapest, 1994
(http://www.szabilinux.hu/ufi/main.htm)

[7] Szeberényi Imre:
Bevezetés a UNIX operációs rendszerbe
Műegyetemi Kiadó, 2003

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

Kontakt óra

30

Félévközi készülés órákra

10

Felkészülés zárthelyire

20

Házi feladat elkészítése

Kijelölt írásos tananyag elsajátítása

Vizsgafelkészülés

Összesen

60

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

Név:

Beosztás:

Tanszék, Int.:

Dr. Szeberényi Imre

főtanácsos

Irányítástechnika és Informatika Tanszék

Dr. Poppe András

egyetemi docens

Elektronikus Eszközök Tanszéke

a Programozás tárgyak oktatói munkaközössége ajánlásainak megfelelően.