Sunteți pe pagina 1din 13

Universitatea Tehnică a Moldovei

Facultatea Calculatoare Informatică și Microelectronică


Departamentul Ingineria Software și Automatică

RAPORT
la lucrarea de laborator nr. 1

la Programarea Calculatoarelor

Tema: Elemente de programare în limbajul C

Varianta 5

A efectuat: Chiforiuc Adrian


A verificat: Prijivelschi Dumitru

Chişinău 2020
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
 Aprecierea personală a nivelului de cunoaştere a următoarelor
compartimente:
 a echipamentelor periferice şi unităţilor-componente ale calculatorului
electronic personal (PC);
 a acţiunilor elementare referitoare la sistemele de operare (SO) MsDOS,
Windows etc.;a manipulărilor de bază referitor la principalele activităţi în
prelucrarea fişierelor de sistem cu ajutorul membranelor
FarManager/DOSNavigator/ NortonCommander, Start, MyComputer, bare
şi ferestrele Windows-ului instalat, Office 200x;
 a mediului dezvoltat integrat Turbo Pascal (TP) şi TC, a algoritmizării şi a
procedeelor de scriere/citire a datelor şi utilizarea construcţiilor elementare
a limbajului TP predestinate calculelor valorilor conform formulelor din
matematică şi fizică, elaborând algoritmi cu structuri liniare, ramificative,
ciclice;
 a tehnicilor de programare şi principilor de elaborare a modelelor de calcul.
 Însuşirii principiului algoritmizării şi programării cu rezolvarea propriilor
variante.

1. Extras Teoretic
Programarea veritabilă n-are frontieră între ştiinţele exacte şi artă. Ştiinţele
exacte îţi coordonează conduita, iar arta îţi sugerează soluţiile netradiţionale
prin posibilitatea neordinară de a găsi nuanţele “colore” al succesului în
timpul analizei şi soluţionarea problemei. Practica rezolvării problemelor
folosind un limbaj de programare a determinat de-a lungul timpului diverse
abordări în funcţie de performanţa limbajului de programare, performanţa
calculatorului şi nu în ultimul rând, în funcţie de metodele şi tehnicile
avansate, privind implementarea raţionamentelor pentru demonstraţiile
corespunzătoare problemelor.
Pentru a obţine un model de calcul al unei probleme care să fie
implementat pe PC trebuie de respectat etapele algoritmizării şi creării
programului conform regulilor sintactice şi semantice ale limbajului de
programare ales ca să atingem scopul scontat cât mai eficient. De aceea
pentru adoptarea unor decizii cât mai corecte şi eficiente, este necesar să se
folosească rezultatele obţinute în toate celelalte etape (niveluri de
cunoaştere a metodelor de rezolvare, formule, experimente sau
măsurătoarele efectuate, legi stabilite etc.).
2. Rezolvare

1.1 Principalele caracteristici ale windows-ului:


Versiunile Windows 9x includ: Windows 95, Windows 98, Windows Me.
Versiunile vechi de Windows erau deseori considerate doar o îmbunătățire
sau variantă grafică a sistemului de operare MS-DOS. Spre deosebire de
MS-DOS, Windows permite utilizatorilor să execute simultan aplicații
complexe, prin utilizarea așa-numitului „multitasking cooperativ”. Un factor
nou este utilizarea unei interfețe grafice cu utilizatorul de tip GUI. În
Windows a mai fost implementată o schemă de memorie virtuală, care
permite să se ruleze aplicații mai mari decât memoria de lucru fizică:
atunci când memoria fizică devine insuficientă, segmentele de cod și
resursele necritice se mută temporar pe un disc dur. La momentul
necessary ele se reîncarcă în memoria fizică.
1.2 Principiul gestionarii ferestrelor:
Atunci când deschidemun program, un fişier sau un folder, acesta apare
pe ecran într-o casetă sau un cadru denumit fereastră (window, în limba
engleză). De aici provine numele sistemului de ope-rare Windows.
Deoarece ferestre sunt peste tot în Windows, este important să înţelegem
cum le putem gestiona, și anume modificarile care pot fi aplicate asupra
unei ferestre, acestea sunt:
 Deplasarea unei ferestre;
 Modificarea dimensiunii unei ferestre;
 Ascunderea unei ferestre;
 Trecerea în regimul full-screen și invers;
 Închiderea unei ferestre;
 Comutarea între ferestre;

2.1 Lansarea aplicației Word poate fi realizată în mai multe


modalități:

1. Din meniul Start – Programs –Microsoft Office – Microsoft Office 20XX.


