Algoritmizálás + kódolás C++ nyelven és Pascalban

Hasonló dokumentumok
Algoritmizálás + kódolás C++ nyelven és Pascalban

Algoritmizálás és adatmodellezés tanítása 1. előadás

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Java II. I A Java programozási nyelv alapelemei

Programozási alapismeretek 2009/2010

Informatika terméktervezőknek

A C# programozási nyelv alapjai

Programozás II. 2. Dr. Iványi Péter

Programozás alapjai. 5. előadás

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Maximum kiválasztás tömbben

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Bevezetés a programozásba I.

Java II. I A Java programozási nyelv alapelemei

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Bevezetés a programozásba. 8. Előadás: Függvények 2.

A C programozási nyelv I. Bevezetés

A C++ Standard Template Library rövid összefoglalás

A C programozási nyelv I. Bevezetés

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

A C programozási nyelv II. Utasítások. A függvény.

Bevezetés a programozásba I.

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Géptermi zh-írás forgatókönyve

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Pénzügyi algoritmusok

117. AA Megoldó Alfréd AA 117.

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Java programozási nyelv

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Bevezetés a C++ programozásba

Az első fájlos program

Apple Swift kurzus 3. gyakorlat

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

1. Alapok. Programozás II

Mintavételes szabályozás mikrovezérlő segítségével

BASH script programozás II. Vezérlési szerkezetek

Bevezetés a programozásba I.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Bevezetés a programozásba. 11. Előadás: Esettanulmány

Programozás alapjai II. (1. ea) C++

Programozás alapjai II. (1. ea) C++

Programozási tételek és C++

Programozás C és C++ -ban

Programozási nyelvek JAVA EA+GY 1. gyakolat

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Programozási alapismeretek 3. előadás

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

A programozás alapjai 1 Rekurzió

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Szoftvertechnológia alapjai Java előadások

Szoftvertervezés és -fejlesztés I.

Bevezetés a C++ programozási nyelvbe

INFORMATIKAI ALAPISMERETEK

Programozási alapismeretek 1. előadás

Bevezetés a C++ programozási nyelvbe

A C# PROGRAMOZÁSI NYELV

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Bevezetés a programozásba 2

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Alkalmazott modul: Programozás 2. fejezet. C++ alapismeretek. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

Bevezetés a programozásba I.

Bevezetés a programozásba. 9. Előadás: Rekordok

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozási nyelvek Python

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Pénzügyi algoritmusok

Alkalmazott modul: Programozás. C++ alapismeretek. C++ alapismeretek Történet

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozási nyelvek (ADA)

Pénzügyi algoritmusok

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

PASzSz. Dr. Kotsis Domokos

C programozási nyelv

INFORMATIKA javítókulcs 2016

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

INFORMATIKA tétel 2018

Szelekció. Döntéshozatal

C programozás. 1 óra Bevezetés

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

Programozás II. 4. Dr. Iványi Péter

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

INFORMATIKAI ALAPISMERETEK

Programozás alapjai 9.Gy: Struktúra 2.

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Átírás:

Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, az Algoritmusok és adatszerkezetek c. tárgyban (a közoktatásban elterjedt szokásoknak megfelelően) magyar kulcs-szavú pszeudokódot, illetve (Free) nyelvet. E dokumentum célja megkönnyíteni a Programozási alapismeretek tárgyban megszerzett ismeretek elehető legkönnyebb konvertálását az újabb algoritmikus és kódolási miliőbe. Bár azt hiszem, hogy más programozási szokásokhoz szokottak számára sem lesz fölösleges legalább egyszer átfutni az anyagon. Megjegyzem: alábbiakban teljességre nem törekszem, megelégszek azzal, hogy az egyik nyelv ismerete esetén a másik nyelvben könnyen lehessen a kezdő lépéseket megtenni. Algoritmizálás: struktogram / pszeudokód Értékadás, logikai operátorok, inkrementálás és hasonló operátorok Itt nem a különbözőség, hanem a nyomaték kedvéért sorolom föl őket. Visszatérő jelölés: vált változó; kons konstans; kif kifejezés (azaz formula, képlet) Mi fene Műveleti jel értékadás := értékazonosság =, rendezés <,,, > inkrementálás (növelés x-szel) dekrementálás (csökkentés x-szel) logikai I/O :+x : x És, Vagy, Nem Be: vált Ki: kif Szekvencia utasítás 1 ; utasítás 2 vagy utasítás 1 utasítás 2

Elágazás Ha felt akkor akkor-ág különben hamis-ág Elágazás vége Többirányú elágazás Elágazás felt 1 esetén utasítások 1 felt 2 esetén utasítások 2 egyéb esetben ut Elágazás vége Számlálós ciklus Ciklus cv=k-től v-ig cm Ciklus vége Elölfeltételes ciklus Ciklus amíg felt cm Ciklus vége Hátulfeltételes ciklus Ciklus cm amíg felt Ciklus vége

