You are on page 1of 38

PRIMER BIMESTRE

Gua didctica: Fundamentos de la Programacin

Algoritmo ADIVINA NMERO Clase Adivina 1. Clase Principal a. Declaraciones Variables inf, sup, medio, resp, nroIntentos : Entero encontrado : Booleano b. Calcular inf = 0 sup = 100 resp = 0 nroIntentos = 0 encontrado = false c. Imprimir Piense en un nmero d. DO 1. medio = (inf + sup) / 2 2. Imprimir El nro que pens es medio 3. nroIntentos ++ 4. Imprimir Digite 1. Si acert 2. Si el nro es mayor 3. Si es menor 5. Leer resp 6. SWITCH rep 1 : encontrado = true 2 : inf = medio + 1 3 : sup = medio 1 7. DEFAULT: Imprimir Opcin no vlida 8. ENDSWITCH e. WHILE nroIntentos <= 7 AND encontrado == true f. Imprimir nroIntentos g. Fin Mtodo principal Fin Clase Adivina Fin El programa en Java se puede ver en la siguiente ilustracin:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

77

Gua didctica: Fundamentos de la Programacin

PRIMER BIMESTRE

Ilustracin 54 Programa que Adivina un nmero en 7 intentos Anlisis: Es necesario que tenga presente lo siguiente: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 54. La entrada que recibe el programa es la respuesta a la pregunta que se plantea en el punto 2 bajo d. (algoritmo) o en Java en la lnea 25. El proceso consiste en aplicar una tcnica que se denomina bsqueda binaria, la cual consiste en calcular el valor medio de la lista de posibles valores (en este caso 0 y 100). Con el valor medio calculado (punto 1. bajo d. (algoritmo) y lnea 24 (Java)) se pregunta si el valor medio es el valor pensado, si es as se termin la bsqueda (por eso el caso 1 del SWITCH cambia el valor de la variable encontrado); sino se debe preguntar si el valor pensado es mayor o menor al valor medio (punto 4., bajo d. (algoritmo) y lneas de la 27 a la 30 (Java)). La bsqueda binaria consiste en cambiar los lmites inferior y superior de la lista segn las respuestas del usuario. Si el usuario afirma que el valor pensado es menor que el medio, se mueve el lmite superior (Vea el punto 3. bajo 6. y lnea 40); caso contrario si el valor pensado es mayor que el medio se mueve el lmite inferior (Vea el punto 2. bajo 6. del algoritmo y lnea 37 de Java). Se debe repetir este proceso mientras el nmero de intentos sea menor o igual que 7 y que la variable bandera, encontrado, sea igual a falso (punto e. del algoritmo y lnea 45 Java). Las salidas que produce el algoritmo se encuentran en los puntos: 2. bajo d. y 2. bajo f., mientras que en Java en las lneas 25 y 46. 5. Elabore un algoritmo y programa en Java que encuentre la sumatoria de los n primeros trminos de la siguiente serie: S = 10 + 21 + 31 + 52 + 73 + 115 +

Algoritmo SUMATORIA SERIE Clase Serie 1. Mtodo Principal a. Declaraciones Variables limite, genNum, cont, i : Entero suma : Real

78

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRIMER BIMESTRE

Gua didctica: Fundamentos de la Programacin

primero, segundo, fibo : Entero esPrimo : Boleano b. Calcular genNum = 0, cont = 0, suma = 0 c. Calcular primero = 0, segundo = 1, esPrimo = false d. Solicitar el nmero de trminos e. Leer limite f. WHILE cont < limite 1. genNum = genNum + 1 2. esPrimo = True 3. FOR i = 2; i < genNum; i++ a. IF genNum % i == 0 THEN 1. esPrimo = False b. ENDIF 4. ENDFOR 5. IF esPrimo == True THEN a. cont = cont + 1 b. IF cont == 1 OR cont == 2 THEN 1. fibo = cont 1 c. ELSE 1. fibo = primero + segundo 2. primero = segundo 3. segundo = fibo d. ENDIF e. suma = suma + Pot(genNum, fibo) 6. ENDIF g. ENDWHILE h. Imprimir suma 2. Fin Mtodo principal Fin Clase Fin El cdigo Java es el siguiente:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

79

Gua didctica: Fundamentos de la Programacin

PRIMER BIMESTRE

Ilustracin 55 Ejemplo de una serie numrica Anlisis: Recuerde que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 55. Este problema recibe como entrada el nmero de trminos a sumar (vea el punto d. y e. bajo 1. o las lneas de cdigo 23 y 24). El proceso tal como se lo explico en este mismo captulo se tiene que analizar cada elemento de la serie; en ella podemos ver que tenemos como base a los nmeros primos y como exponentes a los trminos de Fibonacci. Cada uno de estos elementos pertenecen a cada uno de los tipos de series que se analiz, Fibonacci es del tipo en la que un elemento se obtiene aplicando una frmula; mientras que los primos son del tipo en la que un elmento cumple con una o varias caractersticas. El tipo de serie determina que ciclo repetitivo usar y cuando se tiene una serie con ambos tipos, se selecciona el bucle de la serie cuyos elementos cumplen con ciertas restricciones, es decir primos. Por eso se usa un ciclo repetitivo WHILE (punto 1. bajo f. del algoritmo lnea 26 Java). Lo primero que haremos ser generar un nmero (punto 1. bajo f. del mtodo principal del algoritmo o lnea 27 de Java) y determinar si ese nmero generado es primo (puntos desde el 2. bajo f. del mtodo principal al 4. bajo f. del mismo mtodo o lneas desde la 28 a la 33). Para determinar si el nmero (genNum) es primo se busca otro divisor diferente de la unidad y del mismo nmero (genNum) (por eso el FOR del punto 3. bajo f. y de la lnea 29 inicia en 2 y se ejecuta mientras sea menor que genNum). Si el mdulo de la divisin es igual 0 (IF del punto a. bajo 3. del ciclo WHILE que se encuentra en f) ese nmero (i) es divisor por lo que la variable esPrimo toma el valor de falso (punto 1. bajo el IF que se encuentra en a. o lnea 31 de Java) Una vez encontrado un nmero primo el contador de trminos se incrementa y se empieza a trabajar con los elementos de Fibonacci lneas del algoritmo desde la b. hasta el d. del IF que se encuentra en 5. del algoritmo o lneas desde la 36 a la 42 en Java. Es necesario recordar que los 2 primeros trminos de la serie de Fibonacci son la base de la misma, por lo que si se trata de alguno de estos elementos se asigna a fibo el valor de la variable contador menos una unidad (puntos b. y 1. (bajo b.) que se encuentran bajo el IF del punto 5. lneas 36 y 37 Java). Si se trata del tercer elemento en adelante se aplica la frmula para calcular los elementos de Fibonacci (puntos desde el c. hasta el d. bajo el IF del punto 5. o lneas desde la 39 a la 41 de Java). Finalmente se realiza la suma, punto e. bajo el IF que se encuentra en 5. del algoritmo o lnea 43 Java, para ello se aplica la funcin Pot del algoritmo o pow de la clase Math. En Java este mtodo devuelve

80

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRIMER BIMESTRE

Gua didctica: Fundamentos de la Programacin

