You are on page 1of 20

Instruksionet ciklike (t prsritjes)

1) Instruksionet ciklike

2) Instruksioni ciklik while


3)

Instruksionet e kaprcimit
break
continue
return

Instruksionet ciklike n gjuhn C++


Ekzekutimi i instruksioneve nj her t vetme
mund t mos jap zgjidhje t problemit.
Shpesh her ato duhen ekzekutuar me shum
se nj her.

Mekanizm i prsritjes s ekzekutimit t


instruksioneve quhet cikl.
Prdoren tre struktura ciklesh n C++: cikli
while, cikli for dhe cikli do while, me
t cilt do t njihemi n kt leksion.

Supozojm se duam t afishojm 100 her shprehjen:


"Pershendetje studente!
Do t ishte shum e mrzitshme t shkruajm 100 her
instruksionin:
cout<<"Pershendetje studente"<<endl;
cout<<"Pershendetje studente!<<endl;
....
cout<<"Pershendetje studente!<<endl;
cout<<"Pershendetje studente!<<endl;
Me instruksion ciklik afishimi i 100 prshndetjeve pr
studentt do t shprehej mjaft shkurt:
int nr = 0;
while (nr < 100) {
cout<<"Pershendetje studente!<<endl;
++nr;
}

Sintaksa:

Instruksioni while

while(<kusht>) {
instruksion1;
.....................
}
Semantika:
Kur programi arrin fjaln els while,
kontrollohet kushti.
Nse kushti sht i vrtet ekzekutohet dhe
vazhdon t ekzekutohet trupi i ciklit, derisa
kushti t bhet false.
Nj instruksion i trupit t ciklit ndryshon
variablin e ciklit.
Kur kushti bhet false, trupi i ciklit kaprcehet
dhe kalohet n instruksionin pasues.

T llogaritet shuma e N numrave t dhn nga tastiera


#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int vl, i;
int N; // numri i vlerave qe do te mblidhen
int S = 0;
cout<<"Sa vlera do te mblidhni?"<<endl;
cin>>N;
i = 0;
while (i < N ){
cout<<"Jepni numrin:"<<endl;
cin>>vl;
Trupi i
S = S + vl;
ciklit
i = i + 1;
}
cout<<"shuma S = "<<S<<endl;
system ("PAUSE");
return 0;
}

Llogarisim mesataren e nj sr numrash t futur nga tastiera duke


prdorur ciklin while:

#include <cstdlib>
#include <iostream>
using namespace std;
int main() {
int n; // numri i notave
int nr_note; //variabli i ciklit
double note; // notat
double Sh = 0, nmes;
cout << "Sa nota? " << endl;
cin >> n;
nr_note = 1;
while (nr_note <= n) {
cin>>note; //lexon nje note
Sh = Sh + note;//shuma e notave
nr_note = nr_note + 1; //variabli i ciklit + 1
}
nmes = Sh/n;
cout<<"nmes ="<<nmes<<endl;
system("PAUSE");
return 0; }

Kujdes!! Mos bni kto gabime:


1) Pikpresje tek koka e ciklit
int i=0;
while (i < 10);
{
cout<<i = " << i; //trupi i ciklit shkputet nga cikli
i++;
}
2) Trup cikli q nuk ekzekutohet asnjher:
Kur shprehja e kushtit t instruksionit while sht false q n testin e
par, trupi i ciklit nuk ekzekutohet asnjher.
P.sh. Instruksionet e ciklit t mposhtm:
int num = 100;
while (num < 100) {
// testi sht false q hern e par
cout<<num = " << num;
num = num + 1;
}
nuk do t ekzekutohen asnjher, pasi 100 <100 sht false.

3)Trup cikli q ekzekutohet numr infinit hersh:


Kur ndrtohet nj instruksion ciklik, duhet patjetr q nj nga
variablat n shprehjen e testit t ndryshoj vler, n mnyr q pas
nj numri prsritjesh kushti t bhet false. N t kundrt, vlera e
testit do t mbetet gjithnj e vrtet dhe trupi i ciklit do t
prsritet (teorikisht) n infinit.

int num = 0;
while (num < 100) {
cout<<num= << num; // prsritet pa fund
num = num * 1;
} //OOPS! Variabli ciklik mbetet 0
ose
int num = 0;
while (num < 100) {
cout<<num= << num; // prsritet pa fund
} //OOPS ! Variabli ciklik harrohet t ndryshohet

Shprehja e kushtit n nj cikl while jo gjithnj duhet t jet nj


shprehje relacionale, mund t jet dhe nj variabl i vetm, si n
shembullin m posht:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int j = 4, s = 0;
while( j ) {
cout<<" Vlera e vjeter j = " <<j ;
s = s + j;
j = j - 1;
cout<<", Vlera e re j = " << j << ",
" << s <<endl;
}
system ("PAUSE");
return 0;
}

Kujtojm q n C++ nj
vler
integer
=
0
konsiderohet si vler FALSE
ne kushtin e while dhe
TRUE ne rastet e tjera.

S=
OUTPUT:

Vlera e vjeter j = 4, Vlera e re j = 3, S = 4


Vlera e vjeter j = 3, Vlera e re j = 2, S = 7
Vlera e vjeter j = 2, Vlera e re j = 1, S = 9
Vlera e vjeter j = 1, Vlera e re j = 0, S = 10

M posht paraqitet shembulli i vendosjes n kushtin e


instruksionit while i funksionit getchar() q shrben pr futjen e
nj karakteri nga tastjera. Kur karakteri i shtypur sht Return,
kushti konsiderohet false dhe dilet nga cikli.
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int num = 0; char c;
cout<<"\nShkruani nje fjali:"<<endl;
while ( (c=getchar()) != \n ) {
num++;
cout<<"c="<<c<<", num="<<num<<endl;
}
cout<<"\nNumri i karaktereve = "<<num<<endl;
system ("PAUSE");
return 0;
}

Modifikojm ushtrimin e mparshm pr ta br m t qart.


#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int num = 0 , char c; // deklarojm c nj variabl karakter
c = '#'; // i japim c vet nj vler q t hyjm n cikl
cout<<"\nShkruani nje fjali:"<<endl;
while ( c != '\n') {
c=getchar();
cout<<"c="<<c<<", num="<<num<<endl;
num++;
}
cout<<"\nNr.karaktereve = "<<num<<endl;
system ("PAUSE");
return 0;
}

Nga rezultati shihet se ksaj here numri i karaktereve sht 10, pasi num
rritet hern e fundit q cikli prsritet e pastaj testohet kushti false se shtypet
Return.

Kaprcimi i strukturuar
Instruksionet q lejojn ndryshimin e rregullt t fluksit t
instruksioneve dhe n rastin e cikleve jan:
break : provokon daljen e menjhershme nga cikli pr
t vazhduar n instruksionin q pason ciklin.

continue: kaprcen instruksionet e mbetura t ciklit


korrent dhe vazhdon me ciklin pasardhs.
while ( kusht ) {
instruksione;
...break;
instruksione
}

while ( kusht ) {
instruksione;
...continue;
instruksione
}

Instruksioni break
#include <cstdlib>
#include <iostream>
using namespace std;
int main() {
char c;
while (1) { // kusht gjithnj true
cout << Jepni nj karakter!" << endl;
cin >> c;
if (c != 'a')
cout << c << endl;
else
break; // dilet nga cikli kur shtypet a
}
system("PAUSE");
return 0;
}

Llogaritet shuma e disa vlerave int q jepen nga tastiera, derisa t


shtypet 0.

#include <cstdlib>
#include <iostream>
using namespace std;
int main(){
int vl, s = 0;
cout<<"Jepni vlerat qe do te mblidhni: "<<endl;
while (cin >> vl) { // kusht i ciklit sht nj vler int q lexohet me cin
if (vl == 0)
{
cout<<"Shtypet 0, Dolet nga cikli."<<endl;
break; // dilet nga cikli kur shtypet numri 0
}
s = s + vl;
} // mbyllet cikli
cout<<"s="<<s<<endl;
system("PAUSE");
return 0;
}

Instruksioni continue
#include <cstdlib>
#include <iostream>
using namespace std;
int main(){
int x=0 ;
while(x <10){
++x;
if (x == 7) continue;
cout<<"x=" << x<<endl;
}
system("PAUSE");
return 0;
}

Dalloni q numri 7 nuk sht shtypur se instruksioni continue ka


br kaprcimin n ciklin pasardhs, duke penguar ekzekutimin e
afishimit t tij e kaluar n ciklin pasardhs.

Ciklet e ndrfutura while


Ciklet while mund t prfshihen brenda njri tjetrit duke formuar
kshtu ciklet e ndrfutur, si shihet n shembullin m posht:
#include <cstdlib>
#include <iostream>
using namespace std;
int main() {
int i = 1;
while(i <= 10){ // cikli i jashtm
int j =1;
while(j <=10){ // cikli i brendshm
cout<<i*j<<"\t";
++j;
} // mbyllet cikli i brendshm
cout<<endl;
++i;
} // mbyllet cikli i jashtm
system("PAUSE");
return 0;
}

OUTPUT: TABELA E SHUMZIMIT

N kt program cikli i brendshm ( var j) shrben pr t lvizur


sipas kolonave, kurse i jashtmi (var i ) sipas rreshtave.
Pr do rresht, ekzekutohet cikli i brendshm, i cili lviz n dhjet
kolonat dhe afishon vlerat, dhe m pas bhet kalimi n rreshtin e ri.

Llogaritje e faktorialit
#include <cstdlib>

Llogariten Faktorialet e disa


#include <iostream>
numrave.
using namespace std;
int main() {
Cikli jashtm prseritet pr
long faktorial;
numra t ndryshm, derisa
int num = 1;
t shtypet 0.
while(num != 0) { //cikli i jashtm
Cikli i brendshm llogarit
cout<<Shkruani nje numer: ";
faktorialin e nj numri
cin>>num;
faktorial = 1;
while(num > 1) //cikli i brendshm
faktorial = faktorial * num--;
cout<<"Faktoriali= <<faktorial<<endl;
}
system("PAUSE");
return 0;
}

Tipe strukturash t ndrfutura


Mnyra e kombinimit t cikleve varet s pari nga problemi q
duhet zgjidhur.
Modelet e ndrfutjes s cikleve mund t jen t ndryshme, si
p.sh. n figurat m posht:

#include <cstdlib>
Llogaritja e mesatares pr nr lnd pr 20 student.
#include <iostream>
using namespace std;
int main() {
int n; // numri i notave
int nr_note; //variabli i ciklit
double note; // notat
double Sh, nmes;
cout << "Sa nota? " << endl;
cin >> n;
int nr_stud =1;
while(nr_stud <= 3) {
Sh = 0;
nr_note = 1;
while (nr_note <= n) {
cin>>note;
//lexon nje note
Sh = Sh + note; //shuma e notave
++nr_note;// ndryshon variabli i ciklit
}
nmes = Sh/n;
cout<<"nmes = "<<nmes<<endl;
++nr_stud;
}
system("PAUSE");
return 0; }

You might also like