Programovanie v C++ - 5. diel
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.
Autor: Ribi ·
Kategória: Programovanie ·
Dátum: 02.10.2005 17:50


![Hlasová verzia [Pre internetový prehliadač Opera] Voice](modules/items/voice.png)
Komentáre
Dovolil by som si iba taký malý komentár, hoci som kod nemusel ani kompilovať, je mi vopred jasné, pretože programujem v C++, že kebyže skompilujete
#include <iostream>
using namespace std;
int main() {
cout << "Ďakujeme ti za tento seriál, ó, veľký ribi!" << endl;
return 0;
}
[/code]
dostanente nečakný výstup, teda namiesto diakritiky budete vidiet rozne znaky!! Samozrejme, tento problém je možné vyriešiť věľmi jednoducho, pomocou ANSCII tabuľky, kde si stačí nájsť prislúšné znaky a príslušnú hodnotu, a to uložiť do do premennej typu char, a potom pomocou operatoru vystupu << vypisat obsah premennej! Kompilátor implementuje znaky, a text bude v poriadku[laugh]!
S pozdravom
AG
#include <iostream>
int main()
{
using std::cout;
using std::cin;
using std::endl;
// uloženie znakov z ASCII tabuľky
char prvy_znak =(char) 210; // Ď
char druhy_znak =(char) 160; // á
char treti_znak =(char)162; // ó
char stvrty_znak =(char)150; // ľ
char piaty_znak =(char)236; // ý
// vypíšeme text na obrazovku
cout << prvy_znak << "akujeme Ti za tento seri" <<druhy_znak << "l," << treti_znak << ",ve" << stvrty_znak << "k" << piaty_znak << " ribi!" << endl;
// pockame na stisknutie nejake klavesy
getchar();
// vrátime hodnotu fcii main()
return 0;
}
Kompiloval som to vo MS Visual C++ 6.0, a vystup bol presne taký, aký som chcel:-P Pouzil som na to znaky z ASCII tabulky, ktoru mozete najst na stranke http://www.gjh.sk/~3sismisova/ascii.php
Pozor! Pokial budete pouzivat nejaek inu ASCII tabulku, je dost mozne, ze vystup bude obsahovat uplne ine znaky, ako ste zadali!! Mne osobne sa velmi osvedcila prave tato ASCII tabluka!
S pozdravom
AG[laugh]