Capitolul 5 bucla urmată de operatorul de declarație până la

Capitolul 5. Un ciclu cu următoarea condiție. Declarația repetată. până la.

1. Operatorul buclă cu o condiție ulterioară (postcondiție) este similar cu un operator cu buclă cu o condiție prealabilă, dar condiția este evaluată și verificată după executarea instrucțiunilor care alcătuiesc corpul bucla.







Forma generală a operatorului buclă cu o condiție ulterioară este:

unde s1, s2, s3. - operatorii corpului ciclului; <условие> - expresie logică.

Traduceți: repetați - repetați, până la - până la.

După cum puteți vedea, un astfel de ciclu începe cu executarea de afirmații în interiorul bucla, iar apoi expresia scrisă în condiție este evaluată.

Dacă valoarea acestei expresii este adevărată, atunci iese din bucla, în cazul în care valoarea este fals, atunci bucla continuă și din nou declarațiile

Trebuie să observăm imediat că, spre deosebire de bucla în timp. do. în bucla repetitivă. până la. paranteze de operare încep. nu pot fi utilizate, deși nu le va aduce răul. Se poate spune cu alte cuvinte că declarația buclă se repetă. unti l. nu necesită paranteze pentru operatori începători. end.

Luați în considerare funcționarea acestui operator pentru un exemplu.

Exemplul 1. Găsiți cel mai mic număr natural care dă restul 1, 2, 3, 4, respectiv 5, atunci când se împarte cu 2, 3, 4, 5, 6.

Problema va fi rezolvată după cum urmează: ia cel mai mic număr naturale - o unitate și sunt reziduuri de divizare prin 2, 3, 4, 5 și 6; în cazul în care rămâne va fi egal cu 1, 2, 3, 4 și 5, atunci numărul este dorit, este necesar să se dea pe ecran și să finalizeze programul, în caz contrar, trebuie să luăm următorul număr natural - 2 și verificați-l, și așa mai departe.

Programul. elaborat pe această idee, este foarte simplu:

writeln ("întregul cerut", n)

Un alt exemplu care demonstrează activitatea unui ciclu cu o condiție ulterioară.

Exemplul 2. Numerele, la fel de ușor de citit de la stânga la dreapta și de la dreapta la stânga, sunt numite palindromuri. De exemplu, numerele 42324 sau 1331 sunt palindromuri. Efectuați un program care va găsi numere - palindromuri dintr-un anumit interval.

Logica elaborării programului este după cum urmează.

Rearanjați numerele și comparați numărul cu numărul dat.

Anterior, programul de permutare a numerelor de numere, care a fost efectuat folosind un ciclu cu o condiție prealabilă

Cum va fi construită o parte a programului despre permutarea numerelor utilizând un ciclu

Să presupunem că un număr dat a. atunci introducem o altă variabilă b. care va fi atribuită valoarea variabilei a (pentru ceea ce se face, veți afla mai târziu): b: = a;

Vom configura o altă variabilă a1 pentru numărul nou, în care numărul va fi deja rearanjat.

Valoarea inițială a acestei variabile este zero: a1: = 0;

De ce valoarea acestei variabile este zero, devine clar din program.

Apoi, organizați bucla de repetare. în care va exista o permutare a cifrelor lui b:

a1: = al * 10 + b mod 10;

Deci, într-o buclă, precum și într-o buclă. do. ultima cifră este separată:

b mod 10; (de exemplu, 343 mod 10 = 3); variabilei a1 i se atribuie valoarea:

a1: = al * 10 + b mod 10; 0 * 10 + 3 = 3;

"ultima cifră a numărului dat este aruncată" prin operația divizării întregi:

b: = b div 10; 343 div 10 = 34;

condiția este verificată: b = 0, 34 = 0, condiția nu este îndeplinită, apoi ciclul continuă.

Ultima cifră a unui nou număr este separată:

b mod 10 = 34 mod 10;

noul număr a1, deja egal cu 3, este înmulțit cu 10, iar următoarea cifră este adăugată rezultatului - 4:

a1: = al * 10 + b mod 10;

"ultima cifră a numărului b este eliminată":

b: = b div 10; 34 div 10 = 3;

se verifică următoarea condiție: b = 0, 3 = 0; condiția nu se menține, deci ciclul continuă.

Ultima cifră a numărului este separată:

b mod 10; 3 mod 10 = 3;

se formează un nou număr:

a1: = al * 10 + b mod 10; 34 * 10 + 3 = 343;

"ultima cifră a numărului este eliminată" și se obține un nou număr:

b: = b div 10; 3 div 10 = 0;

condiția este verificată: b = 0, 0 = 0; condiția este îndeplinită, atunci ciclul se încheie.

Acum devine clar de ce o altă variabilă b este introdusă pentru un anumit număr, valoarea sa în ciclu se modifică de la inițial la zero și pentru a stoca numărul dat în variabila a. și, ca să spunem așa, este introdusă variabila "lucru" - b.

După închiderea ciclului permutare de cifre este comparat cu numărul inițial de care este „reținut“ într-un număr variabil și care sa întâmplat după permutare de numere și „acumulat“ în variabila a1.

Dacă a = a1, atunci valoarea a este afișată, deoarece acest număr este un palindrom.

Mai mult, valoarea unei creșteri cu 1, adică a următorului număr natural, este luată în considerație, iar ciclul exterior continuă. Cifrele numărului sunt rearanjate, noul număr obținut după schimbarea cifrelor este a1. este comparat cu originalul a și așa mai departe.

Bucla exterioară se termină atunci când valoarea lui a devine egală cu marginea din dreapta a intervalului - n.

m, n, a, b, a1. longint;

scrieți ("Introduceți marginea din stânga a spațiului"); readln (m);

scrieți ('Introduceți marginea dreaptă a spațiului'); readln (n);

writeln ('Numerele de palindromuri din [', m, ';', n, ']');

writeln ('Numărul după permutarea cifrelor', n1)

Schematic, buclele repetate pot fi reprezentate după cum urmează (a se vedea figura 21):

2. Diferențele dintre ciclu - în timp și buclă - repetați

1. Declarația care se află în buclă. se repetă până când condiția este îndeplinită (adică adevărată). Secvența de afirmații care se află în buclă repetată. se repetă până când condiția este îndeplinită (adică este falsă).

Prin urmare, în buclă în timp, se folosește condiția de continuitate a buclăi, iar în buclă repetată, condiția pentru sfârșitul buclă.

2. Bucla în timp ce repetă o declarație (mai multe situații este necesar să se combine într-o declarație compus folosind operatorul începe paranteze. End), și se repetă ciclul poate fi repetat mai mulți operatori fără paranteze operatorului.

3. În buclă, condiția este mai întâi verificată și apoi, în funcție de valoarea condiției, operatorul sau grupul de operatori este executat sau nu după cuvântul "do".

În ciclul de repetare o secvență de instrucțiuni este executată o singură dată, iar după aceea starea este testată, adică. E. Secvența este executat întotdeauna cel puțin o dată, și în timp ce declarațiile de buclă care constituie corpul buclei nu poate fi executat chiar o dată.







Găsiți cel mai mic număr natural, care este un număr mai mare de 131, cu un număr par de cifre. Faceți un program.

3. Programele care folosesc ciclurile se repetă și în timp. do.

Exemplul 3. Dacă adăugăm toate cifrele unui număr, și apoi - toate numerele găsite, iar suma va fi repetat de mai multe ori, vom obține în cele din urmă o singură cifră (figura), numită rădăcina digitală a unui număr dat. De exemplu, numărul de rădăcină digitale 561 este de 3 (5 + 6 + 1 = 12, 1 + 2 = 3).

Faceți un program pentru a găsi rădăcina numerică a numărului.

Considerații pentru programare

Este clar că programul să fie un ciclu, care determină cantitatea de cifre. La rândul său, acest ciclu trebuie executat, de asemenea, până când suma cifrelor este egală cu o cifră, adică Acesta va fi mai mic de 10, dar încă mai mare decât 0. Pentru aceasta avem nevoie pentru a organiza un alt ciclu, care va fi pe exterior care contează suma cifre relative la ciclul.

O caracteristică subtilă. De fiecare dată după suma internă a numerelor ciclului de numărare, valoarea acestei sume ar trebui să se atribuie o variabilă care conține numărul inițial, t. E. Pentru a înlocui numărul de valoarea sa, verificați starea (nu este dacă suma este mai mică de zece) și se continuă ciclul cu un număr nou - valoarea, în cazul în care condiția nu este îndeplinită. Și variabila de a acumula suma necesară de fiecare dată când nu uitați să null.

