Tak začneme… V tento prvý deň sa iba zoznámime s tým, čo to vlastne C++ je a kde vzniklo. V tomto seriálu budem zadávať rôzne poznámky alebo výstrahy iba pre zaujímavosti. V každej lekcii vám na začiatku budem vypisovať body, ktoré preberieme.ríprava na písanie programu
História C++
Od dôb prvých elektronických počítačov, určených k výpočtom 2 + 2, ktoré fungovali ako kalkulačka behom druhej svetovej vojny, prežili počítačové jazyky dosť dramaticky vývoj.
Na začiatku pracovali programátori s najprimitívnejšími inštrukciami počítača – s takzvaným strojovým jazykom. Tieto inštrukcie vyzerali ako dlhé reťazce núl a jednotiek. Potom vznikol prvý strojový jazyk assembler, ktorý prevádzal tieto reťazce do zrozumiteľnej podoby.
Časom vznikli vyššie jazyky ako BASIC a COBOL. Tieto jazyky umožňovali komunikovať už zrozumiteľnými, prevažne anglickými, príkazmi, ktoré boli prostredníctvom kompilátoru spätne preložené do strojového jazyka. Kompilátor kód preloží do takzvaného objektového súboru, ktorý ešte nie je spustiteľný, tento krok sa nazýva kompiláciou. Potom kompilácia spustí zostavovací program (linker), ktorý objektové programy zostaví do programu.
Kompilátory zo sebou prinášajú krok naviac - kompiláciu. Tenko krok je nepohodlný, ale skompilované programy bežia rýchlejšie, pretože časovo náročná úloha preloženia zdrojového kódu do strojového sa spraví iba raz, potom pri spustení programu sa nevyžaduje.
Dlhé roky bolo najdôležitejšie písať krátke úseky kódu, ktoré sa uskutočnia čo najrýchlejšie. Program musel byť malý, pretože pamäť bola drahá a tiež strojový čas bol drahý. Ale v dnešnej dobe sa smer zmenil. Teraz kód, ktorý je dobre napísaný a ľahko sa udržuje, je cenený najviacej. Tým sa myslí, že pri zmene požiadaviek sa dá ľahko upraviť bez veľkých investícii.
Slovo program sa používa vo dvoch významoch: Ako označenie jednotlivých inštrukcií vytvorených programátorom a ako označenie celého úseku spustiteľného kusu softwaru.
Problémy, pred ktorými dnes programátor stojí, sú úplne iné, ako boli pred 20 rokmi. Vtedy sa písali programy, aby spracovávali obrovské haldy dát. Ale dneska používa počítač asi každý tretí človek na našej malej planéte. Dneska počítač slúži v najrôznejších odvetviach. A veľa ľudí nemá chuť s nimi zápasiť. A preto sme tu my, programátori, ktorý im to chceme uľahčiť.
Až donedávna sa za program považoval súhrn procedúr, ktoré spracovávali dáta. Procedúrou alebo funkciou myslíme sadu stanovených inštrukcií, ktoré sa majú spustiť. Snaha o zvládnutie tejto potencionálne neprehľadnej situácie viedlo k vzniku štruktúrovaného programovania. Základná myšlienka tu je: „Rozdel a panuj!“. Na počítačový program sa môžete pozrieť ako na sadu úloh. Každá zložitá úloha sa rozdelí vždy na viac jednoduchých úloh. Štruktúrované programovanie zostáva veľmi populárne, ale koncom 80. rokov sa začali ukazovať nedostatky.
Po prvé, je prirodzené uvažovať o nejakých dátach (záznamoch) ucelene, čiže čo s nimi je možné urobiť. Ale štruktúrované programy bohužiaľ majú dátové štruktúry oddelené od funkcií, ktoré s nimi pracujú a neexistuje tu žiadny spôsob, ako ich spojiť. Štruktúrované programovanie sa často označuje aj ako procedurálne programovanie, lebo sa sústreďuje na procedúry.
Za druhé, každý programátor hľadá znovu riešenie starých problémov. Myšlienka, skrývajúca sa za opakovateľným používaním kódu, spočíva v tom, že vytvorené procedúry majú presne definované vlastnosti a je možné zabudovať ich do programu podľa potreby.
Objektovo orientované programovanie sa pokúša tieto požiadavky splniť a dáva techniky, vďaka ktorým môžeme zvládnuť aj zložité úlohy. Účelom je dosiahnuť určitý model (objekt), ktorý má určité charakteristické vlastnosti a schopnosti.
C++ a objektovo orientované programovanie
C++ v plnej miere podporuje objektovo orientované programovanie v týchto troch pilieroch:
- Zapúzdrenie
Ak napríklad elektrikár potrebuje rezistor, nejde si ho vyrobiť, ale iba si nájde ten, ktorý mu najviac vyhovuje a spravidla ho netrápi, ako sa vyrába. Tejto technike sa hovorí zapúzdrenie. S pomocou zapúzdrenia je možné objekt použiť bez toho, aby užívateľ nevedel, ako funguje. Všetky jeho vlastnosti sú taktiež zapúzdrené v jeho vnútri, takže mi si ho vyberieme iba podľa toho, či nám jeho vlastnosti vyhovujú alebo nie.
- Dedičnosť a opakované používanie
Takže ak si chce elektrikár vylepšiť vlastnosti rezistoru, tak to môže urobiť tak, že k nemu pridá ďalšiu súčiastku, ktorá jeho vlastnosti mení. Čiže užívateľ môže každému rezistoru ľubovoľne pridávať ďalšie vlastnosti. Ak deklarujeme nový typ v C++, je možné ho ľubovoľne rozšíriť.
- Polymorfizmus
Ak zapojíte nový upravený rezistor, môže sa líšiť napätie na konci obvodu od napätia, ktoré pretekalo pri zapojení starého rezistoru, ale pri extrémnych prúdoch bude napätie rovnaké. C++ podporuje myšlienku, že rôzne objekty robia vždy tú správnu vec, prostredníctvom polymorfizmu tried a funkcií, tým rozumieme, že rovnaké meno môže mať veľa foriem.
Príprava na písanie programu
Pre jazyk C++ platí viac ako pre ostatné jazyky, že programátor by si mal vypracovať nejaký návrh. U triviálnych príkladov to nebude až také nutné, ale čím pôjdeme ďalej, tak budete potrebovať návrh, ktorý vám objasní celý kód. Musíte si dať prvú aj základnú otázku: „Aký problém sa pokúšam vyriešiť?“ U každého programu musí byť jasná odpoveď.
Ideme na vývojové prostredie. Ja osobne dávam prednosť Miscrosoft Visual C++ 6.0 Introductory Edition. Je to prostredie dostupné nekomerčnému využitiu; ak ho nezoženiete na stránke Microsoftu, požiadajte, ja vám dám link, kde sa dá stiahnuť. Ďalším známym a free kompilátorom C++ je Dev-C++ , ktorý je tiež pre nekomerčné účely. Hneď po začatí krzu vám tieto dva kompilátory predvediem na prvej ukážke.
U väčšiny kompilátorov C++ nezáleží na tom, akú príponu zdrojovému súboru pripojíme, ale skúste používať príponu .cpp. Ale na druhej strane, dajte si pozor hlavne staršie kompilátory. Spracúvajú súbory s príponou .c!
Vytvorenie objektového súboru kompilátorom
Kompilátor slúži k prevedeniu zdrojového kódu na program. Spôsob spustenia kompilátoru sa v každom programe líši. Napríklad vo Visual C++ je to F5 a u Dev-C++ F9.
Výsledkom kompilácie zdrojového kódu je objektový súbor. K názvu tohto súboru sa zvyčajne pridáva prípona .obj. Stále sa však nejedná o spustiteľný program. Ten získame až po spustení zostavovacieho programu (linkeru).
Vytvorenie spustiteľného programu linkerom
Pre programy v C++ je typické, že sa vytvára prepojenie jedného alebo viacerých objektových súborov s jednou alebo viacerými knižnicami. Knižnicou rozumieme sbierku pripojiteľných súborov, ktoré sú buď súčasťou vášho kompilátoru, alebo ste ju sami vytvorili. Každý kompilátor je vybavený knižnicami, praktickými funkciami a triedami, ktoré sa môžu stáť súčasťou vášho programu.
Postup pri vytvorení programu je takýto:
- Vytvorte zdrojový súbor s príponou .cpp.
- Tento zdrojový súbor skompilujte do súboru s príponou .obj.
- Prepojte súbory .obj s všetkými knižnicami, čím vytvoríme spustiteľný program.
Čiže to by bolo dosť na prvý deň našej spolupráce. Nabudúce začneme naším prvým programom a celý si ho troška rozoberieme. Uloha zatial nebude.