Бројачки циклуси

Бројачки циклуси се користе у следећим случајевима:
– када се тело циклуса понавља тачно одређени број пута (нпр. потребно је команду поновити 10 пута)
– када се у телу циклуса користи вредности између две грачничне вредности (нпр исписати све бројеве између 43 и 71)

У програмском језику C овакви циклуси се реализују помоћу for наредбе код које се као параметри задају:
– почетна вредност неке променљиве која представља бројач и говори нам колико пута је извршен циклус,
– услов за излазак из циклуса (односно, то је услов за извршавање циклуса. Циклус ће се извршавати све док услов (логички израз) има вредност true, а када добије вредност false излази се из циклуса). Као услов најчешће се користи провера да ли је вредност бројача мања од неке вредности која представља крајњу вредност бројача, односно број извршавања циклуса
– ажурирање бројача – промена вредности бројача. Ово ажурирање се извршава након што су извршене све наредбе које сачињавају „тело циклуса“, па се са том новодобијеном вредношћу бројача израчунава вредност услова.
Изглед наредбе for:

for(izraz1; izraz2; izraz3)

где је:
izraz1 – постављање почетне вредности бројача, у облику i=pv. Овај део наредбе представља припрему за улазак у петљу.
izraz2 – провера услова, у облику i<kv или i>kv ako je kv<pv
izraz3 – ажурирање бројача, у облику i=i+k. Ако је промена вредности бројача у сваком кораку за 1 онда се користи облик i++. Овај део наредбе представља припрему за извршавање следећег циклуса.

Делови for наредбе у загради (изрази 1, 2 и 3) морају се раздвојити знаком ;

Алгоритамска реализација бројачких циклуса изгледа као на слици:

Slika1

Ова врста циклуса се извршава на следећи начин:

1. управљачка променљива – бројач (i) добија почетну вредност (pv) (i=pv)
2. извршавају наредбе из тела циклуса (naredba1, naredba2, …, naredbaN)
3. долази се до краја тела циклуса и враћа се извршење на управљачку променљиву. Ажурира се вредност управљачке променљиве – повећава се за 1. (i++)
4. проверава се да ли је вредност управљачке променљиве (i) мања од крајње вредности (kv). (i<kv)
–     уколико није поново се улази у тело циклуса
–     уколико јесте излази се из циклуса и извршава се прва следећа наредба ван тела циклуса

Овако дефинисана наредба извршаваће се kv-pv+1 пута.

Као управљачка променљива, односно бројач, може се користити само целобројни тип података (int). Самим тим, и почетна вредност бројача и крајња вредност бројача морају бити типа int.


Пример 1. Нацртати алгоритам и написати програм који исписује бројеве од 1 до неке задате вредности N.
Решење:
– корисник уноси вредност за N
– наредбу исписа вредности потребно је поновити N пута

slika2

#include
 main()
 {
      int N,prom;
      printf("Unesi vrednost za N:");
      scanf("%d",&N);
      for(prom=1;prom<=N;prom++)
           printf("prom=%d\n",prom);
 }

Овде је као услов наведен израз i<=N да би се приликом извршавања циклуса укључила и горња граница. У случају израза i<N циклус би се извршио N-1 пут!


Овом врстом бројачких циклуса решава се читав низ проблема који се могу груписати на следећи начин:
– сума (производ) N бројева
– сума (производ) првих N бројева:
– сума (производ) по неком услову:
– просечна вредност N бројева
– пребројавање по неком услову
– комбинација претходних проблема

Задаци:
1. Нацртати дијаграм тока и написати програм који израчунава збир N унетих бројева.
2. Нацртати дијаграм тока и написати програм који израчунава N! (факториел броја N = 1*2*3*4*…*N)
3. Нацртати дијаграм тока и написати програм који израчунава производ позитивних вредности за N унетих бројева.
4. Нацртати дијаграм тока и написати програм који израчунава просечна вредност N унетих бројева.
5. Нацртати дијаграм тока и написати програм који пребројава колико је од N унетих бројева парно.
6. Нацртати дијаграм тока и написати програм који израчунава средњу вредност позитивних од N унетих бројева.

Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s