Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a modul kezdőlapjáraUgrás a tananyag előző oldaláraUgrás a tananyag következő oldaláraFogalom megjelenítés (nem elérhető funckió)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintéseSúgó megtekintése

Tanulási útmutató

Összefoglalás

Code::Blocks letöltési és telepítési tudnivalók; első tapasztalatok szerzése a Code::Blocks környezetről; forrásfájl, futtatható kód

Követelmény

Önállóan megoldható feladatok

{esszé}

A programkészítési folyamat lépései közül soroljon föl legalább ötöt!

{/esszé}

{esszé}

Az algoritmus fogalmát 5 fontos kijelentéssel határoztuk meg. Mik ezek?

{/esszé}

{esszé}

Az algoritmus mely 3 összeállítási módját említettük az előző leckében?

{/esszé}

Az első Code::Blocks-os tapasztalatok

A Code::Blocks „megszerzése”

A fejlesztői környezetről néhány alapvető tudnivaló

Telepítés

Windows környezetben (ez az ajánlott) a letöltő anyag eleve tartalmazza az ajánlott fordítóprogramot és a nyomkövető rendszert. A telepítés – természetesen – rendszergazdai jogokat igényel, de a súgója végig vezeti a telepítőt. Kb. 100 MB (megabájt) lemezterületet igényel.

Az elkövetkezőkben a Windows környezetben futó Code::Blocks keretrendszerről lesz szó.

Vissza a tartalomjegyzékhez

Tapasztalatszerzés

Az első elindításkor

A Code::Blocks első elindításakor történik a fordítóprogram hozzárendelése. Ekkor jelzi ki, hogy mely – számára felismerhető – C vagy C++ fordítóprogramok találhatók a lemezen, és választásra kínálja, hogy melyik legyen a feltételezett.

A Code::Blocks első indításakor feltérképezi,hogy milyen fordítóprogramok találhatók a számítógépen. Ennek eredménye látható.A Code::Blocks első indításakor feltérképezi,hogy milyen fordítóprogramok találhatók a számítógépen.

A további lépések

Projekt létrehozása azért lényeges, mert a létrehozandó program több fájlból álló rendszert alkot. Például lehet több forrásfájl (C++ nyelvű programot tartalmazó fájl) is (legalább egy, általában main.cpp nevű van), amelyekből a fordítóprogram készít ún. félig lefordított, o kiterjesztésű (ún. object) fájl(okat), majd a futatható kódot (tehát a processzor számára „érthető” gépi utasításokat) tartalmazó, exe kiterjesztésű fájlt. Hogy ez a sok fájl ne keveredjen se egymással, se más programok fájljaival, külön, sajátos könyvtárrendszerbe csoportosítja a Code::Blocks. Többek közt ennek leírását jelenti a projekt, amelyet egy külön fájlban (cbp←Code Blocks Project) tárol.

A Code::Blocks nyitó képernyője.A Code::Blocks nyitó képernyője.

A „Create a new project” linkre kattintva, megjelenik egy választék arról, hogy milyen alkalmazás elkészítéséhez kell a projektet létrehozni. A mi esetünkben ez egy ún. konzolalkalmazás (Console Application) lesz.

A Code::Blocks projekt félék választéka.A Code::Blocks projekt félék választéka.

Miután a C++ nyelvet kiválasztottuk, az ezt követő lépések a munkakörnyezet (könyvtárszerkezet) felépítését célozzák.

A Code::Blocks konzolalkalmazás projekt első paraméterező ablaka.A Code::Blocks konzolalkalmazás projekt első paraméterező ablaka.

A projektnév kitöltése után annak a könyvtárnak a kiválasztása következik, amelyből (mint „szülőkönyvtárból”) nyílik a projekt nevével megegyező könyvtárunk a készítendő alkalmazásunk számára. Ebből nyílnak majd a speciális fájljainkat tartalmazó további könyvtárak. Egy lehetséges kitöltés példája:

A Code::Blocks konzolalkalmazás projekt első paraméterező ablaka, kitöltve.A Code::Blocks konzolalkalmazás projekt első paraméterező ablaka, kitöltve.

A fenti paraméterezés szerint a projektünket leíró fájl az „elsoprogram.cbp” lesz. Továbblépve döntünk a fordítóprogramról. Az opcionálisat kínálja föl egyből, amit most el is fogadunk. Az alábbi ábra mutatja, hogy beállítható még a futtatható, illetve a félig lefordított kódot tartalmazó fájl alkönyvtárának neve. Ezt érdemes a felkínáltnak megfelelően elfogadni.