2. Dacă pe ecran există deja o pictogramă, se poate inițializa aplicația Word 
dând un dublu click (stânga) de mouse pe aceasta, sau o selectăm cu un
click (stânga) mouse și o apăsăm tasta Enter (de pe tastatură)
2.2 Crearea unui fișier Word:
1. Pe fila fișier, faceți click (stânga) de mouse pe “Nou” (New).
2. În caseta „Căutare șabloane online”(Search for online Templates) ,
introduceți tipul de document pe care doriți să-l creați și apăsați pe Enter
(de pe tastatură).
2.3 Editarea unui fișier Word:
1. Faceți click (stânga) mouse pe Editare Document Word.
2. Adăugați tabele și imagini.
3. Ap licați stiluri.
4. Ajustați formatarea.
5. Editați anteturile și subsolurile.

2.4 Salvarea unui fișier Word:


1. Faceți click (stânga) mouse pe “Fișier” (File).
2. Faceți click (stânga) mouse pe “Salvează” / “Salvează ca”(Save / Save
as), și salvați fișierul in locul unde se afla, sau puteți alege altă directorie.

3. Caracterizarea mediului de programare TurboPascal:


3.1 Primul rând conține un meniu. El este activat apăsând tasta F10 și
deplasându-ne cu tastele săgeți la stânga sau la dreapta pe una din
componente. Apăsând tasta Enter se deschide o fereastră cu un submeniu
în care ne deplasăm cu tastele săgeiți în sus sau în jos până la comanda
dorita. Apăsarea tastei Enter activează comanda selectată din submeniu.
1. Rândul de sus conține urmatoarele componente:
 File.
 Edit.
 Search.
 Run.
 Complete.
2. Rândul de jos conține următoarele componente:
 F1 HELP.
 F2 SAVE.
 F3 OPEN.
 ALT-F9 COMPLETE.
 F10 MENU.
3. Fereastra edit :
 Permite introducerea şi corectarea fişierului Pascal.
 Permite recuperarea textelor șterse (Undo= Alt+Backspace).
 Permite mutarea unui bloc de text marcat într-o zonă “Buffer”
numită clipboard (Cut = Shift+Delete).
 Permite copierea în zona “Buffer” (Copy= Ctrl + Insert).
 Permite inserarea în poziţia cursorului a unui bloc din zona
“Buffer” (Paste = Shift + Insert).
 Permite ștergerea unui bloc (Clear = Ctrl + Delete).
 Permite vizualizarea zonei “Buffer” (Show Clipboard)

4.1 Structura algoritmului


a) Zona de declarații: Aceasta secvență este situată la începutul codului și
servește la stabilirea variabilelor, tipurilor de date și a funcțiilor apelate.
b) Zona de calcul: Această secțiune este situată între begin și end, servind
citirii datelor de intrare, implementarării procedeelor de calcul, apelării
funcțiilor declarate și afișării datelor de ieșire.

4.2 Notația în scheme bloc

True False
IF
Start

Z:=X-Y Z:=X+Y
Var

Read Read

Write Write

For Stop

+, -, *, /, sqr()....
5.1 Structura programului Turbo Pascal:
program <nume_program>;
uses <biblioteci cu funcții și proceduri folosite în program>
type <tipuri de date definite de utilizator>
const <constante folosite în program>
var <variabile globale folosite în program>
<aici se pot scrie funcții și proceduri folosite în program>
begin
<aici se scrie programul principal>
end.

5.2 Sintaxa de bază a limbajului Turbo Pascal


6.1 Tipuri de date în Turbo Pascal
- Tipuri de date simple, ordinal:
 Integer;
 Boolean;
 Char;
 Real;
- Tipuri de date structurate:
 Array;
 Register;
 Object;
 Set;
 File;

6.2 Definirea Variabilelor și tipurilor de date în Turbo Pascal


Schema:
Var Variabila1:Tip de date1;
Exemplu:
Var
A : Real;
B, C : Integer;
D, E, F : Char;

7 Funcții predefinite
Odd(x) – Returneaza TRUE pentru x- par și FALSE pentru x – Impar
Pred(x) – Returneaza predecesorul lui x
Succ(x) – Returneaza succesorul lui x
Frac(x) – Returneaza partea fractionara a lui x
Inc(x) – Creste pe x cu 1
Dec(x) – Scade pe x cu 1
Inc(x, y) – Mareste valoare lui x cu y
Dec(x, y) – Scade valoare lui x cu y
Abs(x) – Returnarea modulului numarului x
Round(x) – Rotunjește pe x la cel mai apropiat întreg (integer)
Int(x) – Rotunjește pe x la cel mai apropiat număr (real)
Trunc(x) – Truncheaza pe x, returnând număr întreg prin eliminarea
zecimalelor
Sqr(x) – Ridică pe x la puterea a 2-a
Sqrt(x) – Returnează radicalul numarului x
Sin(x) – Returnează sinusul unghiului x exprimat în radiani
Cos(x) – Returnează cosinusul unghiului x
Arctan(x) – Returnează tangenta unghiului x
Ln(x) – Returneaza logaritmul natural din x
Exp(x) – Returneaza valoare e ridicata la puterea x

