|
||
Funkce - 1.částV této lekci se zaměříme na další velmí důležitou kapitolu jazyka C++. Máme tím na mysly funkce, které jsou základem snad každého programu. Hlavním účelem funkcí je ulehčovat život programátorovi. Funkce totiž umožňují vytvořit část kódu, která je umístěna jakoby "bokem" a lze ji kdykoli použít (přivolat) i opakovaně. Syntaxe funkce je následující:
datový_typ jméno_funkce ( parametr1, parametr2, ...) { příkazy }
V tomto případě se jedná o syntaxi funkce, která bude vracet nějakou hodnotu. Proto je nutné definovat typ této hodnoty. Dále je třeba funkci nějakou pojmenovat, tedy přidělit ji nějaký identifikátor. Nyní se dostáváme k parametrům funkce. Funkce může obsahovat libovolný počet parametrů, ale také žádný. Každý parametr je opět nějakého typu, ale platí, že musí být stejný jako typ návratové hodnoty funkce. Například pokud bude návratová hodnota funkce typu int, musí být i parametry této funkce typu int. Nakonec se dostáváme k tělu funkce. Zde se nachází všehny příkazy, které má funkce provést. Příklad funkce:
#include <iostream>
První věcí, která by měla upoutat Vaši pozornost, je umístění funkce ve zdrojovém kódu. Jelikož int main() je rovněž funkcí, musíme ostatní funkce umístit ještě před hlavní funkci programu. Nyní k samotné funkci. V příkladu jsme vytvořili funkci secti, která vrací celočíselnou hodnotu - int. Funkce má dva parametry (a,b), které musí být rovněž typu int. Tělo funkce tvoří pouze jeden příkaz a to: return a + b;. Příkaz return znamená vrať, v tomto případě tedy bude funkce vracet hodnotu, která je rovna součtu parametrů a,b. Výstup programu bude následující:
Vysledek souctu je: 7
Podívejme se na další příklad:
#include <iostream>
Tento příklad je velmi podobný tomu prvnímu. Měl by posloužit jako ukázka toho, jak je možné funkce využít. Určitě jste si všimli, že parametrem nemusí být pouze konkrétní hodnota, ale i proměnná. Funkce si od této proměnné převezme hodnotu a dále pracuje pouze s touto hodnotou. Hodnota proměnné se nijak nezmění. Výstup programu bude následující:
1. vysledek je: 7
Funkce typu voidUž víme, že každá funkce musí být nějakého typu. Například pokud je funkce typu int, pak vrací hodnotu tohoto typu. Ovšem co když budeme chtít funkci, která nevrací žádnou hodnotu? Příkladem může být primitivní funkce, která vypíše pouze text na obrazovku. V takovém případě není nutné vracet žádnou hodnotu. Jak ale takovou funkci zapsat? Zápis funkce, která nebude nic vracet, je prakticky úplně stejný jako u funkcí, které vracet budou. Rozdíl je pouze v typu. V takovém případě nepoužijeme žádný datový typ, ale speciální typ void. Syntaxe funkce bude tedy:
void jméno_funkce ( parametr1, parametr2, ...) { příkazy }
Například:
#include <iostream>
V příkladě je vytvořena beznávratová funkce vypis_zpravu. Tato funkce nemá žádný parametr a provádí pouze výpis krátke zprávy. V hlavní funkci programu, je tato funkce zavolána pomocí:
vypis_zpravu();
Výstup programu:
Toto je funkce, ktera nevraci zadnou hodnotu!
Lokální a globální proměnnéNa závěr se ještě krátce vrátíme k proměnným. Vzhledem k tomu, že se v programech, které píšeme začalo díky funkcím vyskytovat více tzv. bloků, je potřeba znát rozdíl mezi lokální a globální proměnnou. Rozdíl mezi těmito typy proměných je patrný již z názvů. Lokální proměnná je deklarována uvnitř nějakého bloku, například v těle funkce a pracovat s ní lze pouze uvniř tohoto bloku. Naopak globální proměnná není deklarována uvnitř žádného bloku a lze s ní pracovat všude. Dále platí, že lokalní proměnná má vyšší prioritu než globalní. To si pokusíme vysvětlit na následujícím prříkladu:
#include <iostream>
V příkladě se nachází 2 stejné proměnné int a s tím rozdílem, že jedna je globální a druhá lokální. Podívejme se na výstup programu:
Vypis hlavni funkce: 7
V obou případech vypisujeme hodnotu proměnné a. Na začátku programu byla deklarována globální proměnná a = 7. Tuto hodnotu jsme dostali při prvním výpisu. Ve druhém výpisu jsme však dostali hodnotu 10. To je způsobeno tím, že příkaz pro tento výpis se nachází uvnitř funkce funkce_F. Jelikož má lokalní proměnná vyšší prioritu než globální a hodnota lokální proměnné je zde nastavena na 10, dostaneme toto číslo i na výstupu. Další příklad tentokrát však z jiného soudku:
#include <iostream>
Tento program se vůbec nepřeloží, jelikož hlásí následující chybu: error: 'b' was not declared in this scopePokud si tuto hlášku přeložíme do češtiny, dostaneme něco jako: chyba: proměnná b není v této oblasti deklarovánaVysvětlení je prosté. V příkladě se nachází pouze 2 lokální proměnné. A jak je známo, lokální proměnná platí pouze uvnitř bloku, ve kterém je deklarována. V našem případě je tím blokem funkce funkce_F. Pokud se tedy budeme snažit tuto proměnnou použít jinde než v tomto bloku, dostaneme již zmiňovanou chybovou hlášku. Pro úplnost si ještě ukážeme správné řešení:
#include <iostream>
Nyní bude program již v pořádku přeložen, jelikož jsme deklarovali globální proměnnou a tu můžeme použít kdekoliv.
55
Vzhledem k tomu, že znalost funkcí je opravdu důležitá a v této lekci je již dost nových informací, dovolíme si rozdělit tuto problematiku na 2 části. Pokud stále něčemu nerozumíte, rozhodně nepokračujte do další lekce. Raději si tuto lekci ještě jednou projděte. Teprve ve chvíli, kdy všemu porozumíte pokračujte dále. |
Počítadlo |
| Nahoru
Úvod |
HTML |
CSS |
C++ |
JavaScript |
Grafika & design |
Webhosting
|