C++ Přednáška 1 Neobjektové rozšíření jazyka Základy vstupu a výstupu Ing. Jiří Kulhánek, kat. 352, VŠB TU Ostrava 2004.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

ÚVOD DO C++ 3 TŘÍDY a objekty - POKRAČOVÁNÍ
Nauka o Zemi Ing. Jan Jelínek, Ph.D. telefon:
Programování v C jazyku - SEMINÁŘ
Osvobozené divadlo.
A1PRG - Programování - seminář Ing. Michal Organizační informace 0 Verze
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Algoritmy I Cvičení č. 1.
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Implementace IS ZMVŠ Třebíč. Návrh Vstupem pro návrh je výsledek analýzy = data, funkce, stavy; odtud se doplní systémové funkce, další data, návrh komunikace,
Tvorba software Konceptuální modely. Konceptuální model (vodopádový) Formulace problému Analýza Programování Testování Užívání.
Algoritmizace Cíl předmětu - naučit se sestavovat algorimy řešení základních problémů a zapisovat je v jazyku Java. Jádrem předmětu jsou data, typy, výrazy.
Výpočetní technika Akademický rok 2011/2012 Letní semestr Novák Petr
Ing. Daniel Konczyna U MARKETING Ing. Daniel Konczyna U
DOK.
Struktury, qsort, mergesort BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií.
Podpora výuky a tvorby ER diagramu ve výukovém systému Barborka Petr Kopka VŠB – TU Ostrava, 2005.
Prostředí pro tvorbu strukturovaných učebních textů Ing. Jiří Přibil Fakulta managementu VŠE Rozvojový grant Ministerstva školství, mládeže a tělovýchovy.
Vypracoval: VELČOVSKÝ Pavel Předmět: Ročníkový projekt Vedoucí práce: Bílek Ondřej.
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
Literatura (jednoduchý keynesiánský model):
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
VYSOKÁ ŠKOLA BÁŇSKÁ – TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ
PB161 Jmenné prostory, I/O proudy PB161 | Jmenné prostory, IO proudy PB161 – Programování v jazyce C++ Objektově Orientované Programování.
13AMP 9. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled ADA ADA Java Java.
PB161 – Programování v jazyce C++ Objektově Orientované Programování
Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.
Základy objektově orientovaného programování Jiří Strach.
Příklady v jazyku C – část 6
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
Jiří Znoj - zno Tvorba konkordace Algoritmy II 3. projekt, 5. zadání Jiří Znoj - zno
PB161 Právo friend, přetěžování operátorů, přetypování PB161 | Friend, operátory PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Vstupy a výstupy znaků a) Terminálový vstup a výstup ( getchar(), putchar() ) Přečtěte znak pomocí systémové funkce getchar() a vypište ho pomocí putchar().
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Dagmar Vítková Obchodní akademie a Střední odborná škola logistická, Opava, příspěvková.
PB161 PB161 – Programování v jazyce C++ Objektově Orientované Programování Šablony, Návrhové principy a (anti-)vzory PB161 | Šablony, Návrhové principy.
Vodohospodářské inženýrství a životní prostředí VIZP
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
MS OFFICE - WORD TEXTOVÉ EDITORY Ing. Petr Hanáček
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
Příklady v jazyku C – část 2
Napište program v C pro výpočet plochy obdélníka se stranami A=3 a B=2. Výsledek vytiskněte s patřičným komentářem na obrazovku formátovým příkazem printf.
OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
doc. RNDr. František STANĚK, Ph.D.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Primitivní počítadlo
C – jak na procedury Mgr. Lenka Švancarová. C – procedury #include int main() { printf("Ahoj\n"); return(0); } #include void pozdrav(void) { printf("Ahoj\n");
doc. RNDr. Zdeněk Botek, CSc.
Příklady v jazyku C – část 1. Výstupy pomocí printf. printf(" Tisk textu \n v apostrofech \n ") ; p=10; printf("%d\n", p) ; /* tisk konstanty */ printf("Tisk.
Příklady v jazyku C – část 8. Napište program, který inicializuje 2-rozměrné pole uživatele (5 řádků, 2 sloupce) a naplní ho hodnotami (první sloupec.
WSDL Jan Růžička Institute of geoinformatics VSB-TU Ostrava 17.listopadu 15, Ostrava-Poruba,
Geografický informační systém jako nástroj pro plánování údržby veřejného osvětlení Zpracovatel projektu: Jiří Kostelníček Vedoucí.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Příklady v jazyku C – část 2
Matematické modelování Přednáška I. DS-ZS2007 Ing. Marek Mihola
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
C – procedury Mgr. Lenka Švancarová.
Výuka databází v tabulkovém procesoru Martin Kubát.
České vysoké učení technické Fakulta elektrotechnická Datové typy, výrazy vstup, výstup Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v1.02.
Visual Basic - programování
Ovladače souboru a funkce glob Přiřazení ovladače souboru – Nelze VSTUP = INPUT – Ale *VSTUP = *INPUT Vše, co se jmenuje INPUT bude přejmenováno na VSTUP.
Počítače a programování 2
Y36PJC Programování v jazyce C/C++
Rekreologie 1 (sylabus)
Inicializace portů mikrokontroléru
Teorie rekreace a výchovy v přírodě
Číslicová technika - realizace logických operátorů -
Transkript prezentace:

C++ Přednáška 1 Neobjektové rozšíření jazyka Základy vstupu a výstupu Ing. Jiří Kulhánek, kat. 352, VŠB TU Ostrava 2004

Doporučená literatura Kačmář, D. Objektově orientované programování a jazyk C++. Ostrava 1998, ISBN Microsoft, MSDN C/C++Language and C++ libraries.,kapitola MSDN. Virius, M. Od C k C++. Kopp Systematicky odlišná od přednášek,ale lze použít.

1.1 Rozdíl mezi C++ a C Typ jazyka se automaticky rozpozná podle přípony souboru –*.C je jazyk C –*.CPP je jazyk C++ Jazyk C++ je nadmnožinou jazyka C, vše z jazyka C je možno využít

1.2 První program v C++ Programy v C++ mohou být : –Totožné jako v C –Velmi podobné jako v C (strukturované) s využitím objektů C++ –Objektové #include void main() { printf("Tisk v C++ pomoci printf\n“); cout << " Tisk v C++ pomoci cout " << endl; }

2. Neobjektové rozšíření C++ Jednořádkové komentáře Konstanty Deklarace proměnných v programu Operátor rozlišení platnosti Inline funkce Reference proměnných Implicitní parametry funkcí Přetížení funkcí Volací konvence Nové zpracování výjimek (pozdější předn.)

2.1 Jednořádkové komentáře C++ podporuje dva druhy komentářů #include // jednořádkový komentář #include /* komentář bez omezení počtu řádků */ void main() { printf("Tisk v C++ pomoci printf\n“); cout << " Tisk v C++ pomoci cout " << endl; }

2.2 Konstanty C++ konstanty: –Proměnné jejichž obsah nelze měnit –Jsou známé již v době překladu –Je znám jejich typ (na rozdíl od #define) void FunkceC() { const int I=10; int pole[I]; } void FunkceC++() { const int I=10; int pole[I]; } #define I 10;// není to proměnná – nemá adresu

2.3 Deklarace proměnných C++ umožňuje deklarovat proměnné přímo před jejich použitím void FunkceC() { int A; A=1; int B; B=A+1; } void FunkceC++() { int A; A=1; int B; B=A+1; }

2.4 Operátor rozlišení platnosti :: Rozlišuje globální a lokální proměnné int A; //A1 void Main() { int A; //A2 ::A = 0; // A1 = 0 A = 2; // A2 = 2 if (A==::A) //porovnavame A2==A1 { int A; //A3 A=1; //A3 = 1 ::A = A+1; // A1 = A3+1 // A2 je zde nedostupne }

2.5.1 Inline funkce Klířové slovo inline v deklaraci funkce Je to doporučení pro kompilátor aby těla funkcí vkládal přímo do kódu U rekurzivních funkcí se tak neděje V C se to řešilo pomocí maker – bez typové kontroly Zvětšuje velikost kompilovaného programu, zvyšuje rychlost programu

2.5.2Inline funkce příklad // makra z jazyka C - nelze krokovat #define SECTI(A,B) A+B // inline funkce C++ lze krokovat inline int Secti(int A,int B) { return A+B; } void main() { cout << Secti(5,7) << endl; // inline funkce cout << SECTI(5,7) << endl; // makro }

2.6.1 Reference proměnných Deklaruje se jako typ &reference Reference je nové pojmenování existující proměnné Umožňuje předávat parametry funkcí a návratové hodnoty odkazem bez ukazatelů Nezabírá místo v paměti Musí být vždy inicializována – reference bez proměnné neexistuje Parametry funkcí typu reference nemohou být naplněny výrazy

2.6.2Definice reference příklad void main() { int A; /* celociselna promenna */ int B; /* jina promenna */ int &refA=A; /* reference na promennou A */ B=1; /* B=1 */ refA = B; /* A,refA = B */ cout << A << endl; /* vystup je 1 */ } void main() { int &refA; // nelze int A; // referenci nelze dodatecne propojovat }

2.6.3 Operátor reference a adresa Operátor & v definici nebo deklaraci proměnných označuje referenci Operátor & ve výrazech označuje adresu void main() { int A,B; int &refA = A; // reference int *pA = &A; // adresa *pA = &B; // ukazatel lze menit, referenci ne }

2.6.4 Předávání parametrů referencí Parametry funkcí lze předávat referencí Reference není ukazatel ! void Inkrementuj(int& refArg) { refArg++; } void main() { int A; Inkrementuj(A); cout << A << endl; } void Inkrementuj(int* pA) { (*pA)++; } void main() { int A; Inkrementuj(&A); cout << A << endl; }

2.6.5 Návratová hodnota referencí statické data const double& PI() { static const double PI = ; return PI; // referenci nesmime vracet lokalni promenne ktere zaniknou // referenci neni dobre vracet nekonstantni staticke promenne } void Tisk(const double& Arg) { cout << Arg << endl; } void main() { Tisk(PI()); }

2.6.6 Návratová hodnota referencí dynamické data struct DATA { int i,j; } DATA& NewData() { DATA *p = new DATA; // zalozime p->i = 1; // upravime p->j = 1; return *P // vratime } void main() { DATA &D = NewData(); cout << D.i << "," << D.j << endl; }

2.6.7 Návratová hodnota referencí opakování argumentu funkce Int& Inkrementuj(int& refArg) { return ++refArg; } void main() { int A; cout << Inkrementuj(A) << endl; }

2.7.1 Implicitní parametry funkcí Nastavují se v deklaraci(definici) funkce Při volání funkce nemusí být zadány Musí to být poslední parametry funkce Pokud má funkce více implicitních parametrů, nelze zadat impl. parametr za jiným impl. parametrm

2.7.2Implicitní parametry funkcí příklad void Inkrementuj(int& ARG,int Posun=1) { ARG = ARG + Posun; } void main() { int I =0; cout << I << endl; // 0 Inkrementuj(I);// pouzit impl. parametr cout << I << endl; // 1 Inkrementuj(I,1); cout << I << endl; // 2 Inkrementuj(I,5); cout << I << endl; // 7 }

2.7.3Implicitní parametry funkcí pořadí parametrů double PID(double vstup,double Kr = 1, double Ti = 9999, double Td=0) { double vysledek; // vysledek =... vypocet pro tento priklad prilis slozity return vysledek; } void main() { double u = 1; cout << PID(u) << " Kr = 1" << endl; cout << PID(u,5) << "Kr = 5" << endl; cout << PID(u,1,9999,0.1) << "Td = 0.1" << endl; // musime zadat i Kr a Ti }

2.8.1 Přetížení funkcí Umožňuje definovat více funkcí stejného jména a různých parametrů Skrývá před programátorem různé implementace funkce pro různé parametry Přetížené funkce se liší podle počtu a typu parametrů, ne podle návr. hodnoty Neimplicitní parametry přetížených funkcí se musí lišit Při zadání jiného typu parametru kompilátor sám zvolí na kterou funkci jej přetypuje

2.8.2Přetížené funkce příklad // makra v C #define TISK(ARG) cout << „Nezname: " << ARG << endl; // přetížené funkce v C++ void Tisk(unsigned int Arg) {cout << "Celé kladné číslo: " << Arg << endl; } void Tisk(int Arg) { cout << "Celé číslo: " << Arg << endl; } void Tisk(double Arg) { cout << "Reálné číslo: " << Arg << endl; } void main() { TISK(1u);Tisk(1u); TISK(2);Tisk(2); TISK(3.0);Tisk(3.0); TISK('4');Tisk('4'); //makro tiskne znak '4', c++ ascii '4' jako integer }

2.8.3Přetížené funkce vs. Implicitní parametry int& Inkrementuj(int& Arg) {cout << "Jeden argument" << endl; return ++Arg); } int& Inkrementuj(int& Arg,int Pocet) {cout << "Dva argumenty" << endl; return Arg=Arg+Pocet; } int& InkremetujImplicit(int& Arg,int Pocet = 1) { cout << "Jeden nebo dva argumenty." << endl; return Arg = Arg + Pocet; } void main() { int A=0; Inkremetuj(A);InkrementujImplicit(A); Inkremetuj(A,2); InkrementujImplicit(A,2); }

2.9 Volací konvence jazyka Při volání funkcí jednotlivé jazyky mají různý způsob vnitřního předání dat Pokud chceme využívat kód napsaný v jiném jazyce (např. dll) musíme jej zavolat odpovídajícím způsobem a naopak Konvence c,c++ je __cdecl Konvence windows funkcí je __stdcall

2.9.2 Volací konvence použití Volací konvence se uvádí v hlavičce funkce void __stdcall Funkce(); Funkce programu které spouští windows mají typ volání __stdcall Dll knihovny pro VisualBasic mají __stdcall

3.1 Základy vstupu a výstupu Inkludujeme knihovnu nebo a using namespace std; #include using namespace std; void main() { cout << "Preferovany zpusob tisku v C++.NET" << endl; } #include void main() { cout << "Starsi pristup, nefunguje v C++.NET" << endl; }

3.2.1 Tisk na obrazovku Používáme objekt cout Operátory << přetížené pro stand. typy Manipulátory endl,flush,dec,oct,hex,right Funkce precision, width, a flags

3.2.2 Tisk textu, čísel #include using namespace std; void main() { cout << "TEXT" << endl; cout << 100 << endl; cout << << endl; cout << hex << 255 << dec << endl; } #include using namespace std; void main() { for (int i = 0; i < ; i++) cout << i << '\r' << flush; }

3.2.3 Zarovnání tisku, des. čísel #include using namespace std; void main() { cout.width(10); cout.precision(4); cout.setf(ios::fixed); cout << right; cout << width(15) << << endl; cout.precision(); cout.unsetf(ios::fixed); }

3.3.1 Vstup z klávesnice Používáme objekt cin Operátory >> přetížené pro stand. typy Manipulátory hex, oct, dec #include using namespace std; void main() { int i; cin >> hex >> i; cout << i << endl; }