46
PROGRAMACION ESTRUCTURADA: Tema 4. Arreglos Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 [email protected]

PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

PROGRAMACION ESTRUCTURADA:Tema 4. Arreglos

Presenta: David Martínez Torres

Universidad Tecnológica de la Mixteca

Instituto de Computación

Oficina No. 37

[email protected]

Page 2: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

Contenido

1. Arreglos unidimensionales

2. Arreglos bidimensionales

3. Arreglos multidimensionales

4. Arreglos como parámetros

Page 3: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

Introducción

Los arreglos son otra estructura de datos estática, pero con mayor beneficio que las variables simples.

La gran mayoría de soluciones por computadora, no será suficiente con el uso de variables simples, necesitará de una colección de datos del mismo tipo (arreglos) o diferentes tipos(estructuras), incluso archivos.

Page 4: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

Introducción

Un arreglo es una colección de variables del mismo tipo que son referidas por un nombre común.

Los arreglos ofrecen un conveniente significativo de agrupar varias variables relacionadas, en una o más dimensiones:

Page 5: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

Ejemplos :

int datos[10];float numerosReales[100];char apellido[40];int numeroPartes[] = {123, 326, 178, 1209};int puntuaciones[10] = {1, 3, 4, 5, 1, 3, 2, 3, 4, 4};

Un arreglo de este tipo es una lista de variables relacionadas. La forma general de declarar un arreglo de una dimensión es:

Tipo nombreVariable[tamaño];

Page 6: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

Un elemento individual de un arreglo se accede mediante un índice.

1. Arreglos unidimensionales

Un índice describe la posición de un elemento dentro del arreglo

El índice inicia en la posición 0

Page 7: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

La dirección mas baja corresponde al primer elementos y la más alta al último elemento.

Cualquier arreglo es mapeado a localidades de memoria contigua. Todos los elementos de memoria

residen uno junto al otro.

Page 8: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

El siguiente código representa el llenado del arreglo a

int a[8], j;for(j=0; j<5; j++)

a[j] = 2+2*j;

Page 9: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

En C no se puede asignar un arreglo a otro.

Lo siguiente es ilegal:

int a[10], b[10];a = b; // error, no se puede hacer una copia

En lugar, se tiene que hacer la asignación elemento por elemento:

int i;for(i=0; i<10; i++)

a[i] = b[i];

Page 10: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

Programa que hace uso de un arreglo de flotantes.

Page 11: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

4. Arreglos unidimensionales como parámetros

El paso de parámetros de arreglos completos a una función es un paso por referencia.

Page 12: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

4. Arreglos unidimensionales como parámetros

El paso de parámetros de arreglos completos a una función es un paso por referencia.

Page 13: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

Problema. Escriba una función ventasTotales que reciba en un arreglo con las ventas de productos. Encuentre y devuelva la suma de todas las ventas, el producto q más se vendió y el que menos se vendió.

Page 14: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

Para el caso de arreglos de cadenas, tomar en cuenta de considerar un elemento para almacenar el caracter de fin de cadena.

Ejemplos de declaraciones

char cad[]=“UTM”;

char apellido[20]=“Hernández”;

char nombre[5]=“David”;

char *calle=“Benito Juárez”;

¿Son correctas las declaraciones?

Page 15: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

Page 16: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

Page 17: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

Escriba las siguientes funciones:

• Reciba una cadena y regrese la misma cadena pero sin espacios en blanco

• Reciba una cadena, cuente y devuelva su tamaño• Reciba una cadena y devuelva la cadena invertida

en otra cadena.• Reciba las dos cadenas y devuelva 1 si es un

palíndromo y 0 si no lo es.

Page 18: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

void eliminaEspacios(char *);

int cuenta(char []);

void invertirCad2(char [], char [], int);

int palindromo(char [], char []);

int main(){

int tam, pal;

char cad[30], cadTemp[30];

printf("Programa que procesa cadenas\n");

printf("\nTeclea una cadena: ");

gets(cad);

eliminaEspacios(cad);

tam=cuenta(cad);

invertirCad2(cad,cadTemp,tam);

pal=palindromo(cad,cadTemp);

}

1. Arreglos unidimensionales

Page 19: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

int cuenta(char cad[]){

int i,cont=0;

for(i=0; cad[i]!='\0';i++)

cont++;

return cont;

}

void invertirCad2(char cad[], char cadTemp[], int tam){

int i=tam-1, j=0;

while(i>=0){

cadTemp[j]=cad[i];

i--;

j++;

}

cadTemp[j]='\0';

}

1. Arreglos unidimensionales

Page 20: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

int palindromo(char cad1[], char cad2[]){

int band=0,i=0;

while(cad1[i]!='\0' && cad1[i]==cad2[i])

i++;

if(cad1[i]=='\0')

band=1;

return band;

}

Page 21: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

Funciones más comunes para el tratamiento de cadenas. Se encuentran en la librería string.h

strcpy() : copia caracteres de una cadena a otra

strcat() : concatenación de cadenas

strlen() : longitud de cadenas

strcmp() : comparación de cadenas

Page 22: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

strcpy(str1,str2): copia str2 en str1

int main() {char cad[10];strcpy(cad, “Hola”);printf(“%s”, cad);return 0;}

Page 23: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

strlen(str): Retorna la longitud de la cadena, excluyendo el caracter de fin de cadena ‘\0’.

1. Arreglos unidimensionales

int main(){char cad[80];printf(“Introduce una cadena: ”);gets(cad);printf(“\nLa longitud de la cadena %s es: %d”,cad,strlen(cad));return 0;}

