A programozás alapjai 1

A VIK Wikiből
A lap korábbi változatát látod, amilyen Veszelyi Bence Balázs (vitalap | szerkesztései) 2019. november 26., 22:46-kor történt szerkesztése után volt. (→‎Régebbi ZH-k)
Ugrás a navigációhoz Ugrás a kereséshez
A programozás alapjai 1
Tárgykód
VIHIAA01
Régi tárgykód
VIHIA106
Általános infók
Szak
villany
Kredit
7
Ajánlott félév
1
Keresztfélév
nincs
Tanszék
HIT
Követelmények
KisZH
6 db
NagyZH
2 db
Házi feladat
1 db
Vizsga
nincs
Elérhetőségek
Levlista
vprog1@sch.bme.hu


A tantárgy célkitűzése, hogy a hallgatók készség szinten alkalmazható ismereteket szerezzenek a számítógépes problémamegoldás módszereinek és alapvető eszközeinek használatában. További cél, hogy a megszerzett ismereteket és készségeket további tanulmányaik során hatékonyan legyenek képesek alkalmazni. A célkitűzés teljesítését egy magas szintű programozási nyelv, a C megismerése teszi lehetővé. A gyakorlatok anyaga folyamatosan követi az előadások tematikáját, azok mélyebb megértését, az algoritmusok részletes megismerését támogatja. A laboratórium célja, hogy a hallgatók gyakorlati jártasságot szerezzenek az előadáson és gyakorlaton megismert módszerek kipróbálása által, és készség szinten elsajátítsák a fejlesztőkörnyezetek használatát. Az anyag jobb elsajátítása érdekében a laboratóriumi foglalkozásokhoz kapcsolódóan egy nagyobb házi feladatot is meg kell oldani.

A tárgyban tanultakra épít a A programozás alapjai 2 és az Informatika 2.

Követelmények

  • Jelenlét: Mind a három óratípus (előadás, gyakorlat, labor) 70%-án való részvétel kötelező. A számítógépes laborokon a felkészültséget a laborvezetők beugróval vagy előfeladattal ellenőrizhetik, az elégtelen beugró hiányzásnak minősül az adott laborról.
  • Nagy házi feladat: A házi feladat elkészítésével összesen 20 pontot lehet szerezni. A nagy házi feladat során különböző heteken checkpointok vannak (általában a 8., 11. és 14. héten), ameddig el kell készíteni a házi feladat specifikációját (3+1 pont), megoldási vázlatát (3+1 pont), valamint magát a programot is (10+2 pont). A pluszpontokat az kapja meg, aki határidőre beadja az anyagokat. Az utolsó laboralkalom során a kész házit is be kell majd mutatni, és meg is kell védeni. Akinek nincs kész a házi feladata az utolsó laboralkalomig, az különeljárási díj fejében a pótlási héten még bemutathatja a házi feladatát. A checkpointokról és kritériumokról alább lehet bővebb információt szerezni.
  • KisZH: A gyakorlatokon összesen 6 előre bejelentett időpontú, egyenként 10 pontos kiszárthelyit kell megírni. Három zh-pár (1-2, 3-4, 5-6), mindegyikből a jobbik számít. A tárgy teljesítésének követelménye, hogy páronként az egyik kiszárthelyi legalább 40%-os (4 pont) legyen! Kis zárthelyikből összesen 30 pontot lehet szerezni. Egy kiszárthelyi páros pótolható a pótlási héten.
  • NagyZH: A félév közben 2 db, egyenként 40 pontos nagyZH-t kell írni, külön-külön nincs minimumkövetelmény, de együtt legalább 50%-ot (40 pont) kell elérni. Akinek ez nem sikerülne, annak a pótlási héten egy pótlási alkalmat biztosítanak, amely során a két zárthelyi anyagából összeállított 40 pontos zárthelyit kell megírni, amelyből szintén legalább 50%-ot (20 pontot) kell elérni. A pótzárthelyin elért pontszámot duplázva számítják bele az évközi jegybe.
  • Szorgalmi házi feladatok: A felkészülést egyéni szorgalmi feladatok is segítik, melyek megoldása nem kötelező. A határidőre és sikeresen megoldott szorgalmi feladatokkal extra pontok szerezhetők, amelyeket a félévközi jegy kialakításánál figyelembe vesznek. Szorgalmi feladatok megírásával maximum 3 pont szerezhető.
  • Félévközi jegy: A félévközi jegy alakulása: NZ1+ NZH2+ KZH(1,2) +KZH(3,4) +KZH(5,6) + HF + LABORBÓNUSZ ((a kishz párok közül a jobb pontszáma számít)) Ez alapján a következő határokkal számolják: 58-tól elégséges, 77-től közepes, 95-től jó és 112 pont fölött jeles.

