C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Algoritmusok.
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
A C nyelv utasításai. Kifejezés+ ; Utasítás printf("Hello")printf("Hello"); a=b+ca=b+c; fuggveny(a,b)fuggveny(a,b); Blokkok: több utasítás egymás után,
3. előadás (2005. március 1.) Utasítások, tömbök
JavaScript.
Programozás alapjai.
Turbo Pascal Változók.
Bevezetés a Java programozásba
Programozás II. 3. Gyakorlat C++ alapok.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
Programozás I. Horváth Ernő.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
PHP Webprogramozás alapjai
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
Vizuális és web programozás II.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás C# -ban Elágazások.
Programozás Az adatokról C# -ban.
C nyelv utasításai.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Karakterláncok Páll Boglárka.
Ismétlés A pascal program szerkezete: program programnev; Programfej
Programozási nyelvek, Pascal
Rendezések és szövegkezelő függvények
Operátorok Értékadások
Készítette: Csíki Gyula
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Algoritmusok.
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Algoritmus szerkezetek
Java programozási nyelv Vezérlési szerkezetek
Algoritmusok.
Objektum orientált programozás
Objektum orientált programozás
Egyágú elágazás Szintaxis: if (feltétel)
A Visual Basic nyelvi elemei
Operátorok Vezérlési szerkezetek Gyakorlás
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Excel programozás (makró)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Script nyelvek előadás
Script nyelvek előadás
Informatikai gyakorlatok 11. évfolyam
Kifejezések C#-ban.
Gépészeti informatika (BMEGEMIBXGI)
Script nyelvek előadás
Excel programozás (makró)
Algoritmizálás.
Programozás C# -ban Elágazások.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A CLIPS keretrendszer
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Változók.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek Be- és kimenet Adatstruktúrák Függvények Main függvény

Alapvető típusok Az adatoknak típusuk van, így védekezik a rendszer például az ellen a hiba ellen, hogy a programozó számot próbáljon összeadni egy szöveggel Ha két típus egymásba alakítható (például egész és valós szám csonkolással), akkor explicit vagy implicit konverzió lehetséges A következő típusok többsége beépített típusa a C++ nyelvnek

Változók deklarálása Minden általunk használt változót az első használata előtt deklarálnunk kell ( és ezt csak egyszer tehetjük meg) Deklaráció: „típusnév változónév;” Speciálisan a deklarációban adhatunk neki egy kezdőértéket is, de ez csakis konstans lehet „int i=4;”

Egész számok ( int ) Egész számok 4 bájton ábrázolva Pl: „int x=56;” Műveletek: +,-,* / - eredmény mindig egész % - maradék képzése (mod) Relációk: ==, !=, <=, >=

Valós számok ( float ) Pl. „float f=13.766;” Műveletek: Relációk: +,-,*,/ Relációk: A szokásosak...

Logikai értékek ( bool ) Változók és konstansok, amik igazak és hamisak lehetnek. Pl. „bool L=true; L=false;” Műveletek: ==,!= ! – tagadás pl. „!L” && - és pl. „L1&&L2” || - vagy pl. „L1||L2”

Karakterek ( char ) ASCII-es karakterek, konvertálható integerré (0..255 lehet az értéke) Pl. „char c=‘A’;” Relációk: ==, !=

Karakterláncok ( string ) Régen (C-ben) „char*”-gal kezelték. Pl: „string str=‘’alma‘’;” Használatához valamelyik őt használó fejállományt is includolni kell (pl. iostream) Műveletek: str.size() – az str-ben tárolt szöveg hossza str1+str2 – a két string összefűzése str[i] – a zárójelek közé írva egy i egészet, a szöveg i-edik karakterét adja vissza

Stringek2 str.c_str() – az str-nek megfelelő char* értéket adja vissza str.substr(i,j) – str i-edik poziciójától j db karakter alkotta szöveg

Elemi utasítások A C++-ban minden utasítást „;” zár Értékadás: „változó = érték;” Pl. „x = 0; c = ‘A’;” Spec: „x = y = 5;” <-> „x=5; y=5;” „x++;”, „++x;”, „x--;”, „--x;” (növelés, illetve csökkentés eggyel) A különbség a visszatérési értékükben van...

Elemi utasítások 2 Program leállítása: „exit(szám);”, ahol a szám egy nemnegatív egész és 0, ha nem volt hiba >0, ha volt hiba és ekkor a szám a hiba kódja Megjegyzések: C++ stílusú: „// megjegyzés” -> az adott sor végéig tart C stílusú: „/*megjegyzés...Akár több sor */”

