Co je to proměnná
Jedná se o nějaké místo, kde je možné uchovat danou informaci. Jde vlastně o místo v paměti Vašeho počítače, na které uložíme potřebnou hodnotu a s touto hodnotou můžeme poté dále pracovat. Je nutné si uvědomit, že v tomto případě se jedná pouze o dočasné uložení, čili po vypnutí programu se hodnota ztratí. Pokud bychom chtěli hodnotu uložit trvale, můžeme ji zapsat například do textového souboru nebo ji můžeme uložit do databáze. To však není předmětem tohoto dílu.
Pokud chceme v programu definovat proměnnou, musíme překladači říct, o jaký druh se bude jednat (znak, celé číslo, apod.). Na tomto základě pak kompilátor vymezí v paměti potřebné místo.
Základní typy proměných
V následující tabulce najdete přehled typů proměnných v jazyce C++, společně s velikostí, kterou zabírají v paměti.
Typ | Hodnoty | Velikost |
unsigned short int | 0 – 65 535 | 2 B |
short int | -32 768 – 32 767 | 2 B |
unsigned long int | 0 – 4 294 967 295 | 4 B |
long int | -2 147 483 648 – 2 147 483 647 | 4 B |
int | -2 147 483 648 – 2 147 483 647 | 4 B |
unsigned int | 0 – 4 294 967 295 | 4 B |
char | 256 znakových hodnot | 1 B |
float | 1,2e-38 – 3,4e38 | 4 B |
double | 2,2e-308 – 1,8e308 | 8 B |
bool | true nebo false | 1 B |
Velikost proměnných se může lišit, záleží to na typu překladače a počítače. Rozmezí hodnot není nutné si přesně pamatovat, já osobně si to také nepamatuji. Důležité je vědět to, že do proměnné typu int uložíte pouze celá čísla, pokud napíšete unsigned, znamená to kladná čísla. Dále si pamatujte, že do proměnných typu float a double je možné uložit desetinná čísla, proměnná typu char slouží k uložení znaku a bool nabývá pouze hodnot true nebo false. Pro naše účely nám zatím tyto vědomosti budou stačit.
Jak tedy definovat proměnnou v programu?
Pokud chceme v programu zavést proměnnou, napíšeme nejprve její typ (double, bool, int apod.), následuje mezera a název proměnné. Pak můžeme hned do proměnné přiřadit hodnotu, nebo napíšeme středník s tím, že hodnotu přiřadíme později. Název proměnné může být tvořen prakticky jakoukoliv kombinací čísel a písmen (bez háčků a čárek), nesmí však obsahovat mezery. Snažte se vždy proměnnou pojmenovat tak, aby její název napovídal k čemu proměnná slouží.
int CeleCislo; // definice proměnné typu int
unsigned long int VelkeCeleCislo; // definice proměnné unsigned long int
Na ukázce vidíte definici dvou proměnných – obdobným způsobem můžete definovat i ostatní typy proměnných. Jen připomínám, komentáře není nutné opisovat. Proměnné, které jsem v ukázce definoval, zatím nemají žádnou hodnotu. Pokud chceme do proměnné nějakou hodnotu přiřadit, použijeme operátor přiřazení ( = ).
// Přiřazení hodnot do proměnných
CeleCislo = 120;
VelkeCeleCislo = 5000;
Přiřadit hodnotu do proměnné můžeme také hned při jejím definování. To provedeme takto:
// Přiřazení hodnot do proměnných
int CeleCislo = 120;
unsigned long int VelkeCeleCislo = 5000;
Jak jistě vidíte, nejedná se o nic složitého. S proměnnými je pak možné provádět matematické operace (pokud se jedná o proměnné, mající číselnou hodnotu). V následující ukázce jsou definovány tři proměnné, do dvou z nich přiřadíme hodnoty a do třetí hodnoty přiřadíme jejich podíl.
float cislo1 = 5;
float cislo2 = 2;
int vysledek = cislo1 / cislo2;
Nyní se na kód podívejte a zkuste říct, jaká hodnota je nyní v proměnné vysledek. Myslíte si, že hodnota 2,5? Pokud ano, je to špatně. V proměnné vysledek je hodnota 2. Ptáte se proč? Proměnná vysledek je typu int, což znamená celé číslo. Výsledek se tedy zaokrouhlil směrem dolů na celé číslo. Kdybychom chtěli dosáhnout výsledku 2,5, musela by proměnná vysledek být typu float nebo double. Obdobným způsobem je možné provádět operace sčítání, odčítání a násobení. ( +, –, * ).
Konstanty
Obdobně jako proměnné, tak i konstanty slouží k uložení nějaké hodnoty. Rozdíl je ale v tom, že hodnotu proměnné můžete v programu libovolně měnit, kdežto hodnotu konstanty měnit nelze. V jazyce C++ máme na výběr ze dvou možností, jak definovat konstantu.
Prvním způsobem je užití klíčového slova const. Konstantu definujeme úplně stejně jako obyčejnou proměnnou, jen s tím rozdílem, že na začátek napíšeme slovo const.
const char mujZnak = 'r';
Na ukázce je vidět definice konstanty typu char, do které je přiřazen znak r. Všimněte si, že je uzavřen do apostrofů. Dále nezapomínejte, že pokud definujete konstantu, musíte jí hned také inicializovat, čili přiřadit hodnotu, kterou již dále v programu není možné měnit.
Druhý způsob, jak definovat konstantu, je použití klíčového slova define. Současný standard C++ ovšem považuje tento způsob deklarace za již překonaný, proto se na něj jenom letmo podíváme a dále jej používat nebudeme.
#define mojeKonstanta 10;
Zde si hlavně všimněte, že chybí operátor přiřazení a není zde ani určen typ. Příkaz #define znamená pouhé nahrazení textu. V tomto případě tedy pokaždé, když preprocesor najde slovo mojeKonstanta, nahradí jej pouze hodnotou 10.
Program – obsah kruhu
Abychom si práci s proměnnými trochu procvičili, napíšeme si jednoduchý program na výpočet obsahu kruhu. V minulém díle jsem sliboval “kalkulačku”, která sečte dvě čísla, tu si však můžete napsat sami – bude to vesměs podobná záležitost.
Zadání je tedy snadné – po spuštění programu bude uživatel vyzván, aby zadal poloměr kruhu, načež mu program vrátí obsah tohoto kruhu. Předem podotýkám, že program nebude ošetřen pro případ zadání špatného vstupu, tedy pokud by uživatel místo poloměru zadal například nějaký text, program by nefungoval správně. Cílem tohoto dílu jsou však proměnné, proto nám to nebude vadit. Budeme předpokládat, že vstup bude vždy správný. Samozřejmě při nějaké větší aplikaci bychom si to nemohli dovolit.
#include <iostream>
using namespace std;
int main()
{
const double pi = 3.14159;
double polomer;
double obsah;
cout << "Zadejte polomer kruhu: ";
cin >> polomer;
obsah = pi * polomer * polomer;
cout << "Obsah kruhu je " << obsah << ".\n";
return 0;
}
Jak vidíte, kód není nikterak složitý. První dva řádky by Vám měly být jasné z minulého dílu, stejně tak byste měli vědět, kde začíná a kde končí funkce main. Připomínám, že funkcí main začíná každý program. V programu máme tedy vytvořenou konstantu pi, do které je hned přiřazena hodnota 3.14159. Dále máme proměnné polomer a obsah. Těm není hned přiřazena hodnota, neboť ji dopředu ani neznáme. Následuje výpis textu Zadejte polomer kruhu, což je výzva pro uživatele. Následující řádek pro Vás ale je zatím neznámý – mám na mysli řádek cin >> polomer. Cin je objekt, který se stará o načtení vstupu, v našem případě se tedy do proměnné polomer uloží uživatelem zadané číslo. Abychom tento objekt mohli použít, musíme do našeho programu zahrnout iostream. Dále si všimněte, že “zobáky” ukazují opačným směrem než při použití cout. Správně se těmto “zobákům” říká operátor vyjmutí nebo nebo též výstupní operátor. Zatím se blíže objektem cin nebudeme zabývat, ale určitě se k tomu podrobněji dostaneme v nějakém dalším díle. Na dalším řádku se počítá obsah kruhu. Asi nemusím říkat, že obsah kruhu se vypočte jako poloměr na druhou krát pí. Poté následuje výpis na obrazovku. Zde se podívejte, že text je uzavřen do uvozovek, kdežto proměnná ne. Kdybychom název proměnné nechali v uvozovkách, nevypsala by se hodnota proměnné, ale právě její název. Na poslední řádku funkce main vrací hodnotu nula.
Kdybyste si chtěli napsat již zmiňovanou kalkulačku pro součet dvou čísel, potřebovali byste dvě proměnné, do kterých byste si pomocí cin uložili hodnoty (čísla, které by se měly sečíst). Pak už by stačilo jen do nějaké proměnné uložit součet a ten vypsat. Pokud chcete, můžete si to zkusit.
Závěrem
Pro tento díl je to již vše. Nyní byste měli mít základní znalost práce s proměnnými, což je velmi důležité, neboť bez proměnných se v programu jen velmi těžko obejdete. V příštím díle si probereme podmínky, které nám umožňují větvení programu. Na konci si opět napíšeme nějaký krátký program, kde podmínky využijeme.