laborator 1 pc

20
Programarea calculatoarelor Laborator 1 Lll 1 Noțiuni de bază în programare  Obiectiv: fixarea noţiunilor de bază asociate cu codificarea şi logica programelor. Activităţi: prezentarea următoarelor subiecte: - sistemele de numera ţ ie folosite de limbajul C - baza 2, 8, 16; - avantajele utilizării bazei 16 in domeniul calculatoarelor; - unităţi de măsur ă pentru cantit ăţi 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 numera ție folosite de limbajul C Un număr poate fi reprezentat în mai multe sisteme de numeraţie (în mai multe baze). Reprezentarea cea mai folosit ă în viaţa de zi cu zi este cea zecimal ă (folosind baza 10), reprezentarea valorilor f ăcându-se folosind cele 10 cifre (de la 0 la 9). Suportul matematic folosit de computere pentru manevrarea şi prelucrarea informaţiilor este numeraţia în baza 2, dar şi în baze de numeraţ ie care sunt puteri ale lui 2. Principalele sisteme de numera ţie pentru reprezentarea binar ă a informaţiei sunt  prezentate în continuare. Sistemul binar  foloseşte baza 2, fiind utilizate doar dou ă cifre - 0 şi 1. Astfel, orice număr va fi reprezentat numai cu aceste dou ă cifre. Sistemul octal  foloseşte baza 8, utilizând cifrele de la 0 la 7. Astfel, numă rul 8 va fi notat în sistemul octal cu 10, numă rul 9 va fi notat cu 11, numărul 10 va fi notat în octal cu 12 etc. Sistemul octal este cel mai rar folosit. Sistemul hexazecimal  foloseşte 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, num ă rul zecimal 15 va fi notat cu F, iar numărul 16 cu 10 (se citeşte “unu zero”), numărul zecimal 255 va avea notaţia hexa (prescurtare de la hexazecimal) FF ş.a.m.d. Trecerea din baza 10 în baza 2  se face prin împă r ţiri succesive a numărului care se doreşte transformat la 2, reţinându-se de fiecare dat ă restul împăr ţirilor. Exemplu de trecere din baza 10 în baza 2: 29 (10)  => 29 / 2 = 14 (+ 1 5  rest) 14 / 2 = 7 (+ 04 rest) 7 / 2 = 3 (+ 13 rest )3 / 2 = 1 1 (+ 12 rest) => 29 în baza 2 = 11101(2) 1 2 3 4 5 Trecerea din baza 2 în baza 10  se face prin înmulţiri succesive ale cifrelor numărului în baza 2 cu puteri ale lui 2: Exemplu de conversie din baza 2 în baza 10: 11101(2) = 1*2 4  + 1*2 3  + 1*2 2  + 0*2 1  + 1*2 0  = 16 + 8 + 4 + 0 + 1 = 29(10)

Upload: chiurobert96

Post on 07-Jan-2016

96 views

Category:

Documents


0 download

DESCRIPTION

Visual Studio C

TRANSCRIPT

Page 1: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 1/20

Programarea calculatoarelor Laborator 1

Lll

1

Noțiuni de bază în programare 

Obiectiv: fixarea noţiunilor de bază asociate cu codificarea şi logica programelor.

Activităţi: prezentarea următoarelor subiecte:

sistemele de numeraţie folosite de limbajul C - baza 2, 8, 16;

-  avantajele utilizării bazei 16 in domeniul calculatoarelor;

unităţi de măsur ă pentru cantităţi 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 numerație folosite de limbajul C

Un număr poate fi reprezentat în mai multe sisteme de numeraţie (în mai multe baze).Reprezentarea cea mai folosită  în viaţa de zi cu zi este cea zecimală  (folosind baza 10),

reprezentarea valorilor f ăcându-se folosind cele 10 cifre (de la 0 la 9).

Suportul matematic folosit de computere pentru manevrarea şi prelucrarea

informaţiilor este numeraţia în baza 2, dar şi în baze de numeraţie care sunt puteri ale lui 2.

Principalele sisteme de numeraţie pentru reprezentarea binar ă  a informaţiei sunt

 prezentate în continuare.Sistemul binar   foloseşte baza 2,  fiind utilizate doar două cifre - 0 şi 1. Astfel, orice

număr va fi reprezentat numai cu aceste două cifre.

Sistemul octal  foloseşte baza 8, utilizând cifrele de la 0 la 7. Astfel, numărul 8 va fi

notat în sistemul octal cu 10, numărul 9 va fi notat cu 11, numărul 10 va fi notat în octal cu12 etc. Sistemul octal este cel mai rar folosit.

Sistemul hexazecimal  foloseşte 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, numărul zecimal 15 va fi

notat cu F, iar numărul 16 cu 10 (se citeşte “unu zero”), numărul zecimal 255 va avea notaţiahexa (prescurtare de la hexazecimal) FF ş.a.m.d.

Trecerea din baza 10 în baza 2 se face prin împăr ţiri succesive a numărului care sedoreşte transformat la 2, reţinându-se de fiecare dată restul împăr ţirilor.

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) => 29 în baza 2= 11101(2)

1 2 3 4 5

Trecerea din baza 2 în baza 10 se face prin înmulţiri succesive ale cifrelor numărului

î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)

Page 2: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 2/20

Programarea calculatoarelor Laborator 1

Lll

2

Din orice bază de numeraţie se poate trece în baza 10 prin înmulţiri succesive, iar din baza

10 se poate trece în orice bază de numeraţie prin împăr ţiri succesive.

În tabelul următor sunt prezentate cifrele de la 0 la 15 (în sistemul zecimal) şi reprezentările

lor în bazele prezentate:

Binar  Octal  Zecimal  Hexa 

0 0 0 0

1 1 1 1

10  2 2 2

11 3 3 3

100 4 4 4

101 5 5 5

110 6 6 6

111 7 7 7

1000 10  8 8

1001 11 9 9

1010 12 10  A

1011 13 11 B

1100 14 12 C

1101 15 13 D

1110 16 14 E

1111 17 15 F

Tabelul 1.1 Reprezentarea primelor 15 numere în sistemele de numerație binar, octal,

zecimal și hexazecimal

Exemplu de conversie din baza 2 în baza 16 (o cifra hexazecimală ocupa 4 biți)

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)

Page 3: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 3/20

Programarea calculatoarelor Laborator 1

Lll

3

1.2 Unităţi de măsură pentru cantităţi de date

Cantitatea de informaţie stocată  şi vehiculată  de computer (în format binar) estemăsurată  în unităţi de măsur ă  specifice. O cifr ă binar ă  reprezintă  un bit de informaţie şi

aceasta este unitatea de bază pentru măsurarea informaţiei.

Din motive practice, informaţiile sunt manevrate în grupuri de câte 8 biţi. Un grup de

8 biţi se numeşte octet sau Byte. (1 Byte reprezintă, pentru computer, cantitatea de memorie

necesar ă pentru memorarea unei litere de text). Notaţiile prescurtate fac diferenţa între bit(notat cu “b”) şi Byte (notat cu “B”).

Aceste unităţi fiind mult prea mici pentru necesităţile actuale de stocare/prelucrare/etc.,

în majoritatea cazurilor practice se folosesc multiplii lor. Ace şti 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 cantităţilor de informaţii sunt prezentaţi în tabelul următor:

PrefixBiţi ytes (octeţi)

Multiplu Notaţie Valoarea Multiplu Notaţie Valoarea

Kilo Kilobit Kb 1024 biţi 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 unităţilor de măsur ă a datelor

În general, multiplii bit-ului sunt folosiţi în măsurarea vitezelor de transmitere a

informaţiilor, iar multiplii byte-ului sunt folosiţi în măsurarea capacităţilor de

stocare/memorare.

Page 4: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 4/20

Programarea calculatoarelor Laborator 1

Lll

4

1.3 Tipuri de date fundamentale pentru calculatoare

Calculatoarele pot lucra cu următoarele 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 informaţii reprezentate pe aceste tipuri de date.

 Domeniul de valori  pe care le poate lua o dată dintr-un tip este de [0… 2 N  –  1], unde

 N este numărul de biţi pe care se reprezintă tipul respectiv.

Caracteristicile tipurilor fundamentale sunt prezentate în tabelul următor:

Tipuldatelor

Domeniul de valori Lungimea(biţi) Lungimea

(octeţi)

Bit 0, 1 1 1/8

Byte 0 ... 255 (00h –  FFh) 8 1

