Programska petlja do..while
Sjedište: | CARNET - Arhiva 2021 Loomen |
E-kolegij: | III. Gimnazija Osijek - Informatika 2 |
Knjiga: | Programska petlja do..while |
Otisnuo/la: | Gost (anonimni korisnik) |
Datum: | srijeda, 29. siječnja 2025., 20:42 |
1. Petlja do..while
Programska petlja do-while je petlja u kojoj se uvjet ponavljanja ispituje na kraju bloka naredbi. Upotrebljava se u slučajevima kada je blok naredbi unutar petlje potrebno izvršiti barem jedanput, neovisno o istinitosti danog uvjeta.
Njezin je opći oblik ovaj:
do{
blok_naredbi;
} while (uvjet);
A to znači: ponavljaj blok naredbi sve dok je uvjet istinit ili različit od 0.
Dijagram tijeka naredbe do-while:
Napomena: Kao što smo mogli ugnježđivati petlju for, isto tako možemo ugnježđivanje petlje while i do-while jedne u drugoj ili kombinirati dvije (ili više) različite petlje, ovisno o zahtjevima zadatka.
1.1. Primjer 1.
Nakon izvođenja programa:
#include <stdio.h>int main()
{
int i=1;
do
{
printf("%d ",i);
i++;
}while(i<=10);
return 0;
}
na zaslonu će se ispisati brojevi: 1, 2, 3, 4, 5, 6, 7, 8, 9 i 10 /*odvojeni razmakom jer u naredbi za ispis nije drukčije definirano*/.
Stavimo li u prethodnom primjeru početnu vrijednost kontrolne varijable i na 11, program izgleda ovako:
#include <stdio.h>
int main()
{
int i=11;
do
{
printf("%d ",i);
i++;
}while(i<=10);
return 0;
}
Nakon njegova izvođenja, na zaslonu će se ispisati samo broj 11.
Zašto?
Početna vrijednost kontrolne varijable je 11 i ona ne zadovoljava dani uvjet, ali uvjet se provjerava tek na kraju i sve naredbe koje se nalaze ispred provjere uvjeta će se izvršiti. Tek kada se provjeri uvjet, program izlazi iz petlje. Zbog toga treba biti vrlo oprezan pri uporabi petlje s provjerom uvjeta na kraju bloka naredbi.
1.2. Primjer 2.
Koje od ovih do-while oblika nisu ispravni i zašto?
a)
i=1;do (i<=10)
{
printf("%d ",i);
i++;
}while;
b)
i=1;while
{
printf("%d ",i);
i++;
}do(i<=10);
c)
i=1;do
printf("%d ",i);
while(i<=10);
d)
i=1;do
{
printf("%d ",i);
i+=2;
} while(i<=10);
Rješenje
- Oblik a) nije ispravan jer uvjet ponavljanja u do-while petlji treba biti na kraju bloka naredbi koje se ponavljaju.
- Oblik b) nije ispravan jer ključna riječ do mora biti na početku, a while na kraju bloka naredbi.
- Oblik c) ima ispravnu sintaksu, ali ima logičku pogrešku. Kontrolna varijabla i nigdje ne mijenja svoju vrijednost, cijelo vrijeme ostaje 1. Program će ući u beskonačnu petlju. Zamijetite da u ovom primjeru nismo napisali vitičaste zagrade jer se unutar bloka do-while nalazi samo jedna naredba.
- Oblik d) je ispravan i na zaslonu će ispisati brojeve: 1, 3, 5, 7 i 9 jer se kontrolna varijabla i povećava za 2 pri svakoj promjeni vrijednosti.
1.3. Primjer 3.
Kolika je vrijednost varijable a nakon izvođenja sljedećih naredbi?
int a=0;do
a++;
while (a>10);
Zašto?
Rješenje
Varijabla a=1 jer uvjet nije istinit. S obzirom na to da se uvjet ispituje na kraju, jedanput se izvrši naredba unutar petlje!
U ovom primjeru vitičaste zagrade nisu potrebne jer se unutar naredbe do-while izvršava samo jedna naredba.
1.4. Primjer 4.
Kolika je vrijednost varijabli a i b nakon izvođenja sljedećeg niza naredbi?
int a=10,b;do
{
b=a/2;
a=pow(a,2);
} while (a<50);
Rješenje
a = 100, b = 5
2. Zadaci za vježbu
1. Što će se ispisati na zaslonu nakon izvođenja sljedećeg programa?
#include <stdio.h>int main()
{
int i=1, s=0;
do
{
s+=i;
i++;
}while (i<=10);
printf("%d ",s);
return 0;
}
Kako glasi tekst kojim bi se zadao prethodni program?
2. Napišite program koji će s pomoću petlje do-while zbrojiti troznamenkaste brojeve djeljive s 19. Osim dobivenog zbroja, program treba na zaslonu ispisati i koliko ima takvih brojeva.
Izlaz: Zbroj je 28832, a ima ih 53
3. Napišite program koji će korisniku omogućiti učitavanje brojeva sve dok se ne upiše -1. Program treba na zaslonu ispisati koliko je među upisanim brojevima onih koji su djeljivi s 5.
Ulaz: 13 2 1 7 6 28 -1Ulaz: 15 21 5 10 13 -1
4. Napišite program koji će omogućiti upisivanje brojeva sve dok se ne upiše broj djeljiv s 3. Program treba ispisati koliko je ukupno upisano brojeva (uključujući i posljednji upisan broj), njihov zbroj i prosječnu vrijednost upisanih brojeva.
Ulaz: 2 7 13 17 21Izlaz: ima ih 5
zbroj: 60
Ulaz: 4 22 41 32 16 18
Izlaz: ima ih 6
zbroj: 133
3. Za one koji žele znati više!
1. Napišite program koji će tražiti upisivanje prirodnog broja n. Program treba pronaći i ispisati na zaslonu najmanji prosti broj koji je veći od n.
/* Prosti brojevi su prirodni brojevi koji su djeljivi samo s 1 i sa samim sobom */
2. Napišite program koji od korisnika traži upisivanje prirodnog broja n. Program treba pronaći i ispisati na zaslonu sve savršene brojeve od 1 do upisanog broja n. Broj je savršen ako je jednak zbroju svih svojih djelitelja, isključujući njega.
4. Dodatni materijali
Video lekcija - do..while petlja: