A programozás alapjai II.

A VIK Wikiből
A lap korábbi változatát látod, amilyen Nagy Marcell (vitalap | szerkesztései) 2016. július 21., 13:06-kor történt szerkesztése után volt.
A programozás alapjai 2.
Tárgykód
VIIIAA00
Régi tárgykód
VIIIA114
Általános infók
Szak
info
Kredit
7
Ajánlott félév
2
Keresztfélév
nincs
Tanszék
IIT
Követelmények
KisZH
5 db
NagyZH
2 db
Házi feladat
1 nagyházi + szorgalmi
Vizsga
nincs
Elérhetőségek
Levlista
prog2@sch.bme.hu

Követelmények

Előtanulmányi rend

Az új tanterv A programozás alapjai 1. tárgyából kredit megszerzése, vagy a régi tanterv A programozás alapjai 1. tárgyából kredit megszerzése szükséges a tárgy felvételéhez.

A szorgalmi időszakban

  • A min. elégséges félévvégi jegy feltételei:
    • A gyakorlatok legalább 70%-án való részvétel.
    • A laborok legalább 70%-án való részvétel. Laboron lehet beugró, amit ha nem teljesítesz nem lesz érvényes a jelenléted.
    • A kisZH-k sikeres megírása. Ehhez az 5 db kisZH-ból a legjobb 3-nak külön-külön el kell hogy érje a 40%-ot.
    • A 2 nagyZH sikeres megírása. Ehhez a két ZH összpontszámának kell elérnie az összesen elérhető pontok 50%-át.
    • A házi feladat sikeres megoldása.
  • Pótlási lehetőségek:
    • A kis zárthelyik pótlólagos megírására nincs lehetőség, viszont 5 kisZH-ból csak 3 számít, így a másik kettőt felhasználhatod javításra.
    • A nagy zárthelyik közül az egyik, mégpedig amelyik rosszabbul sikerült elsőre, a pótlási héten pótolható, különeljárási díj megfizetése mellett. A pótZH felülírja a korábbi ZH eredményét.
    • A nagy házi feladat pótlólagos beadására csak a szorgalmi időszak végéig (utolsó tanítási napon, 12.00 óráig), különeljárási díj megfizetésével van mód, azon túl a nagy házi feladat nem pótolható. A megoldások apróbb hibáinak javítására – a laborvezető oktatóval egyeztetett időpontban – a pótlási hét végéig (utolsó napon 12:00 óráig), különeljárási díj megfizetésével van mód, azon túl a nagy házi feladat nem javítható. A pótlási héten már csak olyan feladatok és/vagy dokumentációk javíthatók, amelyek hiányosság, vagy működési hiba miatt kerültek elutasításra.

A vizsgaidőszakban

  • Vizsga: nincs.

Félévvégi jegy

Pontszám = NZH1 (40 pont) + NZH2 (40 pont) + legjobb 3 kisZH (30 pont) + pluszpontok (14 pont) Pluszpont kétféleképpen szerezhető:

  • Házi feladat: a részfeladatokra kapható 1-1-2-2 pont, de csak ha nem kellett pótolni a házit (NHF5).
  • Szorgalmi feladatok: cporta - ural-on kiadott feladatok, 1-1 pont kapható rájuk. Csak akkor számítanak, ha a két ZH pontszáma legalább 52 (a 80-ból, 65%).

Ha ponthatáron vagy, és az összes pluszpontot összeszedted, esélyes hogy a jobb jegyet kapod.

Ponthatárok:

1 0-51
2 52-66
3 67-81
4 82-96
5 97-

Segédanyagok

Általános segédletek

Jegyzet

  • Siroki Péter HaT-os öregtag által készített C++ jegyzet: pdf - online. A villanyos tematikát követi, de itt is jól használható. Az esetleges hibákat a wiki@sch.bme.hu címre várjuk.
  • Dobra Gábor, Fintha Dénes és Horváth János porg2-höz készített jegyzete

Előadások diái

Online hozzáférhető könyvek

Szabadon elérhető C++ fejlesztőeszközök és fordítók

KisZH-k, beugrók

A tárgyhonlapon megtalálható az összes kisZH évre és csoportokra bontva, megoldásokkal.

Házi

