<< Chapter < Page | Chapter >> Page > |
Друг облик на структура за повторување е do. . . while структурата кoja е “превртена” верзија на структурата за повторување while. Ако во while циклусот по условот следува телото со наредби што се повторуваат, кај do. . . while циклусот прво се пишува телото со наредби за повторување, па следува условот. Од ова произлегува дека наредбите од циклусот ќе бидат извршени сигурно еднаш, пред да се провери условот. Ако условот е неточен, наредбите од циклусот do. . . while нема да бидат повторно извршени. Обликот на оваа структура е
do
тело (наредба за повторување);while (услов);
или пак
do
{блок наредби;
}while (услов);
Користејќи ja do…while структурата, програмата од Примерот 1 сега може да се запише како:
int j = 5;
printf(“start\n”);do
printf(“j = %d\n”,j--);while (j>0);
printf(“stop\n”);
и на екранот ќе се отпечати:
start
j = 5
j = 4
j = 3
j = 2
j = 1
stop
Програмата
int j = -10;
printf(“start\n”);do
{printf(“j = %d\n”,);
j--;}
while (j>0);
printf(“stop\n”);
на екранот ќе отпечати само
start
j = -10
stop
Од аспект на синтаксата for циклусот за повторување е најсложен. Сепак, тој е сличен на while циклусот, бидејќи и самиот содржи while тип на услов (се додека е исполнет, односно точен условот се извршуваат наредбите од телото). Синтаксата на оваа структура за повторување е од облик:
for (иницијализација; услови; инкременти или декременти)
тело (наредба/наредби за повторување)
;
Наредбите од делот иницијализација се извршуваат точно еднаш, на почетокот - пред влезот во циклусот. Наредбите од делот услови се извршуваат пред почетокот на секој нов циклус и доколку тие имаат вредност која се интерпретира како логичка вистина се влегува во повторување на наредбите од циклусот, во спротивно се завршува повторувањето на циклусот и се продолжува со наредбите што следуваат по циклусот во програмата. Наредбите од делот инкременти или декременти се извршуваат на крајот на секој циклус (по извршувањето на сите наредби од телото на циклусот) по што се извршуваат наредбите од делот услови и доколку се задоволени, циклусот се повторува.
Исто како и кај if и while, доколку треба да се изврши само една наредба, таа едноставно се пишува по for делот, доколку, пак, треба да се извршат повеќе наредби (блок наредби) по for делот, тие се ставаат во блок ограничен со големи загради { } .
ВАЖНО!!!
Да се внимава дека знакот ; мора да ги одделува трите дела на for наредбата. Исто така условот во for наредбата мора да биде од типот “ се додека е исполнет условот “.
Истиот пример, наведен претходно за печатење на почетниот број 5 и потоа во секој циклус тој се намалува за 1 и се печати бројот се додека се добива позитивен број, е прикажан и на трет начин со структурата for:
int j;
for (j = 5; j>0; j--)
printf(“j = %d\n”,j--);
и резултатот што ќе се отпечати на екранот е:
j = 5
j = 4
j = 3
j = 2
j = 1
Треба да се забележи дека за разлика од некои програмски јазици, каде чекорот во for циклусот можеше да биде само 1, во C не постои ограничување за чекорот.
Програма за табелирање на функцијата со чекор 0.2.
#include<stdio.h>#include<math.h>int main()
{double agol;
for(agol = 0.0; agol<3.14159; agol += 0.2)
printf(“sinus od %.1lf e %.2lf\n”, agol, sin(agol));return 0;
}
Во овој пример, променливата agol се зголемува за 0.2 радијани при секое извршување на наредбата for, се додека е исполнет условот agol<3.14159. Како што е наведено, вредностите на аглите задолжително се задаваат со радијански мерки.
Во деловите за иницијализација и менување на вредности од for наредбата, по потреба може да се наведат повеќе изрази кои се одвојуваат со знакот запирка( , ). Запирката гарантира последователно извршување на наведените изрази.
int i, j, k;
for (i = 0, j = 5, k = -1; i<10; i++, j++, k--)
Ако нема потреба од наведување на изрази во овие два дела, тие можат да бидат изоставени, но НЕ СМЕАТ да се заборават знаците ; . Коректно напишана е следната наредба
for(; i<10; i++, j++, k--)
Со наредбата
for( ; ; )
се креира бесконечна јамка и се чита “засекогаш”(for ever).
Од претходните примери за наредбите while и for се гледа можноста за креирање на бесконечен циклус. Знаејќи го ефектот од користењето на бесконечниот циклус произлегува дека треба да се одбегнува по секоја цена. Сепак, во програмскиот јазик C може да се користат бесконечни циклуси од кои ќе се излегува, односно скокнува надвор од нив. Користењето на клучниот збор break овозможува излегување од било кој циклус, независно од условот и продолжување со првата следна наредба по циклусот.
for(;;)
{printf(“vnesi int vrednost:”);
if(scanf(“%d”,&j) == 1)
break;while((c = getchar()) != ‘\n’);
}printf(“j = %d\n”, j);
Оваа програма на екранот ќе испечати:
vnesi int vrednost: an int
vnesi int vrednost: no
vnesi int vrednost: 16
j = 16
Во случај ако scanf врати 1 (односно ако се вчита преку тастатура цел број), се излегува од бесконечната јамка.
Пример 10.
for(ј = 1; ј<= 10; j++)
{if(j % 3 == 0)
continue;printf(“j = %d\n”, j);
}
На екранот оваа програма ќе печати:
j = 1
j = 2
j = 4
j = 5
j = 7
j = 8
j = 10
Notification Switch
Would you like to follow the 'Вовед во програмирање' conversation and receive update notifications?