Kapitulli 5:
Strukturat e kontrollit II (Përsëritje)
Objektivat
• Në këtë kapitull, ju do të :
– Mësoni rreth strukturave të kontrollit të përsëritjes (cikliing)
– Mësoni si të përdorni while cikli në një program – Mësoni si të përdorni for cikli në një program
– Mësoni si të përdorni do…while cikli në një program
– Shqyrtoni deklaratat break dhe continue – Mësoni si të debugoni ciklis
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 2
Pse është Përsëritja e Nevojshme?
• Përsëritja lejon përdorimin efikas të variablave
• Mund të lexojë, të shtojë dhe apo të llogarisë mesataren e shumë numrave duke përdorur një numër të kufizuar variablash
• Shëmbull: Shtoni pesë numra. Shkruani në klasë algoritmin & kodin duke përdorur 2 mënyra :
1. Deklaroni nga një variabël për secilin numër, futni numrat dhe shtoni variablat së bashku
2. Krijoni një cikli që lexon një numër në një variabël dhe e shton atë në një variabël që përmban shumën e numrave
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 3
Struktura while cikliing (Përsëritje)
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 4
while cikliing
• Sintaksa e deklaratës while:
• deklaratë e vetme ose bllok udhëzimesh, quhet trupi i cikli-it
• shprehja vepron si vendimmarrës dhe zakonisht është një shprehje logjike
• Kllapat janë pjesë e sintaksës
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 5
while cikliing
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 6
while cikliing
• Variabla i në Shëmbullin 5-1 quhet variabla e kontrollit te ciklit
• Cila është vlera e i kur cikli mbaron?
• Cikli Infinit: vazhdon të ekzekutojë pafund. Mund të
ndodhë nëse vlera e kushtit që përfundon ciklin nuk arrihet kurrë.
– Kjo shmanget duke përfshirë deklaratat në trupin e ciklit që sigurojnë që do të arrihet një vlerë daljeje.
– Për shëmbull, çfarë ndodh nëse deklarata i=i+5 është hequr nga trupi i ciklit.
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 7
Struktura while cikliing (Përsëritje) (vazhdimi.)
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 8
4 tipet e while cikliing
• Counter controlled while loop
• Sentinel-Controlled while loop
• Flag-Controlled while loop
• EOF-Controlled while loop
9
C++ Programming: From Problem Analysis to Program Design, Seventh Edition
1: Counter-Controlled
• Kur e dini saktësisht se sa herë duhen ekzekutuar deklaratat
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 10
2: Sentinel-Controlled
• cikli mbaron kur sentineli haset (nuk e dimë sa herë do të përsëritet cikli)
• Sentinel – një numër ose karakter, i testuar në kushtet e ciklit, që do të bëjë që përseritja të ndalet
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 11
2. Shëmbull: Numrat e Telefonit
• Shëmbull : lexoni dhe nxirrni numrat derisa përdoruesi të arrijë në butonin ‘E’.
• Shëmbulli 5-5 (në libër) jep një rast të një cikli sentinel-controlled.
• Programi konverton shkronjat e mëdha në shifrën e tyre telefonike korresponduese
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 12
3: Flag-Controlled
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 13
• Flag-controlled while cikli: përdor një variabël bool për të
kontrolluar ciklin. Cikli përfundon kur variabla ndryshon vlerën e
saj të parë (nga false në e vërtetë, ose e anasjellta)
3. Shëmbull: Lojë me hamendsim numrash
• Shëmbulli 5-6 implementon një lojë me hamendje numrash duke përdorur një flag-controlled while loop
• Përdor funksionin rand të skedarit cstdlib për të gjeneruar një numër të rastit
– rand() kthen një vlerë int ndërmjet 0 dhe 32767 – Për të konvertuar në një numër të plotë >= 0 dhe < 100:
• rand() % 100
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 14
4: EOF-Controlled (End of File)
• End-of-file (EOF)-controlled while loop: kur është e vështirë të zgjedhësh një vlerë sentinel
• cikli-i vazhdon derisa të ketë input nga përdoruesi.
• Vlera logjike e kthyer nga cin mund të përcaktojë nëse nuk ka më input.
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 15
4.Shëmbull: EOF-Controlled
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 16
Struktura for loop (Përseritja) (vazhdimi.)
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 17
Struktura for loop (Përseritja)
• Sintaksa e deklaratës for:
• Deklarata iniciale, kushti i
ciklit dhe deklarata update quhen for loop control statements
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 18
Shëmbull for
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 19
Shëmbull for
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 20
Cikli for, erroret
• Më poshtë është një gabim semantik:
• Më poshtë është një cikël i saktë (por infinit) for :
for (;;)
cout << "Hello" << endl;
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 21
Shëmbull for
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 22
Shëmbull for
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 23
Struktura do…while (Përsëritje)
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 24
do…while
• Sintaksa e një cikli do...while
Deklarata ekzekutohet së pari, dhe më pas vlerësohet shprehja
– Për aq kohë sa shprehja është e vërtet, cikli vazhdon
• Për të shmangur një cikel infinit, trupi duhet të
përmbajë një deklaratë që e bën shprehjen false
• cikli gjithmonë përsëritet të paktën një herë
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 25
do…while
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 26
do…while
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 27
Zgjedhja e Strukturës së duhur të përsëritjes
• Të tre ciklet kanë vendin e tyre në C ++
– Nëse mund të përcaktoni paraprakisht numrin e
përsëritjeve të nevojshme, cikli for është zgjedhja e saktë
– Nëse nuk dini dhe nuk mund të përcaktoni paraprakisht numrin e përsëritjeve të nevojshme, dhe që mund të jetë zero, përdorni një cikël while
– Nëse nuk dini dhe nuk mund të përcaktoni paraprakisht numrin e përsëritjeve të nevojshme, dhe ka të paktën një, përdorni një do...while cikli
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 28
Deklaratat break dhe continue
• break dhe continue alternojnë rrjedhën e kontrollit
• Deklarata break përdoret për dy qëllime:
– Për të dalë herët nga një cikël: Mund të eliminojë përdorimin e disa variablave (flag)
– Për të anashkaluar pjesën e mbetur të një strukture switch
• Pasi break ekzekutohet, programi vazhdon me deklaratën e parë pas strukturës
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 29
Deklaratat break dhe continue
• continue përdoret në strukturat while, for, dhe do…while
• Kur ekzekutohet, ai i kapërcen të gjitha deklaratat pas deklaratës continue, dhe vazhdon me përsëritjen e cikli-it tjetër .
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 30
Nested Control Structures
• Për të krijuar modelin e mëposhtëm :
*
**
***
****
*****
• Mund të përdorim kodin vijues:
for (i = 1; i <= 5 ; i++) {
for (j = 1; j <= i; j++) cout << "*";
cout << endl;
}
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 31
Nested Control Structures (vazhdimi.)
• Cili është rezultati nëse e zëvendësojmë deklaratën e parë for me këtë?
for (i = 5; i >= 1; i--)
• Pergjigja:
*****
****
***
**
*
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 32
Përmbledhje
• C++ ka tre struktura përsëritje:
– while, for, dhe do…while
• while, for, dhe do janë fjalë kyç
• ciklet while dhe for quhen ciklie pre-test
• ciklii do...while quhet cikli post-test
• while and for mund të mos ekzekutohen fare, por do...while gjithmonë
ekzekutohet të paktën njëherë
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 33
Përmbledhje (vazhdimi.)
• Një cikël while mund të jetë:
– Counter-controlled – Sentinel-controlled – EOF-controlled
• Vendosja e një pikëpresje në fund të cikli-it for është një gabim semantik
• Ekzekutimi i një deklarate break në trupin e një cikli menjëherë përfundon ciklin
• Ekzekutimi i një deklarate continue në trupin e një cikli kalon në përsëritjen (iteracionin) tjetër
C++ Programming: From Problem Analysis to Program Design, Seventh Edition 34