1. diel - Úvod do jazyka C ++
Vitajte u prvej lekcie on-line kurzu o programovaní v jazyku C ++. Budeme sa učiť postupne, od úplných začiatkov až po zložité konštrukcie, objektové modely, ukazovatele a napr. Prácu so súbormi. S trochou trpezlivosti a vytrvalosti sa z teba tak stane dobrý programátor.
Na úplný úvod je vhodné spomenúť, že jazyk C ++ je veľmi komplexná a pravdepodobne vôbec jeden z najťažších jazykov na naučenie. Kombinuje vysokú rýchlosť jazyka C s novým objektovo orientovaným prístupom moderných jazykov ako napr. Java, C # .NET alebo PHP. Je veľmi dobrou voľbou pre aplikácie, ktoré vyžadujú vysoký výkon (napr. Webové prehliadače alebo AAA hry) alebo pre špecifické systémové knižnice, napr. Prácu so zvukom alebo videom. Ak neplánujete vyvíjať práve tieto náročné aplikácie, bude pravdepodobne rozumnejšie uchýliť sa radšej k nejakému z modernejších jazykov, spomenutých vyššie. Ak je vyvíjať plánujete, ste na ceste stať sa skutočným profíkom v odbore, aj keď to bude pomerne ťažká práca.
Aby sme plne porozumeli jazyku C ++, obzrie sa do minulosti na to, ako sa programovacie jazyky vyvíjali. Bude pre nás totiž dôležité pochopiť, ako C ++ pracuje.
Vývoj programovacích jazykov
1. generácie jazykov - Strojový kód
Procesor počítača vie vykonávať len obmedzené množstvo jednoduchých inštrukcií, ktoré sú uložené ako sekvencie bitov, sú to teda čísla. Tá sa mu zvyčajne zadávajú v hexadecimálne (šestnástkovej) sústave. Inštrukcie sú tak elementárne, že umožňujú iba napr. Sčítanie adries alebo skoky medzi inštrukciami. Nemožno napr. Jednoducho sčítať dve čísla, musíme sa na čísla pozerať ako na adresy v pamäti a také sčítaní čísel zaberie niekoľko inštrukcií. Program sčítající dve čísla by vyzeral napr. Takto:
2104 1105 3106 7001 0053 FFFE 0000
Inštrukcie sa procesora predloží v binárnej podobe. Takýto kód je samozrejme extrémne nečitateľný a závisí na inštrukčnú sade daného CPU. Určite v tomto jazyku nebude jednoduché tvoriť nejaké programy, bohužiaľ každý program musí byť nakoniec do tohto jazyka preložený, aby mohol byť na procesore počítača spustený.
2. generácia jazykov - Assembler
Assembler (skrátene ASM) nie je o nič jednoduchšie, než strojový kód, ale je ľudsky čitateľný. Jedná sa o strojový kód, v ktorom majú inštrukcie slovné označenie (kód), čiže si človek nemusí pamätať čísla. Kódy inštrukcií sa potom preloží na vyššie uvedený strojový kód. Rovnaký program by v ASM vyzeral takto:
ORG 100 LDA A ADD B STA C HLT DEC 83 DEC –2 DEC 0 END
Vidíme, že je to trochu ľudskejší, ale stále nezainteresovaní ľudia vôbec netušia, ako program funguje (vrátane mňa).
3. generácie jazykov
Jazyky v tretej generácii konečne ponúka užívateľovi určitú abstrakciu nad tým, ako program vidí počítač, zameriavajú sa na to, ako program vidí človek. Naše čísla sú vnímaná už ako premenné, zdrojový kód pripomína matematický zápis.
Sčítaní dvoch čísel by v jazyku C vyzeralo takto:
int main(void) { int a, b, c; a = 83; b = -2; c = a + b; return 0; }
Všetci asi tušíme, čo program robí, spočíta čísla 83
a
-2
a výsledok uloží do premennej c
. U všetkých
jazykov tretej generácie je samozrejme výhodou vysoká čitateľnosť. Určite
si dokážete predstaviť, akú revolúciu v programovaní jazyk C spôsobil, aj
keď nebol zďaleka prvým jazykom tohto typu.
Céčko navrhol Dennis Ritchie, tvorca operačného systému UNIX, v 70.
rokoch 20. storočia. Práve celý UNIXový kernel je v céčku naprogramovaný,
čo pravdepodobne stojí za jeho veľkým rozšírením a tiež poukazuje na
extrémne výkonnosť tohto jazyka. C ++ stavia na jazyku C (príkaz
++
vykoná v jazyku C zvýšenie hodnoty o 1
, názov
teda označuje niečo ako lepšia céčko).
Kompilované jazyky
Kompilované (neriadené) jazyky majú svoj zdrojový kód v jazyku, ktorému ľudia dobre rozumie. Tento zdrojový kód sa samozrejme musí preložiť do strojového kódu, aby ho bolo možné na procesore spustiť. Tento preklad zaisťuje prekladač (kompiler), ktorý preloží naraz celý program do stroj. kódu.
Objektovo orientované programovanie
Objektovo orientované programovanie (OOP) je kľúčová vlastnosť jazyka C ++, ktorú k C pridáva. C ++ je vlastne jazyk C s ďalšou syntaxou (príkazy) navyše. To umožňuje C ++ kompilovať všetky programy v C a tiež používať céčkové knižnice. OOP umožňuje vytvárať aj komplexné aplikácie extrémne čitateľné a udržiavateľné pomocou rozdelenia na komunikujúce objekty. Tieto vlastnosti robia z C ++ rýchly a moderný jazyk. Bohužiaľ je ale stále považovaný zároveň za ťažký jazyk a používa sa najmä pre špecifické účely.
Ten istý program pre sčítaní čísel 83
a -2
by
s využitím OOP vyzeral 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ýsledok:" << c; cin.get(); return 0; }
Všimnite si, že sa už Nejde len o čistý algoritmus, ale pridávame ďalšiu vrstvu abstrakcie, ktorú je volanie funkcií na objekte kalkulačka. Samozrejme, že to tu nedáva pre tak jednoduchú úlohu, ako je sčítaní 2 čísiel, príliš veľký zmysel. Komplexné algoritmy sú takto však niekoľkonásobne čitateľnejší. V základoch C ++ OOP zanedbáme a budeme sa sústrediť hlavne na základnej syntax C ++. OOP je potom detailne venovaný samostatný nadväzujúci kurz.
Garbage Collector
Čo C ++ postráda je tzv. Garbage Collector
, ktorý v
moderných jazykoch automaticky uvoľňuje pamäť, ktorú náš program
využíva. C ++ nič také neposkytuje, čo ho robí rýchlejšie, ale aj oveľa
nebezpečnejší, pretože upratovanie pamäti zostane na programátorovi. Toto
je pravdepodobne najväčšia odlišnosť C ++ pri porovnaní s modernými
programovacími jazykmi a jedná sa o výhodu a zároveň nevýhodu. Získavame
rýchlosť, ktorá je vykúpená zložitejším kódom.
Teraz sme teda oboznámení s tým, čo nás čaká. V budúcej lekcii, Visual Studio a prvý konzolová aplikácie v C ++ , si nainštalujeme všetky potrebné nástroje a vytvoríme svoj prvý program.