C++ - 1. lekcia
V tejto lekcii si povieme niečo o vzniku jazyka C++ a o vývojovom prostredí. Ďalej si napíšeme svoj 1. program a dopodrobna si rozpíšeme, čo každý príkaz znamená.
Vznik C++
Jazyk C++ vznikol podobne ako jazyk C v Bell Labs, kde ho začiatkom 80. rokov vyvinul Bjarne Stroustrup. Založil ho na stručnosti jazyka C, jeho vhodnosti pre systémové programovanie, široko rozšírenej dostupnosti a úzkej väzbe na operačný systém UNIX. C++ je teda nadstavbou jazyka C, čo znamená, že každý program, ktorý je písaný v C, pôjde aj v C++. Tak isto jazyk C++ používa knihovne z jazyka C.
Vývojové prostredie
Nato, aby sme mohli napísať nejaký program a následne ho spustiť, potrebujeme vývojové prostredie. Ja osobne používam Microsoft Visual Studio C++ 2010 EXPRES, ale okrem toho existuje borland c++, dev-c++, Code::Blocks a mnoho ďaľších. Konkrétne Microsoft Visual Studio si môžete stiahnuť priamo odtiaľto
Prvý program
Podobne ako v každej lekcii, začneme s programom "Hello World".
Spustíme si program C++, dáme New project, klikneme na Win32 Console Application a do položky Name napíšeme meno programu a stlačíme OK. Ďalej stlačíme Next a odškrtneme položku empty project a stlačíme Finish. Otvorí sa nám prázdne okno. Klikneme na Project ďalej Add New Item... a otvorí sa nám okno, v ktorom klikneme na C++ FILE(.cpp), do položky name napíšeme ten istý názov ako predtým a nakoniec stlačíme ADD a vytvorí sa nám pracovná plocha pre písanie programu. C++ rozlišuje malé a veľké písmená!
A môžeme písať.
#include < iostream > // < iostream.h > int main () { using namespace std; cout<< "Hello World"; //Ahoj svet cout<< endl; system ("pause"); return 0; }
program spustíme stlačím F5
Vysvetlenie
V prvom rade, slová, ktoré sú za dvomi lomítkami // sú len KOMENTÁRE. Program ich pri behu neberie do úvahy, slúžia len programátorovi, aby si popísal daný riadok, alebo prípadne vysvetlil nejakú skratku. Nemusia sa písať. Ale aj komentáre majú nejaké tie pravidlá. Komentár sa môže písať len na jeden riadok.
//Toto je komentár na jeden riadok
Tieto komentáre môžeme písať za príkazy, alebo na nový riadok.
Keď chceme použiť viac riadkový komentár, musíme ho vložiť medzi /* */
/* Toto je komentár na
viac riadkov */
#include < iostream > - Jazyk C++ používa preprocesor. To je program, ktorý spracováva zdrojový kód skôr, než príde na rad hlavný preklad. Pre vyvolanie tohoto preprocesoru nemusíme nič urobiť, spustí sa automaticky.
#include < iostream > // direktiva preprocesora
Táto direktiva preprocesoru hovorí, aby do vášho programu pridal obsah súboru iostream. Predpona iostream obsahuje príkazy cout(výstup) a príkaz cin(vstup). Bez tejto predpony by cout ani cin nefungovali. Jedná sa o hlavičkový súbor. Pri starších programoch sa používa namiesto iostream - iostream.h
Existuje mnoho ďalších takýchto hlavičkových súborov, ktoré vám sprístupnia rôzne príkazy. Napríklad hlavičkový súbor #include < cmath > vám sprístupní rôzne matematické príkazy, ako napríklad vypočítať druhú odmocninu sqrt(), premeniť radiány na uly...
using namespace std; - Direktiva menného priestoru. Táto direktiva vám sprístupní direktivu iostream (cout, cin, endl). Podpora menných priestorov je novým rysom jazyka C++, ktorý bol navrhnutý pre zjednodušenie písania programu spájajúceho už existujúci kód niekoľkých dodávateľov. Problém nastane, keď použijeme 2 produkty, ktoré majú tak isto pomenovanú funkciu, napríklad denisa(). Keď túto funkciu zavoláte, prekladač nebude vedieť, ktorú verziu potrebujete. Menný priestor umožňuje dodávateľovi zabaliť svoje zbožie tak, aby ste pomocou mena menného priestoru mohli určiť, od ktorého dodávateľa výrobok chcete. Napríklad spoločnosť Windows Industries by mohla svoje definície umiestniť do menného priestoru nazvaného Windows. Potom by výraz Windows::denisa() mohol stať úplným menom pre ich funkciu denisa(). Podobne by Piscine::denisa() označoval verziu funkcie denisa() spoločnosti Piscine Corporation. Takže teraz by váš program mohol rozlišovať rôzne verzie pomocou menných priestorov:
Windows::denisa("Programujem v C++"); // Použitie menného priestoru Windows Priscine::denisa("Snažím sa programovať v C++"); // Použitie menného priestoru Priscine
Do menného priestoru std sú takým istým spôsobom umiestnené triedy, funkcie a premenné, ktoré predstavujú štandardné komponenty prekladača jazyka C++. To znemaná že premenná cout, ktorá je používaná pre výstup a definovaná v iostram, sa teda v skutočnosti nazýva std::cout a endl zase std::endl. Namiesto neustáleho písania std:: môžeme buď pod #include napísať using namespace std (takto bude platiť pre celý program, všetky funkcie), alebo to môžme napísať do funkcie
#include < iostream > int main () { using namespace std; cout<< "Hello World"; cout<< endl; system ("pause"); return 0; } //..................... #include < iostream > using namespace std; int main () { cout<< "Hello World"; cout<< endl; system ("pause"); return 0; } //.................... #include < iostream > int main () { std::cout<< "Hello World"; std::cout<< std::endl; system ("pause"); return 0; }
int main () - je to funkcia, ktorá sa delí na 2 časti. 1. časť je int main (), ktorej sa hovorí hlavička funkcie. 2. časť je telo cyklu, ktoré je uzavreté v zložených zátvorkách {}. Telo funkcie predstavuje vaše príkazy. Každý príkaz sa musí končiť bodkočiarkou;.
Obecne je funkcia v C++ volaná inou funkciou a hlavička funkcie popisuje rozhranie medzi funkciou a funkciou, ktorá ju volá. Časť pred menom funkcie sa nazýva návratová typ funkcie a popisuje informačný tok z volanej do volajúcej funkcie. Časť medi zátvorkami sa nazýva zoznam parametrov alebo argumentov a popisuje informačný tok z volajúcej do volanej funkcie.
Funkcia main volaná inou funkciou, môže tejto volajúcej funkcii vracať hodnotu, ktorej hovoríme návratová hodnota. V tomto prípade môže funkcia main() vracať celočíselnú hodnotu, ako je naznačené kľúčovým slovom int. Ďalej si všimnime prázdnych zátvoriek. Obecne môže funkcia jazyka C++ predávať informáciu inej funkcie, ktorú volá. V našom prípade prázdne zátvorky znamenajú, že funkcia main() nepreberá žiadne argumenty, preto príkaz return 0 vracia 0.
endl; - endl je príkaz nového riadku. Namiesto endl sa môže napísať "\n";. Toto sa väčšinou vkladá do reťazca.
Logicky, keď nový riadok znamená, aby na monitor program vytiskol nový riadok, musí sa endl/'\n' používať s príkazom pre tisk(cout). Pri žiadnom inom príkaze endl/'\n' nebude fungovať.
cout<<"Hello World"; cout<< enld; //............... cout<<"Hello World" << endl; //............... cout<<"Hello World\n";
return 0; - je to príkaz návratu.
system ("pause"); - je to príkaz na pozastavenie obrazovky, pokiaľ nestlačíte ľubovolné tlačidlo. Bez tohoto príkazu by nám obrazovka iba preblikla.
Namiesto toho príkazu môžeme použiť cin.get();
cout - Príkaz na vypísanie textu. Časť uzavretá do dvojitých uvodzoviek je zpráva pre tisk(na monitor). V C++ sa akákoľvek skupina znakov uzavretá do dvojitých uvodzoviek nazýva reťazec znakov. Operátor << naznačuje, že príkaz posiela reťazec cout.
Formátovanie vytlačeného textu - To, čo program vytlačí na monitor, záleží od toho, akými príkazmi napíšeme program. Existujú príkazy na vertikálny tabulátor, horizontálny tabulátor, alarm, posun doľava ....
Meno premennej | Kód v C++ |
nový riadok | |
horizontálny tabulátor | |
vertikálny tabulátor | |
posun doľava | |
návrat vozíku | |
zvuková výstraha | |
spätné lomítko | |
otáznik | |
jednoduchá uvodzovka | |
dvojitá uvodzovka |
Všetky tieto príkazy sa musia nachádzať v reťazci, čiže medzi uvodzovkami.
Príklad:
#include < iostream> int main () { using namespace std; cout<<"__________";//10 podtržníkov cout<<"\b\b\b\b\bROBO\n"; /*Normálne by malo ROBO vypísať až za všetky podtržníky. Lenže keď sme použili 5 krát \b, tak kurzor sa nám posunie o 5 políčok doľava a napíše to namiesto tých podtržníkov.*/ cout<<"Ja programujem\t\t v C++."; cout<< endl; cout<<"\a\a\aTeraz zaznela zvuková výstraha"<< endl; system ("pause"); return 0; }
Formátovanie zdrojového kódu - V jazyku C++ sa označuje koniec každého riadku bodkočiarkou. To jazyku C++ umožňuje nakladať so znakom návratu vozíka tak isto ako s medzerou alebo s tabulátorom. Čo znamená, že v C++ môžeme urobiť medzeru tam, kde by sme ukončili riadok a naopak. Tým pádom môžeme jeden príkaz rozpísať na niekoľko riadkov, alebo umiestniť niekoľko príkazov na jeden riadok.
POZOR!!! príkazy sa nesmú rozdeľovať!!!
Oba programy sú správne, ale ten prvý má úhladnejší zdrojový kód
#include < iostream > int main () { using namespace std; cout<<"Podme sa venovat C++\n"; system ("pause"); return 0; } //....................... #include < iostream > int main () { using namespace std; cout << "Podme sa ucit C++"; cout << endl; system ("pause"); return 0 ; }
Zhrnutie
#include < iostream > - Definuje vstupno-výstupné služby štandardnej knižnice.
using namespace std - doplní v celom programe std:: pred (cin, cout..).
int main() - program sa spustí zavolaním funkcie int main ().
endl - príkaz nového riadku.
return - návratová hodnota.
system ("pause") - pozastavenie programu.
cout - vypísanie textu na monitor.
Cvičenia
skúste si doma napísať programy, kde budete používať rôzne príkazy pre zmenu textu, experimentovať s novými riadkami atď.
22 komentárov k článku:
Komentovať môžu iba prihlásení
Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)
Prihlás sa tu, ak už máš profil na Zajtra.sk:

