Jazyk C - cykly: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 40: Riadok 40:
  
  
'''Cyklus s podmienkou na konci:'''
+
;Cyklus s podmienkou na konci: V tomto type cyklov sa testovacie podmienky testujú alebo hodnotia na konci tela cyklu. Preto sa bude cyklus vykonávať aspoň raz, bez ohľadu na to, či je testovacia podmienka pravdivá alebo nepravdivá. do - while cyklus je s podmienkou na konci.
V tomto type cyklov sa testovacie podmienky testujú alebo hodnotia na konci tela cyklu. Preto sa bude cyklus vykonávať aspoň raz, bez ohľadu na to, či je testovacia podmienka pravdivá alebo nepravdivá. do - while cyklus je s podmienkou na konci.
 
  
 
==For cyklus==
 
==For cyklus==

Verzia zo dňa a času 14:59, 19. máj 2020


Cykly

Cykly v programovaní sa začnú používať, keď potrebujeme opakovane vykonávať blok príkazov. Napríklad: Predpokladajme, že chceme vytlačiť „Hello World“ 10-krát. Toto sa dá urobiť dvoma spôsobmi, ako je uvedené nižšie:

Spôsob, ako to urobiť, je napísať printf() 10-krát.

 1 #include <stdio.h> 
 2   
 3 int main() 
 4 { 
 5     printf( "Hello World\n"); 
 6     printf( "Hello World\n"); 
 7     printf( "Hello World\n"); 
 8     printf( "Hello World\n"); 
 9     printf( "Hello World\n"); 
10     printf( "Hello World\n"); 
11     printf( "Hello World\n"); 
12     printf( "Hello World\n"); 
13     printf( "Hello World\n"); 
14     printf( "Hello World\n"); 
15       
16     return 0; 
17 }


V cykle musí byť príkaz napísaný iba raz a cyklus bude vykonaný 10-krát, ako je uvedené nižšie. V počítačovom programovaní je cyklus postupnosť inštrukcií, ktorá sa opakuje, až kým sa nedosiahne určitá podmienka.

Existujú hlavne dva typy cyklov:

Cykly s podmienkou na začiatku a na konci

Cyklus s podmienkou na začiatku
V tomto type cyklov sa testovacie podmienky testujú pred vstupom do cyklu. For cyklus a While cyklus sú vstupom riadené cykly.


Cyklus s podmienkou na konci
V tomto type cyklov sa testovacie podmienky testujú alebo hodnotia na konci tela cyklu. Preto sa bude cyklus vykonávať aspoň raz, bez ohľadu na to, či je testovacia podmienka pravdivá alebo nepravdivá. do - while cyklus je s podmienkou na konci.

For cyklus

Cyklus For sa používa na opakované vykonávanie bloku príkazov, kým sa daná podmienka nevráti nepravdivo. Cyklus nám umožňuje vykonať n počet krokov spolu na jednom riadku.

Cyklus for sa skláda z 3 častí

  • Inicializačná premenná: V tomto výraze musíme inicializovať počítadlo slučky na nejakú hodnotu. napríklad: int i = 1;
  • Testovací výraz: V tomto výraze musíme testovať stav. Ak sa stav vyhodnotí ako true, vykonáme telo slučky a prejdeme na aktualizáciu výrazu, inak opustíme slučku for. Napríklad: i <= 10;
  • Aktualizácia výrazu: Po vykonaní tela slučky tento výraz zvyšuje alebo zmenšuje premennú slučky o nejakú hodnotu. napríklad: i ++;

Vývojový diagram pre cyklus For

For cyklus.png


Syntax

for (inicializátor; podmienka; inkrement)
{
 // telo cyklu
}

Hello World skrz cyklus for

 1 #include <stdio.h> 
 2   
 3 int main() 
 4 { 
 5     int i=0; 
 6       
 7     for (i = 1; i <= 10; i++) 
 8     { 
 9         printf( "Hello World\n");     
10     } 
11   
12     return 0; 
13 }

Výstup:

10x Hello World


Príklad vypíš čísla od 1 po 10:

 1 // Napíš čísla od  1 po 10
 2 #include <stdio.h>
 3 
 4 int main() {
 5 
 6   for (int i = 1; i < 11; ++i)
 7   {
 8     printf("%d ", i);
 9   }
10   return 0;
11 }

Výstup:

1
2
3
4
5
6
7
8
9
10

V cykle for sa na riadenie cyklu používa premenná (v našom prípade i). Najprv inicializujte túto premennú cyklu na nejakú hodnotu, potom skontrolujte, či je táto premenná menšia alebo väčšia ako hodnota počítadla. Ak je príkaz pravdivý, vykoná sa telo cyklu a aktualizuje sa premenná. Kroky sa opakujú, až kým nedôjde k výstupu.

Cyklus While

Pri štúdiu cyklu for sme vedeli, že počet iterácií je známy vopred, t. j. Koľkokrát sa vykoná telo cyklu, zatiaľ čo while cyklus sa používa v situáciách, keď vopred nevieme presný počet iterácií slučky. Vykonanie slučky je ukončené na základe testovacích podmienok.

Syntax

Cyklus while pozostáva z inicializačného výrazu.

inicializačná premenná;
while (testovací_výraz)
{
   // tvrdenie
 
  aktualizácia_výrazu;
}


