Sunteți pe pagina 1din 102

INTRODUCERE N

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

ntre oameni i calculator


utiliznd un limbaj de programare

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

int, short int

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

unsigned long int

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

Tipul ntreg operaii


Operatori relaionali:
>, >=, <, <=, ==, !=
(0 e fals, orice altceva e adevrat)

Operatori aritmetici:
+, -, *, /, %

Operatori logici
I &&
SAU ||

Tipul ntreg operaii


Incrementare x++; ++x
x x+1 (dup sau naintea utilizrii)

Decrementare x--; --x


x x-1
Exemplu
x=7;
a=x++;
rezultat: a=7, x=8

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

Tipul real operaii


Relaionale
Operatorii clasici ( >, >=, <, <=, ==, !=)
Rezultatul e o valoare care poate fi adevrat sau
fals
exemplu: 17.4 < 21.3 adevrat

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

Toate caracterele sunt convertite n numere


ntregi conform codului ASCII (American
Standard Code for Information Interchange)

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

Asupra caracterelor se pot aplica operatori i


funcii standard:
c1+c2 'x'

ntre caractere exist relaiile cunoscute:


'C'<'D' e adevrat, '8'<'6' e fals

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

Tipul logic - operaii


Relaionale: = = ,< ,>,<=,>= ,!=
Rezultatul este tot o valoare logic

Logice:
negaie !
sau ||
i &&

Tipul logic - operaii


a

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, variabile, expresii


Instruciunile unui program lucreaz cu
date care pot fi:
variable cantiti care i pot modifica
valoarea n timpul execuiei progra-mului
constante cantiti care NU i pot
modifica valoarea n timpul execuiei
programului

Constante, variabile, expresii


Declaraia prezint variabilele care vor fi
folosite n program (eventual mpreun cu
valorile lor iniiale)
Operatorii specific aciunile care trebuie
executate asupra variabilelor i constantelor
Expresiile asociaz variabile i constante
pentru a obine noi valori

Constante
Constantele pot fi:
Definite de utilizator
Numerice
Alfanumerice
Exemple de constante definite de utilizator:
const m=3;
const n=sqrt(m)-1;

Constante simbolice (M_PI=3.14)

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

Respectiva locaie de memorie va reine o


valoare a tipului declarat

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;

Variabile de tip real


float variabila;
float numar_real = 1234567.89;

Variabile de tip caracter


char prima_litera = 'A';
char o_litera;

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)

Un termen este format din:


factori
operatori multiplicativi (*,/,%, SI)

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){
}

Orice program C trebuie


s aib o funcie numit
main

Lista de argumente
Tipul valorii returnate

Mediul Borland C

Borland C Un prim program C


Editarea i salvarea unui program

Borland C Un prim program C


Compilarea unui program Alt+F9

Borland C Un prim program C


Dac totul este corect

Borland C Un prim program C


Rularea unui program Ctrl+F9

Mediul Dev-C++

Dev-C++ Un prim program C


Editarea i salvarea unui program

Dev-C++ Un prim program C


Compilarea unui program Ctrl+F9

Dev-C++ Un prim program C


Dac totul este corect

Dev-C++ Un prim program C


Rularea unui program Ctrl+F10

Mediul CodeBlocks

CodeBlocks Un prim program C


Editarea i salvarea unui program

CodeBlocks Un prim program C


Compilarea unui program Ctrl+F9

CodeBlocks Un prim program C


Dac totul este corect

CodeBlocks Un prim program C


Rularea unui program Ctrl+F10

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

Acestea se gsesc n biblioteca stdio.h

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

exemple: %c, %d, %5.2f, %-15s

Funcii de ieire
Literele pentru descriptorul de format
Litera
Semnificaia
d, i

ntreg zecimal

ntreg octal fr semn

x, X

ntreg hexazecimal fr semn

ntreg zecimal fr semn

caracter

ir de caractere

float simpl precizie

lf

float dubl precizie

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

Acestea se afl n biblioteca stdio.h

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

floor(16.3) = 16; ceil(16.3) = 17;


floor (-1.71) = -2; ceil(-1.71) = -1;
floor(-3.4)=-4; ceil(-3.4)=-3;
floor(0.5) = 0; ceil (0.5)= 1;
floor(-0.5) = -1; ceil (-0.5) = 0.

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

>

Mai mare dect

<

Mai mic dect

>=

Mai mare sau egal cu

<=

Mai mic sau 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");
}

Instruciuni alternative - switch


s==s1

True

Instruciuni1

False
s==s2

True

Instruciuni2

False

s==sn
False
Instruciuni

True

Instruciunin

Instruciuni alternative - switch


Este o form de rezolvare a situaiilor n care
sunt necesare decizii multiple
Instruciunea switch poate fi folosit doar n
cazurile n care:
Doar o variabil este testat. Variabila trebuie s
fie de tip ntreg (int, long, short sau char)
Fiecare valoare posibil a variabilei poate controla
un singur bra al instruciunii

Instruciuni alternative - switch


Execut o anumit operaie n funcie de opiunea
utilizatorului (switch.c)

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

Instruciuni repetitive while

condiie

FALS

ADEVRAT
Instruciuni

Instruciuni repetitive while


Repet o aciune atta timp ct condiia
asociat este adevrat
Este util atunci cnd programatorul nu tie de
cte ori se va repeta un anumit grup de
instruciuni
while(condiie)
{

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 repetitivedo while

Instruciuni

ADEVRAT

condiie

FALS

Instruciuni repetitivedo while


Similar cu while, exceptnd faptul c testul
apare la sfrit
Acest lucru garanteaz c bucla se execut cel
pui o dat
E adesea folosit cnd anumite date sunt citite
(pentru a face verificri)
do{

}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);

Instruciuni repetitive for


Iniializare

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)

Instruciuni repetitive for


for(iniializare; condiie; aciune){

}
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);

V mulumesc pentru atenie

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