Logikai feltételek Bármilyen egyszerű vagy összetett kifejezés, ami bool-t ad vissza bool típusú változók bool visszatérési értékű függvények a relációk segítségével felépített kifejezések Pl. (4==2*2)&&(!L||ps(3)) Ahol: bool ps(int i) {return i%2==0;}

Vezérlési szerkezetek Szekvencia: parancsok egymásutáni végrehajtása... Pl. „ x = 5; y = x/2; x = y+1;”

Elágazás Közönséges elágazás: if(feltétel) { ág1 } else ág2 Egyszerűbb eset (ha az ágak csak egy utasításból állnak): if(feltétel) ut1; else ut2;

Többágú elágazás Több feltétel, a legelső utasításait hajtjuk végre, ami teljesül: if(feltétel1) { ág1 } else if(feltétel2) { ág2 } ... else { utolsó_ág }

Adott változó értéke szerinti elágazás Ha egy adott változó értékei szerint akarunk elágaztatni a következőt is használhatjuk: switch(v) { case konstans1: utasítások... break; case konstans2: utasítások... break; ... default: utasítások... break; }

Ciklus A ciklus egy speciális szerkezet, ami egy adott utasítás sorozatot addig hajt végre, amíg egy adott feltétel teljesül Az utasítás sorozatot ilyenkor a ciklus magjának nevezzük

While-ciklus Ez egy előltesztelős ciklus, azaz minden lépésben ellenőrzi a feltételt, ha az igaz, akkor végrehajtja a ciklusmagot, ha pedig hamis, akkor a ciklus befejeződik és a ciklus utáni utasítások következnek. while(feltétel) { utasítások sorozata... }

For-ciklus A következő ciklus egyszerűbben is felírható a for utasítás segítségével: utasítás1; while(feltétel) { mag.. utasítás2; } for(utasítás1; feltétel; utasítás2) mag

Egyszerű példa a for használatára Írjuk ki az egész számokat 0-tól 100-ig! for(int i=0; i<101; i++) { cout << i << endl; }

Do-while ciklus Ez a hátultesztelős ciklus do{ mag... }while(feltétel);