Word 0 ... 65.535 (0000h –  FFFFh)

16 2

doubleword

0 ... 4.294.967.295(00000000h –  FFFFFFFFh)

32 4

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 Informaţii).ASCII reprezintă  o tabelă de asocieri între caractere şi coduri numerice şi a apărut

deoarece calculatoarele lucrează  doar cu numere, iar utilizatorii au nevoie şi de litere şi

simboluri grafice. Fiecare liter ă şi simbol grafic care se regăseşte pe tastatur ă sau pe monitor

are un cod corespunzător în tabela ASCII. În interiorul unui calculator, se lucrează doar cu

aceste coduri asociate.

Setul standard de caractere ASCII  conţine 128 numere zecimale (0 - 127), care sunt

asociate cifrelor, numerelor, semnelor de punctuaţie şi celor mai utilizate caractere speciale.Setul extins de caractere ASCII  conţine, de asemenea, 128 de numere zecimale (128

 –  255) şi conţine caractere adiţionale –  simboluri matematice, grafice etc.

Cele mai importante caractere din setul  standard de caractere ASCII  sunt prezentate

în continuare împreună cu reprezentările lor corespunzătoare în sistemele de numeraţie binar,

zecimal, hexazecimal şi octal:

Page 5: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 5/20

Programarea calculatoarelor Laborator 1

Lll

5

Page 6: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 6/20

Programarea calculatoarelor Laborator 1

Lll

6

Page 7: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 7/20

Programarea calculatoarelor Laborator 1

Lll

7

În continuare se ilustrează  reprezentarea tabelar ă  a setului standard de caractere

ASCII:

ZEC HEX CHR ZEC HEX CHR ZEC HEX CHR ZEC HEX CHR

0 00 NUL 32 20 SP 64 40 @ 96 60 `

1 01 SOH 33 21 ! 65 41 A 97 61 a

2 02 STX 34 22 " 66 42 B 98 62 b

3 03 ETX 35 23 # 67 43 C 99 63 c

4 04 EOT 36 24 $ 68 44 D 100 64 d

5 05 ENQ 37 25 % 69 45 E 101 65 e

6 06 ACK 38 26 & 70 46 F 102 66 f

7 07 BEL 39 27 ' 71 47 G 103 67 g

8 08 BS 40 28 ( 72 48 H 104 68 h

9 09 HT 41 29 ) 73 49 I 105 69 i

10 0A LF 42 2A * 74 4A J 106 6A j

11 0B VT 43 2B + 75 4B K 107 6B k

12 0C FF 44 2C , 76 4C L 108 6C l

13 0D CR 45 2D −  77 4D M 109 6D m

14 0E SO 46 2E . 78 4E N 110 6E n

15 0F SI 47 2F / 79 4F O 111 6F o

16 10 DLE 48 30 0 80 50 P 112 70 p

17 11 DC1 49 31 1 81 51 Q 113 71 q

18 12 DC2 50 32 2 82 52 R 114 72 r

19 13 DC3 51 33 3 83 53 S 115 73 s

20 14 DC4 52 34 4 84 54 T 116 74 t

21 15 NAK 53 35 5 85 55 U 117 75 u

22 16 SYN 54 36 6 86 56 V 118 76 v

23 17 ETB 55 37 7 87 57 W 119 77 w

24 18 CAN 56 38 8 88 58 X 120 78 x

25 19 EM 57 39 9 89 59 Y 121 79 y

26 1A SUB 58 3A : 90 5A Z 122 7A z

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 63 3F ? 95 5F _ 127 7F DEL

Tabelul 1.4 Reprezentarea setului standard de caractere ASCII

Page 8: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 8/20

Programarea calculatoarelor Laborator 1

Lll

8

Tabelul 1.5 Setul extins de caractere ASCII

1.5 Scheme logice

Schemele logice sunt o “reprezentare” schematică a unui program. Ele sunt valabile înorice limbaj de programare, folosirea lor permiţând o dezvoltare şi o vizualizarea mai uşoar ă 

a programului. O schemă logică are în componenţă următoarele blocuri:

Page 9: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 9/20

Programarea calculatoarelor Laborator 1

Lll

9

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

Page 10: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 10/20

Programarea calculatoarelor Laborator 1

Lll

10

Exemplu 3 Schemă logică asociată cu rezolvarea unei ecuaţii de gradul I:

Figura 1.3 Schema logica –  rezolvarea ecuaţiei 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 ă 

Page 11: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 11/20

Programarea calculatoarelor Laborator 1

Lll

11

Noțiuni introductive despre limbajul C

Obiectiv: fixarea noțiunilor fundamentale despre limbajul de programare C

Introducere în limbajul C

Limbajul de programare C a fost creat în anii '70 de către Dennis Ritchie în cadrul

firmei Bell Telephone Laboratories (Bell Labs), având 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 scăzut (apropiate de nivelul limbajuluimașină al procesorului), precum si limbaje specializate de nivel înalt (FORTRAN, COBOL).

Cele de nivel scăzut erau adecvate pentru dezvoltarea de sisteme de operare deoarece

 permiteau acces direct la resursele procesorului, dar aveau dezavantajul unei productivități

extrem de scăzute a programatorului. Cele de nivel înalt permiteau dezvoltarea mai ușoară

de aplicații specializate, dar ridicau numeroase probleme din punct de vedere al

 performantelor de execuție a programelor.

Acesta este motivul pentru care s-a căutat o cale de mijloc: dezvoltarea unui limbajde programare de uz general, cu caracteristici de nivel înalt pentru îmbunătățirea

 productivității 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 execuție a aplicațiilor unde acest criteriu este dominant. Astfel a luat

naștere limbajul C, un limbaj de nivel mediu, care păstrează caracteristicile limbajelor de

nivel înalt din care a fost derivat (B si BCPL), dar care reflecta foarte bine realitățile

hardware: acces direct la adrese de memorie, operații la nivel de bit,  accesul resurselor procesorului (regiștri), apel direct al funcțiilor puse la dispoziție de sistemul de operare.

Făcând referire la clasificările 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 secvențe de instrucțiuni

reunite sub un anumit nume, care efectuează o anumita operație clar definita si returnează

un rezultat. Aceste secvențe de instrucțiuni se numesc funcții. Odată creata o funcție, ea

 poate fi referita (apelata) de oricâte ori este necesar, pe baza numelui acesteia. Spre deosebire

de alte limbaje de programare însa, în C toate instrucțiunile trebuie sa apară numai în cadrul

Page 12: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 12/20

Programarea calculatoarelor Laborator 1

Lll

12

unor funcții. Pe lângă posibilitatea de a returna un rezultat, o funcție are si posibilitatea de a

 primi anumiți parametri asupra cărora sa efectueze prelucrările.

Orice program scris în limbajul C trebuie sa conțină obligatoriu o funcție cu un rol

special, funcția cu numele main. Aceasta este funcția de la care începe execuția programului

în momentul lansării acestuia de către 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 funcție cu numele main, care nu returnează nici unrezultat (cuvântul void dinainte de numele funcției) si nu primește nici un parametru

(cuvântul void de după numele funcției). Simbolul '{' marchează începutul corpului funcției,

iar simbolul '}' marchează finalul funcției.

Instrucțiunile care formează corpul funcției trebuie scrise între '{' si '}'.

Următorul exemplu de program afișează 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 conține o funcție main, dar în corpul funcției este

apelata funcția printf () pentru afișarea unui mesaj. In C, orice instrucțiune executabila (cum

e cazul apelului la printf() trebuie urmata de ';'. Funcția printf este o funcție din biblioteca

standard pentru intrări și ieșiri a limbajului C, de aceea prima linie de program conține acum

o directiva preprocesor, #include  <stdio.h>, necesara pentru a putea apela funcții din

 biblioteca.

Tot în aceasta secvența de program se observa prezenta unui comentariu în interiorul

funcției main:

/* apelam functia printf pentru afisare pe ecran */

În limbajul C, comentariile sunt texte precedate de secvența ' /* ' care se încheie cu '

*/ '. Comentariile sunt ignorate în totalitate de către compilator.

Page 13: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 13/20

Programarea calculatoarelor Laborator 1

Lll

13

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 prelucrări asupra acestora si generează niște rezultate

(date de ieșire). În general, aceste prelucrări necesita însa memorarea temporara a unor

rezultate intermediare. Pentru memorarea datelor de intrare, a rezultatelor intermediare si a

datelor de ieșire, 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 conține informații despre un anumit tip indicat în momentul

declarării variabilei (operațiune care are ca efect si rezervarea memoriei). În general,

conținutul unei variabile se poate citi si scrie. O variabila poate servi ca sursa de informații

 pentru diverse operații sau ca destinație a rezultatului altor operații efectuate de program

asupra datelor. În limbajul C, o variabila se declara în felul următor:

tip_date nume_variabila;

tip_date reprezintă tipul de informații care se vor memora în acea variabila si

este folosit de compilator în doua scopuri principale:  determinarea dimensiunii în octeți a zonei de memorie care trebuie rezervata pentru

acea variabila

  verificarea corectitudinii operațiilor care implica acea variabila (spre exemplu, daca

declaram o variabila care sa conțină numere întregi, compilatorul ne va semnala

eroare dacă încercam sa depozitam în acea variabila un șir de caractere).

În limbajul C, exista următoarele tipuri de date predefinite:

Page 14: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 14/20

Programarea calculatoarelor Laborator 1

Lll

14

nume_variabil a reprezintă numele simbolic prin care va fi accesata acea zona de memorare.

 Numele unei variabile sau al unei funcții în C trebuie sa fie un identificator valid:

 

 poate sa înceapă numai cu o litera sau cu caracterul _ (underscore)

  după primul caracter, poate sa conțină 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 funcții, caz în care ele devin variabile locale si sunt accesibile doar

din acea funcție; la încheierea execuției funcției variabilele se distrug automat;

  în afara oricărei funcții, caz în care ele devin variabile globale si sunt accesibile din

orice funcție.

Limbajul C este case-sensitive, adică face distincție între literele mici si literele mari.

Următorii identificatori sunt considerați diferiți:

Var1

var1

VAR1

O variabilă poate fi inițializată cu o anumita valoare în momentul declarării, cusintaxa:

tip_date nume_var = valoare_initiala;

int a = 10;

char c = 'A';

În limbajul C, constantele numerice întregi se pot scrie în următoarele moduri:

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

 

în baza 16 (hexazecimala), pr ecedate de 0x: 0x1A, 0xFFFF  în baza 8 (octal), precedate de cifra 0: 017, 077

Constantele reale se introduc în forma zecimala sau notația exponențială: 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 când este afișat\t –  caracterul tab, 8 spatii

\r –  revenire la începutul liniei curente

Page 15: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 15/20

Programarea calculatoarelor Laborator 1

Lll

15

\\ - 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 văzut în al doilea exemplu, funcția printf se utilizează pentru afișarea

unor mesaje pe ecran. Funcția permite si afișarea conținutului unor variabile, după cum

rezulta din exemplul următor:

#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, inițializata cu valoarea 10 si

afișează conținutul

acestei variabile. În urma execuției, programul afișează următorul mesaj:

Valoarea variabilei este 10

Funcția printf se poate apela cu un număr variabil de parametri, dar primul

 parametru nu poate fi omis si trebuie sa fie un sir de caractere, numit sir de formatare.

Următorii parametri pot fi variabile de orice tip predefinit. În cadrul șirului de formatare se

 poate solicita afișarea conținutului unei variabile utilizând caracterul % urmat de un alt

caracter, numit caracter de tip, care indica modul de afișare al conținutului variabilei.Variabilele sunt considerate în ordinea în care apar în lista de parametri, de la stânga la

dreapta. Conținutul variabilei este introdus în șirul care se afișează pe poziția pe care apare

caracterul % în șirul de formatare.

Valorile cele mai frecvent utilizate pentru caracterele de formatare sunt următoarele:

Page 16: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 16/20

Programarea calculatoarelor Laborator 1

Lll

16

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ă aceeași variabilă, cu aceeași valoare, se poate afișa în diverse moduri,

în funcție de necesități, utilizând caracterul corespunzător după %.

Următorul exemplu ilustrează posibilitatea de a afișa mai multe variabile cu funcția

 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 lini e * /

in t a = 10, b = 20, c;

pri ntf (" I nain te: pr ima 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; }

Page 17: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 17/20

Programarea calculatoarelor Laborator 1

Lll

17

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

dest = sursa;

si care are ca efect copierea valorii din sursa în destinație. Destinația trebuie sa fie o variabila.

Sursa poate fi o variabila, o constanta sau o expresie compatibila ca tip cu destinația.

Compatibilitatea de tipuri permite, spre exemplu, sa atribuim o valoare reala cu zecimale

unei variabile întregi, caz în care compilatorul realizează automat trunchierea.

Funcții matematice

Limbajul C oferă o foarte mare libertate programatorului, libertate neîntâlnita în

nici un alt limbaj de programare, aceasta fiind una dintre caracteristicile care l-au făcut atât

de popular printre programatori. Aceasta libertate se reflecta, în special, în manipularea

tipurilor, compilatorul limbajului C fiind mult mai puțin restrictiv în privința folosirii

tipurilor de date (nu face verificări referitoare la compatibilitatea tipurilor). Pentru a putea

folosi aceste funcții într -un program, este necesara includerea fișierului header MATH.H,

folosind directiva #include <math.h>.

Câteva dintre funcțiile matematice folosite în limbajul C sunt următoarele:

•   sin –  calculează funcția sinus a unui unghi (dat în radiani);

•  cos –  calculează funcția cosinus a unui unghi (dat în radiani);

•  log –  calculează logaritmul natural al unui număr;

•  log10 –  calculează logaritmul în baza 10 al unui număr;

•   sqrt –  calculează radicalul dintr -un număr;

• 

 pow –  calculează funcția sinus a unei valori (a unui unghi);•  random –  returnează o valoare aleatoare între “0” si “parametrul dat –  

1”; necesita

fișierul header STDLIB.H;

Page 18: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 18/20

Programarea calculatoarelor Laborator 1

Lll

18

Funcțiile printf () si scanf ()

Funcția printf()

Funcția printf afișează pe ecran valorile din lista de argumente, conform formatului

specificat. Șirul format poate conține caractere ordinare, care se vor afișa ca atare, si

descriptori de format prefixați de caracterul %. Un descriptor de format poate conține în

ordine următoarele:

•  un semn minus care indica alinierea la stânga în cadrul formatului a valorii

afișate;

•  un număr care specifica lungimea minima a câmpului de afișare;

•  un punct care separa lungimea câmpului de afișare de precizia de afișare (de

ex. numărul 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 afișa pe 5 spatii, nr1 va fi aliniat la stângaiar nr2 va fi aliniat la dreapta.

Exemplu:

 float r=1.12345;

 printf(”%.3f”,r); 

În exemplul de mai sus r va fi afișat cu 3 zecimale.

Page 19: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 19/20

Programarea calculatoarelor Laborator 1

Lll

19

Funcția scanf()

Funcția scanf citește date de la tastatura, conform formatului, si înscrie valorile citite

la adresele specificate. Primul sau argument este un sir de control care conține formatele

corespunzătoare interpretării șirurilor de intrare. Următoarele 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;

Page 20: Laborator 1 PC

7/17/2019 Laborator 1 PC

http://slidepdf.com/reader/full/laborator-1-pc 20/20

Programarea calculatoarelor Laborator 1

Lll

20

s = sqrt((p*(p - a)*p - b)*(p - c)); printf("\nAria triunghiului este: %.2f \n", s); // cu 2 zecimale dupa virgulagetch();

return 0;}

2.6 Probleme propuse

1.  Realizați diverse conversii din/în bazele studiate (2 - 10, 10 - 2, 10 - 16, 16 - 10, 2 -

16, 16 –  2);

2. 

Realizaţi schema logică pentru determinarea maximului dintre trei numere: a, b şi c.

3. 

Realizaţi schema logică pentru rezolvarea ecuaţiei de gradul II.

4.  Se citesc n numere. Realizaţi 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 afişeze perechile de numere consecutiv citite cu

 proprietatea că al doilea element al perechii este egal cu dublul primului.

6.  Verificaţi dacă un număr este prim folosind o schemă logică.

7. 

Să se scrie un program care sa citească de la tastatura numele si vârsta dvs. si sa leafișeze.

8.  Sa se scrie un program C care afișează produsul a doua variabile întregi, citite de la

tastatură.

9. 

Sa se scrie un program C care convertește 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 afișează cifra unitarilor unei variabile de tip întreg.

12.  Sa se scrie un program care citește de la tastatura lungimile laturilor unui triunghi si

afișează aria acestuia, calculata cu formula lui Heron.