<< Chapter < Page Chapter >> Page >

Друг облик на структура за повторување е do. . . while структурата кoja е “превртена” верзија на структурата за повторување while. Ако во while циклусот по условот следува телото со наредби што се повторуваат, кај do. . . while циклусот прво се пишува телото со наредби за повторување, па следува условот. Од ова произлегува дека наредбите од циклусот ќе бидат извршени сигурно еднаш, пред да се провери условот. Ако условот е неточен, наредбите од циклусот do. . . while нема да бидат повторно извршени. Обликот на оваа структура е

do тело (наредба за повторување);while (услов);

или пак

do {блок наредби; }while (услов);
Слика 2. Блок дијаграм на структурата do … while

Пример 4.

Користејќи 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

Пример 5.

Програмата

int j = -10; printf(“start\n”);do {printf(“j = %d\n”,); j--;} while (j>0); printf(“stop\n”);

на екранот ќе отпечати само

start

j = -10

stop

Структурa за повторување (for)

Од аспект на синтаксата for циклусот за повторување е најсложен. Сепак, тој е сличен на while циклусот, бидејќи и самиот содржи while тип на услов (се додека е исполнет, односно точен условот се извршуваат наредбите од телото). Синтаксата на оваа структура за повторување е од облик:

for (иницијализација; услови; инкременти или декременти) тело (наредба/наредби за повторување) ; Drawing
Слика 3. Блок дијаграм на структурата for

Наредбите од делот иницијализација се извршуваат точно еднаш, на почетокот - пред влезот во циклусот. Наредбите од делот услови се извршуваат пред почетокот на секој нов циклус и доколку тие имаат вредност која се интерпретира како логичка вистина се влегува во повторување на наредбите од циклусот, во спротивно се завршува повторувањето на циклусот и се продолжува со наредбите што следуваат по циклусот во програмата. Наредбите од делот инкременти или декременти се извршуваат на крајот на секој циклус (по извршувањето на сите наредби од телото на циклусот) по што се извршуваат наредбите од делот услови и доколку се задоволени, циклусот се повторува.

Исто како и кај if и while, доколку треба да се изврши само една наредба, таа едноставно се пишува по for делот, доколку, пак, треба да се извршат повеќе наредби (блок наредби) по for делот, тие се ставаат во блок ограничен со големи загради { } .

ВАЖНО!!!

Да се внимава дека знакот ; мора да ги одделува трите дела на for наредбата. Исто така условот во for наредбата мора да биде од типот “ се додека е исполнет условот “.

Пример 6.

Истиот пример, наведен претходно за печатење на почетниот број 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 не постои ограничување за чекорот.

Пример 7.

Програма за табелирање на функцијата sin x , 0 x π size 12{"sin"x,~0<= x<= π} {} со чекор 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. Како што е наведено, вредностите на аглите задолжително се задаваат со радијански мерки.

Пример 8.

Во деловите за иницијализација и менување на вредности од 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).

Клучни зборови break и continue

Од претходните примери за наредбите while и for се гледа можноста за креирање на бесконечен циклус. Знаејќи го ефектот од користењето на бесконечниот циклус произлегува дека треба да се одбегнува по секоја цена. Сепак, во програмскиот јазик C може да се користат бесконечни циклуси од кои ќе се излегува, односно скокнува надвор од нив. Користењето на клучниот збор break овозможува излегување од било кој циклус, независно од условот и продолжување со првата следна наредба по циклусот.

Пример 9.

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.

Пример 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

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Вовед во програмирање. OpenStax CNX. Oct 28, 2013 Download for free at http://cnx.org/content/col11379/1.12
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Вовед во програмирање' conversation and receive update notifications?

Ask