Sunteți pe pagina 1din 4

Laborator 8: Utilizarea structurilor de programare repetitive

Enunțul problemei
Să se realizeze un instrument virtual LabVIEW care să semnalizeze dacă un număr N
specificat de către utilizator este sau nu este număr prim.
În funcție de cum numărul N este sau nu este prim, se va afișa textul „Numărul N este
prim !” sau textul „Numărul N nu este prim, deoarece se divide cu X”, unde X este un
divizor al lui N.

Descrierea funcționării instrumentului virtual


Valoarea de intrare este numărul N.

Valorile de ieșire sunt:


• o valoare logică (booleană) care specifică dacă numărul N este sau nu este prim;
• textul cu conținut corespunzător concluziei privind numărul N.

Utilizatorul va introduce un număr în elementul denumit „N”.


Instrumentul virtual va semnaliza prin aprinderea unui LED de culoare roșie, denumit
„Nr. prim?”, dacă numărul N introdus de către utilizator nu este prim și va afișa într-un
element indicator textul mesajului „Numărul N nu este prim, deoarece se divide cu X”,
unde X este un divizor al lui N . Dacă numărul N este prim, LED-ul va avea culoarea
verde și programul va afișa mesajului „Numărul N este prim”.

Exemplu de panou

Fig. 8.1. Exemplu de panou


Programarea Calculatoarelor 1 - Algoritmi

Structura repetitivă cu număr nedefinit de iterații (bucla While)


O buclă While execută porțiunea de diagramă pe care o conține până când la
terminalul de continuare (aflat în colțul dreapta - jos) apare o anumită valoare
booleană.

Atunci când o buclă While este dispusă în diagramă, terminalul său de continuare se
află în starea implicită Stop If True, adică bucla While va executa iterații până când la
terminalul său de continuare ajunge o valoare booleană True.

Fig. 8.2. Buclă While cu terminalul de continuare în starea implicită

Starea implicită a terminalului de continuare poate fi modificată. Terminalul poate fi


trecut în starea Continue If True fie cu unealta de operare, fie apăsând butonul drept al
mouse-ului și selectând starea respectivă din meniul propriu.

Fig. 8.3. Trecerea terminalului de continuare al buclei While în starea Continue If True

În starea Continue If True, bucla While își va încheia execuția atunci când la terminalul
de continuare ajunge valoarea booleană False.

În colțul stânga - jos, bucla While dispune de un terminal numărător (notat cu i) care
generează o valoare naturală reprezentând indicele iterației curente (aflate în curs de
execuție). Indicii iterațiilor sunt numerotați începând cu valoarea 0.

2
Programarea Calculatoarelor 1 - Algoritmi

Indicații
Un număr este prim dacă se divide (se împarte exact, cu rest nul) doar la unu și la el
însuși.
Pentru a verifica dacă un număr N este prim, se împarte succesiv numărul respectiv la
doi, trei, patru etc., până la o valoare mai mare sau egală cu valoarea N/2. Împărțirea
lui N la valori mai mari decât N/2 nu se mai justifică, deoarece N nu se poate divide cu o
astfel de valoare.

Dacă există un număr a astfel încât restul împărțirii lui N la a să fie nul, atunci numărul N
nu este prim.
Dacă nu există niciun număr a, mai mic decât N/2, pentru care restul împărțirii lui N la a
să fie nul, atunci numărul N este prim.

În diagrama instrumentului virtual se introduce o buclă While în care, la fiecare iterație,


se va calcula restul împărțirii lui N la i+2, utilizând funcția Quotient & Remainder
(meniul Numeric).

La terminalul de continuare al buclei While, aflat în starea Stop If True, se va trimite o


valoare booleană calculată cu funcția logică OR între condițiile:
• restul împărțirii lui N la i+2 este egal cu zero;
• i+2 este mai mare decât N/2.

Astfel, bucla While își va încheia execuția când una din cele două condiții este
îndeplinită:
• dacă execuția buclei se va încheia datorită faptului că restul împărțirii lui N la i+2
este egal cu zero, atunci numărul N nu este prim;
• dacă execuția buclei se va încheia datorită faptului că s-a ajuns la un indice de
iterație i pentru care i+2 este mai mare sau egal cu N/2, atunci numărul N este
prim.

Deoarece la o ieșire dintr-o buclă While se va regăsi valoarea de la ultima iterație, se


poate conecta rezultatul comparației i+2 > N/2 la terminalul elementului indicator de tip
LED, terminal aflat în exteriorul buclei While.

Pentru a afișa la elementul indicator de tip String un mesaj corespunzător situației


determinate, se va utiliza o funcție Select la al cărei terminal decizional se conectează
valoarea booleană ce descrie caracterul prim al numărului N (valoarea conectată la
terminalul indicatorului de tip LED).

În cazul True, când numărul N este prim, la intrarea corespunzătoare a funcției Select
se conectează textul ”Numărul N este prim !”.
Textul este obținut prin concatenarea textelor:
• ”Numărul ”;
• textul rezultat prin convertirea valorii numerice N în valoare de tip string cu funcția
Number To Decimal String;
• ” este prim !”.
3
Programarea Calculatoarelor 1 - Algoritmi

În cazul False, când numărul N nu este prim, la intrarea corespunzătoare a funcției


Select se conectează textul obținut prin concatenarea textelor:
• ”Numărul ”;
• textul rezultat prin convertirea valorii numerice N în valoare de tip string cu funcția
Number To Decimal String;
• ” nu este prim deoarece se divide cu ”;
• textul rezultat prin convertirea în valoare de tip string, cu funcția Number To
Decimal String, a valorii numerice i+2 din ultima iterație a buclei While, pentru
care restul împărțirii lui N la i+2 a fost nul;
• textul ” !”.

S-ar putea să vă placă și