un valor tipo real lo que hace que la variable suma deba ser de ese tipo de dato. En el algoritmo no tendramos ese problema, si la variable suma es entero o real. Por ltimo se presenta la suma (punto h. bajo 1. del algoritmo o lnea 46 de Java). En este captulo se estudio las estructuras de repeticin, as como las equivalencias entre dichas estructuras, se dieron recomendaciones para usar cada ciclo de repeticin, analizamos lo que son las series numricas y su importancia en la enseanza de la programacin en general. Como un complemento a lo expuesto en esta gua didctica los invitamos a revisar el siguiente material adicional, que le permitir incrementar su conocimiento del lenguaje de programacin Java. Material adicional: En el CD que se adjunt en la gua didctica, puede revisar (programacinen-java-i\Contenidos\LecturaObligatoria\) los archivos: 6-sentenciasrepetitivasobucles.pdf 7-otrassentencias.pdf Hasta el punto 7.2

Es el momento de comprobar lo aprendido en este captulo, para lo cual le proponemos que desarrolle la siguiente autoevaluacin. Trate de resolverlos usted mismo y compare su respuesta con la respuesta que proponemos al final de la gua didctica.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

81

Gua didctica: Fundamentos de la Programacin

PRIMER BIMESTRE

Autoevaluacin 3
1. Responda a las siguientes preguntas con V (verdadero) o con F (falso) a. ( ) El siguiente fragmento de pseudocdigo muestra un ciclo repetitivo controlado por un contador ... Calcular num = 0 DO ... num = num + 3; WHILE num < 30 ... El siguiente fragmento de pseudocdigo es un ciclo infinito ... Calcular nro = 1 DO ... nro = nro + 1 Imprimir Salida WHILE nro > 0 ... El siguiente fragmento de pseudocdigo es correcto Calcular nro = 2 DO nro < 10 nro = nro + 1 ... ENDDO d. ( ) El siguiente fragmento de pseudocdigo es correcto (Suponga que la variable contador ha sido declarada previamente) ... FOR contador = 0; contador ++ ... ENDFOR El siguiente fragmento de pseudocdigo imprime el mensaje Salida 3 veces ... Calcular cont = 0 WHILE cont < 7 cont = cont + 3 IF cont MOD 3 == 0 THEN Imprimir Salida ENDIF ENDFOR

b.

c.

( ...

e.

82

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRIMER BIMESTRE

Gua didctica: Fundamentos de la Programacin

f.

) El siguiente fragmento de pseudocdigo muestra el mensaje Salida 3 veces .. Calcular limite = 4 WHILE limite < 12 limite = limite * 2 Imprimir Salida ENDWHILE Imprimir Salida

2. 3.

Realizar un programa que cuente las vocales cuando se ingresa una cadena de textos. Construya un algoritmo que ingresado cualquier da, mes y ao devuelva el da (lunes, martes, mircoles, etc.) que corresponde la fecha. Construya un algoritmo que permita encontrar los n primeros nmeros primos. Ingresar una palabra y determinar si esta es un palndromo. Un palndromo es una palabra que se puede leer de izquierda a derecha o viceversa y su significado es el mismo. Ejemplos Ana, arenera, arepera, reconocer, salas, somos, sometemos, entre otras. Construya un algoritmo que reciba como entrada un cierto valor n y genere como salida el valor de la serie: 2, 5, 7, 10, 12, 15, 17, . . . . ., 1800. Realizar un algoritmo que permita ingresar una frase, para luego descomponerla en sus palabras y que produzca como salida cada palabra de la frase, pero escritas al revs. Ejem. CIUDAD GUAYAQUIL DADUIC LIUQAYAUG

4. 5.

6.

7.

Hasta aqu el desarrollo de los contenidos del captulo 3. En el prximo captulo se iniciar el estudio de una de las primeras estructuras de datos que se usa en programacin, los arreglos.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

83

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

84

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

SEGUNDO BIMESTRE

7.1 Planificacin para el trabajo del alumno

COMPETENCIAS ESPECFICAS
Captulo 4: Arreglos 4.1 Definicin 4.2 Declaracin de arreglos 4.3 Recorrido /insercin de datos 4.4 Ejercicios Semana 1 y 2: 12 horas de autoestudio. 8 horas de interaccin.

OBJETIVOS DE APRENDIZAJE

CONTENIDOS CAPTULOS / TEMAS

CRONOGRAMA ORIENTATIVO Tiempo estimado ACTIVIDADES DE APRENDIZAJE RECURSOS DIDCTICOS

EVALUACIN
Desarrollo de las autoevaluaciones de la 4 a la 6. Evaluacin a Distancia: parte objetiva y de ensayo del segundo bimestre. Participacin en los foros propuestos en el EVA Evaluacin presencial del segundo bimestre

Domina el funcionamiento de las estructuras de control y de los diferentes operadores estndares en los lenguajes de programacin.

Identificar la necesidad de las estructuras de control dentro del pseudocdigo y lenguajes de programacin.

Define y crea mdulos en algoritmos y programas.

Explica los conceptos fundamentales de la programacin orientada a objetos.

Texto bsico Gua didctica Entorno virtual de aprendizaje: - Anuncios - Foros - Vdeos - Ejercicios de programacin en Java con NetBeans Tutora telefnica Correo electrnico

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

Gua didctica: Fundamentos de la Programacin

Aplica conceptos de POO en la creacin de algoritmos y programas que resuelven problemas de complejidad media.

1. Lectura comprensiva de los contenidos del captulo 8 del texto bsico, tal y como se recomienda en el captulo 4 de la gua didctica. 2. Revisin y programacin de los ejercicios resueltos de los pginas 169 y 182 del texto bsico. 3. Elaboracin de los ejercicios propuestos en la pgina 192. 4. Desarrollo de las actividades recomendadas. 5. Interaccin en el Entorno Virtual de Aprendizaje (EVA) 6. Inicio del desarrollo de la evaluacin a distancia del segundo bimestre.

85

86
Semana 5 y 6: 12 horas de autoestudio. 8 horas de interaccin. Captulo 6: Introduccin a la programacin orientada a objetos 6.1 Definiciones bsicas 6.2 Objetos 6.3 Clases 6.4 Diseo del diagrama de clases 6.5 Diseo de la lgica de las clases en pseudocdigo 6.6 Ejercicios 1. Lectura comprensiva de los contenidos de los captulos 10 y 11 del texto bsico, tal y como se recomienda en el captulo 6 de la gua. 2. Revisin y programacin en Java de los ejercicios resueltos en la pgina 271 del texto bsico. 3. Elaboracin de los ejercicios propuestos en la pgina 281. 4. Participacin en el Entorno Virtual de Aprendizaje (EVA) 5. Continuar con el desarrollo de la evaluacin a distancia.

Distinguir cada uno de los elementos que se usan en la creacin y manipulacin de mtodos.

Semana 3 y 4: 12 horas de autoestudio. 8 horas de interaccin.

Elaborar algoritmos y programas modulares.

Gua didctica: Fundamentos de la Programacin

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

Emplear mtodos en la elaboracin de algoritmos y programas.

Captulo 5: Mtodos 5.1 Definiciones 5.2 Creacin / invocacin de mtodos 5.3 Otros conceptos importantes 5.4 Uso de libreras de mtodos 5.5 Recomendaciones para trabajar con mtodos 5.6 Ejercicios

1. Lectura comprensiva del contenido del captulo 9 del texto bsico, tal y como se recomienda en el captulo 5 de la gua didctica. 2. Revisin y programacin en Java de los ejercicios resueltos en la pgina 230 del texto bsico. 3. Elaboracin de los ejercicios propuestos en la pgina 236. 4. Participacin en el Entorno Virtual de Aprendizaje (EVA) 5. Continuar con el desarrollo de la evaluacin a distancia.