A do-while ciklus egyik hasznos alkalmazása char c; do{ //programunk... cout << ” Futtassuk újra?(I/N) ”; cin >> c; }while(c!=‘n’&&c!=‘N’);

Be- és kimenetkezelés Szabványos be- és kimenet kezelése (billentyűzet, illetve képernyő): #include <iostream> //ez kell using namespace std; //a fájl elejére cout << kifejezés1 << kif2 << endl; //kiírás+soremelés cin >> változó1 >> változó2; //beolvasás cout << ”\n”; //a \n a soremelésnek megfelelő karakter

Bemenet-Kimenet példa #include <iostream> using namespace std; void main() { int n; cout << ”Kérek egy egész számot! ”; cin >> n; cout << ”A(z) ” << n << ” szám négyzete: ” << n*n << endl; }

Karakterláncok beolvasása A << operátorral például az üres string nem olvasható be Másik módszer erre: getline(cin,str); Megjegyzés: a puffert esetleg üríteni kell...

Egyszerű adatstruktúrák Néhány egyszerűbb adatstruktúra: tömb: fix dimenziójú vektor, az indextartomány: 0,1,...,méret-1 struct: különböző adatmezőkből álló rekordtípus

Tömbök használata Tömb típusú változó deklarálása: típus változónév[méret]; Tömb adott indexű elemének elérése: változónév[index] Ezzel a módszerrel csak konstans méretű tömbök hozhatóak létre (un. Statikus foglalású tömbök)

Példa a tömbök használatára 8 dimenziós vektor hosszának kiszámítása: //így is lehet értéket adni, nem muszáj indexenként //de csak és kizárólag deklaráláskor: float v[]={3,6,7,1,0,0,9,12}; float f=0; for(int i=0; i<8; i++) f=f+(v[i]*v[i]); f=sqrt(f); //#include <math.h> kell hozzá

Struct A struct kulcsszó segítségével létrehozhatunk egy új típust (mielőtt ilyen típusú változót létrehoznánk, a típust is meg kell adni) Módja: struct Típusnév { típus1 mezőnév1 //mező megadása ... }; Változó: Típusnév változónév; Mezők elérése: változónév.mezőnév

Példa a struct használatára Hallgató típus megadása: struct Hallgato{ int id; char eha[7]; string vnev; string knev; }; Hallgato h; h.id=123; h.eha=”aaabbbb”; h.vnev=”Kiss”; h.knev=”Pisti”; cout << h.vnev << ” ” << h.knev << endl;

Függvényhívások Függvény deklarálása és definiálása: A deklarációnak meg kell előznie az első felhasználást „void myFuggveny();” Definiálás: „void myFuggveny() { //utasítások }” Deklaráció és definiálás együtt csak ha a deklaráció megelőzi a definiálást A definiálás önmagában is deklaráció értékű.

Függvény visszatérési értéke A függvénynek lehet visszatérési értéke Ennek típusa van és ezt is fel kell tüntetni a deklaráláskor/definiáláskor a neve előtt void = nincs visszatérési érték A return utasítással lehet visszatérési értéket adni, ekkor a függvény utasításainak végrehajtása meg is áll „int Nulla() { return 0; }”

Függvény paraméterei Definiáláskor/deklaráláskor fel kell sorolni a függvény paramétereit, ha vannak, a név után zárójelek között. A paramétereknek nevet és típust kell adni és ekkor a függvény törzsében ilyen néven használhatjuk őket. „int Osszeg(int a, int b) { return a+b; }”

Paraméterfajták A paraméterek lehetnek érték- és címszerintiek Értékszerinti paraméterátadás esetén létrejön egy új változó és ez megkapja kezdőértékül a bemenő értéket void f(int a,....); Címszerinti átadás esetén az aktuális paraméternek balértéknek kell lennie (változó) és ekkor ennek a címe adódik át (következmény: a változó értékét megváltoztathatja a függvény void f(int& a,....);

Függvény meghívása A függvény a nevével és az aktuális paraméterek megadásával hívható meg Pl. int i; i=Osszeg(Nulla(),1); myFuggveny();

Megjegyzések void függvény esetében a „return;” utasítással is vissza lehet térni A függvényeket a nevük és a paramétereik száma+típusuk sorrendje (nevük és a visszatérési érték típusa nem számít) Pl: int f(int a, int b); int f(int c);

Megjegyzés2 Tömbök mint paraméterek: void fv(tipus t[][20]){... t[i][j] ... } void fv(tipus** &t) {... t[i][j] ... }

Egy egyszerű program szerkezete #include <iostream> using namespace std; //fv deklarációk int main(int argc, char* argv[]) { //program return 0; } //fv definíciók

Main függvény Kitüntetett függvény, ő indul el a program futtatásakor. Csak egy lehet belőle... Visszatérési értéke: void/int Paraméterek: nincsenek vagy az alábbi kettő

Programparaméterek argc -> a parancssori paraméterek száma argv -> a parancssori paraméterek tömbje, elemei char* típusúak Az első paraméter mindig a futtatási név pl. „C:\Dev-Cpp\bevinfo1\cpp1.exe”

Ami még hátra van... Szöveges fájlok használata Programozási tételek implementálása

Egyéb DevC++ ingyenes fordító http://www.bloodshed.net/dev/devcpp.html (itt az elsőt kell letölteni, a többi a fordító forráskódja...) A letöltött fájl egy setup exe lesz, ezt futtatva telepítjük a programot... használat: Project: Console Application (new projektnél ezt kell keresni) Parancssori fordítás linux alatt 1. Megírjuk a forrásfájlt -> elso.cpp 2. „g++ elso.cpp –o proba.exe” ekkor az elso.cpp-ből fordul egy proba.exe nevű fájl, ami már futtatható is

Gyakorló Feladatok Soroljuk fel az 1 és 100 közötti négyzetszámokat! Soroljuk fel az 1 és 10000 közötti 17-tel vagy 19-cel osztható számokat (egyetlen ciklust használva csak) Készítsünk egy programot, ami bekér a billentyűzetről egy n egész számot. Ha n<=0 akkor küldjünk hibaüzenetet és termináljunk, különben számoljuk meg, hogy 0 és n között hány olyan szám van, ami 3-at ad maradékul 7-tel osztva! Készítsünk egy struct típust, ami a 3 dimenziós tér pontjainak koordinátáit(x,y,z valósak) és címkéit(tetszőleges string) tartja számon, majd hozzunk létre egy ilyen változót és tegyük bele a P(0.5;1;3.5) pontot. Ezután hozzunk létre még egy ilyen változót és annak tartalmát kérjük be a billentyűzetről. Ezután számoljuk ki a két pont távolságának a négyzetét! ( d(P1,P2)^2=(x1-x2)^2+(y1-y2)^2+(z1-z2)^2 )