RAPORT
la lucrarea de laborator nr. 2
la Programarea Calculatoarelor
Varianta I
Chişinău – 2018
Scopul lucrării: Evidenţierea nivelului de cunoştinţe a fiecărui student la informatică,
în mod deosebit algoritmizarea, pentru elaborarea unui plan individual de studiu pe viitor la
lucrările practice şi lucrările de laborator pe parcursul semestrului.
Obiectivele temei
1. Acumularea informaţiilor suplimentare referitoare la operaţiile şi tehnicile de prelucrare a schemelor
logice în Word.
2. Familiarizarea cu tehnicile de lucru în mediul integrat fie Turbo C/C++, fie Borland C/C++ ..
3. Însuşirea principiilor efective de lucru în mediul integrat al compilatorului C: submeniul FILE
(încărcarea, înmagazinarea, extragerea); Edit (culegerea si redactarea textului, submeniul COMPILE
(compilarea programelor); RUN (execuţia programelor); OPTIONS (definirea şi stabilirea parametrilor a
regimului de lucru).
4. Elaborarea algoritmilor şi însuşirea modalităţilor de transpunere algoritmilor în limbajului C pentru
realizarea următoarelor:
însuşirea procesului de declarare a constantelor şi variabilelor în C;
însuşirea procesului de declarare a constantelor şi variabilelor în C;
însuşirea sintaxei operatorilor si expresiilor, organizand procesul de creare a intructiunilor executabile
în C;
procesul de citire, de afişare şi de calcul al algoritmului cu structuri ramificativ-ciclice din Ll nr.1;
elaborarea algoritmilor cu structură ciclică simplă şi încorporată cu un număr predifinit de
repetare şi verificare, utilizînd numai instrucţiunile if şi switch.
4. Derularea, testarea programului şi verificarea soluţiei problemelor trasate.
Consideraţii teoretice însuşite
1. Răspunsuri la punctele principale din îndrumar
Implementarea programului: editare, compilare, editare de legături, execuţie.
Un mediu de programare C conţine:
Un editor de text – folosit pentru creearea şi modificarea codului sursă C
1. Un compilator – pentru a converti programul C în cod înţeles de calculator.
Procesul de compilare cuprinde:
o fază de precompilare (macroprocesare) în care are loc expandarea macrodefiniţiilor si
compilarea condiţională si includerea fisierelor
compilarea propriu-zisă în urma careia se generează cod obiect
Fişiere incluse – care conţin definiţii şi prototipurile unor funcţii folosite de program
Fişiere biblioteci de funcţii
Editor de legături – care leagă la codul obiect anumite funcţii de bibliotecă (de exemplu
intrări/ieşiri) extrase dintr-o bibliotecă de funcţii, creindu-se un program executabil.
Un mediu de programare vă permite să editaţi codul sursă şi să compilaţi şi rulaţi programele direct dintr-
o interfaţă grafică. Există foarte multe medii integrate de dezvoltare pentru limbajul C, fiecare cu
avantajele şi dezavantajele sale. Dintre cele mai cunoscute, amintim doar câteva:
Code::Blocks (pentru Windows, Linux şi Mac)
DevCpp (preponderent Windows, dar şi Linux)
Microsoft Visual Studio (pentru Windows)
Eclipse (pentru Windows, Linux şi Mac)
KDevelop (preponderent Linux, dar practic Cross-Platform)
Anjuta (pentru Linux şi Mac) etc.
Descrierea generală ale compilatorului-translatorului(CT) Borland C/C++
CT este compus din trei părţi principale :
1. Bara de meniuri
2. Editorul text
3. Bara de statut
Pentru a înţelege cum funcţionează softul dat , vom examina mai întâi fiecare parte ale CT aparte :
A. Bara de meniuri – include în sine aşa meniuri ca :
File – În acest meniu sunt incluse funcţiile de operare cu fişierul prelucrat . Adică fişierul în care se
conţine sursa programului . Datorită acestui meniu avem posibilitate să salvăm , deschidem sau însuşi să
creem un document nou , în care pe parcurs vom înscrrie programul principal.
Edit – meniul dat reprezintă în sine funcţiile de prelucrare curentă ale textului programei.
Search – datorită meniului dat efectuarea operaţiilor de căutare a cuvintelor cheie(FIND) , deplasarea
directă pe linia necesară(GO TO LINE NUMBER ...) şi operaţiei REPLACE CT Borland prezintă un
soft uşor utilizabil.
Run – în meniul dat sunt include comenzile de complilare translare ale sursei programului . Tot
datorită unei comenzi (trace) ale acestui meniu avem posibilitate să efectuăm trasarea programulu.
Trasarea programului include în sine operaţia de executarea a programului pe pasuri .
Compile – meniul dat prezntă un set de comande ce permit detectarea greşelilor sintactice şi
semantice ale programului curent. Aici sunt ataşate aşa comenzi ca „link, build şi compile”.
Debug – datorită acestui meniu apar aşa posibilităţi ca ataşarea breack- pointerilor (breackpoint),
examinarea valorilor variabilelor pe parcursul executării programului (inspect...) şi a altor operaţii de tipul
dat .
Project – prin meniul dat putem efectua operaţiile de închidere , deschidere , adăugare sau ştergere
unor obiecte ale însuşi proectului prelucrat.
Options – meniul dat include în sine opţiunele sistematice ale softului dat.
Window – meniul dat prezintă comenzile de prelucrare ale ferestrei de redactare.
Help – acest meniu include în sine , informaţia despre producătorul acestui soft şi funcţiile (cu
exemple de interpretarea acestora în cadrul elaborării ale programului ) ale limbajului C/C++ .
B. Platforma de editare include în sine panoul (fereastra) de redactare ale sursei programului .
Panoul de ediatare are posibilitate de a schimba dimensinele sale. Datorită acestei operaţii avem
posibilitate să examinăm informaţia a panourilor ce se află în spatele panoului prelucrat fără a se adresa la
acela însuşi.
Platforma dată mai are o prioritate de afişare ale panoului de compilare. Această fereastră ne dă
posibilitate după efectuarea operaţiei de compilare şi link-uire ale codului programei , să afişeze greşelile
sintactice sau şi semantice ale sursei programului prelucrat.
C. Bara de Statut În bara dată se afişează informaţia de despre butoanele fierbinţi ale comenzilor
clasice ale compilatorlui dat.
Pentru a simplifica lucrul utilizatorului asupra softului dat , aici apare posibilitatea de a se folosi de
combinaţiile de taste pentru efectuarea unor comenzi , fără a se adresa la meniuri corespondente. De
exemplu : Pentru a efectua operaţia de compilare tastăm Alt+F9 sau pentru a se adresa la bara de meniuri
tastăm butonul F10.
Programul în C este format: din directivele preprocesorulu, din funcţii, descrieri, şi din blocul de
execuţie a funcţiei ce cuprinde în acolade instrucţiuni de citire, afişare şi calcul. Una din funcţiile
programului trebuie să aiba numele main – funcţia principală. Ca regula funcţile se foloseşte pentru a
calcula şi a returna un rezultat, de aceea înaintea numelui funcţiei se indică tipul ei. Cele mai importante
reguli ale funcţiei sunt:
1. dacă funcţia nu returnează un rezultat, se indică tipul void
2. corpul funcţiei este un bloc, şi de aceea ea se pune în acolade {...}
3. fiecare operator se termină cu separatorul ;
Directivele preprocesorului
# include – Include alt cScript fişier (fişiere din bibliotecile header sau alte surse.
Formatul: #include <file_name> #include “file_name”
fişiere din bibliotecile header:
- stdio.h- se foloseşte în program pentru a apela funcţiile de intrare ieşire (scanf, printf)
- math.h- se foloseşte în program pentru a apela funcţiile matematice
#include <stdio.h> /* funcţii standard de I/O; */
#include <conio.h> /* extensie a funcţiilor de I/O la consolă;*/
#include <stdlib.h> /* funcţii „standard” ale bibliotecilor „C”; */
#include <string.h> /* funcţii „standard” şiruri de caractere */
#include <math.h> /* funcţii matematice; pentru sin, cos, tan etc.*/
#include <stdlib.h> /*exit, etc.*/
#include <conio.h>/*getch, etc.*/
#include <ctype.h>/*isdigit, etc.*/
#include <graphics.h > /*– funcţii de lucru în regim grafic;*/
#include<time.h>
Parantezele vide void main() indică faptul că funcţia principală nu conţine argumente. Acoladele {…}
joacă rolul lui begin şi end în limbajul Pascal, adică cuprinde corpul funcţiei (programului).
Meta-limbajul care serveşte la descrierea formală a sintaxei limbajului C este simplu.
Categoriile sintactice sau noţiunile care trebuie definite sunt urmate de simbolul ':'.
Definiţiile alternative de categorii sunt listate pe linii separate. Dacă o linie nu este suficientă, se
trece la linia următoare, aliniată la un tab faţă de linia precedentă.
Un simbol opţional, terminal sau neterminal este indicat prin adăugarea imediată după el a
configuraţiei de caractere „opt”.
Testul 1,2
#include <stdio.h>
int main()
{
printf("hello, world!!!!!\n");
return 0;
}
Concluzia:Acest program afiseaza Hello world ! ,este cel mai simplu program in c .
Testul 2,3
Test 6,7
Concluzie
Acest program afiseaza toti divizorii oricarui numar introdus de la
tastatura.
Întrebările de autocontrol
1. Alcătuiţi schemele logice pentru instrucţiunile: if completă şi trunchiată; switch cu selecţia valorilor întregi şi
caracteriale. Analizaţi-le şi apreciaţi avantajele şi dezavantajele utiliză: if completă şi trunchiată rii fiecăreia.
2. De alcătuit schemele logice şi de verificat ce se v-a obţine pentru următoarele secvenţe de program:
a) {/* pentru x=1, a=-1 şi a=1 */
if a>0 f=2*a*x+abs(a-1);
else f=exp(sqr(x))/sqrt (sqr(a)); write(‘f=’, f);
b) {i:=1;
/* pentru x[1]=3, x[2]=4, x[3]=5…x[n]=i+2 i=1…n, n=5 */
1: y[i]:=1+abs (x[i]);
y[i]:=(1+sqr(x[i])); printf(‘i=’, i:2,’ y=’,y[i]); i:=i+1; if i<5 goto 1 };
c) { /* pentru b=3, c=2, a=-5 şi a=1 */
if a<>0
{ D:=sqr (b)-4*a*c;
if d<0 { printf('n-are radăcini'); exit();}
if D>0 { x1:=(-b+sqrt( D))/(2*a);
x2:=(-b-sqrt(D))/2*a;
printf(‘\n x1= ’, x1:6:3,‘ x2= ’, x2:6:3); }
else { x1:=(-b+sqrt(D)/(2*a); printf(‘x1=x2= ’,x1); }}}
d) Transcrieţi din TP în C:
begin {pentru b=4, c=3, a=-4 şi a=1 */
if a<>0 then
begin D:=sqr (b)-4*a*c;
if D>0 then begin x1:=(-b+sqrt( D))/(2*a);
x2:=(-b-sqrt(D))/2*a;
writeln(‘x1= ’, x1:6:3, ‘x2=’, x2:6:3) end
else begin if D=0 then x1:=(-b+sqrt(D)/(2*a);
write(‘x1=x2= ’, x1); end;
if d<0 then Writelen ('n-are radacini');
end; End.
e) verificaţi ce se efectuează:
Schema-bloc
START
j=1;
k=2;
h=0.94;
a= exp(-h*k*j)*cos(h*k-j)+sqrt(fabs(j-k));
b=a*log(a*pow(j,4)-sin(2*h))-k;
Rezultatul este:
Afiş.: a,b
STOP
Listingul programului
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main() {
float j=1,k=2,h=0.94,a,b;
clrscr();
a=exp(-h*k*j)*cos(h*k-j)+sqrt(fabs(j-k));
b=a*log(a*pow(j,4)-sin(2*h))-k;
printf("Rezultatul este:\n a=%.2f\nb=%.2f",a,b); getch();}
Programul de sus calculeaza doua variabile a si b si le afiseaza.
Raspunsuri:
If
FALSE TRUE
a>0
Instructiune
FALSE TRUE
a>0
else
Instructiune Instructiune
If-else
FALSE TRUE
a>0
else
Instructiune Instructiune
FALSE TRUE
b>0
else
Instructiune Instructiune
Instructiunea
If-else-if
2.
a) Acest program va calcula F
verificind daca a>0 atunci va
fi o coditie daca a nu este mai mare ca 0 atunci
va fi alta conditie, si se va afisa F.
Citire a
b=3, c=2
Nu
a<>0
D:=sqr (b)-4*a*c;
Nu Nu
d>0 x1:=(-b+sqrt(D)/(2*
d<0
x2:=(-b-sqrt(D))/2*a
Afisare x1,x2
Stop
d) #include <stdio.h>
int main()
{
int b=4,c=3,a;
float x1,x2,d;
printf("Introduceti a = \n\r");
scanf("%d",&a);
if(a!=0){
d=pow(b,2)-4*a*c;
if (d>0){
x1=(-b+sqrt( d))/(2*a);
x2=(-b-sqrt(d))/2*a;
printf("x1=%f si x2=%f",x1,x2);
}
else if(d==0){
x1=(-b+sqrt(d)/(2*a));
printf("x1=%f",x1);
}
else if(d<0){
printf("Nu are radacini");
}
}
a=-4
#include<stdio.h>
#include<math.h>
void main() {
float j=1,k=2,h=0.94,a,b;
a=exp(-h*k*j)*cos(h*k-j)+sqrt(fabs(j-k));
b=a*log(a*pow(j,4)-sin(2*h))-k;
printf("Rezultatul este:\na=%.2f\nb=%.2f",a,b);
}
1. Schema – bloc
1.
Listing-ul programului:
#include <stdio.h>
#include <stdlib.h>
int main(){
int n,d,s=1;
printf (" Dati numarul : ");
scanf ("%d", &n);
for(d=2;d<=n/2;d++)
if(n%d==0)
s=s+d;
if(n==s)
printf ("numarul %d este perfect",n);
else
printf ("numarul %d nu este perfect",n);
return 0;
}
3. Analiza rezultatului:
Acest program determină dacă numărul introdus de la tastatură este perfect sau nu.
Numărul perfect este un număr întreg egal cu suma divizorilor săi, din care se exclude
numărul însuși .
EXEMPLE : 6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
Concluzie: In urma efectuarii lucrarii de laborator nr.2 am invatat sa fac scheme logice de
diferite tipuri de ex: ramificative ciclice ,am invata sa algoritmez tot felul de probleme.Studiind
indicatiile metodice am invatat noi tehnici de programare. De asemenea am invatat noi tehnici
de programare studiind indicatiile metodice prezentate. Raspunzind amanuntit la intrebarile de
autocontrol si analizind diverse medii de programare(Turbo C, Dev C,Code::Blocks), am invatat
sa utilizez diferite meniuri, astfel intelegind care mediu de programare este mai original si
aceptabil.