Page 24: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

strcat(s1, s2): agrega s2 al final de s1.

1. Arreglos unidimensionales

int main(){char s1[50], s2[30];strcpy(s1, “Universidad”);strcpy(s2, “ Tecnológica de la Mixteca”);strcat(s1, s2);printf(“\n%s”,s1);printf(“\n%s”,s2);return(0);}

Page 25: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

strcmp(str1, str2) compara las dos cadenas y retorna los resultados siguientes:

str1 = = str2 :0

str1 >str2 :número positivo

str1 <str2 :número negativo

Las cadenas son comparadas lexicográficamente (i.e., de acuerdo al orden del diccionario) :

a <aa <aaa <…<b <ba <bb <…<bz <bza

1. Arreglos unidimensionales

Page 26: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

1. Arreglos unidimensionales

Page 27: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

Todas las cadenas son terminadas con caracter de fin de cadena.

int main() {char cadena[80];int i;strcpy(cadena, “esta es una prueba”);printf(“\nCadena inicial: %s”,cadena);for(i=0; cadena[i]!=‘\x0’; i++)

cadena[i] = toupper(cadena[i]);printf(“\nCadena procesada: %s”,cadena);return(0); }

1. Arreglos unidimensionales

Page 28: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

2. Arreglos bidimensionales

Los arreglos de 2 dimensiones son muy útiles en la solución de problemas, sobre todo el uso de matrices.

Se declaran de la siguiente forma

tipoDato nombreVariable [dim1][dim2];

Para el caso de declarar una matriz

tipoDato nombreVariable [renglon][columna];

Page 29: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

2. Arreglos bidimensionales

Ejemplos de declaraciones de arreglos de 2 dimensiones

int matriz[2][3];

float materias[5][4];

int vector_coordenadas[4][3] = {{0, 0, 0},{1, 0, 1},

{1, 0, 5},{4, 7, 9}};

char names[][40] ={“Pedro”, “Maria”, “Luisa”, “Juan”, “Jorge"};

char *ciudades[5]={"Huajuapan","Oaxaca",

"Puebla","Mexico","Tehuacan"};

RenglonesColumnas

Page 30: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

2. Arreglos bidimensionales

Escriba una función que llene de manera automática la siguiente matriz.

Escriba una función que imprima la matriz anterior

Page 31: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento
Page 32: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento
Page 33: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

2. Arreglos bidimensionales

Escriba las siguientes funciones

Que reciba una matriz y la llene de manera aleatoria con calificaciones de 5 alumnos que cursan 5 materias.

Reciba la matriz anterior y una matriz con los nombres de los alumnos e imprima la mayor y menor calificación con el (los) alumno(s) respectivo(s).

Reciba la matriz y devuelva el promedio de la diagonal principal

Reciba 2 matrices de 3x3 y devuelva en una 3ª matriz del mismo tamaño, la suma de las dos matrices

Page 34: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento
Page 35: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento
Page 36: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

2. Arreglos bidimensionales

Page 37: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

3. Arreglos multidimensionales

Arreglos de tres dimensiones. Es una combinación del arreglo de una dimensión y de 2 dimensiones.

Page 38: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

3. Arreglos multidimensionales

La primera dimensión se podría esquematizar como el arreglo unidimensional, un conjunto de elementos; la segunda y tercera dimensión es un arreglo de dos dimensiones que constituye a cada elemento de la primera dimensión.

Page 39: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

3. Arreglos multidimensionales

Ejemplo. Se tiene 2 salas de computo(una dimensión), cada una con 3 filas (renglones) y 2 computadoras por fila.

arreglo3d[2][3][2]

Page 40: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento
Page 41: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento
Page 42: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

3. Arreglos multidimensionales

Otro ejemplo del uso de arreglos de varias dimensiones.

Un estacionamiento desea generar estadísticas de los coches que se han registrado:

Coches que han entrado al día.

Coches que han entrado en varios días

Coches que han entrado en varios meses, etc.

Page 43: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

3. Arreglos multidimensionales

Se puede realizar la representación con arreglos de la siguiente manera.

Page 44: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

4. Arreglos como parámetros

Muy utilizado en la solución de problemas.

Recordar que los arreglos como parámetros son paso por referencia, es decir, se pasa la dirección del primer elemento.

Así mismo, facilita la actualización del arreglo de la función que invoca.

Se puede recibir en formato arreglo o formato apuntador.

void invertirCad2(char [], char [], int);

void eliminaEspacios(char *);

Page 45: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento
Page 46: PROGRAMACION ESTRUCTURADA: Tema 4. Arreglosdtorres/cursos/programacionestructu... · 3. Arreglos multidimensionales Otro ejemplo del uso de arreglos de varias dimensiones. Un estacionamiento

5. Referencias

1. Joyanes Aguilar, Luis (1996) Fundamentos de programación, Algoritmos y Estructura de datos.McGraw-Hill, México.

2. Deitel & Deitel (2001) C++ Como programar en C/C++. Prentice Hall

3. Kerrighan y Ritchie “El lenguaje de programación”. Prentice Hall

4. Gottfried, Byron (1999) “Programación en C” McGrawHill, México.

5. Levine Gutierrez, Guillermo (1990) Introducción a la computación y a la programación estructurada. McGraw-Hill, México.

6. Levine Gutierrez, Guillermo (1990) Introducción a la computación y a la programación estructurada. McGraw-Hill, México.