Professional Documents
Culture Documents
Leksion Strukurat Kushtezuese, Operatoret
Leksion Strukurat Kushtezuese, Operatoret
Ne kete leksion:
1. Struktura e perzgjedhjes if/else
2. Operatoret
a. llogjik
b. kushtezimit
c. vleredhnies
d. zbirtjes dhe rritjes me nje
Struktura if
Ne kete structure eshte fjala kyce if qe perdoret per te marr vendim. Forma e pergjithshme e
struktures if eshte si me poshte:
If(kusht eshte I vertet)
Ekzektuto veprimin 1;
Struktura if shoqerohet nga kushti I cili vendoset brenda kllapave (,). Nese kushti, cilido qofte ai
eshte I vertet do te ekzekutohet veprimi, ne te kundert ai kalohet dhe program nuk ben asgje.
Por si shprehet vet kushti ne gjuhen C? Dhe si e verifikohet vertetesia ose jot e tij? Si rregull i
pergjithshem kushti ne gjuhen C shprehet permes operatoreve relacional.Operatoret relacional
bejne te mundur te krahasojne 2 vlera duke kontrolluar keshtu nese vlerat jane te barabarta, te
Programi kerkon perdoruesit te fus nje vlere me te vogel se 10. Nese programi do ekzekutohet
do vini re se, nese vlera e dhene nga tastjera eshte me e vogel se 10 ne ekran do te afishohet mesazhi
brenda kllapave te instruksionit printf().Nese do te jepni nje numer tjeter cfaredo programi nuk do te
afishoj asgje. Bllokskema me poshte ndihmon per te kuptuar rrjedhen e kontrollit te programit.
Fillimi
num<=10
Afisho mesazh
Fund
Ne situate te ndryshme per probleme reale mund te duhet te kryhen disa veprime (bllok veprimesh) kur
plotesohet nje kusht ose shprehje caktuar brenda if-it. Ne rast se duhet te ekzekutohen disa veprime kur
nje kush plotesohet perdorim kllapat gjarperueshe hapese dhe mbyllese {,} per te grupuar ato.
Shembulli me poshte ilustron perdorimin e kllapave {,}.
Struktura if-else
Si edhe permendem me siper, vet struktura if, ne momentin qe kushti/shprehja qe ajo vlereson eshte e
vertet, ekzekuton nje instruksion te vetem ose nje bllok instruksionesh.Dhe nese kushti nuk plotesohet
atehere nuk ben asgje. Po nese kushti nuk eshte I vertet a mund te percaktojme nje instruksion ose nje
bllok instruksionesh? Patjeter qe po. Per kete vlen struktura if-else, e cila permban strukturen else
pikerisht per rastin kur kushti/shprehja ne if nuk plotesohet. Shembulli me poshte ilustron perdorimin e
structures if-else.
Si edhe ne rastin e structures if programi kerkon perdoruesit te fus nje vlere me te vogel se 10.
Kur programi ekzekutohet do vini re se, nese vlera e dhene nga tastjera eshte me e vogel baraz se 10
ne ekran do te afishohet mesazhi brenda kllapave te instruksionit printf(Numri qe shkruat ploteson
kushtin) ndersa nese vlera eshte me e madhe se 10 ne ekran do te afishohet mesazhi brenda kllapave
te instruksionit printf(Numri qe shkruat NUK ploteson kushtin) . Me poshte jepet bllokskema per
shembullin e marr me siper.
Fillimi
num<=10
Afisho mesazh 2
Afisho mesazh 1
Fund
Ne te njeten menyre qe mund te kemi bllok veprimesh kur plotesohet kushti brenda if, kemi dhe ne
momentin kur kontrolli programit kalon per ekzektutim te veprimeve te else. Edhe ne kete rast mund te
kemi bllok veprimesh te cilat I vendosim brenda kllapave {,}. Shembulli me poshte ilustron bllokun else.
else {
printf("Numri qe shkruat NUK ploteson kushtin!");
printf("Duhet te jepnit nje numer me te madhe se 10 ");
}
getch();
return 0;
}
If-else te nderfutura
Struktura if/else konsiderohet e nderfutur kur brenda bllokut te nje if-i ose else-i ndertojme nje tjeter ifelse. Shembulli me poshte tregon perdorimin e kesaj forme kombinimi if-esh.
Vini re ne shembullin me siper se nese if-I I pare plotesohet kontrolli programit kalon ekzekutimin en ifin e dyte brenda tij, i cili eshte nje if-else I nderfutur brenda nje if-I te thjeshte. Ndersa kemi dhe rastin
nje if-else te nderfutur brenda bllokut else te if-it te dyte.
Format e if-eve
Struktura if ose if-else mund te shfqet ne cdonje prej trajtave te me poshtme:
a) if ( kusht )
Bej kete ;
(b) if ( kusht )
{
Bej kete ;
Dhe kete;
}
(c) if ( kusht )
Bej kete ;
else
bej kete;
(d) if ( kusht )
{
Bej kete ;
Dhe kete;
}
else
{
Bej kete ;
Dhe kete;
}
(e) if ( kusht )
Bej kete ;
else
{
if ( kusht )
bej kete ;
else
{
Bej kete ;
Dhe kete;
}
}
(f) if ( kusht )
{
if ( kusht )
bej kete;
else
{
Bej kete ;
Dhe kete;
}
}
else
Bej kete ;
2. Operatoret
Si edhe pame me siper strukturat if-else ndertojne kushtin e tyre si nje shprehje llogjike e cila
mbeshetet ne operatoret relacional dhe llogjike.
Ne lidhje me operatoret relacional kemi pare se ata jane plot gjashte: * ,/ ,% ,+ ,-,= .
a. Operatoret llogjik
Por te te plotesuar njekohesisht dy shprehje qe perdorin operator relacional asnje prej
operatoreve me siper nuk na vjen ne ndihme.
(x > 0)
and
(x < 1)
-1
1
-1
#include <stdio.h>
#include <conio.h>
int main()
b. Operatori kushtezimit
{
float x,y;
printf("Jepni koordinaten x te pikes P: \n");
scanf("%f",&x);
printf("Jepni koordinaten y te pikes P: \n");
scanf("%f",&y);
if(x>=-1 && x <=1 && y>=-1 && y<=1)
printf("Pika P eshte brenda katrorit!");
else
printf("Pika P nuk eshte brenda katrorit!");
getch();
return 0;
}
Ne menyre qe pika te jete brenda katrorit duhet qe koordinatat x, y te pikes te jene ne vlere midis
intervalit -1 dhe 1. Pra kushtet qe duhet koordinata x te plotesoj jane x>=-1 dhe x<=1, ndersa koordinata
y duhet te plotesoj y>=-1 dhe y <=1. Te dyja keto kushte duhet te plotesohen njekohesisht. Operatori
llogjik AND eshte I vertet vetem kur dy ose me shume shprehjet qe ai bashkon jane te verteta. Pra
kushti llogjik per strukturen if te problemit do ishte si me poshte:
if(x>=-1 && x <=1 && y>=-1 && y<=1)
Ne rast se do te na kerkohej qe te pakten nje nga koordinatat e pikes te jete brenda intervalit [-1 1].
Atehere kushti jone llogjik do te shnderrohej ne formen :
If ((x>=-1 && x <=1) ||( y>=-1 && y<=1))
Qe vlera e nje koordinate te jete brenda intervalit [-1,1] per ne do te thot per rastin e koordinates x :
x>=-1 && x<=1 dhe per rastin e koordinates y : y>=-1 && y <=1. Pra kemi 2 kushte te mundshme duke
qene se kerkesa nuk percakton se per cilen koordinat behet fjale. Gjithashtu ne kete situate specifikohet
se te pakten nje prej koordinatave duhet te plotesoj kushtin e dhene. Kjo do te thot se ose x ose y ose
dhe ted y bashk mund te plotesojne kushtin. Per kete do te perdorim operatorin OR I cili eshte I vertet
kur te pakten nje prej shprehjeve eshte e vertet. Kjo eshte dhe aryesja pse shprehjet x>=-1 && x<=1,
dhe y>=-1 && y<=1 jane bashkuar me operatorin OR (||).
Tabelat e vertetsise per operatoret AND,OR,NOT:
Operatori AND (&&) eshte I vertet vetem kur te dy shprehjet jane te verteta.
A
False
False
True
True
B
False
True
False
True
A&&B
False
False
False
True
Operatori OR (||) eshte I vertet vetem kur te pakten nje nga dy shprehjet eshte e vertete.
A
False
False
True
True
B
False
True
False
True
A||B
False
True
True
True
Operatori NOT (!) vepron mbi nje shprehje duke I mohuar vleren e asaj.
A
False
True
!A
True
False
b. Operatoret e kushtezimit
Operatori kushtezimit konsiston ne 2 simbolet ? dhe : qe vendosen midis 3 shprehjeve, duke e bere ate
nje operator trinar. Operatori kushtezimit dhe 3 shprehjet qe ai lidh fromojne ate qe do quajme
shprehje te kushtezuar.
Operatori kushtezimit ka formen e meposhteme:
Kusht ? shprehje 1 : shprehje 2
Kusht eshte nje shprehje llogjike e cila vleresohet si e vertete ose si e gabuar ndersa shprehje 1 dhe
shprehje 2 jane vlera ose shprehje qe kane nje vlere te cakuar. Operatori funksionon ne kete menyre:
fillimisht vleresohet kushti nese ai eshte I vertete atehere gjthe shprehja e kushtezuar merr vleren e
shprehjes 1 ne te kudert merr vleren e shprehjes2. Kjo vlere mund ti kaloj dhe variablave te tjere, si ne
shembullin me poshte:
Max = (num1>num2)?num1:num2;
Qellimi kesaj shprehje eshte gjetja e maximumit ted y numrave num1 dhe num2 dhe vendosja e ketij
max ne variablin max. Ndaj nese kushti num1>num2 eshte I vertet max merr vleren e num1 ne te
kundert max=num2.
Shprehja eshte ekuivalente me instruksionin if-else:
If( num1>num2 )
Max=num1;
else
Max = num2;
Por operatori I kushtezimit kete qe struktura if e ben me 4 rreshta e perfundon me 1 rresht te vetem.
c. Operatoret e vleredhenies
Nese do krahasonim programet ne gjuhen C me ato ne nje gjuhe me te vjeter do vinit re se programet
ne gjuhen C jane me te shkruter dhe kjo fal operatoreve te veacnte qe ajo perdor. Le te shqytojme
shprehjen:
total = total + numer;
Ne kete instruksion kemi pare qe vlera e variablit numer I shtohet vleres se variablit total dhe shuma e
marr vendoset serish ne variablin total. Ne gjuhen C ky instruksion mund te shkruhet
total+=numer;
Rezultati eshte po ai por paraqitja e ketij instruksioni eshte shume me konciz.
Shembull:
int main() {
int total=0; int num=10;
printf(Totali=%d,total);
total+=nr;
printf(Totali=%d,total);
total+=nr;
printf(Totali=%d,total);
getch(); return 0; }
int main() {
int num=0;
printf(Numri=%d,num);
printf(Numri=%d, num--);
printf(Numri=%d,num);
getch(); return 0; }
I cili kur ekzekutohet afishon ne ekran:
Numri =0 Numri=0 Numri=-1