Programovanie v C++ - 2. diel

Seriál o programovaní v programovacom jazyku C++. V druhom diele sa dozviete niečo o dátových typoch jazykov C/C++ a takisto aj niečo o funkciách.
I keď pôvodne som plánoval, že druhý diel seriálu o programovaní v C++ začnem rovno výkladom o základnej štruktúre programu písanom v C++ a podobne, rozhodol som sa, že začiatok dnes v krátkosti venujem rozdielom medzi jazykmi C a C++. Tento úvod je venovaný predovšetkým tým, čo sú už do tejto problematiky zasvätený. V prípade, že ste v oblasti C/C++ úplne noví, kľudne tento odstavec preskočte.
Na prvý pohľad sa môže zdať, že rozdiel medzi C a C++ je naozaj len zahrnutie podpory objektového programovania v druhom z menovaných. Sú tu však aj rozdiely v dátových štruktúrach a najmä v štandardných knižniciach jazykov C a C++, pribudlo niekoľko nových programových konštrukcií a dátových typov. Napriek tomu sa však dá povedať, že keď ovládate C, bez problémov môžete prejsť na C++ a to isté platí aj naopak, samozrejme s istými obmedzeniami, keďže C sa dá označiť za podmnožinu C++.

Dátové typy
V tomto diele seriálu sa okrem funkcií zoznámime aj s dátovými typmi jazyka C++. Pre o niečo lepšie pochopenie výkladu o funkciách začnem výkladom o dátových typoch. Každá dátová štruktúra v C/C++ musí mať svoj dátový typ. Dátový typ reprezentuje typ ich návratovej hodnoty a veľkosť, ktorú budú tieto dátové štruktúry zaberať v pamäti. Pripomínam, že veľkosti dátových typov sa môžu na rôznych platformách líšiť (čiže na 64-bitovej platforme budú mať dvojnásobnú veľkosť v porovnaní s 32-bitovou platformou). Ja sa budem držať veľkostí pre 32-bitové platformy.

Pre prípad, že niekto neovláda pojmy ako bit, byte a pod., tak nasleduje krátky výklad o nich. Bit je základná údajová jednotka. Môže nadobúdať 2 číselné hodnoty, 0 a 1, čiže vypnutý/zapnutý, pravda/nepravda a pod.
I keď sa to môže zdať málo, keď skombinujeme viacero bitov, môžeme vytvoriť dátové štruktúry, ktoré môžu nadobúdať hodnotu kľudne aj 2^32. Kombináciou 8 bitov dostaneme jeden byte. Môže nadobúdať 256 číselných hodnôt (2^8). Keď skĺbime dva byty, získame jedno slovo. Počet možných číselných hodnôt je 2^16, čiže 65536.
Podobným spôsobom môžeme získať štvorslovo (4 byty = 2^32) až N-slovo (N bytov = 2^(N*8)). Pochopenie týchto skutočností je mimoriadne dôležité, ak sa niekedy budete chcieť zaoberať programovaním rúznych matematických operácií a pod.

V jazyku C existovalo päť základných dátových typov: void, int, char, float, double. S dvoma z nich sme sa už čiastočne zoznámili. Prvý z menovaných, void, je dátový typ bez návratovej hodnoty. Spočiatku jeho význam asi nebudete veľmi chápať, ale neskôr, keď sa dostaneme k pointerom (zatiaľ sa netrápte, čo pointer znamená), tak pochopíte. Druhý, int, je dátový typ reprezentujúci celé čísla. Má veľkosť 32b (4B).
Ďalším základným dátovým typom jazyka C je char, ktorý sa používa (alebo skôr používal) najmä pri práci so znakmi práve vďaka jeho veľkosti 8b (1B), vďaka čomu môže nadobúdať 256 hodnôt, čo presne zodpovedá 256 znakom ASCII tabuľky používanej voľakedy vo veľkom najmä v operačnom systéme DOS.
Dátové typy float a double sa používajú pri práci s reálnymi číslami. Tieto typy sa líšia veľkosťou, no mnohé kompilátory majú možnosť nastaviť, či sa tieto dva typy budú odlišovať, alebo považovať za zhodné. Podľa štandardu má ale typ float veľkosť 32b (4B) a typ double veľkosť 64b (8B).
Jazyk C++ rozšíril rodinu dátových typov o dva nové: bool a wchar_t. Dátový typ bool sa veľmi rýchlo stal neoddeliteľnou súčasťou takmer každého programu napísaného v C++. Môže nadobúdať len dve hodnoty, a to true (1) alebo false (0). Vďaka tejto vlastnosti sa používa vždy pri vyhodnocovaní pravdivostnej hodnoty podmienok. Wchar_t ...

