VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu CZ.1.07/1.5.00/34.1076 Název projektu Pro vzdělanější Šluknovsko Číslo a název šablony 32 Inovace a zkvalitnění výuky prostřednictvím ICT Autor 0207 Mgr. Bc. Jan Škoda Tematická oblast Programování Číslo a název materiálu VY_32_INOVACE_0207_0203 Operátory Anotace Žák si upevní učivo o operátorech v programovacím jazyku C Vytvořeno 18. 7. 2013 Určeno pro 3. ročník oboru Informační technologie Přílohy Bez příloh
Metodický list Učitel: Výklad s projekcí elektronického učebního materiálu. Demonstrace v reálném prostředí. Ukázka obecného postupu činností. Monitorování činnosti žáků. Žák: Sleduje výkladovou projekci a demonstraci učitele. Procvičuje na reálném prostředí softwaru.
c++ Operátory
Operátory Operátor Popis = operátor přiřazení (a=b; přiřadí proměnné a hodnotu proměnné b) +,- Určitě si pamatujete operátor přiřazení (=). Dnes se podíváme na matematické operátory, které budete potřebovat při výpočtech. sčítání, odčítání (a = 2-1; hodnota a bude 1, a = 2+1; hodnota a bude 3) *,/ násobení a dělení % zbytek po celočíselném dělení ++ inkrementace (zvýší hodnotu o jedna) -- dekrementace (sníží hodnotu o jedna)
Operátory a = 5 + 3; a = b+c; q = b/c; r = b*c;
Dělení V případe, že jsou dělenec i dělitel reálného typu (typ proměnné schopný ukládat desetinné čísla (double, float)) a výsledek se ukládá také do proměnné reálného typu, potom bude výsledek desetinné číslo. Jestliže však bude alespoň jedna z těchto proměnných celočíselného typu půjde o celočíselné dělení a výsledek bude celé číslo.
Zbytek po celočíselném dělení Pomocí tohoto operátora můžete získat zbytek po celočíselném dělení. Např.: a = 6%4; hodnota a bude 2.
Inkrementace a dekrementace Mezi nejčastější operace patří zvýšení a snížení hodnoty proměnné o jedna. Proto, abychom nemuseli psát c=c+1; nebo c=c-1; existují operátory inkrementace a dekrementace. To samé jako c=c+1 udělá i c++, podobně c=c-1 je to samé jako c--. Oba tyto příkazy zvýší, anebo sníží hodnotu proměnné o jedna.
Prefix a postfix Inkrementace i dekrementace mají dvě formy, prefixovou a posfixovou. Prefixová forma vypadá takto: ++c, nebo --c a postfixová c++ a c--. Rozdíl v obou formách zápisu je v tom, že prefixový operátor se vyhodnocuje před přiřazením, ale postfixový až po něm. Takže jestliže použijete prefixovou formu, tak se nejprve přičte jednička k proměnné a až potom se uloží (vrátí) její hodnota. Při postfixové formě se nejprve uloží (vrátí) hodnota proměnné a až potom se zvýší o jedna. Podívejme se na následující příklad:
Příklad 1.#include <iostream> 2.using namespace std; 3.int main() 4.{ unsigned short hodnota; //dvě celočíselné proměnné 5.unsigned short hodnotadva; 6.hodnota = hodnotadva = 1; //oběma přiřadíme hodnotu 1 7.cout<<"Puvodni hodnota: " << hodnota << ".\n"; //vypíšeme jejich hodnoty 8.cout<<"Puvodni hodnotadva: " << hodnotadva << ".\n"; 9.cout<<"Nova hodnota (hodnota++;): " << hodnota++ << ".\n"; //nejprve vrátí hodnotu proměnné, až potom ji zvýší o jedna 10.cout<<"Nova hodnotadva (++hodnotadva;): " << ++hodnotadva << ".\n"; //nejprve zvýší hodnotu proměnné hodnotadva o jedna, až potom vrátí její hodnotu 11.cout<<"hodnota jeste jednou: " << hodnota << ".\n"; //ješte jednou vypíšeme obě proměnné abyste viděli, že mají obě dvě stejnou hodnotu 12.cout<<"hodnotaDva jeste jednou: " << hodnotadva << ".\n"; 13.system("PAUSE"); 14.return EXIT_SUCCESS; 15.}
Konstanty Konstanty jsou "proměnné", kterým se hodnota nedá změnit. Konstanty jsou vhodné, jednak pro přehlednost a srozumitelnost programu, a také pokud se v našich programech často vyskytuje číslo/čísla, které je/jsou náročné na zapamatování (např. π = 3,1415926535). V c++ máme dva způsoby jak konstanty definovat.
Definice pomocí #define Jde o klasickou formu definice konstanty: #define Mesicu 12 Tento řádek řekne preprocesoru, aby každý text Mesicu v kódu nahradil číslem 12. Všimněte si, že před názvem není žádný typ, protože preprocesoru je úplně jedno co místo textu Mesicu do kódu vloží. Fungovalo by například i toto:
Příklad 1.#include <iostream> 2.#define jmeno "Pavel" 3.using namespace std; 4.int main() 5.{ 6.cout<<jmeno; 7.system("PAUSE"); 8.return EXIT_SUCCESS; 9.} Výstupem je slovo Pavel;
Konstanty Nepleťte si to však s proměnnými, protože v tomto případe nedojde k žádnému vytvoření proměnné a kdybychom později napsali: jmeno = Karel"; kompilátor by nám vyhodil chybu (jak ukládat řetězce si povíme později, až budeme rozebírat pole). V našem případě kompilátor vidí místo řádku cout< < jmeno; už řádek s nahrazením cout< < "Pavel"; protože preprocesor běží před kompilátorem.
Definice pomocí const Definice proměnné pomocí klíčového slova const vypadá takto: const unsigned short Mesicu = 12; Výhodou této definice je, že konstanta má přesně daný typ, čímž zabezpečíme, že ji bude kompilátor používat v souladu s jejím typem. Zamezíte tak vzniku možných chyb a kód se vám bude lehčeji udržovat.
Příklad 1.#include <cstdlib> 2.#include <iostream> 3.using namespace std; 4.int main() 5.{ 6.const unsigned short detivetride = 32; //Deklarace konstanty s maximálním počtem dětí ve třídě 7.unsigned short deti; //Počet dětí, které chceme do tříd rozmístit 8.unsigned short trid,prebytek; //Proměnné na počet tříd a počet přebývajících dětí 9.cout<<"Zadejte pocet deti: "; 10.cin>>deti; 11.trid = deti/detivetride; //Počet tříd 12.prebytek = deti%detivetride ; //Nadpočetné deti 13.cout<<"Potrebujete " << trid << " trid a " << prebytek << "deti je navic.\n"; 14.system("PAUSE"); 15.return EXIT_SUCCESS; 16.}
Příklad - rozbor Jako první si v programu definujeme maximální počet dětí ve třídě, což je konstantní hodnota, proto ji také tak definujeme. Ještě si vytvoříme proměnné na uložení potřebných hodnot. Postupujeme načítáním počtu dětí a výpočtem počtu tříd. Na řádku trid = deti/detivetride; jde o celočíselné dělení (protože všechny typy jsou celočíselné), abychom nedostali výsledek, že potřebujeme např.: 2.12 tříd. Na následujícím řádku zjistíme zbytek po tomto dělení, což představuje počet nezařazených dětí přebytečných dětí.
Zdroje BERAN, Martin. Učebnice Borland C: učebnice programování v Borland C 4. generace. Praha: BEN - technická literatura, 1995, 442 s. ISBN 80-238-0304-2. HEROUT, Pavel. Učebnice jazyka C. 3. vyd. České Budějovice: Kopp, 1994, 269 s. ISBN 80-858-2821-9. HEROUT, Pavel. Učebnice jazyka C: 2. díl. 1. vyd. České Budějovice: KOPP, 1995, 236 s. ISBN 80-858-2850-2. SCHILDT, Herbert. Nauč se sám C. Překlad Jiří Grée, Adéla Gréeová. Praha: SoftPress, 2001, 623 s. ISBN 80-864-9713-5.