A Code::Blocks konzolalkalmazás projekt második paraméterező ablaka.A Code::Blocks konzolalkalmazás projekt második paraméterező ablaka.

Az ábra elárulja azt az érdekességet is, hogy mód van kétféle célra fejleszteni a programot. Fejlesztés alatt jó, ha a kód tartalmaz olyan információkat is, amely támogatja a nyomkövető programot (debugger). Ennek a kódjai (futtatható és object) kerülnek a „Debug” részben beállítottakba. A véglegesben már csak a minimálisan szükséges kódok találhatók. Ezek a fájlok a „Release” részben beállított alkönyvtár-párba kerülnek.

A Code::Blocks környezet kész a programszerkesztésre.

A Code::Blocks konzolalkalmazás projekt ablaka, a forrásprogram szerkesztés kezdetén.A Code::Blocks konzolalkalmazás projekt ablaka, a forrásprogram szerkesztés kezdetén.

A bal oldali rész „Sources”-ét kinyitva és duplán rákattintva a láthatóvá váló main.cpp-re, a jobb oldali részben egy kész, további mintául szolgáló program forrása jelenik meg.

A Code::Blocks konzolalkalmazás projekt ablaka, a forrásprogram szerkesztés kezdetén. A forrásablak kinyitása után.A Code::Blocks konzolalkalmazás projekt ablaka, a forrásprogram szerkesztés kezdetén. A forrásablak kinyitása után.

E program egy tipikus, ún. „helló világ” program, amely szintaktikusan is, és szemantikusan is helyes. Fordítsuk le, azaz a Build menü Build menüpontjára vagy közvetlenül az eszközkészlet, „fogaskereket” mintázó ikonjára kattintsunk rá. A fordítás eredményeként a jobb oldali alsó ablaktartományban jelenik meg a fordító üzenete, többek közt, hogy „0 errors, 0 warnings”.

1. feladat

Nézzük meg, hogy ekkorra a munkakönyvtárunk szerkezete elvárásunknak megfelelően alakult-e, valamint hogy milyen fájlokat tartalmaznak! Rajzoljuk fel a kialakult könyvtárszerkezetet! Érdemes az egyes fájlok tartalmát, valamilyen egyszerű szövegszerkesztővel (pl. jegyzettömb) „belülről” is megnézni. Mit tapasztalt, melyek tartalmaztak olvasható információkat, melyek voltak „megfejthetetlenek”?

Az ismerkedés utolsó lépéseként, nézzük meg, mit is csinál a „gyári” program! A futtatás következik: rákattintva a Build menü Run menüpontjára (vagy a zöld háromszögre) az alábbi ablak nyílik ki.

A Code::Blocks indulásakor A Code::Blocks indulásakor "felkínált mintaprogram" fordítás és futás után (konzolalkalmazás választása esetén).

Felismerhető benne az amúgy is sejthető programüzenet: „Hello world!”. A mintaprogram tevékenysége után megjelenő további üzeneteket a Code::Blocks teszi hozzá, amivel megakadályozza, hogy a konzolalkalmazásunk ablaka még az előtt becsukódjék, hogy elolvashatnánk a programunk „sokat mondó” üzenetét.

2. feladat

A bin/Debug könyvtárban keletkezett futtatható kódot (elsoprogram.exe) közvetlenül, az operációs rendszerben is indítsuk el! Mi tapasztalható?

3. feladat

A munkakönyvtáron belül hány olyan fájlt talált, amely nevében felismerhető a projekt neve (most az „elsoprogram”)?

4. feladat

Keresse meg azt a menüpontot, amellyel választani tud az ún. debug (azaz fejlesztés alatt álló) és az ún. release (végleges) változat között!

Ugye megtalálta: Build+Select?

5. feladat

Tárgykódként (azaz futtatható kódként) a véglegeset kiválasztva végezze el az újrafordítást! Ehhez használja a Build+Rebuild menüpontot! Ezután vesse össze a két (bin/Debug és bin/Release) könyvtárbeli exe-k méretét!

További hasznos kódolási szokások

A továbbiak nem nélkülözhetetlen tudni valókat jelentenek, de igen hasznos lesz a későbbi programfejlesztési munkálatok során. Az egyik ilyen kialakítandó „szokás” a program kísérő információinak elhelyezésére, a másik a több lépcsőben történő fejlesztés egyfajta támogatási lehetőségére vonatkozik.

Minimális programinformációk a forráskódban

A programba célszerű elhelyezni a szerzőről és a feladatról néhány ismeretet. A szerző neve mellett EHA-kódját, email-címét. A feladatról az informális szövegét, és nagyon jó szolgálatot tehet a specifikációja.

