NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 1 - Úvod do jazyka C++

Vítejte u první lekce on-line kurzu o programování v jazyce C++. Budeme se učit postupně, od úplných začátků až po složité konstrukce, objektové modely, ukazatele a např. práci se soubory. S trochou trpělivosti a vytrvalosti se z tebe tak stane dobrý programátor.

Na úplný úvod je vhodné zmínit, že jazyk C++ je velmi komplexní a pravděpodobně vůbec jeden z nejtěžších jazyků na naučení. Kombinuje vysokou rychlost jazyka C s novým objektově orientovaným přístupem moderních jazyků jako např. Java, C# .NET nebo PHP. Je velmi dobrou volbou pro aplikace, které vyžadují vysoký výkon (např. webové prohlížeče nebo AAA hry) nebo pro specifické systémové knihovny, např. práci se zvukem nebo videem. Pokud neplánujete vyvíjet právě tyto náročné aplikace, bude pravděpodobně rozumnější uchýlit se raději k nějakému z modernějších jazyků, zmíněných výše. Pokud je vyvíjet plánujete, jste na cestě stát se opravdovým profíkem v oboru, i když to bude poměrně těžká práce.

Abychom plně porozuměli jazyku C++, ohlédněme se do minulosti na to, jak se programovací jazyky vyvíjely. Bude pro nás totiž důležité pochopit, jak C++ pracuje.

Vývoj programovacích jazyků

1. generace jazyků - Strojový kód

Procesor počítače umí vykonávat jen omezené množství jednoduchých instrukcí, které jsou uloženy jako sekvence bitů, jsou to tedy čísla. Ta se mu obvykle zadávají v hexadecimální (šestnáctkové) soustavě. Instrukce jsou tak elementární, že umožňují pouze např. sčítání adres nebo skoky mezi instrukcemi. Nelze např. jednoduše sečíst dvě čísla, musíme se na čísla dívat jako na adresy v paměti a takové sečtení čísel zabere několik instrukcí. Program sčítající dvě čísla by vypadal např. takto:

2104
1105
3106
7001
0053
FFFE
0000

Instrukce se procesoru předloží v binární podobě. Takovýto kód je samozřejmě extrémně nečitelný a závisí na instrukční sadě daného CPU. Určitě v tomto jazyce nebude jednoduché tvořit nějaké programy, bohužel každý program musí být nakonec do tohoto jazyka přeložen, aby mohl být na procesoru počítače spuštěn.

Strojový kód - Základní konstrukce jazyka C++

2. generace jazyků - Assembler

Assembler (zkráceně ASM) není o nic jednodušší, než strojový kód, ale je lidsky čitelný. Jedná se o strojový kód, ve kterém mají instrukce slovní označení (kód), čili si člověk nemusí pamatovat čísla. Kódy instrukcí se poté přeloží na výše uvedený strojový kód. Stejný program by v ASM vypadal takto:

ORG 100
LDA A
ADD B
STA C
HLT
DEC 83
DEC –2
DEC 0
END

Vidíme, že je to poněkud lidštější, ale stále nezasvěcení lidé vůbec netuší, jak program funguje (včetně mne).

3. generace jazyků

Jazyky v třetí generaci konečne nabízí uživateli určitou abstrakci nad tím, jak program vidí počítač, zaměřují se na to, jak program vidí člověk. Naše čísla jsou vnímána již jako proměnné, zdrojový kód připomíná matematický zápis.

Sečtení dvou čísel by v jazyce C vypadalo takto:

int main(void)
{
    int a, b, c;
    a = 83;
    b = -2;
    c = a + b;
    return 0;
}

Všichni asi tušíme, co program dělá, sečte čísla 83 a -2 a výsledek uloží do proměnné c. U všech jazyků třetí generace je samozřejmě výhodou vysoká čitelnost. Určitě si dokážete představit, jakou revoluci v programování jazyk C způsobil, i když nebyl zdaleka prvním jazykem tohoto typu.

Céčko navrhl Dennis Ritchie, tvůrce operačního systému UNIX, v 70. letech 20. století. Právě celý UNIXový kernel je v céčku naprogramovaný, což pravděpodobně stojí za jeho velkým rozšířením a také poukazuje na extrémní výkonnost tohoto jazyka. C++ staví na jazyce C (příkaz ++ vykoná v jazyce C zvýšení hodnoty o 1, název tedy označuje něco jako lepší céčko).

Kompilované jazyky

Kompilované (neřízené) jazyky mají svůj zdrojový kód v jazyce, kterému lidé dobře rozumí. Tento zdrojový kód se samozřejmě musí přeložit do strojového kódu, aby ho bylo možné na procesoru spustit. Tento překlad zajišťuje překladač (kompiler), který přeloží najednou celý program do stroj. kódu.

Kompiler - Základní konstrukce jazyka C++

Objektově orientované programování

Objektově orientované programování (OOP) je klíčová vlastnost jazyka C++, kterou k C přidává. C++ je vlastně jazyk C s další syntaxí (příkazy) navíc. To umožňuje C++ kompilovat všechny programy v C a také používat céčkové knihovny. OOP umožňuje vytvářet i komplexní aplikace extrémně čitelné a udržovatelné pomocí rozdělení na komunikující objekty. Tyto vlastnosti dělají z C++ rychlý a moderní jazyk. Bohužel je ale stále považován zároveň za těžký jazyk a používá se zejména pro specifické účely.

Ten samý program pro sečtení čísel 83 a -2 by s využitím OOP vypadal v C++ asi takto:

#include <iostream>
using namespace std;

class Kalkulacka
{
public:
    int secti(int a, int b);
};

int Kalkulacka::secti(int a, int b)
{
    return a + b;
}

int main(void)
{
    Kalkulacka kalkulacka;
    int c = kalkulacka.secti(83, -2);
    cout << "Výsledek:" << c;
    cin.get();
    return 0;
}

Všimněte si, že se již nejedená pouze o čistý algoritmus, ale přidáváme další vrstvu abstrakce, kterou je volání funkcí na objektu kalkulačka. Samozřejmě, že to zde nedává pro tak jednoduchou úlohu, jako je sečtení 2 čísel, příliš velký smysl. Komplexní algoritmy jsou takto však několikanásobně čitelnější. V základech C++ OOP zanedbáme a budeme se soustředit hlavně na základní syntaxi C++. OOP je potom detailně věnován samostatný navazující kurz.

Garbage Collector

Co C++ postrádá je tzv. Garbage Collector, který v moderních jazycích automaticky uvolňuje paměť, kterou náš program využívá. C++ nic takového neposkytuje, což jej dělá rychlejší, ale také mnohem nebezpečnější, protože úklid paměti zbude na programátorovi. Toto je pravděpodobně největší odlišnost C++ při porovnání s moderními programovacími jazyky a jedná se o výhodu a zároveň nevýhodu. Získáváme rychlost, která je vykoupena složitějším kódem.

Nyní jsme tedy seznámeni s tím, co nás čeká.

V příští lekci, Visual Studio a první konzolová aplikace v C++, si nainstalujeme všechny potřebné nástroje a vytvoříme svůj první program.


 

Všechny články v sekci
Základní konstrukce jazyka C++
Přeskočit článek
(nedoporučujeme)
Visual Studio a první konzolová aplikace v C++
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
468 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity