Sunteți pe pagina 1din 47

PROGRAMAREA

CALCULATOARELOR
ntlnirea 2
19-11-2016, 10-12-2016
.l.dr.ing. Adriana ALBU
adriana.albu@aut.upt.ro

TABLOURI

Tablouri
Un tablou este o colecie de variabile de
acelai tip
Elementele tabloului sunt identificate
printr-un index de tip ntreg
n C indexul ncepe de la zero i este
scris ntre paranteze ptrate [ ]

Tablouri
Exist tablouri unidimensionale care se
declar astfel:
int v[20];
sau cu mai multe dimensiuni,
declarate astfel:
float mat_2d[20][5];
int mat_3d[20][5][3];
Fiecare index are propriul set de
paranteze ptrate

Tablouri unidimensionale
-

vectori v

0
2

1
-3

2
7

3
12

n-2 n-1
1 -9

Dimensiunea tabloului reprezint


num-rul de elemente
Indexul unui element specific
poziia sa n tablou

Definirea unui vector


Trebuie specificat:
tipul datelor care vor fi nscrise n tablou
numele tabloului
numrul de elemente pe care le conine

tip nume[numr_de_elemente]
int v[10];
float note[50];

Citirea unui vector


int n;
printf("n=");
scanf("%d", &n);
for(i=0;i<n;i++){
printf("v[%d]=",
i);
scanf("%d",
&v[i]);

Pe ecran va
aprea:
v[0]=
v[1]=
v[2]=
.
.
.
v[n-1]=

Afiarea unui vector

for(i=0;i<n;i++)
printf("%d ", v[i]);

Cutarea minimului ntr-un


vector
min=v[0];
for(i=1;i<n;i++)
if (v[i]<min)
min=v[i];
printf("Minimul: %d", min);

Vectori exemplul complet


vector.c

Tablouri bidimensionale
- matrice -

a
=

0
23

1
0

2
-1

3
-4

19

11

12

-7

Declarare:
int a[3][4];
Accesarea unui element:
a[2][0]=-7;

Citirea unei matrice


for(i=0;i<n;i++)
for(j=0;j<m;j++){
printf("a[%d][%d]=", i, j);
scanf("%d", &a[i][j]);
}

Afiarea unei matrice


for(i=0;i<n;i++){
for(j=0;j<m;j++)
printf("%d ", a[i][j]);
printf("\n");
}

Cutarea minimului ntr-o


matrice
min=a[0][0];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if (a[i][j]<min)
min=a[i][j];
printf("Minimul este: %d", min);

Matrice exemplul complet


matrice.c

IRURI DE CARACTERE

Caractere
Declaraia: char c;
Funcii:

isalpha(c); - returneaz o valoare ne nul daca c este liter


isdigit(c); - returneaz o valoare ne nul daca c este cifr
isalnum(c); - returneaz o valoare ne nul daca c este liter
sau cifr

isupper(c);

- returneaz o valoare ne nul daca c este liter

islower(c);

- returneaz o valoare ne nul daca c este liter

mare
mic

isspace(c); - returneaz o valoare ne nul daca c este spaiu


toupper(c); - transform c n liter mare
tolower(c); - transform c n liter mic

iruri de caractere
Un ir de caractere este
o secven de caractere scris ntre
ghilimele
ncheiat prin caracterul '\0'

Numele irului de caractere este un


pointer ctre primul su element (indic
adresa primului su element)
Exemple de iruri de caractere:
"abcdef"
"12345"
"Adriana ALBU"

iruri de caractere
Limbajul C nu are un tip special pentru
irurile de caractere
irurile de caractere vor fi declarate ca
tablouri ale cror elemente au tipul
char:
char s[30]; //declararea unui string

iruri de caractere
citire/scriere
citire: scanf(), gets()
scriere: printf(), puts()
Exemple:
scanf("%s", string1);
(nu are nevoie de operatorul de adresare &)
printf("%s", string1);

Observaii:
scanf citete pn la spaiu
gets citete toate caracterele, inclusiv
spaiile, pn la linie nou (Enter)

iruri de caractere
Nu exist operatori pentru stringuri
Pentru a efectua diverse operaii asupra
irurilor de caractere se folosesc funciile
bibliotecii string.h

iruri de caractere strlen()


Returneaz numrul de caractere dintrun string
Forma general:
int strlen(char *s)

iruri de caractere strlen()


Exemplu:
char name1[]="Sharon";
char name2[]="Mark";
int len;
len=strlen(name1);
printf("%d %d %d %d", strlen(name1),
strlen(name2), strlen("Tom"), len);
//rezultatul: 6 4 3 6

iruri de caractere strcpy()


char *strcpy(char *destination, char
*source)
copiaz un string surs ntr-un string
destinaie
returneaz adresa stringului destinaie
presupune c destinaia este suficient de
mare pentru ca sursa s aib loc

iruri de caractere strcpy()


Exemplu:
char name1[] = "Sharon";
char name2[]="Mark";
strcpy(name2, name1);
strcpy(name1, "Fred");
//rezultatul: name2=Sharon, name1=Fred

iruri de caractere strcat()


char *strcat(char *destination, char
*source)
concateneaz stringul surs la sfritul
stringului destinaie
returneaz adresa rezultatului (stringul
destinaie)
presupune c destinaia este suficient de
mare pentru a ncpea noul string

iruri de caractere strcat()


Exemplu:
char str1[15]="Adriana";
char str2[]="ALBU";
strcat(str1, " ");
strcat(str1, str2);
//rezultatul: Adriana ALBU

iruri de caractere
strcmp()
int strcmp(char *s1, char *s2)
utilizat pentru a compara dou stringuri
returneaz
O valoare negativ dac s1<s2
Zero dac s1=s2
O valoare pozitiv dac s1>s2

comparaia se face din punct de vedere


lexicografic

iruri de caractere
strcmp()
Exemplu:
char password[7]="Secret!";
char user_pass[10];
gets(user_pass);
if(strcmp(password, user_pass)==0)
printf("Password correct. Welcome to the
system");
else
printf("Invalid password");

FUNCII DEFINITE DE
UTILIZATOR

Funcii
Pentru a rezolva o problem complex
problema se mparte n sub-probleme mai
mici
se rezolv sub-problemele scriind funcii

Un program C poate conine


funcii pre-definite care se gsesc n
bibliotecile C standard:
funcii pentru calcule matematice, funcii de
intrare/ieire, funcii pentru prelucrarea
irurilor de caractere etc.

funcii definite de utilizator

Funcii definite de utilizator


Dac o aciune este utilizat n mai
multe puncte ale unui program, atunci:
se va scrie o funcie care o implementeaz
avantajul setul respectiv de instruciuni va
fi scris o singur dat
e nevoie ca funcia s fie apelat prin
specificarea numelui su i a argumentelor

Funcii definite de utilizator


nainte de folosirea unei funcii, limbajul
C trebuie s aib cunotine despre tipul
returnat i despre tipul parametrilor
(prototipul funciei)
tip_returnat nume (tip_arg1 nume_arg1, tip_arg2
nume_arg2, ){
//variabile locale
//cod
//
return .
}

Funcii void

Dac nu se dorete returnarea unei


valori, atunci se va scrie void n locul
tipului returnat i se va renuna la
instruciunea return din cadrul funciei

Funcii void
#include <stdio.h>
void patrate(){
int i;
for(i=1;i<10;i++)
printf("%d\n", i*i);
}
void main(void){
patrate();
}
NOT: E nevoie de paranteze chiar dac nu
exist parametrii

Alte funcii
#include <stdio.h>
float findaverage(float a, float b){

//a,b = parametrii

formali

float average; //average = variabil local


average=(a+b)/2;
return(average);
}
void main(){
float n1=5, n2=15, result; //n1, n2, result = variabile locale
result=findaverage(n1, n2); //n1, n2 = parametrii actuali
printf("average=%f",result);
}

Funcii i variabile
O funcie poate avea contact cu lumea
exterioar prin intermediul argumentelor i
al variabilelor globale
Variabilele locale sunt declarate n interiorul
unei funcii. Acestea sunt create de fiecare
dat cnd funcia este apelat i sunt distruse
la ntoarcerea din funcie. Valorile transmise ca
argumente funciei pot fi de asemenea tratate
ca variabile locale
Variabilele globale nu i pierd valoarea la
prsirea unei funcii, ci o pstreaz, fiind
disponibil i altor funcii

Funcii exemplu
Cutarea minimului ntr-o matrice
problem rezolvat cu funcii definite de
utilizator (functii.c).

Funcii exemplu
Un
exemplu
cu
meniu
repetitiv
(meniu.c). Operaii asupra unui vector de
numere ntregi.

Tipuri definite de utilizator

Tipul structur
Limbajul C ofer structura pentru a grupa
informaii care au tipuri diferite, dar sunt
relaionate din punct de vedere logic
O structur este definit utiliznd urmtorul
tipar:
struct nume_structura {
tip1 camp1;
tip2 camp2;
...
tipN campN;
} var1, ..., varN;

Structuri - exemplu
struct student{
int numar;
identificare */
char nume[26];
int varsta;
/*
float nota;
/*
};

/* Numarul de
/* Numele studentului */
Varsta studentului */
Nota studentului */

Structuri
Definirea unei structuri nu aloc
memorie pentru acea structur ci doar
definete un nou tip de dat
n continuare pot fi declarate variabile de
acest nou tip astfel:
struct student student1, student2;

Structuri
Pentru a accesa membrii unei variabile
de tip structur se folosete operatorul
.
student1.numar = 1234;
strcpy(student2.nume, "Dennis
RITCHIE");

Structuri - exemplu
struct.c
Informaiile despre o anumit persoan
(nume, adres, vrst, not) sunt citite de la
tastatur, reinute ntr-o structur i apoi
afiate prin intermediul structurii pe ecran

Structuri - exemplu
gestiune.c
Gestionarea unui tablou de structuri
Structura conine informaii despre persoane
(prenume, nume, vrst etc.)
Asupra tabloului se pot executa (repetitiv)
operaiile:

adugarea unei persoane


afiarea ntregului tablou
cutarea unei persoane dup nume
afiarea persoanelor cu drept de vot

V mulumesc pentru
atenie

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