La Universidad Catlica de Loja

Comprender las caractersticas fundamentales de la orientacin a objetos.

Analizar problemas usando la metodologa orientada a objetos.

Disear e implementar algoritmos y programas que empleen conceptos fundamentales de programacin orientada a objetos (POO).

SEGUNDO BIMESTRE

Captulos del 4 al 6

Semana 7 y 8: 12 horas de autoestudio. 8 horas de interaccin.

Preparacin para la evaluacin presencial del segundo bimestre.

SEGUNDO BIMESTRE

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

Gua didctica: Fundamentos de la Programacin

87

7.2 Sistema de evaluacin


Actitudes Habilidades Conocimientos

Comportamiento tico

Cumplimiento, puntualidad y responsabilidad

Esfuerzo e inters en los trabajos

Respeto a las personas y a las normas de comunicacin

Creatividad e iniciativa

Contribucin en el trabajo colaborativo y de equipo

Presentacin, orden y ortografa

Emite juicios de valor argumentadamente

Dominio del contenido

Investigacin (cita fuentes de consulta)

Aporta con criterios y soluciones

Gua didctica: Fundamentos de la Programacin

2. Heteroevaluacin

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

1. Autoevaluacin y actividades recomendadas. x x x x x x x x x x x x x x x x x

Anlisis y profundidad en el desarrollo de los temas

Formas de evaluacin

Estrategia de aprendizaje* 10% 10% 10% 2 2 2

Objetiva

Evaluacin a Distancia** x x x x x x x x x x x x x x x x x x x x x x x x x x x

Ensayo x x x x x x TOTAL

Interaccin en el EVA

30% 70%

PORCENTAJE

La Universidad Catlica de Loja

Prueba Presencial

Pruebas mixtas: objetivas y ensayo

14 En actividades especifcas tanto presenciales como en el EVA. 20 puntos en cada bimestre

3. Coevaluacin

Para aprobar la asignatura se requiere obtener un puntaje mnimo de 28/40 puntos, que equivale al 70%.

Son estrategias de aprendizaje, no tienen calicacin; pero debe responderlas con el n de autorregular su proceso de aprendizaje

** Recuerde: que la evaluacin a distancia del segundo bimestre consta de dos partes: una objetiva y otra de ensayo, debe desarrollarla y entregarla en su respectivo Centro Universitario hasta el 15 de

enero (perodo octubre- febrero) o 15 de julio (perodo abril-agosto).

SEGUNDO BIMESTRE

Sr. estudiante:

Tenga presente que la nalidad de la valoracin cualitativa es principalmente formativa; sin embargo, en circunstancias especiales podra afectarle positiva o negativamente en su calicacin cuantitativa.

PUNTAJE 6

88

Criterios

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

7.3 Orientaciones especcas para el aprendizaje por competencias


Bien hemos estudiado, sintetizado, revisado, analizado, etc., lo esencial de cada uno de los captulos del primer bimestre. Ahora es conveniente que iniciemos el segundo bimestre con el anlisis de una estructura de datos que permite trabajar con un grupo de valores en lugar de uno, como lo hacan las variables de los ejercicios anteriores. Comencemos estudiando los arreglos.

Captulo 4: Arreglos
La manipulacin de datos es una de las principales actividades que realizan los programas, por tal motivo se han creado varias estructuras que permiten manejar los datos de diferentes maneras, pero siempre buscando la optimizacin en su manejo. Una de las primeras estructuras de datos que se estudia son los arreglos, por tal motivo dedicamos este captulo a su estudio, en el mismo cubriremos los conocimientos bsicos sobre arreglos. Ante todo es importante conocer la importancia de los arreglos. Para ello analice el Algoritmo 5 ALUMNOS FOR del captulo 3 de esta gua didctica. Recuerde que la caracterstica que define al algoritmo anterior es la utilizacin de la sentencia FOR y cuyo objetivo es tomar cinco veces por teclado (leer) los nombres, apellidos y presentarlos en pantalla. De esta manera se evita la definicin de cinco variables para nombres (n1, n2, n3, ) y cinco variables para los apellidos (a1, a2, a3, ) lo que implica un ahorro de espacio en memoria. Pero, qu implic que solo se defina una variable nom para los nombres y una variable ape para los apellidos?. Pues bien, el problema principal es que los valores anteriores de las variables en cada repeticin del FOR sern sobrescritos por los nuevos valores ingresados, en otras palabras, si se desea ingresar una lista de 1000 nombres, con el algoritmo anterior y luego proceder a presentar los 100 primeros nombres resultara imposible realizarlo mediante el procedimiento anterior, ya que no se ha guardado ms que el ltimo valor que se ingreso. El siguiente algoritmo est modificado para el propsito antes sealado y nuevamente se tiene que definir las 1000 variables para nombres y 1000 ms para apellidos con el fin de no perder valores de las variables, lo que volvera a consumir recursos de memoria y en este acaso a tener un programa con muchas lneas de cdigo. Algoritmo ALUMNOS FOR CON ARREGLOS Clase Alumnos 1. Mtodo principal a. Declaraciones Variables n1, n2, n3, n1000:Cadena a1, a2, a3, a1000:Cadena i : Entero b. Solicitar Nombre y apellido de 1000 alumnos 1. Leer n1, a1 2. Leer n2, a2 3. Leer n3, a3 .

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

89

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

1000. Leer n1000, a1000 c. Presentar nombre y apellido de 100 alumnos 1. Presentar n1, a1 2. Presentar n2, a2 3. Presentar n3, a3 . 100. Presentar n100, a100 d. Fin Mtodo principal Fin Clase AlumnosFor Fin Para resolver problemas que trabajan con un conjunto de variables del mismo tipo se utiliza arreglos que en si son estructuras de datos que pueden contener informacin de un mismo tipo. Los arreglos permiten manejar grandes conjuntos de datos solamente con una sola variable y mediante la utilizacin de ndices. En nuestro ejemplo bastara con declarar nom[1000] y ape[1000]. Algoritmo ALUMNOS FOR CON ARREGLOS Clase AlumnosFor 1. Mtodo principal a. Declaraciones Variables nom[1000], ape[1000]: Cadena i : Entero b. FOR i = 1; i <= 1000; i ++ 1. Solicitar Nombre y apellido del alumno i 2. Leer nom[ i ], ape[ i ] c. ENDFOR d. FOR i = 1; i <= 100; i ++ 1. Presentar nom[ i ], ape[ i ] e. ENDFOR f. Fin Mtodo principal Fin Clase AlumnosFor Fin Existen otros problemas de programacin en donde es necesario contar con muchas variables del mismo tipo. Se puede mencionar algunas reas como: estadsticas, ingeniera civil, ingeniera qumica, entre otras. Una vez planteada la necesidad de contar con estructuras de datos, como los arreglos, es necesario pasar a estudiar cmo definir un arreglo de cualquier dimensin.

90

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

4.1 Definicin Realice una lectura comprensiva de los acpites del 8.1 Arreglos unidimensionales al 8.4 Arreglos tetradimensionales, pgina 164, Captulo 8 Arreglos del texto bsico. En el mismo que inicia con las conceptualizaciones de los arreglos unidimensionales, bidimensionales, tridimensionales, etc. Adems analice y entienda de cada uno de los ejemplos propuestos del texto bsico. Qu le pareci la lectura? Comprendi? Si es as avancemos y repasemos ciertos elementos de la lectura anterior. Un arreglo es una estructura de datos esttica que almacena informacin de un mismo tipo de dato. Existen diferentes tipos de arreglos: o o o o Arreglos unidimensionales. Arreglos bidimensionales. Arreglos tridimensionales. Arreglos tetradimensionales.