Ja preferujem DEV-C++ =) oni to dorobia MS SW je fajn na velke projekty ale ked ho pouziva clovek cely aj s nastaveniami je to dnova instalacia GB dat na disku (vratane kniznic, resource a updateou asi 30). PRe zacinajucich progrmaatorov a ludi, ktory si obcas nieco len tak napisu je rozhodne lepsi.

Milos S: Uff, mas to troska dost popletene s tym ne/manazovanym kodom. VS je komplexne IDE riesenie a podporuje viacero jazykov, ktore su bud manazovane cez CLR (kompilovane do CLI), alebo nemanazovane - native (kompilovane priamo do kodu pre CPU) + dalsie moznosti. Teda samozrejme ze podpruje aj "ozajstne" C++ ISO/IEC 1998 a 2003, ale aj C++/CLI, co je akasi MS nadstavba C++ pre dotNET. Zalezi aky projekt das vytvorit resp. od konfiguracie buildovania. Manazovany a nemanazovany kod sa da koniec koncov aj kombinovat. Drtiva vacsina firiem zameranych (aj) na C++ a Win pouziva prave VS, vratane SAPu ci Esetu a pod...

Robo >> zacinajuci FEI APIckar :D serus :D Ked tu pises clanky o c++ uz teraz, tak to sa budes riadne nudit na ALPR. Vela zdaru.