Vlasnosti cyklu while:

  • Na kontrolu stavu sa používa podmienený výraz. Príkazy definované vo vnútri cyklu while sa budú opakovane vykonávať až do zlyhania danej podmienky.
  • Podmienka bude splnená, ak sa vráti 0. Podmienka bude neplatná, ak vráti akékoľvek nenulové číslo.
  • V slučke while je podmienený výraz povinný.
  • Je možné spustiť cyklus bez tela.
  • V cykle while môžeme mať viac ako jeden podmienený výraz.
  • Ak telo cyklu obsahuje iba jeden príkaz, sú zátvorky voliteľné.[1]



Vývojový diagram:

While (1).png

Príklady v jazyku c

 1 // C program ktorý ilustruje while cyklus
 2 #include <stdio.h> 
 3   
 4 int main() 
 5 { 
 6     // inicializačný výraz
 7     int i = 1; 
 8   
 9     // testovycí výraz
10     while (i < 6) 
11     { 
12         printf( "Hello World\n");     
13   
14         // aktualizovaný výraz
15         i++; 
16     } 
17   
18     return 0; 
19 }

Výstup

Hello World
Hello World
Hello World
Hello World
Hello World


Vypíš čísla od 1 do 10

1 #include<stdio.h>  
2 int main(){    
3 int i=1;      
4 while(i<=10){      
5 printf("%d \n",i);      
6 i++;      
7 }  
8 return 0;  
9 }

Výstup

1
2
3
4
5
6
7
8
9
10

Cyklus Do while

Na rozdiel cyklov for a while ktoré testujú stav cyklu na začiatku, cyklus do while v programovaní v C testujú stav cyklu na konci. To znamená že ukončenie cyklu je podmienené na základe ukončovacích podmienok. Cyklus do while je podobný ako cyklus while s výnimkou že cyklus do while sa vykoná aspoň raz.[2]

Syntax

inicializačný výraz;
do
{
   // výrok

   aktualizovaný výraz;
} while (testovací_výraz);

Poznámka: Na konci cyklu while je bodkočiarka.


Vývojový diagram:

DoWhile.png

Všimnite si, že podmienený výraz sa objaví na konci cyklu, takže výrok v slučke sa vykoná raz pred testovaním podmienky.

Ak je podmienka splnená, tok kontroly vyskočí späť a príkaz sa v slučke znova vykoná. Tento proces sa opakuje, kým sa daná podmienka nestane nepravdivou.


Príklady v jazyku C

 1 // C program na ilustráciu do while cyklu
 2 #include <stdio.h> 
 3   
 4 int main() 
 5 { 
 6     int i = 2; // inicializačný výraz
 7   
 8     do
 9     { 
10         // telo cyklu 
11         printf( "Hello World\n");     
12   
13         // aktualizovaný_výraz 
14         i++; 
15   
16     }  while (i < 1);   // testovací_výraz
17   
18     return 0; 
19 }

Výstup

Hello world

Vo vyššie uvedenom programe sa testovacia podmienka (i <1) vyhodnotí ako nepravdivá. Ale aj keď je slučka ukončená - telo slučky sa vykoná raz.


Výpis čísel od 1 po 10

1 #include<stdio.h>  
2 int main(){    
3 int i=1;      
4 do{    
5 printf("%d \n",i);    
6 i++;    
7 }while(i<=10);   
8 return 0;  
9 }

Výstup

1
2
3
4
5
6
7
8
9
10


Program tabuľky pre dané číslo pomocou cyklu do while

 1 #include<stdio.h>  
 2 int main(){    
 3 int i=1,cislo=0;    
 4 printf("Vloz cislo: ");    
 5 scanf("%d",&cislo);    
 6 do{    
 7 printf("%d \n",(cislo*i));    
 8 i++;    
 9 }while(i<=10);    
10 return 0;  
11 }


Výstup

Vloz cislo: 5
5
10
15
20
25
30
35
40
45
50

Nekonečný cyklus

Nekonečný cyklus je časť programovania, ktorá nemá funkčný výstup, takže sa opakuje donekonečna. Nekonečný cyklus nastane, keď sa stav vždy vyhodnocuje ako pravdivý. Zvyčajne sa jedná o chybu.

Cyklus do-while bude prebiehať donekonečna,keď ako podmienený výraz odovzdáme ľubovoľnú nenulovú hodnotu.

do{  
//výraz  
}while(1);


 1 // Program C na demonštráciu nekonečných cyklov pomocou for a while
 2   
 3 #include <stdio.h> 
 4   
 5 int main () 
 6 { 
 7     int i; 
 8   
 9     // Toto je podmienka pre nekonený cyklus
10     // výraz je prázdny 
11     for ( ; ; ) 
12     { 
13        printf("Tento cyklus bude bežať do nekonečna.\n"); 
14     } 
15   
16     // Nekonečný cyklus ako podmienka 
17     // Ak je cyklus zadaný,opakuje sa do nekonečna
18     /* 
19     while (i != 0) 
20     { 
21         i-- ; 
22         printf( "Tento cyklus bude bežať do nekonečna.\n"); 
23     } 
24     */
25   
26     // Nekonečný cyklus ako podmienka
27     // while cyklus je "true" 
28     /* 
29     while (true) 
30     { 
31         printf( "Tento cyklus bude bežať do nekonečna.\n"); 
32     } 
33     */
34 }


''Výstup''
Tento cyklus bude bežať do nekonečna.
Tento cyklus bude bežať do nekonečna.
Tento cyklus bude bežať do nekonečna.
..........
..........
Tento cyklus bude bežať do nekonečna.

Referencie