Laborator 1 PC
-
Upload
chiurobert96 -
Category
Documents
-
view
106 -
download
0
description
Transcript of 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)
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)
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.
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:
7/17/2019 Laborator 1 PC
http://slidepdf.com/reader/full/laborator-1-pc 5/20
Programarea calculatoarelor Laborator 1
Lll
5
7/17/2019 Laborator 1 PC
http://slidepdf.com/reader/full/laborator-1-pc 6/20
Programarea calculatoarelor Laborator 1
Lll
6
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
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:
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
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 ă
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
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.
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:
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
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:
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; }
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;
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.
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;
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.