Matúš K: Tým ozajstným C++ čo už vo VS nie je vo svojej podstate som myslel to, že v C++ si treba dávať pozor na uvoľňovanie pamäte a podobne. GC zbytočne zaťažuje systém a spomaľuje aplikáciu. Presatav si, že napíšeš v C++ vo VS šachový program a počítač pri rozmýšľaní po pár minútach (trochu to preháňam, ale teraz berme do úvahy minúty) spustí na pár sekúnd GC. Keby program bežal na skutočnom "čistom" C++ a programátor si neuvoľní pamäť sám, tak je v prdeli slušne povedané. Rýchlosť aplikácie bude tiež vyššia, lebo prebehnutie všetkých objektov GC je určite pomalšie než všetok čas, ktorý sa vynaloží pri uvoľňovaní pamäte klasickým spôsobom (pri jeho sčítaní dokopy). V tomto ostal čistý asi len Object Pascal v nástroji Lazarus (myslím, že Delphi už tiež po novom beží na NET frameworku). Z čístého C++ ostalo len Qt. Vo Windows je ťažké nájsť plnohotnotný kompletný nástroj na programovanie v C++. Plnohodnotný kompletný je u mňa nástroj vrátane IDE, kompilátora, používateľskej podpory a možností využitia. Neviem ako je s možnosťami využitia dev-c++, ale skúsim sa na to pozrieť, keďže nedávno som to hľadal a nevedel som si spomenúť ako sa to vlastne volá.

