Наредбе break и continue¶
У приручнику Увод у програмирање у програмском језику C# погледајте поглавље 4.4 (стране 69-74).
При основној употреби петљи, када се уђе у тело петље извршавају се све наредбе тела петље, а затим се провереава да ли их треба поновити. Осим овакве употребе, постоји могућност да се извршавање наредби тела петље прекине и пре него што се изврше све наредбе тела петље. Томе служе наредбе break и continue. Ове две наредбе могу да се пишу у телу било које петље.
Наредба break¶
Када при извршавању наредби тела петље рачунар наиђе на наредбу break (енгл. прекини), он прекида извршавање целе петље и наставља од наредбе која је наведена након петље.
Погледајмо како ово изгледа на примерима.
Пример - прва негативна температура
Познате су температуре за сваки дан неког периода. Написати програм којим се одређује редни број дана у том периоду када је температура први пут била негативна.
Уноси се прво број дана периода, а затим толико целих бројева који представљају температуре. Програм треба да испише редни број дана када је температура први пут била негативна (дани се броје од 1), а -1 ако такав дан не постоји.
Један од начина да решимо задатак је овај:
Из петље излазимо чим знамо одговор, јер нема потребе за даљим итерирањем. По изласку из петље ће у променљивој dan свакако бити тачан одговор (зашто?), који још само треба исписати.
Пример - збир до уноса тачке
Написати програм који учитава целе бројеве и исписује њихов збир. Бројеви се учитавају и сабирају док корисник не унесе тачку као знак за крај улазних података.
Задатак се може решити на пример овако:
Ако у стринг s учитамо тачку, то значи да смо сабрали све предвиђене бројеве и можемо одмах да изађемо из петље. У противном, у стрингу s се налази следећи цео број који треба сабрати.
Наредба continue¶
Када при извршавању наредби тела петље рачунар наиђе на наредбу continue (енгл. настави, продужи), он прекида извршавање текуће итерације и програм се наставља провером услова. После тога се (у зависности од вредности услова) може ући у нову итерацију или завршити са извршавањем петље.
Пример - одлични и математика
Дат је број ученика n, а затим за сваког од њих општи успех (реалан број заокружен на две децимале) и закључна оцена из математике. Написати програм који учитава ове податке и исписује колико међу одличним ђацима има закључених двојки, тројки, четворки и петица из математике.
Чим видимо да успех није одличан, можемо да пређемо на нову итерацију, што се постиже наредбом continue. Ако смо остали у текућој итерацији, то значи да је општи успех одличан и у наставку обрађујемо оцену из математике.
Приметимо узгред да смо наредбе break и continue у сва три примера писали у if наредби. То није случајно, јер би без if наредбе наставак тела петље постао недохватљив (такозвани „мртав код”) и не би имао смисла.
Наредбе break и continue нам омогућавају да лакше саставимо алгоритам, јер уз њихово коришћење имамо више начина да се изразимо. Са друге стране, ове наредбе могу да отежају читање програма у којима су употребљене у телу петље, јер је потребно више пажње да би се разумело како таква петља функционише. Због тога су ове две наредбе предмет дуге и неразрешене дискусије међу програмерима. Постоје различита мишљења о томе да ли ове наредбе треба користити, а они који сматрају да треба не слажу се сасвим у томе како их треба користити.
Због свега овога, општа препорука је да ове наредбе треба користити обазриво. То значи на пример, ако једнако добро можемо да решимо проблем и без ових наредби (ствар индивидуалне процене, критеријуми могу бити уложени труд, јасноћа програма, ефикасност решења, итд.), радије ћемо их избећи. Уколико одлучимо да користимо неку од наредби break или continue, добро је да се употреба ових наредби некако истакне (празан ред после ње, коментар) да бисмо помогли ономе ко чита наш програм да га лакше разуме.
Када видимо да петља почиње са while (true), то се може схватити као најава да је негде у телу петље наредба break. Заиста, пошто ће услов петље очигледно увек бити испуњен, наредба break, је у оваквој петљи једини преостали начин да из те петље искочимо.
Питања за проверу знања¶
- наставља извршавање испод if наредбе у којој је наредба continue
- Не.
- проверава услов петље и покушава нову итерацију
- Тачно!
- прекида извршавање целе петље
- Не.
Q-72: После наредбе continue, програм …
- наставља извршавање испод if наредбе у којој је наредба break
- Не.
- проверава услов петље и покушава нову итерацију
- Не.
- прекида извршавање целе петље
- Тачно!
Q-73: После наредбе break, програм …
- while
- do-while
- for
Q-74: У којим наредбама понављања се може користити наредба break?