Finomításdefiníciók Fontos egységesíteni a szóhasználatot: típusdefinícióról beszélünk akkor, amikor egy addig nem létező típusnévhez rendelünk egy memóriába képzési szabályt; típusdeklarációról meg akkor, amikor egy adathoz (akár változóhoz, akár konstanshoz) típust rendelünk, ennek során az adott adathoz a típusnak megfelelő mennyiségű memória rendelődik (vagy a fordítás során rögvest, vagy majd a végrehajtás során). Eljárás EljNév(form.par.): típusdeklarációk (lokális) Eljárás vége. Függvény FvNév(form.par.):FvTíp típusdeklarációk (lokális) FvNév:=kif Függvény vége. Kódolás: / (Free) Programszerkezet Fontos egységesíteni a szóhasználatot: Finomítás alatt saját eljárást, függvényt vagy operátort értünk; Finomításdefinícióról beszélünk, amikor egy finomítás szemantikáját definiáljuk, azaz amikor megadjuk annak működését. #include <iostream> #include <stdlib.h> #include includenév3 Program PrNév; Uses Crt, unitnév2, ; using namespace std; típusdefiníciók típusdeklarációk (programparaméterek) //akár const-tal bevezetett konstans Type típusdefiníciók Var / Const típusdeklarációk (programparaméterek)

finomítás-fejsorok (prototípusok) int main( ) return 0; finomításdefiníciók finomításdefiníciók Var / Const típusdeklarációk (a főprogram lokális adatai) End. Megjegyzések: 1. A érzékeny a kis- és nagybetűkre, a nem (bár a következetesség mindig előnyös). A ban is az azonosítókban sajátos konvenció szerint (értsd: szabályosan ) vegyesen használunk kis- és nagybetűket. (L. később.) 2. A ban is létezik a finomítás-fejsor (szintaxisa: Procedure/Function Finomítás- Név(formális paraméterek); Forward;) és a finomítás-fejsor, ill. -definíció szétválasztása, de ritkán élünk vele. (Sokszor elkerülhetetlen rekurzívan implementált finomítások esetén.) Típusdefiníciók typedef struct típ 1 mező 1 ; típ 2 mező 2 ;; típ; typedef típe típt[db]; //a db konstans már definiálva enum típért 1,ért 2, típ=record mező 1 :típ 1 ; mező 2 :típ 2 ; típt=array [1..db] of típe; //a db konstans már definiálva típ=(ért 1,ért 2,); Megjegyzések: 1. A a tömböket mindig 0-tól kezdve indexeli, ezért volt elegendő a méretparaméter. A beli tömbök indexelése tetszőleges egész-intervallummal megadható. Az egész-intervallum nemcsak 1-gyel kezdődhet (mint a fenti példában)! Sőt az indextípus tetszőleges ún. diszkrét típus lehet. Az 1..db helyett írható akár 0..db-1, sőt általában a..b. Fontos, hogy az index-típusnak fordításkor meghatározottnak kell lennie! (Diszkrét az a típus, amely véges, rendezett értékhalmazzal rendelkezik, és minden értékének a legnagyobb kivételével egyértelmű a rákövetkezője, illetve a legkisebb kivételével egyértelmű a megelőzője van.) 2. A felsorolási típusban előforduló értékek nem egyezhetnek meg semmilyen más azonosítóval (pl. számkonstansok vagy más felsorolási típus konstansainak azonosítójával). 3. A felsorolási típusbeli értékekről szabad (de nem muszáj) tudni, hogy a felsorolás sorrendjében értékük: 0, 1, 4. Természetesen a felhasznált típusoknak már addigra definiáltaknak kell lennie.

Elemi típusok Free Bájthossz short int vagy short unsigned shortint int vagy long int vagy long double bool char string Integer Word LongInt Real Boolean Char String 2 2 4 8 1 1 256 Megjegyzés: Egy String típusú adat 1. jele (ha nem üres a string), akkor esetében a 0 indexű, ban az 1 indexű. Az indexelés a két nyelvben egyformán történik, az s[i] jelenti az s i indexű jelét. Aritmetikai operátorok Free x++; x+=y; x--; x-=y; +, -, * //számok között double / double int / int, int % int //természetes más egész típus esetén is Inc(x); Inc(x,y); Dec(x); Dec(x,y); +, -, * //számok között / //számok között Integer Div Integer, Integer Mod Integer természetes más egész típus esetén is Logikai operátorok Free < <= ==!= >= > &&! < <= = <> >= > and or not Megjegyzés: Ha a logikai kifejezésében több relációi is van, akkor azokat külön-külön zárójelek közé kell zárni. Például: (0<i) and (i<=n). Adatdeklaráció (v. típusdeklaráció) Free típ vált; const típ kons=kif; Var vált:típ; Const kons:típ=kif;

Megjegyzés: A deklarációk egyesíthetők, ha azonos típusúak a deklarációban szereplő adatok. Például: esetén int a,b; ugyanaz, mint int a; int b; ban: Var a,b:integer; ugyanaz, mint Var a:integer; b:integer; vagy Var a:integer; Var b:integer; Komment (Free) //a sorvégi megjegyzés /* megjegyzés akár több soron át */ //a sorvégi megjegyzés (* megjegyzés akár több soron át *) megjegyzés akár több soron át Értékadás Free vált=kif; vált:=kif; Elágazás if (felt) akkor-ág else különben-ág If felt then akkor-ág End else különben-ág Megjegyzés: A felt egy logikai kifejezést jelöl. Az utasítás else-szel bevezetett része elmaradhat.