Hej ?..tak ja som ten v šiltovke The exploited a v tričku Ilegality :D

@Matúš - Možno bude aj o Jave :)...Ja ešte len nastupujem na FEI. Aplikovaná máš len tam. Síce je aj na FIIT, ale to až na ing stupni, čo pokračuješ z Informatiky.
@Michal - Načo bola spravená táto stránka, keď je ich na internete na tisíce ?..Načo sa vyrába viac druhov notebookov ?...Načo máš viac operačných systémov ?
No skrátka nato, aby si ten kto sa chce učiť, mal na výber z viacerých tutoriálov a mohol si vybrať, ktorý mu najviac sedí, prípadne ich kombinovať. A po druhé, baví ma to.

@Matúš - No v prvom rade, toto je článok o C++, takže kto chce začať s C, musí si tutoriál nájsť inde. Tento článok nemá mať skoro nič spoločné s Jazykom C. Máš pravdu, že C je omnoho ľahší na pochopenie, ale to by už bol iný článok. Ja som napríklad začínal s C++ a na pochopenie to bolo dosť ťažké, ale postupom času som tomu začal stále viac a viac chápať.
@Michal - Ako som už spomenul vyššie, je to pravda, že C je ľahší na pochopenie, ale toto je článok o C++ a nie o C.

@Miloš: C++/CLI je to s garbage collectorom a beží to na .NET frameworku. C++ je stále C++ a neviem o tom, že by ho VS2010 nemalo.. To by bola riadna blbosť ho vyhodiť. :&
Neviem si pomôcť, ale učiť sa rovno C++ mi príde strašne mätúce. Už len to, že cin/cout sú vlastne triedy s preťaženými operátormi << a >>, ktoré inak znamenajú SHL a SHR. Pre kompletné pochopenie toho "správneho" C++kového Hello worldu treba ovládať dosť advanced koncepty jazyka (a to sa na začiatku nedá), kdežto na kompletné pochopenie Cčkového hello worldu s printf() stačí relatívne málo.
Takže sorry, ja stále odporúčam začať s tutoriálom, kde sa používa printf() a scanf() namiesto cin a cout. Okrem iného je dobré ich ovládať kvôli funkciám ako sscanf, sprintf, na ktoré nie sú "C++" ekvivalenty.

