03 kontrola toka programa
DESCRIPTION
informatikaTRANSCRIPT
-
STRUKTURE PODATAKA I ALGORITMI 1Kontrola toka
-
NAREDBE I BLOKOVI;znak za zavretak naredbex = 0;i++;printf(...);
{ i }oznaavaju poetak i kraj bloka naredbiIza znaka } kojim se zavrava blok ne stavlja se znak ;
-
IF-ELSENaredba grananjaSintaksaif (izraz)naredba1elsenaredba20 netano, razliito od 0 tanoif (izraz) umesto if (izraz != 0)
-
else se pridruuje najbliem ifif (n > 0)if (a > b)z = a;elsez = b;Za nametanje drugaijeg tumaenja koristite velike zagradeif (n > 0){if (a > b)z = a;}elsez = b;Dvosmislenost moe biti opasnaif (n > 0)for (i = 0; i < n; i++)if (s[i] > 0){printf("...");return i;}else /* POGRESNO*/printf("error -- n is negative\n");
-
ELSE-IFSintaksaif (izraz)naredbaelse if (izraz)naredbaelse if (izraz)naredbaelse if (izraz)naredbaelsenaredba
- BINARNO PRETRAIVANJE/* binsearch: find x in v[0]
-
SWITCHSintaksaswitch (izraz){case konst-izraz: naredbecase konst-izraz: naredbedefault: naredbe}Prekid izvravanja naredbe switch se vri naredbom break
-
BROJANJE POJAVLJIVANJA POJEDINIH KARAKTERA#include main() /* count digits, white space, others */{int c, i, nwhite, nother, ndigit[10];
nwhite = nother = 0;for (i = 0; i < 10; i++) ndigit[i] = 0;
while ((c = getchar()) != EOF){switch (c){case '0': case '1': case '2': case '3': case '4':case '5': case '6': case '7': case '8': case '9':ndigit[c-'0']++;break;case ' ': case '\n': case '\t':nwhite++;break;default:nother++;break;}}
printf("digits =");for (i = 0; i < 10; i++) printf(" %d", ndigit[i]);
printf(", white space = %d, other = %d\n",nwhite, nother);
return 0;}
-
PETLJE WHILE I FORPetlja while se izvrava sve dok je izraz taan. Tanost izraza se proverava pre poetka svakog ciklusa.while (izraz)naredbaforfor (izraz1; izraz2; izraz3)naredba
je isto to i
izraz1;while (izraz2){naredbaizraz3;}beskonana for petljafor ( ; ; ){...}
-
OPERATOR ZAPETA "," U FOR PETLJINavoenje vie izrazaFunkcija za preokretanje stringa
#include
/* reverse: reverse string s in place */void reverse(char s[]){int c, i, j;
for (i = 0, j = strlen(s)-1; i < j; i++, j--){c = s[i];s[i] = s[j];s[j] = c;}}
Ne garantuju izvravanje sa leva na desno
-
WHILE ILI FOR?while ((c = getchar()) == ' ' || c == '\n' || c = '\t'); /* skip white space characters */
for (i = 0; i < n; i++)...
Indeks i granica for petlje se mogu menjatiIndeks zadrava svoju vrednost nakon izlaska iz petlje
-
KONVEZIJA STRINGA U BROJDozvoljava postojanje vodeeg praznog prostora i znaka + ili
#include
/* atoi: convert s to integer; version 2 */int atoi(char s[]){int i, n, sign;
for (i = 0; isspace(s[i]); i++); /* skip white space */
sign = (s[i] == '-') ? -1 : 1;if (s[i] == '+' || s[i] == '-') i++; /* skip sign */
for (n = 0; isdigit(s[i]); i++)n = 10 * n + (s[i] - '0');
return sign * n;}
-
PETLJA DO-WHILEPetlja do-while se izvrava dok je izraz taanTanost izraza se proverava nakon zavretka svakog ciklusa donaredbawhile (izraz);Funkcija za konverziju broja u string/* itoa: convert n to characters in s */void itoa(int n, char s[]){int i, sign;
if ((sign = n) < 0) /* record sign */n = -n; /* make n positive */
i = 0;do /* generate digits in reverse order */{ s[i++] = n % 10 + '0'; /* get next digit */} while ((n /= 10) > 0); /* delete it */
if (sign < 0) s[i++] = '-';s[i] = '\0';reverse(s);}
-
NAREDBE BREAK I CONTINUEbreak omoguava prevremeni izlazak iz petlji for, while, do-while i switchFunkcija koja uklanja prazna mesta, tabulatore i nove redove sa kraja stringa/* trim: remove trailing blanks, tabs, newlines */int trim(char s[]){int n;
for (n = strlen(s)-1; n >= 0; n--)if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')break;
s[n+1] = '\0';
return n;}continue izaziva prestanak izvravanja trenutne iteracije i zapoinje izvravanje sledee iteracije petljefor (i = 0; i < n; i++){if (a[i] < 0) /* preskoci negativne elemente */continue;
... /* obradi pozitivne elemente */}
-
NAREDBA GOTO I OZNAKE (LABELE)Korienje naredbe goto i oznaka (labela) je loa programerska praksa i zato ih ovde neemo obraivatiKorienje naredbe goto dovodi do nepreglednog koda ije je izvravanje teko pratiti, pa je samim ti est uzrok greaka koje se teko otkrivajuNaredba goto nije neophodna i svaki program je mogue napisati i bez nje