Többirányú elágazás switch (kif) case ért 1 : ág 1 ; break; case ért 2 : ág 2 ; break; default különben-ág Case kif of ért 1 : ág 1 ; ért 2 : ág 2 ; else különben-ág Megjegyzés: A kif és az ért i -k azonos típusúak. A default/else ág elmaradhat. Számlálós ciklus for (int cv=k; k<=v; ++cv) for (int cv=k/*lokális*/; k>=v; --cv) Var //lokális deklaráció cv:integer; For cv:=k to v do Var //lokális cv:integer; For cv:=k downto v do Elölfeltételes ciklus while (felt) While felt do Hátulfeltételes ciklus do while (felt) Repeat Until not felt;

Finomítás-definíció függvény típ finomításnév(form.param.) return fvért; Function finomításnév(form.param.):típ; Var és/vagy Const finomításnév:=fvért; Finomítás-definíció eljárás (értéknélküli függvény) void finomításnév(form.param.) return fvért; Procedure finomításnév(form.param.):típ; Var / Const finomításnév:=fvért; Finomítás-fejsor (prototípus) típ finomításnév(form.param.); void finomításnév(form.param.); Function finomításnév(form.param.):típ; Forward; Procedure finomításnév(form.param.); Forward; I/O //adatok a sorból: cin >> vált 1 >> vált 2 >> ; //számadatok a sorból: Read(vált 1,vált 2,); //egy adat a sor elejéről a vált-ba: string tmp; cin >> vált; getline(cin,tmp, \n ); //a sor végének eldobása cout << kif; //egy számadat a sor elejéről a vált-ba: Readln(vált); a sor végének automatikus eldobása Write(kif); cout << kif << endl; Writeln(kif); cout << setw(8) << szöveg; Write(szöveg:8);összesen 8 karakternyi cout << setw(8) << setprecision(3) << valós;/*8 széles mezőben, 3 értékes jeggyel*/ Write(valós:8:3);összesen 8 karakternyi, 3 tizedes jeggyel

Megjegyzés: 1. A és a inputja lényegesen eltér egymástól, különösen a nem számtípusú adatok esetén! Erre némileg a fenti táblázat fel is hívja a figyelmet. 2. Figyelem, a setprecision(3) az értékes jegyek számát adja meg, ami korántsem biztos, hogy a tizedeseket jelenti; így a és fenti egymásmellé rendelése nem jelent pontos kódolási szabályt a két nyelv között, inkább csak ötletelés. Fájlkezelés Mindkét programozási nyelvre igaz, hogy a standard I/O egy speciális adathordozón (konzolon) ábrázolt szöveges fájl. (Csak szöveges fájlokról lesz szó!) Így, amit a konzul I/O-ról tudunk, az igaz a megfelelő irányú szöveges fájlra is. Emiatt az alábbiakban csak a specialitásokat ragozzuk: #include <fstream> //inputfájl típusdeklaráció: ifstream if; string fn;//a fájlnevet tartalmazza //az fn nevű fájl megnyitása inputra: if.open(fn.c_str()); //a nyitás sikerességének ellenőrzése: if.is_open() //bool függvény //szám olvasása fájlból vált-ba: if >> vált; //karakter olvasása fájlból vált-ba: if.get(vált);//char típusú a vált //első szó olvasása fájlból vált-ba: if >> vált; //fájlvég-figyelés: if.eof() //bool függvény //fájl lezárása: if.close(); //inputfájl típusdeklaráció: Var if:text; fn:string;//a fájlnevet tartalmazza //az fn nevű fájl megnyitása inputra: Assign(iF,fN); $i-reset(if);$i+ //a nyitás sikerességének ellenőrzése: IOResult=0 //Boolean kifejezés //szám olvasása fájlból vált-ba: Read(iF,vált); //karakter olvasása fájlból vált-ba: Read(iF,vált);//Char típusú a vált //első szó olvasása fájlból vált-ba: ilyen művelet nincs, sajnos, ez bonyolultabban oldandó meg //fájlvég-figyelés: Eof(iF) //Boolean függvény //fájl lezárása: Close(iF); //outputfájl típusdeklaráció: ofstream of; //az fn nevű fájl megnyitása outputra: of.open(fn.c_str()); //szám írása fájlba vált-ból: of << vált << ; //szöveg sor írása fájlba vált-ból: of << vált << endl; //fájl lezárása: of.close(); //outputfájl típusdeklaráció: Var of:text; //az fn nevű fájl megnyitása outputra: Assign(oF,fN); Rewrite(oF); //szám írása fájlba vált-ból: Write(oF,vált, ); //szöveg sor írása fájlba vált-ból: Writeln(oF,vált); //fájl lezárása: Close(oF);