Clase Programación 19

Share Embed Donate


Short Description

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

Description

Programación

Clase 19. Arreglos Bidimensionales Prof. Gonzalo Müller [email protected]

Facultad de Ingeniería Universidad Central de Venezuela

Clase Anterior

 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, cantidad) Programación – Prof. Gonzalo Müller – Clase 19 – GM - 2

Clase Anterior

 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 19 – GM - 3

Arreglos Unidimensionales Conocidos también como vectores.

Declaración: tipo identificador[TAMAÑO] Constante

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 4

Arreglos Bidimensionales Conocidos también como matrices.

Declaración: tipo identificador[FILAS] [COLUMNAS] Constante

Constante

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 5

Arreglos Bidimensionales Ejemplo: // Matriz de 2 Filas y 9 Columnas float matriz[2][9];

// Matriz de 3 Filas y 3 Columnas float matrizCuadrada[3][3];

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 6

Arreglos Bidimensionales

 Manejo:  Índices: Establecen la posición de un elemento en la matriz. 

Puede ser una variable, constante o expresión. 



Debe ser tipo entero sin signo.

Su forma de uso:

Índices

identificador[fila] [columna]

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 7

Arreglos Bidimensionales Ejemplo: matriz[0][1]

matriz[1][5] Programación – Prof. Gonzalo Müller – Clase 19 – GM - 8

Arreglos Bidimensionales Ejemplo: 1º Fila matriz[0][…]

2º Fila matriz[1][…] 1º Columna matriz[…][0]

9º Columna matriz[…][8]

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 9

Arreglos Bidimensionales  Tamaño real de la Matriz: filas ≤ FILAS columnas ≤ COLUMNAS

Matriz Real matriz[3][5] Matriz Definida matriz[4][9] Programación – Prof. Gonzalo Müller – Clase 19 – GM - 10

Arreglos Bidimensionales  Rango de los índices: fila ∈ [0, filas) columna ∈ [0, columnas) Límites Inferiores matriz[0][0]

matriz[0][4]

matriz[2][0]

matriz[2][4] Límites Superiores Programación – Prof. Gonzalo Müller – Clase 19 – GM - 11

Arreglos Bidimensionales  Bucles: Se necesitaran al menos 2 bucles para manejar un arreglo bidimensional, los cuales están anidados: 1º Bucle permitirá desplazarse de una fila a otra. 

Se utilizará un contador como índice fila para establecer en que fila se encuentra.

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 12

Arreglos Bidimensionales 

Antes del bucle el contador debe ser iniciado en 0. fila = 0



La condición para mantenerse en el bucle debe ser: fila < filas

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 13

Arreglos Bidimensionales

… fila = 0

1º Fila

Mientras (fila < filas) … … fila = fila + 1 …

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 14

Siguiente Fila

Arreglos Bidimensionales 2º Bucle permitirá desplazarse de una columna a otra. 

Se utilizará un contador como índice columna para establecer en que columna se encuentra.

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 15

Arreglos Bidimensionales 

Antes del bucle el contador debe ser iniciado en 0. columna = 0



La condición para mantenerse en el bucle debe ser: columna < columnas

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 16

Arreglos Bidimensionales

… columna = 0

1º Columna

Mientras (columna < columnas) … … columna = columna + 1 …

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 17

Siguiente Columna

Arreglos Bidimensionales Bucles clásico … fila = 0 Mientras (fila < filas) columna = 0 Mientras (columna < columnas) Operaciones con elemento matriz[fila] [columna]

… … columna = columna + 1 fila = fila + 1 … Programación – Prof. Gonzalo Müller – Clase 19 – GM - 18

Arreglos Bidimensionales columna = 0

columna = columna + 1

fila = 0 fila = 0

columna = 0 fila = fila + 1

columna = columna + 1

Bucles clásico Programación – Prof. Gonzalo Müller – Clase 19 – GM - 19



