LEF2

8
Ministerul Educaţiei şi Tineretului al Republicii Moldova Universitatea Tehnică a Moldovei Catedra: Automatica si Tehnologii Informationale RAPORT Lucrare de laborator Nr.2 la Programarea Calculatoarelor A efectuat: St. gr. TI-141

description

.

Transcript of LEF2

Page 1: LEF2

Ministerul Educaţiei şi Tineretului al Republicii Moldova

Universitatea Tehnică a Moldovei

Catedra: Automatica si Tehnologii Informationale

RAPORT

Lucrare de laborator Nr.2 la Programarea Calculatoarelor

A efectuat: St. gr. TI-141Bulat Alexandru

A verificat: lect.univ.M. Potlog

Chişinău 2014

Page 2: LEF2

Lucrare de laborator Nr.2

Tema: Programarea proceselor cu cicluri şi ramificaţii

Scopul lucrării: Elaborarea programelor ce conţin procese de calcul cu cicluri şi ramificaţii realizate cu diferite instrucţiuni posibile.

Formularea condiţii problemei: De calculat valorile variabilelor indicate după formulele de calcul şi datele iniţiale indicate. De afişat rezultatele obţinute pe ecran.

Varianta 14:Datele iniţiale:

x = 0.7b = 3.41≤y≤12Δy = 1

Mersul lucrării:Se cunosc mai multe structuri de agoritmi, şi anume: Structura liniară Structura ramificată Structura iterativă (ciclică)Ciclul este o parte a algoritmului care poate fi repetată de mai multe ori. Fiecare

ciclu trebuie să aibă condiţie. În dependenţă de aceasta ciclurile se divizează în:1. ciclu precondiţionat (anterior)2. ciclu postcondiţionat (posterior)Pentru crearea ciclurilor se utilizează următoarele 3 instrucţiuni:

Instrucţiunea while

Format:while (expresie)

instrucţiuneInstrucţiunea se execută repetat atîta timp cît valoarea expresiei este diferită de

zero. Testul are loc înaintea fiecărei execuţii a instrucţiunii. Prin urmare ciclul este următorul: se testează condiţia din paranteze dacă ea este adevărată, deci expresia din paranteze are o valoare diferită de zero, se execută corpul instrucţiunii while, se verifică din nou condiţia, dacă ea este adevărată se execută din nou corpul instrucţiunii. Cînd condiţia devine falsă, adică valoarea expresiei din paranteze este zero, se face un salt la instrucţiunea de după corpul instrucţiunii while, deci instrucţiunea while se termină.

1

Page 3: LEF2

Instrucţiunea do

Format:do instrucţiune while

(expresie);Instrucţiunea se execută repetat pînă cînd valoarea expresiei devine zero. Testul

are loc după fiecare execuţie a instrucţiunii.

Instrucţiunea for

Format:for (expresie-1opt; expresie-2opt; expresie-3opt)

instrucţiune

Această instrucţiune este echivalentă cu:expresie-1;while (expresie-2) {

instrucţiune;expresie-3;}

Expresie-1 constituie iniţializarea ciclului şi se execută o singură dată înaintea ciclului. Expresie-2 specifică testul care controlează ciclul. El se execută înaintea fiecărei iteraţii. Dacă condiţia din test este adevărată atunci se execută corpul ciclului, după care se execută expresie-3, care constă de cele mai multe ori în modificarea valorii variabilei de control al ciclului. Se revine apoi la reevaluarea condiţiei. Ciclul se termină cînd condiţia devine falsă.

Oricare dintre expresiile instrucţiunii for sau chiar toate pot lipsi.Dacă lipseşte expresie-2, aceasta implică faptul că clauza while este

echivalentă cu while (1), ceea ce înseamnă o condiţie totdeauna adevărată. Alte omisiuni de expresii sînt pur şi simplu eliminate din expandarea de mai sus.

Instrucţiunile while şi for permit un lucru demn de observat şi anume, ele execută testul de control la începutul ciclului şi înaintea intrării în corpul instrucţiunii.

Dacă nu este nimic de făcut, nu se face nimic, cu riscul de a nu intra niciodată în corpul instrucţiunii.

Analiza datelor:

a) Date de intrare: x,b,y1,y2,dy - variabile simple de tip real, variabile de intrare de la tastatură.

b) Date de ieşire: W,y - variabile simple de tip real, care vor afişa valorile funcţiei şi argumentul la ecran, n variablilă simplă de tip întreg care va afişa ordinea afişării.

2

Page 4: LEF2

Schema logică a programului:

3

Page 5: LEF2

Textul programului in limbajul „C”

#include<stdio.h>#include<conio.h>#include<math.h>int main(){float x,b,y,y1,y2,dyW;int n;clrscr();printf("Indtroduceti datele initiale x,b,y1,y2,dy \n");scanf("%f%f%f%f%f ",&x,&b,&y1,&y2,&dy);y=y1;n=0;printf("Rezultatele obtinute: \n");while (y<=y2) { if (y>6) {W = pow(1+2*sin(x)*sin(x)/(1+y),1/5); } else {W= log(pow(y,2))+b*x; } n=n+1; printf("%d y=%.3f W=%.3f \n",n,y,W); y=y+dy; }getch();return 0;}

Rezultatele obtinute:1 y=1.000 W=2.3802 y=2.000 W=3.7663 y=3.000 W=4.5774 y=4.000 W=5.1535 y=5.000 W=5.5996 y=6.000 W=5.9647 y=7.000 W=1.0008 y=8.000 W=1.0009 y=9.000 W=1.000

10 y=10.000 W=1.00011 y=11.000 W=1.00012 y=12.000 W=1.000

Concluzie:În această lucrare am elaborat un program ce conţine procese de calcul cu

cicluri şi ramificaţii realizate cu diferite instrucţiuni posibile. Din rezultatele obţinute observăm că y se măreşte cu o unitate întrucît dy, adică pasul este 1, pe

4

Page 6: LEF2

cînd variabila de ieşire W îşi modifică valorile doar pîna în momentul cînd y atinge valoarea 6, apoi el rămîne constant egal cu 1.

Bibliografie:

Liberty Jess, Teach Yourself C++ in 21 Days, SAMS Publishing, Indianapolis, 1994

Oualline Steve, Practical C++ Programming, O'Reilly & Associates, Sebastopol, 1997

Brian W Kernigham, Dennis M Ritchie - The C Programming Language

Prentice-Hall Software Series, 1978 Catrina Octavian, Cojocaru Iuliana, Turbo C++, Teora, 1993 http://devcentral.iftech.com/learning/tutorials/c-cpp/c/ http://www.cit.ac.nz/smac/cprogram/onlinet.htm

5