Es importante que lea detenidamente la seccin 8.1 Arreglos unidimensionales del texto bsico y entienda cual es su estructura. A continuacin algunas ideas interesantes sobre el tema: 1. La caracterstica de estos es que el tamao (N) esta representado con un solo valor, por ejemplo: Produccin: Arreglo [30] Entero, en donde N=30

2. IMPORTANTE: Adems los datos son accedidos por un solo ndice que van desde un valor inicial (1) hasta un valor final (N). En algunos casos como lo indica el texto bsico existen lenguajes de programacin (Java, C++, C#, Object-c) que inician desde 0 (cero), en cuyo caso el valor final del arreglo ser N-1. 3. Los elementos se relacionan con un nombre de la variable y un ndice que generalmente va entre corchetes [ ]. Dentro de este pueden ir nmeros o variables enteras. Tambin se pueden realizar operaciones matemticas como por ejemplo: produccion[(i*4)-j+2] 5. Los arreglos se recorren mediante estructuras repetitivas como el FOR. Revise el apartado 8.1. en Manejo de elementos del arreglo unidimencional. En el Algoritmo PRODUCCIN 30 Das, observe como se ingresan datos en los arreglos utilizando las sentencias FOR y dentro la instruccin Leer produccion[i]. As mismo muestra como se presentan los datos. Esta es la manera general de como se recorre un arreglo para la introducir datos y luego para presentarlos.

Acuda nuevamente al texto bsico y lea el acpite 8.2 Arreglos bidimensionales para conocer ms de los arreglos bidimensionales o matrices. Luego de haber ledo podr darse cuenta que los arreglos bidimensionales se diferencian de los unidimensionales por la disposicin de los elementos dentro del arreglo de datos. A continuacin algunas ideas a considerar:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

91

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

1. 2.

En la seccin 8.2.1 Ejercicios resueltos para bidimensionales se muestra que los arreglos bidimensionales estn conformados por filas y columnas. Ahora los elementos tienen dos subndices: Matriz[fila][columna]

3.

Adems el tamao del arreglo est dado por dos valores M que representa el nmero de filas y N el nmero de columnas. Entonces se dicen que una matriz tiene un orden en dos dimensiones MXN. Como por ejemplo Matriz: Arreglo[4][5] Entero; M=4 y N=0, es decir 20 elementos.

Y por ltimo revise los apartados 8.3 Arreglos tridimensionales y 8.4 Arreglos tetradimensionales del texto bsico para aprender de los arreglos tridimensionales y tetradimensionales. Luego usted podr concluir que estos tienen las mismas consideraciones que los arreglos unidimensionales y los bidimensionales. Tal como lo explica en el texto bsico los tridimensionales son una combinacin de los unidimensionales y los bidimensionales. Y los tetradimensionales, en cambio una combinacin entre dos bidimensionales. Una vez analizadas las definiciones, vamos a estudiar las acciones bsicas que se pueden realizar con los arreglos en general (independiente de sus dimensiones). Iniciamos con la declaracin de arreglos. 4.2 Declaracin de arreglos Realice una lectura comprensiva de las pginas 165, 174, 184 y 189 del texto bsico, ah encontrar como se puede definir los arreglos desde los unidimensionales hasta los tetradimensionales En el acpite 8.1 Arreglos unidimensionales del texto bsico se presentan diferentes formas de declaracin de arreglos unidimensionales, se podra decir: la forma bsica, y mediante tipos. En resumen la primera forma implica: Nombre de la variable: Arreglo[Tamao] Tipo de dato La segunda, Declarar Tipo Variable de tipo: Arreglo[Tamao] tipo de dato Declarar variable Nombre de la variable: Variable de tipo Las dos formas son vlidas, aunque la primera es la mas utilizada por la simplicidad que tiene. A continuacin se presenta algunos fragmentos como ejemplos donde se declaran arreglos en el lenguaje Java. Observe y entienda la parte de la declaracin y su inicializacin con la palabra reservada new.

92

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

Ilustracin 56 Declaracin de arreglos (1) En la Ilustracin 56, en la lnea 16 podemos ver como se declara un arreglo unidimensional entero y en la lnea 27 como se inicializa con los valores M y N que son ingresados por el usuario. Tambin podemos observar que se declara un arreglo unidimensional de tipo texto y luego en la lnea 26 su respectiva creacin con una longitud de 10. En la lnea 16 se declara un arreglo bidimensional, en la lnea 28 se crea con M filas y N columnas. De esta forma podemos declarar y crear arreglos de cualquier tipo de dato (entero, real, cadena, carcter). Recuerde que para la creacin del arreglo se ubica el tamao dentro de los corchetes. Ahora usted tome los ejercicios de la seccin 8.1.1 Ejercicios resueltos para unidimensionales del texto bsico y declare los arreglos de los ejemplos. En el siguiente programa Java podr observar como se realiza la creacin e inicializacin de un arreglo de enteros.

Ilustracin 57 Declaracin de arreglos (2) En el programa de la Ilustracin 57 se encuentra un mtodo de una clase ( en el captulo 6 se hablar mas del tema). Aqu se declara al arreglo inicializando valores en la lnea 54. Observe que los valores de inicializacin van entre llaves y separados por comas. Esta es la manera ms comn para introducir valores de inicio en los arreglos. Observe cual es la funcin de lnea 55. Esta sentencia nos permite obtener el tamao del arreglo.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

93

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

En resumen se puede declarar el arreglo y luego inicializarlo de las siguientes formas: La primera: double[ ] a ; declara sin inicializar el arreglo a = new double[10];inicializa 10 espacio de memoria La segunda: int double[ ] a ={1,2,3,4,5,6,7,8,9,10}; declara e inicializa Ahora busque los ejercicios del texto bsico en la seccin 8.1.1 Ejercicios resueltos para unidimensionales del texto bsico, y encuentre cuales se declaran de la primera forma y cuales de la segunda. En lo que respecta a arreglos bidimensionales y la forma de declaracin en los algoritmos usted lo encontrar en la seccin 8.2 Arreglos bidimensionales del texto bsico. Se puede observar que simplemente se agrega un par de corchetes [] [] en su declaracin y por el resto es similar a la declaracin de los arreglos unidimensionales. A continuacin se presenta algunos ejemplos en java donde existen declaracin de arreglos bidimensionales:

Ilustracin 58 Declaracin e inicializar de una matriz MXN Igual que en los arreglos unidimensionales, con base en la Ilustracin 58, los arreglos se pueden definir como en la lnea 16 y se los inicializa como en la lnea 25. Tambin se lo puede hacer en una sola lnea int [][] Matriz = new int[M][N];. Observe que los valores N y M son ingresados por teclado lo que hace que el arreglo se defina dinmicamente por el usuario.

94

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

Ilustracin 59 Utilizacin de la sentencia length En la Ilustracin 59 observe como se utiliza la palabra reservada lenght para determinar el nmero de filas y columnas (lnea 107 de la Ilustracin 59) . Por lo general cuando se recorren arreglos bidimensionales siempre existirn dos ciclos FOR, uno que recorre filas y otro ciclo anidado que recorre columnas.

Ilustracin 60. Inicializacin de una matriz con valores por defecto En la lnea 18 de la Ilustracin 60, se declara una matriz junto con su inicializacin ubicando valores ya en el arreglo. Observe como se distribuyen las llaves para dividir las filas y las columnas. En este programa tambin se puede recalcar como se obtienen las filas y columnas del arreglo con length. Esto es muy til cuando se desconoce de las dimensiones de columna y fila. Observe la corrida del programa en la siguiente imagen:

Ilustracin 61 Log de la ejecucin de la Ilustracin 60 mostrando la utilidad de length Ahora repase los ejercicios de la seccin 8.2.1 Ejercicios resueltos para bidimensionales del texto bsico y trate de declarar los arreglos que se presentan en Java, eso le permitir tener una mayor destreza en declarar arreglos bidimensionales. Finalmente revise las secciones 8.3 Arreglos tridimensionales y 8.4 Arreglos tetradimensionales del texto bsico, para entender como se declaran los arreglos tridimensionales y tetradimensionales. De manera personal, podemos comentar que existen pocas aplicaciones donde se utilicen, aunque, en la seccin 8.3.1 Ejercicios resueltos para tridimensionales y 8.4.1 Ejercicios resueltos para tetradimensionales, del texto bsico se observa algunas utilidades. La Ilustracin 62 muestra un ejemplo de la declaracin de estos arreglos en Java:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

95

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

Ilustracin 62 Arreglos tridimencionales Una vez hechas las declaraciones de arreglos podramos recorrer el arreglo para ingresar datos en cada una de sus posiciones o para presentar los valores que tenga asignados. 4.3 Recorrido / insercin de datos Provase de su texto bsico y lea detenidamente las pginas: 166, 174, 185 y 190. Analice detenidamente los ejercicios que ah se proponen e identifique la forma como se realizan las actividades de recorrido e insercin en un arreglo de cualquier dimensin. Qu le pareci la lectura? Comprendi? Si es as avancemos y repasemos ciertos elementos de la lectura anterior. Si usted ha entendido la definicin y la declaracin de los arreglos ahora podr realizar los recorridos y la insercin de datos. Cada posicin del arreglo ya sea unidimensional o bidimensional se considera como una variable, entonces podemos asignar datos o valores con el nombre de la variable y el ndice ( ndices) del arreglo. Para comprender mejor la manipulacin de los datos en los arreglos lea con atencin los siguientes apartados del texto bsico: - - - - Seccin 8.1 Tema: Manejo de los elementos del arreglo unidimensional. Seccin 8.2 Tema: Manejo de los elementos del arreglo bidimensional. Seccin 8.3 Tema: Manejo de los elementos del arreglo tridimensional. Seccin 8.4 Tema: Manejo de los elementos del arreglo tetradimensional.

96

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

En estas secciones se encuentran ejemplos donde se puede ver claramente que la insercin y el recorrido de los datos se los realiza mediante ciclos FOR y se puede decir que dependiendo de la dimensin del arreglo se declara un conjunto de FOR anidados. La Ilustracin 63 muestra la representacin en Java del algoritmo del ejercicio 8.1.1.3 desarrollado en el texto bsico, en donde el ingreso de los datos por teclado se realiza para el vector a en las lneas 17 20 y para el vector b en las lneas 21 24. Tambin observe en las lneas 27 31 como se recorren los arreglos para realizar la multiplicacin de los arreglos.

Ilustracin 63 Programa en java para calular el producto de dos vectores unidimencionales AXB En la ilustracin siguiente observe un ejemplo en Java de un arreglo bidimensional. Realice un anlisis del ejercicio 8.2.1.3 del texto bsico para entender el programa. Luego identifique en el programa el ingreso de datos y el recorrido para las operaciones solicitadas en el problema.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

97

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

Ilustracin 64 Programa en Java ejercicio 8.2.1.3 Una vez que conocemos las operaciones bsicas para el trabajo con arreglos, veamos, a travs de ejercicios, algunas aplicaciones prcticas de los arreglos. 4.4 Ejercicios Importante: en el anlisis de los ejercicios desarrollados se utiliza nmeros para referirse a lneas de cdigo de los programas Java. Mientras que, para los algoritmos escritos en pseudocdigo se utiliza letras del alfabeto y a veces la combinacin de letras y nmeros. 1. En una matriz de dimensiones mxn hallar el mayor valor y el menor valor del arreglo.

Algoritmo ENCONTRAR MAYOR MENOR EN ARREGLO Clase Arreglos. 1. Mtodo Principal a. Declaraciones 1. m,n, mayor,menor i, j: entero 2. Frase : cadena 3. Matriz :Arreglo[][] entero b. Solicitar el orden de la matriz c. Leer m,n

98

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

d. Inicializar Matriz [m][n] e. Solicitar los datos de la matriz f. Leer Matriz[m][n] g. Mayor=0; h. FOR i=0; i<m ; i++ 1. FOR j=0 ; j<n ; j++ a. IF mayor<Matriz[i][j] THEN. 1. Asignar mayor =Matriz[i][j] b. ENDIF 2. ENDFOR i. ENDFOR j. Imprimir el mayor k. menor = mayor l. FOR i=0 ; i<m ; i++ 1. FOR j=0 ; j<n ; j++ a. IF menor>Matriz[i][j] THEN 1. menor =Matriz[i][j] b. ENDIF 2. END FOR m. ENDFOR o. Imprimir el menor 2. Fin del mtodo principal Fin de la clase Cdigo en Java:

Ilustracin 65 Programa Java que busca el elemento menor y mayor de una matriz

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

99

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

Anlisis Es necesario recordar lo siguiente: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 65. El propsito del programa es encontrar dos elementos de una matriz que es ingresada por el usuario, cuyos valores represente el elemento mayor y el menor. El proceso inicia con la definicin de las variables a utilizar representadas en las lneas 12 a 14. Observe que en la lnea 14 solo define la variable de la matriz y en la 20 se instancia con valores de M (filas) y N (columnas). Estos valores son ingresados en tiempo de ejecucin en las lneas 17 y 19. Seguidamente se observa el proceso de ingreso de la matriz. Esto se realiza mediante dos estructuras FOR anidadas cuyos valores finales son M y N. Tambin los ndices i, c representan cada uno de los valores de los elementos a ingresar en la lnea 26. Para encontrar el valor mayor, el proceso inicia asignando 0 a la variable mayor. Luego con dos FOR anidados se recorre la matriz preguntando (lnea 32) si cada uno de los elementos M[i,c] es mayor que la variable mayor, si esto es afirmativo se remplaza el contenido de la variable por el nuevo elemento mayor. De esta forma se asegura el valor mayor en la variable. El proceso para encontrar el valor menor es el mismo que para el mayor con la diferencia que se trabaja con la variable menor (lnea 35). Finalmente se imprime los valores. 2. Construya un algoritmo que simule un juego, que consisten en ingresar 3 nmeros y determinar cuantos coinciden con 3 nmeros generados aleatoriamente por el computador.

Algoritmo JUEGO ALEATORIO Clase Arreglos2. 1. Mtodo Principal a. Declaraciones 1. m, n, i, j, aciertos: entero 2. rand : arreglo[][] entero b. aciertos =0,m=2,n=3 c. Inicializar rand[m][n] d. FOR i=0 ; i<N ; i++ 1. Rand[0][i]= NumeroAleatorio (hasta 10) 2. Leer elemento rand [1][i] e. ENDFOR f. FOR i=0 ; i<3 ; i++ 1. FOR j=0 ; j<3 ; j++ a. IF rand[1][i]==rand[0][j] THEN 1. aciertos =aciertos +1 b. ENDIF 2. ENDFOR g. ENDFOR h. IF aciertos=0 THEN 1. Imprimir no hay aciertos

100

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

i. ELSE 1. Imprimir existes aciertos j. ENDIF 2. Fin del mtodo principal Fin de la clase Cdigo en Java:

Ilustracin 66 Programa Java que cuenta los aciertos Anlisis Cabe sealar que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 66. El objetivo del programa es conocer cuantos aciertos tiene un usuario al ingresar tres nmeros y compararlos con tres nmeros que el computador genera aleatoriamente. En la lnea 14 se define un objeto de la clase Random que nos permite generar nmeros aleatorios mediante el procedimiento nextInt() tal como se lo realiza en la lnea 19. Se inicia con la definicin de las variables M y N tendrn el valor de 2, 3 respectivamente. Los valores corresponden al nmero de filas y el de columnas. Los aleatorios sern almacenados en la primera fila y los ingresados por el usuario en la segunda ( por esto M=2, N=3). En la lnea 18 inicia una estructura FOR que permitir realizar dos tareas: la primera corresponde a generar un numero aleatorio de 0 a 9 y almacenar el valor en la matriz random[0][i]; la segunda corresponde a almacenar el valor que ingrese el usuario mediante lector.nextInt() en rand[1][i]. El proceso para contar los aciertos, inicia en la lnea 24 con dos estructuras FOR anidadas. En la lnea 27, se evala si algn elemento de la primera fila (rand[0][j]) es iguale a algn elemento de la segunda fila rand[1][i]. La lnea 28 contabilizar la cantidad de aciertos.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

101

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

Finalmente presentamos el resultado, teniendo en cuenta que si aciertos es igual a cero, presentaremos un mensaje indicando que no se ha acertado y caso contario las veces que ha acertado. 3. Crear una matriz de 5X5 en donde cada elemento de sta corresponde a la suma de los ndices de la fila con la columna (i+j).

Algoritmo SUMAR SUBINDICES DE MATRIZ Clase Arreglos3. 1. Mtodo Principal a. Declaraciones 1. m,n i, j: entero 2. matriz : arreglo[][] entero b. Solicitar dimensiones m, n c. Leer m,n d. Inicializar valor matriz[m][n] e. FOR i=0 ; i<M ; i++ 1. FOR j=0 ; j<N ; j++ a. Asignar Matriz[i][j]= i+j 2. ENDFOR f. ENDFOR g. Imprimir encabezado h. FOR i=0 ; i<M ; i++ 1. FOR j=0 ; j<N ; j++ 1. Imprimir Matriz[i][j] 2. ENDFOR i. ENDFOR 2. Fin del mtodo principal Fin de la clase

Cdigo en Java:

102

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

Ilustracin 67 Programa Java que suma los ndices de una matriz Anlisis No olvide que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 67. El propsito del programa consiste en almacenar en cada elemento de una matriz M X N la sumatoria de los ndices que identifican ese elemento. Por ejemplo el primer elemento ser cero, porque el ndice de fila i=0 y columna j=0 entonces Matriz[i][j] = 0 + 0 (i,j) = 0. Al igual que en ejercicios anteriores se solicita al usuario que ingrese M y N (lneas 21 y 23) para inicializar la variable Matriz (lnea 25). A continuacin una estructura FOR anidada se utiliza para recorrer la matriz y en la lnea 29, se realiza la operacin de asignar la suma de ndices al elemento tal como el ejemplo anterior. Finalmente en la lnea 34 inicia otra estructura FOR anidada que permitir visualizar los datos guardados en los elementos. 4. Se pide disear e implementar un algoritmo que permita multiplicar dos matrices A y B. Adems, se debe validar el orden de cada una de las matrices para realizar la operacin.

Algoritmo MULTIPLICAR MATRICES Clase Arreglos4. 1. Mtodo Principal a. Declaraciones 1. ma,na,mb,nb: i,j, suma : entero 2. a , b, producto : arreglo[][] entero

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

103

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

b. suma=0 c. DO 1. Solictar orden de arreglo a 2. Leer ma,na 3. Solicitar orden de arreglo b 4. Leer mb,na 5. Solicitar la frase d. WHILE na=mb e. Inicializar arreglo a[ma][na] f. Inicializar arreglo b[mb][nb] g. Inicializar producto a[ma][nb] h. Solicitar Arreglo a i. Leer a[][] j. Solicitar arreglo k. Leer b[][] m. FOR i = 0 ; i < ma ; i++ 1. FOR j = 0 ; j < nb ; j++) a. suma=0 b. FOR k = 0 ; k < mb ; k++ 1. suma += A[i][k] * B[k][j]; c. ENDFOR d. producto[i][j] = suma; 2. ENDFOR n. ENDFOR o. Imprimir el arreglo producto[][]; 2. Fin del mtodo principal Fin de la clase Cdigo en Java:

