2010/2011: Szoftver labor házi feladat lekérdezése. (Csak az IIT oktatói által vezetett laborok részére!)
Tanácsok szövegek feldolgozásához.
Ezt a tárgyat a műszaki informatika szak és a villamosmérnöki
szak hallgatói hallgatják az első félévben.
A tárgy alapozó tárgy, melynek keretében a hallgatók
megismerkedhetnek a programozás és a számítástechnika
alapfogalmaival, valamint a számítógépes problémamegoldás
alapvető módszereivel.
A félév során a hallgatók elsajátítanak egy strukturált, magas szintű programozási nyelvet, melynek alkalmazásával megismerkednek a különböző vezérlési- és adatszerkezetekkel, így például listákkal, fákkal, gráfokkal.
A tárgy oktatásának módszere:
Az informatika szakon 2003/2004-es tanévtől az első félévben a C nyelvet, a második félévben pedig a C++ nyelvet mutatjuk be. Ezt megelőzően az első félévben Pascal nyelvet tanítottunk, és a másodikban C-t. A C nyelv története az 1970-es évek elejéig nyúlik vissza. Azóta a nyelv több jelentős változáson ment keresztül. Az egyes változatok és azok elenevezését összefoglaló rövid cikk itt található. Ma a 80-as évek végén megszületett ANSI szabvány a legelterjettebb, de ennek is vannak kiegészítései. A legutolsó kiegészítés a C99 néven emlegetett szabvány, melyet a legtöbb mai fordító többé-kevésbé támogat. Ennek a szabványnak a legutolsó (2007-es) munkaváltozata ingyensen itt is elérhető. (3.7 MB)
A 2005/2006-as tanévtől csak a tárgy 2. félévében tartok előadásokat. Az első félévben labor és tantermi gyakorlatokat vezetek.
Ezen a lapon a mérnök informatikus szak gyakorlataihoz és laborjaihoz kapcsolódó anyagok, információk találhatók, melyek nagy részét a korábbi években tartott előadásanyagaimból készítettem 2005-ben. Az anyagok összeállításánál igyekeztem az előadások menetét követni, de előfordulnak eltérések a mindenkori előadástól. A tantermi gyakorlatok célja, hogy az előadásokon hallottakat elmélyítése.
Az alábbi táblázat a műszaki informatika szak gyakorlataihoz készített összefoglalókat tartalmazza.
Szövegek feldolgozásakor korántsem biztos, hogy csak ASCII karakterekre kell számítanunk. Az IBM pl. még ma is előszeretettel használja gépeiben az EBCDIC karakterkódolást, ahol a betűk távolsága nem mindig 1.
Az amúgy ASCII kódrendszert használó környezetek a legkülönfélébb módón kódolják a magyar ékezetes karaktereket (pl. ISO8859-2, UTF-8, UTF-16 stb.).
Ezért a valós programokba sohasem szabad beépíteni olyan konstansokat ami a karakterek kódolásától függ.
C-ben a karakterek osztályozására az isalpha, isdigit, is..... makrókat célszerű használni. Ezek az ékezetes karakterekre is jól működnek, ha a nyelvfüggő környezeti beállítások jók.
Ez a program az isalpha és az strcoll függvény használatát próbálja szemléltetni.
Helyes locale beállításnál a rendezés is jó lesz.
Hasznos linkek a gyakorláshoz, házi feladatok megoldásához. Korábbi évek ZH és vizsgafeladatai, példaprogramok (első félév PASCAL, a második C volt).
A C nyelv szintaktikája igen szabad. Ez a szabadság a kezdők számára sok nehézséget okoz. A következő táblázatban bemutatok néhány formailag érdekesen felírt programot, melyek megértése korántsem egszerű, és nem is várjuk el hogy hasonlókat elemezzenek a ZH-kon. A példákat az International Obfuscated C Code Contest honlapról kölcsönöztem, melyek között számos program az eredeti K&R szintaxissal készült, és nem felel meg az ANSI szabványnak. Fordításukkor, elemzésükkor ezt figyelembe kell venni.
Program neve |
Rövid leírása |
A forráskódból a digitális
technikában megszokott jelölésekkel kirajzolódik egy
összeadó képe. A program az indítási
paraméterként kapott 2 egész szám
összegét a standard kimenetre írja. |
|
Factorial | A forráskódból egy n! szimbólum rajzolódik ki. A program tetszőleges pontossággal számítja ki standard inputról beolvasott érték faktoriálisát. |
Hanoi | A program a kalsszikus Hanoi tornyai problémát oldja meg. A forrás képe az elrendezett korongokra emlékeztet. A program a standard inputról olvassa korongok számát. |
N Queens | Klasszikus N királynő problémát megoldó program. A program a standard inputról olvassa be a sakktáblán elhelyezni kívánt királynők számát és az eredményt a standard outputra"rajzolja". |
Földgömb alakban elrendezett programkód,
ami indítási paraméterként egy szélességi
és egy hosszúsági koordinátát
vár. A program Mercator-féle vetítéssel kirajzolt
térképen megjelöli a megadott koordinátájú
helyet. (Budapest a. 47 19 koordinátákon van) (80 karakter széles,
automatikusan sort emelő képernyő kell a helyes
működéshez) |
|
Schönherz Kupa | Előfeladatként a 2010-es Kupára készített programom egyik változata. (Nem különösen izgalmas.) |