Laborator 4
  1. Tablouri
  2. Functii

Tablouri

Tablourile sunt structuri de date ce pot retine variabile multiple ale aceluiasi tip de date. Sa consideram cazul cind avem nevoie de o evidenta a tuturor persoanelor dintr-o organizatie (ne intereseaza de exemplu, virsta). Incercarea de a aloca cite o variabila fiecarei persoane este sortita esecului.


	int v1 = 21;
	int v2 = 23;
	int v3 = 23;

Aceasta solutie adoptata devine din ce in ce mai dificil de intretinut atunci cind numarul de persoane creste. Tablourile sunt un posibil raspuns la aceasta problema.

Un tablou este ca un dulap cu multe sertare, ce utilizeaza un sistem de indexare pentru a sti pozitia fiecaruia. In C indexarea incepe de la 0 (in Pascal putea incepe la diferite valori).

Inainte de a fi utilizat, un tablou trebuie declarat:


	int v[4];
	v[0] = 21;
	v[1] = 23;
	v[2] = 23;
	v[3] = 0;

Am creat un tablou in care am alocat spatiu pentru 4 intregi. Apoi am initializat fiecare element. Pentru a semnifica terminarea unui vector, se initializeaza ultima variabila cu valoarea 0.

x[7] se refera la cel de-al optulea element al tabloului (daca exista).

In C nu exista tipul string (sir de caractere din Pascal). Orice sir se defineste ca un tablou de tip caracter. Ultimul element este initializat cu zero pentru a semnifica sfirsitul sirului de caractere.


	#include <stdio.h>

	main()
	{
		char cuv[20];

		cuv[0] = 'H';
		cuv[1] = 'e';
		cuv[2] = 'l';
		cuv[3] = 'l';
		cuv[4] = 'o';
		cuv[5] = 0;

		printf("Un sir de caractere :%s\n", cuv);
	}

Initializare :


	int a[4]={1,2,3,4};
	char s[4]={'a','b','c','\0'};
	float x[]={1.0, 2.3, 3.4};
	char s[]="abcdef";

Un tablou bidimensional :


	int a[4][3];

Accesarea unui element al tabloului se face foarte simplu: a[i][j].


Functii

O functie in C este piesa de baza a conceptului de modularitate al programarii si poate executa o sarcina precisa. Fara sa stim deja am lucrat cu functii: partea principala a unui program C, identificata de main este o functie. Ea este apelata ori de cite ori programul este lansat in executie, iar cind se termina, reda controlul sistemului de operare (de fapt procesului apelant).

In general exista trei elemente de program implicate in utilizarea unei functii:

  1. definirea functiei
  2. apelul functiei
  3. prototipul functiei

Sintaxa unei functii :


	tip_returnat  nume_functie ( argument, argument )
	declaratii_tipuri_de_date_ale_argumentelor
	{
		corpul_functiei
	}

Daca tipul returnat nu este declarat, atunci se presupune ca returneaza tipul int.

Standardul ANSI C se diferentiaza usor:


	tip_returnat nume_functie (tip_date var, tip_date var, .. )
	{
		corpul_functiei
	}

Aceasta declarare permite verificarea de tip utilizind prototipul functiei, care informeaza compilatorul despre numarul si tipul parametrilor.

tip_date_returnat pentru o functie care nu returneaza nimic trebuie sa fie void.

Un exemplu de declarare functie :


	void print( void )
	{
		printf("Afisare din functie !\n");
	}

Numele funtiei este print. Functia nu primeste argumente la apel si nu returneaza nimic.

Prototipul functiei in ANSI C este :


	void print( void );

Prototipurile functiilor sunt scrise la inceputul fisierului sursa, sau pot fi amplasate intr-un fisier header (.h).

Apelul functiei - o functie care intoarce o valoare se apeleaza astfel:


	x=suma(n);

sau, daca nu ne intereseaza valoarea returnata:


	suma(n);

O variabila declarata in interiorul unei functii este locala, si este recunoscuta doar in interiorul functiei respective.

Functia urmatoare intoarce minimul dintr-un sir de numere:


	int getmin(int n, int a[])
	{
	  int min,i;

	  min=a[0];
	  for (i=1;i<n;i++)
	    if (min>a[i])
                min=a[i];
	  return min;
	}

Functia primeste doi parametri: primul este un numar intreg si reprezinta lungimea tabloului, iar al doilea este chiar tabloul respectiv.

Instructiunea


	return min;

realizeaza returnarea de catre functie a valorii din variabila min.


Probleme rezolvate
Probleme propuse

Previous | Next | Home |