104

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

Ilustracin 68 Programa en Java que multiplica dos matrices Anlisis Tenga presente que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 68. El propsito del programa consiste en ingresar dos matrices, evaluar su orden y realizar la multiplicacin de stas en una nueva matriz. Se utilizar M_A para representar la fila y N_A para la columna de la primera matriz; M_B para la fila y N_B para la columna en la segunda matriz. Adems se define la matriz A, B y producto para realizar la operacin. Desde la lnea19 hasta la 35, se realiza la validacin de los ordenes de las matrices A y B. En la lnea 31 se verifica si N_A es igual a M_B como requisito para poder realizar la multiplicacin. En caso de que no sean iguales estas dos variables en la lnea 35 realizamos la repeticin hacia la lnea 19 para que nuevamente se ingresen los valores. En la lnea 36 y 37 inicializamos las matrices A, B y producto. Observe que producto tendr el orden M_B para la fila y N_B para la columna. En este ejercicio no realizaremos el ingreso de los elementos de la matrices por teclado, simplemente se los genera mediante la clase Ramdom como muestra la lnea 40. A continuacin observamos una estructura FOR anidada para el ingreso de los elementos en las matrices A y B (lneas 42 a la 48). Como siguiente paso, en las lneas 50 a 58 se realiza la operacin de multiplicacin de las dos matrices. Le recomiendo que revise el proceso manual de multiplicacin de matrices, para que entienda el porque los ndices estn distribuidos de la manera que muestra la lnea 54.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

