Clase Programación 18

Share Embed Donate


Short Description

Descripción: Clase 18 de Programación, Prof. Gonzalo Müller [email protected], Facultad de Ingeniería, UCV...

Description

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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF