Descripción: Clase 18 de Programación, Prof. Gonzalo Müller
Programación
Clase 18. Datos Agrupados en C++: Arreglos Prof. Gonzalo Müller
[email protected]
Facultad de Ingeniería Universidad Central de Venezuela
Clase Anterior
Acoplamiento de datos estándar: Parámetros de entrada → Parámetro por valor. Parámetros de retorno o salida → Parámetro por referencia.
Obtener más de un resultado.
Operador referencia &.
Llamada: SIEMPRE se debe argumento una VARIABLE
Combinación de Parámetros. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 2
utilizar
como
Clase Anterior
Acoplamiento de datos estándar: Subrutinas
No se necesita resultado.
Se necesitan 2 ó más resultados.
Funciones
Se retorna 1 resultado.
Representación de Algoritmos Modulares: Parámetros de Retorno: &.
Tabla de Módulos: Parámetros → Parámetros de Entrada y Parámetros de Retorno
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 3
Datos Agrupados Que sucede si se necesita trabajar con un conjunto de datos utilizando sólo 1 variable.
Notas de un Curso
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 4
Datos Agrupados Que sucede si se necesita trabajar con un conjunto de datos utilizando sólo 1 variable. • Nota • Nota • Nota Notas de un Curso
• Nota • Nota • Nota Programación – Prof. Gonzalo Müller – Clase 18 – GM - 5
Datos Agrupados Que sucede si se necesita trabajar con un conjunto de datos utilizando sólo 1 variable. • Nota • Nota • Nota Notas de un Curso
• Nota • Nota • Nota Programación – Prof. Gonzalo Müller – Clase 18 – GM - 6
Datos Agrupados Que sucede si se necesita trabajar con un conjunto de datos utilizando sólo 1 variable. • Nota • Nota • Nota Notas de un Curso
• Nota • Nota • Nota Programación – Prof. Gonzalo Müller – Clase 18 – GM - 7
Sólo 1 Variable
Datos Agrupados Que sucede si se necesita trabajar con un conjunto de datos del mismo tipo utilizando una misma variable. nota 2 nota 1
… nota N
nota 3
Variable
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 8
Arreglo Conjunto de datos del mismo tipo.
entero sin signo 1B
entero sin signo 1B
… entero sin signo 1B
entero sin signo 1B
Variable
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 9
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto.
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 10
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto. Ejemplo: Se requiere almacenar las notas de los estudiantes de un curso cualquiera.
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 11
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto. Ejemplo: Se requiere almacenar las notas de los estudiantes de un curso cualquiera. El conjunto de datos será: notas
nombre
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 12
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto. Ejemplo: Se requiere almacenar las notas de los estudiantes de un curso cualquiera. El conjunto de datos será: notas
entero sin signo de 1 byte
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 13
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto. Ejemplo: Se requiere almacenar las notas de los estudiantes de un curso cualquiera. El conjunto de datos será: notas
80 elementos
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 14
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto. Ejemplo: Se requiere almacenar las notas de los estudiantes de un curso cualquiera. Variable
El conjunto de datos será: notas
notas: entero sin signo 1 byte [80] … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 15
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto. Ejemplo: Se requiere almacenar las notas de los estudiantes de un curso cualquiera. Variable
El conjunto de datos será: notas
notas: entero sin signo 1 byte [80] … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 16
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto. Ejemplo: Se requiere almacenar las notas de los estudiantes de un curso cualquiera. Variable
El conjunto de datos será: notas
notas: entero sin signo 1 byte [80] … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 17
Arreglo
Un arreglo esta definido: Nombre. Tipo: tipo de variable agrupada. Tamaño: cantidad de elementos del conjunto. Ejemplo: Se requiere almacenar las notas de los estudiantes de un curso cualquiera. Variable
El conjunto de datos será: notas
notas: entero sin signo 1 byte [80] … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 18
Arreglo en C
Un arreglo esta definido: Tamaño: cantidad de elementos del conjunto. Tipo: tipo de variable agrupada.
Ambos le permiten establecer al compilador la cantidad de memoria a reservar para el arreglo: Tamaño * # de localidades ocupadas por Tipo Programación – Prof. Gonzalo Müller – Clase 18 – GM - 19
Arreglo en C Ejemplo: Cuanto ocuparán en memoria los siguientes arreglos: 40 elementos tipo char: 40 * 1 Byte = 40 Byte 20 elementos tipo unsigned short: 20 * 2 Byte = 40 Byte 10 elementos tipo float: 10 * 4 Byte = 40 Byte
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 20
Arreglo en C
Declaración de un arreglo: tipo identificador[TAMAÑO] tipo identificador1[TAMAÑO1], identificador2[TAMAÑO2],… (TAMAÑO: Siempre es una constante)
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 21
Arreglo en C
Declaración de un arreglo: tipo identificador[TAMAÑO] tipo identificador1[TAMAÑO1], identificador2[TAMAÑO2],… (TAMAÑO: Siempre es una constante)
Ejemplo: // Arreglo de 80 notas unsigned char notas[80]; Tipo
Tamaño
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 22
Arreglo en C
Declaración de un arreglo: tipo identificador[TAMAÑO] tipo identificador1[TAMAÑO1], identificador2[TAMAÑO2],… (TAMAÑO: Siempre es una constante)
Ejemplo: // Arreglo de 80 notas unsigned char notas[80]; Tipo char letras[4]; Tipo
Tamaño
Tamaño Programación – Prof. Gonzalo Müller – Clase 18 – GM - 23
Arreglo en C En memoria: char char
char char
Variable letras
char
char
char
char
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 24
Manejo de un arreglo
La forma de acceder un elemento de un arreglo es a través de su posición. 1º Elemento
4º Elemento: Posición Relativa 3 3º Elemento: Posición Relativa 2 2º Elemento: Posición Relativa 1 1º Elemento: Posición Relativa 0 Programación – Prof. Gonzalo Müller – Clase 18 – GM - 25
Manejo de un arreglo
Índice: Constituye la posición relativa de un elemento. Ubica un elemento dentro del arreglo. Debe ser:
Una variable o constante tipo entero sin signo.
Una expresión que se evalúe a un valor entero sin signo.
Su forma de uso: variable[índice] Variable tipo arreglo
Posición del elemento
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 26
Manejo de un arreglo Arreglo arreglo[índice] Variable, Constante o Expresión
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 27
Manejo de un arreglo Arreglo arreglo[índice]
Elemento índice de arreglo
Variable, Constante o Expresión
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 28
Manejo de un arreglo Arreglo arreglo[índice]
Elemento índice de arreglo
Variable, Constante o Expresión letras[0]
letras[2] letras[1]
1º Elemento
letras Programación – Prof. Gonzalo Müller – Clase 18 – GM - 29
letras[3]
Manejo de un arreglo Ejemplo: unsigned char notas[80]; // // asigna el segundo elemento notas[1] = 18; // lee el tercer elemento scanf("%hhu", ¬as[2]); // escribe el primer elemento printf("%u", notas[0]);
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 30
Manejo de un arreglo Rango del índice: Declaración: tipo identificador[TAMAÑO] Manejo: identificador[índice] índice ∈ [0, TAMAÑO) Ejemplo:
Tamaño
char letras[4]; letras[0]
…
letras[3]
Límite Superior
Límite Inferior Programación – Prof. Gonzalo Müller – Clase 18 – GM - 31
Manejo de un arreglo Ejemplo: unsigned char arreglo[4];
Tamaño
arreglo[0] = 2; arreglo[1] = 4; arreglo[2] = 6;
Índice: Constante
arreglo[3] = 8; printf("%u", arreglo[0]); printf("%u", arreglo[1]); printf("%u", arreglo[2]); printf("%u", arreglo[3]);
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 32
Índice
Manejo de un arreglo Ejemplo: unsigned char arreglo[4];
Tamaño
arreglo[0] = 2; arreglo[1] = 4; arreglo[2] = 6;
Índice: Constante
printf("%u", arreglo[0]); printf("%u", arreglo[1]); printf("%u", arreglo[2]);
Índice
No es necesario ocupar todo el arreglo
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 33
Manejo de un arreglo Bucle: permitirá desplazarse a través del arreglo.
Requerirá de un contador para el índice.
Antes del bucle el contador debe ser iniciado en 0. La condición para mantenerse en el bucle debe ser contador < cantidad
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 34
Manejo de un arreglo Bucle clásico … contador = 0 Mientras (contador < cantidad) … arreglo[contador] … contador = contador + 1 … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 35
Manejo de un arreglo
… contador = 0
1º Elemento
Mientras (contador < cantidad) …
1º Iteración
arreglo[contador] … contador = contador + 1 … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 36
Manejo de un arreglo
… contador = 0 Mientras (contador < cantidad) …
Siguiente Iteración
arreglo[contador] … contador = contador + 1
… Programación – Prof. Gonzalo Müller – Clase 18 – GM - 37
Siguiente Elemento
Manejo de un arreglo Ejemplo: unsigned char arreglo[4]; unsigned char k; arreglo[0] = 2; Tamaño arreglo[1] = 4; arreglo[2] = 6; arreglo[3] = 8; k = 0; while(k < 4) Cantidad { printf("%u", arreglo[k]); k = k + 1; } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 38
Índice: Variable
Manejo de un arreglo Ejemplo: unsigned char arreglo[4]; unsigned char k; arreglo[0] = 2; Tamaño arreglo[1] = 4; arreglo[2] = 6; k = 0; while(k < 3) Cantidad { printf("%u", arreglo[k]); k = k + 1; }
Índice: Variable
No es necesario ocupar todo el arreglo Programación – Prof. Gonzalo Müller – Clase 18 – GM - 39
Manejo de un arreglo Ejemplo: unsigned char arreglo[4]; unsigned char k; arreglo[0] = 2; Tamaño arreglo[1] = 4; arreglo[2] = 6; arreglo[3] = 8; k = 4; Cantidad while(k > 0) { k = k - 1; printf("%u", arreglo[k]); } Bucle no clásico Programación – Prof. Gonzalo Müller – Clase 18 – GM - 40
Índice: Variable
Manejo de un arreglo Ejemplo: unsigned char arreglo[4]; unsigned char k; arreglo[0] = 2; arreglo[1] = 4; arreglo[2] = 6; Manejo Estático arreglo[3] = 8; k = 0; while(k < 4) { printf("%u", arreglo[k]); k = k + 1; } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 41
Manejo Dinámico
Arreglos Ejemplo: Diseñar y construir un programa estructurado en C que lea un conjunto de N notas y los muestre en la salida en forma inversa a como fueron ingresados.
Fase 1: Diseño y Análisis: DES DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa estructurado en C. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 42
Ejercicio
Construir un programa estructurado en C para: Leer un conjunto de temperaturas y escribir en la salida en forma inversa. Fase 1: Diseño y Análisis: DES DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa estructurado C.
Evaluación: Manejo Básico Programación – Prof. Gonzalo Müller – Clase 18 – GM - 43
Manejo de un Arreglo
… contador = 0 Mientras (contador < cantidad) … arreglo[contador] … contador = contador + 1 … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 44
Manejo de un Arreglo
… contador = 0 Mientras (contador < cantidad) … CONTADOR
arreglo[contador] … contador = contador + 1 … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 45
Manejo de un Arreglo
CANTIDAD
… contador = 0
Mientras (contador < cantidad) … arreglo[contador] … contador = contador + 1 … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 46
Manejo de un Arreglo
… contador = 0 Mientras (contador < cantidad) … arreglo[contador] … contador = contador + 1 … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 47
BUCLE
Manejo de un Arreglo
… contador = 0 Mientras (contador < cantidad) … arreglo[contador] … contador = contador + 1 … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 48
ELEMENTO DEL ARREGLO
Manejo de un Arreglo
Elementos indispensables en el manejo de un arreglo: Tipo. Tamaño.
Constante Entera sin Signo. Debe ser sobredimensionado.
Cantidad.
≤ Tamaño. Variable Entera sin Signo. Define los elementos a ocupar del arreglo.
Bucle.
Permite desplazarse a través del arreglo.
Contador.
< Cantidad. Indica el elemento del arreglo a acceder. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 49
Manejo de un Arreglo
Elementos indispensables en el manejo de un arreglo: Análisis y Diseño: Lista de Variables Tipo. Codificación: Declaración Tamaño.
Constante Entera sin Signo. Debe ser sobredimensionado.
Cantidad.
≤ Tamaño. Variable Entera sin Signo. Define los elementos a ocupar del arreglo.
Bucle.
Permite desplazarse a través del arreglo.
Contador.
< Cantidad. Indica el elemento del arreglo a acceder. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 50
Manejo de un Arreglo
Elementos indispensables en el manejo de un arreglo: Tipo. Tamaño.
Constante Entera sin Signo. Debe ser sobredimensionado.
Cantidad.
Algoritmo
≤ Tamaño. Variable Entera sin Signo. Define los elementos a ocupar del arreglo.
Bucle.
Permite desplazarse a través del arreglo.
Contador.
< Cantidad. Indica el elemento del arreglo a acceder. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 51
Manejo de un Arreglo
Elementos indispensables en el manejo de un arreglo: Tipo. Tamaño.
Constante Entera sin Signo. Debe ser sobredimensionado.
Cantidad.
Algoritmo
≤ Tamaño. Variable Entera sin Signo. Define los elementos a ocupar del arreglo.
Bucle.
Permite desplazarse a través del arreglo.
Contador.
< Cantidad. Indica el elemento del arreglo a acceder. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 52
Elementos claves del manejo dinámico
Manejo de un Arreglo
Siempre que se trabaje con arreglos será necesarios utilizar bucles y contadores para poder desplazarse a través del mismo
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 53
Manejo de un Arreglo
Asignación: El operador asignación = NO realiza la asignación de todos los valores del arreglo.
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 54
Manejo de un Arreglo
Asignación: El operador asignación = NO realiza la asignación de todos los valores del arreglo. NO SE PUEDE ASIGNAR UN ARREGLO A OTRO CON EL OPERADOR ASIGNACIÓN
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 55
Manejo de un Arreglo
Asignación: El operador asignación = NO realiza la asignación de todos los valores del arreglo. NO SE PUEDE ASIGNAR UN ARREGLO A OTRO CON EL OPERADOR ASIGNACIÓN Ejemplo: char letras1[4], letras2[4]; … letras2 = letras1; NO COPIA EL ARREGLO letras1 a letras2
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 56
Manejo de un Arreglo
Asignación: El operador asignación = NO realiza la asignación de todos los valores del arreglo. NO SE PUEDE ASIGNAR UN ARREGLO A OTRO CON EL OPERADOR ASIGNACIÓN Ejemplo: char letras1[4], letras2[4]; …
letras2 = letras1;
NO COPIA EL ARREGLO letras1 a letras2
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 57
Manejo de un Arreglo
Asignación: El operador asignación = NO realiza la asignación de todos los valores del arreglo. LA FORMA CORRECTA ES COPIAR ELEMENTO A ELEMENTO Ejemplo: char letras1[4], letras2[4]
… k = 0; while(k < cantidad) { letras2[k] = letras1[k]; k = k + 1; }
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 58
Ejercicio
Construir un programa estructurado en C para: Leer un conjunto de temperaturas, crear una copia y escribir en la salida en forma inversa. Fase 1: Diseño y Análisis: DES DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa estructurado C.
Evaluación: Copia Programación – Prof. Gonzalo Müller – Clase 18 – GM - 59
Arreglos en Módulos
Arreglos como retorno Arreglos como parámetros
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 60
Arreglos en Módulos
Arreglos como retorno NO SE PUEDE RETORNA UN ARREGLO
Arreglos como parámetros
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 61
Arreglos en Módulos
Arreglos como retorno NO SE PUEDE RETORNA UN ARREGLO
Arreglos como parámetros
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 62
Arreglos en Módulos
Arreglos como retorno NO SE PUEDE RETORNA UN ARREGLO
Arreglos como parámetros cantidad arreglo Programación – Prof. Gonzalo Müller – Clase 18 – GM - 63
Parámetros Arreglo
Arreglos como parámetros Se debe indicar el tipo y el tamaño del arreglo. Declaración y Definición …nombre(unsigned tipo cantidad,
tipo parámetro1[TAMAÑO1], …)
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 64
Parámetros Arreglo Ejemplo: void escribeNotas(unsigned char cantidad, unsigned char notas[80]) { unsigned char k; // k = 0; while(k < cantidad) { printf("%u\n", notas[k]); k = k + 1; } } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 65
Parámetros Arreglo Llamada: … nombre(variable1, …) variable arreglo del tipo del parámetro1 y tamaño igual o menor
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 66
Parámetros Arreglo Llamada: … nombre(variable1, …)
Ejemplo:
variable arreglo del tipo del parámetro1 y tamaño igual o menor
void escribeNotas(unsigned char cantidad, unsigned char notas[80]) … main() { unsigned char cantidadDef; unsigned char notasDef[80]; // Sólo el nombre del arreglo … escribeNotas(cantidadDef, notasDef); } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 67
Parámetros Arreglo Llamada: … nombre(variable1, …)
Ejemplo:
variable arreglo del tipo del parámetro1 y tamaño igual o menor
void escribeNotas(unsigned char cantidad, unsigned char notas[80]) … Mismo Mismo main() Tipo Tamaño { unsigned char cantidadDef; unsigned char notasDef[80]; // … escribeNotas(cantidadDef, notasDef); } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 68
Parámetros Arreglo Llamada: … nombre(variable1, …)
Ejemplo:
variable arreglo del tipo del parámetro1 y tamaño igual o menor
void escribeNotas(unsigned char cantidad, unsigned char notas[80]) … Mismo Tamaño main() Tipo Menor { unsigned char cantidadDef; unsigned char notasDef[70]; // … escribeNotas(cantidadDef, notasDef); } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 69
Parámetros Arreglo Ejemplo: Diseñar y construir un programa modular con acoplamiento de datos estándar en C que lea un conjunto de N notas y los muestre en la salida en forma inversa a como fueron ingresados.
Fase 1: Diseño y Análisis: DES y DTD DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 70
Ejercicio Construir un programa modular con acoplamiento de datos estándar en C para: Leer un conjunto de temperaturas y escribir en la salida el promedio de las temperaturas. Fase 1: Diseño y Análisis: DES y DTD DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C. Evaluación: Manejo Modular Programación – Prof. Gonzalo Müller – Clase 18 – GM - 71
Parámetros Arreglo Formas en que podemos utilizar los módulos que manejan arreglos: # Retornos Usar 0 cantidad arreglo
1
cantidad arreglo
2 ó más
cantidad arreglo
2 ó más
cantidad arreglo cantidad arreglo
Subrutina con parámetros de entrada no son (Uso de arreglos) modificados, Función ni creados (Uso de arreglos) Subrutina con parámetros de retorno (Creación de arreglos) Subrutina con parámetros de retorno (Modificación de arreglos)
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 72
Parámetros Arreglo
Los parámetros arreglo SIEMPRE son parámetros de entrada y retorno y no utiliza el operador &
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 73
Parámetros Arreglo Ejemplo: void leeNotas(unsigned char &cantidad, unsigned char notas[80]) { unsigned char k; // printf("Cantidad de Números:"); scanf("%hhu", &cantidad); k = 0; while(k < cantidad) { scanf("%hhu", ¬as[k]); k = k + 1; } } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 74
Parámetros Arreglo Ejemplo: void leeNotas(unsigned char &cantidad, unsigned char notas[80]) { Parámetro de Salida unsigned char k; // printf("Cantidad de Números:"); scanf("%hhu", &cantidad); k = 0; while(k < cantidad) { scanf("%hhu", ¬as[k]); k = k + 1; } } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 75
Parámetros Arreglo Ejemplo: void leeNotas(unsigned char &cantidad, unsigned char notas[80]) { No utiliza operador & unsigned char k; // printf("Cantidad de Números:"); scanf("%hhu", &cantidad); k = 0; while(k < cantidad) { scanf("%hhu", ¬as[k]); k = k + 1; } } Programación – Prof. Gonzalo Müller – Clase 18 – GM - 76
Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: Leer un conjunto de temperaturas y escribir en la salida el promedio de las temperaturas. Fase 1: Diseño y Análisis: DES y DTD DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Evaluación: Módulo Lectura Programación – Prof. Gonzalo Müller – Clase 18 – GM - 77
Constantes Simbólicas Son identificadores que tiene un valor constante a lo largo de todo el programa. La directiva #define del preprocesador permite definir una constante simbólica: #define IDENTIFICADOR valor Ejemplo: #define PI 3.1415 Para la notación las constantes simbólicas se van a definir siempre en mayúsculas Programación – Prof. Gonzalo Müller – Clase 18 – GM - 78
Constantes Simbólicas Ejemplo: f(x) = β cos (x + π)
↓ #define PI 3.1415 … double funcionA(double x, double B) { return B*cos(x + PI); };
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 79
Constantes Simbólicas
// Encabezado // Directivas de preprocesador // Definiciones de estructuras // Declaraciones de módulos main() { // Declaraciones de variables … Programación – Prof. Gonzalo Müller – Clase 18 – GM - 80
Constantes Simbólicas … // Librerías //
… // Constantes //
… // Definiciones de estructuras //
… // Declaraciones de módulos //
… main() {
… Programación – Prof. Gonzalo Müller – Clase 18 – GM - 81
Constantes Simbólicas
Recomendación: Definir una constante simbólica para establecer el tamaño del arreglo es sumamente útil, ya que permite realizar un cambio rápidamente. Ejemplo: unsigned char arreglo[4]; unsigned char cantidad; … Al menos es necesario do cambiar aquí … while(cantidad > 4)
Solo es necesario #define MAX 4 cambiar aquí … unsigned char arreglo[MAX]; unsigned char k; … do … while(cantidad > MAX)
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 82
Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: Leer N números e intercambiar el 1º con el 2º, 3º con el 4º y así sucesivamente y presente en pantalla el resultado (N debe ser par). Fase 1: Diseño y Análisis: DES, DTD y UML DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 83
Arreglos
Es otro artefacto Muy Poderoso
Manejo Dinámico de datos Almacena una cantidad de datos cuyo número se desconoce al momento de construir el programa.
Esto permite el acceso a estos reiteradas veces, de forma aleatoria o en un orden distinto al como fueron almacenados. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 84
Arreglos
Cantidad que tiene un límite establecido por el programador.
Reduce el tamaño del código.
Conjunto de datos del mismo tipo bajo un mismo nombre. Uso de bucles.
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 85
Arreglos
Cantidad que tiene un límite establecido por el programador.
Reduce el tamaño del código.
Conjunto de datos del mismo tipo bajo un mismo nombre. Uso de bucles. nota1 nota2 nota3 … notaN Programación – Prof. Gonzalo Müller – Clase 18 – GM - 86
notas(100)
Arreglos
Cantidad que tiene un límite establecido por el programador.
Reduce el tamaño del código.
Conjunto de datos del mismo tipo bajo un mismo nombre. Uso de bucles. nota1=… nota2=… nota3=… … notaN=… Programación – Prof. Gonzalo Müller – Clase 18 – GM - 87
while(k … notas(k) = … k=…
Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: a) Leer N números Xk y presentar en pantalla la siguiente sucesión: {|Xk – Xk – 2|}, k desde N a 3 Fase 1: Diseño y Análisis: DES, DTD y UML DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 88
Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: b) Leer un conjunto de N datos enteros sin signo, leer un número A y determinar el índice si se encuentra en el conjunto. Fase 1: Diseño y Análisis: DES, DTD y UML DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 89
Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: c) Leer N vectores de diferentes tamaños y escribir en pantalla en orden inverso. Fase 1: Diseño y Análisis: DES, DTD y UML DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++.
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 90
Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: d) Leer un conjunto de N datos enteros sin signo y escriba a la salida el conjunto de datos ordenados de mayor a menor. Fase 1: Diseño y Análisis: DES, DTD y UML DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 91
Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: e) Simular un sistema de partículas las cuales pueden desplazarse horizontalmente. Fase 1: Diseño y Análisis: DES, DTD y UML DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++.
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 92
Resumen
Datos Agrupados del mismo tipo → Arreglos Un arreglo esta definido: Nombre. Tipo. Tamaño. Arreglos en C: Declaración: tipo nombre[TAMAÑO] Manejo: nombre[índice]
índice ∈ [0, TAMAÑO) Programación – Prof. Gonzalo Müller – Clase 18 – GM - 93
Resumen
Manejo de un arreglo: Tamaño Cantidad ≤ Tamaño. Bucle. Contador < Cantidad
Asignación = NO realiza la asignación de todos los valores del arreglo. Arreglos como retorno: NO. Arreglos como parámetros: entrada y retorno. Constantes Simbólicas. Programación – Prof. Gonzalo Müller – Clase 18 – GM - 94