Akce! Dobij si body, napiš nám do zpráv "Přes léto se to naučím!" a dobijeme ti ještě navíc 50% z této částky! Sleva na výuku platí do 22.6.2018.

Lekce 1 - Úvod do jazyka C++

C a C++ C++ Základní konstrukce C++ Úvod do jazyka C++

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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

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

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.


 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
8 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity (5)

 

 

Komentáře

Avatar
Jiří Sedláček:20.2.2017 16:08

Pěkné :) Co ten název funkce? add vs secti

 
Odpovědět 20.2.2017 16:08
Avatar
Odpovídá na Jiří Sedláček
Erik Šťastný:21.2.2017 9:20

Hlavně je tam chyba v závorkách :)

Metoda

secti

není vůbec vevnitř třídy :)

Editováno 21.2.2017 9:21
 
Odpovědět 21.2.2017 9:20
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Erik Šťastný
David Čápka:21.2.2017 12:11

To není chyba, v C++ se třídy tak píší.

Odpovědět  +1 21.2.2017 12:11
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Jiří Sedláček
David Čápka:21.2.2017 12:12

Díky, má tam být samozřejmě česky secti, opraveno :)

Odpovědět 21.2.2017 12:12
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
Erik Šťastný:21.2.2017 12:17

Tak jsem z toho jelen, před pár hodinama když jsem to zkopíroval do VS, tak jsem tam měl error a tu závorku jsem posouval teďka už ne a jede to. Jsem to musel předtím asi nějak nepochopitelně zkopírovat jinak ... pardon.

 
Odpovědět 21.2.2017 12:17
Avatar
Odpovídá na David Čápka
Erik Šťastný:21.2.2017 12:21

No jasně jsme doma, ten rozdílný název metody... já si toho vůbec nevšiml a proto jsem to musel odzávorkovat aby to fungovalo ... :-O bože jsem pako :D...

 
Odpovědět 21.2.2017 12:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.