Mindezeket, természetesen, a forrásprogramba ún. kommentként, megjegyzésként (azaz a fordítóprogram számára kihagyandó információként) illesszük be a program nyitó sorai gyanánt. Például így:

//Név:              Szlávi Péter
//ETR-AZONOSÍTÓ:    SZPKAFT.ELTE
//MAIL:             szlavip@elte.hu
//Feladat:          … itt a szöveg …
//                  … itt a szöveg folytatása, akár több soron keresztül…
//Specifikáció:
//Bemenet:          … itt a specifikáció bemeneti része…
//Kimenet:          … itt a specifikáció kimeneti része…
//Előfeltétel:      … itt a specifikáció előfeltételi része…
//Utófeltétel:      … itt a specifikáció utófeltételéli része…
//Definíció:        … itt a specifikáció definíció része…
//
#include <iostream>
…

Ha az a célunk, hogy a fenti sablont minden később szerkesztett programunkba beillesszük, akkor ehhez a Code::Blocks segítséget is tud adni. Annak érdekében, hogy legalább a „változatlan” részeit e kommentsorozatnak ne kelljen minduntalan bebillentyűznünk, ún. sablonként (template) kimentjük: File+Save project as user-template… menüpont, majd a sablon nevét megadjuk. Így kerül kimentésre a merevlemezünk (a Code::Blocks saját munkaterületére. Sajnos ebből a „filozófiából az is következik, hogy csak az általuk állandóan használt gépen lehet élni ezzel a gépelést spóroló lehetőséggel.

A Code::Blocks sablon mentését (menüjét) mutatja az ábra.A Code::Blocks sablon mentése.

A sablon betöltése sem bonyolult: New+From template…, majd a sablon kiválasztása (az addigra kimentett esetleg több közül), és a már megszokott munkakörnyezet létrehozó „szertartás” következik.

A Code::Blocks sablon betöltését (menüjét) mutatja az ábra.A Code::Blocks sablon betöltése.

6. feladat

Derítse ki, hova és milyen fájlok kerültek a sablon gyanánt kimentésre! Segítségként: az Ön személyéhez kötődő információk közt kell keresnie a rendszerterületen!

A programfejlesztés követésének adminisztrálása

A programfejlesztés, ha csak a kódolással összefüggő résztevékenységre gondolunk, akkor is több „fordulót” igénylő tevékenység. Annak érdekében, hogy egy-egy félbe hagyott fejlesztési lépés torzó ne maradjon, érdemes emlékeztetőket elhelyezni magában a kódba. Ehhez az óhajunkhoz is nyújt segédkezet a keretrendszer az ún. TODO-kkal. A TODO, azaz „to do” (magyarul „teendő, megcsinálandó”) nem más, mint egy speciális kommentfajta a forráskódban. Alakja: {forraskodbe}//TODO … az emlékeztető szöveg …{/forraskodbe}

Egy tipikus programdarab, amelyet az előbbi sablon bővítésével nyertünk (és sablonként mentettünk ki), az alábbi:

//Név:           Szlávi Péter
//ETR-AZONOSÍTÓ: SZPKAFT.ELTE
//MAIL:          szlavip@elte.hu
//Feladat:       … itt a szöveg …
//               … itt a szöveg folytatása, akár több soron keresztül…
//Specifikáció:
//Bemenet:       … itt a specifikáció bemeneti része…
//Kimenet:       … itt a specifikáció kimeneti része…
//Előfeltétel:   … itt a specifikáció előfeltételi része…
//Utófeltétel:   … itt a specifikáció utófeltételéli része…
//Definíció:     … itt a specifikáció definíció része…
//
//TODO a feladatszöveg kitöltése
//TODO a specifikáció megalkotása
//TODO …
//
#include <iostream>
…

Természetesen további TODO-kat is el lehet helyezni a legkülönfélébb kódrészeknél. Például ilyeneket:

…
    cout<<"N:"; cin>>N; //TODO ellenőrzéssel bővítendő a beolvasás
…
    for (int i=0; i<N; ++i) //TODO a ciklus-szervezés még meggondolandó
    {
…

A kérdés csak az, miként lehet az így „feltupírozott” forrásból kinyerni ezeket a többletinformációkat anélkül, hogy végig kelljen olvasni a teljes forrást. A View+To-Do list menüpontot kiválasztva egy külön ablakban megjelenik a TODO-k felsorolása, amely bármelyikére rákattintva, a kurzor az adott programpontra kerül, megspórolva nekünk a hosszas keresgélést.

7. feladat

A fentiek alapján készítsük el a saját, személyre szabott sablonunkat!

Vissza a tartalomjegyzékhez

Fel a lap tetejére
Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.