Sunteți pe pagina 1din 20

Programarea calculatoarelor

Laborator 1
Lll

Noiuni de baz n programare


Obiectiv: fixarea noiunilor de baz asociate cu codificarea i logica programelor.
Activiti: prezentarea urmtoarelor subiecte:
- sistemele de numeraie folosite de limbajul C - baza 2, 8, 16;
- avantajele utilizrii bazei 16 in domeniul calculatoarelor;
- uniti de msur pentru cantiti de date Kilo/Mega/Giga/Terra bit/byte;
- tipuri de date fundamentale pentru calculatoare - bit, octet, word, double word;
- codificarea ASCII;
- scheme logice, simbolurile utilizate n schemele logice;
1.1

Sistemele de numeraie folosite de limbajul C

Un numr poate fi reprezentat n mai multe sisteme de numeraie (n mai multe baze).
Reprezentarea cea mai folosit n viaa de zi cu zi este cea zecimal (folosind baza 10),
reprezentarea valorilor fcndu-se folosind cele 10 cifre (de la 0 la 9).
Suportul matematic folosit de computere pentru manevrarea i prelucrarea
informaiilor este numeraia n baza 2, dar i n baze de numeraie care sunt puteri ale lui 2.
Principalele sisteme de numeraie pentru reprezentarea binar a informaiei sunt
prezentate n continuare.
Sistemul binar folosete baza 2, fiind utilizate doar dou cifre - 0 i 1. Astfel, orice
numr va fi reprezentat numai cu aceste dou cifre.
Sistemul octal folosete baza 8, utiliznd cifrele de la 0 la 7. Astfel, numrul 8 va fi
notat n sistemul octal cu 10, numrul 9 va fi notat cu 11, numrul 10 va fi notat n octal cu
12 etc. Sistemul octal este cel mai rar folosit.
Sistemul hexazecimal folosete baza 16 - sunt necesare 16 cifre distincte, i dup cifrele
de la 0 la 9 se folosesc, n ordine, literele A, B, C, D, E, F. Astfel, numrul zecimal 15 va fi
notat cu F, iar numrul 16 cu 10 (se citete unu zero), numrul zecimal 255 va avea notaia
hexa (prescurtare de la hexazecimal) FF .a.m.d.
Trecerea din baza 10 n baza 2 se face prin mpriri succesive a numrului care se
dorete transformat la 2, reinndu-se de fiecare dat restul mpririlor.
Exemplu de trecere din baza 10 n baza 2:
29(10) =>

29 / 2 = 14
(+ 15 rest) 14 /
2 = 7 (+ 04 rest)
7 / 2 = 3 (+ 13 rest)3 / 2 = 11 (+ 12 rest)
= 11101(2)

=> 29 n baza 2

12345
Trecerea din baza 2 n baza 10 se face prin nmuliri succesive ale cifrelor numrului
n baza 2 cu puteri ale lui 2:
Exemplu de conversie din baza 2 n baza 10:
11101(2) = 1*24 + 1*23 + 1*22 + 0*21 + 1*20 = 16 + 8 + 4 + 0 + 1 = 29(10)

Programarea calculatoarelor

Laborator 1
Lll

Din orice baz de numeraie se poate trece n baza 10 prin nmuliri succesive, iar din baza
10 se poate trece n orice baz de numeraie prin mpriri succesive.
n tabelul urmtor sunt prezentate cifrele de la 0 la 15 (n sistemul zecimal) i reprezentrile
lor n bazele prezentate:
Binar

Octal

Zecimal

Hexa

10

11

100

101

110

111

1000

10

1001

11

1010

12

10

1011

13

11

1100

14

12

1101

15

13

1110
1111

16
17

14
15

E
F

Tabelul 1.1 Reprezentarea primelor 15 numere n sistemele de numeraie binar, octal,


zecimal i hexazecimal
Exemplu de conversie din baza 2 n baza 16 (o cifra hexazecimal ocupa 4 bii)
10001010(2) = 8A(16)
(1000 = 8, 1010 = A)
Exemplu de conversie din baza 16 n baza 2:
B5(16) = 10110101(2)
(B = 1011, 5 = 0101)

Programarea calculatoarelor

Laborator 1
Lll