@Miloš S - Presne tak, tento seriál je o textovom C++, čiže o konzole. V konzole sa ľahšie naučia základné veci. A keď sa jedná o konzolu, tak je podľa mňa jedno, že aké vývojové prostredie použijú. Je ich tam viac na výber.
@We@st - Keď myslíš operátor vloženia, tak ten tam je vysvetlený. Síce len jednou vetou, ale na teraz to stačí. Bližšie sa cout/cin budem venovať v ďalšej lekcii, keď si napíšeme niečo o premenných :)
Novinky
2 rokmi
Aprílové vtípky: Výběr toho nejlepšího kolem počítačů, internetu a techniky
Výběr nejlepších aprílových vtípků 2019
2 rokmi
Fotky Google sa učia lepšie pracovať s dokumentmi
Spoločnosť Google prostredníctvom svojho účtu na sociálnej sieti Twitter oficiálne predstavila novú funkciu svojej aplikácie Fotky Google.
2 rokmi
Gmail dovoľuje naplánovať poslanie emailu neskôr
Spoločnosť Google dnes oznámila pridanie funkčnej novinky do svojej populárnej webmailovej služby Gmail, možnosť naplánovať poslanie emailu na neskôr.
3 rokmi
Používatelia Chrome začali prechádzať na nový rýchlejší Firefox, avizujú dáta Mozilly
Nový lepší a rýchlejší prehliadač Firefox 57 Quantum vyúsťuje zrejme do viac používateľov prechádzajúcich respektíve vracajúcich sa na tento prehliadač z iných prehliadačov, na osobných počítačoch aj smartfónoch.
3 rokmi
Briti dokončili kúpu SK-NIC-u. Nové .sk domény nechávajú za 8.4 eur
Predaj správcu slovenskej domény .sk, SK-NIC, bol dokončený a novým majiteľom po telekomunikačnej skupine Danubiatel, do ktorej patrí napríklad Swan a 4ka, je britská spoločnosť CentralNic.
Staršie novinky »TOP dlhšie
- 01 Farbičky v HTML a CSS, alebo? (891x)
- 02 Tiché COMBO Logitech MK295 (738x)
- 03 Kamery, cloud a bezpečnosť (721x)
- 04 Kingston uvádza 128GB verziu šifrovaného USB (708x)
- 05 Pochopte, ako vytvoriť virtuálny obchod v 6 krokoch (637x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
TOP tento mesiac
- Aj ty môžeš byť najčítanejší. Napíš článok »
Nové články:
- 14.Kingston uvádza 128GB verziu šifrovaného USB
sep - 10.Tiché COMBO Logitech MK295
sep - 24.Farbičky v HTML a CSS, alebo?
aug - 23.Pochopte, ako vytvoriť virtuálny obchod v 6 krokoch
aug - 29.Kamery, cloud a bezpečnosť
jul - Viac »
- Aj ty môžeš byť najčítanejší. Napíš článok »
Pekné veci
Pekné veci
Pekné veci
Pekné veci
Posledné komentáre
- Pokiaľ používaš nejaký lepší bitmapový editor, napr. Photoshop, a chceš robiť retuše, ed...
- Veľmi dobrý článok a pre začiatočníka úplne odrazový mostík. https://ludwaismania1.blogs...
- Nova international a prima lus majú vysporiadané pravs ale aj CNN prima News
- Tv Joj nijako neobmedzuje šírenie médii, ktoré majú vysporiadané licenčné práva pre Slov...
- Nech televizie vrátia naspäť originál verzie a tie internationali nech zrušia. Každý si ...
Kritika
Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!
Reklama
Slovenská IT komunita
Seriály zo Zajtra.sk
· Ako písať blog
· Ako sa stať PHP ninja s Yii Frameworkom
· Aplikácie pre Facebook
· CSS triky
· iOS vývojára príhody a skúsenosti
· Jednoduché programy, ktoré vám ušetria čas
· Modelovanie webového sídla
· Nauč sa CodeIgniter [HD]
· Nauč sa jQuery [HD]
· Nette PHP framework
· OOP v Javascripte
· Programujeme v Jave
· Programujeme v Lazaruse
· Programujeme v Pythone
· Robíme Eshop v ASP.NET Web Pages
· Slovenskí iOS developeri
· Webdizajn krok po kroku
· Yablkov TurboTip [HD]
Mas Nejaky tazky sposob.