A házi véletlenszerűen generált. Van néhány témakör (pl. Neumann-elvű számítógép szimulátor, kupackezelő, recept-nyilvántartás, állapotgép szimulátor, fájlkezelő rendszer, stb.), ezeket ellátják névre szóló paraméterekkel, majd kiadják a hallgatóknak. A házi az objektumkezelésre, memóriakezelésre, operátorokra koncentrál leginkább, így a tananyag legfontosabb részeiből jó tapasztalatot szerezhetsz. A házi másik része kötött. Egyfelől előírják a dokumentáció felépítését, mit kell beadni, milyen formában. Másrészt a memtrace-t használni kell a házinál, illetve ajánlott a gtest_lite használata is (ezeket a fájlokat nem kell külön feltölteni, a Cporta tudja kezelni őket). A házi 4-5 részfeladatra tagolódik:

  1. Specifikáció: Néhány bekezdés terjedelemben írd le, a kiadott feladat szövege alapján hogyan képzeled el a megvalósítandó programot, hogy a laborvezető lássa, mit fogsz csinálni.
  2. Terv: Bővebben írd le, hogyan lesz megvalósítva a feladatod. Hogyan dolgozod fel a bemenetet, melyik függvénynek/objektumnak mi a szerepe, hogyan lesz kiszámítva pl. a bolygók tömege. Tervezd meg, milyen osztályokra lesz szükséged, azok hogyan kapcsolódnak egymáshoz, erről készíts is valami diagramot. Ez lehet kézi rajz, vagy a Google első találata. Tipp: ha Visual Studio-t használsz, és megcsinálod a 3. részfeladatot is, generálhatsz egy osztálydiagramot (jobb klikk a projekt nevén > View > View class diagram)
  3. Interfész: Itt már kódot is kell írnod. A korábban megtervezett osztályokat/függvényeket készítsd el, de a függvények belsejei lehetnek félkészek, vagy üresek. Kezd el megírni a main() függvényt, és a program többi részét. Amikor feltöltöd a fájlokat Cporta-ra, a header fájlokat ne jelöld be fordítandónak, de a main() függvényt tartalmazó fájlt mindenképpen!
  4. Végleges: Ekkora kellene befejezned a házidat. Dokumentációt, forrásfájlokat, teszt bemeneteket kell feltöltened. Feltöltésnél minden (.h és .cpp) fájlt jelölj be fordításra! A Cporta mutatni fogja, ha hibás a programod. Ezeket ki kell javítanod. A hibátlan programot az oldal lefordítja, és lefuttatja, majd kijelzi, hogy a forrásfájlok mely utasításai nem lettek felhasználva. Törekedj arra, hogy lehetőleg a program minden része le legyen fedve. Ezt további, vagy kibővített teszt bemenetekkel érheted el. Nem muszáj az összes sornak érintettnek lennie, de lényegesebb részek ne maradjanak ki (pl. egy kupacokat tároló programnál sose fut le a jobboldalt kezelő függvény, csak a bal).
  5. Pótlás: Ha nem készültél el a 4. részfeladattal, de azért már a nagyja megvan, csak apróbb javítások/pontosítások szükségesek, akkor később is beadhatod a házit. Ezért fizetni kell, és nem fogsz 6 pluszpontot kapni a házira. Ha a 4. részfeladatnál kész voltál, nem kell feltöltened semmit.

Egy egyszerű minta házi feladatban látható, a részfeladatoknál hogyan alakul a program.

ZH

Régi típusú ZH-k (csak 1 ZH volt félév közben):

  • 2014: A - B
  • 2013: A - B
  • 2012: A - B
  • 2011: A - B
  • 2010: A - B - C - D
  • 2009: A - B
  • 2008: A - B
  • 2007: A
  • 2006: A - B

Tipikus ZH kérdések

  • Írj egy generikus tároló osztályt mely tudja az alábbiakat:
    • konstrukor, destruktor
    • másoló konstruktor
    • operator =
    • getMinMax(bool isMin)
  • Írjon tetszőleges generikus rendező algoritmust!
  • Írjon algoritmus, amely transzponál egy generikus mátrixot!

Tippek

A programozás inkább egy gondolkodásmód, mint egy bemagolandó vagy megtanulandó anyag. Ha eddig még nem programoztál akkor nem fog könnyen menni, viszont folyamatos készüléssel jól fel lehet készülni. Nekem tetszett, mert végre egy olyan tárgy, ahol a héten leadott anyagot nem leülni és megtanulni kellett, hanem a heti anyagot inkább csak kipróbáltam otthon és játszottam vele, hiszen a programozást játékként is fel lehet fogni. Azt tanácsolom hogy találj ki magadnak valamilyen programot amit meg akarsz csinálni (én például a Vaterás eladásaimat kezelő programot választottam) és próbálkozz és játssz vele. Ha ilyen szemlélettel programozol akkor nem szenvedés lesz, hanem inkább egy jó játék ahol a következő heti előadást várod, hogy délután mehess haza játszani = azaz belerakni a kis saját programodba az előadáson tanultakat.

Rá lehet menni típuspéldákra gyakorlására és hasonló dolgokra, de nem éri meg. Miért nem? Leírtam ide saját tapasztalataimat: Hogy tanuljunk meg programozni?.

--Szabó Csaba (vita) 2012. december 16., 23:26 (CET)

Gyakvezérek

Vélemény a gyakorlatvezetőkről

  • Blázovics László: Az anyagot nagyon érti, szívesen segít, viszont nem tart túl izgalmas gyakorlatokat, könnyen elterelődik a figyelmed, könnyen bealszol.
  • Goldschmidt Balázs: Jó hangulatú órákat tart, jól magyaráz.
  • Simon Balázs: Jól magyaráz, viszont az előadói stílusa nem a legjobb.
  • Izsó Tamás: Nagyon jó szakember, de nem gyakorlatot tart, hanem előadást. Diákat vetít és végig magyaráz. Az utolsó pár dián általában vannak feladatok, de azokat sem megoldja, hanem megmutatja a megoldást és csak beszél a kódról. Ráadásul sokszor ezekig a diákig el sem ér, mert kicsúszik az időből. Soha nem sikerül még befejezni az órát időre (sőt, csak szimplán befejezni sem, mert sosem ért a végére). Óra előtt igyál meg legalább egy kávét, különben tuti elalszol. Ettől függetlenül jó szakember, és szívesen segít is, bármilyen problémád, kérdésed van.

Verseny

A félév közben szokott lenni verseny, melynek eredménye nem számít bele az félév végi eredménybe. Részletesebben: [1]


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