Úvod do C++
Tento jazyk je nadstavbou programovacího jazyka C. Bjarne Stroustrup jej upravil a obohatil a tak vznikl nový, objektově orientovaný programovací jazyk C++. Základním principem jazyka C je procedurální programování, v jazyce C++ jde především o objektové programování. Není vhodné tyto dva principy kombinovat v jednom programu.
Jazyk C můžeme až na pár výjimek považovat za podmnožinu jazyka C++. Budeme tedy vycházet z toho, že to, co už známe z jazyka C, můžeme (většinou) použít v C++.
Nové prvky v C++
Proměnné můžeme deklarovat kdekoliv v programu (v jazyce C jenom na začátku bloku). Proměnná potom platí jen v té části kódu, kde je deklarována např. jenom v cyklu.
Pro vstup a výstup používáme datové proudy cin a cout. Základní použití je jasné z následujícího příkladu. Více prostoru jim budeme věnovat v další kapitole.
#include <iostream> using namespace std; int main() { int x; cout << "Zadejte cislo: " ; cin >> x; cout << "Druha mocnina: " << x*x << endl; return 0; }
Pro práci s řetězci máme k dispozici třídu string . String není reprezentován jako pole znaků, ale jednotlivé znaky můžeme vybírat použitím [index]. Stringy jsou "nafukovací", lze je bez předeklarování prodlužovat. V programu nesmíme zapomenout "inkludovat" hlavičkový soubor string.
Při vstupu textů pomocí operátoru >>, můžeme načítat jen po bílé znaky. Vhodnější je použití funkce getline(), která má 2 varianty (jako metoda třídy cin nebo jako funkce pro třídu string). Další problémy při načítání řetězců odstraní např. funkce cin.ignore(0xff, '\n') - ekvivalent fflush(stdin).
string textik;
getline(cin, textik); // načte text ze vstupu a uloží do proměnné textik
U řetězců typu string můžeme (na rozdíl od céčkovského pole znaků) používat pro přiřazení operátor =, pro spojování (řetězení) operátor + nebo +=, pro porovnávání relační operátory ==, <, > apod. Navíc je pro ně k dispozici řada funkcí. Konstanty zapsané v uvozovkách lze kombinovat s céčkovskými řetězci i se stringy.
string s1 = "Hello";
string s2 ("world");
string s3 = s1 + ", " + s2 + "!\n"; //řetězec s3 bude "Hello, world!\n"
int delka = s3.size(); //nebo taky s3.length()
int pos1 = s3.find("ll"); // Vrátí pozici začátku podřetězce ll v s3, tj.2
s1 = s1.substr(0,4); // 4 znaky počínaje nultým, tj. "Hell"
s3 = s3.replace(0,5,"Ahoj"); // Nahradit lze i podřetězcem jiné délky
Datový typ bool pro práci s logickými hodnotami, může nabývat hodnotu true (pravda) nebo false (nepravda). Funguje automatická konverze pro celá čísla. Nula je považována za nepravdu, jakákoliv nenulová hodnota za pravdu.
Novinky u funkcí v C++:
- když v C-éčku neuvedeme u funkce typ návratové hodnoty, implicitně se doplní int. V jazyce C++ se automaticky doplní void.
- pro parametry funkce můžeme nastavit implicitní hodnoty, tyto parametry potom u volání funkce nemusíme používat
- můžeme vytvořit a používat několik funkcí se stejným názvem, musí se lišit počtem nebo typem parametrů. Jedná se o tzv. přetěžování funkcí.
- pro parametry můžeme používat reference, jedná se o podobný princip jako u použití ukazatelů