Segédanyagok

Házi feladat

A régi rendszerben még a központilag adták fel a feladatot. Mindenkinek más volt a megoldandó problémája, és gép ellenőrizte a programot. Azért hagytuk meg ezeket, mert gyakorolni még lehet rajtuk.

2009/2010 ősz házi feladat

A házi feladat leírása innen tölthető le:

Jelmagyarázat a 2. oldalhoz:

  • #1: valamely alapanyag neve (az 1. oldali táblázatból)
  • #2: legtöbb/legkevesebb, illetve legtöbb/legkevesebb féle
  • #3: első/utolsó órában; első/utolsó 2/3/... órában; a teljes nyitvatartás alatt

A nehezebb házikban előfordult olyan kérdés is, ahol:

  • nem egy adott alapanyag adagszámát, hanem a felhasznált alapanyagfélék számát kérdezték.
  • nem az egész nyitva tartás során kerestük az alapanyagot, hanem az első/utolsó 2/3/.. órában, esetleg egy konkrét órában.
  • #2-nél általában alapanyagot néztünk, de volt olyan házi, ahol pizzára volt kérdés, tehát pl. ".., ahol a legtöbb féle/legtöbb pizzát..").

Illetve ezek tetszőleges kombinációja - mindenki különböző kérdést kapott, de ez legtöbbször tkp. abban merült ki, hogy a kész programban néhány változót át kellett írni.

A háziban az igazán fontos rész tehát az adatszerkezet felépítése volt, erre legcélszerűbb a láncolt listák alkalmazása volt - általában elég volt csak előre láncolni, hiszen a rendelések időrendben jöttek.

Mostani rendszer

Most házi feladatot a hallgató találhatja ki. Az alapja az, hogy valami adatbázis szerű adatszerkezetet lehessen felépíteni, amiben lehet keresni. (Pl.: hipermarketek és azok árucikkeik). Az adatokat fájlok tárolják, amikből a program építi fel az adatszerkezetet. A kritériumok következők:

  • Legyen benne két különböző struktúrából álló dinamikus adatszerkezet (fésűs lista vagy ahhoz hasonló, dinamikus tömb nem jó, láncolt lista nem elég)
  • Mindkét struktúrának legyen legalább 3-4 tagja.
  • A két struktúra típus két külön fájlba legyen mentve, amiből az egyik szöveges, a másik bináris állomány.
  • A kérdés ne legyen túl triviális, és muszáj legyen hozzá felépíteni a teljes adatszerkezetet. (Pl.: Ha csak a AUCHAN termékeiből keresnénk a legolcsóbbat az nem jó, mert akkor megoldáshoz elhagyhatnánk a többi hipermarketet és csak egy láncolt listát kapnánk)

Ha nem tud a hallgató saját magától kitalálni valamit, akkor a gyakorlatvezető fog adni egy sablon házit.

