piątek, 5 lutego 2016

C - Pętla While

Tym razem opiszę zasadę działania oraz sposoby wykorzystywania pętli while.

Wygląd pętli while:

while(warunek)
{
   //Dalsza część
}

Pętla ta będzie się wykonywać dopóki warunek wpisany w nawiasie będzie prawdziwy. Nie zostanie wykonana nawet raz, w przeciwieństwie do pętli for, jeżeli warunek nie zostanie spełniony.

Przykładowy prosty program przedstawiam poniżej. Będzie się on wykonywał dopóki wartość w zmienna będzie mniejsza od liczby 10.

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int zmienna = 0;
 
    while(zmienna < 10)
    {
        printf("Zmienna wynosi: %d\n", zmienna);
        zmienna++;
    }
    return 0;
}

Drugi przykład działa podobnie z tym, że obsługuje dodatkowy warunek.

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int zmienna = 0;
    char znak = 65;
 
    while((zmienna < 10) && (znak <= 70))
    {
        printf("Zmienna wynosi: %d\n", zmienna);
        printf("Znak: %c\n", znak);
        zmienna++;
        znak++;
    }
    return 0;
}

Można też wykorzystać dodatkowe instrukcje takie jak continue czy break,

Instrukcja Continue pozwala na ponowne wykonanie iteracji. W przypadku programu poniżej operacje będą powtarzane bez końca, ponieważ wartości zwiększające określone zmienne znajdują się po słowie continue, co oznacza, że w momencie osiągnięcia przez zmienną znak wartości 70, pętla nie otrzymuje dostępu do komend zmienna++ oraz znak++, ponieważ przed nimi wraca na początek pętli while. 

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int zmienna = 0;
    char znak = 65;
 
    while((zmienna < 10) && (znak <= 70))
    {
        printf("Zmienna wynosi: %d\n", zmienna);
        printf("Znak: %c\n", znak);
        if(znak==70) continue;
        zmienna++;
        znak++;
    }
    return 0;
}

Break służy do przerwania wykonywania kolejnej pętli, nawet jeśli warunek jest spełniony.

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int zmienna = 0;
    char znak = 65;
 
    while((zmienna < 10) && (znak <= 70))
    {
        printf("Zmienna wynosi: %d\n", zmienna);
        printf("Znak: %c\n", znak);
        if(znak==67) break;
        zmienna++;
        znak++;
    }
    return 0;
}