Okrem základných dátových typov existujú ešte aj ďalšie. Na to, aby ste ich mohli použiť existujú tzv. typové modifikátory: short, long, signed, unsigned. Typové modifikátory ovplyvňujú dĺžku dátového typu (short, long) a to, či bude so znamienkom, alebo nie (signed, unsigned), no žiaden z nich nemožno použiť v kombinácii s dátovými typmi bool a void.

Tu by som mal spomenúť, čo znamená „so znamienkom“ a čo znamená „bez znamienka“. Vysvetlím to na údajovom type char, keďže má dĺžku len 1B. Keď je dátový typ bez znamienka, znamená to, že sa bude indexovať od nuly. V prípade char to znamená, že bude môcť nadobúdať hodnoty 0 až 255 (0..(2^n-1)) . Keď má byť dátový typ „so znamienkom“, znamená zo, že bude môcť nadobúdať hodnoty –(2^(n/2))..(2^(n/2)-1). V prípade typu char teda hodnoty od -128 po 127.

Typové modifikátory short a long sa používajú najmä vtedy, keď chcete vynútiť veľkosť dátového typu, či už z dôvodu kompatibility alebo z nejakého iného. Vysvetlím na dátovom type int, pretože sa používajú hlavne s ním (povedal by som, že v praxi jedine s ním). Keď napíšete short int, alebo jednoducho short (ekvivalentné zápisy), tak to znamená, že v pamäti sa vyhradia 2B, čiže 16b. Samotné short znamená celočíslený dátový typ s veľkosťou rovnou, alebo väčšou ako char, maximálne však 16b.
Kompilátory Microsoftu (možno aj iné, ale neviem o tom) ponúkajú aj dátový typ __intN, kde N je počet bitov pre dátovú štruktúru (8, 16, 32, alebo 64). Takto si môžete byť istý, že na každej platforme bude mať vaša dátová štruktúra veľkosť rovnakú. Teda dátový typ veľkosti 32 bitov zapíšeme ako __int32.

Funkcie – základ
Teraz už ale konečne k samotnému programovaniu. Na začiatku som spomenul niečo o štruktúre programu písaného v C++. Spomenul som to preto, lebo každý program napísaný v C/C++ musí obsahovať funkciu main() (v prípade programovanie pre Win32 je to funkcia WinMain, ale o tom až niekedy inokedy).

Funkcie sú úplne neoddeliteľnou časťou C/C++. Každá funkcia môže, ale tiež nemusí vracať nejakú hodnotu (hovorí sa jej návratová hodnota). Návratová hodnota závisí od jej typu. Definícia funkcie vyzerá asi takto:
__typ __názov_funkcie ( zoznam parametrov aj s ich typom )

{

	__príkazy;

}
Ozrejmíme si to konkrétne na funkcii main()
int main()

{

	return 0;

}
Ako typ návratovej hodnoty som uviedol int. To znamená, že funkcia main() bude vracať hodnotu, ktorá bude celočíselná a, samozrejme, bude typu int . Z takejto funkcie budeme musieť vyskočiť príkazom return, pričom zaň budeme musieť uviesť aj hodnotu, s ktorou sa z funkcie vyskočí (to znamená ukončiť jej činnosť). V prípade funkcie main() platí, že ak sa z nej vyskočí s návratovou hodnotou 0, program sa skončil normálnou formou (čiže jeho ukončenie nebolo zapríčinené chybou). V opačnom prípade to znamená, že sa niečo nepodarilo.

Existuje však aj jeden špeciálny typ, ktorý nemá žiadnu hodnotu. Volá sa void.
void main()

{

}
Keď je funkcia typu void, znamená to, že z jej tela (časť medzi zátvorkami {} ) nebudeme musieť vyskakovať príkazom return. Skončí sa automaticky po vykonaní všetkých príkazov v jej tele. Ak niekto z vás niekedy programoval v jazyku Pascal, alebo Object Pascal, tak vedzte, že toto je ekvivalent procedúry.

Záver časti
V dnešnej časti sme sa dozvedeli čo to o dátových typoch jazykov C a C++, o tom aké majú vlastnosti a veľkosť a takisto sme si povedali niečo o funkciách. V ďalšom diele seriálu si bližšie opíšeme funkcie a zoznámime sa s premennými.
Alternatívne verzie: Text PDF Voice
Autor: Ribi · Kategória: Programovanie · Dátum: 11.07.2005 16:35

Komentáre

Zatiaľ tu nie sú žiadne komentáre.

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti