Proměnné, konstanty a komentáře v C++

C++ Základní konstrukce C++ Proměnné, konstanty a komentáře v C++

Co je to proměnná a k čemu nám slouží
Proměnná je datový typ, který nám umožňuje uchovávat určité hodnoty. Aby se od sebe různé proměnné odlišily, má každá své vlastní jméno (identifikátor), pomocí kterého k ní můžete přistupovat. Výběr vhodného jména je zcela na vás, ale měli byste se řídit jistými pravidly:

  • Můžete používat alfabetické znaky(bez háčků a čárek), číslice a znak podtržení (_)
  • První znak ve jménu nesmí být číslice!
  • Nemůžete používat pro jména klíčová slova jazyka C++
  • Jména začínající jedním nebo dvěma znaky podtržení můžou být rezervována pro implementaci
  • C++ narozdíl od C neklade žádné omezení na délku jmen (v C je to max. 31 znaků)

Nepsaným pravidlem při používání víceslovných názvů bývá oddělení slov podtržítkem nebo zavedení velkého počátečního písmene v každém slově. Ulehčuje to orientaci a čtení ve zdrojovém kódu. Jména proměnných většinou narozdíl od jmen funkcí začínají malým písmenem...

Proměnné můžou být různých typů => každá je určená pro jiný druh dat. V této lekci se budeme zabývat pouze základnímy typy, jež slouží pro uložení celých čísel nebo čísel v pohyblivé řádové čárce. Dále existují ještě typy odvozené, jako pole, řetězce nebo struktury a třídy, o tom ale až jindy. V C++ můžete i určit, zda má být daná proměnná se znaménkem nebo bez, tedy zda má reprezentovat kladné, nebo i záporné hodnoty. Tím se dá opět ušetřit trochu místa v operační paměti počítače, kam se všechny proměnné ukládají.

Celočíselné proměnné

Jak už název napovídá, jedná se o proměnné sloužící pro ukládání celých čísel. Jazyk C++ má několik druhů těchto proměnných, které se liší v objemu paměti, kterou používají pro uložení celého čísla, a tedy i v rozsahu hodnot které může daný druh reprezentovat. Rozlišujeme tedy typy char, short, int a long. Typ char je určen především pro ukládání znaků. Nejpoužívanější typ je int a počítač s ním většinou pracuje i nejrychleji. Pokud budete chtít zjistit, kolik bytů daný datový typ užírá z paměti, můžete použít operátor sizeof.

Proměnné s pohyblivou řádovou čárkou

Tyto proměnné mají také několik druhů, opět rozdělené podle velikosti, kterou zabírají, a dále podle přesnosti které mohou uložená čísla dosáhnout. Tento druh čísel je v paměti uložen trochu odlišně než je tomu u celých čísel. Systém vyhrazuje určitý počet bitů pro exponent(neboli jakési pomyslné měřítko) a dále pro vlastní hodnotu (mantisu). Exponent způsobuje pohyb řádové čárky, odtud plyne jejich název. Jazyk C++ rozlišuje tyto základní typy těchto proměnných: float, double a long double. Liší se podle počtu významných číslic a rozsahu exponentu.

Jak v programu vytvořit proměnnou

Abysme v programu mohli proměnné používat, musíme je nejprve vytvořit, tzn. říct nějak programu, aby alokoval potřebné množství paměti. Toto ukazuje následující kód:

//lekce2.cpp - promenne
#include <iostream>
using namespace std;
int main()
{
    int vyska; //Vytvori celociselnou promennou typu int
    int sirka = 10; //promenne prirazena hodnota 10
    int obsah;
    cout << "Zadejte vysku obdelniku: ";
    cin >> vyska; //priradi promenne vyska hodnotu
    obsah = sirka * vyska;
    cout << "\nObsah obdelniku je " << obsah;
    return 0;
}

Tak začátek by vám už měl být jasný, tak tedy přejdeme k proměnným. Takto lze vytvářet i proměnné s pohyblivou čárkou, takže jsem je vynechal. Výraz int vyska tedy založí novou proměnnou po názvem vyska. Typ proměnné je vždy uváděn před identifikátorem. Na dalším řádku je vytvoření spojeno s inicializací proměnné, tedy je jí okamžitě přiřazena určitá hodnota. Ale co když inicializaci neprovedeme, jako tomu bylo na předchozím řádku? No proměnná pak bude mít náhodnou hodnotu! Zde se může zrodit spousta chyb, proto by bylo vhodné proměnnou po založení okamžitě inicializovat. Dále je pro vás asi nový objekt cin. Je to obdoba cout, avšak vykonává úkol uplně opačný, posílá řetězec nebo číslo, které napíšete, do proměnné stojící hned za dvojicí šipek. Jistým kouzlem může být to, jak vlastně cin pozná, zda má vstup uložit jako číslo nebo řetězec. Toto tajemství je ukryto hluboko v definici třídy iostream a řídí se podle typu proměnné stojící napravo od tohoto objektu (tedy objektu cin). Tohle a ještě mnohem více nám umožňují nové objektové vlastnosti jazyka C++ (ale ne jazyka C). Nakonec mezi sebou obě proměnné vynásobíme a výsledek uložíme do proměnné obsah.

Konstanty

Pokud o nějaké proměnné víme, že její hodnotu nebudeme měnit, nebo že hodnota nesmí být změněna, je vhodné ji deklarovat jako konstantu. Za dob vlády jazyka C se toto řešilo pomocí direktivy preprocesoru #define, ale jazyk C++ má lepší metodu. Tím je použítí kvalifikátoru const. Pokud poté budete chtít do takto "ošetřené" proměnné přiřadit jinou hodnotu, kompilátor nahlásí chybu. Uvedeme si malý příklad:

//lekce2.cpp - promenne
#include <iostream>
using namespace std;
int main()
{
     const float PI = 3.14159f;
     const long milion;
     milion = 1000000; //Zde nahlasi prekladac chybu
     float r = 2.15;
     float objemKoule = (4/3)*PI*r*r*r;
     return 0;
}

Na prvním řádku ve funkci main() vidíte inicializaci konstanty. Zde se to určitě hodí, protože pí může mít jedině jednu hodnotu. Na dalším řádku opět vytváříme konstantu, ale hodnotu se jí pokoušíme přiřadit až později - to je ale chyba. Neposkytnete-li totiž hodnotu, když deklarujete konstantu, skončí tato s nespecifikovanou hodnotou, kterou již ale dále nemůžete modifikovat. Ještě poznámka k zápisu čísla pí. Jak ste si jistě všimli, končí znakem "f". Je to proto, že C++ s jakoukoli konstantou v pohyblivé řádové čárce pracuje jako s typem double, pokud mu neřeknete jinak. Kdybychom to takhle neudělali, nahlasil by překladač varování, že se pokoušíte přiřadit hodnotu typu double do proměnné typu float. Explicitní vyjádření typu se nazývá přetypování. O tom se ale budeme bavit až později...

Komentáře ve zdrojovém kódu

Jazyk C i C++ nám kromě již známé metody zápisu komentáře nabízí ještě jednu alternativu. Ta se neomezuje pouze na jeden řádek, ale na všechno co leží mezi znaky /* a */. Toto se používá především když chceme překladači "skrýt" část zdrojového kódu, u které si například nejsme jisti správností. Můžete ho ale použít i kdykoli jindy, např. místo obyčejného s uvozujícímí znaky //. Je to čistě na vás (jako skoro většina věcí v C++)...


 

  Aktivity (3)

Článek pro vás napsal Jiří Pipošiar
Avatar
Moc toho tady o sobě prozrazovat nebudu, raději:)) Takže momentálně žiju v Klatovech(velkoměsto v západních Čechách), a 22.5.2003 jsem zde i odmaturoval na střední průmyslové škole. No a novinka - byl jsem přijat na Západočeskou univerzitu - Faku...

Jak se ti líbí článek?
Celkem (3 hlasů) :
55555


 


Miniatura
Předchozí článek
Váš první program v C++
Miniatura
Všechny články v sekci
Základy C++
Miniatura
Následující článek
Funkce a prototypy v C++

 

 

Komentáře

Avatar
maco.igr
Člen
Avatar
maco.igr:

preco neuvedies ze to using namespace std; tam byt nemusi, vo vela programatorskych programoch staci dat do <iostream.h> a nemusi tam dat to
using namespace std; alebo sa milim???

 
Odpovědět 4.11.2012 21:29
Avatar
Odpovídá na maco.igr
Lukáš Hruda (Luckin):

V kompilátorech který mají k dispozici iostream se iostream.h nepoužívá. Třeba v Code::blocks už iostream.h myslim ani neni. Používal se v dobách kdy v C++ ještě neexistovaly jemnný prostory. V iostream je všechno v namespace std což zabraňuje možným kolizím jmen. Pokud nepoužíváš zastaralej kompilátor tak iostream.h doporučuju nepoužívat.
Jinak using namespace std; stejně používat nemusíš, můžeš si pomocí using z toho názvosloví "vyndat" jenom to co chceš (třeba using std::cout;) a nebo pak před všechno co do toho názvosloví patří pak musíš psát std::.
Když si budeš psát nějakou vlastní knihovnu tak bys všechno co v ní je měl dávat do nějakýho specifickýho nazvosloví.

 
Odpovědět  +1 4.11.2012 21:58
Avatar
maco.igr
Člen
Avatar
maco.igr:

moze to byt aj v slovach nie len v cisliciach?? ako napr.??

#include <iostream>

using namespace std;

int main()
{
string a;
string b;

cout<<"\t\t\t Toto je merac vzdialenosti"<<en­dl;
cout<<"********­************************­************************­**********************";
cout<< "Zadaj dva stychto miest a odelte ich medzerou: "<<endl;
cout<<" zh"<<endl;
cout<<" zc"<<endl;
cout<<" bb"<<endl;
cout<<" zv"<<endl;
cin>> a;
cin>> b;
cout<<endl;
if ((a=="PRAHA" && b=="BRATISLAVA") || (a=="BRATISLAVA" && b=="PRAHA")){
cout<< "Vzdialenost medzi timito mestami je 248 km"<<endl;
}

system ("pause");
return 0;
}

 
Odpovědět 5.11.2012 11:07
Avatar
maco.igr
Člen
Avatar
Odpovídá na Lukáš Hruda (Luckin)
maco.igr:

aha dik lebo som sa stym niekedy stretol a niekedy nie tak aspon viem

 
Odpovědět 5.11.2012 11:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.