PROGRAMOVÁNÍ V C++ C VIČ EN Í
INFORMACE • Michal Brabec • http://www.ksi.mff.cuni.cz/ • http://www.ksi.mff.cuni.cz/~brabec/ •
[email protected] •
[email protected]
PODMÍNKY ZÁPOČTU • Základní podmínky společné všem skupinám • Úspěšné složení zápočtového testu • 1. a 2. pokusy ve zkouškovém období ... 3. pokusy v dubnu • 2-3 hodiny v laboratoři, společně pro všechny skupiny • Vypracování zápočtového programu • Dohoda o tématu - do listopadu • Předvedení cvičícímu do 29.3.2013 • Doladění a odevzdání do 24.5.2013
• Další podmínky udělení zápočtu určuje cvičící • Cvičící může podmínky individuálně upravit, pokud se s ním student na začátku semestru dohodne • Přiměřená účast na cvičeních (alespoň 1/2) • Úspěšné odevzdání domácího úkolu (možná jen nepovinný)
ZÁKLADNÍ TYPY • Vestavěné typy: • Celočíselné – int, long, unsinged, unsigned long • Reálná čísla – float, double • Znaky – char, unsigned char, (wchar_t)
• Složené typy (definované programátorem): • Struktury • Třídy
• Přejmenované typy • Deklarace typedef
PROMĚNNÉ • Syntax proměnné: • datový_typ jméno = počáteční_hodnota; • Typ může být jakýkoliv známý (viditelný) typ • Počáteční hodnota musí patřit do definičního oboru typu (konverze)
• Členské proměnné (membery) • Definují se stejně • Náleží třídě / struktuře • Inicializují se v konstruktoru
FUNKCE A METODY • Syntax funkce: • návratový_typ jméno (parametry) { tělo_ funkce } • Parametry se definují stejně jako proměnné a pracuje se s nimi stejně jako s lokálními proměnnými • Tělo funkce se skládá z definicí proměnných, volání funkcí, přiřazení a podmíněných skoků (cykly a ‘ify’)
• Syntax funkce main • int main() {} • int main(int argc, char** argv) {} • void main() {} (Visual studio)
• Návratová hodnota je 0 (vše v pořádku), jinak kód chyby (!= 0)
VKLÁDÁNÍ DEKLARACÍ • Typy a funkce jsou deklarovány v samostatných souborech • Každý soubor by měl obsahovat jen jeden typ, nebo málo příbuzné typy, ale jazyk nezakazuje jiná “řešení” • Typy a funkce deklarované v nějakém jiném souboru musí být vloženy tam kde se mají použít • Vložení deklarací ze standardní knihovny • #include
• Vložení vlastních deklarací • #include “header.h”
VSTUP A VÝSTUP • • • •
Vstup a výstup v C++ jde přes “proudy” Proudy jsou součástí standardní knihovny Proudy standardizují práci s konzolí a soubory (a sítí) Starají se o optimalizaci výkonu (bufferování, binární soubory) • Před použitím je nutné vložit deklaraci • #include • Ostatní typy proudů jsou jiných souborech
• Všechny třídy standardní knihovny jsou ve jmenném prostoru std
HELLO WORLD • Nejjednodušší program, který ale obsahuje mnohé důležité konstrukce nutné pro další práci • Všechny použité třídy ze standardní knihovny jsou plně kvalifikované, zabraňuje to konfliktům a je to přehledné
#include void main() { std::cout << "Hello world!" << std::endl; getchar(); // forces the program to wait for user input at the end; }
PARAMETRY PROGRAMU • Parametry jsou předány do funkce main v jejích parametrech • Parametry je možné zadat z konzole, nebo přes zástupce • Při vývoji programu se parametry zadávají přes Visual Studio • int argc - První argument obsahuje počet předaných parametrů • char** argv - Parametry jsou předány jako pole textových řetězců
PARAMETRY PŘÍKLAD • >…\program.exe Hello world • Parametry funkce main budou obsahovat: • argc: 3 • argv: • “…\program.exe” • “Hello” • “World”
• První parametr obsahuje jméno programu (jeho spustitelnému souboru), ale to není standardem přesně specifikováno a tento parametr může obsahovat i něco jiného
HELLO WORLD REVISITED • Druhá verze prvního programu, tentokrát vypíše počet parametrů a pak obsah druhého parametru (všech parametrů) • Důležitá je kontrola počtu parametrů !
#include int main(int argc, char** argv) { // argument[0] is the application file name (+path) std::cout << argc << std::endl; if(argc > 1) std::cout << argv[1] << std::endl; // writes only a single word getchar(); return 0; }
LOKÁLNÍ PROMĚNNÉ • Proměnné definované ve funkci • Jsou použitelné jen ve funkci a existují jen když funkce běží • Inicializují se na místě #include int main(int argc, char** argv) { // argument[0] is the application file name (+path) std::cout << argc << std::endl;
int count = argc; if(count > 1) std::cout << argv[1] << std::endl; // writes only a single word getchar(); return 0; }
TŘÍDA
class
jméno
{ private: member
<= proměnná
public: metoda };
<= funkce