headerphoto

Ú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ů



Design downloaded from Free Templates - your source for free web templates