Превремени излазак из циклуса¶
Са наредбом break
сусрео си се у програмима који имају реализовано вишеструко
гранање наредбом switch-case
. Ту је наредба break
имала улогу да прекине
извршавање switch
наредбе.
Слично томе, наредба break
омогућава прекидање извршавања петље, односно
излазак или искакање из петље. Има исту функционалност у for
, while
и
do-while
петљама. Када се break
изврши, прекида се итерација петље која се
извршава и наставља се са извршавањем наредби написаних након тела петље.
Унутар тела петље, наредба break
се обично смешта у једној од грана if-else
наредбе, као у примерима са бесконачним петљама у претходним лекцијама.
Напиши програм у програмском језику C који сабира целе бројеве унете на стандардном улазу, све док се не унесе нула. На крају на стандардном излазу исписује се добијени збир.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int broj, zbir = 0;
do
{
scanf("%d", &broj);
if (broj != 0)
zbir += broj;
else
break;
} while (1);
printf("%d", zbir);
return 0;
}
Наредба break
може да се налази и у угнежђеним петљама. Ако се break
изврши
у унутрашњој петљи, прекида се њено извршавање и наставља се са итерацијом прве
следеће итерације спољашње петље. Ако се break
изврши у спољашњој петљи,
прекида се извршавање целе петље.
Напиши програм за погађање замишљеног броја у интервалу од 1 до 100. Корисник
може да погађа замишљени број 10 пута, а при сваком покушају треба да добије
повратну информацију о томе да ли је замишљени број мањи или већи од унетог,
све док не погоди замишљени број. Ако погоди замишљени број, извршиће се
наредба break
у унутрашњој петљи и наставиће се извршавање спољашње петље.
Спољашња петља се извршава све док корисник жели да настави са игром. Како би
замишљени број стварно био случајан, за генерисање случајног броја можеш да
користиш функције rand()
, srand()
и time()
.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char izbor;
do
{
srand(time(0));
int unos, pokusaj = 1;
int broj = rand() % 100 + 1;
printf("\nPogodi zamisljeni broj od 1 do 100\n");
do
{
printf("%d. pokusaj. Unesi broj: ", pokusaj);
scanf("%d", &unos);
if (broj > unos)
printf("Broj je veci!\n");
else if (broj < unos)
printf("Broj je manji!\n");
else
{
printf("\nPogodak iz %d pokusaja!\n", pokusaj);
break;
}
pokusaj++;
} while (pokusaj <= 10);
printf("\nZelis li da nastavis (D/N): ");
scanf(" %c", &izbor);
} while (izbor == 'd' || izbor == 'D');
return 0;
}
Рачунарски систем је само скуп електронских уређаја који није у стању да мисли као човек и измишља случајне бројеве, па се због тога каже да се генеришу псеудо-случајни бројеви. Како би генерисани бројеви били што мање предвидљиви, прибегава се разним „триковима”.
У овом задатку први пут си се сусрео са библиотечким функцијама time()
,
srand()
и rand()
. Функција time()
враћа број секунди од 01.01.1970. до
тренутка њеног извршавања. Вредност коју ће вратити фукција time()
користиће
функција srand()
за иницијализацију генератора псеудо-случајних бројева. Када
се иницијализује генератор псеудо-случајних бројева, функција rand()
генерисаће псеудо-случајан цео број у интервалу од \(0\) до \(32767\).
Генерисање случајних бројева на рачунару велики је изазов на пољу информационе безбедности, а приказани поступак представља један од основних алгоритама који повезује тренутно време са генерисаним псеудо-случајним бројем. Више о овој теми учићеш у IV разреду у оквиру предмета „Заштита информационих система”.