C++ - 1. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

C++ - 1. lekceC++ - 1. lekce

 

C++ - 1. lekce

Google       Google       13. 4. 2005       195 569×
  • První program
  • Zdrojový program
  • Překlad, sestavení, spuštění
  • Komentáře
  • Funkce main()
  • Vstup a výstup
  • Zápisy programu
  • Chyby a varování
  • Direktiva #include
  • Překlad programu
  • Úkol č. 1

Reklama
Reklama

Ukážeme si, jak vypadá program v C++, setkáme se s objektovými typy a jejich používáním.

První program

Nejdříve bych chtěl upozornit, že budete-li mít JAKÝKOLIV problém s čímkoliv, navštivte Diskuzní fórum, kde vám poradím. Navštěvuji ji často, a proto se odpovědi dočkáte ve velmi krátkém čase. Pokud se chcete opravdu učit C++, zaregistrujte se.

Jako všechny učebnice, i my začneme klasickým „Ahoj světe“.

#include <iostream>   // 1
using namespace std;   // 2
int main()   // 3
{   // 4
    cout << "Ahoj svete!" << endl;   // 5
    return 0;   // 6
}

Výsledek:

Ahoj svete!

Zdrojový program

Program v C++ se skládá z jednoho nebo více textových souborů. Pozor na velká a malá písmena, jazyk C++ je rozlišuje!

Překlad, sestavení a spuštění

Zdrojový program musíte přeložit z C++ do strojového kódu. Jaké programy použít, jste se dověděli v úvodní lekci.

Překladač nám vytvoří relativní soubor (*.obj nebo *.o), ale ten nelze spustit; musíme k němu připojit knihovny a vytvořit z něj spustitelný soubor (*.exe).

Co jsme naprogramovali

// 1, // 2… Toto vidíte na každém konci řádku. Není to nic jiného než komentář. Absolutně nepovinný, použili jsme ho k očíslovaní řádků a slouží spíše k orientaci v programu, když se k němu např. po několika měsících vrátíme. Komentář začíná // a vše, co je na TOMTO řádku za těmito lomítky, se tedy vůbec nepřekládá, slouží jen jako poznámky. Můžeme je zapisovat ještě jedním způsobem. Začneme znaky /* a skončíme znaky */ (mezi * a / nesmí být mezera). Takto se zapisují komentáře delší (je jedno na kolik řádků, protože je komentář i zakončen):

// muj komentar správně
// muj komentar
ktery pokracuje
špatně - musí být na stejném řádku
/* muj komentar špatně - chybí zakončovací znak */
/* muj komentar */ správně
/* muj
komentar */
správně

Funkce main()

Programy se skládají z hlavního programu a z řad podprogramů. Roli hlavního programu zde právě hraje funkce main (malými písmeny). V každém programu musí jedna f-cemain být. Prázdné závorky říkají, že se jedná o funkci s parametry. Slovo int říká, že f-ce (funkce) vypočte a vrátí hodnotu typu int, tedy celé číslo.

Tělo funkce začínáme složenými závorkami { a končíme } (mají podobnou úlohu jako v Pascalu begin a end).

Každý příkaz musí končit středníky. main() je f-ce dělená na dvě části (main() a return 0; ) a tedy až druhá část se zakončuje středníky. Příkaz return znamená vždy ukončení f-ce, která ji zavolala (v našem případě ukončit main() a tím celý program, návrat do OS).

Ta nula za return znamená, že program skončil bez problémů. Nenulové číslo pak určuje kód chyby.

Vstup a výstup

Náš program vypisuje znakový řetězec „Ahoj svete!“. O to se stará příkaz na řádku 5.

cout << "Ahoj svete!" << endl;

Teď vám vysvětlím, co znamená using namespace std; . Kdybyste toto nenapsali, museli byste pokaždé psát std::cout << "Ahoj svete!" << std::endl;.

using namespace std; nám zpřístupní definice. Nejlépe se s tím smiřte a trápit se s tím budeme později.

Vysvětlení (neodborné): Představte si několik balíků krabic. Chcete červenou krabici, ale ty jsou tam 3 (pojmenovány std, ahj, bnm). A protože bychom chtěli banán z krabice ahj, řekli bychom dotyčnému „Chci banán z krabice ahj“. To samé je v C++. Krabice std obsahuje prostory jmen, které se za ní skrývají. std::cout je tedy cout umístěný v krabici std. Proto na začátku programu definujeme, že jakýkoliv název funkce obsažený v balíku std (a možná, že i v ostatních balících) se použije PRÁVĚ cout z krabice std. Kdybychom (teoreticky) neuvedli using namespace std;, překladač by nevěděl, ze které krabice má cout vzít (pokud by byl ve všech), a v každé by měl jiný význam! Takže si vyberte, jestli budete psát std::cout; nebo napíšete na začátek using namespace std; a pak už jen názvy příkazů.

