Logo Studenta

Vectores

¡Este material tiene más páginas!

Vista previa del material en texto

Informática I
Departamento de Ingeniería Electrónica
Vectores y matrices en C
Informática I – Ingeniería Electrónica
Ejemplo disparador
Ingrese 10 valores numéricos que representarán muestras de temperatura
provenientes de una máquina. Luego, imprimir el valor de todas las muestras,
indicando las que superen los 50° con la palabra “ATENCIÓN” a continuación
de valor numérico.
¿Cómo hacemos?
Informática I – Ingeniería Electrónica
Vector: Definición
Es un arreglo unidimiensional de variables del mismo tipo, cada una
identificadas con un subíndice numérico.
//Declaración de un vector
int miVector[5];
miVector[0]
miVector[1]
miVector[2]
miVector[3]
miVector[4]
Vector de 5 elementos 
del mismo tipo
Informática I – Ingeniería Electrónica
Vector: Definición
Es un arreglo unidimensional de variables del mismo tipo, cada una
identificadas con un subíndice numérico.
//Declaración de un vector
int miVector[5];
miVector[0]
miVector[1]
miVector[2]
miVector[3]
miVector[4]
Vector de 5 elementos 
del mismo tipo
Tipo de dato
Nombre del vector
Tamaño (cantidad de elementos)
Informática I – Ingeniería Electrónica
Vector: Asignar un valor
Podemos acceder a cada elemento del vector utilizando el subíndice entre
corchetes. Cada uno de estos elementos se comportará como una variable.
//Declaración de un vector
int miVector[5];
5
miVector[0]
miVector[1]
miVector[2]
miVector[3]
miVector[4]
Vector de 5 elementos 
del mismo tipo
//Asigno un valor
miVector[1] = 5 ;
Informática I – Ingeniería Electrónica
Vector: Uso de scanf y printf
Entendiendo que cada elemento de un vector es en sí, una variable, podemos
deducir fácilmente como se utilizarán estas dos funciones:
//Declaración de un vector
int miVector[5];
//Leo un valor por teclado y lo guardo en el elemento 3
scanf (“%d”, &miVector[3]) ;
//Imprimo el valor ingresado
printf (“El valor ingresado es: %d”, miVector[3]) ;
Informática I – Ingeniería Electrónica
Vector: Consideraciones sobre el tamaño de un vector
El tamaño de un vector debe ser una constante. Este es determinado en tiempo
de compilación
int tam ;
//Leo el tamaño del vector
scanf (“%d”, &tam) ;
//Declaración el vector
int miVector[tam];
No puedo determinar el tamaño del 
vector en tiempo de ejecución.
Informática I – Ingeniería Electrónica
Vector: Declarar un vector inicializado
//Declaración de un vector inicializado
int miVector[5]={0,5,10,25,30};
0
5
10
25
30
miVector[0]
miVector[1]
miVector[2]
miVector[3]
miVector[4]
Vector de 5 elementos
Informática I – Ingeniería Electrónica
A programar
1) Ingrese 30 valores numéricos que representan las notas de un curso de Informática I.
Finalmente imprima aquellos valores que superan la media del curso separados de
aquellos que están por debajo.
2) Realizar un programa que solicite una secuencia de 10 números enteros y determine si,
dicha secuencia, es capicúa.
Informática I – Ingeniería Electrónica
Copia de vectores
//Declaración de un vector inicializado
int vec_1[5]={0,5,10,25,30} ;
int vec_2[5] ;
int i ;
vec_2 = vec_1 ;
for (i = 0 ; i < 5 ; i++)
{
vec_2[i] = vec_1[i] ;
}
Los vectores no pueden copiarse directamente.
Los elementos deberán copiarse 
individualmente 
Vectores y punteros: No comprobación de contornos
Cuidado: En C no se realiza comprobación de contornos, es decir, el
compilador no chequea si se están accediendo a elementos fuera del vector.
//Ejemplo de no comprobación de contornos
int miVector[5]={0,5,10,25,30};
miVector[6]=50;
0
5
10
25
30
miVector[0]
miVector[1]
miVector[2]
miVector[3]
miVector[4]
-----miVector[5]
50miVector[6]
Haciendo miVector[6], accedemos a
una dirección de memoria que no está
dentro del espacio reservado para el vector.
Escribir un área de memoria no resrvado
puede generar un comportamiento
inesperado en el código.
Pasaje de vectores a funciones
Cuando se utiliza un vector como
argumento de una función, se envía la
dirección de memoria del vector.
Dentro del cuerpo de la función se
tendrá acceso al vector original.
void borrar (int vec[])
{
int i;
for(i=0;i<5;i++) 
vec[i]=0;
}
int main (void)
{
int vector[5];
borrar(vector);
//¿Cómo queda vector?
return 0;
} 
vector[0]
vector[1]
vector[2]
vector[3]
vector[4]
vector
vec
Pasaje de vectores a funciones (alternativa)
Buena práctica: Enviar el tamaño del
vector como parámetro.
De esta forma, puedo reutilizar la
función para vectores de distintos
tamaños.
void borrar (int vec[], int tam)
{
int i;
for(i=0; i < tam; i++) 
vec[i]=0;
}
int main (void)
{
int vector[5];
borrar(vector, 5);
//¿Cómo queda vector?
return 0;
} 
vector[0]
vector[1]
vector[2]
vector[3]
vector[4]
vector
vec
Informática I – Ingeniería Electrónica
A programar
1) Realice una función que recibe un vector de enteros y la cantidad de elementos del
mismo. La función devuelve el módulo de los elementos del vector (es decir, si
encuentra números negativos, los cambia por sus opuestos). Compruebe su correcto
funcionamiento.
2) Realice una función que recibe un vector de enteros y la cantidad de elementos del
mismo. La función debe invertir el orden de los elementos del vector. Realice un
programa que compruebe su correcto funcionamiento.
3) Realice una función que recibe dos vectores de R3 y devuelve su producto escalar.
Compruebe su correcto funcionamiento.
Informática I – Ingeniería Electrónica
Matriz: Definición
Es un arreglo multidimensional de variables del mismo tipo, cada una
identificadas con un subíndice numérico.
//Declaración de una matriz inicializada
int miMatriz[2][4]={{1,2,3,4},{5,6,7,8}};
miMatriz[0][0] miMatriz[0][1] miMatriz[0][2] miMatriz[0][3]
miMatriz[1][0] miMatriz[1][1] miMatriz[1][2] miMatriz[1][3]
Fila 0
Fila 1
Columna 0 Columna 1 Columna 2 Columna 3
1 2 3 4
5 6 7 8
Fila 0
Fila 1
Columna 0 Columna 1 Columna 2 Columna 3
Informática I – Ingeniería Electrónica
Matriz: Uso en funciones
Al utilizar matrices en funciones, es obligatorio declarar la cantidad de
columnas en la definición de la función.
//Esta función recibe la dirección de memoria de una matriz 
de n filas y 3 columnas.
void imprimirMatriz(int matriz[][3], int filas, int columnas) 
{
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
printf("%d ", matriz[i][j]);
}
printf("\n");
}
}
Informática I – Ingeniería Electrónica
A programar
1) Realice una función que recibe una matriz de 2x2 y devuelve el valor de su
determinante
2) Realice una función que recibe dos matrices de 2x2 y una tercera matriz donde
guardará el resultado del producto de ambas.
Determinante de matriz de 2x2:
Informática I – Ingeniería Electrónica
Ejercicio adicional para la próxima clase
Realice una función de reciba un vector de enteros y su cantidad de
elementos y devuelva el vector ordenado de menor a mayor.
	Diapositiva 1
	Diapositiva 2
	Diapositiva 3
	Diapositiva 4
	Diapositiva 5
	Diapositiva 6
	Diapositiva 7
	Diapositiva 8
	Diapositiva 9
	Diapositiva 10
	Diapositiva 14
	Diapositiva 15
	Diapositiva 16
	Diapositiva 17
	Diapositiva 18
	Diapositiva 19
	Diapositiva 22
	Diapositiva 23

Continuar navegando