Arreglos Bidimensionales Ejemplo: unsigned short f, c; f = 0; while(f < filas) { c = 0; while(c < columnas) { printf("\nMatriz(%u, matriz[f][c]); c = c + 1; } f = f + 1; }

%u):

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 20

%f",

f,

c,

Arreglos Bidimensionales Ejemplo: unsigned short f, c; f = 0; while(f < filas) { c = 0; while(c < columnas) { printf("\nMatriz(%u, matriz[f][c]); c = c + 1; } f = f + 1; }

%u):

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 21

%f",

f,

c,

Arreglos Bidimensionales Ejemplo: unsigned short f, c; f = 0; while(f < filas) { c = 0; while(c < columnas) { printf("\nMatriz(%u, matriz[f][c]); c = c + 1; } f = f + 1; }

%u):

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 22

%f",

f,

c,

Arreglos Bidimensionales Ejemplo: unsigned short f, c; f = 0; while(f < filas) { c = 0; while(c < columnas) { printf("\nMatriz(%u, matriz[f][c]); c = c + 1; } f = f + 1; }

%u):

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 23

%f",

f,

c,

Arreglos Bidimensionales Ejemplo: Construir un programa estructurado en C para leer y escribir una matriz de tamaño dado por el usuario.

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 19 – GM - 24

Ejercicio Construir un programa estructurado en C para: Leer una matriz y mostrar la misma y la transpuesta en la salida. 1,1

1,2

1,3

2,1

2,2

2,3

3,1

3,2

3,3

Fase 1: Diseño y Análisis: DES DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa estructurado C. Programación – Prof. Gonzalo Müller – Clase 19 – GM - 25

Arreglos Bidimensionales 

Elementos indispensables en el manejo de una matriz:  Tipo.  Tamaños: FILAS y COLUMNAS.  

Constantes Enteras sin Signo. Debe ser sobredimesionada.

 Cantidades: filas y columnas.   

filas ≤ FILAS, columnas ≤ COLUMNAS. Variables Enteras sin Signo. Definen el tamaño de la matriz a ocupar.

 Bucles. 

2 bucles que permiten desplazarse a través de la matriz.

 Contadores: fila y columna.  

fila < filas, columna < columnas. Indica el elemento de la matriz a acceder. Programación – Prof. Gonzalo Müller – Clase 19 – GM - 26

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], …) … nombre(unsigned tipo &cantidad, tipo parámetro1[TAMAÑO1], …)

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 27

parámetro de entrada parámetro de retorno

Arreglos como parámetros Ejemplo:

Uso de arreglo como parámetro de salida

void leeNotas(…, double notas[20]) { scanf(“%lf”, ¬as[0]); scanf(“%lf”, ¬as[1]); … Uso de arreglo como } parámetro de entrada double mediaNotas(…, double notas[20]) { double media = 0; media = notas[0] + notas[1]; … } Programación – Prof. Gonzalo Müller – Clase 19 – GM - 28

Arreglos como parámetros  Llamada: Como se trata de un parámetro de salida SIEMPRE se debe utilizar como argumento una variable. … nombre(variable1, …)

Ejemplo:

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

void mediaNotas(…, double notas[20]); main() { double notas[20]; Argumento Variable … leeNotas(cantidad, notas); Argumento Variable … mediaNotas(cantidad, notas); } Programación – Prof. Gonzalo Müller – Clase 19 – GM - 29

Arreglos Bidimensional como parámetros  Declaración y Definición … nombre(unsigned tipo cantidadFilas, unsigned tipo cantidadColumnas, tipo parámetro1[FILAS] [COLUMNAS], …) parámetro de entrada

… nombre(unsigned tipo &cantidadFilas, unsigned tipo &cantidadColumnas, tipo parámetro1[FILAS] [COLUMNAS], …) parámetro de retorno

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 30

Arreglos Bidimensional como parámetros  Llamada: … nombre(…,variable1, …) Variable arreglo de mismas Filas y Columnas

Es necesario utilizar 3 parámetros: cantidad de filas, cantidad de columnas y matriz.

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 31

Arreglos Bidimensional como parámetros Ejemplo: … void leerMatriz(unsigned short &filas, unsigned short &columnas, float matriz[50][50]); … main() { Mismo Tamaño unsigned short filas, columnas; float mat[50][50]; // leerMatriz(filas, columnas, mat); escribirMatriz(filas, columnas, mat); } Programación – Prof. Gonzalo Müller – Clase 19 – GM - 32

Arreglos Bidimensional como parámetros Ejemplo: Diseñar y construir un programa modular en C++ acoplamiento de datos estándar para leer y escribir una matriz de tamaño dado por el usuario.

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 19 – GM - 33

Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: a) Transponer una matriz. b) Determinar si dos matrices son iguales o no. c) Realizar el producto de dos matrices. d) Determinar si una matriz es la identidad. 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 19 – GM - 34

Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: e) Determinar si una matriz es simétrica. f) Determinar la norma Frobenius de una matriz. g) Intercambiar dos columnas de la matriz. 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 19 – GM - 35

