Začínáme s C++, historie a filozofie tohoto jazyka, mechanizmus vytváření programu, jak a s čím pracovat, standardy a přenositelnost…
Jazyk C++, který je jakousi nástavbou jazyka C a s podporou OOP (objektově orientovaného programování) se stal důležitým jazykem 20. století a jeho důležitot pokračuje.
C++ oproti C
Jazyk C přináší do jazyka C++ tradici efektivity, ucelený, rychlý a přenositelný jazyk. C++ spojuje tři oddělené programovací tradice: tradici procedurálního jazyka reprezentovanou C, tradici objektově orientovaného jazyka reprezentovanou rozšířením C o třídy C++ a programování pomocí předloh podporované šablonami jazyka C++. Pokud neznáte jazyk C - základní typy, operátory, řídící struktury, syntaktická pravidla, nevadí - naučíte se zde. Znáte-li C, jste připraveni se učit C++. Není to však naučení několika klíčových slov a konstrukcí. Přechod z C na C++ vyžaduje asi tolik úsilí, jako naučení samotného C. Pokud tedy přecházíte z C na C++, musíte se odnaučit některým programovým zvyklostem. Tento kurz tedy nepředpokládá jakoukoliv znalost jakéhokoliv programovacího jazyka.
Historie jazyka
Mnozí si pamatují rychlý vzestup výpočetní techniky, kdy jsme přešli z děrných štítků na dnešní technologie. Takto se vyvíjely i jazyky, ne tak drasticky, ale změny byly důležité. V 70. letech jazyky C a Pascal pomohly zavést období strukturovaného programování, základní principy, které přinesly jistý řád a kázeň do oblasti, která silně potřebovala tyto vlastnosti. Kromě prostředků pro strukturované programování, jazyk C produkoval i kompaktní rychle běžící programy spolu se schopností adresovat hardwarové záležitosti, jako jsou řídící komunikační porty a ovladače disků. C se stal dominantním jazykem 80. let, poté nástup OOP zakotvením v C++ a Smalltalku. začátkem 70. let, Dennis Ritchie z Bell Laboratories pracoval na svém projektu rozvoje operačního systému UNIX. K němu potřeboval jazyk, který by byl stručný a výstižný. Tradičně se programátoři setkávají s těmito potřebami, když používají jazyk assembler, který je těsně svázán se strojovým kódem počítače. Avšak assembler je strojově orientovaný jazyk - je závislý na procesoru počítače. Avšak pokud byste chtěli přesunout program z assembleru na jiný počítač, možná byste ho museli přepsat pomocí jiného assembleru. UNIX byl ale určen pro práci na různých typech počítačů. Zvláštní programy – kompilátory – překládají vyšší programovací jazyk do strojového kódu určitého počítače. Ritchie chtěl jazyk, který by spojoval účinnost strojového jazyka na nízké úrovni s přístupem k hardwaru s vyšší úrovní všeobecnosti vyššího jazyka a přenositelnosti. Na základě starších programovacích jazyků vytvořil jazyk C.
Filosofie programování v C
Obecně se programovací jazyk zabývá dvěma pojmy - daty a algoritmy. Data představují informaci, kterou program používá a zpracovává. Algoritmy jsou metody, které program používá. Spojením dat a algoritmů vzniká samotný program. Dřívější procedurální jazyky, jako Fortran či Basic, měli většinou organizační problémy, když se program zvětšoval. Jejich programy často obsahovaly příkazy skoku, což vede k nepřehlednosti celého kódu a následná úprava byla katastrofa. A tak vyvinuli ukázanější styl programování – strukturované.
Objektově orientované programování
Ačkoli principy strukturovaného programování zlepšily srozumitelnost, spolehlivost a usnadnily údržbu programů, velká část programování stále zůstávala výzvou. OOP přináší nový přístup – místo zdůrazňování algoritmů (jako tomu bylo u strukturovaného programování) OOP zdůrazňuje data. Programování OOP je mnohem více než vázání dat a metod do definice třídy, ale o tom později, nebudeme se tím teď zatěžovat.
Generické programování
Generické programování je ještě další programovací postup podporovaný C++. S OOP sdílí cíl vytváření jednoduššího kódu pro znovupoužití. Programování pomocí předloh zahrnuje rozšíření jazyka, takže můžete napsat jedinou f-ci pro všeobecný typ a použít ji pro varianty různých typů. Šablony C++ poskytují mechanismus, který to provádí.
C++
C++ začíná také v Bell Labs, kde počátkem 80. let vyvinul tento jazyk Bjarne Stroustrup. Jméno C++ pochází z přírůstkového operátoru C++, který přičítá k hodnotě proměnné jedničku. Připomíná tedy jasně rozšířenou verzi jazyka C. Stroustrup založil C++ na stručnosti C, přidal rysy OOP aniž by významně změnil složku C. C++ je tedy nadstavba znamenající, že každý program napsaný v C je také platným programem pro C++. Programy v C++ mohou využívat softwarové knihovny C. Knihovny jsou kolekce programových modulů, které můžete volat z programu.
Přenositelnost a standardy
Pokud program napíšete na starším PC 286, nespustíte ho na pracovní stanici Sun - používá jiný procesor a jiný OS. Musíte překompilovat program za použití kompilátoru, který je navržen pro danou platformu. Pokud můžete přeložit program bez provedení změn v kódu, a ten běží bez nesnází, říkáme, že je program přenositelný. Překážek je více, například hardware. Program, který je hardwarově závislý, pravděpodobně nebude přenositelný. Postupně vznikly standardy ANSI a ISO, které spojili svoje úsilí vytvořit standardy a zdůrazňovaly tak C++ jako široce rozšířitelný jazyk.
Mechanismus vytváření programu
Popíšeme si kroky tvorby programu:
- Použijte nějaký editor na sepsání kódu a uložte ho do souboru. Toto je zdrojový kód vašeho programu (myšleno napsat pár řádků textu například do poznámkového bloku).
- Přeložte zdrojový kód. To dělá zmíněný kompilátor – přeloží zdrojový kód do strojového jazyka. Nyní máte objektový kód vašeho programu.
- Sestavte objektový kód spolu s dalšími kódy (knihovnami) – funkcemi. Tímto vytvoříte spustitelnou verzi programu – proveditelný kód.
Jak tedy postupovat
My tyto kroky budeme dělat v jednom programu. Na výběr máme z více produktů – Microsoft Visual C++ 6.0, Dev-C++, Borland C++ či GNU C++ na Unixu nebo Linuxu. Přípony zdrojového kódu bývají většinou *.cpp, *.h, *.c –jsou závislé na implementaci C++. My se budeme zabývat tvorbou programů pod Dev-C++, který je zdarma ke stažení. V sekci Download naleznete odkaz na odzkoušenou verzi, kterou používám já. Není nejnovější, ale spustíte na ní vše, co zde uvidíte, proto ji doporučuji. O nic ochuzeni nebudete. Dále ještě popíšu, jak na práci s Microsoft Visual C++ 6.0 –tam je to složitější –či jak na gcc.
Dev-C++
Kde ho seženu: zdarma ke stažení v sekci Download
Čeština: ano
Velikost: cca 7,6 MB
Velmi kvalitní editor i kompilátor dohromady. Je zdarma a navíc česky. Spustíme program, Klikneme na Program → Nový → Zdrojový kód nebo použijeme zkratku v navigační liště či Ctrl + N. Do okna vepíšeme náš zdrojový kód a stiskneme F9. Budeme dotázáni, kam chceme uložit zdrojový soubor, objektový kód a nakonec i spustitelný program (.exe), poté se program sám zkompiluje a zároveň se nám i spustí.
Visual C++ 6.0
Kde ho seženu: nutno zakoupit si sadu Visual Studio C++ 6.0
Čeština: ne
Velikost: cca 3 CD komplet
Editor a kompilátor z dílny MS, kvalitní, obtížnější manipulace pro začátečníka, anglicky. Spustíme Visual C++ (najdeme ho ve Start nabídce pod záložkou Visual Studio 6.0), klikneme na File → New → záložka Files → vybereme C++ Source file a do okna vepíšeme zdrojový kód. Poté stiskneme F5 (zeptá se nás to, zda chceme zapnout pracovní plochu, dáme ano, poté kam uložit daný soubor a nakonec se program zkompiluje a spustí.
GCC
Kde ho seženu: integrován v Linuxu
Čeština: ne (starší verze částečně počeštěné)
Velikost: cca 8,5 MB
Je v každé distribuci Linuxu. Vytvořil ho Richard Stallman - vůdčí osobnost Free software foundation a propagátor GNU. Používá ho integrované vývojové prostředí Kdevelop, které je zdarma. Založíme projekt, vepíšeme kód, zadáme automake, autoconfigure a compile a máme spustitelný kód. Navíc i skript configure, pomocí kterého si to kdokoli zkompiluje.
Pojmy
- Compile – znamená přeložit kód, který jste právě napsali.
- Build – přeložit zdrojové soubory.
- Link – sestavení objektového kódu s dalšími kódy.
- Run nebo Execute – znamená spustit program, vykonat ho.