Deci, în cazul în care numărul de intrare este atribuit n variabile, iar suma cifrelor variabilei s, după calcularea sumei de variabile de cifre ar trebui să obține valoarea s (n: = s), verificați starea (n <10), если оно еще не выполняется, тогда обнулить переменную s (s:= 0) и продолжить цикл подсчета суммы цифр.

Bucla exterioară pentru verificarea valorii sumelor este organizată folosind instrucțiunile repetate. până la n <10, а внутренний по подсчету суммы цифр с помощью операторов while. do.

scrieți ('Introduceți un număr natural'); readln (n);

s: = s + n mod 10; n: = n div 10

writeln ("Rădăcina digitală a numărului", a, "este egală cu", n)

1. Rulați acest program. Modificați-o astfel încât să găsească rădăcinile digitale ale fiecăruia dintre numerele de la 10 la 100.

2. Găsiți un număr din trei cifre care este pătratul exact al numărului natural k și astfel că produsul cifrelor sale este k-1.

4. Diferite sarcini

Exemplul 1. Creați un program pentru determinarea tuturor divizoarelor cu numărul n.

Atunci când o astfel de sarcină este pusă, foarte des studenții oferă o astfel de soluție.

Este necesar să se încerce toate numerele naturale de la 1 la n, iar dacă unii dintre ei ar fi un divizor de numărul n, apoi da-l pe ecran. De exemplu, pentru numărul 36, pentru a lua numerele de testare 1, 2, 3, 36 și selectați din aceste separatoare 36. Divizoarele sunt după cum urmează: 1, 2, 3, 4, 6, 9, 12, 18 și 36.

O astfel de metodă este posibilă. Dar, dacă vă uitați atent la separatoarele numărului 36, veți găsi că acestea sunt toate în intervalul de la 1 la 18, adică până la jumătate din numărul 36 și numai ultimul divizor este numărul însuși.

Da, și logica simplă a raționamentului ne convine că divizoarele vor fi localizate tocmai în acest interval: de la 1 la.

Dacă admitem ideea că există un divizor mai mare decât jumătate din număr, apoi înmulțim cu doar 2, obținem un număr mai mare decât numărul dat.

Astfel, devine clar că toți divizorii unui număr, cu excepția lui în sine, se află în intervalul de la 1 la, și de aceea trebuie să verificăm numerele pentru eventualii divizori exact din acest interval.

Prin urmare, apare un astfel de plan: organizarea unui ciclu de la 1 la; dacă numărul n este împărțit de un număr din acest interval, atunci deduceți acest divizor pe ecran; continuarea ciclului; pentru a afișa numărul în sine.

scrieți ('Introduceți un număr întreg'); readln (n);

writeln ("Divizorii unui număr", n);

până la d> n div 2;

Dar chiar și atunci când rezolvăm această problemă, mașina poate fi ajutată și facilitată de munca ei. Aici, matematica vine din nou la salvare.

Se pare că pentru a găsi divizorii numărului n este suficient să se găsească divizori care să nu depășească.

Toți ceilalți divizori sunt obținuți ca rezultat al împărțirii numărului n de către divizii găsiți.

De exemplu, dacă n = 30, este suficient pentru a găsi divizorii de 1, 2, 3, 5 (rădăcină pătrată naturală 30 este egal cu 5), precum și toate celelalte separatoare de divizare prin rezultatele obținute:

Atunci când creați un program, apare o problemă - nu există o funcție încorporată pentru extragerea unei rădăcini pătrate într-un set de numere întregi. Acest obstacol este ușor eludat dacă organizăm un ciclu de selecție a divizorilor d de la 1 până la d * d

De ce este necesar să faceți acest lucru. Acest lucru devine clar în exemplul pentru numărul 36. = 6, ciclul - în timp ce dd <6;

d = 1, d d = 11 = 1 <36 (истина ),

există restul diviziunii 36 mod 1 = 0; 1, iar coeficientul este 36 cu 1, 36 div 1 = 36;

d = 2, d d = 2 2 = 4 <36 (истина ),

2, iar coeficientul este 36 cu 2, 36 div 2 = 18;

d = 3, d d = 3 3 = 9 <36 (истина ),

3, iar coeficientul este 36 de 3, 36 div 3 = 12;

d = 4, d d = 4 4 = 16 <36 (истина ),

emise 4 și 36 div 4 = 9;

d = 5, d d = 5 5 = 25 <36 (истина ),

36 mod 5 <>0, nimic nu este afișat pe ecran,

d = 6, d d = 6 6 = 36 <36 (ложь ), цикл заканчивается.