105

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

Finalmente mediante dos FOR anidados se presenta el resultado de la multiplicacin almacenada en producto. 5. Escriba un programa en pseudocdigo y en Java que lea una frase y muestre los contadores del nmero de tldes dentro de una frase.

Algoritmo CONTAR TILDES Clase Arreglos9. 1. Mtodo Principal a. Declaraciones 1. tilde: arreglo[5] carcter 2. numTildes: arreglo[5 ] entero 3. contador, i, j : entero 4. frase: cadena b. tilde={,,,,} c. Solicitar la frase d. Leer frase e. FOR i=0 ; i< 5; i++ 1.Asignar contador=0 2. FOR j=0 ; j<longitud(frase) ; j++ a. IF frase.subCaracter(j)==tilde[i] THEN 1. contador=contador+1 b. ENDIF 3. ENDFOR 4. numTildes[i]=contador f. ENDFOR g. FOR i=0 ; i< 5 ; i++ 1.Imprimir La Tilde[i] esta en la frase numTildes[i] h. ENDFOR 2. Fin del mtodo principal Fin de la clase Cdigo en Java:

106

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

Ilustracin 69 Programa en Java que cuenta tldes Anlisis: Recuerde que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 69. El presente programa tiene la finalidad de contar cuantas tildes existen en una oracin. El programa recibe como entrada una frase. Observemos que se define un arreglo unidimensional de tipo caracter (lnea 13) con elementos de cada una de las tildes . Tambin definimos un arreglo unidimensional entero para ubicar el nmero de tildes por cada una de las vocales (lnea 14). Seguidamente solicitamos al usuario que ingrese la frase (lnea 20), luego procedemos a borrarle los espacios a los extremos y a convertir toda la frase a minscula con el fin de se puedan comparar con el arreglo tilde. Luego, utilizamos una estructura de dos FOR anidados para recorrer los cada una de las letras de la frase y compararlos con cada elemento del arreglo tilde (Lnea 28). Adems el contador nos permitir agregar una unidad(lnea 29) si la comparacin es verdadera. Al termino del FOR en j asignamos el valor de contador a numTildes (lnea29) para tener registrado el nmero de tildes de cada una de las vocales. Finalmente recorremos tilde y numTilde presentando cada uno de los valores correspondientes a las vocales con tilde.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

