1. Programación 1
Estructuras de datos en C
Angel Vázquez-Patiño
angel.vazquezp@ucuenca.edu.ec
Departamento de Ciencias de la Computación
Universidad de Cuenca
12 de septiembre de 2017
2. 12/09/17 Angel Vázquez-Patiño 2/26
Objetivos
1. Entender el uso de arreglos
2. Realizar operaciones de acceso de elementos
3. Implementar programas usando arreglos
5. 12/09/17 Angel Vázquez-Patiño 5/26
Arreglos unidimensionales
Arreglo
●
Espacio de memoria que permite almacenar
una colección de elementos, todos del mismo
tipo
6. 12/09/17 Angel Vázquez-Patiño 6/26
Arreglos unidimensionales
●
Dimensión: número de elementos en el arreglo
●
Índice: número que identifica de manera única
a cada elemento del arreglo con un número
●
En C, C++ o Java el índice comienza en cero
7. 12/09/17 Angel Vázquez-Patiño 7/26
Arreglos unidimensionales
●
Los lenguajes de programación permiten la
declaración de arreglos de cualquier tipo y
prácticamente de cualquier tamaño
Declaración
tipo nombre[dimensión];
●
Se debe usar un nombre nemotécnico
Referencia
●
Tanto para asignar un valor o para obtener un
elemento, se usa el índice
¿ ?
9. 12/09/17 Angel Vázquez-Patiño 9/26
Arreglos unidimensionales
Ejercicios
1) Cree un arreglo de cinco elementos, asígnele
valores numéricos enteros manualmente y
muéstrelos en pantalla
2) Cree un arreglo de 10 elementos, inserte los
valores numéricos con decimales que desee de
la manera que quiera y muestre en pantalla la
media de todos los valores
3) Cree un arreglo con el abecedario con el
mínimo número de líneas de programación
10. 12/09/17 Angel Vázquez-Patiño 10/26
Arreglos unidimensionales
Ejercicios
4) Cree un arreglo donde usted indique la
dimensión por teclado y cree una función que
rellene el arreglo con los múltiplos de un
número pedido por teclado. E.g., si definió un
arreglo de 5 elementos y eligió un 3 en la
función, el arreglo contendrá 3, 6, 9, 12, 15.
Finalmente, muéstrelos en pantalla usando otra
función distinta
11. 12/09/17 Angel Vázquez-Patiño 11/26
Arreglos unidimensionales
Ejercicios
5) Un histograma para una colección de datos es
una secuencia de parejas de la forma (d, f),
donde d es un dato y f es su frecuencia en la
colección. E.g., suponga que se le pide a 10
personas calificar con las letras a, b, c, d o e el
desempeño del gobierno actual, y que se
obtienen las siguientes respuestas: c, b, c, d, e,
a, b, b, d, c. Implemente una función que haga
un histograma para una lista de hasta 100
valores, donde cada valor está en el intervalo a-e
12. 12/09/17 Angel Vázquez-Patiño 12/26
Arreglos unidimensionales
Ejercicios
6) Implemente una función que califique un examen
de selección múltiple. En cada una de las
preguntas del examen se debió elegir una de cinco
opciones: A, B, C, D y E. Los parámetros:
●
Cada una de las respuestas dadas por el estudiante
●
Las respuestas correctas
La función devuelve la nota obtenida. Esta nota
corresponde al número de aciertos que tuvo el
estudiante
13. 12/09/17 Angel Vázquez-Patiño 13/26
Arreglos unidimensionales
Ejercicios
7) Implemente un algoritmo que lea un arreglo de
números enteros y un número x, y escriba en la
pantalla las posiciones del arreglo donde está
x. Por ejemplo, si el arreglo tiene los números
1, 2, 3, 100, 23, 2, 2 y 1 y x es 2, el programa
debe escribir: 1, 5 y 6
14. 12/09/17 Angel Vázquez-Patiño 14/26
Arreglos unidimensionales
Otra forma de declarar un arreglo en C
#include<stdio.h>
int main(){
char vocales[] = {'a', 'e',
'i', 'o', 'u'};
for(int i=0; i<5; i++)
printf("%cn", vocales[i]);}
16. 12/09/17 Angel Vázquez-Patiño 16/26
Arreglos unidimensionales
Conocer el número de elementos de un arreglo
1#include<stdio.h>
2int main(){
3 int edad[] = {23,15,46,78};
4 size_t nEle =
sizeof(edad)/sizeof(edad[0]);
5 printf("%zu", nEle);
6}
18. 12/09/17 Angel Vázquez-Patiño 18/26
Matrices
●
Conjunto de filas y columnas que contienen
elementos de un mismo tipo datos
(0, 0) (0, 1) (0, 2) (0, 3)
(1, 0) (1, 1) (1, 2) (1, 3)
(2, 0) (2, 1) (2, 2) (2, 3)
Columnas
Filas
19. 12/09/17 Angel Vázquez-Patiño 19/26
Matrices
Declaración
tipo nombre[#Filas][#Columnas];
●
Se debe usar un nombre nemotécnico
Referencia
●
Tanto para asignar un valor o para obtener un
elemento, se usa el índice de la fila y de la
columna:
arreglo[#Fila][#Columna]
21. 12/09/17 Angel Vázquez-Patiño 21/26
Matrices
Ejercicio
Dada una matriz de n filas y m columnas:
1)Encontrar los elementos de la diagonal principal
2)Multiplicar los elementos de la diagonal principal por un
escalar
3)Indicar si es nula (todos los elementos son ceros)
4)Indicar si es triangular superior (todos los elementos por
debajo de la diagonal principal son nulos) o inferior (son
nulos todos los elementos situados por encima de dicha
diagonal)
5)Indicar si es diagonal (si es a la vez triangular superior e
inferior, sólo tienen elementos en la diagonal principal)
22. 12/09/17 Angel Vázquez-Patiño 22/26
Matrices
Conocer el número de filas y columnas de una matriz
1#include<stdio.h>
2int main(){
3 int m[4][3];
4 int f=(sizeof(m)/sizeof(m[0]));
5 int c=(sizeof(m)/sizeof(m[0]
[0]))/f;
6 printf("F: %dt C: %d", f, c);}
24. 12/09/17 Angel Vázquez-Patiño 24/26
Conceptos y términos importantes
●
Conocer el número de elementos de un arreglo
unidimensional
●
Conocer el número de elementos de un arreglo
bidimensional
●
Recorrer arreglos
●
Asignación y obtención de datos de un arreglo
25. 12/09/17 Angel Vázquez-Patiño 25/26
Referencia
●
Gustedt, J., 2017. Modern C. France.
Revisar
●
Fernando Ureña Gómez, Ejercicios propuestos
y resueltos arreglos o arrays en pseudocódigo
http://goo.gl/8Jlck0
●
Vázquez-Patiño, A., 2017. Ejercicios Básicos
de Programación, 1st ed. Departamento de
Ciencias de la Computación, Universidad de
Cuenca, Cuenca, Ecuador.
https://goo.gl/X0UTxi