Programovanie v C++ - 5. diel

Seriál o programovaní v programovacom jazyku C++. V dnešnom, už piatom pokračovaní si napíšeme náš prvý skutočný program a naučíme sa ako získavať dáta zo štandartného vstupu a ako dáta vypisovať a zoznámime sa s hlavičkovými súbormi.

Hlavičkové súbory


Každý väčší program sa raz dostane do štádia, keď by už nebolo vhodné ho mať celý napísaný v jedinom zdrojovom súbore a budete chcieť program rozdeliť do súborov viacerých. Navyše budete ešte potrebovať, aby niektoré premenné alebo funkcie boli dostupné len pre určité súbory a pod. Vtedy prichádzajú na rad hlavičkové súbory.
Predstavte si nasledujúcu situáciu.
      // main.h

      int i;
      
      // main.cpp

      #include "main.h"


      int main() {

          i = 10;

          return 0;

      }
      
Príkazom #include "main.h" sme spôsobili, že obsah súboru main.h bude sprístupnený aj pre súbor main.cpp. Preto môžeme pracovať s premennou i, ktorú sme deklarovali v súbore main.h aj napriek tomu, že v súbore main.cpp akoby neexistovala.
Skúste si ale predstaviť, že by sme premennú i potrebovali použiť aj v inom súbore, napríklad main2.cpp.
      // main2.cpp

      #include "main.h"


      void func() {

          i = 10;

      }
      
Tu by už nastal problém, pretože by sme globálnu premennú i akoby deklarovali dva krát (v súbore main.cpp a v súbore main2.cpp). Situáciu vyriešime pomocou kľúčového slova extern.
      // main.h

      extern int i;


      // main.cpp

      #include "main.h"


      int i;

      ...      
      
Keď premennú "i" zapíšeme v súbore main.h ako externú, v podstate tým kompilátoru povieme, že premenné "i" deklarujeme v nejakom inom súbore, pričom súbory, ktoré budú includovať main.h, budú môcť premennú i využívať. Ale ako som už napísal, musíme je v niektorom zo súborom deklarovať, resp. definovať.
      // main.cpp

      #include "main.h"

      int i;

      ...
      
Teraz už bude všetko v poriadku a globálnu premennú "i" budeme môcť použiť v každom súbore, ktorý bude hlavičkový súbor main.h inkludovať.

Vypisovanie údajov


Teraz už nadišiel čas napísať si náš prvý program. Býva zvykom napísať na obrazovku "Hello, World!", ja sa ale držím vlastných zvykov. Na to, aby sme mohli na obrazovku vypisovať text, budeme musieť inkludovať hlavičkový súbor iostream. Na vypisovanie údajov (textu) nám bude slúžiť dvojica dátových prúdov cout a endl.
Syntax: (std::)cout << _prud1_ ... << _prudN_ [ << (std::)endl ]
Príkaz endl spôsobí, že sa skočí na ďalší riadok a "spláchne" sa pamäť alokovaná pre cout. Naučte sa preto endl používať.
      #include <iostream>


      int main() {

          std::cout << "Ďakujeme ti za tento seriál, ribi!" << std::endl;

          return 0;

      }
      
Všimnite si, že som napísal std::cout a std::endl namiesto cout a endl. Urobil som tak preto, lebo cout a endl sú súčasťou tzv. namespace. O tom ale až niekedy neskôr.
Taký namespace slúži ako akýsi rozlišovač v prípade, že potrebujete mať napr. viac premenných s rovnakým názvom. K premenným z namespace-u potom pristupujeme tak, že zadáme meno namespace-u, potom operátor "::" a meno premenej, ktorú potrebujeme.
      int i;

      namespace name{

          int i;

      };

      ...

      i = 0; // globálna premenná i

      name::i = 0; // namespace

      
Keď sa vám v určitej časti kódu nebude chcieť vypisovať name::i, tak jednoducho môžete napísať príkaz using namespace name. Ten spôsobí, že vám bude stačiť napísať len "i" (nie name::i) a kompilátor automaticky pochopí, že chcete pristupovať k namespace-u.
Náš program na vypisovanie údajov bude teda po úprave vyzerať nasledovne.
      #include <iostream>


      using namespace std;


      int main() {

          cout << "Ďakujeme ti za tento seriál, ó, veľký ribi!" << endl;

          return 0;

      }
      

Čítanie z klávesnice


Na čítanie z klávesnice použijeme dátový prúd cin (takisto sa nachádza v hlavičkovom súbore iostream).
Syntax: (std::)cin >> _premenna_;
Pomocou cin môžeme načítať prakticky akýkoľvek typ premennej, čiže int, char, float a pod. Vami zadaný text v programe musíte potvrdiť stlačením klávesy Enter. Až potom sa totiž načíta do prúdu.
      #include <iostream>


      using namespace std;


      int main() {

          char c;

          int i;

          cin >> c; // načíta sa hodnota typu char

          cin >> i; // načíta sa hodnota typu int

          return 0;

      }
      

Záver


Dnešný diel bol istým spôsobom prelomový. Zoznámili ste sa totiž s modulárnym programovaním (hlavičkové súbory) a napísali sme si prvý program (konkrétne dva), naučili sme sa ako údaje jednoducho vypisovať a ako ich jenoducho načítavať. Nabudúce si posvietime na ďalšie spôsoby ako údaje vypisovať a získavať. Doprogramovania.

02.10.2005 17:50

Ribi

Programovanie