107

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

En este captulo revisamos como definir y declarar arreglos de diferentes dimensiones, analizamos los diferentes conceptos de la declaracin de arreglos y como se puede hacer la insercin y el recorrido de los datos. Finalmente se ha visto algunos ejercicios en Java como traduccin de algunos algoritmos del texto bsico. Para ampliar los conocimientos sobre arreglos les proponemos realizar la siguiente lectura que les ayudar a comprender de mejor manera los temas aqu explicados y les presentar otros contenidos relacionados.
Material adicional: En el CD que se adjunt en la gua didctica, puede revisar (programacin-enjava-i\Contenidos\LecturaObligatoria\) el archivo: 11-algunasclasesestandardejavaii

Para medir el nivel de comprensin del tema le invitamos a que desarrolle la siguiente autoevaluacin. Trate de resolver usted mismo los problemas, para luego revisar y comparar con las soluciones que proponemos al final de la presente gua didctica.

Autoevaluacin 4
1. Responda a las siguientes preguntas con V (verdadero) o con F (falso) a. ( ) En pseudocdigo, la siguiente es una declaracin correcta de un arreglo notas : Arreglo [10] Entero b. ( ) Para recorrer un arreglo se utiliza un ciclo repetitivo FOR, imagnese que se ha declarado un arreglo de enteros de longitud 15, el siguiente fragmento de pseudocdigo es correcto. ... FOR i = 1; i < 15; i++ ... c. ( ) Suponga que existe un arreglo, denominado notas, cuyo tamao es igual a 5, la siguiente lnea de pseudocdigo es correcta. notas[6] = 19 d. ( ) Un arreglo bidimensional se lo declara de la siguiente manera en pseudocdigo: ... matriz : Arreglo[5][3] Real ...

108

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

e.

Un arreglo tetradimensional en pseudocdigo se lo declara de la siguiente manera: ... mat : Arreglo[4][3][5][5] Entero En pseudocdigo, los siguientes ciclos FOR permitiran recorrer un arreglo tridimensional ... FOR f = 0; f < 3; f ++ FOR c = 0; c < 4; c++ ... ENDFOR ENDFOR

f.

2. 3.

Elaborar un algoritmo que agregue a una matriz cuadrada la matriz unidad. Escriba una aplicacin en Java que lea una frase y muestre los contadores del nmero de vocales dentro de la frase. En las elecciones para alcalde de EL PUEBLITO se han presentado tres candidatos (A,B,C). el pueblito est dividido en 5 zonas de votacin. El reporte de votos de las zonas se recibe en orden: primero la zona 1, la 2, etc. Elabore una aplicacin que: o Forme una matriz de 5 filas y 3 columnas que contenga, en cada fila, los votos reportados por las zonas para cada uno de los tres candidatos. Encuentre el total de votos obtenidos por cada candidato y el porcentaje que este representa.

4.

5.

Elabore una aplicacin que llene una matriz cuadrada, la magnitud y los datos los ingresa el usuario, luego averige si es simtrica, es decir, si todos los pares de elementos equidistantes perpendicularmente de la diagonal principal son iguales.

Bien hasta aqu el desarrollo de contenidos del Captulo 4. En el siguiente captulo vamos a estudiar uno de los mecanismos que permiten crear programas siguiendo un principio de modularizacin, que permite dividir un programa en varias secciones pequeas de cdigo ejecutables y que aportan con soluciones pequeas.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

109

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

Captulo 5: Mtodos
Avanzamos en el desarrollo de la materia y en este captulo abordaremos una tcnica que se puede aplicar para resolver problemas de complejidad media y alta, a travs de algoritmos y programas Java. El objetivo de la tcnica es facilitar el proceso de programacin. Los problemas que se han propuesto, analizado y programado hasta el momento, son sencillos, y para resolverlos se necesita de una tarea especfica (escrita en una sola clase y en un solo mtodo el mtodo principal); pero existen problemas, cuya solucin involucra ms de una tarea, es decir que necesitaremos ms de una clase y otros mtodos adicionales, a ms del principal. Cuando un problema es bastante grande se suele aplicar el principio divide y vencers, dividir un problema en varios problemas pequeos, resolver cada uno de esos problemas pequeos y la suma de esas soluciones, resuelve el problema original. En programacin, cada problema pequeo ser resuelto a travs de mtodos. Una de las ventajas de trabajar con mtodos es la facilidad que traen para depurar un programa (encontrar errores), ya que si tengo un mtodo que calcula el factorial de un nmero y al ejecutar el programa veo que el factorial no es correcto, el problema se encuentra en las acciones (sentencias) que forman el mtodo, no en otro lugar. Es decir que si falla una tarea concreta debo buscar dentro del programa, el mtodo que realiza esa tarea y concentrarnos en las acciones de ese mtodo. Antes de comenzar con el anlisis del pseudocdigo y los programas Java es necesario estudiar ciertas definiciones que se presentan a continuacin. 5.1 Definiciones Acuda al texto bsico y revise el Captulo 9 Mtodos (pgina 204). Al inicio del punto 9.1 encontramos una definicin del concepto de mtodo2 y una clasificacin de los mismos, es necesario que lea por completo este tema antes de continuar. Observe tambin como la estructura del pseudocdigo que hemos utilizado hasta el momento cambia, para permitir la definicin de otros mtodos adems del mtodo principal. Qu le pareci la lectura? Comprendi? Si es as avancemos y repasemos ciertos elementos de la lectura anterior. Tanto en Java como en el pseudocdigo que estamos usando, puede existir un nico mtodo principal en donde se inicia el funcionamiento del programa y del algoritmo. Analice detenidamente lo que se menciona en la pgina 205 del texto bsico, el prrafo anterior al ejemplo. Mientras cada mtodo realiza una tarea especfica, el mtodo principal hace las veces de director determinando cuando llamar a cada uno de los mtodos, es decir tiene la lgica general. Antes de continuar es necesario que estudie por completo el acpite 9.2 Mtodos que no regresan valor en la pgina 210 del texto bsico, en donde se explica a detalle la estructura de una clase con ms de un mtodo. Observe en la pgina 211 en la parte 3 como los mtodos tienen su propia seccin de declaraciones de: constantes, tipos y variables, as como tambin sus propias acciones.