Se verifică d = 6 (d d = n), 6 6 = 36 (adevărat), este dat 6.

Dacă ciclul trebuia să continue până la d d <= n, тогда при d = 6 на экран выдавалось бы - 6 и 36 div 6 = 6, т. е. две шестерки, что было бы ошибкой.

scrieți ('Introduceți un număr întreg'); readln (n);

writeln ("Divizorii unui număr", n);

dacă d * d = n scrieți apoi (d); writeln

Efectuați un program care va găsi numărul de divizoare și suma lor pentru un anumit număr natural.

Exemplul 2. Găsiți cea mai mare divizoare comună (GCD) a două numere a și b.

Întrebarea de a determina cel mai mare divizor comun de două numere a fost atât de detaliat și detaliat descris în toate materialele didactice, încât este foarte dificil să raportați ceva nou în compilarea algoritmilor pentru găsirea GCD.

Totuși, am observat că majoritatea manualelor descriu definiția GCD utilizând algoritmul Euclid, și nu în cel mai bun mod.

Vom alege o abordare diferită a acestei chestiuni, mi se pare mai naturală.

Deci, să presupunem că nu știm algoritmul lui Euclid și să încercăm să găsim cel mai mare divizor al numerelor, pornind de la cunoștințele elementare ale matematicii și logica simplă a raționamentului, și apoi să facem un program.

Înainte de a ne defini în mod clar pentru noi ce este GCD-ul a două numere. Deci, pentru numerele 36 și 45 există trei divizori obișnuiți: 1, 3, 9. Cel mai mare dintre ei este 9. Este GCD-ul numerelor 36 și 45.

Pentru 30 și 45, există divizori puțin mai obișnuiți: 1, 3, 5 și 15. Cel mai mare este 15, ceea ce înseamnă că GCD (30, 45) = 15.

Cel mai mare divizor comun al a și b este cel mai mare număr dintre toți divizorii obișnuiți ai a și b.

Apoi, logic, există o idee firească de a găsi GCD după cum urmează.

În primul rând. dacă la unul dintre numerele care nu divizibile prin cec la alta, în cazul în care divizată, togdato pe care partiția este cel mai mare divizor comun. De exemplu, pentru numerele 45 și 15, GCD este numărul 15. Dacă nici unul dintre ei este divizibil cu o alta, atunci vom lua pe rând toate numerele naturale de la 1 la cel mai mic dintre numerele a și b, și verificați care dintre ele sunt împărțite în două numere, ultimul dintre aceste divizoare comune și va fi cel mai mare.

Un astfel de proces pentru numerele 36 și 45 va arăta astfel:

verificați împărțirea lui a cu b și b cu a;

vom găsi restul divizării cu 1, 36 mod 1 = 0, 45 mod 1 = 0, atunci 1 este divizorul comun;

pe 2, 36 mod 2 = 0, 45 mod 2 <>0, 2 nu este un divizor comun;

pe 3, 36 mod 3 = 0, 45 mod 3 = 0, 3 - divizorul comun;

pe 4 și așa mai departe la 36.

Ultimul dintre acești divizori comuni va fi 9, el este GCD.

Nu este dificil să compilați un program pentru un astfel de algoritm simplu.

a, b, n, k, i. întreg;

sensibilitate, pricepere, curaj, dăruire, programare pozitivă. cu sprijinul și sprijinul necesar, care. izolare și spațiu limitat, plutesc în întuneric și tăcere. liber de toate iritațiile care au venit.

Studii legate de programare și eficacitate organizațională. Este uimitor. limba de programare. anumite moduri de proiectare și programare. comună. Tăcerea morții. > De mai multe ori programul de pereche a trecut.

Studii legate de programare și eficacitate organizațională. Este uimitor. limba de programare. anumite moduri de proiectare și programare. comună. Tăcerea morții. > De mai multe ori programul de pereche a trecut.

va fi numit „Rezultatul este o programare neuro-lingvistică. - Expresie voluminos în spatele căreia taciturn, voce-TION, sunet, voce, spune, disonanță tăcere în ton, armonios, strident, tihni ..

CENTRUL PSIHOTERAPEUTIC "LAD" VI ELMANOVICH PROGRAMARE NEUROLINGVISTIC (manual metodic pentru incepatori) PART1. MODALITATE (A). 1. Dacă volumul = 0, atunci "ascultarea tăcerii". dacă volumul este maxim, atunci "se aprinde.







Articole similare

Trimiteți-le prietenilor: