





















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Documento que presenta la sintaxis básica de declaración y uso de arrays en el lenguaje de programación c, incluye ejemplos y explicaciones de cómo determinar el tamaño de un array, la inicialización automática y manual, pasar arrays a funciones y operar con ellos.
Tipo: Apuntes
1 / 29
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!






















Departament de Microelectrònica i Sistemes Electrònics
7.1 Introducció
7.2 Vectors ( llistes)
Definició. Declaració de vectors Emmagatzematge en memòria Inicialització de vectors Grandària d’un vector Exemple
7.3 Cadenes ( llistes) de caràcters
7.4 Matrius
7.5 Pas de paràmetres
7.6 Operant amb vectors ( llistes)
7.7 Exemples
2
Índex
Arrays (llistes i taules)
7.2 Llistes o vectors (1)
Definició: Array (llista o vector, taula omatriu ) Conjunt finit i ordenat
Enters (int, long....) Reals (float, double...) Caràcters (char) etc...
Llista o vector És un arrayunidimensional.
Exemple:
La llista pot ser referida com a un tot (N), o per cadascun dels seus elements (N(i)).
i 0 1 2 3 4 5 6 7 8 9
7.2 Llistes o vectors (2)
Declaració de llista o vector s’ha d’especificar: El tipus dels elements que el formen. El nom de la variable. El tamany o número d’elements del vector.
double altures[10]; int numeros[8]; char s[20];
float Q[ ]={5.5, 9.5, 4.5, 6.0, 8.0, 7.5, 5.5, 4.0, 8.5, 9.0};
o float Q[10]; Quan es defineix s’ha d’indicar el nombre d’elements que tindrà el vector (n). En l’exemple l'índex anirà de 0 a 9 per direccionar els 10 elements que s’han definit.
i 0 1 2 3 4 5 6 7 8 9
Grandària de les llistes
Mitjançant l’operador (funció) sizeof() es pot saber la mida dels arrays.
Exemple:
Inicialització de llistes Els arrays es poden inicialitzar dintre ladeclaració
C inicialitza les variables globals a 0 (caràcter nul – ‘\0’ – en el cas de llistes de
caràcters) (com si fossin variables externes). Però no ho fa en les variables locals
(automàtiques).
7
7.2 Llistes o vectors (4)
Exemple
8
7.2 Llistes o vectors (5)
Inicialitzat aqualsevol valor!
Inicialitzat a 0
Cadena o string de caràcters Conjunt finit i ordenat de caràcters
emmagatzemats consecutivament. Es representa entre cometes ( “ ” ).
Declaració : char nom[n]; o char nom[ ] = “Hola” ,
S’ha de distingir entre cadena i vector ( llista) de caràcters. A la cadena
s’insereix per defecte al final un caràcter nul ( ‘\ 0 ’ ) que en facilita el seu
tractament.
10
7.3 Llistes de caràcters (1)
De forma automàtica char cadena[] = "Avui"; char cadena[] = {'A', 'v', 'u', 'i', '\0'}
Reserva 5 posicions de memòria
Reservant espai (per a més tard)
char cadena[80] Reserva 81 posicions. Després de la 'i' hi hauran altres caràcters. Utilitzantscanf() char cadena[25] scanf("%s", cadena)
scanf() talla en trobar el primer blanc. cadena indica una posició de memòria no fa falta posar &. Utilitzantgets() gets(cadena) Llegeix una línia fins que troba el retorn de carro.
7.3 Llistes de caràcters (2)
Exemple : Es defineix una cadena a[ ] i un array de caràcters b[ ]. Així com el final
//Cadena (amb ‘\0’ que es detecta el final) void main() { int i = 0; char a[ ] = "Es dimarts."; printf("%s\n", a); do { printf("%c", a[i]); i++; }while (a[i] != '\0'); printf(“\nNumCars=%i\n”, sizeof(a)); }
Es dimarts. Es dimarts. NumCars=12 // ‘\0’ també s’hi compta
//Array de caràcters (el final no es detecte amb ’\0’). void main() { int i = 0; char b[]={'E','s',' ','d','i','m','a', 'r','t','s','.'}; printf(“%s\n", b); do { printf("%c", b[i]); i++; }while (b[i] != '\0'); printf(“\nNumCars=%i\n”, sizeof(b)); }
Es dimarts.ÿ╗ (o similar!) Es dimarts.■ (o similar!) NumCars=11 // 11 caràcters * 1 byte cadascun
7.4 Taules o matrius (1)
13
Matriu Vector (array) bidimensional o multidimensional.
14
7.4 Taules o matrius (2)
Emmagatzemament de la taula en memòria.
En el C s’emmagatzema per files.
Exemple:
En C tots els vectors (arrays) es passen per referència o punters , fet
que implica que, tota modificació feta en el vector, es mantindrà un cop es
torni al programa principal.
Això es deu al fet que el nom de la variable és una constant que indica la
posició (adreça) del primer element del vector a la memòria:
&array[] = &array[ 0 ]
del primer element. En conseqüència, el resultat final és un pas de
paràmetres per referència.
16
7.5 Pas de paràmetres (1)
Exemple: El següent exercici mostra com, després de la crida de la funció suma(), el vector queda modificat.
#include <stdio.h> const int DIM=3; void suma10(int []); //Declaració funció amb paràmetre
void main() {
for (i = 0; i < DIM; i ++) printf("inicial_v[%1u] = %u\n", i, vect[i]); //Impressió llista inicial suma10(vect); //Crida funció for (i = 0; i < DIM; i ++) printf("final_v[%1u] = %u\n", i, vect[i]); //Impressió llista final } void suma10(int v[]) //Funció suma { int i; for (i = 0; i < DIM; i ++) v[i] += 10; } (^17)
7.5 Pas de paràmetres (2)
19
7.5 Pas de paràmetres (4)
#include <stdio.h> #include <string.h>
/Comptar paraules d’una frase/
int paraules(char*, int); void main() { char fr[80]; int n; printf("\tEntra una frase:\t"); gets(fr); n=paraules(fr, strlen(fr)); //es passa una adreça printf("\tEn total %i paraules.\n", n); }
int paraules(char *f, int l) { int num=0, i=0, espai=1; for (i=0;i<l;i++) { if (f[i]==' ') espai=1; else { if (espai==1) { espai=0; num++; } } } return(num); }
7.6 Operant amb vectors ( llistes) (1)
Operacions: recórrer la llista, cercar un element de la llista, afegir elements, inserir elements (enmig la llista), esborrar elements i ordenar els elements de la llista.
Sigui un vector A de màxim N elements, amb m plens (de l’element 0 fins al m- 1 ( < N)).
Funció que cerca un element x de la llista: