Vicerrectoría Académica Cuaderno de Apuntes
Estimado Estudiante de AIEP, en este Cuaderno de Apuntes, junto a cada Aprendizaje Esperado que se te presenta y que corresponde al Módulo que cursas, encontrarás “Conceptos, Ideas Centrales y Aplicaciones ” que reforzarán el aprendizaje que debes lograr.
Esperamos que estas Ideas Claves entregadas a modo de síntesis te orienten en el desarrollo del saber, del hacer y del ser.
Mucho Éxito.-
Dirección de Desarrollo Curricular y Evaluación VICERRECTORÍA ACADÉMICA AIEP.
2 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
I.
UNIDAD DE APRENDIZAJE: ALGORITMOS Y PROGRAMACIÓN EN PSEUDOLENGUAJE.
Aprendizaje Esperado 1
1. “APLICAN EL ÁLGEBRA DE CONJUNTOS EN LA RESOLUCIÓN DE PROBLEMAS” 1.1 Álgebra: (del árabe: “al-jebr ”) Es la rama de las matemáticas que estudia la cantidad considerada del modo más general posible. Puede definirse como la generalización y extensión de la aritmética. A diferencia de la aritmética elemental, que trata de los números y las operaciones fundamentales, en álgebra -para lograr la generalizaciónse introducen además símbolos (usualmente letras) para representar parámetros (variables) o cantidades desconocidas (incógnitas); las expresiones así formadas son llamadas “fórmulas o ecuaciones algebraicas”, y expresan una regla o un principio general. El álgebra conforma una de las grandes áreas de las matemáticas, junto a la teoría de números, la geometría y el análisis. (Tutellus, 2015). 1.2 Conjuntos: Colección de objetos bien definidos, de tal manera que se puede decir siempre que si un objeto pertenece o no al conjunto al cual se refiere. La nomenclatura de los conjuntos se determina entre llaves { }. Los conjuntos se nombran con letras mayúsculas. Algunos nombres de conjuntos serían A, B, C, …, Z. Por ejemplo: A = {vocales}. Los conjuntos también se representan por medio de Diagramas de Venn-Euler que son formas gráficas de representar conjuntos. (Fuenlabrada de la Vega Trucios, 2000).
Figura 1: Diagrama de Venn-Euler que representa al Universo y Conjuntos dentro del Universo.
Fuente: (Fuenlabrada de la Vega Trucios, 2000). 3 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
1.3 Álgebra de Conjuntos: O Teoría de Conjuntos, corresponde al estudio de las operaciones básicas que pueden realizarse con conjuntos, como la unión, intersección y complementación. 1.4 Álgebra booleana: Son reglas algebraicas, basadas en la teoría de conjuntos, para manejar ecuaciones de lógica matemática.
ACTIVIDAD 1: El docente del módulo de Introducción a las Matemáticas desea crear una aplicación que permita actualizar y organizar la información básica de sus estudiantes, como: número de matrícula, nombres, apellidos, fecha de nacimiento y sexo. Para comenzar a desarrollar este sistema, lo primero que debe hacer, es un estudio de los requerimientos, y en particular, definir algunos criterios de búsqueda, para lo cual, solicita a un estudiante de la Escuela TIC de AIEP, crear los siguientes conjuntos en un diagrama de Venn-Euler: Venn-Eul er: Tabla 1: Requerimientos de conjuntos. Conjunto
Descripción
A B C
Conjunto formado por todos los estudiantes del curso. Conjunto formado por todos los estudiantes de sexo masculino. Conjunto formado por todos los estudiantes nacidos antes del año 1997.
Fuente: (Catalán Carrasco, 2016).
La lista del curso con los datos de los estudiantes se muestra en la siguiente tabla: Tabla 2: Datos de los estudiantes del curso. N° Mat.
Nombres
Apellidos
Fecha de Nacimiento
Sexo
154678 154658 154473 154281 154044 154605 154502 154700 154643 154662
Julio Florencio Pamela Sofía Daniel Alejandro Fernando Andrés Rayén Angélica Valeria Priscilla Carlos Esteban Patricio Tomás Luis Anselmo Camila Daniela
Vidal Hernández Pérez Ibáñez Toro Díaz Santander Hueche Calpucura Raín Inostroza Salas Contreras Palacios Barra Quilodrán Llanquileo Soriano Gutiérrez Ibáñez
23/11/1990 09/09/1995 18/05/1999 01/03/1998 20/12/1997 14/07/1998 22/05/1999 19/08/1997 27/02/1995 10/08/1996
Masculino Femenino Masculino Masculino Femenino Femenino Masculino Masculino Masculino Femenino
Fuente: (Catalán Carrasco, 2016).
4 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
ACTIVIDAD 2:
Figura 2: Caracterización de consumidor de productos.
Fuente: (Galdámez, 2014).
En una encuesta realizada a 150 personas, sobre sus preferencias de tres productos A, B y C, se obtuvieron los siguientes resultados: 82 personas consumen el producto A, 54 el producto B, 50 consumen únicamente el producto A, 30 sólo el producto B, el número de personas que consumen sólo B y C es la mitad del número de personas que consumen sólo A y C, el número de personas que consumen sólo A y B es el tripe del número de las que consumen los tres productos y hay tantas personas que no consumen los productos mencionados como las que consumen sólo C. A partir de esta información, determine lo siguiente: a. El número de personas que consumen sólo dos de los productos. b. El número de personas que no consumen ninguno de los tres productos. c. El número de personas que consumen al menos uno de los tres productos.
5 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Aprendizaje Esperado 2
2. “CONSTRUYEN TABLAS DE VERDAD, UTILIZANDO LOS CONECTORES LÓGICOS PARA LA RESOLUCIÓN DE PROBLEMAS PROPIOS DE LA ESPECIALIDAD” 2.1 Lógica matemática: trata con proposiciones, elementos de circuitos de dos estados, entre otros, que se encuentran asociados por medio de operadores como Y , O , NO , EXCEPTO , SI, etc. Martín (2011). (Martín Martínez, 2008). 2.2 Proposición lógica: Una proposición debe interpretarse como un enunciado que siempre toma uno de los valores de verdad posibles: verdadero (V) o falso (F). Carvajal (2013). Se representan con una letra minúscula, como por ejemplo: p1 , p2 , … oq1 , q2, entre otras. (González Gutiérrez, 2005). proposiciones simples p1, p2, . . . , 2.3 Proposición simple y compuesta: Si las proposiciones pn, p2, . . . , pn. (González Gutiérrez, 2005)
2.4 Valor de verdad: Llamaremos valor verdadero o de verdad de una proposición a su veracidad o falsedad. El valor de verdad de una proposición verdadera es verdad y el de una proposición falsa es falso. (González Gutiérrez, 2005). 2.5 Conectivos lógicos: Sirven para construir nuevas proposiciones a partir de proposiciones ya conocidas. El valor de verdad de la nueva proposición dependerá dependerá del valor de verdad de las l as proposiciones que la forman. Esta dependencia se explicita a través de una tabla de verdad. (Carvajal Vieyte, 2013). Los conectivos lógicos son: Tabla 3: Conectivos lógicos a utilizar en este documento. Conectivo
Expresión en lenguaje natural
Ejemplo de proposición en lenguaje natural
Símbolos
Negación
NO
No está lloviendo
̅ ¬ , ~ , NOT, !,
Conjunción
Y
Está lloviendo y está nublado
^, & , && , AND
Disyunción
O
Está lloviendo o está soleado
V, | ,||, OR
Implicancia
Si… Entonces
Si está soleado, entonces es de día
→ , , IF ELSE
Equivalencia o Bicondicional
Si y sólo si
Está nublado sí y sólo si hay nubes visibles
Fuente: Catalán (2016).
,
, , EQUAL
Vicerrectoría Académica Cuaderno de Apuntes
2.6 Tablas de verdad : De una proposición compuesta P enumera todas las posibles combinaciones combinaciones de los valores de verdad para las proposiciones p1, p2, . . . , p . (Carvajal Vieyte, 2013). Las tablas de verdad para satisfacer a los conectivos lógicos se muestran a continuación: Tabla 4: Tablas de verdad para los conectivos lógicos. Negación
Conjunción
Implicancia
Equivalencia
Disyunción
Fuente: (Carvajal Vieyte, 2013).
2.7 Tautología, Contradicción y Contingencia: Sea P una proposición compuesta de las proposiciones proposiciones simples p1, p2, . . . , pn. P es una Tautología si es verdadera para todos los valores de verdad que se asignen a p1, p2, . . . , pn . P es una Contradicción si es falsa para todos los valores de verdad que se asignen a p1, p2, . . . , pn. Una proposición P que no es Tautología ni Contradicción se llama, usualmente, Contingencia. Fuente: (Carvajal Vieyte, 2013).
ACTIVIDAD 3: Identifique todas las expresiones que considere son proposiciones lógicas simples, compuestas, y también las expresiones que no son proposiciones del siguiente enunciado: “Si el incremento en las penas de prisión fuera suficiente para disminuir los niveles de delincuencia, el índice de colusión iría en disminución. Pero es un hecho que, en lugar de disminuir, el número de colusiones va en aumento” .
1. Para lograr esta identificación, conviene reescribir el texto resaltando los conectivos lógicos que no están explícitos en la expresión. 7 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
2. Declarar las proposiciones simples, asignando una de las últimas letras del alfabeto para identificarlas. 3. Finalmente, expresar en lenguaje simbólico las proposiciones simples, compuestas identificadas; y construir sus tablas de verdad. 4. Determinar si la tabla de verdad es Tautología, Contradicción o Contingencia. Aprendizaje Esperado 3
3. “IDENTIFICAN LOS ELEMENTOS BÁSICOS DE LA PROGRAMACIÓN ESTRUCTURADA” 3.1 Algoritmo: Secuencia de instrucciones que representan un modelo de solución para determinado tipo de problemas. O bien, como un conjunto de instrucciones que realizadas en orden, conducen a obtener la solución del problema. Para realizar un programa es conveniente el diseño o definición previa del algoritmo. El diseño de algoritmos requiere creatividad y conocimientos profundos de la técnica de programación. Los algoritmos son independientes de los lenguajes de programación. En cada problema el algoritmo puede escribirse y luego ejecutarse en un lenguaje diferente de programación. El algoritmo es la infraestructura de cualquier solución, escrita luego en cualquier lenguaje de programación. Fuente: (López García, 2009). •El proces proceso o
algo algorít rítmic mico o debe debe termi terminar nar despué despuéss de una cantid cantidad ad finita finita de pasos pasos.. •Se dice que un algoritmo es inaplicable cuando se ejecuta con un conjunto de datos iniciales y el proceso resulta infinito o durante la ejecución se encu encuen entr traa con con un obs obstácu táculo lo insu insupe pera rabl blee sin sin arro arroja jarr un resultado resultado..
Realizable
•Debe ser claro lo que hace,
Comprensible
de forma que quien ejecute los pasos (ser humano o máquina) sepa qué, cómo y cuándo hacerlo. •Debe existir un procedimiento que determine el proceso de ejecución. •El orden de ejecución de las instrucciones debe estar
Preciso
perfectamente indicado. •Cuando se ejecuta varias veces, con los mismos datos iniciales, el resultado debe ser el mismo siempre. •La precisión implica determinismo.
Figura 3: Características generales de los algoritmos.
Fuente: (López García, 2009). 8 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
3.2 Resolución de problemas: En programación, para resolver un problema, es imprescindible seguir estas sugerencias: a) COMPRENDER EL PROBLEMA. Leer el problema varias veces. Establecer los datos del problema. Aclarar lo que se va a resolver (¿Cuál es la pregunta?). Precisar el resultado que se desea lograr. Determinar la incógnita del problema. Organizar la información. Agrupar los datos en categorías. Trazar una figura o diagrama.
b) HACER EL PLAN. Escoger y decidir las operaciones operaciones a efectuar. Eliminar los datos inútiles. Descomponer el problema en otros más pequeños.
c) EJECUTAR EL PLAN (Resolver). Ejecutar en detalle cada operación. Simplificar antes de calcular. Realizar un dibujo o diagrama
d) ANALIZAR LA SOLUCIÓN (Revisar). Dar una respuesta completa. Hallar el mismo resultado de otra manera. Verificar por apreciación que la respuesta es adecuada. (López García, 2009).
3.3 Programación estructurada: La visión clásica de la programación estructurada se refiere al control de ejecución. El control de su ejecución es una de las cuestiones más importantes que hay que tener en cuenta al construir un programa en un lenguaje de alto nivel. La regla general es que las instrucciones se ejecuten sucesivamente una tras otra, pero diversas partes del programa se ejecutan o no dependiendo de que se cumpla alguna condición. Además, hay instrucciones (los bucles) que deben ejecutarse varias veces, ya sea en número fijo o hasta que se cumpla una condición determinada. Esta forma de programar se basa en un famoso teorema, desarrollado por Edsger Dijkstra, que demuestra que todo programa puede escribirse utilizando únicamente las tres estructuras estructuras básicas de control siguientes:
Secuencia: el bloque secuencial de instrucciones, instrucciones ejecutadas sucesivamente, sucesivamente, una detrás de otra. 9
Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Selección: la instrucción condicional con doble alternativa, de la forma "if condición condición then instrucción-1 else instrucción-2". Iteración: el bucle condicional " while condición do instrucción", que ejecuta la instrucción repetidamente mientras la condición se cumpla.
Cuando en la actualidad se habla de programación estructurada, nos solemos referir a la división de un programa en partes más manejables (usualmente denominadas segmentos o módulos). Una regla práctica para lograr este propósito es establecer que cada segmento del programa no exceda, en longitud, de una página de codificación, o sea, alrededor de 50 líneas. Así, la visión moderna de un programa estructurado es un compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una página o más de código. Cada segmento tiene solamente una entrada y una salida, asumiendo que no poseen bucles infinitos y no tienen instrucciones que jamás se ejecuten. Encontramos la relación entre ambas visiones en el hecho de que los segmentos se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente y, por tanto, el resultado es también un programa estructurado. Cada una de estas partes englobará funciones y datos íntimamente relacionados semántica o funcionalmente. En una correcta partición del programa deberá resultar fácil e intuitivo comprender lo que debe hacer cada módulo. (Molina & Chamorro, 2006).
3.4 Lenguaje de programación: Es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo. Por otro lado, el término "lenguaje natural" define un medio de comunicación compartido por un grupo de personas (por ejemplo: inglés o francés). Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como protocolos de comunicación. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programación programación es muy estricto: A CADA instrucción le correspond corresponde e UNA acción acción de procesador. procesador.
10 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
El lenguaje utilizado por el procesador se denomina lenguaje máquina. Se trata de datos tal como llegan al procesador, que consisten en una serie de 0 y 1 (datos binarios). El lenguaje máquina, por lo tanto, no es comprensible para los seres humanos, razón por la cual se han desarrollado lenguajes intermediarios comprensibles para el hombre. El código escrito en este tipo de lenguaje se transforma en código máquina para que el procesador pueda procesarlo. El ensamblador fue el primer lenguaje de programación utilizado. Es muy similar al lenguaje máquina, pero los desarrolladores pueden comprenderlo. No obstante, este lenguaje se parece tanto al lenguaje máquina que depende estrictamente del tipo de procesador utilizado (cada tipo de procesador puede tener su propio lenguaje máquina). Así, un programa desarrollado para un equipo no puede ser portado a otro tipo de equipo. El término "portabilidad" describe la capacidad de usar un programa de software en diferentes tipos de equipos. Para poder utilizar un programa de software escrito en un código ensamblador en otro tipo de equipo, a veces será necesario volver a escribir todo el programa. programa. Por lo tanto, un lenguaje de programación tiene varias ventajas: Es mucho más fácil de comprender que un lenguaje máquina. Permite mayor portabilidad, es decir que puede adaptarse fácilmente para ejecutarse en diferentes tipos de equipos. (CCM.net, 2016).
ACTIVIDAD 4: Aplicar las “Sugerencias de Resolución de Problemas” para el siguiente enunciado: En un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y el tercero, una amarilla. Al final de varias rondas, el puntaje se calcula de la siguiente manera: al cubo de la cantidad de fichas rojas se adiciona el doble de fichas azules y se descuenta el cuadrado de las fichas amarillas ”.
“
Si Andrés llegó 3 veces en primer lugar, 4 veces de último y 6 veces de intermedio, ¿qué puntaje obtuvo? ”
11 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Aprendizaje Esperado 4
4. “CONSTRUYEN ALGORITMOS DE PROGRAMACIÓN DE TIPO DIAGRAMA DE FLUJO” 4.1 Sistema de información : se puede definir técnicamente como un conjunto de componentes relacionados que recolectan (o recuperan), procesan, almacenan y distribuyen información para apoyar la toma de decisiones y el control en una organización. Hay tres actividades en un sistema de información que producen la información que esas organizaciones necesitan para tomar decisiones, controlar operaciones, analizar problemas y crear nuevos productos o servicios. Estas actividades son:
Entrada: captura o recolecta datos en bruto tanto del interior de la organización como de su entorno externo. Procesamiento: convierte esa entrada de datos en una forma más significativa. Salida: transfiere la información procesada a la gente que la usará o a las actividades para las que se utilizará.
Los sistemas de información también requieren retroalimentación, que es la salida que se devuelve al personal adecuado de la organización para ayudarle a evaluar o corregir la etapa de entrada. (Peralta, 2015).
Figura 4: Esquema de un sistema de información.
Fuente: (Peralta, 2015).
4.2 Diagrama de flujo : Se utilizan tanto para la representación gráfica de las operaciones ejecutadas ejecutadas sobre los datos a través de todas las partes de un sistema de información, diagrama de flujo del sistema, como para la representación de la secuencia de procesos necesarios para describir un procedimiento particular, diagrama diagrama de flujo de detalle. El diagrama de flujo utiliza unos símbolos normalizados, normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos por flechas, denominadas líneas de flujo, que indican el orden en que los pasos debes ser ejecutados. (Joyanes Aguilar, Rodríguez Baena, & Fernández Azuela, 1996). A continuación, se presentarán los símbolos principales de un diagrama de flujo de acuerdo con la versión del 20/09/2015 de PSeint: Tabla 5: Símbolos principales de un diagrama de flujo en PSeInt. Símbolo
Descripción
Comentario, es un texto que sirve al programador para mencionar información o referencia importante respecto de algún proceso o procedimiento que es ignorado por el intérprete de PSeint. Proceso de datos, permite la asignación y definición (declaración e inicialización) de variables, constantes, arreglos (dimensión) y operaciones.
Leer, instrucción para obtener entrada de datos (input), desde la entrada estándar de un computador (por ejemplo un dato ingresado por el teclado).
Escribir, instrucción para generar la salida de datos (información - output), a través de la salida estándar de un computador (por ejemplo la visualización a través de la pantalla).
Vicerrectoría Académica Cuaderno de Apuntes
Si-Entonces, representa a una estructura condicional simple que permite tomar decisión respecto de los valores de los datos, generando alternativas o recorridos diferentes en el algoritmo. Continuación: Símbolo
Descripción
Según, representa a una estructura de selección múltiple. Mientras, representa a una estructura repetitiva, donde el proceso de datos (Proceso1) se ejecuta luego de que se cumpla la condición. El proceso de datos se ejecutará por lo menos cero veces en el flujo (dependerá de la condición hasta que rompa o cumpla la condición definida). Repetir-Hasta que, representa a una estructura repetitiva, donde el proceso de datos (Proceso1) se ejecuta antes de la condición. El proceso de datos se ejecutará por lo menos una vez en el flujo (no dependerá de la condición).
Para, representa a una estructura repetitiva controlada por una variable de tipo contador (control), un valor inicial, incremento o decremento y un valor final. Fuente: (Novara, 2015).
14 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
ACTIVIDAD 5: Diseñar un algoritmo de tipo Diagrama de Flujo que le permita a un estudiante de Matemáticas calcular y mostrar una cantidad de números primos. Recuerde que un número primo sólo es divisible por el mismo y por la unidad.
Aprendizaje Esperado 5
5. “CONSTRUYEN
ALGORITMOS
DE
PROGRAMACIÓN
DE
TIPO
PSEUDOCÓDIGO” 5.1 Pseudocódigo: Se puede definir como el lenguaje intermedio entre el lenguaje natural y el lenguaje de programación seleccionado. Esta notación se encuentra sujeta a unas determinadas reglas que nos permiten y facilitan el diseño de algoritmos. La notación pseudocodificada surge como método para la representación de instrucciones en una metodología estructurada y nació como un lenguaje similar al inglés, que utilizaba palabras reservadas de este idioma ( start, start, end, stop, while, repeat, for, if, if-then-else , etc.) y que posteriormente se fue adaptando a otros lenguajes de lengua hispana. (López & Quero Catalinas, 1998).
Figura 5: Captura de pantalla de la vista de un algoritmo de tipo pseudocódigo en la aplicación PSeInt.
Fuente: (Novara, 2015).
Vicerrectoría Académica Cuaderno de Apuntes
ACTIVIDAD 6: El Director de Área de Técnico Deportes del Instituto Profesional AIEP, se encuentra organizando una competencia de atletismo en la cual participarán estudiantes de todas las sedes. Para llevar a cabo este evento, requiere de un programa que le permita calcular la velocidad, en metros por segundo, de los corredores de una carrera de 1.500 metros. La entrada serán parejas de números (minutos, segundos) que darán el tiempo de cada corredor. Por cada corredor, se imprimirá el tiempo en minutos y segundos, así como la velocidad media. El bucle se ejecutará hasta que se dé una entrada de 0,0 que será la l a marca de fin de entrada de datos. De acuerdo con esto, solicita a un estudiante de la Escuela de Tecnologías de Información y Comunicación, que diseñe el algoritmo en Pseudocódigo correspondiente. Aprendizaje Esperado 6
6. “CONSTRUYEN FUNCIONES UTILIZANDO ALGORITMOS Y ESTRUCTURA DE DATOS TIPO, PARA LA RESOLUCIÓN DE PROBLEMAS” 6.1 Función: Es un módulo (subprograma o subrutina) o unidad de programación constituido por comentarios, directivas, declaraciones de datos y un bloque de instrucciones que representan operaciones a ejecutar. Generalmente, las funciones tienen cuatro características que describen su sintaxis y forma de llamada: Nombre propio: Es la identidad de una función y sirve para efectuar su llamado y retorno en programas diseñados con dos o más funciones. Estos nombres o identificadores deben ser exclusivos (deben ser distintos de los nombres de otras variables u objetos del programa). Tipo de dato: Es la definición de tipo de dato empleada, en algunos lenguajes de programación (como es el caso de los derivados de C), como prefijo del nombre de la función; sirve para devolver datos de tipo específico a la función que efectúa el llamado.
Lista de argumentos: Es la declaración de los datos que serán
transferidos desde la función (proceso) que efectúa el llamado a la función. 16 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Contenido de la función: Es el bloque de comentarios, son las
declaraciones e instrucciones que definen el cuerpo de una función. (Curiel & Larios, 2005). Según (Novara, 2015), las funciones en el pseudocódigo se utilizan de forma similar a otros lenguajes. Se coloca su nombre seguido de los argumentos para la misma, encerrados entre paréntesis (por ejemplo trunc (x)). Se pueden utilizar dentro de cualquier expresión, y cuando se evalúe la misma, se reemplazará por el resultado correspondiente. Actualmente, todas la funciones disponibles son matemáticas (es decir que devolverán un resultado de tipo numérico) y reciben un sólo parámetro de tipo numérico. A continuación se listan las funciones integradas disponibles: Tabla 6: Funciones preestablecidas en PSeInt versión 20/09/2015.
Fuente: (Novara, 2015).
6.2 Variables de enlace: Todo programa utiliza unos datos de entrada y produce unos resultados, los primeros provienen de las unidades de entrada, y los segundos son enviados a las unidades de salida, siendo ambas clases de unidades dispositivos externos.
17 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
En el caso de un subprograma, los datos de entrada y los resultados provienen y son enviados del y al programa o subprograma llamante, respectivamente. Para esta labor se utilizan las variables de enlace o parámetros. Es decir, cada vez que se realiza una llamada a un subprograma, los datos de entrada le son pasados por medio de determinadas variables y, análogamente, cuando termina la ejecución del subprograma los resultados regresan mediante otras o las mismas variables. Los subprogramas también pueden realizar operaciones de entrada y salida con las unidades periféricas cuando sea necesario. El proceso de emisión y recepción de datos y resultados mediante variables de enlace se denomina paso de parámetros. (Alcalde & García, 1987).
6.3 Paso de parámetros: Los parámetros pueden ser de dos tipos: Parámetros formales. Parámetros actuales.
Se denominan parámetros formales a las variables locales de un subprograma que son utilizadas para la emisión y recepción de los datos. Se denominan parámetros actuales a las variables y datos enviados, en cada llamada a subprograma, por el programa o subprograma llamante. Los parámetros formales son siempre fijos para cada subprograma, mientras que los parámetros actuales pueden ser cambiados para cada llamada. En cualquier caso, ha de haber una correspondencia entre los parámetros formales y actuales en su número, colocación y tipo. El paso de parámetros parámetros puede realizarse de dos maneras diferentes:
Por valor. Por referencia.
El primero se utiliza para suministrar datos de entrada al subprograma, y el segundo para entrada y salida indistintamente. Un parámetro por valor es un dato o una variable global que contiene un dato de entrada para el subprograma. Esta variable no puede ser modificada por el subprograma, el cual copia su valor en parámetro formal correspondiente para poder utilizarlo. u tilizarlo. Un parámetro por referencia es una variable del programa o subprograma llamante, que puede contener o no un dato para el subprograma llamado, el cual coloca un resultado en esa variable que queda a disposición del llamante una vez concluida la ejecución del subprograma. subprograma. (Alcalde & García, 1987). 18 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Para (Novara, 2015), si el perfil de lenguaje seleccionado lo permite, se pueden declarar nuevas funciones o subprocesos en un algoritmo en Pseudocódigo. La sintaxis para ello es la l a siguiente:
Figura 6: Sintaxis de un SubProceso en PSeInt.
PSeInt (2015). Comienza con la palabra clave SubProceso (o Función, son equivalentes) seguida de la variable v ariable de retorno, el signo de asignación, el nombre del subproceso y finalmente, la lista de argumentos entre paréntesis. Existen variantes para esta estructura. Si la función no retorna ningún valor, pueden omitirse el identificador variable_de_retorno y el signo de asignación, es decir, colocar directamente el nombre y los argumentos a continuación de la palabra clave SubProceso . Si el subproceso no recibe ningún valor pueden colocarse los paréntesis vacíos u omitirse, finalizando la primera línea con el nombre del subproceso. Las reglas para los nombres de subprocesos, variables de retorno y argumentos son las mismas que para cualquier identificador en pseudocódigo. pseudocódigo. Además, opcionalmente pueden agregarse las palabras claves Por Valor o Por Referencia para indicar el tipo de pasaje en cada argumento. Si no se indica, los arreglos se pasan por referencia, las demás expresiones por valor. El pasaje por referencia implica que si la función modifica el argumento, se modificará en realidad la variable que se utilizó en la llamada, mientras que el pasaje por valor implica que la función opera con una copia de la variable (o el resultado de la expresión) que se utilizó en la llamada, por lo que las modificaciones que aplique la función no se verán reflejadas fuera de la misma. (Novara, 2015).
19 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Figura 7: Ejemplo de algoritmo en Pseudocódigo que muestra el uso de SubProceso en PSeInt. Fuente: (Novara, 2015).
6.4 Arreglos: Antes de definir el concepto de arreglo es importante mencionar que “un conjunto de datos homogéneos que se tratan
como una sola unidad se denomina estructura de datos. Si una estructura de datos reside en la memoria central del computador, se denomina estructura de datos interna. Recíprocamente, si reside en un soporte externo, se denomina estructura de datos externa. La estructura de datos interna más importante desde el punto de vista de utilización es el arreglo, que existe en la práctica totalidad de los lenguajes de programación. programación. Esta estructura se corresponde con los conceptos matemáticos de vector, matriz y poliedro”. (Alcalde & García, 1987). Ahora bien, (Curiel & Larios, 2005) , indican que “como la mayoría de los lenguajes de programación, un arreglo es un conjunto ordenado de datos homogéneos; es decir, los datos contenidos en el arreglo con del mismo tipo. Un arreglo está constituido por un conjunto finito de datos numéricos, un nombre para identificarlo, una o más dimensiones y uno o más subíndices para acceder a los datos. Las dimensiones determinan el tipo de arreglo que puede representar a las estructuras de datos de 20 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
álgebra lineal; por ejemplo, los vectores se modelan con arreglos de una dimensión, las matrices se representan con arreglos de dos dimensiones y los espacios vectoriales de tres o más dimensiones se pueden representar con arreglos de más de dos dimensiones di mensiones”.
Figura 8: Representación de un arreglo unidimensional (array) y uno bidimensional (matriz).
(Martínez, 2012).
ACTIVIDAD 7: Un programador está desarrollando una aplicación Web en la cual el usuario internauta deberá ingresar algunos datos personales en un formulario para poder registrarse y acceder a los recursos disponibles de la página. Debido a que el programador se encuentra construyendo la capa de presentación o las vistas del sitio Web, deberá validar todos los campos de entrada de datos en el formulario para que cada registro se almacene de forma correcta en la base de datos. En esta oportunidad, el programador necesita validar si la fecha de nacimiento ingresada está correcta o no. El día ha de estar comprendido entre 1 y 31, el mes entre 1 y 12, y si esto es correcto, ver si el número de días para un mes concreto es válido. Además, y por medio de una función, a la que se pasará el valor entero correspondiente a un año determinado y devolverá un valor lógico verdadero si el año es bisiesto y falso en caso contrario. Un año será bisiesto si es divisible por 4, excepto los que son divisibles por 100 pero no por 400, es decir, menos aquellos con los que comienza el siglo.
21 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Figura 9: Ejemplo de control de texto para la fecha de nacimiento en un formulario Web. Fuente: (Catalán Carrasco, 2016) .
ACTIVIDAD 8: El profesor de Programación entrega la siguiente tarea a sus estudiantes: “Escribir un algoritmo de tipo pseudocódigo en PSeInt que
permita calcular el cuadrado de los 100 (cien) primeros números enteros y almacenarlos en un arreglo, para luego en otra rutina, mostrar los números (procesados) por la salida estándar (pantalla). E l usuario no ingresa datos” .
22 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
II.
UNIDAD DE APRENDIZAJE: INTRODUCCIÓN AL LENGUAJE ORIENTADO A OBJETO. Aprendizaje Esperado 7 7. “APLICA PARADIGMA ORIENTADO A OBJETOS EN EL CONTEXTO DE ELEMENTOS SIMPLES UTILIZANDO DIAGRAMA DE CLASE Y SUS ELEMENTOS BÁSICOS” 7.1 Programación orientada a objetos: (Rodríguez Echeverría, Prieto Ramos, & Sosa Sánchez, 2004), supone un cambio en la concepción del mundo de desarrollo de software, introduciendo introduciendo un mayor nivel de abstracción que permite mejorar las características del código final. De manera muy básica, las aportaciones de este paradigma se pueden resumir en:
7.2
1
Conceptos de clase y objeto, que proporcionan una abstracción del mundo centrada en los seres y no en los verbos. Los datos aparecen encapsulados dentro del concepto de clase. El acceso a los datos se produce de manera controlada e independiente de la representación final de los mismos. Como consecuencia, se facilita el mantenimiento y la evolución de los sistemas, al desaparecer las dependencias entre distintas partes del sistema. Mediante conceptos como la composición, herencia y polimorfismo se consigue simplificar el desarrollo de sistemas. La composición y la herencia nos permiten construir clases a partir de otras clases, aumentando en gran medida la reutilización.
Concepto de Clase y Objeto: Mediante la POO1, a la hora de tratar un problema, podemos descomponerlo en subgrupos de partes relacionadas. Estos subgrupos pueden traducirse en unidades autocontenidas llamadas objetos. Antes de la creación de un objeto, se debe definir en primer lugar su formato general, su plantilla, que recibe el nombre de clase. (Rodríguez Echeverría, Prieto Ramos, & Sosa Sánchez, 2004).
POO: Programación Orientada a Objetos.
Vicerrectoría Académica Cuaderno de Apuntes
Figura 10: Descripción de los elementos básicos de la POO. Fuente: (Berganza, 2011).
7.3 Diagrama de Clases: Un Diagrama de Clases sirve para visualizar las relaciones entre las clases que involucran el sistema. (Salinas C., 1996). Un Diagrama de Clases, describe los tipos de objetos que hay en el sistema y las diversas clases de relaciones estáticas que existen entre ellos. Hay dos tipos principales de relaciones estáticas:
Asociaciones (por ejemplo, un cliente puede rentar diversas videocintas). Subtipos (una enfermera es un tipo de persona).
Los Diagramas de Clases también muestran los atributos y operaciones operaciones de una clase y las l as restricciones a que se ven sujetos, según la forma en que se conecten los objetos. (Fowler & Scott, 1999).
7.4 UML: UML o Lenguaje Unificado de Modelado, ayuda al usuario a entender la realidad de la tecnología y la posibilidad de que reflexione antes de invertir y gastar grandes cantidades en proyectos que no estén seguros en su desarrollo, reduciendo el coste y el tiempo empleado en la construcción de las piezas que constituirán el modelo. Sin embargo, desde el punto de vista puramente tecnológico, UML, tiene una gran cantidad de propiedades que han sido las que, realmente, han contribuido a hacer de UML el estándar de facto de la industria que es en realidad. Algunas de las propiedades de UML como lenguaje de modelado estándar son:
Concurrencia, es un lenguaje distribuido y adecuado a las necesidades de conectividad actuales y futuras.
24 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Ampliamente utilizado por la industria desde su adopción por OMG2. Reemplaza a decenas de notaciones empleadas con otros lenguajes. Modela estructuras estructuras complejas. Las estructuras más importantes que soportan tienen su fundamento en las tecnologías orientadas a objetos, tales como objetos, clase, componentes y nodos. Emplea operaciones abstractas como guía para variaciones futuras, añadiendo variables si es necesario. Comportamiento del sistema: casos de uso, diagramas de secuencia y de colaboraciones, que sirven para evaluar el estado de las máquinas. (Rumbaugh, (Rumbaugh, Jacobson, & Booch, 2000).
ACTIVIDAD 9: El tablero de damas está compuesto de 64 celdas en una grilla de 8x8. El objetivo del juego es capturar todas las piezas de tu oponente. Los contendientes usan su turno para mover una de sus piezas del tablero a una celda vacía. Una movida válida es una movida diagonal hacia adelante en una celda hacia hacia una vacía o una movida hacia delante saltando sobre una pieza del oponente hasta una celda vacía. La última movida captura la pieza saltada. La pieza saltada es removida del tablero. Después de capturar la pieza del oponente, se puede repetir el mismo procedimiento de captura mientras sea posible capturar otra pieza. Si un jugador logra mover una de sus piezas hasta el borde del tablero del oponente, entonces esta pieza es promovida a Dama. Una Dama tiene poderes especiales: además de poder moverse diagonalmente hacia adelante, puede también hacerlo hacia atrás. El juego se gana cuando el jugador ha capturado todas las piezas de su oponente (se puede empatar si un jugador no puede moverse más o ninguno puede comer piezas del otro). Dado que el juego ocurre en una simulación en el computador, se necesitará un controlador del juego que le pregunta a cada jugador de turno su movida. Cuando se reciba una movida de un jugador, se solicita al tablero que valide la movida. Si ésta es válida entonces la pieza del jugador actual es movida en el 2
OMG: Object Management Group (http://www.omg.org/ http://www.omg.org/))
25 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
tablero. Si se captura alguna pieza ésta es removida del tablero. El tablero es desplegado y se evalúa el nuevo estado del juego. Este proceso se repite hasta que un jugador gane al dejar a su ponente sin piezas o se llegue a una posición de bloqueo. ¿Cuál es el diagrama de clases correspondiente para que el sistema permita jugar varias veces?
ACTIVIDAD 10: Se desea diseñar un diagrama de clases sobre la información de las reservas de una empresa dedicada al arriendo de automóviles, teniendo en cuenta que: Un determinado cliente pueda tener en un momento dado hechas varias reservas. De cada cliente se desean su RUN, nombre, dirección y teléfono. Además, dos clientes se diferencian por un código único. Cada cliente puede ser avalado por otro cliente de la empresa. Una reserva la realiza un único cliente pero puede involucrar a varios vehículos. Es importante registrar la fecha de inicio y final de la reserva, el precio del arriendo de cada uno de los vehículos, los litros de gasolina en el estanque del vehículo en el momento de realizar la reserva, el precio total de la reserva y un indicador de si el o los vehículos han sido entregados. Todo vehículo tiene siempre asignado un determinado garaje que no puede cambiar. De cada vehículo se requiere la matrícula (patente) el modelo, el color y la marca. Cada reserva se realiza en una determinada agencia.
26 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Aprendizaje Esperado 8 8. “PROGRAMA CLASES BÁSICAS EN JAVA QUE PERMITAN DAR SOLUCIÓN A REQUERIMIENTOS DE USUARIOS CON BAJO NIVEL DE COMPLEJIDAD” 8.1 Java: es un lenguaje de programación y una plataforma informática comercializada por primera vez en 1995 por Sun Microsystems. Hay muchas aplicaciones y sitios web que no funcionarán a menos que tenga Java instalado y cada día se crean más. Java es rápido, seguro y fiable. Desde portátiles hasta centros de datos, desde consolas para juegos hasta súper computadoras, computadoras, desde teléfonos móviles hasta Internet, Java está en todas partes. (Oracle). 8.2 BlueJ IDE: Es un entorno integrado de desarrollo (de sus siglas en inglés IDE - Integrated Development Environment) para el lenguaje de programación Java, desarrollado principalmente con propósitos educacionales, pero también es adecuado para el desarrollo de software a pequeña escala. (EcuRed, 2015). 8.3 Sintaxis en Java: Para un inexperto, la forma en que se combinan las palabras y símbolos para formar programas ejecutables puede parecer confusa y casi antojadiza. Sin embargo, la escritura de programas computacionales se rige por un reducido conjunto de reglas gramaticales. Este conjunto de reglas se denomina la sintaxis del lenguaje de programación. Por esta razón, también se habla de reglas sintácticas como sinónimo de reglas gramaticales. gramaticales. Las reglas gramaticales son similares a sus contrapartes de los lenguajes hablados. La diferencia radica en que en un lenguaje hablado una frase gramaticalmente mal formada, una persona es capaz de comprender. Al contrario, en un lenguaje de programación, cualquier descuido en el cumplimiento de su gramática o sintaxis se traduce en un mensaje de error, y por lo tanto, un programa que no funciona. Por ejemplo, la siguiente instrucción: a+1
= b;
Podría ser interpretada como calcular a+1 y asignársela a b. Pero el compilador es incapaz de captar esta interpretación y termina con un mensaje de error. Por esta razón, es sumamente importante dominar la gramática del lenguaje que se usa para programar. Su conocimiento, permite comprender más rápidamente los errores que se cometerán inevitablemente al escribir un programa. programa. Tales errores serán s erán típicamente comunicados por el compilador en un lenguaje rudo y críptico.
Vicerrectoría Académica Cuaderno de Apuntes
Cada lenguaje de programación posee su propia sintaxis. Las reglas que rigen para Java, no son las mismas que para Pascal o Visual Basic. Una vez que se entiende la sintaxis de un lenguaje específico, es muy fácil aprender la sintaxis de otros lenguajes de programación. programación. (Mateu B., 1999).
ACTIVIDAD 11: Un estudiante de redes solicita a uno de programación, que le construya un emulador de un router para realizar pruebas de conectividad. Para dar solución al requerimiento el estudiante de programación debe: 1. Escribir una clase que modele un router, con los siguientes campos: String marca: se carga en el constructor y no se modifica nunca. String ip: se carga en el constructor constructor y se puede modificar. int bytes_in: al principio vale 0, y se puede incrementar. int bytes_out: al principio vale 0, y se puede incrementar.
2. La clase debe tener: Un constructor. Métodos getter de todos los campos. Un setter para el campo ip. Un método para añadir bytes de entrada. Un método para añadir bytes de salida. Un método para leer el número total de bytes (in + out).
ACTIVIDAD 12: A un grupo de estudiantes de programación del Instituto AIEP, se les solicita desarrollar una aplicación de consola en Java de reserva de butacas de un multicine. Para hacer las reservas deberán utilizar un conjunto de menús, y todos ellos incluir tres botones: siguiente, anterior y salir. En cada menú se realizan algunas actividades de la reserva y las transiciones son las que aparecen en la figura:
28 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Se desea una solución de Software que se pueda adaptar con facilidad a otros casos parecidos (por ejemplo reservar asientos de tren, reservar libros de bibliotecas, entre otros). Y para ello trabajaron con las seis clases que aparecen en el siguiente diagrama:
La clase EjecucionReserva se encarga de gestionar la evolución de general de la reserva y está diseñada para poder ser reutilizada en otros casos. La clase Estado es una clase abstracta de los posibles estados de la reserva. Las clases SeleccionPelicula, Seleccion, Asiento, Inicial , Reserva, Confirmacion son las clases que gestionan cada una de las fases de la reserva. La clase EjecucionReserva incluye un array con los estados que ejecuta la reserva; el estado anterior a un estado en la posición "i", es el "i-1", y el siguiente es el "i+1" (el anterior al de la posición 0 es el último, y el siguiente al último es el 0); el estado inicial es el estado de la posición 0. 29 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Aprendizaje Esperado 9
9. “Construyen aplicaciones con interfaz gráfica de usuario siguiendo especificaciones con mediano nivel de complejidad ”. 9.1 API: La API Java es una interfaz de programación de aplicaciones (API, por sus siglas del inglés: Application Programming Programming Interface Interface ) provista por los creadores del lenguaje de programación Java, que da a los programadores programadores los medios para desarrollar aplicaciones Java. (Wikipedia, 2015). La API Java está organizada en paquetes lógicos, donde cada paquete contiene un conjunto de clases relacionadas semánticamente. semánticamente. (Wikipedia, 2015). En el siguiente enlace podrá revisar todo el API actualizado de Java, URL: https://docs.oracle.com/javase/7/docs/api/
9.2 Package e Import: Un package (paquete) es una agrupación de clases afines. Equivale al concepto de librería existente en otros lenguajes o sistemas. Una clase puede definirse como perteneciente a un package y puede usar otras clases definidas en ese o en otros packages . Los packages delimitan el espacio de nombres (space name). El nombre de una clase debe ser único dentro del package donde se define. Dos clases con el mismo nombre en dos packages distintos pueden coexistir e incluso pueden ser usadas en el mismo programa. Una clase se declara perteneciente a un package con la cláusula package, cuya sintaxis es: package nombre_package; nombre_package;
La cláusula package debe ser la primera sentencia del archivo fuente. Cualquier clase declarada en ese archivo pertenece al package indicado. Por ejemplo, un archivo que contenga las sentencias: package miPackage; . . . class miClase { . . .
Declara que la clase miClase pertenece al packagemiPackage . La cláusula package es opcional. Si no se utiliza, las clases declaradas en el archivo fuente no pertenecen a ningún package concreto, sino que pertenecen a un package por defecto sin nombre. La agrupación de clases en packages es conveniente desde el punto de vista organizativo, para mantener bajo una ubicación común clases 30 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
relacionadas que cooperan desde algún punto de vista. También resulta importante importante por la implicación que los packages tienen en los modificadores de acceso. Cuando se referencia cualquier clase dentro de otra se asume, si no se indica otra cosa, que ésta otra está declarada en el mismo package. Por ejemplo: package Geometria; . . . class Circulo { Punto centro; . . . }
En esta declaración definimos la clase Círculo perteneciente al package Geometria. Esta clase usa la clase Punto. El compilador y la l a JVM asumen que Punto pertenece también al package Geometria , y tal como está hecha la definición, para que la clase Punto sea accesible (conocida) por el compilador, es necesario que esté definida en el mismo package. Si esto no es así, es necesario hacer accesible el espacio de nombres donde está definida la clase Punto a nuestra nueva clase. Esto se hace con la cláusula import . Supongamos que la clase Punto estuviera definida de esta forma: package GeometriaBase; GeometriaBase; class Punto { int x , y; }
Entonces, para usar la clase Punto en nuestra clase Circulo deberíamos poner: package GeometriaAmpliada; GeometriaAmpliada; import GeometriaBase.*; GeometriaBase.*; class Circulo { Punto centro; . . . } GeometriaBase.*; se hacen accesibles todos los Con la cláusula import GeometriaBase.*; nombres (todas las clases) declaradas en el packageGeometriaBase . Si sólo se quisiera tener accesible la clase Punto se podría declarar: import GeometriaBase.Punto;
También es posible hacer accesibles los nombres de un package sin usar la cláusula import calificando completamente los nombres de aquellas clases pertenecientes a otros packages. Por ejemplo: package GeometriaAmpliada; GeometriaAmpliada; class Circulo { GeometriaBase.Punto GeometriaBase.Punto centro;
31 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
. . . }
Sin embargo si no se usa import es necesario especificar el nombre del package cada vez que se usa el nombre Punto. La cláusula import simplemente indica al compilador donde debe buscar clases adicionales, cuando no pueda encontrarlas en el package actual y delimita los espacios de nombres y modificadores de acceso. Sin embargo, no tiene la implicación de 'importar' o copiar código fuente u objeto alguno. En una clase puede haber tantas sentencias import como sean necesarias. Las cláusulas cl áusulas import se colocan después de la cláusula package (si es que existe) y antes de las definiciones de las clases. (Bel Puchol, 2001).
ACTIVIDAD 13: Una empresa de servicios de nuestro país, requiere una aplicación para el departamento de recursos humanos que permita gestionar alguna información de un empleado. Los datos del empleado son: nombre, apellido, sexo, fecha de nacimiento y una imagen asociada. Además, como trabaja en una determinada compañía tiene una fecha de ingreso a la misma y un salario base asignado. La aplicación debe permitir las siguientes operaciones: 1. Modificar el salario del empleado. 2. Realizar algunos cálculos con la información disponible: a) Edad actual. b) Antigüedad en la empresa. c) Prestaciones a las que tiene derecho. Para el cálculo de las prestaciones se utiliza la fórmula p = (a * s)/12 (donde p: prestaciones, a: antigüedad, s: salario). ACTIVIDAD 14: Una de las actividades más comunes en el mundo financiero, es la realización de simulaciones que permitan a los clientes saber el rendimiento de sus productos a través del tiempo, contemplando diferentes escenarios y posibles situaciones que se presenten. Se quiere crear un programa que haga la simulación en el tiempo de la cuenta bancaria de un cliente. Un cliente tiene un nombre y un número de cédula el cual identifica la cuenta. Una cuenta, por su parte está constituida por tres productos financieros básicos: (1) una cuenta de ahorro, (2) una cuenta corriente y (3) un certificado de depósito a término CDT. Estos productos son independientes y tienen comportamientos particulares. 32 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
El saldo total de la cuenta es la suma de lo que el cliente tiene en cada uno de dichos productos. En la cuenta corriente el cliente puede depositar o retirar dinero. Su principal característica característica es que no recibe ningún interés por el dinero que se encuentre allí depositado. En la cuenta de ahorro, se paga un interés mensual del 0.6% sobre el saldo. Cuando el cliente abre un CDT, define la cantidad de dinero que quiere invertir y negocia con el banco el interés mensual que va a recibir. A diferencia de la cuenta corriente o la cuenta de ahorro, en un CDT no se puede consignar ni retirar dinero. La única operación posible es cerrarlo, en cuyo caso, el dinero y sus intereses pasan a la cuenta corriente. Se quiere que el programa con interfaz gráfica de Java que permita a una persona simular el manejo de sus productos bancarios, dándole las facilidades de: (1) hacer las operaciones necesarias sobre los productos que conforman la cuenta, y (2) avanzar mes por mes en el tiempo, para que el cliente pueda ver el resultado de sus movimientos bancarios y el rendimiento de sus inversiones.
33 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
RESPUESTAS DE LAS ACTIVIDADES
Tabla X: Respuestas por actividad, con comentarios. N° Actividad
Respuesta
Como se puede observar en el diagrama de Venn-Euler, los conjuntos solicitados: A, B y C se encuentran diferenciados por color: verde, azul y rojo respectivamente. Los elementos de cada conjunto están representados por el número de matrícula del estudiante, ya que este dato es el más representativo y único para cada estudiante.
1
2
Comentarios
a. Sólo dos productos: 39 personas (d+e+f). b. Ningún producto: 15 personas (h). c. Un producto: 135 personas.
a=50, b=30, c=15, d=16, e=12, f=8 y g=4. W: El índice de penas se incrementa. Conector lógico: Implicancia. X: Disminuye los niveles de delincuencia. Conector lógico: Implicancia.
3
Y: El índice de colusiones disminuye. disminuye. Conector lógico: Conjunción. Z: El número de secuestros aumenta En símbolos. Note además que
Es una Contingencia. por ello se tiene:
Vicerrectoría Académica Cuaderno de Apuntes
COMPRENDE • Leer detenidamente el problema • ¿Cuántos colores de fichas se reparten? • ¿Cuántas fichas rojas, azules y amarillas
obtuvo Andrés? • ¿Qué pregunta el problema?
PLANEA • Para hallar el puntaje que obtiene
Andrés por sus llegadas de primero, calcular el cubo de la cantidad de fichas rojas. • Para hallar el puntaje por sus llegadas
en segundo lugar, calcular el doble de la cantidad de fichas azules. • Para hallar el puntaje que pierde por
sus llegadas en último lugar, calcular el cuadrado de la cantidad de fichas amarillas.
4
El puntaje que obtuvo Andrés es 23 puntos.
• Para hallar el puntaje total, calcular la
suma de los puntajes por las fichas rojas y azules, restarle los puntos de las fichas amarillas. RESUELVE • Por tres fichas rojas: 3³ = 27 puntos • Por seis fichas azules: 6 x 2 = 12 puntos • Por cuatro fichas amarillas: 42 = 16
puntos •Para obtener el puntaje final de Andrés, sumar los puntos obtenidos con las fichas rojas y azules (27 + 12 = 39 puntos) y de este resultado restar los puntos representados por las fichas amarillas (39 – 16 16 = 23 puntos). REVISA • El puntaje que obtuvo Andrés es 23
puntos. • Verificar las operaciones y comparar los
cálculos con la solución estimada.
35 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
5
En la construcción de este diagrama de flujo se han utilizado los siguientes tipos de variables: Enteros y Lógico. Además, se implementaron las siguientes estructuras de control de flujo: Mientras, Para y Si-Entonces.
Datos de salida: v (velocidad media) Datos de entrada: mm, ss (minutos y segundos) Datos auxiliares: distancia (distancia recorrida) y tiempo (minutos y segundos que ha tardado en recorrerla)
6
Se debe efectuar un bucle que se ejecute hasta que mm sea 0 y ss sea 0. Dentro del bucle se calcula el tiempo en segundos con la fórmula tiempo = ss + mm * 60 . La velocidad se hallará con la fórmula velocidad = distancia / tiempo .
36 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
7
La función implementada es nombrada como EsBisiesto la cual requiere de un parámetro de entrada cuyo valor debe ser de tipo entero y que representará al año de la fecha de nacimiento.
8
37 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
9
Revisar apartado en 7.3 en donde se entrega una definición explícita de los Diagramas de Clases.
10
Revisar apartado en 7.4 en donde se entrega una definición explícita sobre el Lenguaje Unificado de Modelado (UML).
38 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
11
39 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
public class EjecucionReserva { public enum Boton {Siguiente, Anterior, Salir} protected Estado[] estados; int posicionActual=0; posicionActual=0; public void nuevoEstado(Estado estado, int posicion) { estados[posicion]=estado; } protected Estado getEstado(int i) { return estados[i]; }
12
public void transicion(Boton botonSeleccionado) { if (botonSeleccionado (botonSeleccionado == Boton.Siguiente) Boton.Siguiente) posicionActual=(posicionA posicionActual=(posicionActual+1) ctual+1) % estados.length; else if (botonSeleccionado (botonSeleccionado == Boton.Anterior) Boton.Anterior) posicionActual=(posicionA posicionActual=(posicionActual-1) ctual-1) % estados.length; else return; } public Boton ejecutaEstado() { estados[posicionActual].m estados[posicionActual].muestraMenu() uestraMenu(); ; estados[posicionActual].p estados[posicionActual].procesaMenu() rocesaMenu(); ; return estados[posicionActual] estados[posicionActual].leeSalida( .leeSalida(); ); } public void ejecutaReserva() { Boton salidaSeleccionada; do { salidaSeleccionada=ejecu salidaSeleccionada=ejecutaEstado(); taEstado(); if (salidaSeleccionada == Boton.Salir) return; transicion(salidaSeleccionada); } while (true); } public EjecucionReserva(int numeroEstados) numeroEstados) { estados=new Estado[numeroEstados]; Estado[numeroEstados]; } } public void main(String[] arg) { EjecucionReserva EjecucionReserva er=new EjecucionReserva(5); EjecucionReserva(5); er.nuevoEstado(new er.nuevoEstado(new Inicial(),0); Inicial(),0); er.nuevoEstado(new er.nuevoEstado(new SeleccionPelicula(), SeleccionPelicula(), 1); er.nuevoEstado(new er.nuevoEstado(new SeleccionAsiento(), SeleccionAsiento(), 2); er.nuevoEstado(new er.nuevoEstado(new Reserva(), 3); er.nuevoEstado(new er.nuevoEstado(new Confirmacion(), Confirmacion(), 4); er.ejecutaReserva(); } public String String Estado if (as
void muestraMenu() { asiento="?"; asiento="?"; pelicula="?"; pelicula="?"; as=getAnterior().getAnterior(); instanceof SeleccionAsiento) {
40 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
asiento=((SeleccionAsiento) as).getAsientoSeleccionado(); Estado pel=as.getAnterior(); pel=as.getAnterior(); if (pel instanceof SeleccionPelicula) SeleccionPelicula) { SeleccionPelicula SeleccionPelicula selección= (SeleccionPelicula) (SeleccionPelicula) pel; pelicula= seleccion.getPeliculaSel seleccion.getPeliculaSeleccionada( eccionada(); ); } } putMessage("Confima putMessage("Confima la reserva del asiento " + asiento + " de la Pelicula "+pelicula); sig=putButton("Siguiente"); ant=putButton("Anterior"); sal=putButton("Salir"); ok=putButton("OK"); can=putButton("Cancel"); } public void procesaMenu() { Button sel=getButtonPressed(); sel=getButtonPressed(); if (sel == sig) { salida=EjecucionReserva.B salida=EjecucionReserva.Boton.Siguien oton.Siguiente; te; } else if (sel == ant) { salida=EjecucionReserva.B salida=EjecucionReserva.Boton.Anterio oton.Anterior; r; } else if (sel == sal) { salida=EjecucionReserva.B salida=EjecucionReserva.Boton.Salir; oton.Salir; } else if (sel == ok) { salida=EjecucionReserva.B salida=EjecucionReserva.Boton.Siguien oton.Siguiente; te; } else if (sel == can) { ((Reserva) getAnterior()).cancelarR getAnterior()).cancelarReserva(); eserva(); salida=EjecucionReserva.B salida=EjecucionReserva.Boton.Siguien oton.Siguiente; te; } else { putMessage("Error interno en la seleccion de opción"); } }
13
Proyecto JAVA y Código fuente disponible en: http://bit.ly/1SzyqGI
14
Proyecto JAVA y Código fuente disponible en: http://bit.ly/1SzyqGI
Proyecto JAVA y Código fuente disponible en: http://bit.ly/1SzyqGI Proyecto JAVA y Código fuente disponible en: http://bit.ly/1SzyqGI
41 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Bibliografía (Enero de 2016). Recuperado el 11 de enero de 2016, de CCM.net: http://es.ccm.net/contents/304-lengua http://es.ccm.net/contents/304-lenguajes-de-programacion jes-de-programacion Alcalde, E., & García, M. (1987). Metodología de Programación. Aplicaciones Aplicaciones en BASIC, COBOL y Pascal. Madrid: Pascal. Madrid: Mc Graw-Hill. Bel Puchol, A. (17 de junio de 2001). Arrakis 2001). Arrakis.. Recuperado el 30 de diciembre de 2015, de http://www.arrakis.es/~abelp/ApuntesJa http://www.arrakis.es/~abelp/ApuntesJava/Packages.htm va/Packages.htm Berganza, L. (17 de septiembre de 2011). Blog de Luis Berganza. Berganza. Recuperado el 07 de enero de 2016, de https://llberg.wordpress.com/ https://llberg.wordpress.com/ Carvajal Vieyte, R. A. (28 de Enero de 2013). MA1101 - Introducción al Álgebra. Recuperado Álgebra. Recuperado el 29 de diciembre de 2015, de http://docencia.dim.uchile. http://docencia.dim.uchile.cl/algebra/material cl/algebra/material/tut_alg_2013.pdf /tut_alg_2013.pdf Catalán Carrasco, A. R. (Enero de 2016). Cuaderno de Apuntes de Fundamentos de Programación Computacional. Temuco, Araucanía, Chile. Chamorro, M. y. (2013). Curiel, R., & Larios, M. E. (2005). C Elementos esenciales. México: esenciales. México: Pearson. EcuRed. (2015). EcuRed . Recuperado el 02 de enero de 2016, de http://www.ecured.cu/BlueJ Fuenlabrada de la Vega Trucios, S. (2000). Aritmética (2000). Aritmética y Álgebra. Mé Álgebra. México: McGraw-Hill Interamericana de Mxico.
Galdámez, J. (31 de marzo de 2014). judithmarketing1 2014). judithmarketing14 4. Recuperado el 28 de diciembre de 2015, de https://judithmarketing14.wordpress.com/ https://judithmarketing14.wordpress.com/ González Gutiérrez, F. J. abril de 2005). Universidad de Cádiz. Recuperado Cádiz. Recuperado el 29 de diciembre de 2015, de http://www2.uca.es/matematicas/Doc http://www2.uca.es/matematicas/Docencia/ESI/1711051/Ap encia/ESI/1711051/Apuntes/Leccion untes/Leccion1.pdf 1.pdf Joyanes Aguilar, L., Rodríguez Baena, L., & Fernández Azuela, M. (1996). Fundamentos de Programación. Libro de Problemas. Madrid: Problemas. Madrid: McGraw-Hill. López García, J. C. (9 de noviembre de 2009). Eduteka. Recuperado Eduteka. Recuperado el 30 de diciembre de 2015, de http://www.eduteka.org/pdfdir/AlgoritmosProgramacion.pdf López, J., & Quero Catalinas, E. (1998). Fundamentos de Programación. Madrid: Programación. Madrid: Paraninfo. 42 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP
Vicerrectoría Académica Cuaderno de Apuntes
Martín Martínez, M. J. (2008). Open Course Ware.Recuperado Ware.Recuperado el 28 de Diciembre de 2015, de http://ocw.usal.es/ensenanzastecnicas/electronica/conten tecnicas/electronica/contenido/electronica ido/electronica/Tema6_AlgebraBOOLE.p /Tema6_AlgebraBOOLE.pdf df Martínez, E. (05 de marzo de 2012). Blog de Edna Martinez. Martinez. Recuperado el 04 de enero de 2016, de http://edna-martinez.blogspot.cl/ http://edna-martinez.blogspot.cl/ Mateu B., L. (16 de Abril de 1999). Página Personal de Luis Mateu B. Recuperado B. Recuperado el 29 de diciembre de 2015, de http://users.dcc.uchile.cl/~ http://users.dcc.uchile.cl/~lmateu/CC lmateu/CC10A99/Apuntes/sintaxis/ 10A99/Apuntes/sintaxis/ Molina, J. M., & Chamorro, F. (15 de febrero de 2006). McGraw-Hill Interamericana Interamericana de España, SL. Recuperado el 30 de diciembre de 2015, de http://assets.mheducation.es/bc http://assets.mheducation.es/bcv/guide/capitul v/guide/capitulo/8448148703.pdf o/8448148703.pdf Novara, P. (2015). PSeint . Recuperado en diciembre de 2015, de http://pseint.sourceforge.net/ http://pseint.sourceforge.net/ Oracle. (s.f.). Java (s.f.). Java.. Recuperado el 04 de enero de 2016, de https://www.java.com/es/download/faq https://www.java.com/es/download/faq/whatis_java.xml /whatis_java.xml Peralta. (23 de abril de 2015). Clasificación de los Diferentes Tipos de Sistemas de Información según los Niveles de las Organizaciones. Organizaciones. Recuperado el 27 de diciembre de 2015, de https://aq2jg16.wordpress.com/2015/04/23/siste https://aq2jg16.wordpress .com/2015/04/23/sistema-de-informacion/ ma-de-informacion/ Rodríguez Echeverría, R., Prieto Ramos, Á., & Sosa Sánchez, E. (2004). Programación Orientada a Objetos. España: Objetos. España: Cáceres. Rumbaugh, J., Jacobson, I., & Booch, G. (2000). El Lenguaje Unificado de Modelado. Manual de Referencia. Madrid: Referencia. Madrid: Pearson Educación S.A. Salinas C., P. (30 de octubre de 1996). Página Web de Patricio Salinas. Salinas. Recuperado el 28 de diciembre de 2015, de http://users.dcc.uchile.cl/~psalinas/uml http://users.dcc.uchile.cl/~psalinas/uml/modelo.html /modelo.html Tutellus. (Diciembre de 2015). Tutellus.com. Tutellus.com. Recuperado el 26 de diciembre de 2015, de https://www.tutellus.com/ciencias-n https://www.tutellus.com/ciencias-naturales/matematicas/ap aturales/matematicas/aprende-algebra-desd rende-algebra-desde-ceroe-cero1750 Wikipedia. (2015). Wikipedia. Wikipedia. Recuperado el 04 de enero de 2016, de https://es.wikipedia.org/wiki/API_Java
43 Cuaderno de Apuntes de uso exclusivo e xclusivo de los estudiantes del Instituto Profesional AIEP. Prohibida su reprodu cción. Derechos reservados AIEP