You are on page 1of 33

Leksion 2:

Instruksionet e
kushtëzuara
Nelda Kote
Enida Sheme
Cfarë do të trajtojmë
• Kushti
• Instruksioni if
• Instruksioni if-else
• Konstrukti else-if
• Operatori i kushtëzimit
• Instruksioni switch
Kushti
• Kushti është një shprehje ose një bashkësi
shprehjesh logjike si:
a<6 ose x>y | | z>y
• Mund të marrë vetëm një nga 2 vlerat: 0 ose 1.
• Nëse shprehja është e ndryshme nga zero atëherë
kushti është i vërtetë.
Shprehjet e kontrollit
• Normalisht, instruksionet ekzekutohen njëri pas tjetrit sipas
radhës që janë shkruar. Ky quhet ekzekutim sekuencial.
• Gjuha C mundëson që instruksioni i radhës për ekzekutim të
mos jetë pasardhësi por një tjetër. Kjo procedure njihet si
transferim kontrolli.
• Si fillim u përdor fjala kyce go to: shprehjaX, por pati
problematika (vonesa në perpunim) dhe u punua për
eliminimin e saj dhe krijimin e strukturave të kontrollit.
• Nga puna e Bohm dhe Jacopini, rreth viteve 1970, u
demostrua se programet në C mund të shkruhen vetem në një
nga 3 format e shprehjeve te kontrollit (ne total 7 mundesi):
Shprehje sekuenciale (sequence statement): njera pas tjetres
 Shprehje perzgjedhese (selection statement): if, if… else…, switch
Shprehje perseritese (repetition statement): for, while, do…while
Strukturat e përzgjedhjes
• Strukturat e përzgjedhjes që ofrohen në gjuhën C
janë 3:
• If: quhet “single selection statement” sepse
përzgjedh vetëm një instruksion dhe e ekzekuton atë
ose jo bazuar në vërtetësine e një kushti.
• If else: quhet “double selection statement” sepse
përzgjedh per ekzekutim njërin nga 2 instruksionet e
mundshme  ose atë që ndodhet nën IF ose atë që
ndodhet nën ELSE, bazuar në kushtin që plotësohet.
• Switch: quhet “multiple selection statement” pasi
përzgjedh një nga shumë opsione.
Instruksioni if Fillim

• Sintaksa:
Kushti
if (kushti)
Jo
shprehje PO

ose Trupi i instruksionit


if (kushti)
{ bashkësi shprehjesh }
Fund

• Trupi i instruksionit ekzekutohet vetëm nëse kushti është


i vërtetë
• Kllapat e kushtit janë pjesë e sintaksës së instruksionit if
Instruksioni if
Shembull 1: if (i< 0 || i>= n)
if (nota > 4) printf (“Kalues”); Trupi i instruksionit do të ekzekutohet
Shembull 2: kur të paktën një nga shprehjet e
if (a % 4==0) kushtit është e vërtetë
b += a /4; Shembull 5:
• Vlerësohet kushti (a % 4==0) if (x<5) {
• Nëse kushti është i vërtetë kryhet printf(“Vlera e x-it: %d”, x);
veprimi b += a /4;
• Në të kundërt nuk bëhet asgje x++; }
Shembull 3: Shembull 6:
if (i> = 0 && i < n) if (p==0)
Trupi i instruksionit ekzekutohet printf(“p ka vlere 0”); // ekzekutohet me kusht
vetëm nqs të dy shprehjet e kushtit printf(“vazhdon programi”); // ekzekutohet
gjithmone
janë të vërteta
Shembull 4:
Shembull if (1)
#include <stdio.h>
int main(void)
{
int nr = 0;
printf("\nJepni nje numer nga 1 ne 10: ");
scanf("%d", &nr);
if(nr > 5)
printf(“Ju dhate %d qe eshte me i madh se 5\n", nr);
if(nr < 7)
printf(“Ju dhate %d qe eshte me i vogel se 7\n", nr);
return 0;
}
Shembull if (2)
Të ndërtohet një program në gjuhën C i cili i kërkon përdoruesit të shtypë
një shkronjë. Nëse shkronja e shtypur është a të shfaqet një mesazh

#include <stdio.h> /* përfshin funksionin printf()*/


#include <conio.h> /* përfshin funksionin getche() */
void main (void){
char ch;
printf(“\nShtypni një karakter: ” );
ch = getche();
if (ch = = ‘a’)
printf(“\nJu shtypët shkronjën a.”);
}
• Në ekran pas ekzekutimit të programit nëse shtypni a do të jetë:
Shtypni një karakter: a
Ju shtypët shkronjën a
• Në të kundërt programi nuk afishon asgjë
…Shembull if (2)
Kushti
Fjala çelës Operatori Relacional

if ( ch == ‘a’ )

printf(“\nJu shtypët shkronjën a”);

Trupi i ciklit vini re pikëpresjen


Instruksionet e ndërfutura if:
Shembulli 3
Programi i kërkon përdoruesit të japë një shkronjë. Nëse kjo është p i kërkon të
japë një shkronjë tjetër dhe nëse kjo është o printon një mesazh.

#include <stdio.h> /* përfshin funksionin printf()*/


#include <conio.h> /* përfshin funksionin getche() */
void main (void)
{
char ch;
printf(“\nShtypni dy karaktere: \n “);
if (getche() == ‘p’)
if (getche() == ‘o’)
printf(“\nJu shtypët fjalën po. “);
}
Instruksionet e ndërfutura if:
Shembulli 3
• Ekzekutimi i këtij programi:
• Shtypja e një karakteri të ndryshëm nga ‘p’
përfundon programin pa afishuar asgjë.
• Shtypja e karakterit të parë ‘p’ dhe e të dytit të
ndryshëm nga ‘o’, përfundon gjithashtu programin
pa afishuar asgjë, pas testimit të kushtit në
instruksionin e dytë if.
• Vetëm kur karakteri ‘p’ pasohet nga shtypja e
karakterit ‘o’ ekzekutohet funksioni printf() i cili
afishon në ekran mesazhin: ju shtypët po.
Instruksioni if-else
Sintaksa:
if (kushti) Fillim

{ shprehje1}
else JO
Kushti
{shprehje2} PO
Shembull:
Trupi i instruksionit if Trupi i instruksionit
if(a % 4 == 0) else
b++;
else Fund

b--;
Instruksioni if-else: Shembulli 1
• Programi if-else.c afishon në ekran një mesazh nëse përdoruesi ka
shtypur shkronjën a ose jo.

#include <stdio.h> /* përfshin funksionin printf()*/


#include <conio.h> /* përfshin funksionin getche() */
void main (void)
{
char ch;
printf(“\nShtypni një karakter: \n “);
ch = getche();

if (ch == ‘a’)
printf(“\nJu shtypët shkronjën a.”);
else
printf(“\nJu nuk shtypët shkronjën a.”);
}
Instruksioni if-else : Shembulli 1
kushti
fjala çelës Trupi i instruksionit if

if ( ch == ‘a’ )

printf(“\nJu shtypët shkronjën a. ”);


else
printf(“\nJu nuk shtypët shkronjën a. ”);

fjala çelës

Trupi i instruksionit else


Instruksioni if-else: Shembulli 2
#include <stdio.h>
int main(void)
{
float cmimi = 35.0; /* Cmimi per cope */
int sasia;
printf(“Shkruani sasine :");
scanf(" %d", &sasia);
// Krahasojme sasine per te bere zbritje
if (sasia > 10) // 5% zbritje
printf(“Vlera e %d copeve= %.2f\n", sasia,sasia*cmimi*0.95);
else /* nuk ka zbritje */
printf(" Vlera e %d copeve= %.2f\n", sasia, sasia*cmimi);
return 0;
}
Instruksionet e ndërfutura if - else
• Eshtë plotësisht e lejueshme që instruksioni if-else të bëjë
pjesë në trupin e një tjetër instruksioni if ose else.
• Sintaksa:
if (kushti1)
{ Shprehje A;
if (kushti2)
Shprehje B;
else
Shprehje C;
}
else
Shprehje D;
Shprehje E;
Instruksionet e ndërfutura if - else
• Shembull 1:
if (a % 4 == 0)
if (a % 2 == 0)
b = 2;
else
b = 1;
• Shembulli 2
if (a % 4 == 0)
{ if (a % 2 == 0)
b = 2;
}
else
y = 1;
• Cili kusht if i përket else?
Else i përket kushtit if që ka më afër dhe që nuk është i lidhur me
ndonjë else tjetër
Instruksionet e ndërfutura if – else:
Shembulli 3
• Nje shites ka nje fitim qe varet nga sasia e mallit te shitur.
Llogaria behet ne baze te informacionit te meposhtem:
Sasia e shitur Fitimi
Nen 2500 30 + 1.7%
2500 –6500 56 + 0.66%
6500 –20000 76 + 0.34%
20000-50000 100 + 0.22%
50000-500000 155 + 0.11%
Mbi 500000 255 + 0.09%
Rast ekzekutimi:
Jep sasine e shitur: 30000
Fitimi: $166.00
Instruksionet e ndërfutura if –
else: Shembulli 3
#include <stdio.h>
int main() else if (vl< 50000.00f)
{ fitimi= 100.00f + .0022f * vl;
float fitimi, vl; else if (vl< 500000.00f)
printf(“Jep sasine e shitur: "); fitimi= 155.00f + .0011f * vl;
scanf("%f", &vl); else
if (vl< 2500.00f) fitimi= 255.00f + .0009f * vl;
fitimi= 30.00f + .017f * vl; printf(“Fitimi: $%.2f\n", fitimi);
return 0;
else if (vl< 6250.00f)
}
fitimi= 56.00f + .0066f * vl;
else if (vl< 20000.00f)
fitimi= 76.00f + .0034f * vl;
Operatori i kushtëzimit
• Operatori i kushtëzimit paraqitet në formën e
mëposhtme:
kusht ? shprehje1: shprehje2
• Operatorin e kushtëzimit përbëhet nga dy simbole?
dhe : që vendosen ndërmjet tre shprehjeve, pra është
një operator trinar.
• Operatori i kushtëzimit si dhe tre shprehjet që ai
lidh formojnë atë që do ta quajmë shprehje të
kushtëzuar.
• Kusht është një shprehje logjike që vlerësohet si e
vërtetë ose e gabuar, ndërse shprehje1 dhe shprehje2
janë vlera ose shprehje që kanë një vlerë të caktuar.
Operatori i kushtëzimit
• Funksionimi:
• Fillimisht bëhet vlerësimi i kushtit, nëse ai është i vërtetë,
atëhere e tërë shprehja e kushtëzuar merr vlerën e shprehje1,
në të kundërtën merr vlerën e shprehje2. Kjo vlerë mund t'i
transmetohet dhe variablave të tjerë.
• Shembull:
max = (num1 > num2) ? num1 : num2;
• Qëllimi i kësaj shprehje është gjetja e maksimiumit të dy
numrave num1 dhe num2 dhe vendosja e këtij maksimumi në
variablin max.
• Për këtë së pari vlerësohet kushti num1>num2, nëse ky kusht
është i vërtetë, pra nëse num1 është maksimumi, e tërë
shprehja merr vlerën num1 dhe ja kalon atë variablit max.
• Nqs kushti num1>num2 nuk është i vërtetë, pra nëse num2
është maksimumi, shprehja merr vlerën num2 të cilën ja
kalon variablit max.
Operatori i kushtëzimit
Operatori i kushtëzimit
• Kjo shprehje është e njëvlershme me instruksionin
if-else:
if (num1 > num2)
max=num1;
else
max=num2;
• Por operatori i kushtëzuar arrin të bëjë me një rresht
të vetëm atë që instruksioni if-else e bën me katër
rreshta.
Operatori i kushtëzimit
Shembuj:
• x = y > 7 ? 25 : 50;
if(y > 7)
x = 25;
else
x = 50;
• cmimi= p*s*(s>10 ? 1.0 : 0.95);
• int i, j, k;
i=1; j =2;
k = (i>j) ? i: j; /* k merr vleren 2*/
Instruksioni switch
• Sintaksa:
switch (kushti)
{
case konstante: shprehje1

case konstante: shprehje n
default : shprehje
}
• Kushti duhet të jetë një shprehje integer ose një karakter.
• Tek case shprehja konstante pranon vetem vlera te caktuara
fikse, nuk mund të ketë variabla ose thirrje funksioni.
• Tek instruksionet e cdo case nuk kanë nevojë per kllapa { }
• Renditja e case nuk ka rëndësi
Diagrama e rrjedhës për switch case
Instruksioni switch
“Variabli i switch-it”: numër i plotë apo variable karakter

switch (operator) Numër i plotë apo konstante karakter


{ case ‘a’ :
instruksion; Trupi i instruksioneve që
instruksion; ekzekutohet nëse “variabli i
break; swtch-it është ‘a’
Kllapat që case ‘b’ :
përcaktojnë instruksion; Trupi i instruksioneve që
trupin e instruksion; ekzekutohet nëse “variabli
switch-it break; I switch-it është ‘b’
default: Nuk eshte i detyrueshëm
instruksion; Trupi i instruksioneve që
instruksion; ekzekutohet nëse “variabli i
switch-it s’është as ‘a’ os ‘b’
}
Instruksioni switch: Shembulli 1
switch(nota){
case 10: printf(“Shkelqyeshem!”);
break;
case 9:printf(“Shume mire!”);
break;
case 8:printf(“Mire!”);
break;
case 7:printf(“Mjaftueshem!”);
break;
case 6: printf(“Cka!”);
break;
case 5: printf(“Dobet!”);
break;
case 4:printf(“Mbetes!”);
break;
default:printf(“Note jo e sakte!’);
break;
Shembulli 1: implementimi me if-
else
• Si do ishte implementimi me instruksion if-else i shembullit 1?
if (nota == 10)
printf(“Shkelqyeshem!”);
else if (nota == 9)
printf(“Shumemire!”);
else if (nota == 8)
printf(“Mire!”);
else if (nota == 7)
printf(“Mjaftueshem!”);
else if (nota == 6 )
printf(“Cka!”);
else if (nota == 5)
printf(“Dobet!”);
else if (nota == 4)
printf(“Mbetes!”);
Instruksioni switch
• Mungesa e instruksionit break;
pasi ekzekutohet instruksioni i fundit i një case, kontrolli i
kalon instruksionit të parë të case pasardhës.
• Prania e instruksionit break;
Pasi ekzekutohet break, kontrolli kalon tek shprehja e parë
pas kllapave mbyllëse të switch-it!
• Mospërdorimi i instruksionit break pas një fjale çelës case,
bën që pas ekzekutimit të bllokut të instruksioneve të këtij
case-i , të vazhdojnë të ekzekutohen instruksionet e case-it
pasardhës.
• Pra pa instruksionin break ,programi do të ekzekutojë jo
vetëm instruksionet e case-it të caktuar, por të gjitha
instruksionet e case-ve në vazhdim.
Instruksioni switch: Shembull 2
switch(nota){
case 10:
case 9:
case 8:
case 7:
case 6:
case 5: printf(“Kalon!”);
break;
case 4: printf(“Mbetes!”);
break;
default: printf(“Note jo e sakte!’);
break;
}
Detyrë
• Implementoni një makinë llogaritëse me veprimet
bazë duke përdorur instruksionin:
• if else
• switch

You might also like