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_0206 Cyklus WHILE Anotace Žák si upevní učivo o cyklu WHILE v programovacím jazyku C Vytvořeno 19. 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++ Cyklus WHILE
Cyklus Cyklus v programu použijeme, pokud chceme příkaz opakovat vícekrát. Můžeme buď tyto příkazy opakovat předem známý početkrát (použijeme cyklus FOR) nebo je opakujeme tak dlouho, dokud nebude splněna určitá podmínka (použijeme cykly WHILE a DO WHILE).
Smyčka while Pomocí tohoto cyklu můžeme opakovat určitý kus kódu, dokud nebude splněna podmínka. Syntaxe cyklu vypadá takto: while (podmínka) //podmínka musí být splněna aby se cyklus vykonal { příkaz 1; příkaz 2; příkaz n; } Jako příklad si ukážeme program, který vypíše všechna sudá čísla do 100.
Příklad 1.#include <cstdlib> 2.#include <iostream> 3.using namespace std; 4.int main() 5.{ 6.unsigned short a; 7.a = 0; 8.while (a<101) 9.{cout << a << endl; 10.a = a+2;} 11.system("PAUSE"); 12.return EXIT_SUCCESS; 13.}
Rozbor programu Nejprve si nadeklarujeme proměnnou a. Přiřadíme jí hodnotu 0. Připočítáváme k ní hodnotu 2. Opakujeme tak dlouho, dokud se hodnota a nerovná 100. Vypisujeme sudá čísla.
Opakování cyklu while Ani jednou v tomto případě smyčka neproběhne vůbec. Tento případ nastane, jestliže není splněna podmínka již při prvním testování. Konečný počet krát toto je nejčastější případ. Nekonečný počet krát nekonečný cyklus, který se opakuje donekonečna. Nekonečný cyklus se většinou nepoužívá, protože algoritmy porušují jednu z vlastností algoritmů a to konečnost. Ve většině případů se nedopracujeme k žádnému výsledku. Pro ilustraci na dalším slidu najdete příklad nekonečného cyklu.
Příklad 1.#include <cstdlib> 2.#include <iostream> 3.using namespace std; 4.int main() 5.{ 6.unsigned short a = 5; 7.while(a>-5) 8.{cout << a; 9.a--; 10.} 11.system("PAUSE"); 12.return EXIT_SUCCESS; 13.} Pozor: tento program se sám neukončí a může způsobit zamrznutí systému.
Rozbor Na první pohled by měl program vypsat všechna čísla od +5 do -5. Avšak proměnná a je deklarována jako unsigned a proto nikdy nenabyde záporné hodnoty. Tím pádem bude vždy podmínka splněna a cyklus se neukončí.
Cyklus do while() Pokud chceme, aby se cyklus vykonal alespoň jednou (i když podmínka není splněna), použijeme cyklus do.. while. Syntaxe cyklu do { příkaz 1; příkaz 2; příkaz n; } while (podmínka); // opakuje, dokud podmínka platí Tento cyklus v podstatě funguje stejně jako klasický while, akorát podmínku testuje až po vykonání příkazů v bloku.
Příklad 1.#include <cstdlib> 2.#include <iostream> 3.using namespace std; 4.int main(int argc, char *argv[]) 5.{ 6.unsigned short a; 7.cout << "Zadej a: "; 8.cin >> a; 9.do 10.{ cout << "cyklus " << endl; 11.cout << "a = " << a << endl; 12.a --; 13.} 14.while (10 < a); 15.system("PAUSE"); 16.return EXIT_SUCCESS; 17.}
Rozbor V tomto případě se cyklus vykoná alespoň jednou. Takže, i když zadáte číslo 10 či menší se cyklus provede. V ostatních případech se bude od tohoto čísla odpočítávat až do 11. Poslední číslo vypsané na obrazovku je 11, protože proměnnou vypisujeme ještě před snížením její hodnoty o jedna, ale test proměnné probíhá už se sníženou hodnotou. Proto, když vypíšeme 11 a v následujícím kroku snížíme hodnotu o jedna, tak bude mít proměnná hodnotu 10, což nevyhovuje podmínce.
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.