A végső beadás előtt lépésenként kell előre meghatározott időpontokra benyújtani a részletek. Ezek az úgynevezett checkpointok.

  1. Téma megválasztása, a megoldandó probléma kitalálása.
  2. Adatszerkezet leírása: itt le kell írni, hogy mit fognak tartalmazni a struktúrák, azoknak mik a típusai, a struktúrák hogy kapcsolódnak egymáshoz, és milyen szerkezetet alkotnak így. Ezt minden kis apróságával együtt. (Van/nincs strázsa, nullpointer zárt, stb.) Ill. érdemes még a fájlok pontos szerkezetét is ide írni.
  3. Főbb algoritmusok leírása: Le kell írni, hogy milyen algoritmussal (vagy függvénnyel) mit akarunk elérni, és azt hogy ezt milyen lépéseken keresztül érjük el, és mindezt viszonylagos részletességgel. Általában nem kérik az adatkiírás, és adatbekérés algoritmusát, de bármilyen más keresést, kiválasztást, számítást igen.
  4. A végső dokumentáció: A dokumentációnak olyannak kell lennie, hogy ha valaki más ugyanezzel a problémával kezdd el foglalkozni, és látja a dokumentációt, akkor egyéb kérdés nélkül reprodukálni tudná a házit (ami többé kevésbé megegyezne a hallgatóéval). Egyébként csak össze kell fűzni az előzőeket és kiegészíteni a tesztelés résszel. A tesztelés részben csak azt kell leírni, hogy milyen, és miért pont azokkal az adatokkal teszteltél.

Van egy másikfajta dokumentálási módszer a Doxygen nevű programmal, amihez a kódot és a kommenteket kell úgy alakítani, hogy azt a Doxygen értelmezni tudja. Ez a program csinál akkor belőle dokumentációt html, vagy pdf formátumban.

Nagy ZH

A félév során 2db nagy ZH van. Ebből egy a félév közepefele, és egy, a szorgalmi időszak végén.

  • 1. ZH: Adatsorozatok, tömbök, függvények, struktúrák, felsorolás, mutatók és sztringek lehetnek a feladatokban. A dinamikus memóriakezelés, és a fájlok kezelése már nem részei a számonkért anyagnak.
  • 2. ZH: Dinamikus memóriakezelés, láncolt listák, fésűs listák és társai, lényegében az utolsó gyakorlatig az összes anyag. Felkészülni a laborok és gyakorlatok anyagából érdemes, általában az ott vett anyagból merítenek feladatokat.

Régi nagy ZH

A három feladatból kettő általában függvény definíció írása egy kitalált helyzetre, és a 3. egy teljes program írása. Az anyagok amit kérdezni szoktak:

  1. Tömbök, pointerek (ide tartoznak a stringek is)
  2. Dinamikus adatszerkezetek (láncolt lista, bináris fa)
  3. Fájlkezelés (szöveges, bináris - írás, olvasás, na persze megnyitás, bezárás)
  4. Matematikai probléma (szám lebontása számjegyekre, megfordítás, oszthatóság, stb.)

Régebbi ZH-k

Tippek

  • Egy nap alatt nem lehet megtanulni programozni. A programozás tárgy pont nem egy seggelős tárgy. Új gondolkodásmódot tanít, amit csak úgy lehet eredményesen az elmébe vésni, ha időről időre gyakorolja az ember. Házi feladatból meg egy is elég, és ezért vannak kisZH-k, hogy ezt az állandó készülést próbálják forszírozni.
  • Programozni minden mérnöknek tudni kell. A tantárgy anyagának elsajátítása elengedhetetlen a villamosmérnök hallgatóknak is. Jellemzően ez a tárgy szokta a legtöbb nehézséget okozni azoknak az első féléves diákoknak, akik még semmilyen előképzettséggel nem rendelkeznek. Fel kell készülniük, hogy az első pár hétben nagyon erős lesz a tempó az előadásokon, azért ajánlott már az első héttől kezdve legalább heti 3-4 órát foglalkozni az anyaggal. A programozás nem csak tantárgy, hanem egy gondolkozásmód is egyben, amit csak sok gyakorlással és idővel lehet elsajátítani.

Kedvcsináló


Bevezetők
1. félév
2. félév
3. félév
4. félév
5. félév
6. félév
7. félév
Megjegyzés:
A csillaggal jelölt négy szakirány-előkészítő tárgy közül egy a 6. félévben.