8 Tipuri de date predefinite


1. Integer;
2. Boolean;
3. Char;
4. Real;
5. Array;
6. Register;
7. Object;
8. Set;
9. File;
9 Verificaţi ce rezultate se vor obţine pentru următoarele secvenţe de
program:
1. Begin {pentru x=1, a=-1 şi x=1, a=1}
1. f=2*a*x+abs(a-1);
fx=exp(sqr(x))/sqrt(sqr(a));write(‘f=’,f,’fx=’,fx)End;
2. Begin z:= 3*7 div 2 mod 7/3 – trunc(sin(1)); writeln(‘z=’, z) end;
3. Begin v:= succ(round(5/2) – pred(3)); writeln(‘v=’, v:4) end;

Răspuns:
1.1 F = 0.00000000000000E+000 = 0
Fx = 2.71828182845905E+000
1.2 F = 2.00000000000000E+000 = 2
Fx = 2.71828182845905E+000
2 Z = 1.00000000000000E+000 = 1
3 V = 1.00000000000000E+000 = 1
9* Cum trebuie scrisă în TP instrucţiunea de atribuire, fără a utiliza
cicluri, pentru calcularea valorii E?

E : = 1 + x + (sqr(x) / (1 * 2)) + (sqr(x) * x) / (1 * 2 * 3) + (sqr(x) * sqr(x)) / (1 * 2 * 3 * 4)

10* Câte operaţii în TP se vor efectua în timpul calcului următoarei


expresii: (x + 1/2)*(y + 7/10)–3/4?

Răspuns : 7

12 Descrieţi modalităţile de soluţionarea ale problemelor asistate


de PC.
Exemplul nr 6:

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
double main()
{
double p = 0.7;
double s = 1.605;
double t = 0.5;
for (double t = 0.5; t <= 1; t += 0.1) {
double u = pow(sin(s - 1), 3) / p - pow(tan(s - s * t), 3);
double z = pow(sin(s - 1), 3) / p - pow(tan(s - s * t), 3);
if (z < 0) {
z = abs(z);
}
double o = sqrt(z / s) + pow(sin(s - p), 4);
printf("u= %f o= %f\n", u, o);
}
return 0;
}
Rezultatul este:
u= -0.845241 o= 0.382498
u= -0.155092 o= 0.382498
u= 0.120180 o= 0.656138
u= 0.226082 o= 0.757813
u= 0.258598 o= 0.783897
u= 0.262841 o= 0.787176
25 p 15
a)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float main()
{
float n;
float cm;
scanf("%f" ,&n);
cm = n * 100;
printf("%f cm \n", cm);
}
b)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float main()
{
float n;
float mg;
scanf("%f" ,&n);
mg = n * 1000000;
printf("%f mg \n", mg);
}

c)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float main()
{
float n;
float t;
scanf("%f" ,&n);
t = n/1000;
t = (int) t;
printf("%f t" , t);
return 0;
}

d)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float main()
{
float n;
float a, l, s;
scanf("%f" ,&n);
a = n / 365;
l = a * 12;
s = n / 7;
printf("%f ani %f luni %f saptamani", a, l ,s);
return 0;
}

26 p 15
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float main()
{
float a, p, s, pr, d, r, k;
scanf("%f%f%f", &a, &p, &s);
pr = 1 + (p/100);
d = pr * s;
r= d - s;
k = r * a + s;
printf("%f", k);
return 0;
}

27 p 15
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float main()
{
float a , b , c;
scanf("%f%f", &a, &b);
c = a;
a = b;
b = c;
printf("%f %f", a ,b);
return 0;
}

Concluzie: În această lucrare de laborator, am acumulat cunoștințele de


baza pentru o inițiere bună în programarea în limbajul C. Astfel, în decursul
lucrării am actualizat funcțiile matematice în C care sunt similare cu cele
din Pascal cu excepția unor funcții precum ar fi ridicarea la putere a unui
număr. Astfel în decursul lucrării am studiat crearea și citirea schemelor
logice care fac citirea simplifică citirea programelor fără a recurge la
calculator sau compilator.

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