1.2 Uniti de msur pentru cantiti de date


Cantitatea de informaie stocat i vehiculat de computer (n format binar) este
msurat n uniti de msur specifice. O cifr binar reprezint un bit de informaie i
aceasta este unitatea de baz pentru msurarea informaiei.
Din motive practice, informaiile sunt manevrate n grupuri de cte 8 bii. Un grup de
8 bii se numete octet sau Byte. (1 Byte reprezint, pentru computer, cantitatea de memorie
necesar pentru memorarea unei litere de text). Notaiile prescurtate fac diferena ntre bit
(notat cu b) i Byte (notat cu B).
Aceste uniti fiind mult prea mici pentru necesitile actuale de stocare/prelucrare/etc.,
n majoritatea cazurilor practice se folosesc multiplii lor. Aceti multipli sunt Kilo,
Mega, Giga i Terra, iar valorile lor, relativ la valoarea unui byte, sunt:
1 KiloByte
= 1.024 Bytes
=210 bytes
1 MegaByte = 1.024 KiloBytes = 1.024 * 1.024 Bytes =220 bytes
1 GigaByte = 1.024 MegaBytes= 1.024 * 1.024 KiloBytes =230 bytes
1 TerraByte
= 1.024 GigaBytes = 1.024 * 1.024 MegaBytes =240 bytes
Multiplii cantitilor de informaii sunt prezentai n tabelul urmtor:
Bii
Prefix

Bytes (octei)

Multiplu Notaie

Valoarea

Multiplu

Notaie Valoarea

Kilo

Kilobit

Kb

1024 bii

KiloByte

KB

1024 Bytes

Mega

Megabit

Mb

1024 Kb

MegaByte

MB

1024 KB

Giga

Gigabit

Gb

1024 Mb

GigaByte

GB

1024 MB

Terra

Terrabit

Tb

1024 Gb

TerraByte

TB

1024 GB

Tabelul 1.2 Multiplii unitilor de msur a datelor


n general, multiplii bit-ului sunt folosii n msurarea vitezelor de transmitere a
informaiilor, iar multiplii byte-ului sunt folosii n msurarea capacitilor de
stocare/memorare.

Programarea calculatoarelor

Laborator 1
Lll

1.3 Tipuri de date fundamentale pentru calculatoare


Calculatoarele pot lucra cu urmtoarele tipuri fundamentale de date: bit, byte, word,
double word. Aceste tipuri de date sunt considerate tipuri fundamentale, deoarece un
procesor poate lucra nativ (direct) cu informaii reprezentate pe aceste tipuri de date.
Domeniul de valori pe care le poate lua o dat dintr-un tip este de [0 2N 1], unde
N este numrul de bii pe care se reprezint tipul respectiv.
Caracteristicile tipurilor fundamentale sunt prezentate n tabelul urmtor:
Tipul
datelor
Bit
Byte
Word

Domeniul de valori

Lungimea
(bii)
1
8
16

Lungimea
(octei)
1/8
1
2

0, 1
0 ... 255 (00h FFh)
0 ... 65.535 (0000h
FFFFh)
double
0 ... 4.294.967.295
word
(00000000h
32
4
FFFFFFFFh)
Tabelul 2.3 Caracteristicile principalelor tipuri de date

1.4 Codificarea ASCII


ASCII este acronimul pentru American Standard Code for Information Interchange
(Codul American Standard pentru Schimbul de Informaii).
ASCII reprezint o tabel de asocieri ntre caractere i coduri numerice i a aprut
deoarece calculatoarele lucreaz doar cu numere, iar utilizatorii au nevoie i de litere i
simboluri grafice. Fiecare liter i simbol grafic care se regsete pe tastatur sau pe monitor
are un cod corespunztor n tabela ASCII. n interiorul unui calculator, se lucreaz doar cu
aceste coduri asociate.
Setul standard de caractere ASCII conine 128 numere zecimale (0 - 127), care sunt
asociate cifrelor, numerelor, semnelor de punctuaie i celor mai utilizate caractere speciale.
Setul extins de caractere ASCII conine, de asemenea, 128 de numere zecimale (128
255) i conine caractere adiionale simboluri matematice, grafice etc.
Cele mai importante caractere din setul standard de caractere ASCII sunt prezentate
n continuare mpreun cu reprezentrile lor corespunztoare n sistemele de numeraie binar,
zecimal, hexazecimal i octal:

Programarea calculatoarelor

Laborator 1
Lll

Programarea calculatoarelor

Laborator 1
Lll

Programarea calculatoarelor

Laborator 1
Lll

n continuare se ilustreaz reprezentarea tabelar a setului standard de caractere


ASCII:
ZEC HEX CHR
0
1
2
3

ZEC HEX CHR


20
21
22
23

SP
!
"
#

00 NUL 32
01 SOH
33
02 STX
34
03 ETX
35
04 EOT
36

24

05 ENQ

37

06 ACK

07

ZEC HEX CHR

ZEC HEX CHR

64
65
66
67

40
41
42
43

@
A
B
C

96
97
98
99

60
61
62
63

`
a
b
c

68

44

100

64

25

69

45

101

65

38

26

&

70

46

102

66

BEL

39

27

'

71

47

103

67

08

BS

40

28

72

48

104

68

09

HT

41

29

73

49

105

69

10

0A

LF

42

2A

74

4A

106

6A

11

0B

VT

43

2B

75

4B

107

6B

12

0C

FF

44

2C

76

4C

108

6C

13

0D

CR

45

2D

77

4D

109

6D

14

0E

SO

46

2E

78

4E

110

6E

15

0F

SI

47

2F

79

4F

111

6F

16

10

DLE

48

30

80

50

112

70

17

11

DC1

49

31

81

51

113

71

18

12

DC2

50

32

82

52

114

72

19

13

DC3

51

33

83

53

115

73

20

14

DC4

52

34

84

54

116

74

21

15 NAK

53

35

85

55

117

75

22

16 SYN

54

36

86

56

118

76

23

17

ETB

55

37

87

57

119

77

24

18 CAN

56

38

88

58

120

78

25

19

EM

57

39

89

59

121

79

26

1A SUB

58

3A

90

5A

122

7A

27

1B

ESC

59

3B

91

5B

123

7B

28

1C

FS

60

3C

<

92

5C

124

7C

29

1D

GS

61

3D

93

5D

125

7D

30

1E

RS

62

3E

>

94

5E

126

7E

31

1F US
?
95
5F
_
127 7F DEL
63 3F
Tabelul 1.4 Reprezentarea setului standard de caractere ASCII

Programarea calculatoarelor

Laborator 1
Lll

Tabelul 1.5 Setul extins de caractere ASCII

1.5 Scheme logice


Schemele logice sunt o reprezentare schematic a unui program. Ele sunt valabile n
orice limbaj de programare, folosirea lor permind o dezvoltare i o vizualizarea mai uoar
a programului. O schem logic are n componen urmtoarele blocuri:

Programarea calculatoarelor

Laborator 1
Lll

Exemplu 1 Schem logic asociat cu calculul sumei a 2 numere:

Figura 1.1 Schem logic - suma a 2 numere


Exemplu 2 Schem logic asociat cu calculul maximului a 2 numere:

Figura 1.2 Schema logica - maximul a 2 numere

Programarea calculatoarelor

10

Laborator 1
Lll

Exemplu 3 Schem logic asociat cu rezolvarea unei ecuaii de gradul I:

Figura 1.3 Schema logica rezolvarea ecuaiei de grad I


Exemplu 4 Schem logic asociat cu calculul sumei a n numere citite de la tastatur:

Figura 1.4 Schem logic - suma a n numere citite de la tastatur

Programarea calculatoarelor

11

Laborator 1
Lll

Noiuni introductive despre limbajul C


Obiectiv: fixarea noiunilor fundamentale despre limbajul de programare C

Introducere n limbajul C
Limbajul de programare C a fost creat n anii '70 de ctre Dennis Ritchie n cadrul
firmei Bell Telephone Laboratories (Bell Labs), avnd ca obiectiv principal dezvoltarea unui
limbaj care sa fie utilizat pentru implementarea sistemului de operare UNIX. La vremea
respectiva, existau limbaje de programare de nivel sczut (apropiate de nivelul limbajului
main al procesorului), precum si limbaje specializate de nivel nalt (FORTRAN, COBOL).
Cele de nivel sczut erau adecvate pentru dezvoltarea de sisteme de operare deoarece
permiteau acces direct la resursele procesorului, dar aveau dezavantajul unei productiviti
extrem de sczute a programatorului. Cele de nivel nalt permiteau dezvoltarea mai uoar
de aplicaii specializate, dar ridicau numeroase probleme din punct de vedere al
performantelor de execuie a programelor.
Acesta este motivul pentru care s-a cutat o cale de mijloc: dezvoltarea unui limbaj
de programare de uz general, cu caracteristici de nivel nalt pentru mbuntirea
productivitii programatorilor, dar care, la nevoie, sa permit acces direct la resursele
hardware ale sistemului de calcul, pentru a permite optimizarea foarte riguroasa din punct
de vedere al vitezei de execuie a aplicaiilor unde acest criteriu este dominant. Astfel a luat
natere limbajul C, un limbaj de nivel mediu, care pstreaz caracteristicile limbajelor de
nivel nalt din care a fost derivat (B si BCPL), dar care reflecta foarte bine realitile
hardware: acces direct la adrese de memorie, operaii la nivel de bit, accesul resurselor
procesorului (regitri), apel direct al funciilor puse la dispoziie de sistemul de operare.
Fcnd referire la clasificrile limbajelor de programare prezentate n laboratorul 1,
limbajul C este un limbaj de nivel mediu, structurat, tipizat si compilat.
Fiind un limbaj structurat, limbajul C permite crearea de secvene de instruciuni
reunite sub un anumit nume, care efectueaz o anumita operaie clar definita si returneaz
un rezultat. Aceste secvene de instruciuni se numesc funcii. Odat creata o funcie, ea
poate fi referita (apelata) de oricte ori este necesar, pe baza numelui acesteia. Spre deosebire
de alte limbaje de programare nsa, n C toate instruciunile trebuie sa apar numai n cadrul

Programarea calculatoarelor

12

Laborator 1
Lll

unor funcii. Pe lng posibilitatea de a returna un rezultat, o funcie are si posibilitatea de a


primi anumii parametri asupra crora sa efectueze prelucrrile.
Orice program scris n limbajul C trebuie sa conin obligatoriu o funcie cu un rol
special, funcia cu numele main. Aceasta este funcia de la care ncepe execuia programului
n momentul lansrii acestuia de ctre sistemul de operare.
n continuare este prezentat un exemplu de program care nu efectueaza nici o
operatie, dar care respecta structura de baza pentru orice program C:
int main () { return 0; }

Prima linie din program declara o funcie cu numele main, care nu returneaz nici un
rezultat (cuvntul void dinainte de numele funciei) si nu primete nici un parametru
(cuvntul void de dup numele funciei). Simbolul '{' marcheaz nceputul corpului funciei,
iar simbolul '}' marcheaz finalul funciei.
Instruciunile care formeaz corpul funciei trebuie scrise ntre '{' si '}'.
Urmtorul exemplu de program afieaz un mesaj ("Hello World") pe ecran:
#include <stdio.h>
int main ()
{
/* apelam functia printf pentru afisare pe ecran */
printf ("Hello World !");
return 0;
}

Se observa ca si acest program conine o funcie main, dar n corpul funciei este
apelata funcia printf () pentru afiarea unui mesaj. In C, orice instruciune executabila (cum
e cazul apelului la printf() trebuie urmata de ';'. Funcia printf este o funcie din biblioteca
standard pentru intrri i ieiri a limbajului C, de aceea prima linie de program conine acum
o directiva preprocesor, #include <stdio.h>, necesara pentru a putea apela funcii din
biblioteca.
Tot n aceasta secvena de program se observa prezenta unui comentariu n interiorul
funciei main:
/* apelam functia printf pentru afisare pe ecran */
n limbajul C, comentariile sunt texte precedate de secvena ' /* ' care se ncheie cu '
*/ '. Comentariile sunt ignorate n totalitate de ctre compilator.

Programarea calculatoarelor

13

Laborator 1
Lll

Elemente de baza de programare n limbajul C


Orice program, indiferent de limbajul de programare n care este scris, preia un set de
date de intrare, efectueaz anumite prelucrri asupra acestora si genereaz nite rezultate
(date de ieire). n general, aceste prelucrri necesita nsa memorarea temporara a unor
rezultate intermediare. Pentru memorarea datelor de intrare, a rezultatelor intermediare si a
datelor de ieire, limbajul de programare trebuie sa permit declararea si utilizarea unor
variabile. O variabila reprezint o zona de memorie rezervata care se acceseaz printr-un
nume asociat si care poate conine informaii despre un anumit tip indicat n momentul
declarrii variabilei (operaiune care are ca efect si rezervarea memoriei). n general,
coninutul unei variabile se poate citi si scrie. O variabila poate servi ca sursa de informaii
pentru diverse operaii sau ca destinaie a rezultatului altor operaii efectuate de program
asupra datelor. n limbajul C, o variabila se declara n felul urmtor:
tip_date nume_variabila;

tip_date reprezint tipul de informaii care se vor memora n acea variabila si


este folosit de compilator n doua scopuri principale:

determinarea dimensiunii n octei a zonei de memorie care trebuie rezervata pentru


acea variabila

verificarea corectitudinii operaiilor care implica acea variabila (spre exemplu, daca
declaram o variabila care sa conin numere ntregi, compilatorul ne va semnala
eroare dac ncercam sa depozitam n acea variabila un ir de caractere).

n limbajul C, exista urmtoarele tipuri de date predefinite:

Programarea calculatoarelor

14

Laborator 1
Lll

nume_variabila reprezint numele simbolic prin care va fi accesata acea zona de memorare.
Numele unei variabile sau al unei funcii n C trebuie sa fie un identificator valid:
poate sa nceap numai cu o litera sau cu caracterul _ (underscore)
dup primul caracter, poate sa conin numai litere, cifre sau _ (underscore)
nu poate sa fie unul dintre cuvintele cheie rezervate ale limbajului: auto break case
char const continue default do double else enum extern float for goto if int long register
return short signed sizeof static struct switch typedef typeid union unsigned using void
volatile while n C, variabilele se pot declara n doua locuri:
n interiorul unei funcii, caz n care ele devin variabile locale si sunt accesibile doar
din acea funcie; la ncheierea execuiei funciei variabilele se distrug automat;
n afara oricrei funcii, caz n care ele devin variabile globale si sunt accesibile din
orice funcie.
Limbajul C este case-sensitive, adic face distincie ntre literele mici si literele mari.
Urmtorii identificatori sunt considerai diferii:
Var1
var1
VAR1

O variabil poate fi iniializat cu o anumita valoare n momentul declarrii, cu


sintaxa:
tip_date nume_var = valoare_initiala;
int a = 10;
char c = 'A';

n limbajul C, constantele numerice ntregi se pot scrie n urmtoarele moduri:

direct n forma zecimala (baza 10), daca nu sunt precedate de cifra 0: 1, 123

n baza 16 (hexazecimala), precedate de 0x: 0x1A, 0xFFFF

n baza 8 (octal), precedate de cifra 0: 017, 077

Constantele reale se introduc n forma zecimala sau notaia exponenial: 123.1, 127.5E-4.
Constantele de tip caracter sunt incluse ntre doua simboluri apostrof: 'A', ':'.
Constantele de tip sir de caractere sunt incluse ntre doua ghilimele: "irul".
n cadrul constantelor de tip caracter sau sir de caractere, se pot introduce si caractere
speciale de control, daca sunt precedate de caracterul backslash:
\n are ca efect salt la linie noua cnd este afiat
\t caracterul tab, 8 spatii
\r revenire la nceputul liniei curente

Programarea calculatoarelor

15

Laborator 1
Lll

\\ - genereaz caracterul \ (backslash)


\xNN genereaz caracterul ASCII cu codul NN (specificat n baza 16)
\" genereaz caracterul ", folosit n cadrul constantelor de tip sir
Dup cum s-a vzut n al doilea exemplu, funcia printf se utilizeaz pentru afiarea
unor mesaje pe ecran. Funcia permite si afiarea coninutului unor variabile, dup cum
rezulta din exemplul urmtor:

#include <stdio.h>
int main ()
{
int v = 10;
printf ("Valoarea variabilei este %d \n", v);
return 0;
}

Acest program declara o variabila v de tip ntreg, iniializata cu valoarea 10 si


afieaz coninutul
acestei variabile. n urma execuiei, programul afieaz urmtorul mesaj:

Valoarea variabilei este 10


Funcia printf se poate apela cu un numr variabil de parametri, dar primul
parametru nu poate fi omis si trebuie sa fie un sir de caractere, numit sir de formatare.
Urmtorii parametri pot fi variabile de orice tip predefinit. n cadrul irului de formatare se
poate solicita afiarea coninutului unei variabile utiliznd caracterul % urmat de un alt
caracter, numit caracter de tip, care indica modul de afiare al coninutului variabilei.
Variabilele sunt considerate n ordinea n care apar n lista de parametri, de la stnga la
dreapta. Coninutul variabilei este introdus n irul care se afieaz pe poziia pe care apare
caracterul % n irul de formatare.
Valorile cele mai frecvent utilizate pentru caracterele de formatare sunt urmtoarele:

Programarea calculatoarelor

16

Laborator 1
Lll

Exercitiu: Rulati urmatorul program C si analizati mesajele afisate n urma executiei.


#include <stdio.h>
int main ()
{
int v = 65;
char c = 'A';
printf ("Variabila v este %d (intreg zecimal) \n", v);
printf ("Variabila v este %x (intreg hexa) \n", v);
printf ("Variabila v este %o (intreg octal) \n", v);
printf ("Variabila v este %c (caracter ASCII) \n", v);
printf ("Variabila c este %d (intreg zecimal) \n", c);
printf ("Variabila c este %c (caracter ASCII) \n", c);
return 0;
}

Se constat c aceeai variabil, cu aceeai valoare, se poate afia n diverse moduri,


n funcie de necesiti, utiliznd caracterul corespunztor dup %.
Urmtorul exemplu ilustreaz posibilitatea de a afia mai multe variabile cu funcia
printf:
#include <stdio.h>
/* Programul schimba continutul a doua variabile ntregi */
int main () {
/* se pot declara mai multe variabile de acelasi tip pe o singura linie */
int a = 10, b = 20, c;
printf ("Inainte: prima este %d, a doua este %d \n", a, b); c
= a;
a = b;
b = c;
printf ("Dupa: prima este %d, a doua este %d \n", a, b);
return 0; }

Programarea calculatoarelor

17

Laborator 1
Lll

Acest exemplu ilustreaz si operatorul de atribuire '=', cu sintaxa generala :


dest = sursa;

si care are ca efect copierea valorii din sursa n destinaie. Destinaia trebuie sa fie o variabila.
Sursa poate fi o variabila, o constanta sau o expresie compatibila ca tip cu destinaia.
Compatibilitatea de tipuri permite, spre exemplu, sa atribuim o valoare reala cu zecimale
unei variabile ntregi, caz n care compilatorul realizeaz automat trunchierea.

Funcii matematice
Limbajul C ofer o foarte mare libertate programatorului, libertate nentlnita n
nici un alt limbaj de programare, aceasta fiind una dintre caracteristicile care l-au fcut att
de popular printre programatori. Aceasta libertate se reflecta, n special, n manipularea
tipurilor, compilatorul limbajului C fiind mult mai puin restrictiv n privina folosirii
tipurilor de date (nu face verificri referitoare la compatibilitatea tipurilor). Pentru a putea
folosi aceste funcii ntr-un program, este necesara includerea fiierului header MATH.H,
folosind directiva #include <math.h>.
Cteva dintre funciile matematice folosite n limbajul C sunt urmtoarele:

sin calculeaz funcia sinus a unui unghi (dat n radiani);

cos calculeaz funcia cosinus a unui unghi (dat n radiani);

log calculeaz logaritmul natural al unui numr;

log10 calculeaz logaritmul n baza 10 al unui numr;

sqrt calculeaz radicalul dintr-un numr;

pow calculeaz funcia sinus a unei valori (a unui unghi);

random returneaz o valoare aleatoare ntre 0 si parametrul dat

1; necesita
fiierul header STDLIB.H;

Programarea calculatoarelor

18

Laborator 1
Lll

Funciile printf () si scanf ()


Funcia printf()
Funcia printf afieaz pe ecran valorile din lista de argumente, conform formatului
specificat. irul format poate conine caractere ordinare, care se vor afia ca atare, si
descriptori de format prefixai de caracterul %. Un descriptor de format poate conine n
ordine urmtoarele:

un semn minus care indica alinierea la stnga n cadrul formatului a valorii

afiate;

un numr care specifica lungimea minima a cmpului de afiare;

un punct care separa lungimea cmpului de afiare de precizia de afiare (de

ex. numrul de zecimale pentru valorile reale);

Exemplu:
int nr1=3,nr2=4;
printf("%-5d+%5d=%d",nr1,nr2,nr1+nr2);

n exemplul de mai sus nr1 si nr2 se vor afia pe 5 spatii, nr1 va fi aliniat la stnga
iar nr2 va fi aliniat la dreapta.
Exemplu:
float r=1.12345;
printf(%.3f,r);

n exemplul de mai sus r va fi afiat cu 3 zecimale.

Programarea calculatoarelor

19

Laborator 1
Lll

Funcia scanf()
Funcia scanf citete date de la tastatura, conform formatului, si nscrie valorile citite
la adresele specificate. Primul sau argument este un sir de control care conine formatele
corespunztoare interpretrii irurilor de intrare. Urmtoarele argumente sunt adresele
variabilelor. Operatorul & returneaz adresa memoriei unei variabile.
Exemplu:
scanf("%d", &x);

Formatul %d implica interpretarea caracterelor citite ca un ntreg zecimal, urmata de


memorarea valorii variabilei la adresa precizata prin &x.

Exemplu1: adunarea a doua numere reale, citite de la tastatura:


#include <stdio.h>
#include <conio.h>
int main (void)
{
float a, b, c;
printf (Introduceti primul nr: );
scanf (%f,&a);
printf (Introduceti cel de-al doilea nr: );
scanf (%f,&b);
c = a + b;
printf ("Suma celor doua numere este %f ", c);
getch();
return 0;
}
Exemplu 2: calcularea ariei unui triunghi cu laturile citite de la tastatur
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
float a, b, c, p, s;
printf("a= ");
scanf("%f", &a);
printf("\nb= ");
scanf("%f", &b);
printf("\nc= ");
scanf("%f", &c);
p = (a + b + c) / 2;

Programarea calculatoarelor

20

Laborator 1
Lll

s = sqrt((p*(p - a)*p - b)*(p - c));


printf("\nAria triunghiului este: %.2f \n", s);
getch();
return 0;
}

2.6
1.

// cu 2 zecimale dupa virgula

Probleme propuse

Realizai diverse conversii din/n bazele studiate (2 - 10, 10 - 2, 10 - 16, 16 - 10, 2 16, 16 2);

2.

Realizai schema logic pentru determinarea maximului dintre trei numere: a, b i c.

3.

Realizai schema logic pentru rezolvarea ecuaiei de gradul II.

4.

Se citesc n numere. Realizai schema logic pentru determinarea sumei numerelor


pare, respectiv a produsului numerelor prime.

5.

Se d un ir de numere care se citesc de la tastatur, citirea ncheindu-se cu valoarea 0


(care nu face parte din ir). S se afieze perechile de numere consecutiv citite cu
proprietatea c al doilea element al perechii este egal cu dublul primului.

6.

Verificai dac un numr este prim folosind o schem logic.

7.

S se scrie un program care sa citeasc de la tastatura numele si vrsta dvs. si sa le


afieze.

8.

Sa se scrie un program C care afieaz produsul a doua variabile ntregi, citite de la


tastatur.

9.

Sa se scrie un program C care convertete un unghi din grade n radiani


(rad=grad*pi/180).

10.

Sa se scrie un program C care face conversia din grade Celsius n grade Fahrenheit, C
= (F 32)* 5/9.

11.

Sa se scrie un program C care afieaz cifra unitarilor unei variabile de tip ntreg.

12.

Sa se scrie un program care citete de la tastatura lungimile laturilor unui triunghi si


afieaz aria acestuia, calculata cu formula lui Heron.

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