Guía temática de aprendizajes
para entornos virtuales
Chiclayo noviembre de 2012
Luis Alberto Vives GarniqueDocente experto PEaD – USS Virtual
Introducción a la Ingeniería de
Sistemas
Asignatura
Material para el
Introducción a la Ingeniería de SistemasAsignatura
Guía temática de aprendizajespara entornos virtuales
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
RectorDr. Humberto Llempén Coronel
Vicerrector AcadémicoMg. Alcibíades Sime Marques
Decano de Facultad Derecho Dr. Daniel Cabrera Leonardini
Decano Facultad de Ingeniería Mg. Jorge Lujan López
Decano Facultad de HumanidadesMg. Nicolás Valle Palomino
Decano de la Facultad de Ciencias EmpresarialesMg. Alfredo Díaz Jave
Directora del PEaDMg.. Lady Lora Peralta
Guía temática de aprendizajes para entornos virtuales __________________________Introducción a la Ingeniería de SistemasLuis Alberto Vives Garnique
Universidad Señor de SipánPrograma Académico de Educación a Distancia
Edición y tratamiento didáctico Área de Desarrollo Pedagógico PEaD
Primera edición octubre 2012
Chiclayo: Av. Luis Gonzáles 1004 – Esq. Con Lora y CorderoTeléf. 481615 Campus USS: Carretera a Pimentel km. 5 / Teléf.: 51 – 74 – 481615 Fax: 51 – 74 – 236091http://www.uss.edu.pe/
2
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Índice Pág.
Presentación …………………………………………………..…………………………………………………………………Programación de contenidos de aprendizaje………………………………………………………………………………
PRIMERA SEMANA“Definiciones básicas de fundamentos de programación”
Bienvenida Ruta de aprendizaje primera semana
Tema 1: Definiciones básicas de fundamentos de programación ………………………………………….…………. Introducción al tema Aprendizajes esperados: Capacidad / Actitudes Mapa conceptual referido al tema………………………………………………………………………………………… Desarrollo de los contenidos de aprendizaje
1.1 Concepto de algoritmo - Concepto de programa - Traductores e intérpretes - Los lenguajes de programación
1.2 Datos, tipos de datos y operaciones primitivas - Constantes, variables - Operadores, expresiones.
1.3 Diseño del Algoritmo - Pseudocódigo - Diagrama de flujo - Diagrama N – S
1.4 Concepto de Programa - Elementos Básicos de un Programa
1.5 Uso del Lenguaje de Programación1.6 Sintaxis del Lenguaje
Lecturas recomendadas (para ampliar conocimientos de la primera semana) Conclusiones (de la primera semana) Metacognición de la primera semana Control de lectura primera semana
SEGUNDA SEMANA“Estructuras de control I”
Tema 2: Estructuras de control I …………………………………………………………………………………….…………. Introducción al tema Aprendizajes esperados: Capacidad / Actitudes Mapa conceptual referido al tema………………………………………………………………………………………… Desarrollo de los contenidos de aprendizaje
2.1 Estructuras Secuenciales 2.2 Estructuras Condicionales
- Simples (if) - Dobles (if – else) - Múltiples (Switch)
2.3 Conversión de Algoritmos a Programas 2.4 Creación de programas en Java
Lecturas recomendadas (para ampliar conocimientos de la segunda semana) Conclusiones (de la segunda semana) Metacognición de la segunda semana Control de lectura segunda semana
TERCERASEMANA““Estructuras de Control II”
Bienvenida Ruta de aprendizaje primera semana
Tema 3: Estructuras de Control II …………………….…………………………………………..…. Introducción al tema Aprendizajes esperados: Capacidad / Actitudes Mapa conceptual referido al tema………………………………………………………………………………………… Desarrollo de los contenidos de aprendizaje
3.1 Estructuras Repetitivas (Mientras / Hacer, Mientras (While, Do-while)3.2 Estructura Repetitiva Desde (For)3.3 Conversión de Algoritmos a Programas
0506
07
08
3
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
3.4 Creación de programas en Java Lecturas recomendadas (para ampliar conocimientos de la tercera semana) Conclusiones (de la tercera semana) Metacognición de la tercera semana Control de lectura tercera semana
CUARTA SEMANA“Introducción a la Estructura de Datos”
Bienvenida Ruta de aprendizaje primera semana
Tema 4: Introducción a la Estructura de Datos ………………………………………………….…………. Introducción al tema Aprendizajes esperados: Capacidad / Actitudes Mapa conceptual referido al tema………………………………………………………………………………………… Desarrollo de los contenidos de aprendizaje
4.1 Arreglos unidimensionales4.2 Operaciones con vectores4.3 Métodos de ordenamiento y búsqueda
Lecturas recomendadas (para ampliar conocimientos de la cuarta semana) Conclusiones (de la cuarta semana) Metacognición de la cuarta semana Control de lectura cuarta semana
QUINTA SEMANA““Cadenas de Caracteres.”
Bienvenida Ruta de aprendizaje primera semana
Tema 5: Cadenas de Caracteres.………………….………………………………………………….…………. Introducción al tema Aprendizajes esperados: Capacidad / Actitudes Mapa conceptual referido al tema………………………………………………………………………………………… Desarrollo de los contenidos de aprendizaje
5.1 Cadena de Caracteres 5.2 Operaciones y funciones de cadenas.
Lecturas recomendadas (para ampliar conocimientos de la quinta semana) Conclusiones (de la quinta semana) Metacognición de la quinta semana Control de lectura quinta semana
SEXTA SEMANA“Introducción a métodos”
Bienvenida Ruta de aprendizaje primera semana
Tema 6: Introducción a métodos ………………………………..………………………………………………….…………. Introducción al tema Aprendizajes esperados: Capacidad / Actitudes Mapa conceptual referido al tema………………………………………………………………………………………… Desarrollo de los contenidos de aprendizaje
6.1 Un Programa6.2 Una Función6.3 Una Subrutina (o Procedimiento)
Lecturas recomendadas (para ampliar conocimientos de la sexta semana) Conclusiones (de la sexta semana) Metacognición de la sexta semana Control de lectura sexta semana
SÉPTIMA SEMANA
“Arreglos dimensionales” Bienvenida Ruta de aprendizaje primera semana
Tema 7: Arreglos dimensionales ………………………………..………………………………………………….…………. Introducción al tema Aprendizajes esperados: Capacidad / Actitudes Mapa conceptual referido al tema…………………………………………………………………………………………
4
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Desarrollo de los contenidos de aprendizaje7.1 Arreglos bidimensionales7.2 Operaciones con arreglos bidimensionales7.3 Exposiciones Finales
Lecturas recomendadas (para ampliar conocimientos de la séptima semana) Conclusiones (de la séptima semana) Metacognición de la séptima semana Control de lectura séptima semana
Referencias bibliográficas Glosario
5
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
PresentaciónEs una enorme satisfacción presentar, la Guía temática de aprendizajes para entornos virtuales de la asignatura Fundamentos de programación, que hemos elaborado según los lineamientos de planificación curricular y diseño didáctico, estipulados en el modelo educativo del Programa Académico de Educación Superior a Distancia - Virtual de la Universidad Señor de Sipán.
En este documento, se desarrollan estructuralmente los contenidos de aprendizaje planificados en el sílabo del curso y que corresponden al plan de estudio de la escuela Académico profesional de Ingeniería de Sistemas.
Para lograr las finalidades exigidas por la metodología e-learning, en el tratamiento didáctico de los contenidos hemos incluido textos, imágenes, videos, direcciones electrónicas, pág. web, etc. buscando siempre la comprensión de las temáticas abordadas, sin descuidar el rigor científico de la asignatura. Además, con nuestra producción buscamos en todo momento que el alumno a distancia, “sienta” las orientaciones del docente a través de rutas de aprendizaje, actividades significativas y sobre todo identifique constantemente el logro de sus aprendizajes a través de controles de lectura, así mismo conozca los criterios de evaluación que demuestren el logro de las competencias desarrolladas.
Además esta guía cobra relevancia, pues, es el insumo principal para virtualizar nuestro curso Fundamentos de Programaciónj.
Luis Alberto Vives GarniqueDocente experto PEaD – USS Virtual
PROGRAMACIÓN DE CONTENIDOS DE APRENDIZAJE
COMPETENCIAS Implementar algoritmos y su codificación en un lenguaje de programación, aplicando las técnicas de programación, haciendo uso de su
6
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
capacidad lógica, habilidad y destreza, demostrando además capacidades para el trabajo aplicativo y en equipo.
SEMANA TEMAS FINALIDADES FORMATIVAS
Semana 1
del 04 al 11 de mayo
Tema1: Definiciones básicas de fundamentos de programación.1.1. Concepto de algoritmo - Concepto de programa
- Traductores e intérpretes - Los lenguajes de programación .1.2. Datos, tipos de datos y operaciones primitivas
- Constantes, variables - Operadores, expresiones.
.1.3. Diseño del Algoritmo - Pseudocódigo - Diagrama de flujo - Diagrama N – S
.1.4. Concepto de Programa - Elementos Básicos de un Programa
.1.5. Uso del Lenguaje de Programación Java
.1.6. Sintaxis del Lenguaje Java
CapacidadesComprende los conceptos y principios básicos de la algoritmia y la programación, para la resolución de problemas.
Analiza y diseña algoritmos usando diagramas de flujo, pseudocódigos y plasmándolos en un programa, diferenciando la funcionalidad de las estructuras básicas de control.
Utiliza las estructuras básicas de control en la construcción de algoritmos y programas.
Actitudes
Reconoce la oportunidad de aplicar algoritmos y programas en situaciones reales.
Distingue entre los diversos problemas la oportunidad de utilizar estructuras de control.
Es creativo al generar planteamientos y soluciones innovadoras a los problemas que se le presentan.
Semana 2 Tema2: Estructuras de control I1.1. Estructuras Secuenciales 1.2. Estructuras Condicionales
- Simples (if) - Dobles (if – else) - Múltiples (Switch)
1.3. Conversión de Algoritmos a Programas 1.4. Creación de programas en Java
Semana 3 Tema3: Estructuras de Control II
1.5. Estructuras Repetitivas Mientras / Hacer Mientras (While, Do-while)Estructura Repetitiva Desde (For)
1.6. Conversión de Algoritmos a Programas 1.7. Creación de programas en Java
Semana 4Tema4: Introducción a la Estructura de Datos 1.1. Arreglos unidimensionales1.2. Operaciones con vectores1.3. Métodos de ordenamiento y búsqueda
CapacidadesUtiliza eficientemente estructuras de datos estáticas
en la solución de problemas.Aplica adecuadamente algoritmos y programas
recursivos para resolver problemas específicos.Implementa apropiadamente archivos de datos para
su aplicación en problemas de nivel intermedio. Comprende el manejo de memoria de las
estructuras estáticas. Resuelve problemas asociados a la manipulación
de cadenas.
ActitudesAsume una actitud de respeto ante sus semejantes,
mostrándose responsable en las diversas actividades.
Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolución de discrepancias en las opiniones y actitudes de los demás.
Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las diversas actividades.
Semana 5 Tema5: Cadenas de Caracteres.
1.4. Cadena de Caracteres Operaciones y funciones de cadenas.
Semana 6 Tema6: Introducción a métodos1.5. Modularización1.6. Programación con métodos
Semana 7 Tema7: Arreglos dimensionalesArreglos bidimensionales1.7. Operaciones con arreglos bidimensionales1.8. Exposiciones Finales
7
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
«Los mejores programadores… son un orden de magnitud mejores, medidos en cualquier estándar: creatividad conceptual, velocidad, ingenuidad de diseño o capacidad de resolver
problemas»
Randall E. Stross
Bienvenida
Estimados estudiantes ¡bienvenidos! a la primera semana del curso, en la cual conoceremos los fundamentos necesarios para despertar tu lógica, la cual te llevara al mundo de la programación y podrás desarrollar soluciones a problemas de la realidad usando algoritmos y su codificación en un lenguaje de programación.
Ruta de aprendizaje Durante la primera semana que corresponde del 06 al 12 de mayo realizaremos las siguientes actividades, no sin antes haber descargado y revisado el silabo del curso, la guía de aprendizaje y haber respondido la evaluación diagnóstica, luego emprenderemos la siguiente ruta:
Concepto de algoritmo - Concepto de programa Datos, tipos de datos y operaciones primitivas Diseño del Algoritmo Concepto de Programa Uso del Lenguaje de Programación Sintaxis del Lenguaje
Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues estas actividades demandan 10 horas de estudio semanales. Cordialmente
Ing. Luis Alberto Vives GarniqueDocente experto de la asignatura
Tema 1
Primera Semana “Conozcamos los principales conceptos que ayudan a explicar los fundamentos de
la programación, el análisis y diseño de los algoritmos y su codificación en un lenguaje de programación, esto constituye una pieza clave para el desarrollo de
sistema de software”(06 al 12 de mayo)
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
8
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Definiciones básicas de fundamentos de programación
Introducción al tema
Imagínate que deseas realizar un programa sobre el cálculo de horas a pagar de un trabajador promedio, y solo llegas a sentarte frente a tu computadora sin haber planeado como enfrentar el programa, llevas horas y horas ingresando código y probando los resultados. Luego de “x” horas te desesperas y aún no has llegado a resolver lo del pago de horas adicionales trabajadas!. Aquí puedes apreciar un ejemplo de lo que puede suceder si solamente llegas a escribir código y código sin haber planificado antes lo que harías en el programa.
Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este primer tema:
Capacidades Comprende los conceptos y principios básicos de la algoritmia y la programación, para la
resolución de problemas.
Actitudes Reconoce la oportunidad de aplicar algoritmos y programas en situaciones reales. Distingue entre los diversos problemas la oportunidad de utilizar estructuras de control. Es creativo al generar planteamientos y soluciones innovadoras a los problemas que se le
presentan.
Mapa conceptual referido al tema
Observa detenidamente el siguiente esquema, en el encontrarás de un “vistazo” de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
9
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Fuente: Elaboración propia
Desarrollo de los contenidos de aprendizaje
1.1 ALGORITMOSSe deriva de la traducción al latín de la palabra árabe Alkhowarismi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
10
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos.
Características de los Algoritmos
1. Preciso, tiene que indicar el orden de realización en cada paso. 2. Definido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe
obtener el mismo resultado. 3. Finito, es decir, que el algoritmo tiene que tener un número determinado de pasos.
Ejemplos de algoritmos cotidianos:A. Ver una película
1. Buscar el DVD de la película
2. SI el televisor y el DVD se encuentran apagados, encenderlos
3. Sacar el DVD de la película del estuche
4. Introducirlo en el DVD casetera
5. Tomar el control del televisor y del DVD
6. Dirigirme al sofá
7. Ponerme cómodo
8. Disfrutar la película
Fíjate como he descrito en estos pasos el algoritmo para poder ver una película en el DVD, este pequeño algoritmo cumple con los requisitos descritos arriba, ya que cada paso precisa un orden y tiene un orden de pasos finitos. En este algoritmo aparece la palabra SI remarcada en mayúsculas, el uso de esta palabra la veremos más adelante, cuando discutamos sobre las estructuras de control.Los algoritmos se pueden expresar por fórmulas, diagramas de flujo, y pseudocódigos conocidos como herramientas de programación. Esta última representación es la más utilizada por su sencillez y parecido al lenguaje humano.B. Cambiar una llanta a un carro.
1. Inicio.
2. Traer gata.
3. Levantar el coche con la gata.
4. Aflojar tornillos de las llantas.
5. Sacar los tornillos de las llantas.
6. Quitar la llanta.
7. Poner la llanta de repuesto.
8. Poner los tornillos.
9. Apretar los tornillos.
10. Bajar la gata.
11. Fin.
1.2 Definición de Lenguajes Algorítmicos
Los algoritmos se pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle.
11
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera:
Lenguaje Natural
Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan términos especializados de una determinada ciencia, profesión o grupo.
Lenguaje de Diagrama de Flujo
Es aquél que se vale de diversos símbolos para representar las ideas o acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero requiere de etapas posteriores para implementarse en un sistema de cómputo.
Lenguaje Natural de Programación
Son aquéllos que están orientados a la solución de problemas que se definen de una manera precisa. Generalmente son aplicados para la elaboración de fórmulas o métodos científicos.
Lenguaje de Programación:
Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.
Los lenguajes de programación pueden clasificarse por diversos criterios, siendo el más común su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de la máquina.
1.3 Los principales tipos de lenguajes utilizados son tres:
Lenguaje Máquina
Son aquéllos que están escritos en lenguajes directamente inteligibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario.
Las instrucciones en lenguaje máquina dependen del hardware de la computadora y, por tanto, diferirán de una computadora a otra.
Ventajas del Lenguaje Máquina
Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior, lo que supone una velocidad de ejecución superior a cualquier otro lenguaje de programación. En la actualidad, las desventajas superan a las ventajas, lo que hace prácticamente no recomendables a los lenguajes máquinas.
Lenguajes de Bajo Nivel
Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos. Por
12
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés: ADD, SUB, DIV, etc.; en español: SUM, RES, DIV, etc.
Una instrucción típica de suma sería:
ADD M, N, P
Esta instrucción significa "sumar el contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P”. Evidentemente es más sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina.
0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador, requiere de una fase de traducción al lenguaje máquina para poder ser ejecutado directamente por la computadora.
El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora.
Ventajas del lenguaje ensamblador frente al lenguaje máquina
Mayor facilidad de codificación y, en general, su velocidad de cálculo.
Lenguajes de Alto Nivel
Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras.
1.4 Fases para la Resolución de ProblemasEn esta sección describimos brevemente las fases o pasos a seguir para la resolución de problemas con ayuda de la computadora.
Definición y Análisis del ProblemaEsta fase requiere una clara definición donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. Dado que se busca una solución se precisan especificaciones de entrada y salida. Para poder definir bien un problema es conveniente responder a las siguientes preguntas: ¿Qué entradas se requieren? (cantidad y tipo) ¿Cuál es la salida deseada? (cantidad y tipo) ¿Qué método produce la salida deseada?
Diseño del AlgoritmoEn la fase de análisis en el proceso de programación se determina que hace el programa. En la fase de diseño se determina como hace el programa la tarea solicitada. Los métodos utilizados para el proceso del diseño se basan en el conocido divide y vencerás. Es decir la resolución de un problema complejo se realiza dividiendo el problema en sub problemas y
13
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
a continuación dividir estos sub problemas en otros de nivel más bajo, hasta que sea implementada una solución en la computadora. Este método se conoce técnicamente como diseño descendente (top-down) o modular. Cada programa bien diseñado consta de un programa principal (el módulo de nivel más alto) que llama a subprogramas (módulos) de nivel más bajo, que a su vez pueden llamar a otros subprogramas.Los módulos pueden ser planeados, codificados, comprobados y depurados independientemente y a continuación combinarlos entre sí. Este proceso implica la ejecución de estos pasos hasta que el programa se ha terminado: Programar un módulo comprobar el módulo Si es necesario, depurar el módulo Combinar el módulo, con el resto de los otros módulos El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar posteriormente.
Implementación del AlgoritmoPara implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos: Codificación Compilación y ejecución
o Verificación o Depuración
Documentación
Codificación: Es la escritura en un lenguaje de programación de la representación de un algoritmo. Dado que el diseño del algoritmo es independiente del lenguaje de programación utilizado en su implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro. Si la codificación original se realizó en papel, previo a la compilación deberá existir un paso conocido como trascripción.
Compilación y ejecución:Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operación se realiza con un editor de texto, posteriormente el programa fuente se convierte en un archivo de programa que se guarda en un disco. El programa fuente debe ser traducido a lenguaje máquina. Este proceso se realiza con el compilador y el sistema operativo que se encarga prácticamente de la compilación. Si al compilar el programa fuente se presentan errores (errores de compilación), es necesario volver a editar el programa, corregir los errores y compilar de nuevo. Esto se repite hasta que ya no se presenten más errores, obteniéndose el programa objeto, el cual todavía no es ejecutable directamente. Al ya no existir errores en el programa fuente se debe instruir al sistema operativo para que efectúe la fase de montaje o enlace, del programa fuente con las librerías del programa del compilador. Este proceso de montaje produce un programa ejecutable.
Documentación:La importancia de la documentación debe ser destacada por su influencia en la etapa final, ya que programas pobremente documentados son difíciles de leer, más difíciles de depurar y casi imposibles de mantener y modificar. Puede ser interna y externa. La documentación interna es la contenida en líneas de comentarios. La documentación externa incluye análisis, diagramas de flujo y/o pseudocodigos, manuales de usuarios con instrucciones para ejecutar el programa y para interpretar los resultados. La documentación es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa. Estos cambios se denominan mantenimiento del programa.
14
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Además es de buena costumbre para todo buen programador, dejar comentado su código, esto es para que el futuro programador pueda darle mantenimiento fácilmente a el programa, o incluso, si es el mismo creador quien debe darle mantenimiento.
Autoevaluación
Explora ahora tu nivel de aprendizaje.
1. Indica la falsedad o veracidad de las siguientes expresiones: 2 puntos cada uno.
Expresionesa. El algoritmo es independiente del Lenguaje de Programación V Fb. Un Algoritmo debe ser preciso V Fc. Si se sigue dos veces un algoritmo, llegamos a obtener dos
respuestas diferentesV F
d. El diagrama de flujo se presenta por medio de códigos V F
2. Que diferencias encuentras entre un Lenguaje de Programación y un Lenguaje de Bajo Nivel3. Describa las fases para resolver problemas con respecto a los algoritmos4. Mencione 5 lenguajes de programación existentes5. Mencione y describa 3 técnicas más usadas para representar los algoritmos.
Taller N° 01Como ejercicio te recomendaría que escribieras algunos algoritmos de sucesos en tu vida cotidiana, como por ejemplo:
1. Encender el auto.2. Ir al cine.3. Hacer un depósito al banco.4. Ir a la playa.5. Imprimir un documento escrito en un procesador de texto.6. Realizar una llamada telefónica desde un teléfono público.7. Cambiar la llanta de un vehículo.8. Comprar una prenda.9. Jugar futbol.10. Registrar Matricula en la USS.11. Hacer un viaje a Lima por avión.12. Quemar un archivo de texto en un Cd.13. Formatear el disco duro de la Pc.14. Crear un carpeta en el disco D:/ de tu Pc.15. Buscar el número de teléfono de un alumno en tu celular16. Quitar un foco quemado de un techo17. Encontrar la media de una lista indeterminada de números positivos terminada con un número
negativo.
15
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.5 ENTIDADES BÁSICAS PARA EL DESARROLLO DE ALGORITMOS
1.5.1 DatosTodos los datos tienen un tipo asociados con ellos que nos servirá para poder conocer con que información trabajaremos. Es decir, cuando ingresemos el sueldo de un trabajador necesitamos que este contenga decimales, o al solicitar la edad de una persona está tiene que estar con números enteros u otros casos. Además la suma entre caracteres no tiene sentido. La asignación de tipos a los datos tiene dos objetivos principales: Detectar errores de operaciones aritméticas en los programas Determinar cómo ejecutar las operaciones.
Tipos de Datos NuméricosDentro de estos tipos se puede hacer mención de los tipos enteros (integer), reales o de coma flotante, y de los exponenciales.
Enteros
Es un conjunto finito de los números enteros. Los enteros son números completos, no tienen componentes fraccionarios o decimales y pueden ser negativos y positivos.
Algunos ejemplos son:
7 -10 15 -50
Reales
Consiste en un subconjunto de los números reales. Estos números siempre tienen un punto decimal y pueden ser positivos o negativos. Un número real consiste de un número entero y una parte decimal. Algunos ejemplos son:
0.52 6.579 -47.23
Tipos de Datos Carácter o Tipo Cadena (String)Los tipos de datos carácter se dividen también en caracteres ASCII, como por ejemplo: a A , /, * ; entre otros.El otro grupo de caracteres son los strings o cadenas de caracteres, como por ejemplo: "Hola Mundo".
Tipo Carácter
Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato de este tipo contiene solo un carácter.
Reconoce los siguientes caracteres:
Caracteres Alfabéticos (A,B,C,…Z,a,b,c…z)
16
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Caracteres Numéricos (0,1,2,…9) Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, …….)
Tipo Cadena (String)
Es una sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofe) o dobles comillas, según el tipo de lenguaje de programación. La longitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o delimitadores.
Ejemplos:
“Hola AMOR” “30 de mayo del 2020” ‘Enunciado cualquiera’
Nota: Los símbolos disponibles para la formulación de caracteres y de cadenas son aquéllos que se encuentran en el código ASCII
MUY MUY IMPORTANTE
Revisa el código ASCII (American Standard Code for Information Interchange).
Indica el valor que tiene la letra A y la letra a, así como también la letra B mayúscula y minúscula.
Resolver: ¿Qué relación encuentras entre sus valores?
Cuadro N°01: Tipos de datos, palabras reservadas y tamaño en Byte
TIPO PALABRA RESERVADA TAMAÑO EN BYTES
sin valor Void 0
carácter Char 1
entero Int 2
coma flotante (simple precisión) Float 4
coma flotante (doble precisión) Doublé 8
Fuente: Elaboración propia
Tipos de Datos LógicosLos tipos lógicos solamente pueden tomar los valores verdadero (true) o falso (false).Se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta será verdadera o falsa, según sea.
And Y Or O Not Negación
1.5.2 Los Identificadores
17
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Representan los nombres de los objetos de un programa (constantes, variables, tipos de datos, procedimientos, funciones, etc.). Es una secuencia de caracteres que puede ser de cualquier longitud, aunque tiene ciertas reglas que hay que seguir, las cuales son:
1. Debe comenzar con una letra o "_" y no puede contener espacios en blanco. 2. Letras, dígitos y caracteres subrayados ("_") están permitidos después del primer carácter. En síntesis un identificador es un método para nombrar a las celdas de memoria en la computadora, en lugar de memorizarnos una dirección de memoria. Se utilizan para nombrar variables, constantes, procedimientos y funciones. Ejemplos
numero horas_trabajadas _prom $total_pago promedio
Constantes
Las constantes son valores que no pueden cambiar en la ejecución del programa o de un algoritmo. Recibe un valor en el momento de la compilación del programa y este no puede ser modificado.
CONSTANTES REALES VALIDAS CONSTANTES REALES NO VALIDAS
1.26-0.34
+5.236
1, 26-0, 34
+5, 236
CONSTANTES TIPO CARÁCTER:‘A’ , ‘B` , ………….. ‘+’ , ‘ – ‘ ,……….’1’ , ‘2’ , ………
Una secuencia de caracteres se denomina una cadena y una constante tipo cadena encerrada entre apóstrofos.Ejemplo:
‘Hola a todos’
‘Feliz Aniversario’
CONSTANTES LOGICAS (BOOLEAN):True (verdadero) o False(Falso)
VariablesLas variables son valores que se pueden modificar durante el desarrollo de un algoritmo o la
ejecución de un programa. Al contrario de las constantes estas reciben un valor, pero este valor
puede ser modificado. Dependiendo del lenguaje de programación hay diversos tipos de
variables: enteros, reales, lógicos, carácter, y de cadena.
Una Variable se identifica por los siguientes atributos:
NOMBRE TIPO
18
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Debe ser significativo y debe tener relación con el objeto que representan.Por Ejemplo:
EDADNOMBRENOTA
Pueden ser de tipo: entero, real o punto flotante; carácter.Siguiendo el Ej.
IntegerStringInteger o real
Clasificación de las Variables
Por su Contenido Por su Uso Numéricas De Trabajo Lógicas Contadores Alfanuméricas (String) Acumuladores
Por su Contenido Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo:
iva=0.15 pi=3.1416 costo=2500
Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos.
Variables Alfanuméricas: Está formada por caracteres alfanuméricos (letras, números y caracteres especiales). Ejemplo:
Letra=’a’ apellido=’lopez’ direccion=’Av. Libertad #190’
Por su Uso
Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa. Ejemplo:
suma=a+b+c
Contadores: Se utilizan para llevar el control del número de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente.
Expresiones
19
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.
Una expresión consta de OPERANDOS y OPERADORES. Las expresiones se clasifican en:
Una
expresión es un conjunto de datos o funciones unidos por operadores aritméticos, los cuales se muestran en la siguiente tabla:
Operador Significado+ Suma- Resta* Multiplicación/ División^ Exponenciación
Mod Módulo
1.5.3 Los OperadoresOperadores Div y Mod
El símbolo / se utiliza para la división real, y el operador Div representa la división entera.
El símbolo mod o % se usa para obtener el residuo de la división de dos números ENTEROS
Expresiónvalores reales
Resultado Expresiónvalores enteros
Resultado
10.5/3.0 3.5 10 Div 3 31/4 0.25 18 Div 2 9
2.0/4.0 0.5 30 Div 30 130/30 1.0 10 Mod 3 16/8 0.75 10 Mod 2 0
Operadores Relacionales
Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lógicos.
Operador Significado< Menor que> Mayor que= Igual que
<= Menor o igual que>= Mayor o igual que<> Diferente de
20
Expresión Resultado
1. Aritméticas
2. Relacionales
3. Lógicas
4. Carácter
Aritméticas
Lógica
Lógica
Carácter
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Operadores Lógicos
Son aquéllos que permiten la combinación de condiciones para formar una sola expresión lógica. Utilizan operandos lógicos y proporcionan resultados lógicos también.
Operador Relaciónnot Negación (No)and Conjunción (Y)or Disyunción (O)xor Disyunción Exclusiva (O/SOLO)
X Y NOT(X) NOT(Y) X AND Y X OR Y X XOR YF F V V F F FV F F V F V VF V V F F V VV V F F V V F
1.5.4 Asignación
La operación de asignación es el modo de darle valores a una variable. La operación de asignación se conoce como instrucción o sentencia de asignación cuando se refiere a un lenguaje de programación.
A fin de manejar datos por medio de variables, estos pueden recibir valores determinados. El tipo de los valores que pueden recibir dependen de la declaración previa de tales variables.
En una asignación se resuelve, primeramente la expresión (al lado derecho del símbolo de asignación) y se asigna el resultado en la variable.
El formato general de asignación es:
Nom_variable ← Expresión
Donde Expresión puede ser una variable o constante, operación, función.
Ejemplo:
A 9
Significa que la variable A se le ha asignado el valor 9. La acción de asignar es destructiva, ya que el valor que tuviera la variable antes de la asignación se pierde y se reemplaza por el nuevo valor. Así en la secuencia de operaciones:
21
Se obtiene Verdadero si:NOT El operando es falsoAND Ambos operandos son verdaderosOR Al menos un operando es verdadero
XOR Solo uno de los operandos son verdadero
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
A 30
A 189
A 9
Cuando se ejecutan, el último valor que toma A será 9, ya que los valores anteriores a este han desaparecido.
Las acciones de asignación se clasifican según sea el tipo de expresiones: Aritméticas, Lógicas y de Caracteres.
Asignación Aritmética
Las expresiones en las operaciones de asignación son aritméticas:
Suma 5+10+2
Se evalúa la expresión 5+10+2 y se asigna a la variable Suma, es decir, 17 será el valor que toma Suma.
Asignación Lógica
La expresión que se evalúa en la operación de asignación es lógica. Supóngase que M, N, y P son variables de tipo lógico.
M 8 < 5
N M o (7 <= 12)
P 7 > 6
Tras ejecutar las operaciones anteriores, las variables M,N,P toman los valores, falso, verdadero, verdadero respectivamente.
Asignación de caracteres
La operación que se evalúa es de tipo carácter.
x 29 de Julio del 2006'
La acción de asignación anterior asigna la cadena de caracteres '29de Julio del 2006' a la variable de tipo carácter x.
1.5.5 Precedencia de OperadoresCuando una expresión aritmética se evalúa, el resultado es un número. Ahora bien, cuando aparecen dos o más expresiones aritméticas, qué operaciones se realizan primero? Una expresión aritmética en programación tiene una sintaxis de la forma:x2+1/2 Hay que observar que esta expresión es totalmente diferente a esta otra (x2+1)/2, por lo que es importante codificar las expresiones aritméticas correctamente.
22
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Para realizar esto se deberán conocer las reglas de evaluación de los operadores, que se estudian a continuación.
1.5.6 Reglas de EvaluaciónTodas las subexpresiones entre paréntesis se evalúan primero. Las subexpresiones entre paréntesis anidados se evalúan de adentro hacia afuera, es decir, que el paréntesis más interno se evalúa primero.
Prioridad de Operaciones: Dentro de una misma expresión o subexpresión, los operadores se evalúan en el siguiente orden:
Nota: Los operadores en una misma expresión o subexpresión con igual nivel de prioridad se evalúan de izquierda a derecha.
1.5.7 Conversión de expresiones aritméticas a expresiones algorítmicas.
Una expresión aritmética tiene una sintaxis de la forma:
12∗√8∗(16
8 )−46+(33−3√27 )+34
Una expresión algorítmica tiene una sintaxis de la forma:½* raíz(8*(16/8))-4^6 +(33 – raiz3(27))+potencia(3,4)
La función raíz, utilizada en expresiones algorítmicas me permite obtener la raíz cuadrada de un número, si a esta sintaxis le agrego un numero como raiz4(numero), estaría referenciando a la raíz cuarta de un número.
Así mismo para la potencia se puede utilizar la sintaxis: base^exponente, también podemos usar la palabra reservada potencia(base, exponente).
Taller N° 2
Explora ahora tu nivel de aprendizaje.
1. Cuáles de los siguientes identificadores no son válidos. a. Xrayo.b. X_Rayo.c. R2D2.d. X.e. 45f. N14g. ZZZ.h. 3µ
2. Cuál de las siguientes constantes no son válidas: a. 234.b. -8.975c. 12E - 5.
23
* , / Multiplicación y divisiónDiv,mod División y Módulo de enteros
+,- Suma y Resta
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
d. 0e. 32,767f. 1/2g. 3.6 E +7.h. 3.5 * 10.
3. Evaluar la siguiente Expresión para A=2 y B=5: 3 * A – 4 * B / A ^ 2
4. Escribir las siguientes expresiones algorítmicas como expresiones algebraicas:
a. b^2 – 4 * a * c
b. 3 * X ^ 4 – 5 * X ^ 3 + X 21 – 17
c. (b + d) / ( c + 4)
d. ( x ^ 2 + y ^ 2 ) ^ (1 / 2)
5. ¿Cuál es el resultado de las siguientes expresiones?
a. -4 * 7+ 2 ^ 3/4- 5
b. 12+ 3 * 7+ 5 * 4
c. (33+ 3 * 4)/ 5
d. 7 mod 5(mod 3)
e. B^2- 4 * A * C
f. (X ^ 2 + Y ^ 2) ^(1/2)
g. (7* (10 – 5) mod 3) * 4+ 9
h. ((-14 / 2) raiz 64 + 100)/ 2*2
i. ((12 + 30) div 2) / (8 – (5 *1))
j. 14 div 3 + 3+(3*3/3)+5/ 3
1.6 Construcción y Representación de Algoritmos1.6.1 Técnicas para la formulación de AlgoritmosLas herramientas de programación más utilizadas comúnmente para diseñar algoritmos son: Descripción Narrada Pseudocódigos Diagramas de flujo Diagramas N-S
Siendo el pseudocódigo el más popular por su sencillez y su parecido al lenguaje humano correctos del programa. Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Ello permitirá que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea representado gráfica o numéricamente, de modo que las sucesivas acciones no dependan de la sintaxis de ningún lenguaje de programación, sino que la descripción pueda servir fácilmente para su transformación en un programa, es decir, su codificación.Descripción Narrada.
24
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada.
Ejemplo 1 Algoritmo para asistir a clases a la USS:
1. Levantarse 2. Bañarse 3. Vestirse 4. Desayunar 5. Cepillarse los dientes 6. Salir de casa 7. Tomar el autobús 8. Llegar a la USS 9. Buscar el aula 10. Ubicarse en un asiento
PSEUDOCÓDIGOSPseudo = falso. El pseudo código no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para las computadoras. Es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema. Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las directrices y los elementos de los lenguajes de programación. Se concibió para superar las dos principales desventajas de los flujogramas: lento de crear y difícil de modificar sin un nuevo redibujo.
Palabras reservadas
Inicio ó Start
Sentencia 1 sentencia 1
Sentencia 2 sentencia 2
……. …….
Fin end
Estilo de escritura de algoritmos / programas
Algoritmo identificador //cabecera
Inicio
// sección de declaraciones //
Var tipo de datos: lista de identificadores
Const lista de identificadores = valor
<sentencia 1>
<sentencia 2> // cuerpo del algoritmo //
25
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
……
Fin
Notas: *Las cadenas de caracteres se encerraran entre comillas*En ocasiones la declaración de constantes y variables la omitiremos.*Utilizar siempre sangrías en los bucles para dar legibilidad al algoritmo/ programa.
Ejemplo:
1. Escriba un algoritmo para expresar en centímetros y pulgadas una cantidad dada en metros. Utilizando conceptos computacionales de variable, entrada de datos y salida de resultados.
La solución considera que 1 metro = 100 centímetros y que 1 pulgada = 2.54 centímetros.
Algoritmo ConversioMetros_Pulgadas_CentimetrosINICIO
Definir metros,centi,pulg Como Real;Escribir "Ingrese la cantidad en metros: "; //mensaje de salidaLeer metros; // ingreso de datoscenti<- metros*100;pulg<-centi/2.54;Escribir "La cantidad de metros convertida a centimetros es: ",centi;Escribir "La cantidad de metros convertida a pulgadas es: ",pulg;
FIN
Otra forma:
Algoritmo ConversioMetros_Pulgadas_CentimetrosSTART
Definir metros,centi,pulg Como Real;write "Ingrese la cantidad en metros: "; //mensaje de salidaread metros; // ingreso de datoscenti<- metros*100;pulg<-centi/2.54;write "La cantidad de metros convertida a centimetros es: ",centi;write "La cantidad de metros convertida a pulgadas es: ",pulg;
EDN
El algoritmo empieza con el nombre del algoritmo: ConversioMetros_Pulgadas_Centimetros, el cual se escribe con la primera letra con mayúscula, no contiene espacios entre las palabras.Luego continua la palabra Start(inicio) y finaliza con la palabra end (fin), entre estas palabras solo se escribe una instrucción o acción por línea.
Continuamos con la definición de variables, las cuales pueden tener las siguientes estructuras:
Var: tipo_dato variable o variables;Ejemplo:Var: real metro, centi, pulg;
Definir variable o variables Como tipo_dato;
26
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
EjemploDefinir metros,centi,pulg Como Real;
La línea precedida por // se llama comentarioRecordar que cada sentencia finaliza con un punto y coma, a excepción de las estructuras de control.El objetivo del pseudocódigo es permitir que el programador se centre en los aspectos lógicos de la solución, evitando las reglas de sintaxis de los lenguajes de programación.No siendo el pseudocódigo un lenguaje formal, los pseudocódigos varían de un programador a otro, es decir, no hay un pseudocódigo estándar.
Diagrama de Flujo (flowchart)
Es una de las técnicas de representación de algoritmo más antigua y a la vez más utilizada, aunque se empleo ha disminuido considerablemente, sobre todo desde la aparición de lenguajes de programación estructurados. Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) estándar mostrados en la figura 3.1 y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar.
FIGURA 3.1:
27
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Reglas para la construcción de diagramas de flujo
a) Todo Diagrama de flujo debe de tener un inicio y un fin
b) Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas, verticales y horizontales.
Valido
Figura.- Inicio/Fin de un diagrama de flujo
Figura 1.18. Uso correcto de flechas en un Diagrama de Flujo.
28
No valido
No valido
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
c) Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión, impresión, conexión o fin de diagrama.
Ejemplo:
1. Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (25%).
El diagrama anterior representa la resolución de un programa que deduce el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas, precio de la hora, y sabiendo que los impuestos aplicados son el 25 por 100 sobre el salario bruto.Los símbolos estándar normalizados por ANSI (abreviatura de America National Standard Institute) son muy variados.
Para el curso de Algoritmos solo se usarán los SÍMBOLOS:
TERMINAL ENTRADA/SALIDA (O TAMBIÉN EL SÍMBOLO DE TECLADO PARA ENTRADA Y EL SÍMBOLO PANTALLA PARA SALIDA) PROCESO DECISIÓN CONECTOR
Figura 1.19. Uso Incorrecto de flechas en un Diagrama de Flujo.
29
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Reglas para el uso de algoritmos
El Diagrama se dibuja de arriba hacia abajo, las figuras se conectan con flechas, en caso de faltar espacio en el papel, se usan conectores para saber dónde continua el diagrama.
Se debe de declarar las variables que se van a utilizar, algunas variables que se reutilizaran constantemente para almacenar un valor, deben de inicializar en 0.
Las variables deben de ser utilizadas de la mismas manera como fueron declaradas, respetando las mayúsculas y minúsculas.
En un Símbolo de Entrada/Salida o Leer/Mostrar debe especificarse si se está usando para entrada o salida en el encabezado del símbolo.
El Símbolo de entrada puede representar la entrada de varias variables a la vez pero deben estar separadas por comas.
El símbolo de salida puede representar la salida de varias variables a la vez pero deben estar separadas por comas
El símbolo de Proceso puede incluir hasta 3 procesos separados por línea
30
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Todo diagrama debe tener un terminal de INICIO y uno de FINAL. Los Rombos de Decisión solo pueden tener una flecha de llegada, pero deben tener 2 salidas obligatorias y el participante debe indicar con un SI el flujo en caso el TEST sea verdadero y con un NO el flujo a seguir en caso el TEST sea Falso.
Diagramas N-S (Nassi-Schneiderman o de Chapin)
Son una herramienta que favorece la programación estructurada y reúne características gráficas propias de diagramas de flujo y lingüísticas propias de pseudocódigos. Constan de una serie de cajas contiguas que se leerán siempre de arriba-abajo.
Nota: Mas adelante vamos ir viendo el resto de representaciones de los diagramas N-S
EJERCICIOS RESUELTOS
1. Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (25%).Solución2:En PseudocódigoInicio
Var:
31
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Enteros: ht,ph,sb,sn,igvLeer (ht, ph)sb← ht*phigv←sb*0.25sn←sb-igvescribir (sb,sn,igv)
FinEn Diagrama de Flujo
2. Construya un Algoritmo, para ingresar 3 notas de un estudiante y publicar su promedio.
Algoritmo NotaFinalINICIO
Definir n1,n2,n3,nf Como Real;Escribir "Ingrese nota 1: ";Leer n1;Escribir "Ingrese nota 2: ";Leer n2;Escribir "Ingrese nota 3: ";Leer n3;nf<-(n1+n2+n3)/3;Escribir "El promedio obtenido es:",nf;
FIN
3. Construya un algoritmo para calcular el total de 3 ventas realizadas por un vendedor y la comisión del vendedor que es el 10% del total de las ventas, así mismo el sueldo del trabajador que se obtiene de sumar su sueldo base más la comisión. Proceso Sueldo
ht: Horas Trabajadasph: Pago por hora trabajadasb: Salario brutosn: Salario Netoigv: Impuesto peruano IGV
32
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Definir sb,vt,v1,v2,v3,ganancia,comision Como Real;comision<-0.10;Escribir "Ingrese el sueldo base: ";Leer sb;Escribir "Ingrese venta 1: ";Leer v1;Escribir "Ingrese Venta 2: ";Leer v2;Escribir "Ingrese Venta 3: ";Leer v3;vt<-v1+v2+v3;ganancia<-sb+(vt*comision);Escribir "Las ventas todales es: ",vt;Escribir "La ganancia del trabajador es: ",ganancia;
FinProceso
4. Construya un Algoritmo para calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos (20 por 100).Aquí se representa mediante un Diagrama N-S
33
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Taller N° 03
Explora ahora tu nivel de aprendizaje.
Escribir un algoritmo para:
a. Sumar dos números enteros.b. Leer un número y escriba su cuadradoc. Calcular la superficie de un circulod. Convertir metros a pies y a pulgadas ( 1 metro = 39.37 pulgadas, 1 pie=12 pulgadas)e. Convierta una temperatura dada en grados Celsius a grados Fahrenheit. Formula: (9/5)C +
32.f. Calcula la longitud de la Hipotenusa de un triángulo rectángulo, conociendo las longitudes
de sus catetos.g. Hacer un programa que pida 2 Radios R1 y R2. Calcule las respectivas áreas de los
círculos y halle la diferencia de áreas y muestre esta diferencia como respuesta.h. Convertir el valor 15 dado en Km. a Decámetro, metros y milímetros.i. Convertir N pulgadas a Metros y a Yardas.j. Calcule el monto parcial (cantidad * precio), el IGV (18% del monto parcial) y el monto total
(monto parcial + IGV) que debe pagarse por comprar una determinada cantidad de un producto, que cuesta determinado precio.
k. En un curso se han establecido tres notas: nota de trabajos T, nota de medio ciclo M y nota de fin de ciclo F, cada una con un peso de 40%, 30% y 30% respectivamente. Calcular el promedio de un alumno.
l. Calcular el salario que recibirá un trabajador, si se conoce el número de horas trabajadas y el pago que recibe por hora. Considere además que por concepto de AFP se le descuenta el 7%.
m. Calcular el número de días que ha vivido una persona a partir de su edad. Considere cada año como 365 días.
n. Ingresar un número que represente segundos y determinar a cuanto equivale en horas, minutos y segundos.
o. La distancia entre dos puntos (X1, Y1) y (X2, Y2) de un plano se puede obtener sacando la raíz cuadrada de la expresión (X2 – X1)2 + (Y2 – Y1)2. Escribir un programa que dados dos puntos por el usuario, calcule la distancia entre esos dos puntos.
p. La gasolina se almacena en tanques cilíndricos de un radio específico. Se necesita un programa que ingresando el valor del radio y la altura hasta que se llene la gasolina, calcule el volumen de gasolina que se tiene. (Volumen del cilindro = PI*Radio*Altura).
Nota: Elija usted la forma que más esté familiarizado de representar los algoritmos.
Lecturas recomendadas
Un algoritmo utilizando seudocódigos puede ser escrito en un editor de texto (el block de notas por ejemplo), y utilizando diagramas de flujo puede ser editado en un diagramador como es
34
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Microsoft Visio (software propietario) o en día (software libre, puede descargarlo en http://dia-installer.de/).
Tomando en cuenta al alumnado que recibirá el curso, consideramos adecuado usar una IDE más atractivo y apropiado para el desarrollo de los algoritmos y los diagramas de flujo. Para ello este curso estará basado en PESEINT, ya que es una IDE de software libre, pensado y documentado para un sencillo uso.
Se le sugerirá al alumno que simplemente baje PESEINT y lo instale.
Se puede bajar PESEINT gratuito de http://pseint.sourceforge.net/index.php?page=descargas.php
Podrá revisar el manual de uso en: http://pseint.sourceforge.net/index.php?page=documentacion.php
Deberá revisar los videos tutoriales desarrollados por nuestro colaborador Jonathan Fred Sánchez Hinostroza, vea: http://www.youtube.com/playlist?list=PLA5ED193B23ACD2D5
Estimado estudiante pon aprueba tus conocimientos adquiridos en el manejo del PESEINT.
Te reto a desarrollar los talleres 1, 2 y 3 utilizando el software PSEINT.
Conclusiones En esta primera semana se presentaron los conceptos básicos para la elaboración de
algoritmos, desde el nombre que le damos al algoritmo, la declaración de variables, las funciones de entrada, y salida y el proceso de manejo de variables, hasta finalizar el algoritmo.
Se ha utilizado algunas técnicas como los diagramas de flujo, los pseudocódigos y los diagramas N-S, para la elaboración de los algoritmos, así como también se propuso el uso del software libre PSEINT que permite generar pseudocódigos y diagramas de flujo, siendo su codificación similar a la los lenguajes de programación.
Metacognición de la primera semanaLas siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras acciones y procesos mentales
¿De la temática abordada que te llamó más la atención?
¿Consideras que aprendiste con los contenidos abordados? ¿Qué parte te tomó más tiempo?
¿Tuviste dificultad con algún tema o actividad? ¿Cómo los solucionaste?
¿Qué acciones realizaste para aprender?
Control de lectura primera semana
35
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
¡Muy bien! Hemos llegado al final de la primera semana, ahora, para comprobar tus logros y nivel de aprendizaje alcanzado en relación a la temática estudiada, responde a las siguientes preguntas:
1. Elaborar un algoritmo en pseudocódigo para Encender el auto.Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
INICIO Abrir la puerta Ubicarse en el asiento del piloto Buscar la llave del auto Insertar la llave en la ranura de contacto Establecer en neutro la palanca de cambio Accionar la llave de contacto. Presionar el acelerador.FIN
2. Elaborar un algoritmo en pseudocódigo para Ir a la playa.Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
INICIO Seleccionar playa de destino Preparar los elementos que se llevaran a la playa Comprar bloqueador adecuado Tomar movilidad de traslado hasta la playa elegida Buscar una ubicación en la playa Instalarse en la playa Desarrollar actividades de recreación Disfrutar de las olas del mar Volver a casaFIN
3. Escribir un algoritmo en pseudocódigo que lea las cuatro notas de un estudiante (practica, exposición, oral, examen parcial), e imprima la nota definitiva del curso.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
INICIO notaPractica es real notaExposición es real notaExamenOral es real notaExamenParcial es real promedio es real
Leer "Ingrese nota de práctica", notaPractica Leer "Ingrese nota de exposición", notaExposición Leer "Ingrese nota de examen oral", notaExamenOral Leer "Ingrese nota de examen parcial", notaExamenParcial
promedio=(notaPractica+notaExposición+notaExamenOral+notaExamenParcial)/4 Escribir "El promedio del curso es: ", promedioFIN
4. Elaborar un programa en JAVA para determinar la hipotenusa de un triángulo rectángulo conocidas las longitudes de sus catetos.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Semana1;
import java.util.Scanner;public class preg9 { public static void main(String[] args) { double ladoA; double ladoB; Scanner teclado=new Scanner(System.in); System.out.println("Ingrese el primer lado del triángulo en cm"); ladoA=teclado.nextDouble();
36
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
System.out.println("Ingrese el segund lado del triángulo en cm"); ladoB=teclado.nextDouble(); System.out.println("La hipotenisa del triángulo es:: "+Math.sqrt((ladoA*ladoB)+(ladoB*ladoB))); }}
5. Elaborar un programa en JAVA que calcule el monto parcial (cantidad * precio), el IGV (18% del monto parcial) y el monto total (monto parcial + IGV) que debe pagarse por comprar una determinada cantidad de un producto, que cuesta determinado precio.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package Semana1;import java.util.Scanner;public class Preg10 { public static void main(String[] args) { float precio; int cantidad; double igv; double subtotal; Scanner teclado=new Scanner(System.in); System.out.println("Ingrese la cantidad de productos a comprar"); precio=teclado.nextFloat(); System.out.println("Ingrese el precio del producto"); cantidad=teclado.nextInt(); subtotal= cantidad* precio; igv=subtotal*0.18; System.out.println("Subtotal: "+subtotal); System.out.println("IGV: "+igv); System.out.println("Subtotal: "+subtotal); System.out.println("Total a pagar: "+(subtotal+igv)); }}
37
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Durante toda la vida, mientras vamos pasando de un ambiente a otro, encontramos novedad y nuevos retos, pequeños y grandes. Si estamos preparados para ellos, vivir y aprender son inseparables.
Peter Senge
Bienvenida
Estimados estudiantes ¡bienvenidos! a la segunda semana del curso, En la cual conoceremos los conceptos básicos de un programa y la sintaxis de un lenguaje de programación, así como también las primeras estructuras de control, útiles para desarrollar nuestros algoritmos y su respectiva codificación.
Ruta de aprendizaje
Durante la segunda semana que corresponde del 13 al 19 de mayo realizaremos las siguientes actividades, emprendiendo la siguiente ruta:
Estructuras Secuenciales Estructuras Condicionales Conversión de Algoritmos a Programas Creación de programas en Java
Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues estas actividades demandan 10 horas de estudio semanales.
Segunda Semana “Analizaremos las diferentes estructuras de control desde las secuenciales, seguidas de las condicionales simples, dobles y múltiples hasta llegar a estructuras anidadas, desarrollando
ejercicios algorítmicos y llevando a programarlo en un lenguaje de programación actual” (13 al 19 de mayo)
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
38
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Cordialmente Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura
Tema 2
Estructuras de Control: Condicionales Simples y Múltiples
Introducción al tema
Los problemas desarrollados en el capítulo anterior usando técnicas algorítmicas, se ejecutan de forma secuencia, es decir una secuencia después de otra, donde el flujo de datos trascurre secuencialmente, esto quiere decir que la entrada de una sentencia es la salida de la anterior sentencia. Esta forma de programar se aprecia en ejercicios sencillos, pero en la vida nada es secuencial, siempre existe alternativas de decisiones que pueden ser dos o muchas alternativas. Esta semana estudiaremos las estructuras de control de selección, para luego aprender estructuras de iteración o repetitivas en los próximos capítulos.
Aprendizajes esperadosConozcamos ahora las capacidades y actitudes a desarrollar en este segundo tema:
Capacidad Comprende los conceptos y principios básicos de la algoritmia y la programación, para la
resolución de problemas.
Actitudes Reconoce la oportunidad de aplicar algoritmos y programas en situaciones reales. Distingue entre los diversos problemas la oportunidad de utilizar estructuras de control. Es creativo al generar planteamientos y soluciones innovadoras a los problemas que se le
presentan.
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
39
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Mapa conceptual referido al tema
Observa detenidamente el siguiente esquema, en el encontrarás de un “vistazo” de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?
Fuente: elaboración propia
Desarrollo de los contenidos de aprendizaje
Esquema2: Mapa conceptual
40
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Las estructuras de control refieren al orden en que las instrucciones de un algoritmo se ejecutarán. El orden de ejecución de las sentencias o instrucciones determina el flujo de control.
Estas estructuras de control son por consiguiente fundamentales en los lenguajes de programación y en los diseños de algoritmos especialmente los pseudocódigos. Las tres estructuras de control básico son:
Secuencial Selección (Simples y Múltiples) Iterativas (Repetición)
1.1. Estructura Secuencial
Es aquélla en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La estructura secuencial tiene una entrada y una salida. Su representación gráfica es la siguiente:
DIAGRAMA DE FLUJO
DIAGRAMA N-S DE UNA ESTRUCTURA SECUENCIAL
PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL
Algoritmo Nombre_Algoritmo
InicioDefinir variables como tipo_dato // Definición de variablesvariable ← valor // Asignando valor a la
variableentrada de datos
41
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Ejemplos
Algoritmo haciendo uso de Pseudocódigo en el software PSeInt
1. Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos (20 por 100).
La ejecución del programa es la siguiente:
Algoritmo Nombre_Algoritmo
InicioDefinir variables como tipo_dato // Definición de variablesvariable ← valor // Asignando valor a la
variableentrada de datos
42
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
La programación del algoritmo en un lenguaje de programación Java, usando una interfaz de desarrollo como Netbeans es la siguiente:
Diagrama de Flujo
43
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.2. Estructuras selectivas
Las estructuras selectivas se utilizan para tomar decisiones lógicas, de ahí que se suelan denominar también estructuras de decisión o alternativas.En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se realza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o bien en español si, entonces, si_no), con una figura geométrica en forma de rombo o bien con un triángulo en el interior de una caja rectangular. Las estructuras selectivas o alternativas pueden ser:
Simples. Dobles. Múltiples.
1.3. Alternativa simple ( si-entonces / if-then)
La estructura alternativa simple si-entonces ejecuta una determinada acción cuando se cumple una determinada condición. La selección si- entonces evalúa la condición y
Si la condición es verdadera, entonces ejecuta la acción S1 (o acciones casi de ser S1 una acción compuesta y constar de varias acciones)
Si la condición es falsa, entonces no hace nada
44
si (condición) entoncesAccionesfin_si
if (condición) thenAccionesendif
CondiciónVerdadera Falsa
Acciones
Figura 1.22. Estructuras alternativas simples: a) Diagrama de Flujo; b) Pseudocódigo; c) Diagrama N-S
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
a) Diagrama de Flujo
b) Pseudocódigo en español
Pseudocódigo en ingles
c) Diagrama N-S
1.3.1.Alternativa Doble (si-entonces-sino / if-then-else)
La estructura anterior es muy limitada y normalmente se necesitara una estructura que permita elegir entre dos opciones o alternativas posibles, en función del cumplimiento o no de una determinada condición. Si la condición es verdadera, se ejecuta la acción S1, si es falsa, se ejecutara la acción S2.
a) Diagrama de Flujo
45
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
b) Pseudocódigo en español
Pseudocódigo en ingles
c) Diagrama N-S
Ejemplo 4.3.
Construya un programa que pida un número A y muestre si el número ingresado es PAR o IMPAR
Solución:
Aquí usaremos el operador MOD. Mod devuelve el residuo de una división por ejemplo 20 MOD 2 resulta 0 ya que al dividir 20 entre 2 da 10 sobrando 0 de residuo, lo cual quiere decir que el numero ingresado es par. Si el residuo fuese diferente de 0, entonces el número ingresado es impar.
46
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
En PseudocódigoInicio
Var:Entero: num
escribir(“Ingrese un numero”)leer(num)si (num mod 2 == 0) entonces
Escribir(“El numero ingresado es par”)si_no
escribir(“El numero ingresado es impar”)fin_si
FinEn Diagrama de Flujo
Ejemplo 4.4Hacer un algoritmo que determine qué número es el mayor de 2 números ingresadosSolución:En PseudocódigoInicio
Var:Entero: a,b
escribir(“Ingrese numero A: ”)leer(a)escribir(“Ingrese numero B: ”)leer(b)si (a>b) entonces
Escribir(“El numero, a , es mayor”)
47
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
si_noEscribir(“El numero, b , es mayor”)
fin_siFinEn Diagrama de Flujo
Ejemplo 4.5Elaborar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayoría o minoría de edad según sea el caso.Solución:En PseudocódigoInicio
Var:Entero: edad
escribir(“Ingrese su edad: ”)leer(edad)si (edad>=18) entonces
Escribir(“Ud. es mayor de edad”)si_no
Escribir(“Ud aun no cumple la mayoría de edad”)fin_si
FinEn Diagrama de Flujo
48
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.4. Alternativa múltiple ( según_sea, caso de)
La estructura de decisión múltiple evaluara una expresión que podrá tomar n valores distintos: 1, 2, 3, 4,…., n. Según que elija uno de estos valores en la condición, se realizara una de las n acciones o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles.
Pseudocódigo en castellano
Según_sea (expresión) hacerCaso valor1_de_la_expresion:
Sentencia,Sentencia,…roptura,
Caso valor2_de_la_expresion:Sentencia,Sentencia,…roptura,
Caso valor3_de_la_expresion:Sentencia,Sentencia,…roptura,
Caso valor4_de_la_expresion:Sentencia,Sentencia,…
49
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Pseudocódigo en castellano
Según_sea (expresión) hacerCaso valor1_de_la_expresion:
Sentencia,Sentencia,…roptura,
Caso valor2_de_la_expresion:Sentencia,Sentencia,…roptura,
Caso valor3_de_la_expresion:Sentencia,Sentencia,…roptura,
Caso valor4_de_la_expresion:Sentencia,Sentencia,…
Figura 1.24. Estructuras según_sea: Pseudocódigo en castellano
Pseudocódigo en Ingles
switch (expresión) Case valor1_de_la_expresion:
Sentencia,Sentencia,…break,
Case valor2_de_la_expresion:Sentencia,Sentencia,…break,
Case valor3_de_la_expresion:Sentencia,Sentencia,…break,
Case valor4_de_la_expresion:Sentencia,Sentencia,…break,
defaultSentencia,Sentencia,…break,
fin_según
Figura 1.25. Estructuras según_sea: Pseudocódigo en ingles
Figura 1.26. Estructuras según_sea: Diagrama de flujo
1 2 3 4 n
50
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Ejemplo 4.6Se desea diseñar un algoritmo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por teclado.Solución:En PseudocódigoAlgoritmo diasSemanaInicio
Var:entero: dia
escribir(“Ingrese un numero del 1 – 7 para saber q día de la ` semana es: ”)
leer(dia)Según_sea (dia) hacer
Caso 1:escribir(“Domingo”)roptura,
Caso 2:escribir(“Lunes”)roptura,
Caso 3:escribir(“Martes”)roptura,
Caso 4:escribir(“Miércoles”)roptura,
Caso 5:escribir(“Jueves”)roptura,
Caso 6:escribir(“Viernes”)roptura,
Caso 7:escribir(“Sábado”)roptura,
Por_defectoescribir(“Valor no permitido”)roptura,
fin_segúnFinEjemplo 4.7Hacer un algoritmo que permita ingresar un día de la semana y según el día permita ingresar al Restaurant “Gourmet” el plato del día. Teniendo en cuenta que el día 1 es lunes y el menú es espesado, martes el menú es arroz con pato, el miércoles el menú es arroz con pollo, el jueves
51
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
el menú es lomito saltado, el viernes el menú es tallarines con salsa roja, el sábado el menú es ceviche y cabrito, el día domingo buffet dominical.Algoritmo Plato_diaInicio
Var:entero: dia
escribir(“Ingrese un numero del 1 al 7: ”)leer(dia)Según_sea (dia) hacer
Caso 7:escribir(“Domingo”)escribir(“Buffet dominical”)roptura,
Caso 1:escribir(“Lunes”)escribir(“Hoy toca Espesado”)roptura,
Caso 2:escribir(“Martes”)escribir(“Hoy arroz con pato”)roptura,
Caso 3:escribir(“Martes”)escribir(“Hoy arroz con pollo”)roptura,
Caso 4:escribir(“Jueves”)escribir(“Hoy Lomito saltado”)roptura,
Caso 5:escribir(“Viernes”)escribir(“Hoy Tallarines con salsa roja”)roptura,
Caso 6:escribir(“Viernes”)escribir(“Hoy ceviche y cabrito”)roptura,
Por_defectoescribir(“Día no valido”)roptura,
fin_segúnFin
1.5. Estructuras de decisión anidadas
Las estructuras de selección si-entonces y si-entonces-si_no implican la selección de una de dos alternativas. Es posible también utilizar la instrucción si para diseñar estructuras de selección que contengan más de dos alternativas. Por ejemplo, una estructura si-entonces puede contener otra estructura si-entonces, y esta estructura si-entonces puede contener otra, y así sucesivamente cualquier número de veces; a su vez, dentro de cada estructura pueden existir diferentes acciones.Las estructuras si interiores a otras estructuras si se denominan anidadas o encajadas.
52
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Así, una estructura de selección de n alternativa o decisión múltiple puede ser construida
utilizando una estructura si con este formato:
Ejemplo 4.8.Diseñar un algoritmo que lea tres números A, B, C y visualice por pantalla el valor del más grande. Se supone que los tres valores son diferentes.Solución:En PseudocódigoInicio
Var:entero: a,b,c
leer(a,b,c)si (a<b) entonces
si (expresión) entoncesacciones
si_nosi (expresión) entonces
Accionessi_no
si (expresión) entoncesAcciones
si_nosi (expresión) entonces
Accionessi_no
.
.
.fin_si
fin_sifin_si
fin_si
Figura 1.27. Estructuras anidadas
53
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
si (a<c)entoncesescribir(“a es mayor”)
si_noescribir(“c es mayor”)
fin_sisi_no
si (b>c)entoncesescribir(“b es mayor”)
si_noescribir(“c es mayor”)
fin_sifin_si
Fin
En Diagrama de Flujo
Ejemplo 4.9.Diseñar un algoritmo que lea tres números A, B, C e imprima los valores máximo y mino. El procedimiento consistirá en comparaciones sucesivas de parejas de números.Solución:
54
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
En PseudocódigoAlgoritmo ordenarInicio
Var:real: a,b,c
escribir (“Deme 3 números: ”)leer(a,b,c)si (a>b) entonces
si (b>c)entoncesescribir(“a,b,c”)
si_nosi (c>a)entonces
escribir(“c,a,b”) entoncessi_no
escribir(“a,c,b”) entoncesfin_si
fin_sisi_no
si (a>c)entoncesescribir(“b, a, c”) entonces
si_nosi (c>b)entonces
escribir(“c, b, a”)entoncessi_no
escribir(b, c, a)entoncesfin_si
fin_sifin_si
Fin
Algunos conceptos:
1. Contador: Es una variable que sirve para llevar la cuenta de las veces que se repite una operación o proceso (procesos). Generalmente se incrementa o decrementa de uno en uno.
2. Acumulador: Es una variable en la cual se va almacenando la suma de los valores sucesivos que va tomando otra variable
3. Inicializar variables: Consiste en indicar o asignar qué valor tiene inicialmente una variable. Este valor por lo general se indica al inicio del algoritmo.
55
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Lecturas recomendadas
Documento 1: " Estructura o esquema de decisión condicional en JAVA. IF ELSE, IF ELSE IF, Ejemplos de uso"
Dirección: Ver carpeta de lecturas: 2_Estructura esquema de decisión condicional en JAVA.pdf
Breve Descripción: Alex Rodriguez en este artículo aborda la naturaleza de los esquemas de control básicos como IF ELSE, IF ELSE IF, muy utilizado en lenguaje JAVA para implementar algoritmos, describiendo su sintaxis, mostrando un ejemplo bastante sencillo comprender.
Documento 2: "Estructuras de control JAVA"
Dirección: Ver carpeta de lecturas: Estructuras de control JAVA.pdf
Breve Descripción: Enrrique García Hernández en su blog presenta ejemplos sencillos pero bastante didácticos de cómo utilizar las estructuras de decisión simple, estructuras condicional, alternativa o selectiva, condiciones dobles, condición múltiple.
Conclusiones
En esta semana de estudio se presentaron las estructuras de control básico, que se utiliza para controlar el flujo de la información dentro de un algoritmo, esto nos permite darle poder decisión a nuestros algoritmos.
Así mismo se presentó como implementarlo en un lenguaje de programación, los ejemplos ilustran de forma clara como sigue el curso de ejecución línea a línea del algoritmo de solución.
Las estructuras de control IF ELSE, pueden anidarse para conseguir controlar múltiples condiciones, sin embargo con la estructura de control múltiple es más sencillo seleccionar entre muchas opciones.
Metacognición de la segunda semana
Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras acciones y procesos mentales
¿De la temática abordada que te llamó más la atención?
¿Consideras que aprendiste con los contenidos abordados? ¿Qué parte te tomó más tiempo?
¿Tuviste dificultad con algún tema o actividad? ¿Cómo los solucionaste?
56
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
¿Qué acciones realizaste para aprender?
Control de lectura segunda semana
¡Muy bien! Hemos llegado al final de la segunda semana, ahora, para comprobar tus logros y nivel de aprendizaje alcanzado en relación a la temática estudiada, responde a las siguientes preguntas:Elabore los siguientes programas en JAVA.
1. Elaborar un programa en pseudocódigo para determinar si un estudiante aprueba o reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 10.5; reprueba en caso contrario.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
INICIOnota1 es realnota2 es realnota3 es realpromedio es real
Leer "Ingresa la primera nota: ",nota1Leer "Ingresa la segunda nota:", nota2Leer "Ingresa la tercera nota:", nota3
promedio=(nota1+nota2+nota3)/3
SI(promedio>=10.5) ENTONCES Escribir "Alumno aprobado con: ",promedioSI_NO Escribir "Alumno desaprobado con: ",promedioFIN_SIFIN
2. Elabore un programa en JAVA para Ingresar un número que represente segundos y determinar a cuanto equivale en horas, minutos y segundos.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package Semana2;import java.util.Scanner;public class preg4 { public static void main(String[] args) { long cantidadSegundos; Scanner teclado=new Scanner(System.in); System.out.println("Ingresa la hora en segundos"); cantidadSegundos=teclado.nextLong(); System.out.println("Cantidad de segundos: "+cantidadSegundos); System.out.println("Cantidad de minutos: "+cantidadSegundos/60); System.out.println("Cantidad de Horas: "+(cantidadSegundos/60)/60); }}
3. Hacer un algoritmo en JAVA que lea los nombres y edades de dos personas e imprima cuál de ellas tiene más edad.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Semana2;
import java.util.Scanner;public class Prog5 { public static void main(String[] args) { String nombre1; String nombre2;
57
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
int edad1; int edad2; Scanner teclado=new Scanner(System.in); System.out.println("Ingrese el nombre de la primera persona"); nombre1=teclado.nextLine(); System.out.println("Ingrese la edad de la primera persona"); edad1=Integer.parseInt(teclado.next()); System.out.println("Ingrese el nombre de la segunda persona"); nombre2=teclado.next(); System.out.println("Ingrese la edad de la segunda persona"); edad2=teclado.nextInt(); if (edad1>edad2) { System.out.println("La persona mayor es: "+nombre1); }else { System.out.println("La persona mayor es: "+nombre2); } }}
4. Hacer un algoritmo en JAVA para una granja donde existen N conejos, N1 blancos y N2 negros. Se venden X negros y Y blancos. Hacer un algoritmo que: Imprima la cantidad de conejos vendida. Si P1 es el precio de venta de los conejos blancos y P2 es el precio de venta de los conejos negros, imprima el
monto total de la venta. Imprima el color de los conejos que se vendieron más.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Semana2;
import java.util.Scanner;public class preg6 { public static void main(String[] args) { int cantidadConejosBlancos; int cantidadConejosNegros; int cantidadConejosBlancosVendidos=0; int cantidadConejosNegrosVendidos=0; Scanner teclado=new Scanner(System.in); System.out.println("Ingrese la cantidad de conejos blancos"); cantidadConejosBlancos=teclado.nextInt(); System.out.println("Ingrese la cantidad de conejos negros"); cantidadConejosNegros=teclado.nextInt(); System.out.println("Total de conejos en la granja: " + (cantidadConejosBlancos+cantidadConejosNegros) +"\n"); System.out.println("Ingrese la cantidad de conejos blancos que desea comprar"); cantidadConejosBlancosVendidos=teclado.nextInt(); System.out.println("Ingrese la cantidad de conejos negros que desea comprar"); cantidadConejosNegrosVendidos=teclado.nextInt();
//10 es el precio de cada conejo System.out.println("Monto recaudado:" +
58
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
(cantidadConejosBlancosVendidos*10)+(cantidadConejosNegrosVendidos*10)); if (cantidadConejosBlancosVendidos>cantidadConejosNegrosVendidos){ System.out.println("Se ha vendido mas conejos blancos"); } else { System.out.println("Se ha vendido mas conejos negros"); } System.out.println("cantidad de conejos blancos vendidos: " + cantidadConejosBlancosVendidos ); System.out.println("cantidad de conejos negros vendidos: " + cantidadConejosNegrosVendidos +"\n"); System.out.println("cantidad de conejos blancos disponible: " + (cantidadConejosBlancos-cantidadConejosBlancosVendidos )); System.out.println("cantidad de conejos negros disponibles: " + (cantidadConejosNegros-cantidadConejosNegrosVendidos) ); }}
5. Hacer un algoritmo en JAVA traductor de los meses del año, si se ingresa 1: imprimir “Enero”, 2: “febrero”, 3: “Marzo” así hasta diciembre.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package Semana2;import java.util.Scanner;public class Prog8 { public static void main(String[] args) { int mes; Scanner teclado=new Scanner(System.in); System.out.println("Ingrese monto total de la factura"); mes=teclado.nextInt(); switch(mes){ case 1: System.out.println("Enero"); break; case 2:System.out.println("Febrero"); break; case 3: System.out.println("Marzo"); break; case 4: System.out.println("Abril"); break; case 5: System.out.println("Mayo"); break; case 6: System.out.println("Junio"); break; case 7: System.out.println("Julio"); break; case 8: System.out.println("Agosto"); break; case 9: System.out.println("Setiembre"); break; case 10: System.out.println("Octubre"); break; case 11: System.out.println("Noviembre"); break; case 12: System.out.println("Diciembre"); break; default: System.out.println("Ingreso incorrecto"); break; } }}
Tercera Semana “Explicaremos las estructuras repetitivas while, do-while y for, desarrollando
ejercicios algorítmicos y llevando a programarlo en un lenguaje de programación actual”
Del 20 al 26 de mayo 59
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
La democracia sólo es posible con el acceso fácil a la información y las buenas comunicaciones.
Y la tecnología es una forma de facilitar las comunicaciones.Tom Clancy
Bienvenida
Estimados estudiantes ¡bienvenidos! a la tercera semana del curso, En la cual conoceremos las estructuras de control repetitivas, útiles para desarrollar nuestros algoritmos y su respectiva codificación.
Ruta de aprendizaje
Durante la tercera semana que corresponde del 20 al 26 de mayo realizaremos las siguientes actividades, no sin antes haber descargado y revisado el silabo del curso, la guía de aprendizaje, luego emprenderemos la siguiente ruta:
Estructuras Repetitivas Mientras / Hacer Mientras (While, Do-while) Estructura Repetitiva Desde (For) Conversión de Algoritmos a Programas Creación de programas en Java
Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues estas actividades demandan 10 horas de estudio semanales.
Cordialmente Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura
Tema 3:
Estructura repetitivas WHILE, DO-WHILE Y FOR
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
60
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Introducción al tema
Son aquellas aplicaciones en las cuales una operación o conjunto de ellas deben repetirse muchas veces.Las estructuras de control que repiten una secuencia de instrucciones un número determinado de veces se denomina bucles y se denomina iteración, cuando se repite la ejecución de una secuencia de acciones.
Entre las Estructuras Repetitivas que utilizaremos en el curso veremos:
Estructura repetitiva WHILE Estructura repetitiva DO-WHILE Estructura repetitiva FOR
Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este cuarto tema:
Capacidades Comprende los conceptos y principios básicos de la algoritmia y la programación, para la
resolución de problemas.Actitudes
Reconoce la oportunidad de aplicar algoritmos y programas en situaciones reales. Distingue entre los diversos problemas la oportunidad de utilizar estructuras de control. Es creativo al generar planteamientos y soluciones innovadoras a los problemas que se le
presentan.
Mapa conceptual referido al tema
Observa detenidamente el siguiente esquema, en el encontrarás de un “vistazo” de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
61
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Fuente: Elaboración propia
Desarrollo de los contenidos de aprendizaje 1.1. Estructura mientras (while)
Mientras (while), pertenece a las estructuras repetitivas y nos permite repetir
el cuerpo del bucle mientras se cumpla una determinada condición. Cuando
se ejecuta la instrucción mientras, se evalúa una expresión lógica (una
expresión booleana), si la expresión evaluada resulta verdadera el programa
62
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
ejecuta las sentencias que se encuentran dentro de la estructura mientras, el
proceso se repite hasta que la expresión lógica sea falsa, este proceso se
repite una y otra vez mientras la expresión booleana (condición) sea
verdadera. El ejemplo anterior quedaría así:
En las estructuras mientras se distingue dos partes:
Ciclo: Conjunto de instrucciones que se ejecutaran repetidamente.
Condición: La evaluación de esta condición permite decidir cuando
finaliza la ejecución del ciclo. La condición se evalúa al inicio del mismo.
Ejemplo 5.1
Lee por teclado un número que represente una cantidad de números que a
su vez se leerán también por teclado. Calcular la suma de todos esos números.
Solución:
En Pseudocódigo
Inicio
Var:
Enteros: n, total
Pseudocódigo en castellanomientras (condición) hacer
Acción S1Acción S2...Acción n
fin_mientras
mientras condición
Acciones
Pseudocódigo en ingleswhile (condición) do
Acción S1Acción S2...Acción n
end_while
Figura 1.28. Estructuras mientras: Diagrama de flujo, Pseudocódigo en castellano y Pseudocódigo en ingles
63
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Real: número, suma←0
leer(n)
total←n
mientras(total>0) hacer
Leer(número)
suma←suma+número
total←total-1
fin_mientras
escribir(“la suma de los”,n, “números es”,suma)
Fin
En Diagrama de Flujo
Ejemplo 5.2
64
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Contar los números enteros positivos introducidos por teclado. Se
consideran dos variables enteras número y contador (contara el número
de enteros positivos). Se supone que se leen números positivos y se
detiene el bucle cuando se lee un número negativo o cero.
Solución:
En Pseudocódigo
InicioVar:
Enteros: numero,contadorcontador←0 leer(numero)mientras(numero>0) hacer
Leer(numero)contador←contador-1
fin_mientrasescribir(“El numero de enteros positivos es”, contador)
Fin
En Diagrama de Flujo
Ejemplo 5.3
Considere los siguientes algoritmos. ¿Qué visualizará y cuántas veces se
ejecuta el bucle?
65
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
a) i←0
mientras(i<6) hacer
escribir(i)
i←i+1
fin_mientras
La salida es el valor de la variable de control I al principio de cada
ejecución del cuerpo del bucle: 0, 1, 2, 3, 4, 5. El bucle se ejecuta seis
veces.
b) i←0
mientras(i<6) hacer
i←i+1
escribir(i)
fin_mientras
La salida será entonces 1, 2, 3, 4, 5 y 6. El cuerpo del bucle se ejecuta
también seis veces. Obsérvese que cuando i=5, la expresión booleana
es verdadera y el cuerpo del bucle se ejecuta; con i=6 la sentencia
escribir se ejecuta, pero a continuación evalúa la expresión booleana y
se termina el bucle.
Métodos para terminar un bucle de entrada
1. Preguntar antes de la iteración
Ejemplo:
Solicito un mensaje al usuario si existen más entradas
Suma ←0
Escribir (`Existen más números en la lista S/ N`)
leer (resp) // variable resp es tipo carácter //
mientras (resp = `S` o resp= `N`) hacer
Escribir (número)
leer (N)
Suma←suma + N
escribir (´Existen más números (S/N)`)
leer (resp)
66
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
fin_mientras
El método correcto para terminar un bucle que lee una lista de
valores es con un centinela, es un valor especial usado para indicar
el final de una lista de datos.
Si la lista de datos son números positivos un valor centinela será
un número negativo, que indique el final de la lista.
Otro Ejemplo:
Calcular la media de un conjunto de notas de alumnos valor centinela -99
que detecte el fin del bucle.
En Pseudocódigo usando un valor centinela:
Inicio
Total←0
N←0 // Número de alumnos//
leer(nota) // la primera nota debe ser distinta de -99 //
mientras (nota <> -99) hacer
Total←total + nota
N←n+ 1
Leer(nota)
fin_mientras
Media←total / N
Escribir (`La media es`, media)
Fin
1.2. Estructura hacer-mientras (“do-while”)
El bucle mientras al igual que el bucle desde que se verá con posterioridad
evalúa la expresión al comienzo del bucle de repetición; siempre se utilizara
para crear bucle pre-test. Los bucles pre-test se denominan también bucles
controlados por la entrada. En numerosas ocasiones se necesita que el
conjunto de sentencias que componen el cuerpo del bucle se ejecuten al
menos una vez sea cual sea el valor de la expresión o condición de evaluación.
Estos bucles se denominan bucles post-test o bucles controlados por la salida.
67
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
El bucle hacer-mientras es análogo al bucle mientras y el cuerpo del bucle se
ejecuta una y otra vez mientras la condición (expresión booleana) es
verdadera. Existe, sin embargo, una gran diferencia y es que el cuerpo del
bucle está encerrado entre las palabras reservadas hacer y mientras, de modo
que las sentencias de dicho cuerpo se ejecutan, al menos una vez, antes de
que se evalué la expresión booleana. En otras palabras, el cuerpo del bucle
siempre se ejecuta, al menos una vez, incluso aunque la expresión booleana
sea falsa.
Ejemplo 5.4
Desarrollar un algoritmo necesario para calcular el factorial de un numero N.
Solución:
En Pseudocódigo
Algoritmo FACTORIAL
Inicio
Var:
entero: i, n
real: factorial
escribir(¨Ingrese un numero¨)
leer(n)
factorial←1
i←1
hacer
factorial←factorial*i
hacerAcciones
mientras (condición)
Figura 1.29. Estructuras hacer-mientras: Diagrama de flujo, Pseudocódigo en castellano.
68
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
i←i+1
mientras(i<=n)
escribir(“El factorial del numero”, n, “es”, factorial)
Fin
Ejemplo 5.5
Escribir los números 1 al 100
Algoritmo uno_cien
Inicio
Var:
Entero: num←1
hacer
escribir(num)
num←num+1
mientras(num<100)
Fin
69
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.3. Estructura desde/para (“for”)
En muchas ocasiones se conoce de antemano el número de veces que se
desean ejecutar las acciones de un bucle. En estos casos en el que el número
de iteraciones es fija, se debe usar la estructura for.
La estructura for ejecuta las acciones del cuerpo del bucle un número
específico de veces y de modo automático controla el número de iteraciones
o pasos a través del cuerpo del bucle. Su representación gráfica es:
70
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Su sintaxis:
for (sentencia inicial; condición; incremento/decremento)
Sentencia;
O para la ejecución repetida de un grupo de sentencias:
for (sentencia inicial; condición; incremento/decremento)
{
grupo de sentencias;
}
La primera parte de la construcción for acostumbra a ser una sentencia de
asignación donde se inicializa alguna variable que controla el número de veces
71
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
que debe ejecutarse el cuerpo del bucle. Esta sentencia se ejecuta una sola
ocasión, antes de entrar por primera vez al cuerpo del bucle.
La segunda parte corresponde a la condición que indica cuando finaliza el
bucle, de la misma forma que en las construcciones iterativas anteriores. En
este caso, la condición se evalúa antes de ejecutar el cuerpo del bucle, por lo
que al igual que en la construcción while, el cuerpo puede ejecutarse entre ( )
y N N veces, donde N depende de la condición.
La tercera parte corresponde normalmente a una sentencia de incremento o
decremento sobre la variable de control del bucle. Esta sentencia se ejecuta
siempre después de la ejecución del cuerpo del bucle.
Lecturas recomendadas
Documento 1: " Estructuras de control repetitivo"
Dirección: Carpeta de lecturas: 3_F_Estructuras de control repetitiva JAVA.pdf
Breve Descripción: Enrrique García Hernández en su blog presenta ejemplos sencillos pero bastante didácticos de cómo utilizar las estructuras de decisión simple, estructuras condicional, alternativa o selectiva, condiciones dobles, condición múltiple.
Documento 2: " Estructuras de control repetitivo 2”Dirección: Carpeta de lecturas: 3_F_Estructuras de control repetitiva 2 JAVA.pdf
Breve Descripción: Este documento encontrado en www.javaya.com.ar se presenta ejercicios y su algoritmo de resolución en lenguaje JAVA, donde utiliza estructuras repetitivas, necesarias para este tipo de problemas.
Conclusiones
En esta semana de estudio se presentaron las estructuras repetitivas, que son una de las estructuras importantes para controlar el flujo del algorimo en forma repetitiva de acuerdo a una condición evaluada cada vez que se desee procesar un grupo de instrucciones.
También en este tema nos hemos dedicado desarrollar algunos ejemplo que ilustran como el flujo del algoritmo se repite hasta el límite establecido, pudiendo comprender la naturaleza de la estructura y su utilización en un cierto tipo de problemas de la realidad.
Metacognición de la tercera semana
72
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras acciones y procesos mentales
¿De la temática abordada que te llamó más la atención?
¿Consideras que aprendiste con los contenidos abordados? ¿Qué parte te tomó más tiempo?
¿Tuviste dificultad con algún tema o actividad? ¿Cómo los solucionaste?
¿Qué acciones realizaste para aprender?
Control de lectura tercera semana
¡Muy bien! Hemos llegado al final de la tercera semana, ahora, para comprobar tus logros y nivel de aprendizaje alcanzado en relación a la temática estudiada, responde a las siguientes preguntas:
1. Elaborar un programa en JAVA para ayudar a una persona que debe realizar un muestreo de 50 personas para determinar el promedio de peso de los niños, jóvenes y viejos que existen en su distrito. Se determina las categorías con base en la tabla siguiente:
Categoría EdadNiños 0-12Jóvenes 13-29Adultos 30-59Viejos 60 en adelante
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Semana3;
import java.util.Scanner;public class preg1 {
public static void main(String[] args) { int edad; int cantidadNiños=0; int cantidadJovenes=0; int cantidadAdultos=0; int cantidadviejos=0; Scanner teclado=new Scanner(System.in); for (int i=1;i<=10;i++){ System.out.println("Ingrese la edad de la "+i+"° persona"); edad=teclado.nextInt(); if (edad>=60){ cantidadviejos=cantidadviejos+1; }else if(edad>=30){ cantidadAdultos=cantidadAdultos+1; }else if(edad>=13){ cantidadJovenes=cantidadJovenes+1; }else if(edad>=0){ cantidadNiños=cantidadNiños+1; } } System.out.println("Cantidad de niños "+cantidadNiños); System.out.println("Cantidad de jovenes "+cantidadJovenes); System.out.println("Cantidad de adultos "+cantidadAdultos); System.out.println("Cantidad de Viejos "+cantidadviejos);
73
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
}}
2. Elaborar un programa en JAVA para ayudar a un entrenador que le ha propuesto a un atleta recorrer una ruta de cinco kilómetros durante 10 días, para determinar si es apto para la prueba de 5 kilómetros o debe buscar otra especialidad. Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones: Que ninguna de las pruebas haga un tiempo mayor a 16 minutos. Que al menos en una de las pruebas realice un tiempo mayor de 14 minutos Que su promedio de tiempos sea menor o igual a 15 minutos.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package Semana3;import java.util.Scanner;public class preg3 { public static void main(String[] args) { int tiempo; boolean estado=true; boolean estado2=false; boolean estado3=false; int suma=0; int contador=1; Scanner teclado=new Scanner(System.in); for (int i=1;i<=10;i++){ System.out.println("Ingrese tiempo del "+i+"° día."); tiempo=teclado.nextInt(); if (tiempo>16) { estado=false; } if (tiempo>=14) { estado2=true; } suma=suma+tiempo; contador=i; } if ((suma/contador)<=15){ estado3=true; } if (estado==true && estado2==true && estado3==true){ System.out.println("Apto para la prueba"); }else{ System.out.println("No apto para la prueba"); } }}
3. Elaborar un programa en JAVA para una frutería que al cerrar el expendio de naranjas al finalizar el día, 15 clientes que aún no han pagado recibirán un 15% de descuento si compran más de 10 kilos. Determinar cuánto percibirá la tienda por esas compras.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Semana3;
import java.util.Scanner;public class preg5 { public static void main(String[] args) {
74
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
double venta=0; double total=0; double cantidad; double precio; Scanner teclado=new Scanner(System.in); for (int i=1;i<=5;i++){ System.out.println("Ingrese la cantidad de producto"); cantidad=teclado.nextDouble(); System.out.println("Ingrese el precio producto"); precio=teclado.nextDouble(); venta=cantidad*precio; if (cantidad>10){ total=total+((venta-(venta*0.15))); }else{ total=total+venta; } } System.out.println("Ingrese totales: "+ total ); }}
4. Elaborar un programa en JAVA para ingresar dos números enteros A y B, y obtener la lista de los números que se encuentran entre A y B, donde A > B.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package Semana3;import java.util.Scanner;public class preg7 { public static void main(String[] args) { int numeroInicial; int numeroFinal; Scanner teclado=new Scanner(System.in); System.out.println("Ingresa número de inicio"); numeroInicial=teclado.nextInt(); System.out.println("Ingresa número final"); numeroFinal=teclado.nextInt(); if (numeroInicial<numeroFinal) { for(int i=numeroInicial;i<=numeroFinal;i++){ System.out.print(i+" "); } }else { System.out.println("El número inicial es mayor que el número final"); } }}
5. Elaborar un programa en JAVA para ingresar N números y calcular el promedio de los pares y el promedio de los impares.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Semana3;
import java.util.Scanner;public class preg10 { public static void main(String[] args) {
75
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
int cantidad; int sumaPares=0; int sumaImpares=0; int numero; int cantidadPares=0; int cantidadImpares=0; Scanner teclado=new Scanner(System.in); System.out.println("Ingrese cantidad de términos de la serie"); cantidad=teclado.nextInt(); for (int i=1;i<=cantidad;i++){ System.out.println("Ingrese número"); numero=Integer.parseInt(teclado.next()); if (numero%2==0){ sumaPares=sumaPares+numero; cantidadPares=cantidadPares+1; }else{ sumaImpares=sumaImpares+numero; cantidadImpares=cantidadImpares+1; } } System.out.println("Promedio de pares: " + (sumaPares/cantidadPares)); System.out.println("Promedio de impares: " + (sumaImpares/cantidadImpares)); }}
Cuarta Semana “Analizaremos las estructuras de datos e iniciaremos explicando los arreglos
unidimensionales, llamados vectores, sus operaciones y los métodos de ordenamiento y búsqueda de datos, desarrollando algoritmos y llevándolo a un
lenguaje de programación.(27 mayo al 02 junio) 76
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
La socialización sólo se presenta cuando la coexistencia aislada de los individuos adopta formas determinantes de cooperación y colaboración
que caen bajo el concepto general de la acción recíproca. Georg Simmel
Bienvenida
Estimados estudiantes ¡bienvenidos! a la cuarta semana del curso, En la cual conoceremos las estructuras de datos e iniciaremos explicando los arreglos unidimensionales, llamados vectores, sus operaciones y los métodos de ordenamiento y búsqueda de datos, desarrollando algoritmos y llevándolo a un lenguaje de programación
Ruta de aprendizaje Durante la cuarta semana que corresponde del27 mayo al 02 junio realizaremos las siguientes actividades, luego emprenderemos la siguiente ruta:
Arreglos unidimensionales Operaciones con vectores Métodos de ordenamiento y búsqueda
•Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues estas actividades demandan 10 horas de estudio semanales.
Cordialmente Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura
Tema 4
Introducción a la Estructura de Datos
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
77
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Introducción al tema
Una estructura de datos es una colección de datos, los tipos de datos utilizados con mayor frecuencia en los diferentes lenguajes de programación son:a. Datos simples:
Integer Real Char boolean
b. Datos estructurados:b.1. Estáticos
Arrays (vectores y matrices) Registros (record) Ficheros (archivos) Conjuntos (set) Cadenas (string)
b.2. Dinámicos Listas (pilas/ colas) Listas enlazadas Árboles Grafos
Aprendizajes esperadosConozcamos ahora las capacidades y actitudes a desarrollar en este cuarto tema:
Capacidades Utiliza eficientemente estructuras de datos estáticas en la solución de problemas. Aplica adecuadamente algoritmos y programas recursivos para resolver problemas
específicos.
Implementa apropiadamente archivos de datos para su aplicación en problemas de nivel intermedio.
Comprende el manejo de memoria de las estructuras estáticas. Resuelve problemas asociados a la manipulación de cadenas
Actitudes Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las
diversas actividades. Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolución de
discrepancias en las opiniones y actitudes de los demás.
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
78
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las diversas actividades.
Mapa conceptual referido al tema
Observa detenidamente el siguiente esquema, en el encontrarás de un “vistazo” de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?
Fuente: Elaboración propia
Desarrollo de los contenidos de aprendizaje
Las variables que hemos utilizado hasta ahora nos permiten el almacenamiento de un solo valor a la vez.
Para resolver cierto tipo de problemas con datos múltiples en forma eficiente, se requiere almacenamiento en conjunto. A esta organización de elementos se le conoce con el nombre de arreglo.
79
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Otra definición de arreglo más completa (Luis Joyanes A.), es un conjunto finito y ordenado de elementos homogéneos. La propiedad "ordenado" significa que el elemento primero, segundo, tercero…enésimo de un arreglo puede ser identificado. Los elementos de un arreglo deberán ser homogéneos, es decir, del mismo tipo de datos. Por ejemplo un arreglo puede estar compuesto de todos sus elementos de tipo cadena, otro puede tener sus elementos de tipo entero, etc. Al tratar el tema de arreglos es necesario conocer el término de dimensión.
Dimensión
Descripción
0 Un solo punto.
1 (vector o lista) Una recta. Contiene largo.
2 (matriz o tabla) Contiene largo y ancho.
3 (cubo) Tiene largo, ancho y fondo.
1.4. Declaración de un arreglo
Nom_variable : Arreglo [dimensión] de Nom_tipoEn donde dimensión especifica:<subíndice inferior> …<subíndice superior>En el orden : Fila, Columna, Fondo.
Ejemplo de una declaración:
0 Dimensión: x =20 donde x, es de tipo Entero.
1 Dimensión:
5 1 2 3 4
x[2]= 5
x : arreglo [1..4] de Enteros.
2 Dimensiones :
1 2 3 4
8
80
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
x[2,4] = 8
x : arreglo [1..4, 1..4] de Enteros.
Dimensiones:x[1,4,2] = 3
x : arreglo[1..3, 1..4, 1..2] de Enteros.
1.5. VectoresSon aquellos de una sola dimensión, por lo que también son llamados arreglos Unidimensionales.
Ejemplo:
Un vector de una dimensión llamado CALIF, que consta de n elementos.
calif(1) calif(2) … calif(n-2) calif(n-1) calif(n)
El subíndice o índice de un elemento (1, 2 …n) designa su posición en la ordenación del vector. Otras posibles notaciones del vector son:a1, a2,…,an En matemáticas y algunos lenguajes(BASIC)A(1), A(2),…A(n)A[1], A[2],…A[n] En programación (Pascal) Los vectores se almacenan en memoria central de la computadora en un orden adyacente. Así, un vector de 50 elementos denominado NUMEROS se representa gráficamente por 50 posiciones de memoria sucesivas. Memoria
NUMEROS(1) Dirección xNUMEROS(2) Dirección x+1NUMEROS(3) Dirección x+2:: NUMEROS(50) Dirección x+49
Cada elemento de un vector se puede procesar como si fuese una variable simple al ocupar una posición de memoria. Así:NUMEROS(25) 75 almacena el valor 75 en la posición 25a del vector NUMEROS y la instrucción de salida : escribir NUMEROS(25). Declaración
81
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
nom _arreglo = arreglo[liminf..limsup] de tipo Donde:nom_arreglo : nombre válido del arreglo.liminf..limsup : límites inferior y superior del rango del arreglo.tipo : tipo de datos de los elementos del arreglo : entero, real, carácter. NOMBRES= arreglo [1..10] de carácter
Significa que NOMBRES es un arreglo (array) unidimensional de 10 elementos (1 a 10) de tipo carácter.
1.5.1. Llenado de un vector Hacer para I = 1 a 10 Leer vec[I] Fin-para
Hacer mientras I <= 10 Leer vec[I] Fin-mientras
I=1 Repetir Leer vec[I]
I = I + 1 Hasta-que I>10
1.5.2. Operaciones con VectoresLas operaciones que se pueden realizar con arreglos durante el proceso
de resolución de un problema son:
Asignación Lectura/Escritura Recorrido (acceso secuencial) Actualizar (añadir, borrar, insertar)
AsignaciónNOMBRES(8) ‘Ana’ Asigna el valor ‘Ana’ al elemento 8 del vector NOMBRES
Lectura/Escritura de Datos
82
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
La Lectura/Escritura de datos en un arreglo u operaciones de entrada/salida normalmente se realizan con estructuras repetitivas, aunque puede también hacerse con estructuras selectivas. Las instrucciones simples de lectura/escritura se representarán como:
leer A Lectura del vector Aescribir A Escritura del vector Aleer V(5) Leer el elemento V(5) del vector V
Acceso Secuencial al Vector (recorrido)Se puede acceder a los elementos de un vector para introducir datos (escribir) en el o bien para visualizar su contenido (leer). Estas operaciones se realizan utilizando estructuras repetitivas, cuyas variables de control (por ejemplo I) se utilizan como subíndices del vector (por ejemplo, X(I). El incremento del contador del bucle producirá el tratamiento sucesivo de los elementos del vector.
Ejemplo :Lectura de 15 valores enteros de un vector denominado TOTAL. TOTAL= array [1.15] de enterodesde i 1 hasta 15 hacer leer TOTAL(i)fin _desde Si se cambian los límite inferior y superior, por ejemplo, 5 y 12, el bucle de lectura sería :desde i 5 hasta 12 hacer leer TOTAL(i)fin_desde La salida o escritura de vectores se representa de un modo similar. desde i 1 hasta 15 hacer escribir TOTAL(i)fin_desdeVisualiza todo el vector completo (un elemento en cada línea independiente). Actualización de un VectorPuede constar de tres operaciones más elementales:
a) Añadir elementos (añade un nuevo elemento al final del vector)Un arreglo A se ha dimensionado a 6 elementos, pero solo se han asignado 4 valores a los elementos A(1), A(2), A(3), A(4), se podrán añadir dos elementos más con una simple acción de asignación.
A(5) 15A(6) 9
83
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
b) Insertar elementos (introduce un elemento en el interior de un vector)
Ejemplo:Se tiene un arreglo NOM de 6 elementos de nombres de personas, en orden alfabético y se desea insertar un nuevo nombre. {Calcular la posición ocupada por el elemento a insertar} P{Inicializar contador de inserciones} i n.mientras i >= P hacer {transferir el elemento actual hacia abajo, a la posición i+1}NOM(i+1) NOM(i) {decrementar contador}i i-1 fin_mientras{Insertar el elemento en la posición P} NOM(P) ‘nuevo elemento’{Actualizar el contador de elementos del vector}n n+1fin
c) Borrar elementos (Elimina elementos de un vector) Algoritmo de BorradoInicio{se utilizará una variable auxiliar AUX, que contendrá el valor del elemento que se desea borrar}AUX NOM(i)desde i j hasta N-1 hacer{llevar elemento j+1 hacia arriba} NOM(i) NOM(i+1)fin_desde{actualizar contador de elementos}{ahora tendrá un elemento menos, N-1}N N-1Fin Ejercicio:
Se desea la lectura y desplegado de 5 nombres. Resuelva el problema por cada uno de los siguientes criterios: a) Lectura y desplegado alternados.b) Todas las lecturas, todos los desplegados.
a) variables:
84
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
string : nomentero : x InicioPara x 1 hasta 5 hacer escribir(‘Nombre ? ‘) leer(nom) escribir( ‘La persona número’, x, ‘ se llama : ‘,nom) FinNota: No se utilizaron arreglos porque no se requería de almacenamiento múltiple. b) variables :nom : Arreglo[1..5] de stringx : Entero Iniciopara x 1 hasta 5 hacerescribir(‘Dame el nombre número’,x,’ ?’)leer(nom[x])para x 1 hasta 5 hacer escribir(‘La persona número ‘, x,’ se llama : ‘,nom[x]) Fin
EJERCICIOS RESUELTOSEJERCICIO 7.1:Ingresar n números dentro de un arreglo y luego imprimirlos.DIAGRAMA N/S:
EJERCICIO 7.2:Calcular la media aritmética de un conjunto de datos.DIAGRAMA N/S:
85
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
CAPITULO 8: MÉTODOS DE BÚSQUEDAS Y ORDENAMIENTOS EN ARREGLOS
1.6. Algoritmos de ordenamientos
1.6.1. ¿Qué es ordenamiento? Es la operación de arreglar los elementos de vector en algún orden secuencial de acuerdo a un criterio de ordenamiento. El ordenamiento se efectúa con base en el valor de algún campo en un registro. El propósito principal de un ordenamiento es el de facilitar las búsquedas de los miembros del conjunto ordenado. Ejemplo de ordenamientos Directorio telefónico, tablas de contenido, bibliotecas y diccionarios, etc. El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en una secuencia tal que represente un orden, el cual puede ser numérico, alfabético o incluso alfanumérico, ascendente o descendente.¿Cuándo conviene usar un método de ordenamiento? Cuando se requiere hacer una cantidad considerable de búsquedas y es importante el factor tiempo.
86
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.6.2. Tipos de ordenamientos: Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los externos.
1.6.2.1. Los internos: Son aquellos en los que los valores a ordenar están en memoria principal, por lo que se asume que el tiempo que se requiere para acceder cualquier elemento sea el mismo (a[1], a[500], etc.).
1.6.2.2. Los externos: Son aquellos en los que los valores a ordenar están en memoria secundaria (disco, cinta, cilindro magnético, etc.), por lo que se asume que el tiempo que se requiere para acceder a cualquier elemento depende de la última posición accesada (posición 1, posición 500, etc.).
Algoritmos de ordenamiento:
Internos:
1. Inserción directa.1. Inserción directa.2. Inserción binaria.
2. Selección directa.1. Selección directa.
3. Intercambio directo.1. Burbuja.2. Shake.
4. Inserción disminución incremental.1. Shell.
5. Ordenamiento de árbol.1. Heap.2. Tournament.
6. Sort particionado.1. Quick sort.
7. Merge sort.8. Radix sort.9. Cálculo de dirección.
Externos: 1. Straight merging. 2. Natural merging. 3. Balanced multiway merging. 4. Polyphase sort. 5. Distribution of initial runs.
1.6.3. Clasificación de los algoritmos de ordenamiento de información:
El hecho de que la información está ordenada, nos sirve para poder encontrarla y accesarla de manera más eficiente ya que de lo contrario se tendría que hacer de manera secuencial.
A continuación se describirán 4 grupos de algoritmos para ordenar información:
1.6.3.1. Algoritmos de inserción:
87
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
En este tipo de algoritmo los elementos que van a ser ordenados son considerados uno a la vez. Cada elemento es INSERTADO en la posición apropiada con respecto al resto de los elementos ya ordenados.
Entre estos algoritmos se encuentran el de INSERCION DIRECTA, SHELL SORT, INSERCIÓN BINARIA y HASHING.
1.6.3.2. Algoritmos de intercambio:
En este tipo de algoritmos se toman los elementos de dos en dos, se comparan y se INTERCAMBIAN si no están en el orden adecuado. Este proceso se repite hasta que se ha analizado todo el conjunto de elementos y ya no hay intercambios.
Entre estos algoritmos se encuentran el BURBUJA y QUICK SORT.
Algoritmos de selección:
En este tipo de algoritmos se SELECCIONA o se busca el elemento más pequeño (o más grande) de todo el conjunto de elementos y se coloca en su posición adecuada. Este proceso se repite para el resto de los elementos hasta que todos son analizados.
Entre estos algoritmos se encuentra el de SELECCION DIRECTA.
Algoritmos de enumeración:
En este tipo de algoritmos cada elemento es comparado contra los demás. En la comparación se cuenta cuántos elementos son más pequeños que el elemento que se está analizando, generando así una ENUMERACION. El número generado para cada elemento indicará su posición.
Los métodos simples son: Inserción (o por inserción directa), selección, burbuja y shell, en dónde el último es una extensión al método de inserción, siendo más rápido. Los métodos más complejos son el quick-sort (ordenación rápida) y el heap sort.
A continuación solo se mostrará el método de ordenamiento más simple.
Método burbuja.
El bubble sort, también conocido como ordenamiento burbuja, funciona de la siguiente manera: Se recorre el arreglo intercambiando los elementos adyacentes que estén desordenados. Se recorre el arreglo tantas veces hasta que ya no haya cambios. Prácticamente lo que hace es tomar el elemento mayor y lo va recorriendo de posición en posición hasta ponerlo en su lugar.
Const MAX = 100A = arreglo[1..MAX] de enterosVariable N:entero
Ordenamiento directo. Método de burbuja.Ordena los elementos del arreglo usando el método de burbuja. Transporta en cada pasada el elemento más pequeño a la parte izquierda del arreglo A de N elementos.
88
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Ordenamiento directo. Método de la burbuja. Contrario al anterior.La lógica de este algoritmo cambia con el anterior, en el hecho de que en cada pasada se lleva el valor más grande a hacia la parte derecha del arreglo A de N elementos.
89
Burbuja1(A,N)Inicio
Declarar i,j,aux:enteroPara i 2 hasta N haga
Para j i hasta 2 inc (–1) hagaSi (A[j-1]>A[j]) entonces
Aux A[j-1]A[j-1] A[j]A[j] aux
Fin siFin para
Fin paraFin
Burbuja2(A,N)Inicio
Declarar i,j,aux:enteroPara i 1 hasta N-1 haga
Para j 1 hasta N-i hagaSi (A[j]>A[j+1]) entonces
Aux A[j]A[j] A[j+1]A[j+1] aux
Fin siFin para
Fin paraFin
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.6.4. Métodos de búsqueda interna (búsqueda en memoria principal)Para todos los algoritmos se cuenta con la siguiente estructura de datos
Const MAX = 100V = arreglo[1..MAX] de enterosVariable N:entero
Existen 4 métodos principales de búsqueda interna: Secuencial lineal Binaria Por transformación de Claves (Solo se menciona, después se añadirán los algoritmos) Árboles de búsqueda (no se tratan aquí)
Búsqueda secuencial lineal.Consiste en la revisión elemento por elemento del arreglo hasta encontrar el dato buscado, o hasta llegar al final del arreglo, sin haberlo encontrado. Se puede diferenciar entre buscar en un arreglo desordenado y buscar en un arreglo ordenado.Búsqueda en arreglos desordenados. Algoritmo que busca secuencialmente el elemento X en el arreglo desordenado V, con N elementos.
90
Secuencialdesordenado(V, N, X)Inicio
Declarar i:enteroDeclarar bandera: booleano
i 1Bandera FALSOMientras Que ((i<=N) y (Bandera=FALSO)) haga
Si (V[i]=X) entoncesBandera VERDADERO
Sinoi i+1
Fin siFin MQSi (bandera=VERDADERO) entonces
Imprimir(“El elemento está en la posición i”);Sino
Imprimir(“El elemento no está en el arreglo”)Fin si
Fin
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Búsqueda en arreglos ordenadosEste algoritmo es similar al anterior, pero se agrega una nueva condición basada en el orden de los elementos. Busca secuencialmente un elemento X en un arreglo ordenado V de N elementos. El orden de V es creciente. {V[1]≤V[2] ≤...≤V[N]}
Búsqueda binariaLa búsqueda binaria, sirve exclusivamente para arreglos ordenados, consiste en dividir el intervalo de búsqueda en dos partes, comparando el elemento buscado con el central, en caso de no ser iguales se redefinen los extremos del intervalo (según si el elemento central es mayor o menor que el buscado). El proceso termina cuando se encuentra el elemento o cuando se anula el intervalo de búsqueda.Algoritmo que busca el elemento X mediante búsqueda binaria en el arreglo ordenado V con N elementos.
91
Secuencialordenado(V, N, X)Inicio
Declarar i:enteroDeclarar bandera: booleano
i 1Bandera FALSOMientras Que ((i<=N) y (Bandera=FALSO) y (X>=V[i]) haga
Si (X=V[i]) entoncesBandera VERDADERO
Sinoi i+1
Fin siFin MQSi (bandera=VERDADERO) entonces
Imprimir(“El elemento está en la posición i”);Sino
Imprimir(“El elemento no está en el arreglo”)Fin si
Fin
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
EJERCICIOS RESUELTOS
EJERCICIO 4.1:Diga si un elemento se encuentra en un arreglo, utilice la búsqueda secuencial.
DIAGRAMA N/S:
92
binaria(V, N, X)Inicio
Declarar izq, cen, der: enteroDeclarar bandera: booleano
Izq 1Der NBandera FALSOMientras Que ((izq<=der) y (Bandera=FALSO)) haga
Cen parteentera((izq+der)/2)Si (X=V[cen]) entonces
Bandera VERDADEROSino
Si (X>V[cen]) entoncesizq cen+1
Sino der cen-1
Fin si Fin si
Fin MQSi (bandera=VERDADERO) entonces
Imprimir(“El elemento está en la posición cen”);Sino
Imprimir(“El elemento no está en el arreglo”)Fin si
Fin
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
EJERCICIO 4.2.Ordenar un conjunto de datos de menor a mayor por el método de la burbuja.DIAGRAMA N/S:
Lecturas recomendadas
Documento 1: " Ejemplo de vectores en JAVA"
Dirección: Ver carpeta de lectura: 4_Ejemplo de vectores en JAVA.pdf
Breve Descripción: Javier García comparte con la comunidad de internet ejemplo de cómo declarar vectores en java, como recorrerlos utilizando la estructura repetitiva FOR y cómo utilizar sentencias de decisión dentro de las repetitivas.
Documento 2: "Introducción a los sistemas de Bases de Datos "
Dirección: Ver carpeta de lectura: 4_Ejemplo de vectores en JAVA 2.pdf
Breve Descripción: www.javaya.com.ar, esta página presenta ejemplos de cómo trabajar con vectores, explicando paso a paso la implementación en lenguaje JAVA, tiene tres problemas propuestos y resueltos utilizando vectores unidimensionales.
93
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Conclusiones En esta semana de estudio se presentaron los diferentes tipos y modelos de base de datos que
fueron apareciendo en el transcurso del desarrollo de estas herramientas que tienen como finalidad, aclarar y tener conceptos claros sobre las bases de datos utilizadas actualmente y en particular tratar de entender la complejidad de este tema.
También se sabe que la Normalización se debe realizar de manera correcta para realizar una buena planificación y organización de los datos que van a almacenarse, el analista debe prever la necesidad de accesar los datos para cumplir con requerimientos inesperados, objetivo que se puede alcanzar mediante la normalización ya mencionada.
Un Sistema Gestor de Base de Datos no es más que un programa que permitirá que los usuarios almacenen, realicen consultas y recuperen los datos a tratar, por tanto permitirá la manipulación de la base de datos para un fin determinado
Metacognición de la cuarta semanaLas siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras acciones y procesos mentales
¿De la temática abordada que te llamó más la atención?
¿Consideras que aprendiste con los contenidos abordados? ¿Qué parte te tomó más tiempo?
¿Tuviste dificultad con algún tema o actividad? ¿Cómo los solucionaste?
¿Qué acciones realizaste para aprender?
Control de lectura cuarta semana
¡Muy bien! Hemos llegado al final de la cuarta semana, ahora, para comprobar tus logros y nivel de aprendizaje alcanzado en relación a la temática estudiada, responde a las siguientes preguntas:Elabore el Diagrama de Flujo, seudocódigo y programación en Java de las siguientes estructuras:Vectores
1. Elaborar un programa en JAVA para ingresar 20 números en un arreglo y mostrar luego, primero la lista de todos los números pares que fueron ingresados y luego la lista de los números negativos.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package semana4;
import java.util.Scanner;public class Ejercicio1 { public static void main(String args[]){int arreglo[]=new int [20];
94
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
ingresa(arreglo); imprime_pares(arreglo); imprime_negativos(arreglo);}
private static void imprime_negativos(int[] arreglo) {int i;System.out.println("Los valores negativos del arreglo son");for(i=0;i<arreglo.length;i++) if (arreglo[i] < 0) System.out.println(arreglo[i]);}
private static void ingresa(int[] arreglo) { int i; Scanner teclado=new Scanner(System.in);
for(i=0;i<arreglo.length;i++){ System.out.println("Ingresa 20 números al arreglo - Numero "+(i+1)+ " ==>"); arreglo[i]=teclado.nextInt(); } }
private static void imprime_pares(int[] arreglo) { int i; System.out.println("Los valores pares del arreglo son"); for(i=0;i<arreglo.length;i++) if (arreglo[i] % 2 == 0) System.out.println(arreglo[i]);}}
2. Elaborar un programa en JAVA para que calcule y devuelva la suma al cuadrado de las
componentes de un vector: ∑i=1
n
V i2
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package semana4;
import java.util.Scanner;public class Ejercicio2 {public static void main(String[] args) { int arreglo[]=new int [10]; ingresa(arreglo); suma(arreglo);
}
private static void suma(int[] arreglo) { int i; int suma = 0; for(i=0;i<arreglo.length;i++) suma = (int) (suma + Math.pow(arreglo[i],2));
System.out.println("la suma al cuadrado de los componentes del vector son: "+ suma );}
95
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
private static void ingresa(int[] arreglo) { int i; Scanner teclado=new Scanner(System.in);
for(i=0;i<arreglo.length;i++){ System.out.println("Ingresa 10 numeros al arreglo - Numero "+(i+1)+ " ==>"); arreglo[i]=teclado.nextInt();}}}
3. Elaborar un programa en JAVA para ingresar N enteros en un arreglo (como máximo 30) y luego de calcular el promedio, muestra la diferencia de cada entero ingresado con relación al promedio.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package semana4;
import java.util.Scanner;public class Ejercicio4 {
public static void main(String[] args) {
int arreglo[] = null; int n = tama(); arreglo = new int [n]; ingresa(arreglo); double promedio = promediar(arreglo); diferencias(arreglo,promedio);}
private static void diferencias(int[] arreglo, double promedio) { int i; System.out.println("Diferencias ==> "); double diferencia; for(i=0;i<arreglo.length;i++){ if( promedio>arreglo[i]) diferencia = promedio-arreglo[i]; else diferencia = arreglo[i]-promedio; System.out.println(arreglo[i] + " ==> " + diferencia); }}
private static double promediar(int[] arreglo) { int i; double suma = 0; for(i=0;i<arreglo.length;i++) suma = (int) (suma + arreglo[i]);
double promedio = suma / arreglo.length; System.out.println("Promedio ==> "+ promedio); return promedio;}
private static void ingresa(int[] arreglo) { int i; Scanner teclado=new Scanner(System.in);
96
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
for(i=0;i<arreglo.length;i++){ System.out.println("Ingresa "+arreglo.length+" numeros al arreglo - Numero "+(i+1)+ " ==>"); arreglo[i]=teclado.nextInt();}
}
private static int tama() {
Scanner teclado=new Scanner(System.in); int n; do{ System.out.println("Ingrese el tamaño del Vector máximo 30 ==>"); n= (int) teclado.nextInt(); }while(n > 30 || n <0); return n;}}
4. Se tienen almacenados en la memoria dos vectores M y N de 10 elementos cada uno. Elaborar un programa en JAVA que escriba la palabra “Iguales” si ambos vectores son iguales y “Diferentes” si no lo son. Serán iguales cuando en la misma posición de ambos vectores se tenga el mismo valor para todos los elementos.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package semana4;
import java.util.Scanner;public class Ejercicio8 {
public static void main(String[] args) { int arregloM[]=new int [10]; int arregloN[]=new int [10]; ingresa(arregloM,"M"); ingresa(arregloN,"N"); igualdad(arregloM,arregloN);}
private static void igualdad(int[] arregloM, int[] arregloN) { int i;boolean indicador=true; for(i=0;i<arregloM.length;i++){ if(arregloM[i]!=arregloN[i]){ indicador=false; break; }}if(indicador){ System.out.println("SON IGUALES"); }else{ System.out.println("NO SON IGUALES"); }
}
private static void ingresa(int[] arreglo, String nom) {
97
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
int i;@SuppressWarnings("resource") Scanner teclado=new Scanner(System.in);
System.out.println("Vector"+nom);
for(i=0;i<arreglo.length;i++){ System.out.println("Ingresa "+arreglo.length+" numeros al arreglo "+nom+" - Numero "+(i+1)+ " ==>"); arreglo[i]=teclado.nextInt();}}}
5. Elaborar un programa en JAVA que lea un número cualquiera y lo busque en el vector X, el cual tiene almacenados 10 elementos. Escribir la posición donde se encuentra almacenado el número en el vector o el mensaje “NO” si no lo encuentra. Búsqueda secuencial.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package semana4;
import java.util.Scanner;public class Ejercicio10 {
public static void main(String[] args) { int arreglo[]=new int [10];ingresa(arreglo);buscar(arreglo);
}
private static void buscar(int[] arreglo) { int i; boolean indicador=true; Scanner teclado=new Scanner(System.in);System.out.print("Ingrese el numero a buscar ==>"); int busca = teclado.nextInt();
for(i=0;i<arreglo.length;i++){ if(arreglo[i]==busca){ System.out.println("Se encontro en la posicion ==> "+i); indicador=false; break; }}
if(indicador){ System.out.println("NO"); }}
private static void ingresa(int[] arreglo) { int i;
Scanner teclado=new Scanner(System.in);
for(i=0;i<arreglo.length;i++){
98
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
System.out.println("Ingresa 10 numeros al arreglo - Numero "+(i+1)+ " ==>"); arreglo[i]=teclado.nextInt(); }}
}
La tarea del programador no es sólo escribir un programa, sino que su tarea principal es dar una prueba formal de que el programa que propone cumple la especificación funcional.
Edsger Dijkstra
Quinta Semana “Explicaremos el uso de vectores con datos de tipo carácter o cadenas
de caracteres, sus operaciones y su desarrollo en técnicas algorítmicas y llevándolo a un lenguaje de programación”
(03 al 09 de junio)
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
99
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Bienvenida
Estimados estudiantes ¡bienvenidos! a la quinta semana del curso, En la cual conoceremos el uso de vectores con datos de tipo carácter o cadenas de caracteres, sus operaciones y su desarrollo en técnicas algorítmicas y llevándolo a un lenguaje de programación.
Ruta de aprendizaje
Durante la quinta semana que corresponde del 03 al 09 de junio realizaremos las siguientes actividades, emprendiendo la siguiente ruta:
Cadena de Caracteres Operaciones y funciones de cadenas.
Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues estas actividades demandan 10 horas de estudio semanales.
Cordialmente Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura
Tema 5
Cadenas de Caracteres
Introducción al tema
La manipulación de cadenas está presente en todos los lenguajes de programación, se utiliza para procesar la información con significado para el usuario que utiliza el lenguaje natural representado por caracteres para representar el significado al mundo real.
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
100
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Se necesita conocer los conceptos, métodos y reglas para manipular cadena de caracteres en el desarrollo de nuestro código, la comparación, concatenación, conteo son algunas de las funciones que estudiaremos esta semana.
Aprendizajes esperadosConozcamos ahora las capacidades y actitudes a desarrollar en este segundo tema:
Capacidad Utiliza eficientemente estructuras de datos estáticas en la solución de problemas. Aplica adecuadamente algoritmos y programas recursivos para resolver problemas específicos. Implementa apropiadamente archivos de datos para su aplicación en problemas de nivel
intermedio. Comprende el manejo de memoria de las estructuras estáticas. Resuelve problemas asociados a la manipulación de cadenas
Actitudes Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las diversas
actividades.
Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolución de discrepancias en las opiniones y actitudes de los demás.
Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las diversas actividades.
101
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Mapa conceptual referido al tema
Observa detenidamente el siguiente esquema, en el encontrarás de un “vistazo” de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?
Fuente: elaboración propia
Desarrollo de los contenidos de aprendizaje
Esquema1: Mapa conceptual sobre cadena de caracteres
102
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.7. Definición de cadenaUna cadena (string) de caracteres es un conjunto de caracteres (incluido el blanco), que se almacenan en un área contigua de la memoria. Pueden ser entradas o salidas a/desde una computadora.
La longitud de una cadena es el número de caracteres que contiene. La cadena que no contiene ningún carácter se le denomina cadena vacía o nula y su longitud es cero; no se debe confundir con una cadena compuesta de solo espacios en blanco.
La representación de las cadenas suele ser con comillas simples o dobles, las comillas actúan como separadores, algunos ejemplos:
’12 de Octubre de 1492’‘¿Hola, cómo estás?’‘ ’‘MEXICO ES GRANDE’
La cadena puede contener entre sus separadores, cualquier carácter válido del código aceptado por el lenguaje y la computadora; el blanco es uno de los caracteres más utilizado.
Una Subcadena es una cadena de caracteres que ha sido extraída de otra de mayor longitud.
’12 de’ es una subcadena de ’12 de Octubre de 1492’‘como estás’ es una subcadena de ‘Hola, cómo estás?’‘XI? es una subcadena de ‘MEXICO ES GRANDE’
1.8. Datos Tipo CarácterAnteriormente se analizaron los diferentes tipos de datos y entre ellos existía el dato tipo carácter (char) que se incorpora en diferentes lenguajes de programación, bien con este nombre, o bien como datos tipo cadena.
1.9. ConstantesUna constante tipo carácter es un conjunto de caracteres válidos encerrados entre comillas, para evitar confundirlos con nombres de variables, operadores, enteros, etc.
1.10. VariablesUna variable de cadena o tipo carácter es una variable cuyo valor es una cadena de caracteres. Las variables de tipo carácter se deben declarar en el algoritmo y según el lenguaje tendrán una notación u otra.
var NOMBRE, DIRECCION, PAIS: carácter
103
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.10.1. Cadenas de Longitud FijaSe consideran vectores de la longitud declarada, con blancos a izquierda o derecha si la cadena no tiene la longitud declarada. Así el ejemplo siguiente:
E S T A C A S A E S U N A R U I N A /// /// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Se declaró con una dimensión de 24 caracteres y los dos últimos se rellenan con blancos.
1.10.2. Cadenas de Longitud Variable con un MáximoSe considera un puntero, con dos campos que contienen la longitud máxima y la longitud actual.
20 17 E S T A C A S A E S G U A Y /// /// ///
Dónde:20 = Longitud máxima17 = Longitud actual
1.10.3. Instrucciones Básicas con CadenasLas instrucciones básicas: asignar y entrada/salida (leer/escribir) se realizan de un modo similar al tratamiento de dichas instrucciones con datos numéricos.
AsignaciónSi la variable NOMBRE ha sido declarada como carácter.
var NOMBRE : caracterLa instrucción de asignación debe contener en el lado derecho de la asignación una constante tipo carácter (una cadena) o bien otra variable tipo carácter. Así:
NOMBRE ← ‘Juan González’Significa que la variable NOMBRE toma por valor la cadena ‘Juan González’
Entrada/SalidaLa entrada/salida desde una computadora se puede realizar en modo carácter, para ello se asignará una cadena de caracteres a una variable tipo cadena.
var A,B,C,D: carácterlas instrucciones:leer A,Bescribir C,D
Asignarán a A y B las cadenas introducidas por el teclado y visualizará o imprimirán en el dispositivo de salida las cadenas que representan las variables C y D.
104
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.10.4. Función de cadenas de caracteresEl tratamiento de cadenas es un tema importante, debido esencialmente a la gran cantidad de información que se almacena en ellas. Según el tipo de lenguaje de programación elegido se tendrá mayor o menor facilidad para la realización de operaciones. Las operaciones con cadenas más usuales son:
Cálculo de la longitud Comparación Concatenación Extracción de subcadenas Búsqueda de información
Cálculo de la longitud de una cadenaLa longitud de una cadena, como ya se ha comentado, es el número de caracteres de la cadena. Así:
'Hola' Tiene 4 caracteres
La operación de determinación de la longitud de una cadena se representará por la función Longitud, cuyo formato es:
Longitud (cadena)La función longitud tiene como argumento una cadena, pero su resultado es un valor numérico entero.Ejemplo:
longitud('Cómo estás?') Proporciona 11. longitud(' ') Cadena de un blanco, proporciona 1. longitud('Hola') Cadena 'Hola' rellenada de un blanco a la izquierda para tener longitud de 5.
ComparaciónEs una operación muy importante sobre todo en la clasificación de datos tipo carácter, que se utiliza con mucha frecuencia en aplicaciones de proceso de datos (clasificaciones de listas, tratamiento de textos, etc.).Los criterios de comparación se basan en el orden numérico del código o juego de caracteres que admite la computadora o el propio lenguaje de programación. En nuestro lenguaje algorítmico utilizaremos el código ASCII como código numérico de referencia.En la comparación de cadenas se pueden considerar dos operaciones más elementales: igualdad y desigualdad.Ejemplos: 'LUIS' < 'LUISITO' verdadera 'ANA' < 'MARTA' verdadera
105
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
'BARTOLO' >= 'BARTOLOME' falsa ConcatenaciónLa concatenación es la operación de reunir varias cadenas de caracteres en una sola, pero conservando el orden de los caracteres en cada una de ellas. El símbolo que representa la concatenación varía de unos lenguajes a otros. Los más utilizados son:
+ // & oLas cadenas para concatenarse pueden ser constantes o variables.
Ejemplos: 'Mayo ' + 'de 1999' = 'Mayo de 1999' x 'Lenguaje' y 'Ensamblador' z x+' '+y z= 'Lenguaje Ensamblador' SubcadenasEsta operación permite la extracción de una parte específica de una cadena: subcadena.Subcadena (cadena, inicio, longitud)Cadena: Es la cadena de la que debe extraerse una subcadena.
Inicio: Es un número o expresión numérica entera que corresponde a la posición inicial de la subcadena.Longitud: Es la longitud de la subcadena.
Ejemplos: subcadena ('abcdefgh',3,6) Equivale a 'cdef' subcadena ('Tecnológico',1,3) Equivale a 'Tec' subcadena ('México',5,2) Equivale a 'co'
BúsquedaEsta operación localiza si una determinada cadena forma parte de otra cadena más grande o buscar la posición en que aparece un determinado carácter o secuencia de caracteres en un texto.El resultado de la función es un valor entero
Posición (cadena, subcadena)subcadena: Es el texto que se trata de localizar.
Ejemplo: nombre 'Marielena' Posición (nombre, 'elena') Produce 5.
La función Posición, al tomar también un valor numérico entero se puede utilizar en expresiones aritméticas o en instrucciones de asignación a variables numéricas.
1.10.5. Funciones internas
106
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Las operaciones que se requieren en los programas exigen en numerosas ocasiones, además de las operaciones aritméticas básicas, ya tratadas, un número determinado de operaciones especiales que se denominan funciones internas, incorporadas o estándar. Por ejemplo la función ln se puede utilizar para determinar logaritmo de un n se puede utilizar para determinar logaritmo de un número y la función sqrt calcula la raíz cuadrada de un número positivo. Existen otras funciones que se utilizan para determinar las funciones trigonométricas.
La siguiente tabla muestra las funciones internas más usuales, siendo x el argumento de la función.
Función Descripción Tipo de Argumento Resultadoabs(x) Valor absoluto de x Entero o real igual que
argumentoarctan(x) Arcotangente de x Entero o real realcos(x) Coseno de x Entero o real realexp(x) Exponencial de x Entero o real realln(x) Logaritmo de x Entero o real reallog10(x) Logaritmo decimal de x Entero o real real
round(x) Redondeo de x Real enterosin(x) Seno de x Entero o real realsqr(x) Cuadrado de x Entero o real igual que
argumentosqrt(x) Raíz cuadrada de x Entero o real real
trunc(x) Truncamiento de x real entero
EJERCICIOS RESUELTOS
Ejercicio 10.1Contar el número de letras 'i' de una frase terminada en un punto. Se supone que las letras pueden leerse independientemente.
Algoritmo letras_ivar N: enteraLetra: carácter Inicio N 0 repetir leer(Letra) si Letra = 'i' entonces N N+1 fin si hasta que Letra = '.' escribir('La frase tiene :', N,' letras i') Fin
107
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Ejercicio 10.2.Aceptar un nombre y proporcionar la cantidad de caracteres que contiene. Inicio escribir('Cuál es el nombre : ') Leer(nom) escribir('Tu nombre tiene ', Longitud(nom),' letras')Fin Ejercicio 10.3.Pedir una cadena que contenga una vez la letra F ('F'). Deberá informarse la posición donde fue encontrada, el carácter previo y el siguiente. Inicio escribir('Dame cadena que contenga [F] ') leer(cad) x Posición('F', cad) escribir('La letra 'F' se encuentra en la posición : ',x) escribir('El carácter anterior es : ' , Subcadena(cad, x-1,1)) escribir('El carácter siguiente es : ', Subcadena(cad, x+1, 1))Fin Ejercicio 10.4.Leer dos caracteres y deducir si están en orden alfabético.variables: CAR1, CAR2 : carácter.Algoritmo ComparaciónInicio Leer CAR1, CAR2 Si CAR1 <= CAR2 entonces escribir('Si se encuentran en orden') sino escribir('Desordenados') Fin_siFin Ejercicio 10.5:Se desea eliminar los blancos de una frase dada terminada en un punto. Se supone que es posible leer los caracteres de la frase de uno a uno.
Análisis del problemaPara poder efectuar la lectura de la frase, almacena ésta en un arreglo de caracteres (F), de modo que F(1) contiene el primer caracter i-ésimo del a frase dada. Construiremos una frase nueva sin blancos en otro arreglo G.
108
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
AlgoritmoLos pasos a dar para la realización del algoritmo son:
Inicializar contador de letras de la nueva frase G. Leer el primer carácter. Repetir
Si el primer carácter no es en blanco, entonces escribir en el lugar siguiente del arreglo F leer carácter siguiente de la frase dada.Hasta que el último carácter se encuentre.
Escribir la nueva frase (G), ya sin blancos. Variables: F : array de caracteres de la frase dada. G : array de caracteres de la nueva frase dada. i : Constador del array F. j : Constador del array G. Algoritmo BlancoInicio i 1 j 0 leer F(i) Repetir Si F(i) <> ' ' entonces j j+1 G(j) F(i) Fin si i i+1 leer F(i) Hasta que F(i) = '.' {escritura de la nueva frase G} Desde i 1 a j hacer escribir G(i) Fin DesdeFin
Ejercicio 10.6.Encontrar un espacio en blanco en una cadena.Iniciovariables: x: entero nom,a,b : cadena
109
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Inicioleer(nom)x=Posición (' ',nom)a= Subcadena (nom,1,x-1)b= Subcadena (nom, x+1, x)Fin
Ejercicio 10.7.Solicitar un nombre y mostrarlo con la inicial en mayúscula.variables: nom,a,b: cadena x,y : carácter z : enteroInicio escribir('Introduce nombre : ') leer(nom) x= Subcadena(nom,1,1) y= MAYUSCULA(x) z= Longitud (nom) a = Subcadena (nom, 2, z-1) Concatenación y+a Escribir('Te llamas : ' , concatenación)FinNota: MAYÚSCULA es una función para convertir letras minúsculas a mayúsculas.
Lecturas recomendadas
Documento 1: " Cadena de caracteres en JAVA"
Dirección: ver carpeta de lecturas: Ejemplos de cadena de caracteres en JAVA.pdf
Breve Descripción: www.javaya.com.ar, esta página presenta ejemplos de cómo trabajar en JAVA con cadena de caracteres, explicando paso a paso la implementación en lenguaje tiene tres problemas propuestos y resueltos utilizando los métodos para el manejo de cadenas.
Conclusiones En esta semana de estudio se presentó como manipular los caracteres y su formación en
cadenas que nos permite conocer si son iguales, la longitud, la unión o si se encuentra un conjunto de caracteres dentro de otro conjunto de caracteres
Lo presentado en esta semana se aplica a cualquier lenguaje de programación imperativo, claro que en cada lenguaje el nombre las funciones pude cambiar pero el principio de manejo es el mismo.
110
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Algunas funciones especiales tales como búsqueda de subcadenas dentro de otro conjunto, están sostenidas en la comparación de caracteres, que es la base de las búsquedas en un conjunto más grande de grupos de cadenas, que permiten implementar buscadores de internet, de documentos, de archivos entre otras aplicaciones.
Metacognición de la quinta semanaLas siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras acciones y procesos mentales
¿De la temática abordada que te llamó más la atención?
¿Consideras que aprendiste con los contenidos abordados? ¿Qué parte te tomó más tiempo?
¿Tuviste dificultad con algún tema o actividad? ¿Cómo los solucionaste?
¿Qué acciones realizaste para aprender?
Control de lectura quinta semana
¡Muy bien! Hemos llegado al final de la quinta semana, ahora, para comprobar tus logros y nivel de aprendizaje alcanzado en relación a la temática estudiada, responde a las siguientes preguntas:
1. Elaborar un programa en JAVA que contenga una función que convierta una cadena de caracteres a mayúsculas y otra que convierta una cadena de caracteres a minúsculas. Escribir una función que reciba como parámetros 2 cadenas de caracteres y determinar si son iguales o si no son diferentes cuál de ellas es la mayor.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución
package Ejercicios;import javax.swing.JOptionPane; public class Ejercicio1 { public static void main(String[] args) { String cMenu = " Elija una de las opciones\n" + " \n" + " 1----Convertir una cadena de caracteres a mayúsculas\n" + " 2----Convertir una cadena de caracteres a minúsculas\n" + " 3----Comparar tamaño de cadenas\n" + " ---------------------------------------------------\n" + " \n" + " *Escriba el número del menú, de la función que desee ejecutar"; JOptionPane.showMessageDialog(null, cMenu, "Conversiones con Cadenas",JOptionPane.INFORMATION_MESSAGE); int option_menu; do{ option_menu = Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese la opción a operar","Sistema",JOptionPane.QUESTION_MESSAGE )); if(option_menu != 1 && option_menu!=2 && option_menu!=3){
111
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
JOptionPane.showMessageDialog(null, "Opción no Válida, intente nuevamente","Sistema",JOptionPane.ERROR_MESSAGE); } }while(option_menu != 1 && option_menu!=2 && option_menu!=3); switch(option_menu){ case 1: cMayusculas(); break;
case 2: cMinusculas(); break;
case 3: cComparation(); break;
default: JOptionPane.showMessageDialog(null, "Gracias","Sistema",JOptionPane.INFORMATION_MESSAGE); break; }; } public static void cMayusculas(){ String cCadena; cCadena = JOptionPane.showInputDialog(null, "Ingrese su cadena","Mayúsculas",JOptionPane.QUESTION_MESSAGE); JOptionPane.showMessageDialog(null, "Cadena Ingresada antes de la conversión\n\n"+cCadena,"Conversiones",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, "Cadena Convertida a Mayúsculas\n\n"+cCadena.toUpperCase(),"Sistema",JOptionPane.INFORMATION_MESSAGE); } public static void cMinusculas(){ String cCadena; cCadena = JOptionPane.showInputDialog(null, "Ingrese su cadena","Minúsculas",JOptionPane.QUESTION_MESSAGE); JOptionPane.showMessageDialog(null, "Cadena Ingresada antes de la conversión\n\n"+cCadena,"Conversiones",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, "Cadena Convertida a Minúsculas\n\n"+cCadena.toLowerCase(),"Sistema",JOptionPane.INFORMATION_MESSAGE); } public static void cComparation(){ String c1Cadena; String c2Cadena; c1Cadena = JOptionPane.showInputDialog(null, "Ingrese su primera cadena","Comparación",JOptionPane.QUESTION_MESSAGE); c2Cadena = JOptionPane.showInputDialog(null, "Ingrese su segunda
112
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
cadena","Comparación",JOptionPane.QUESTION_MESSAGE); if (c1Cadena.compareTo(c2Cadena) == 0) JOptionPane.showMessageDialog(null, "Ambas cadenas tienen la misma longitud","Sistema",JOptionPane.INFORMATION_MESSAGE); else if (c1Cadena.compareTo(c2Cadena) < 0) JOptionPane.showMessageDialog(null, "La cadena 1 es mayor que la cadena 2","Sistema",JOptionPane.INFORMATION_MESSAGE); else if (c1Cadena.compareTo(c2Cadena) > 0) JOptionPane.showMessageDialog(null, "La cadena 2 es mayor que la cadena 1","Sistema",JOptionPane.INFORMATION_MESSAGE); }}
2. Elaborar un programa en JAVA que contenga una función que reciba como parámetros 2 cadenas de caracteres y determine si son iguales o si son diferentes cuál de ellas es el mayor.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package Ejercicios;import javax.swing.JOptionPane; public class Ejercicio3 { public static void main(String[] args) { String c1Cadena; String c2Cadena; c1Cadena = JOptionPane.showInputDialog(null, "Ingrese su primera cadena","Comparación",JOptionPane.QUESTION_MESSAGE); c2Cadena = JOptionPane.showInputDialog(null, "Ingrese su segunda cadena","Comparación",JOptionPane.QUESTION_MESSAGE); if (c1Cadena.equals(c2Cadena)) JOptionPane.showMessageDialog(null, "Ambas cadenas son iguales","Sistema",JOptionPane.INFORMATION_MESSAGE); else if (c1Cadena.compareTo(c2Cadena) < 0) JOptionPane.showMessageDialog(null, "No son iguales, pero la cadena 1 es mayor que la cadena 2","Sistema",JOptionPane.INFORMATION_MESSAGE); else if (c1Cadena.compareTo(c2Cadena) > 0) JOptionPane.showMessageDialog(null, "No son iguales, pero la cadena 2 es mayor que la cadena 1","Sistema",JOptionPane.INFORMATION_MESSAGE); }}
3. Elaborar un programa en JAVA que lea una lista de n nombres de personas (1 nombre y 1 o 2 apellidos) y presente la lista ordenada alfabéticamente pero por apellidos.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Ejercicios;
import javax.swing.JOptionPane;import java.util.Arrays;import java.util.Comparator;public class Ejercicio5 { public static void main(String[] args) { int n; n = Integer.parseInt(JOptionPane.showInputDialog(null, "¿Cuántas personas
113
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
ingresara?","Sistema",JOptionPane.QUESTION_MESSAGE)); String lista[][] = new String[n][3]; for(int i=0;i<n;i++){ JOptionPane.showMessageDialog(null, "Persona ["+(i+1)+"]"); lista[i][0]= JOptionPane.showInputDialog(null, "Ingrese Nombre ["+(i+1)+"]","Sistema",JOptionPane.QUESTION_MESSAGE); lista[i][1]= JOptionPane.showInputDialog(null, "Ingrese Apellido Paterno ["+(i+1)+"]","Concatenación por Posición",JOptionPane.QUESTION_MESSAGE); lista[i][2]= JOptionPane.showInputDialog(null, "Ingrese Apellido Materno ["+(i+1)+"]","Concatenación por Posición",JOptionPane.QUESTION_MESSAGE); } String conc="Lista de Personas Ingresadas\n" + "-------------------------------------\n\n"; for(int i=0;i<n;i++){ String result=""; result="["+(i+1)+"] --> "+ lista[i][0]+" "+lista[i][1]+" "+lista[i][2]+"\n"; conc=conc+result; } JOptionPane.showMessageDialog(null, conc, "Sistema", JOptionPane.INFORMATION_MESSAGE); Arrays.sort(lista, new Comparator<String[]>() { public int compare(String[] entry1, String[] entry2) { final String apell1 = entry1[1]; final String apell2 = entry2[1]; return apell1.substring(0,1).compareTo(apell2.substring(0,1)); } });
conc="Lista de Personas Ordenadas Alfabéticamente " + "\npor Apellido Paterno\n" + "-------------------------------------\n\n"; for(int i=0;i<n;i++){ String result=""; result="["+(i+1)+"] --> "+ lista[i][0]+" "+lista[i][1]+" "+lista[i][2]+"\n"; conc=conc+result; } JOptionPane.showMessageDialog(null, conc, "Sistema", JOptionPane.INFORMATION_MESSAGE); }}
4. Elaborar un programa en JAVA que lea los nombres y notas de n alumnos y presenta en pantalla la lista en orden de méritos y la lista de alumnos aprobados en orden alfabético.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Ejercicios;
import javax.swing.JOptionPane;import java.util.Arrays;import java.util.Comparator;public class Ejercicio8 {
114
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
public static void main(String[] args) { int n; n = Integer.parseInt(JOptionPane.showInputDialog(null, "¿Cuántas alumnos ingresara?","Sistema",JOptionPane.QUESTION_MESSAGE)); String lista[][] = new String[n][2]; for(int i=0;i<n;i++){ JOptionPane.showMessageDialog(null, "Alumno ["+(i+1)+"]"); lista[i][0]= JOptionPane.showInputDialog(null, "Ingrese Nombre ["+(i+1)+"]","Sistema",JOptionPane.QUESTION_MESSAGE); lista[i][1]= JOptionPane.showInputDialog(null, "Ingrese Nota de Alumno ["+(i+1)+"]","Sistema",JOptionPane.QUESTION_MESSAGE); } String conc="Lista de Alumnos y sus Notas\n" + "-------------------------------------\n\n"; for(int i=0;i<n;i++){ String result=""; result="["+(i+1)+"] --> "+ lista[i][0]+" --->["+lista[i][1]+"]\n"; conc=conc+result; } JOptionPane.showMessageDialog(null, conc, "Sistema", JOptionPane.INFORMATION_MESSAGE); Arrays.sort(lista, new Comparator<String[]>() { public int compare(String[] entry1, String[] entry2) { final String nota1 = entry1[1]; final String nota2 = entry2[1]; return -nota1.compareTo(nota2); } }); conc="Lista de Alumnos y sus Notas en Orden de Mérito\n" + "-------------------------------------\n\n"; for(int i=0;i<n;i++){ String result=""; result="["+(i+1)+"] --> "+ lista[i][0]+" --->["+lista[i][1]+"]\n"; conc=conc+result; } JOptionPane.showMessageDialog(null, conc, "Sistema", JOptionPane.INFORMATION_MESSAGE); Arrays.sort(lista, new Comparator<String[]>() { public int compare(String[] entry1, String[] entry2) { final String nombre1 = entry1[0]; final String nombre2 = entry2[0]; return nombre1.substring(0,1).compareTo(nombre2.substring(0,1)); } }); conc="Lista de Alumnos Aprobados en Orden Alfabético\n" + "-------------------------------------\n\n";
115
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
for(int i=0;i<n;i++){ if(Double.parseDouble(lista[i][1])>=10.5){ String result=""; result="["+(i+1)+"] --> "+ lista[i][0]+" --->["+lista[i][1]+"]\n"; conc=conc+result; } } JOptionPane.showMessageDialog(null, conc, "Sistema", JOptionPane.INFORMATION_MESSAGE); }}
5. Elaborar un programa en JAVA que lea una lista de n nombres de personas (1 nombre y 1 o 2 apellidos) y presente la lista ordenada alfabéticamente pero por apellidos.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Ejercicios;
import javax.swing.JOptionPane;import java.util.Arrays;import java.util.Comparator;public class Ejercicio10 { public static void main(String[] args) { int n; n = Integer.parseInt(JOptionPane.showInputDialog(null, "¿Cuántas personas ingresara?","Sistema",JOptionPane.QUESTION_MESSAGE)); String lista[][] = new String[n][3]; for(int i=0;i<n;i++){ JOptionPane.showMessageDialog(null, "Persona ["+(i+1)+"]"); lista[i][0]= JOptionPane.showInputDialog(null, "Ingrese Nombre ["+(i+1)+"]","Sistema",JOptionPane.QUESTION_MESSAGE); lista[i][1]= JOptionPane.showInputDialog(null, "Ingrese Apellido Paterno ["+(i+1)+"]","Concatenación por Posición",JOptionPane.QUESTION_MESSAGE); lista[i][2]= JOptionPane.showInputDialog(null, "Ingrese Apellido Materno ["+(i+1)+"]","Concatenación por Posición",JOptionPane.QUESTION_MESSAGE); } String conc="Lista de Personas Ingresadas\n" + "-------------------------------------\n\n"; for(int i=0;i<n;i++){ String result=""; result="["+(i+1)+"] --> "+ lista[i][0]+" "+lista[i][1]+" "+lista[i][2]+"\n"; conc=conc+result; } JOptionPane.showMessageDialog(null, conc, "Sistema", JOptionPane.INFORMATION_MESSAGE); Arrays.sort(lista, new Comparator<String[]>() { public int compare(String[] entry1, String[] entry2) { final String apell1 = entry1[1]; final String apell2 = entry2[1]; return apell1.substring(0,1).compareTo(apell2.substring(0,1));
116
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
} });
conc="Lista de Personas Ordenadas Alfabéticamente " + "\npor Apellido Paterno\n" + "-------------------------------------\n\n"; for(int i=0;i<n;i++){ String result=""; result="["+(i+1)+"] --> "+ lista[i][0]+" "+lista[i][1]+" "+lista[i][2]+"\n"; conc=conc+result; } JOptionPane.showMessageDialog(null, conc, "Sistema", JOptionPane.INFORMATION_MESSAGE); }}
117
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Una computadora puede ser llamada «inteligente» si logra engañar a una persona haciéndole creer que es un humano.
Alan MathisonTuring
Bienvenida
Estimados estudiantes ¡bienvenidos! a la sexta semana del curso, En la cual Analizaremos los flujos de datos dentro de un algoritmo y un programa de forma modular, llevando a introducir al estudiante a la programación orientada a Objetos.
Ruta de aprendizaje
Durante la sexta semana que corresponde del 10 al 16 de junio realizaremos las siguientes actividades, emprendiendo la siguiente ruta:
Modularización Programación con métodos
Sexta Semana “Analizaremos los flujos de datos dentro de un algoritmo y un
programa de forma modular, llevando a introducir al estudiante a la programación orientada a Objetos”
(10 al 16 de junio)
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
118
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Es preciso recordarte que para que cumplas los objetivos planteas debes planificar tu tiempo, pues estas actividades demandan 10 horas de estudio semanales.
Cordialmente Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura
Tema 6
Introducción a métodos (modularización)
Introducción al tema
Cuando comenzamos a codificar la solución de un problema con algoritmos, poco a poco nos damos cuenta que tenemos muchas líneas de código y que de vez en cuando debemos repetir el código, porque hay rutinas que se repiten con frecuencia, entonces surge la idea de especializar la labor de ciertas partes del código que realiza un mismo cálculo pero con datos distintos, a este proceso de agrupar en procedimientos o funciones lo llamaremos modularización.
Aprendizajes esperadosConozcamos ahora las capacidades y actitudes a desarrollar en este segundo tema:
Capacidad Utiliza eficientemente la especialización de porciones de código en funciones y procedimientos.
Comprende los diferentes tipos de funciones utilizados en la modularización.
Actitudes Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las diversas
actividades.
Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolución de discrepancias en las opiniones y actitudes de los demás.
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
119
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las diversas actividades.
120
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Mapa conceptual referido al tema
Observa detenidamente el siguiente esquema, en el encontrarás de un “vistazo” de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?
Fuente: elaboración propia
Desarrollo de los contenidos de aprendizaje
Esquema1: Mapa conceptual sobre métodos
121
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
1.11. ConceptoEs aquel que está constituido por una o varias instrucciones físicamente contiguas y lógicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa.
Un módulo puede ser: Un Programa Una Función Una Subrutina (o Procedimiento)
1.12. Características de un móduloLos módulos deben tener la máxima cohesión y el mínimo acoplamiento. Es decir, deben tener la máxima independencia entre ellos.La salida del módulo debe ser función de la entrada, pero no de ningún estado interno. En la creación de los módulos deben cumplirse tres aspectos básicos: descripción, rendimiento y diseño. En la descripción se definen las funciones y objetivos del programa. Para obtener el máximo rendimiento se ha de comprobar que el programa realice el proceso aprovechando al máximo todos los recursos de los que dispone. En cuanto al diseño, se debe comprobar la estructura que sigue el módulo, así como la estructura de los datos y la forma de comunicaciones entre los diversos y diferentes módulos.
Conforme se extiende el tamaño de los algoritmos, se hace más difícil su revisión, actualización y/o corrección.
Una política común para solventar este problema consiste en la modularización. Esto significa que el algoritmo se fragmenta en partes llamadas módulos. En realidad, es un método de diseño que tiende a dividir el problema, de forma lógica, en partes perfectamente diferenciadas que pueden ser analizadas, programadas y puestas a puntos independientes.
Realmente la programación modular es un intento para diseñar programas, de forma tal que cualquier función lógica pueda ser intercambiada sin afectar a otras partes del programa. Algunas ventajas de utilizar módulos son: Un programa modular es fácil de mantener y modificar. Un programa modular es más fácil de escribir y depurar (ejecutar, probar y poner a punto). Un programa modular es más fácil de controlar. El desglose de un problema en módulos
permite encomendar los módulos más complejos a los programadores más experimentados y los más sencillos a los programadores nóveles.
Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas.
Desventajas del uso de módulos: No se dispone de algoritmos formales de modularidad, por lo que a veces los
programadores no tienen claras las ideas de los módulos.
122
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
La programación modular requiere más memoria y tiempo de ejecución. Objetivos de la programación modular: Disminuir la complejidad. Aumentar la claridad y fiabilidad. Disminuir el coste. Aumentar el control del proyecto. Facilitar la ampliación del programa mediante nuevos módulos. Facilitar las modificaciones y correcciones al quedar automáticamente localizadas en un
módulo.
1.13. Clasificación de los módulosPueden ser de dos tipos:
Funciones Procedimientos
Estas funciones y procedimientos se escriben solamente una vez, pero pueden ser
referenciados (invocadas) en diferentes puntos de un programa, tantas veces como se requiera de modo que se puede evitar la duplicación innecesaria del código.
FuncionesLas funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado que sustituirá a la función en el punto de invocación (las funciones devuelven un resultado). Cada función se invoca utilizando su nombre en una expresión con los argumentos actuales o reales encerrados entre paréntesis. Para hacer una referencia a una función se invoca mediante un nombre y en caso de existir, una lista de parámetros actuales necesarios (argumentos). Los argumentos deben coincidir en cantidad, tipo y orden con los de la función que fue definida. La función devuelve un valor único.
Las funciones a que se hace referencia, se conocen como funciones de usuario puesto que son definidas por él mismo y permiten su uso en forma idéntica a las funciones estándares. Para coordinar e iniciar el procesamiento, se utiliza un módulo principal que es colocado al final del algoritmo.
Declaración de funciones
función nombre_función (par1, par2,par3,...) : tipo_del_resultado
Inicioacción1acción2:nombre_función Resultado_Obtenido
123
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Fin
Donde:par1,par2 .... : Lista de parámetros formales o argumentos.nombre_función : Nombre asociado de la función, que será un nombre de identificador válido. acción1, acción2: Instrucciones que constituyen la definición de la función, y que debe contener una acción sola de asignación que asigne un valor al nombre de la función.
Ejemplo:Obtener el sexto carácter de un nombre y si dicho carácter no existe, se asumirá un asterisco como tal.
Función SEXTO(n : string) : carácterIniciosi longitud(n) >= 6 entonces
SEXTO Subcadena(n,6,1)en caso contrarioSEXTO ‘*’Fin
Invocación a las funcionesUna función puede ser llamada sólo mediante referencia de la forma siguiente:
nombre_función (lista de parámetros actuales)
Donde:nombre_función : Función que llama.
Lista de parámetros actuales: Constantes, variables, expresiones, valores de funciones, nombres de funciones o procedimientos.
Una llamada a la función implica los siguientes pasos: A cada parámetro formal se le asigna el valor real de su correspondiente parámetro actual
(esta correspondencia se verá más tarde y se denomina llamada por valor). Se ejecuta el cuerpo de acciones de la función. Se devuelve el valor de la función y se retorna al punto de llamada.
Ejercicio:Calcular la potencia de un número.
funcion POTENCIA(x,n :entero): enteroInicioy 1
124
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Desde i 1 hasta abs(n) hacer y y*xfin Desdesi n < 0 entonces y 1/yFin siPOTENCIA yFin
1.14. Operación de módulos y sus parámetros1.14.1. Paso de parámetrosExisten diferentes métodos para el paso de parámetros a subprogramas, un mismo programa puede producir diferentes resultados bajo diferentes sistemas de paso de parámetros. Los parámetros se clasifican de la siguiente manera:
1. Entradas: Las entradas proporcionan valores desde el programa que llama y que se utilizan dentro de un procedimiento. En los subprogramas función las entradas son los argumentos en el sentido tradicional.2. Salidas: Las salidas producen los resultados del subprograma; de nuevo si se utiliza el caso una función, mientras que con procedimientos pueden calcularse cero, una o varias salidas.3. Entradas/Salidas: Un solo parámetro se utiliza para mandar argumentos a un programa y para devolver resultados.
Los métodos más empleados para realizar el paso de parámetros son: Paso por valor (parámetro valor). Paso por referencia o dirección (parámetro variable).
1.14.1.1. Paso por valorSe utiliza en muchos lenguajes de programación (pascal, basic, modula-2, algol, etc.), debido a su analogía con los argumentos de una función, donde los valores se proporcionan en el orden de cálculo de resultados. Los parámetros se tratan como variables locales y los valores iniciales se proporcionan copiando los valores de los correspondientes argumentos.Los parámetros formales (locales a la función), reciben como valores iniciales los valores de los parámetros actuales y con ello se ejecutan las acciones descritas en el subprograma.La llamada por valor no devuelve información al programa que llama.
1.14.1.2. Paso por referenciaSe utiliza cuando se requiere que ciertos parámetros sirvan como parámetros de salida, es decir, devuelvan los resultados a la unidad o programas que llama. La unidad que llama pasa a la unidad llamada la dirección del parámetro actual (que está en el ámbito de la unidad llamante). Una referencia al correspondiente parámetro formal se trata como una referencia a la posición de memoria, cuya dirección se ha pasado. Entonces una variable pasada como parámetro real es compartida, es decir, se puede modificar directamente por el subprograma. Si el parámetro actual es
125
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
una expresión, el subprograma recibe la dirección de la posición temporal que contiene el valor de la expresión.
1.1. Criterios de modularización Criterios de la programación modular
Con independencia de las técnicas, los requisitos que debe cumplir la programación modular son:
Establecimiento de un organigrama modular: Se realiza mediante bloques, en el que cada bloque corresponde a un módulo y muestra gráficamente la comunicación entre el módulo principal y los secundarios.
Descripción del módulo principal: Debe ser claro y conciso, reflejando los puntos fundamentales del programa.
Descripción de los módulos básicos o secundarios: Los módulos básicos deben resolver partes bien definidas del problema. Solo pueden tener un punto de entrada y un punto de salida. Si un módulo es complejo de resolver, conviene ser subdivida en submódulos. Ningún módulo puede ser llamado desde distintos puntos del módulo principal.
Normas de la programación: Dependerán del análisis de cada problema y de las normas generales o particulares que haya recibido el programador.
Ejercicios Resueltos
Problema 01:Usando funciones encuentre los divisores comunes de dos números.
Solución:
Definición de variables: a: primer número a inspeccionar
b: segundo número a inspeccionari: posibles divisores
El bloque principal leemos los dos números (a y b) cuyos divisores deseamos y los pasamos como argumento a la función comunes ( ), la cual evalúa los posibles probando cada i, desde i=1, y mientras i sea menor o igual a ambos números, preguntamos si i los divide en cuyo caso imprimiremos i.
Diagrama N/S
126
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Problema.2:
Usando funciones. Escriba un algoritmo que diga si un número es primo o no.
Solución:
Definición de variables: n: número a evaluar
i: posible divisor
Una vez leído el número que deseamos saber si es o no primo, invocamos a la función EsPrimo ( ) con el argumento n para su evolución. EsPrimo ( ), comienza tomando como posible divisor a i = n / 2 y mientras i sea mayor que 1, preguntará si i divide exactamente a n, en cuyo caso retornará el valor de 0, indicando que no es primo. En caso contrario, tomará el siguiente i para su evolución. Si el bucle mientras llega a terminar significa que ningún i, divide exactamente a n, por lo que n será primo retornando el valor de 1.De regreso al bloque principal en if ( ), el 0 es considerado como falso y por lo tanto se imprimirá “no es primo”, mientras que un 1 significará verdadero imprimiendo el mensaje “Es primo”.
Diagrama N/S
127
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Problema 3:
Usando funciones, calcula el promedio ponderado de un conjunto de datos.
Solución:
Definición de variables:n: número de elementosi: subíndice del término actualvalores [ ]: conjunto de elementospesos [ ]: pesos de los valores[i]sv: suma de los valores[i]sp: suma de los pesos[i]array [ ]: variable local a LeerArray ( )
EL bloque principal se encarga de Leer n e invocar a la función LeerArray ( ) con argumentos n y valores [ ]. En esta llamada se leerán n elementos correspondientes al array valores [ ]. Seguidamente se vuelve a invocar LeerArray ( ), pero ahora con argumentos n y pesos [ ]. En esta llamada se leerán n elementos correspondientes al array pesos [ ]. Observe que la función LeerArray ( ), es invocada dos veces, pero ha sido definida una única vez. Aquí usted puede notar una de las ventajas de definir funciones: puede invocarlas varias veces, sin necesidad de volver a escribirlas, ahorrándonos considerable trabajo.Luego de leer valores [ ] y pesos [ ], invocamos a la función PromPonderado ( ), en donde se calculará el promedio ponderado mediante la fórmula mostrada.
Diagrama N/S
+ valores[i] * pesos[i]P. ponderado= + pesos[i]
128
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Problema 4:Usando funciones, ordene un conjunto de datos de menor a mayor por el método de la burbuja.Solución:
Definición de variables: n: número de elementos. i: indica los elementos no ordenados j: elementos a comparar e intercambiar
x [ ]: arreglo unidimensional temp: utilizada para el intercambio
array[ ]: variable local
Comenzamos leyendo n e invocando a LeerArray ( ), esta función es la misma utilizada en el ejemplo anterior. Observe otra de las ventajas de definir funciones: las escribimos para una aplicación, pero podemos usarlas en otras.Esto es una propiedad importante conocida como “Reusabilidad del código”.
Una vez leídos los elementos del arreglo x[ ], invocamos a la función Burbuja( ), en donde se procede al ordenamiento; después de ordenar x [ ] y de regreso al bloque principal, sólo nos queda imprimir los elementos ordenados, labor que delegamos a la función MuestraArray ().
Diagrama N/S
129
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Lecturas recomendadas
Documento 1: “Funciones en JAVA”
Dirección: Ver carpeta de lecturas: 6_ Funciones en JAVA.pdf
Breve Descripción: El departamento de matemáticas de la universidad del cauca, publica en su blog Foro de Matemáticas una entrada sobre el uso de Funciones en JAVA, mostrando de forma sencilla como implementar este concepto en el lenguaje de programación.
Documento 2: "Programación Fácil - Procedimientos "
Dirección: Ver carpeta de lecturas: 6_ Procedimiento en JAVA.pdf
Breve Descripción: La página www.programaciónfacil.com/java:procedimientos, tiene una publicación sobre el uso de procedimientos en JAVA, mostrando de forma sencilla como implementar este concepto en el lenguaje de programación.
Conclusiones En esta semana de estudio se presentó un tema muy importante en este proceso de aprender
a programar computadoras, la modularización permite que el algoritmo sea fragmentado para ser programados, analizados y modificados con mayor facilidad.
Con la división del código se logra disminuir la complejidad del algoritmo, aumentando la claridad y fiabilidad del mismo, así mismo los costes por la reutilización del código y su mantenibilidad más rápida.
Dependiendo del algoritmo aprendimos a utilizar una función o un procedimiento que tiene diferencias establecidas de acuerdo a la necesidad del algoritmo de solución.
Metacognición de la sexta semanaLas siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras acciones y procesos mentales
¿De la temática abordada que te llamó más la atención?
¿Consideras que aprendiste con los contenidos abordados? ¿Qué parte te tomó más tiempo?
130
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
¿Tuviste dificultad con algún tema o actividad? ¿Cómo los solucionaste?
¿Qué acciones realizaste para aprender?
Control de lectura sexta semana
¡Muy bien! Hemos llegado al final de la sexta semana, ahora, para comprobar tus logros y nivel de aprendizaje alcanzado en relación a la temática estudiada, responde a las siguientes preguntas:
1. Elaborar un programa en JAVA que contenga un método que acepte como parámetros un numero entero y devuelva su factorial (No existe factorial de números negativos. N!=1, si N es cero; n!=1*2*3..(N-1),*N, si N>0).
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package Ejercicio1;import java.io.*;public class Factorial { public static void main(String args[]) throws IOException{ InputStreamReader in = new InputStreamReader(System.in); BufferedReader b =new BufferedReader(in); System.out.println("Ingrese Número:"); int num = Integer.parseInt(b.readLine()); factorial(num); } public static void factorial(int n){ int fact =1; int i; if (n==0) fact=1; else for(i=1;i<=n;i++) {fact=fact*i;} System.out.println("El factorial es: "+fact); }}
2. Elaborar un programa en JAVA que contenga un método que acepte como parámetros una base real y un exponente entero positivo y calcule su potencia.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Ejercicio3;
import java.io.*;public class Potencia { public static void main(String args[]) throws IOException { InputStreamReader in = new InputStreamReader(System.in); BufferedReader b =new BufferedReader(in); System.out.println("Ingrese Base"); double base = Double.parseDouble(b.readLine()); System.out.println("Ingrese Exponente"); int expo = Integer.parseInt(b.readLine()); System.out.println("Resultado: "+potencia(base,expo)); }
public static double potencia(double base,int expo){
131
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
double Resultado=1; for(int i=0;i<expo;i++) { Resultado=Resultado*base; } return Resultado; }}
3. Elaborar un programa en JAVA que contenga un método que acepte como parámetros 3 números y determine el mayor y el menor.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package Ejercicio4;import java.io.*;public class MayorMenor { public static void main(String args[]) throws IOException { InputStreamReader in = new InputStreamReader(System.in); BufferedReader b =new BufferedReader(in); System.out.println("Ingrese Primer Número"); int n1 = Integer.parseInt(b.readLine()); System.out.println("Ingrese Segundo Número"); int n2 = Integer.parseInt(b.readLine()); System.out.println("Ingrese Tercer Número"); int n3 = Integer.parseInt(b.readLine()); Evaluar(n1,n2,n3); } public static void Evaluar(int n1, int n2, int n3){ int mayor=n1, menor=n1; if (n2>mayor) mayor=n2; if (n3>mayor) mayor=n3; if (n2<menor) menor=n2; if(n3<menor) menor=n3; System.out.println("El mayor es: " + mayor); System.out.println("El menor es: " + menor); }}
4. Elaborar un programa en JAVA que contenga un método que calcule el promedio de tres números enteros positivos
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Ejercicio6;
import java.io.*;public class Promedio { public static void main(String args[]) throws IOException { InputStreamReader in = new InputStreamReader(System.in); BufferedReader b =new BufferedReader(in); System.out.println("Ingrese Primer Número"); int num1 = Integer.parseInt(b.readLine()); System.out.println("Ingrese Segundo Número");
132
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
int num2 = Integer.parseInt(b.readLine()); System.out.println("Ingrese Tercer Número"); int num3 = Integer.parseInt(b.readLine()); System.out.println("El Promedio es: "+Calculo(num1,num2,num3)); } public static double Calculo(int num1, int num2, int num3){ double Resultado=1; Resultado=(num1+num2+num3)/3; return Resultado; }}
5. Desarrollo un programa en JAVA para registrar los datos de un alumno (apellido paterno, apellido materno y edad), desarrolle métodos para registrar, para ordenar por apellido paterno, método para ordenar por edad y un método que imprima los resultados.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package Ejercicio10;
import java.util.Scanner;public class ListaAlumnos { public static Scanner teclado; private static String[][] mat; public static void main(String[] ar) { Registrar(); imprimir(); }
public static void Registrar() { teclado=new Scanner(System.in); System.out.print("Cuantas fila tiene la matriz:"); int filas=teclado.nextInt(); mat=new String[filas][4]; System.out.print("---------------Registrando personas----------------- "); for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { if (c==0) System.out.print("Ingrese Apellido Paterno: "); if (c==1) System.out.print("Ingrese Apellido Materno: "); if (c==2) System.out.print("Ingrese Apellido Nombre: "); if (c==3) System.out.print("Ingrese Edad: "); mat[f][c]=teclado.next(); } } } public static void imprimir() { System.out.print("---------------Reporte----------------- "); for(int f=0;f<mat.length;f++) { for(int c=0;c<mat[f].length;c++) { System.out.print(mat[f][c]+" ");
133
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
} System.out.println(); } } }
“La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no”
– Albert Einstein
Bienvenida
Estimados estudiantes ¡bienvenidos! a la séptima semana del curso, En la cual Analizaremos las estructuras de datos e iniciaremos explicando los arreglos bidimensionales, llamados matrices, sus
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
Sétima Semana “Analizaremos las estructuras de datos e iniciaremos explicando los arreglos
bidimensionales, llamados matrices, sus operaciones y los métodos de ordenamiento y búsqueda de datos, desarrollando algoritmos y llevándolo a un
lenguaje de programación”.Del 17 al 23 de junio
134
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
operaciones y los métodos de ordenamiento y búsqueda de datos, desarrollando algoritmos y llevándolo a un lenguaje de programación.
Ruta de aprendizaje Durante la sétima semana que corresponde del 17 al 23 de junio realizaremos las siguientes actividades:
Arreglos bidimensionales Operaciones con arreglos bidimensionales Exposiciones Finales
Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues estas actividades demandan 10 horas de estudio semanales.
Cordialmente Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura
Tema 7Arreglos dimensionales
Introducción al tema
Los datos se organizan de acuerdo a estructuras, tales como las matrices que agrupan datos relacionados bajo una misma denominación, dichos datos deben ser manipulados realizándose inserción, búsqueda, ordenamiento, también es posible realizar operaciones sobre los datos de dichas estructuras.
Muchas soluciones a problemas del mundo real se implementan con arreglos dimensionales es por ello que en esta semana estudiaremos como manipular las estructuras.
Aprendizajes esperadosConozcamos ahora las capacidades y actitudes a desarrollar en este cuarto tema:
Fue
nte:
Im
agen
ext
raíd
a de
int
erne
t
135
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Capacidades Utiliza eficientemente estructuras de datos estáticas en la solución de problemas. Aplica adecuadamente algoritmos y programas recursivos para resolver problemas
específicos. Implementa apropiadamente archivos de datos para su aplicación en problemas de nivel
intermedio. Resuelve problemas asociados a la manipulación de matrices
Actitudes Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las
diversas actividades. Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolución de
discrepancias en las opiniones y actitudes de los demás. Asume una actitud de respeto ante sus semejantes, mostrándose responsable en las
diversas actividades.
Mapa conceptual referido al tema
Observa detenidamente el siguiente esquema, en el encontrarás de un “vistazo” de manera sintetizada los principales concepto de la temática que abordaremos. ¿Qué conceptos o categorías te llaman la atención?
136
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Fuente: Elaboración propia
Desarrollo de los contenidos de aprendizaje 1.15. Matrices:Se puede considerar como un vector de vectores. Es, por consiguiente, un conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es significativo y en el que se necesitan especificar dos subíndices para poder identificar a cada elemento del arreglo.
137
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
También se les llama arreglos Bidimensionales, ya que una tabla será utilizada cuando se requiere de establecer relaciones por renglones y columnas entre datos de un tipo común.
1 2 3 4 . . . J . . . N
B(I,J)
Se considera que este arreglo tiene dos dimensiones (una dimensión por cada subíndice) y necesita un valor para cada subíndice, y poder identificar un elemento individual. En notación estándar, normalmente el primer subíndice se refiere a la fila del arreglo, mientras que el segundo subíndice se refiere a la columna del arreglo. Es decir, B(I,J), es el elemento de -b que ocupa la Ia y la Ja columna como se muestra en la figura anterior.
1.15.1. Representación gráfica de una matriz.
Una matriz de 2 x 5 seria: entero x [2] [5] // filas y columnasLos elementos se numeran y referencia con un índice.
Un ejemplo típico de un arreglo Bidimensional es un tablero de ajedrez. Se puede representar cada posición o casilla del tablero mediante un arreglo, en el que cada elemento es una casilla y en el que su valor será un código representativo de cada figura del juego.
Ejemplo:Cada elemento puede contener un número de tipo entero. Gráficamente esta matriz M se puede definir así:
M[3][4]
0 1 2 3
00,0 0,1 0,2 0,3
11,0 1,1 1,2 1,3
FILAS
COLUMNAS
Filas
Columnas
138
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
22,0 2,1 2,2 2,3
1.16. Inicialización de una matriz
Veamos la siguiente sentencia:
for (i=0; i<5; i++) {
for (j=0; j<5; j++) {
m [ i ][ j ] = 10; } }
En esta sentencia se está variando un índice i desde 0 hasta 4 y un índice j desde 0 hasta 4. En cada variación se está asignando al elemento m [ i ] [ j ] el número 10. El efecto es asignar a cada elemento de una matriz 5 por 5 el número 10.
1.17. ConsultaEl acceso a un elemento de una matriz se realiza mediante el nombre de ésta y dos índices (uno para cada dimensión) entre corchetes. El primer índice representa la fila y el segundo la columna en que se encuentra dicho elemento. Tal como muestra la figura 7.2, el índice de las filas tomará valores entre 0 y el número de filas menos 1, mientras que el índice de las columnas tomará valores entre 0 y el número de columnas menos 1. Es responsabilidad del programador garantizar este hecho.
Nombre_matriz[índice 1][índice 2];
1.18. AsignaciónComentaremos únicamente la inicialización de una matriz en la propia declaración. El siguiente ejemplo declara una matriz de tres filas y cuatro columnas y la inicializa. Por claridad, se ha usado identación en los datos, aunque hubiesen podido escribirse todos en una sola línea.
int mat[3][4] = 24, 12, 6, 17,15, 28, 78, 32,0, 44, 3200 , -34 ;
La inicialización de matrices, y en general de tablas multidimensionales, puede expresarse de forma más clara agrupando los valores mediante llaves ({}) siguiendo la estructura de la matriz.
Ejemplo 7.1:Se desea registrar las edades de 4 grupos de personas, cada uno de ellos con 5 elementos. Los datos deberán ser mostrados en forma posterior.
139
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
variables:edad: arreglo(1..4,1..5) de enterog,p: enteros
Iniciopara g = 1 hasta 4 hacer
escribir(‘Grupo : ‘,g) para p =1 hasta 5 hacer escribir(‘Edad de la persona ‘,p)
leer(edad[g,p]) para g =1 hasta 4 hacer escribir(‘Grupo ‘,g) para p = 1 hasta 5 hacer escribir(?persona ‘,p,’ Tiene’,edad[g,p],?años?)
Fin
Ejemplo 7.2:
Ingresar los siguientes datos en una matriz de 3 x 5.
4 7 1 3 52 0 6 9 73 1 2 6 4
Y luego mostrar sus valores en la siguiente forma:
4 2 37 0 11 6 23 9 65 7 4
DIAGRAMA N/S:
140
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Lecturas recomendadas
Documento 1: “Matriz en JAVA”
Dirección: Ver carpeta de lecturas: 7_ Matriz en JAVA.pdf
Breve Descripción: Javier García escribe un interesante artículo en GarBedo.es, con un ejemplo en JAVA del uso de matriz, mostrando de forma sencilla como implementar este concepto en el lenguaje de programación.
Documento 2: "Ordenamiento para ordenar una matriz en JAVA "
Dirección: Ver carpeta de lecturas: 7_Ordenamiento de datos de una Matriz en java.pdf
Breve Descripción: Sergio Palay publica en su página persona sergiopalay.wordpress.com un ejemplo en JAVA, de ordenamiento de valores almacenados en una matriz mostrando de forma sencilla como implementar este concepto en el lenguaje de programación.
Conclusiones
En esta semana de estudio se presentaron los conocimientos base, de cómo trabajar con matrices, la realización de consultas y asignación son cuestiones básicas en la manipulación de datos en este tipo de estructuras.
También en este tema nos hemos dedicado a mostrar ejemplos de cómo manipular datos organizados en una matriz, que como se habrán dado cuenta es sencillo, claro que para ello es necesario dominar la temática desarrollada en las semanas anteriores, tales como estructuras de control y estructuras repetitivas.
Es importante graficar la matriz para tener mayor facilidad en su comprensión de la manipulación de datos en la memoria, dicha representación es una abstracción que nos facilita la comprensión.
Metacognición de la séptima semana
Las siguientes preguntas te ayudarán a reflexionar sobre tus propios aprendizajes, es un ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras acciones y procesos mentales
¿De la temática abordada que te llamó más la atención?
141
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
¿Consideras que aprendiste con los contenidos abordados? ¿Qué parte te tomó más tiempo?
¿Tuviste dificultad con algún tema o actividad? ¿Cómo los solucionaste?
¿Qué acciones realizaste para aprender?
Control de lectura séptima semana
¡Muy bien! Hemos llegado al final de la séptima semana, ahora, para comprobar tus logros y nivel de aprendizaje alcanzado en relación a la temática estudiada, responde a las siguientes preguntas:
1. Elaborar un programa en JAVA que llene una matriz de 3 * 4 y determine la posición [fila, columna] del número mayor almacenado en la matriz. Los números son diferentes.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package semana7;import java.util.Scanner;public class Ejercicio1 {
public static void main(String[] args) {
int matriz[][] = new int[3][4];
ingresar(matriz); mayor(matriz);
}
private static void mayor(int[][] matriz) { int mayor=matriz[0][0],i = 0,j = 0;
for (int x=0; x < matriz.length; x++) { for (int y=0; y < matriz[x].length; y++) { if(matriz[x][y]>mayor){ mayor=matriz[x][y]; i=x; j=y; } } }
System.out.print("el número mayor es ==> "+mayor+"[" + i + "," + j + "]");
}
private static void ingresar(int[][] matriz) {
Scanner teclado=new Scanner(System.in);
for (int x=0; x < matriz.length; x++) { for (int y=0; y < matriz[x].length; y++) { System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>"); matriz[x][y] = teclado.nextInt(); } }}}
142
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
2. Elaborar un programa en JAVA que llene una matriz de 3 * 3. Sumar las columnas e imprimir que columna tuvo la máxima suma y la suma de esa columna.
Alternativas Fundamenta tu respuesta (Código de la solución)
Solución
package semana7;import java.util.Scanner;public class Ejercicio3 {
public static void main(String[] args) { int matriz[][] = new int[3][3]; ingresar(matriz); sumar(matriz);}
private static void sumar(int[][] matriz) { int columnas[] = new int[3];
for (int x=0; x < matriz.length; x++) { columnas[x]=0; for (int y=0; y < matriz[x].length; y++) { columnas[x] = columnas[x] + matriz[y][x]; } } mayor_vector(columnas);}
private static void mayor_vector(int[] columnas) { int mayor=columnas[0],i=0; for (int x=0; x < columnas.length; x++) { if(mayor<columnas[x]){ mayor=columnas[x]; i=x; }
}
System.out.println("el mayor es la columna ==> "+i+" con la cantidad de ==> "+mayor);
}
private static void ingresar(int[][] matriz) {
Scanner teclado=new Scanner(System.in);
for (int x=0; x < matriz.length; x++) { for (int y=0; y < matriz.length; y++) { System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>"); matriz[x][y] = teclado.nextInt(); } }} }
3. Elaborar un programa en JAVA que llene una matriz de 3 * 3 y que almacene toda la matriz en un vector. Imprimir el vector resultante.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package semana7;
143
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
import java.util.Scanner;public class Ejercicio6 {public static void main(String[] args) { int matriz[][] = new int[3][3]; ingresar(matriz); almacenar(matriz);}
private static void almacenar(int[][] matriz) { int vector[] = new int [9]; int cont=0; System.out.println("VECTOR"); for (int x=0; x < matriz.length; x++) { for (int j = 0; j < 3; j++) { vector[cont]=matriz[x][j]; System.out.println("[" + cont + "] ==> "+vector[cont]); cont++; } }}
private static void ingresar(int[][] matriz) {
Scanner teclado=new Scanner(System.in);
for (int x=0; x < matriz.length; x++) { for (int y=0; y < matriz.length; y++) { System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>"); matriz[x][y] = teclado.nextInt(); } }}}
4. Elaborar un programa en JAVA que dada una matriz de filas F y C Columnas, de números enteros, permita: Borrar una Fila determinada, Borrar una Columna determinada.
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package semana7;
import java.util.Scanner;public class Ejercicio9 {
static int fila;static int col;public static void main(String[] args) { int matriz[][] = null; fila = tama("filas"); col = tama("columnas"); matriz = new int[fila][col]; ingresar(matriz); mostrar(matriz); eliminar_fila(matriz); mostrar(matriz); eliminar_columna(matriz); mostrar(matriz);
}
private static void eliminar_columna(int[][] matriz) {
144
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
Scanner teclado=new Scanner(System.in); System.out.println("ELIMINAR COLUMNA"); int c=-1; do{ System.out.print("Ingrese el numero de columna ==> "); c = teclado.nextInt(); }while(c<0||c>=col);
for (int i = 0; i < fila; i++) { for (int j = c; j < col-1; j++) { matriz[i][j]=matriz[i][j+1]; } }
if(c == col-1){ for (int j = 0; j < fila; j++) { matriz[j][c]=0; } }
col--;}
@SuppressWarnings("resource")private static void eliminar_fila(int[][] matriz) { Scanner teclado=new Scanner(System.in); System.out.println("ELIMINAR FILA"); int f=-1; do{ System.out.print("Ingrese el numero de fila ==> "); f = teclado.nextInt(); }while(f<0||f>=fila);
for (int i = f; i < fila-1; i++) { for (int j = 0; j < col; j++) { matriz[i][j]=matriz[i+1][j]; } }
if(f == fila-1){ for (int j = 0; j < col; j++) { matriz[f][j]=0; } }
fila--;}
private static void mostrar(int[][] matriz) { System.out.println("Presentacion de la matriz"); for (int i = 0; i < fila; i++) { for (int j = 0; j < col; j++) { System.out.print("[" + i + "," + j + "]"+matriz[i][j] + "\t"); } System.out.print("\n"); }
}
145
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
private static void ingresar(int[][] matriz) {
Scanner teclado=new Scanner(System.in);
for (int x=0; x < fila; x++) { for (int y=0; y < col; y++) { System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>"); matriz[x][y] = teclado.nextInt(); } }}
private static int tama(String nom) { Scanner teclado=new Scanner(System.in); int n;
do{ System.out.print("Ingrese la cantidad de "+nom+" ==> "); n= (int) teclado.nextInt(); }while(n <1); return n;
}}
5. Elaborar un programa en JAVA, que dada una matriz de filas F y C Columnas, de números enteros, permita: Determinar si la Matriz es escalar o no (Es escalar si los elementos de la diagonal principal son todas iguales).
Alternativas Fundamenta tu respuesta (Código de la solución)Solución package semana7;
import java.util.Scanner;public class Ejercicio10 {static int fila;static int col;
public static void main(String[] args) { int matriz[][] = null; fila = tama("filas"); col = tama("columnas"); matriz = new int[fila][col]; ingresar(matriz); mostrar(matriz); diagonal(matriz);
}private static void diagonal(int[][] matriz) { boolean indicador=true; for (int x=0; x < matriz.length-1; x++) { for (int y=0; y < matriz.length-1; y++) { if(x==y){ if(matriz[x][y] != matriz[x+1][y+1]){ indicador = false; break; } } } }
146
Guía temática de aprendizajes para entorno virtualesFundamentos de programación
if(indicador){ System.out.println("Es escalar"); }else{ System.out.println("NO es escalar"); }}
private static void mostrar(int[][] matriz) { System.out.println("Presentacion de la matriz"); for (int i = 0; i < fila; i++) { for (int j = 0; j < col; j++) { System.out.print("[" + i + "," + j + "]"+matriz[i][j] + "\t"); } System.out.print("\n"); }
}
private static void ingresar(int[][] matriz) {
Scanner teclado=new Scanner(System.in);
for (int x=0; x < fila; x++) { for (int y=0; y < col; y++) { System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>"); matriz[x][y] = teclado.nextInt(); } }}
private static int tama(String nom) {
Scanner teclado=new Scanner(System.in); int n;
do{ System.out.print("Ingrese la cantidad de "+nom+" ==> "); n= (int) teclado.nextInt(); }while(n <1); return n; }}
147