CICLUL CU TEST INIIAL While expresie logic do















- Slides: 15
CICLUL CU TEST INIŢIAL While <expresie logică> do <secvenţa>; Cît timp condiţia e adevărată se execută corpul ciclului condiţie da Corpul ciclului nu
CICLUL CU TEST INIŢIAL while a < b do a : = a + 1; Particularităţi: • Pot fi utilizate condiţii compuse: while (a < b) and (b < c) do begin {corpul ciclului} end; • Dacă corpul ciclului conţine mai multe instrucţiuni se utilizează instrucţiunea compusă, secvenţa se include între cuvintele begin şi end : while <condiţie> do begin {corpul ciclului} end;
CICLUL CU TEST INIŢIAL Particularităţi: • Condiţia este evaluată de fiecare dată • Dacă iniţial condiţia este falsă, secvenţa nu se execută nici odată a : = 4; b : = 6; while a > b do a : = a – b; • Dacă condiţia nu devine falsă nici odată, programul se înciclează a : = 4; b : = 6; while a < b do d : = a + b;
De cîte ori se execută secvenţa? a : = 4; b : = 6; while a < b do a : = a + 1; 2 ori a=6 a : = 4; b : = 6; while a < b do a : = a + b; o dată a = 10 a : = 4; b : = 6; while a > b do a : = a + 1; 0 ori a=4 a : = 4; b : = 6; while a < b do b : = a - b; o dată b = -2 a : = 4; b : = 6; while a < b do a : = a - 1; înciclare
CICLUL CU NUMĂR DE REPETĂRI NEDETERMINAT Exemplu: Să se determine cîte cifre conţine numărul n şi care sete suma lor. Algoritmul: Determinăm ultima cifră, o numărăm, o adunăm la sumă, o aruncăm. n k 123 0 12 1 1 2 0 3 Numărul de repetări nu se cunoaşte. De acea repetăm pînă cînd n = 0.
SCHEMA BLOC început Zerografiem contorul şi suma Citim n k : = 0; s: =0; Executăm «cît timp n <> 0» n <> 0? nu da c : = с mod 10; scriem s, k k : = k + 1; s : = s+c; n : = n div 10; stop
Algoritmul lui Euclid CMMDC(cel mai mare divizor comun ). Fie a şi b două numere naturale nenule cu proprietatea а<=b. Pentru numerele a, b şi r, unde r este diferenţa dintre a şi b are loc egalitatea CMMDC(a, b) =CMMDC(a, r).
Algoritmul lui Euclid CMMDC(a, b)= CMMDC(a, b-a) = CMMDC(a-b, b) Înlocuim cel mai mare dintre a şi b cu diferenţa lor pînă cînd ele devin egale. Acesta fa fi CMMDC. Евклид (365 -300 до. н. э. ) Exemplu: CMMDC (14, 21) = CMMDC (14, 21 -14) = CMMDC (14, 7)= CMMDC (7, 7) = 7 Număr mare de paşi pentru numere cu diferenţa mare: cmmdc (1998, 2) = cmmdc(1996, 2) = … = 2
Paşii de execuţie pentru numerele 32 şi 48 А В 32 48 32 16 16 16 CMMDC=16 Paşii de execuţie pentru numerele 27 şi 45 А В 27 45 27 18 9 9 CMMDC=9
Programul Pascal
Rezultat
SCHEMA BLOC Pentru Algoritmul lui Eucclid început Citeşte A, B A <>B? nu da da A=A-B nu А>B B=B-A scrie А stop
Programul Algoritmul lui Euclid Program Euklid; Var a, b: integer; Begin write(‘introdu a, b’); readln(a, b); while a<>b do begin if a>b then a: =a - b else b: =b -a; end; writeln(‘CMMDC= ‘, a); End. se repetă «cît a <>b»
Algoritmul lui Euclid
Rezultat Dacă numerele nu au divizori comuni atunci CMMDC este 1