endl není nic jiného, než ukončení řádku (Enter), ale můžete to udělat i jinak, lépe:

cout << "Ahoj svete!\n";

\n – příkaz „jdi na další řádek“, nemusí mít mezeru mezi slovy (Z toho vyplývá, že pokud ho do textu kdykoliv napíšete, nevypíše se \n, ale provede se přeskok na další řádek.). Mezi \ a n NESMÍ být mezera.

ZÁKLADEM UČENÍ JE ZKOUŠET! PROTO ZKOUŠEJTE!

cout << "Ahoj svete!" << endl;   // správně

cout << "Ahoj svete!<< endl" // špatně,
                             // endl nesmí být umístěn
                             // v textu

cout << "Ahoj svete!\n" // správně

cout << "Ahoj \nsvete!" // správně
                         // (svete bude již na druhém
                         // řádku)  

Část uzavřená do uvozovek je zpráva pro tisk (např monitor). Označení << signalizuje, že se posílá řetězec do cout, je to vkládací operátor.

Možná, že se vám výsledný exe soubor při spuštění hned zavře, aniž byste měli možnost stihnout přečíst text. V takovém případě musíte na konec souboru připsat cin.get();.

#include <iostream>
using namespace std;
int main()
{
   cout << "Ahoj svete!" << endl;
   cin.get();   /* někdy je třeba použít 2×. cin.get(),
   cin.get();      vyčká na zmáčknutí klávesy ENTER */
   return 0;
}

Ve Visual C++ dáme pro spuštění Ctrl + F5. V Borland C++ 3.1 stačí stisknout klávesu F9 (pro přeložení). Použijeme-li překladač MinGW32, který se spouští z příkazové řádky, zadáme příkaz g++ PRVNI (název souboru je PRVNI).

Hlavičkový soubor

Podobně jako v jiných programovacích jazycích, i v C++ platí, že můžeme v programu pracovat s tím, co překladač už zná. Standardní hlavičkové soubory v C++ jsou bez přípony, v jazyce C mají příponu .h a někdy také .hpp.

Informace o základních vstupních a výstupních proudech jsou v hlavičkovém souboru iostream (ve starších překladačích iostream.h).

Aby je měl překladač k dispozici, musíme jej vložit do našeho programu, nejlépe hned na začátek.

#include <iostream>   // direktiva preprocesoru
using namespace std;   // zpřístupní definice
int main()   // hlavička f-ce
{   // začátek těla f-ce
   cout << "Ahoj svete!" << endl;   // zpráva
   return 0;   // ukončuje main()
}   // konec těla f-ce

Zápisy programu

Klíčová slova (return, int…) nemůžeme rozdělit mezerou nebo přechodem na nový řádek.

Chyby a varování

Pokud něco napíšeme špatně, překladač oznámí chybu. Vedle chyb C++ hlásí také varování. Chyby musíme bezprostředně odstranit, neboť s nimi nelze program spustit. Varování vždy upozorňují na situaci, která je z hlediska syntaxe správná, ale může mít pro programátora jiný význam, než očekává. Proto je důležité sledovat, co hlásí (vlastní zkušenost je, že 70 % varování chybu znamená).

Direktiva #include

Pokud překladač narazí na výskyt #include, nahradí ji obsahem určeného souboru.

#include <soubror> – pokud použijeme tento zápis a nespecifikujeme úplnou cestu, bude soubor hledán ve standardním adresáři pro ukládání hlavičkových souborů.

#include "soubor" – soubor bude hledán nejdříve v adresáři se zdrojovým souborem a pak teprve v adresáři s hlavičkovými soubory.

Ještě o překladu programu

Překlad probíhá standardně ve 3 fázích. Zdrojové soubory se zpracují preprocesorem, který provede kontextovou úpravu (odstraní komentáře, vloží text souborů uvedených v direktivách #include apod.), pouze zařídí, že takto bude vidět soubory překladač, nic takového se ve skutečnosti nestane.

Ve druhé fázi se vytvoří relativní soubory a ve třetí je spojí linker s knihovnou a vytvoří spustitelný soubor.

Úkol č. 1

Vytvořte program, který vypíše na 5 řádcích informace o vás (jakékoliv).


Staňte se aktivními účastníky kurzu!

Chcete-li se aktivně učit tento jazyk, jednoduše se registrujte, je to zdarma.

Ptejte se v Diskuzním fóru, čemu nerozumíte, nebo zda by to šlo jinak apod.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Lukáš ChurýLukáš je šéfredaktorem Programujte, vyvíjí webové aplikace, fascinuje ho umělá inteligence a je lektorem na FI MUNI, kde učí navrhovat studenty GUI. Poslední dobou se snaží posunout Laser Game o stupeň výše a vyvíjí pro něj nové herní aplikace a elektroniku.
Web     Twitter     Facebook     LinkedIn    

Nové články

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

Reklama autora

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý