Documente Academic
Documente Profesional
Documente Cultură
PROGRAMAREA
CALCULATOARELOR
ntlnirea 1
29-10-2016
.l.dr.ing. Adriana ALBU
adriana.albu@aut.upt.ro
INTRODUCERE
Introducere
De ce avei nevoie de acest curs?
Unii dintre voi pentru a dobndi cunotine
de baz legate de informatic i programarea
structurat
Alii pentru a i consolida i ordona
cunotinele pe care deja le au
Introducere
Ce vei nva la acest curs?
Noiuni fundamentale despre informatic
Programare folosind limbajul C
Introducere
Informaia concept cu o mai multe
nelesuri legate de: comunicaii, control, date,
instruciuni, cunotine, semnificaii, percepii,
reprezentri, tipare
n lumea calculatoarelor datele i cunotinele
nu sunt chiar semnificaii ale informaiei; ele
au doar conexiune cu informaia
Introducere
1.Date materialul brut
2.Informaii date procesate
3.Cunotine informaii cu o
anumit semnificaie (informaii
interpretate)
2
1
Introducere
Informatic studiaz structura,
comportamentul i interaciunile sistemelor
naturale i artificiale care sunt folosite pentru a
memora, procesa i comunica informaii
De vreme ce att calculatoarele ct i oamenii
i organizaiile proceseaz informaii,
informatica e caracterizat de aspecte
tehnologice, dar i de aspecte cognitive i
sociale
Introducere
Communicaia un concept foarte important:
ntre oameni
printr-un anumit limbaj
Introducere
Limbajul de programare
este folosit pentru a spune unui calculator cum
s rezolve o anumit problem
la fel ca limbajele umane, un limbaj de programare
conine cuvinte, propoziii i reguli sintactice bine
definite
propoziiile sunt mbinate pentru a forma un
program care e responsabil pentru comunicaia
ntre om i calculator
Introducere
Una din principalele paradigme ale
programrii este programarea structurat
Aceast se bazeaz pe faptul c pentru a
rezolva orice problem sunt suficiente trei ci
de combinare a elementelor unui program:
secvena, selecia i iteraia
TIPURI DE DATE
ntreg, Real, Caracter, Logic
Tipuri de date
Datele = variabile sau constante
Fiecare dat are un tip
Tipul = o mulime de valori pe care un element
poate s le ia
Valorile = constante de un anumit tip
Tipurile pot fi:
Standard (ntreg, real, caracter etc.)
Definite de utilizator
Modificatori
Definesc lungimea spaiului de memorie alocat
unei variabile:
Short
Long
Signed
Unsigned
Tipuri i modificatori
Tipul
unsigned char
char
unsigned int
int
unsigned long int
long int
float
double
long double
Dimensiunea
8 bii
8 bii
16 bii
16 bii
32 bii
32 bii
32 bii
64 bii
80 bii
Domeniul de valori
0 255
-128 127
0 65. 535
-32.768 32.767
0 4.294.967.295
-2.147.483.648 2.147.483.647
3.4*(10^-38) 3.4*(10^38)
1.7*(10^-308) 1.7*(10^308)
3.4*(10^-4932) 1.1*(10^4932)
Ce e un bit?
Bit
o cifr binar care poate lua valorile 0 sau 1
reprezint unitatea de memorare a informaiei
8 bits = 1 byte
Tipul ntreg
Fiecare tip ntreg este o submulime a mulimii
numerelor ntregi (Z)
Tipul
Reprezentarea
Domeniul de valori
16 bii cu semn
-32.768 32.767
unsigned int
16 bii fr semn
0 65.535
long int
32 bii cu semn
-2.147.438.648 2.147.438.647
32 bii fr semn
0 4.294.967.295
Tipul ntreg
Constante standard legate de tipul ntreg:
INT_MAX (valoarea maxim a tipului int): 32767
INT_MIN (valoarea minim a tipului int): -32768
LONG_MAX (valoarea maxim a tipului long int):
2.147.483.647
LONG_MIN (valoarea minim a tipului long int):
-2.147.483.648
UINT_MAX (valoarea maxim a tipului unsigned int):
65.535
ULONG_MAX (valoarea maxim a tipului unsigned long
int): 4.294.967.295
Operatori aritmetici:
+, -, *, /, %
Operatori logici
I &&
SAU ||
x=7;
a=++x;
rezultat: a=8, x=8
Tipul real
Tip
Reprezentare
Domeniu de valori
float
32 bii
3.4E-38 3.4E38
double
64 bii
1.7E-308 1.7E308
long
double
80 bii
3.4E-4932 1.1E4932
Aritmetice
Operatori: + , - , * , /
Pentru operanzi reali, rezultatul este real
exemplu: 5/2 = 2, iar 5.0/2.0 = 2.5
Tipul caracter
E mulimea tuturor caracterelor posibile
Tipul
Reprezentare
Domeniu de valori
unsigned char
8 bii
0 255
char
8 bii
-128 127
ASCII
SP
&
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<
>
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Tipul caracter
c1 = 'A';
c2 = '7';
c3 = '\n'; /* linie nou */
c4 = '\t'; /* tab */
Tipul logic
n limbajul de programare C nu exist un
tip standard pentru exprimarea valorilor
cu caracter logic
Se va considera:
fals - 0
adevrat orice valoare diferit de 0
Logice:
negaie !
sau ||
i &&
b
fals
a negat
(!a)
adevrat
a sau b
(a || b)
fals
a i b
(a && b)
fals
fals
fals
adevrat
adevrat
adevrat
fals
adevrat
fals
fals
adevrat
fals
adevrat
adevrat
fals
adevrat
adevrat
CONSTANTE, VARIABILE,
EXPRESII
Constante
Constantele pot fi:
Definite de utilizator
Numerice
Alfanumerice
Exemple de constante definite de utilizator:
const m=3;
const n=sqrt(m)-1;
Variabile
ntr-un program C trebuie declarate toate
variabilele utilizate
Declaraia legtur ntre numele simbolic al
variabilei i tipul su
int m,n;
float v,w;
char ch1,ch2;
Variabile
O variabil este de fapt un nume simbolic
asociat unei locaii de memorie
Utiliznd declaraia, acea locaie de memorie
va avea:
un nume i
un tip
Declararea variabilelor
tip_var nume_var;
tip_var este tipul variabilei declarate
nume_var este numele variabilei sau o list de
nume pentru mai multe variabile
Variabila poate primi o valoare iniial cnd
este declarat
Declararea variabilelor
Variabile de tip ntreg
int numar;
int nr_studenti = 165;
Expresii
Sunt reprezentate de operaii care se execut
asupra operanzilor (constante, variabile,
funcii)
Rezultatul este o valoare
Tipul rezultatului depinde de tipul operanzilor
Expresii
E = expresie simpl [operator relaional
expresie simpl]
operatorii relaionali: <, <=, >, >=, ==,!=
O expresie simpl este format din:
termeni
operatori aditivi (+, -, SAU, SAU EXCLUSIV)
Expresii
Un factor poate fi:
o constant
o variabil (reprezentat prin valoarea ei)
operatorul de adresare & urmat de o variabil
+ sau alt factor
apelul unei funcii
o alt expresie scris ntre paranteze ()
Operatori
Operatori multiplicativi: *, /, %
Operatori aditivi: +, - (binari sau unari)
Operatori compui: +=, -=, *=, /=, %=
(exemplu: x+=3 x=x+3)
Operatori de incrementare/decrementare: ++, - (exemplu: x++, ++x, x--, --x)
Operatorul de adresare: &
se plaseaz n faa unei variabile (&x)
reprezint adresa de memorie a variabilei
UN PRIM PROGRAM C
Un prim program C
void main(void){
}
Lista de argumente
Tipul valorii returnate
Mediul Borland C
Mediul Dev-C++
Mediul CodeBlocks
FUNCII DE INTRARE/IEIRE
Funcii de intrare/ieire
Funciile de intrare/ieire nu sunt parte a
limbajului C
pentru a le putea folosi, trebuie s includem
n programe bibliotecile care conin acele
funcii
Exemple de biblioteci de intrare/ieire:
stdio.h
conio.h
Funcii de ieire
Cele mai importante funcii de ieire sunt:
putchar()
puts()
printf()
Funcii de ieire
putchar() sau putch()
Primete un caracter ca argument
Afieaz acel caracter pe ecran
Exemple putchar()
#include <stdio.h>
#include <stdio.h>
void main(void){
putchar('A');
}
void main(void){
char a;
a='A';
putchar(a);
}
Funcii de ieire
puts()
Primete ca argument un ir de caractere
(string)
Afieaz acel ir de caractere pe ecran
Exemple puts()
#include <stdio.h>
void main(void){
puts("Astazi e sambata.");
}
Funcii de ieire
printf(format [, argument, ])
Afieaz pe ecran:
un text
valorile argumentelor
Funcii de ieire
format poate conine:
un simplu text (care este tiprit ca atare)
semnul special % urmat de un descriptor de
format
semnul special \ urmat de o liter care specific
locul de pe ecran unde se va realiza urmtoarea
tiprire:
\n = linie nou
\t = tab
Funcii de ieire
descriptorul de format:
semnul minus indic alinierea la stnga
(alinierea este implicit la dreapta)
un numr specific lungimea minim a
cmpului afiat
un punct (urmat de un alt numr) separ
lungimea cmpului afiat de precizia cu care se
face afiarea (numrul de zecimale)
o liter specific tipul elementului afiat
Funcii de ieire
Literele pentru descriptorul de format
Litera
Semnificaia
d, i
ntreg zecimal
x, X
caracter
ir de caractere
lf
Exemple printf()
#include <stdio.h>
void main(void){
printf("Astazi e sambata");
printf("\nMaine e duminica");
}
Exemple printf()
#include <stdio.h>
void main(void){
char a;
float b;
a='x';
b=7.5;
printf("Rezultatul este: %c = %f",a,b);
}
Funcii de intrare
Cele mai importante funcii de intrare:
getchar()
gets()
scanf()
Funcii de intrare
getchar() sau getch()
Citete un caracter de la tastatur
Returneaz caracterul citit dup ce l
convertete la tipul ntreg fr semn
Exemple getchar()
#include <stdio.h>
#include <stdio.h>
void main(void){
getchar();
//getch();
}
void main(void){
char a;
a=getchar();
putchar(a);
}
Funcii de intrare
gets()
Citete un ir de caractere (ncheiat cu o linie
nou) de la tastatur
Permite introducerea irurilor de caractere care
conin i spaii
Exemple gets()
#include <stdio.h>
void main(void){
char a[100];
printf("Introduceti un sir de caractere: ");
gets(a);
puts(a);
//printf("\nSirul introdus este: %s", a);
}
Funcii de intrare
scanf(format [, argument, ])
Citete de la tastatur o serie de cmpuri
Memoreaz informaia citit la adresa dat ca
argument
Exemple scanf()
#include <stdio.h>
void main(void){
char a[100];
int b;
printf("Nume ");
scanf("%s",a);
printf("Varsta ");
scanf("%d",&b);
printf("%s are %d ani",a,b);
}
ALTE FUNCII
Alte funcii
fabs(x) = |x|
pow(x,y) = xy
pow10(x) = 10x
sqrt(x)
sin(x), cos(x), tan(x); x n radiani
log(x) = lnx
log10(x) = log10x
exp(x) = ex
Alte funcii
ceil(x);
returneaz primul ntreg mai mare dect x
floor(x);
returneaz primul ntreg mai mic dect x
rand ()
genereaz un numr aleatoriu cuprins ntre 0 i RAND_MAX
INSTRUCIUNI
Instruciuni simple
Atribuirea
y=(m*x)+c;
Apelul unei funcii
putchar('A');
Instruciuni alternative - if
FALS
Instruciuni
condiie
ADEVRAT
Instruciuni
Instruciuni alternative - if
Este folosit pentru a decide ntre dou
alternative ntr-un anumit punct al programului
Forma general:
if (condiie)
else
Instruciuni alternative - if
Instruciunea if const ntr-un test
Dac testul este adevrat, atunci urmtoarele
instruciuni sunt executate
Dac testul e fals, atunci se execut
instruciunile care urmeaz cuvntului else
Apoi restul programului continu normal
Comparaia
Notaie C
Semnificaie
==
Egal cu
>
<
>=
<=
!=
Diferit de
Instruciuni alternative - if
Urmtorul test verific dac un student a trecut
sau nu un examen (if_01.c)
if (nota >= 5)
printf("Promovat\n");
else
printf("Nepromovat\n");
Instruciuni alternative - if
Se poate utiliza instruciunea if fr ramura
else (if_02.c)
if (temperatura < 0)
printf("Inghet\n");
Instruciuni alternative - if
Dac dup if sau else urmeaz mai multe
instruciuni, acestea trebuie grupate ntre
acolade { }
if (mark >= 5) {
printf("Passed\n");
printf("Congratulations\n")
}
else {
printf("Failed\n");
printf("Good luck\n");
}
True
Instruciuni1
False
s==s2
True
Instruciuni2
False
s==sn
False
Instruciuni
True
Instruciunin
int optiune;
float x=2, y=3;
scanf("%d", &optiune);
switch(optiune){
case 1: printf("\nx+y=%.2f",x+y); break;
case 2: printf("\nx-y=%.2f",x-y); break;
case 3: printf("\nx*y=%.2f",x*y); break;
case 4: printf("\nx/y=%.2f",x/y); break;
default: printf("\nOptiune gresita");
}
Instruciuni repetitive
Exist trei tipuri de instruciuni repetitive:
while
do while
for
condiie
FALS
ADEVRAT
Instruciuni
Exemplu while
Aceast parte de program calculeaz suma
primelor 10 numere naturale (while.c)
s=0;k=1;
while (k<=10) {
s=s+k;
k++;
}
printf("Suma:%d",s);
Instruciuni
ADEVRAT
condiie
FALS
}while(condition)
Exemplu do while
Citete de la tastatur o valoare care trebuie s
fie 0 sau 1. Dac nu se introduce valoarea
corect, bucla se repet
(dowhile.c)
do {
printf("Introducei 1 pentru da si 0 pentru nu: ");
scanf("%d", &valoare);
} while (valoare !=1 && valoare !=0);
condiie
ADEVRAT
Instruciuni
Aciune
FALS
Instruciunea for
este folosit
atunci cnd se
tie cu precizie
cte iteraii se
vor executa (de
cte ori se va
repeta bucla)
}
Antetul buclei const n trei pri separate prin punct
i virgul
Prima parte ruleaz nainte de a se intra n bucl. Aceasta
este de obicei iniializarea unui contor
A doua parte este un test. Instruciunea se va ncheia cnd
testul devine fals
A treia parte este o aciune care se va executa de cte ori se
ncheie o trecere completa prin bucl. De obicei aici se
incrementeaz contorul
Exemplu for
Aceast parte de program calculeaz suma
primelor 100 de numere naturale
(for.c)
s=0;
for(k=1;k<=100;k++) {
s=s+k;
}
printf("Suma este:%d", s);