110

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

Por lo anterior podemos ver como un mtodo tiene la capacidad de: declarar variables, constantes y tipos; ejecutar todas las acciones que sean necesarias empleando cualquiera de las estructuras de control estudiadas. Es decir tiene todo lo necesario para realizar su tarea especfica. Una vez revisada la forma que tienen los algoritmos que poseen varios mtodos, iniciemos un estudio detallado de las acciones que se necesitan para trabajar con mtodos. 5.2 Creacin / invocacin de mtodos Recurra una vez ms al texto bsico y lea detenidamente las pginas desde la 204 a la 210. En ellas se plantea y desarrolla un ejercicio que le ayudar a comprender las tareas de creacin e invocacin de mtodos. Qu le pareci la lectura? Comprendi? Si es as avancemos y repasemos ciertos elementos de la lectura anterior. Si bien en las pginas 204 y 205 se muestra el nuevo esquema de un algoritmo que soporta mtodos, la mejor manera de comprender, como crear e invocar un mtodo se muestra en el ejemplo que se describe en la pgina 205, el mismo se implementa en las pginas 206 a la 208; y finalmente es explicado en las pginas 208 a la 210 del texto bsico. Recuerde leer detenidamente las explicaciones de los algoritmos que se encuentran desarrollados en el texto bsico, antes de pasar a analizar cualquier programa Java de esta gua didctica. La estructura del programa en Java es bastante similar a la forma que tiene el pseudocdigo, veamos la traduccin del algoritmo de la pgina 206 del texto bsico.

Ilustracin 70 Programa Ayuda, que muestra la invocacin y construccin de mtodos

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

111

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

Tal y como se menciona en la explicacin del algoritmo que se encuentra en la pgina 208 del texto bsico para la elaboracin del programa que se muestra en la Ilustracin 70, en las lneas 15-18 podemos ver las declaraciones de clase o globales, fjese que estn fuera del mtodo principal, luego de la declaracin de la clase, las lneas 33, 36, 39 y 42 hacen la invocacin a los mtodos que se han definido ms adelante. Recuerden que dijimos que un programa se ejecuta lnea tras lnea de forma consecutiva, cuando se encuentra la invocacin o llamada a un mtodo sucede lo siguiente: (supngase que estamos en la lnea 33) se encuentra la invocacin al mtodo y el flujo del programa se pasa a dicho mtodo, es decir que se ejecutara la lnea 49 (como se muestra en la Ilustracin 71), una vez que termin de ejecutarse el mtodo (de acuerdo a las necesidades del usuario), el flujo del programa pasa de la lnea 69 a la lnea 34 (una lnea despus de la invocacin al mtodo) devolviendo el flujo de control del programa al mtodo principal. As suceder con todas las invocaciones a los mtodos. La definicin de un mtodo en Java se muestra a continuacin:

Ilustracin 71 Mtodo de la clase Ayuda Un mtodo en Java, al igual que en el pseudocdigo, debe declararse fuera del mtodo principal (en el programa el mtodo principal termina en la lnea 46 Vea la Ilustracin 70) y antes de finalizar la clase (en el programa termina en la lnea 135). El mtodo anterior, as como todos los mtodos de esta clase son mtodos que no retornan o devuelven algn valor, por lo que en sus definiciones, y antes del nombre, se ubica la palabra void, la misma que seala que ese mtodo no devuelve ningn valor. Los mtodos que no retornan valor son uno de los tipos de mtodos que existen, en el texto bsico se describen en el apartado 9.1. Veamos otro ejemplo de la declaracin del mtodo que ayuda a dividir.

112

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Fundamentos de la Programacin

Ilustracin 72 Otro mtodo de la clase Ayuda9 Dentro de un mtodo se puede ubicar cualquiera de las estructuras de control que hemos estudiado y realizar cualquiera de las acciones que hemos empleado (incluida la llamada a funciones matemticas) e incluso invocar a otros mtodos. Para que el programa Java funcione se agreg la palabra reservada static en algunos lugares, como por ejemplo en las declaraciones de clase (lneas 15-18 de la Ilustracin 70); en las declaraciones de los mtodos (lneas: 20 mtodo principal; 48 mtodo ayudaSumar y 112 mtodo ayudaDividir10, Ilustracin 70, Ilustracin 71 y Ilustracin 72 respectivamente). Sin ser demasiado tcnicos, podemos decir que la palabra static se usa para trabajar sin la creacin de objetos, este concepto lo entender de una mejor manera en el siguiente captulo. Si ha sido observador se dar cuenta que las declaraciones de los mtodos que se muestran en las ilustraciones Ilustracin 70, Ilustracin 71 y Ilustracin 72, a diferencia del mtodo principal, utilizan la palabra reservada private. Tanto public (que se us en el mtodo principal), como private se conocen como modificadores de acceso y determinan desde donde (otras clases) se puede invocar al mtodo, no entraremos en muchos detalles11. Trabajar con mtodos exige que dominemos otros conceptos. A continuacin abordaremos esa temtica

9 10 11

Dentro de la programacin Java ste mtodo nicamente funciona si la divisin es exacta, ya que las variables que contienen los resultados son variables enteras. Los otros mtodos no se incluyeron, pero los puede encontrar en el CD de la gua. Para detalles consulte la siguiente direccin: http://mundogeek.net/archivos/2009/03/30/modificadores-en-java/

UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja

113

Gua didctica: Fundamentos de la Programacin

SEGUNDO BIMESTRE

5.3 Otros conceptos importantes En el trabajo con mtodos existen otros conceptos que deben ser analizados, por ello les sugiero revisar el tema 9.3 Variables globales, locales y parmetros del texto bsico Qu le pareci la lectura? Comprendi? Si es as avancemos y repasemos ciertos elementos de la lectura anterior. Las definiciones que vamos a estudiar estn relacionadas con los tipos de variables que existen cuando se trabaja con mtodos. Comencemos a estudiar aquellas variables que se pueden usar en toda la clase. 5.3.1 Variables globales Aunque el trmino variables globales no se aplica en los lenguajes orientados a objetos, para seguir la notacin del libro lo mantendremos. En el prximo captulo lo reemplazaremos por atributos o propiedades. Una variable global se define luego de la declaracin de la clase (tanto en Java como en el pseudocdigo) y antes de la declaracin del mtodo principal. Un ejemplo lo puede encontrar en el algoritmo que se muestra en la pgina 212 del texto bsico, y en Java en la Ilustracin 70, lneas desde la 15 a la 18. Estas variables globales pueden usarse en todos los mtodos de la clase. Fjese en la variables globales num1, num2, resuNi, resuMaq de la Ilustracin 70, las mismas se usan en los mtodos que se muestran en las ilustraciones Ilustracin 71 y Ilustracin 72. Podemos decir que el mbito de una variable global es toda la clase. El mbito de una variable, define los lmites de uso de la misma, es decir desde que sitio hasta que sitio se puede usar la variable. El uso de una variable fuera de su mbito provoca errores en programacin. Para la explicacin de los otros conceptos los invitamos a ver el siguiente algoritmo y programa en Java. Algoritmo VARIOS CONCEPTOS Clase Utilidades 1. Mtodo principal a. Declaraciones Variables opcion, res, num, b, e: Entero b. DO 1. Imprimir 1. Clculo factorial 2. Potenciacin 3. Salir Opcin: 2. Leer opcion 3. SWITCH opcion 1 : a. Solicitar un nmero

114

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja