You are on page 1of 94

Programación

Clase 18. Datos Agrupados en C++: Arreglos
Prof. Gonzalo Müller
gmullerb@mail.com

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 utilizar como

Combinación de Parámetros.
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 2

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

Sólo 1 Variable

• Nota • Nota • Nota
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 7

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. El conjunto de datos será: notas
Variable 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. El conjunto de datos será: notas
Variable 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. El conjunto de datos será: notas
Variable 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. El conjunto de datos será: notas
Variable 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
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 23

Tamaño

Arreglo en C
En memoria:
char char char Variable letras char

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[1]
1º Elemento

letras[2] letras[3]

letras
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 29

Manejo de un arreglo
Ejemplo:
unsigned char notas[80]; // // asigna el segundo elemento notas[1] = 18; // lee el tercer elemento scanf("%hhu", &notas[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:
char letras[4]; letras[0] … letras[3]

Tamaño 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]; arreglo[0] = 2; arreglo[1] = 4; arreglo[2] = 6; arreglo[3] = 8; printf("%u", arreglo[0]); printf("%u", arreglo[1]); printf("%u", arreglo[2]); printf("%u", arreglo[3]);

Tamaño

Índice: Constante

Índice

Programación – Prof. Gonzalo Müller – Clase 18 – GM - 32

Manejo de un arreglo
Ejemplo:
unsigned char arreglo[4]; arreglo[0] = 2; arreglo[1] = 4; arreglo[2] = 6;

Tamaño

Í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) … arreglo[contador] … contador = contador + 1 …
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 37

Siguiente Iteración

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

… contador = 0

CANTIDAD

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.
≤ Tamaño. Variable Entera sin Signo. Define los elementos a ocupar del arreglo.

Algoritmo

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.
≤ Tamaño. Variable Entera sin Signo. Define los elementos a ocupar del arreglo.

Algoritmo

Bucle.
Permite desplazarse a través del arreglo.

Elementos claves del manejo dinámico

Contador.
< Cantidad. Indica el elemento del arreglo a acceder.
Programación – Prof. Gonzalo Müller – Clase 18 – GM - 52

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:

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

variable arreglo del tipo del parámetro1 y tamaño igual o menor

Parámetros Arreglo
Llamada:
… nombre(variable1, …)

Ejemplo:

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

variable arreglo del tipo del parámetro1 y tamaño igual o menor

Parámetros Arreglo
Llamada:
… nombre(variable1, …)

Ejemplo:

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

variable arreglo del tipo del parámetro1 y tamaño igual o menor

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 2 ó más

cantidad arreglo 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", &notas[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", &notas[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", &notas[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