Ejercicio Construir un programa modular con acoplamiento de datos estándar en C++ para: h) Desplazar una malla de N vértices en una dirección dada. 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 19 – GM - 36

Resumen

 Arreglo unidimensional: vectores.  Arreglo bidimensionales: matrices.  Declaración: tipo identificador[FILAS] [COLUMNAS]  Manejo: identificador[fila] [columna] 1º Bucle permitirá desplazarse de una fila a otra. 2º Bucle permitirá desplazarse de una columna a otra.

 Matrices como parámetros: 3 parámetros. 

Mismo Tamaño. Programación – Prof. Gonzalo Müller – Clase 19 – GM - 37

Lectura Extra

Arreglo Multidimensionales Conocidos también como Arreglos N-dimensionales

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 38

Arreglos Multidimensionales

 Declaración: tipo nombre[TAMAÑO1] [TAMAÑO2]… [TAMAÑON] Ejemplo: // Arreglo de 4 dimensiones // de 2 x 9 x 5 x 3 double arreglo[2][9][5][3];

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 39

Arreglos Multidimensionales

 Manejo:  Índices: Se utilizaran tantos dimensiones tengan el arreglo.

índices

identificador[índice1] [índice2]… [índiceN] Ejemplo: … // Asigna 3 al elemento 0, 5, 4, 1 arreglo[0][5][4][1] = 3.0; Programación – Prof. Gonzalo Müller – Clase 19 – GM - 40

como

Arreglos Multidimensionales  Tamaño real del Arreglo: cantidad1 ≤ TAMAÑO1 cantidad2 ≤ TAMAÑO2 … cantidadN ≤ TAMAÑON

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 41

Arreglos Multidimensionales  Rango de los índices: índice1 ∊ [0, cantidad1 – 1] índice2 ∊ [0, cantidad2 – 1] … índiceN ∊ [0, cantidadN – 1]

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 42

Arreglos Multidimensionales  Bucles: Se utilizaran tantos bucles anidados como dimensiones tengan el arreglo. 

Se utilizaran tantos contadores para índice como dimensiones tengan el arreglo.

Ejemplo: double arreglo[2][9][5][3]; 4 Bucles anidados. unsigned short e1, e2, …; 4 Contadores. while(e1 < cantidad1) … 4 Cantidades. while(e2 < cantidad2) … while(e3 < cantidad3) … while(e4 < cantidad4) … Programación – Prof. Gonzalo Müller – Clase 19 – GM - 43

Arreglos como parámetros  Se debe indicar el tipo y el tamaño del arreglo.  Declaración y Definición … nombre(unsigned tipo cantidad1, unsigned tipo cantidad2, …, tipo parámetro1[TAMAÑO1] [TAMAÑO2] …, …) parámetro de entrada

… nombre(unsigned tipo &cantidad1, unsigned tipo &cantidad2, …, tipo parámetro1[TAMAÑO1] parámetro [TAMAÑO2]…, …)

de retorno

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 44

Arreglos Multidimensionales Ejemplo: Diseñar y construir un programa modular en C++ con acoplamiento de datos que sume N matrices.

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 45

Resumen

 Arreglos Multidimensionales.  Arreglo unidimensional: vectores. 

Declaración:

tipo identificador[TAMAÑO] 

Manejo: identificador[índice] 

1 Bucle permitirá desplazarse a lo largo del vector. índice ∈ [0, cantidad)

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 46

Resumen  Arreglo bidimensionales: matrices. 

Declaración:

tipo identificador[FILAS] [COLUMNAS] 

Manejo: identificador[fila] [columna] 



1º Bucle permitirá desplazarse de una fila a otra. fila ∈ [0, filas) 2º Bucle permitirá desplazarse de una columna a otra. columna ∈ [0, columnas)

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 47

Resumen  Arreglo N-dimensionales. 

Declaración:

tipo nombre[TAMAÑO1] [TAMAÑO2]… [TAMAÑON]  Manejo: identificador[índice1] [índice2]… [índiceN] 



Tantos bucles anidados como dimensiones tengan el arreglo. Tantos contadores para índice como dimensiones tengan el arreglo.

Programación – Prof. Gonzalo Müller – Clase 19 – GM - 48

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF