Dsof 1070 PDF

Modalidad Abierta y a Distancia CCCCCCC CC Tecnologías de la información Algoritmos y Resolución de Problemas Guía didá

Views 56 Downloads 0 File size 6MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Modalidad Abierta y a Distancia CCCCCCC CC Tecnologías de la información

Algoritmos y Resolución de Problemas Guía didáctica

La Universidad Católica de Loja

Área Técnica

MODALIDAD ABIERTA Y A DISTANCIA

Departamento de Ciencias de la Computación y Electrónica Sección Tecnologías Avanzadas de la Web y SBC

Algoritmos y Resolución de Problemas

Guía didáctica

Carrera ƒ Tecnologías de la información

Ciclo

I

Autoras: María del Carmen Cabrera L. Gladys Alicia Tenesaca L.

La Universidad Católica de Loja

Asesoría virtual: www.utpl.edu.ec

ALGORITMOS Y RESOLUCIÓN DE PROBLEMAS Guía Didáctica María del Carmen Cabrera L. Gladys Alicia Tenesaca L. UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA 4.0, CC BY-NY-SA Diagramación y diseño digital: EDILOJA Cía. Ltda. Telefax: 593-7-2611418 San Cayetano Alto s/n www.ediloja.com.ec [email protected] Loja-Ecuador Primera edición ISBN digital - 978-9942-25-297-5

La versión digital ha sido acreditada bajo la licencia Creative Commons 4.0, CC BY-NY-SA: Reconocimiento-No comercial-Compartir igual; la cual permite: copiar, distribuir y comunicar públicamente la obra, mientras se reconozca la autoría original, no se utilice con fines comerciales y se permiten obras derivadas, siempre que mantenga la misma licencia al ser divulgada. https:// creativecommons.org/licenses/by-nc-sa/4.0/deed.es 27 Febrero, 2018

2. Índice

2. Índice 4 3. Introducción 6 4. Bibliografía 8 4.1. Básica 8 4.2. Complementaria 8 5.

Orientaciones generales para el estudio 10

6.

Proceso de enseñanza-aprendizaje para el logro de competencias 14 PRIMER BIMESTRE UNIDAD 1. FUNDAMENTOS DE ALGORITMOS Y SU REPRESENTACIÓN 14 1.1.

Concepto de Lógica 14

1.2. Algoritmo 15 1.3. Sistema 20 1.4.

Concepto de algoritmo en el marco de la Lógica 21

1.5.

Lógica de programación 21

1.6.

Lenguajes de programación: sintaxis básicas. 21

1.7.

Diagramas de flujo y su representación 25

Autoevaluación 1 38 UNIDAD 2. DATOS E INFORMACIÓN 42 2.1.

Datos e información 42

2.2.

Bit y Byte 43

2.3.

Múltiplos y Submúltiplos del Byte 43

2.4. Operadores 45 2.5. Expresiones 54 2.6.

Variables y tipos predefinidos 57

Autoevaluación 2 65

UNIDAD 3. CICLO DE DESARROLLO Y PRIMITIVAS ALGORÍTMICAS 68 3.1.

Ciclo de desarrollo de un programa 68

3.2.

Primitivas algorítmicas 73

3.3.

Diseño de miniespecificaciones 77

3.4.

Pruebas de escritorio 84

Autoevaluación 3 86 SEGUNDO BIMESTRE UNIDAD 4. ESTRUCTURAS LÓGICAS CONDICIONALES 90 4.1.

Estructura lógica condicional simple. 91

4.2.

Estructura lógica condicional compuesta. 93

4.3.

Estructura lógica Dependiendo De 96

Autoevaluación 4 102 UNIDAD 5. ESTRUCTURAS LÓGICAS REPETITIVAS 110 5.1.

Estructura lógica repetitiva Mientras que – Hacer 111

5.2.

Estructura lógica repetitiva Hacer - Hasta 114

5.3.

Estructura lógica repetitiva Para 118

5.4.

Estructuras lógicas repetitivas anidadas 122

Autoevaluación 5 133 UNIDAD 6. ESTRUCTURAS DE DATOS 137 6.1.

Arreglos unidimensionales 138

6.2.

Arreglos bidimensionales o matrices 144

Autoevaluación 6 154 7.

Solucionario 157

8.

Glosario 179

9.

Referencias bibliográficas

10.

Anexos 187

186

Guía Didáctica: Algoritmos y Resolución de Problemas

PRELIMINARES

3. Introducción

Estimados estudiantes, reciban un cordial saludo de bienvenida a esta su universidad, expresamos nuestra felicitación por haber elegido y confiado en la Universidad Técnica Particular de Loja. Es un gusto para nosotros guiar el proceso de aprendizaje en la asignatura de Algoritmos y Resolución de Problemas, cualquier duda e inquietud estamos a sus órdenes para responderle. Algoritmos y Resolución de Problemas es una asignatura de primer ciclo que corresponde a la unidad de organización curricular básica, su campo de formación es praxis profesional con 120 horas de planificación dentro de la carrera de Tecnologías de la Información de la Modalidad Abierta y a Distancia de UTPL. Esta asignatura se ha elaborado enfocándose en el desarrollo de las competencias básicas para el diseño de algoritmos a través del pensamiento lógico aplicado a la resolución de problemas por computadora. Dentro de la carrera de Tecnologías de la Información, es muy importante considerar que el desarrollo de habilidades para resolver un problema computacional no se logra sino con la adquisición de una forma de pensamiento que tiene la capacidad de abstracción, de encontrar patrones, de ordenar de manera operativa, de identificar los componentes de un problema y representarlo en una notación formal que permita establecer una solución para el mismo. Todas las personas nos enfrentamos día a día a un sin número de problemas y somos capaces de resolverlos de diferentes maneras, pero existen muchas dificultades al momento de traducir este problema a un lenguaje algorítmico. Intentar resolver lo mencionado es justamente el objetivo principal de la asignatura de Algoritmos y Resolución de Problemas. Con las competencias adquiridas al finalizar las asignatura, estarán en la posibilidad no solo de aprender a programar, sino de entender cómo funcionan los distintos lenguajes computacionales y, por tanto, entender cómo funciona la computadora. De igual

6

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRELIMINARES

manera, los conocimientos adquiridos los podrán aplicar a la resolución de los problemas que se les presenten en el transcurso de la carrera. Los contenidos han sido organizados en unidades y distribuidos equitativamente para los dos bimestres. Se abordará en la unidad 1 los fundamentos de algoritmos y su representación; en la unidad 2 se estudiará la naturaleza de los datos, su representación y sus operaciones, y la unidad 3 se enfoca en el ciclo de vida del desarrollo de un programa y las primitivas algorítmicas básicas para la resolución de problemas. El segundo bimestre comprende la unidad 4 que abarca el uso de las estructuras lógicas y condicionales, la unidad 5 las estructuras lógicas repetitivas y finalmente completamos las temáticas planificadas en la unidad 6 con el estudio de las estructuras de datos, arreglos unidimensionales y bidimensionales. La programación no es un arte, es una técnica. Cualquiera que pueda pensar podrá analizar, cualquiera que pueda analizar podrá generar algoritmos, quien pueda generar algoritmos podrá generar modelos de datos, y quien pueda generar modelos de datos podrá generar miniespecificaciones, codificar y probar programas (Ramírez, 2007) Al iniciar esta asignatura hay mucho por descubrir y aprender, lo que cada uno quiera dar hace la diferencia. Si del tiempo planificado para sus estudios invierten el 101% y no el 99% en los 365 días del año, se darán cuenta que el 1% de dedicación adicional será su impulso para culminar con éxitos su carrera. 99% nuestro tiempo en 365 días → 0,99365 = 0,03 101% nuestro tiempo en 365 días → 1,01365 = 37,8

Entonces estimado estudiante no hay excusas. Lo invitamos a ponerse a trabajar. Damos inicio a la asignatura, ¡Bienvenidos!.

7

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRELIMINARES

4. Bibliografía

4.1. Básica Mancilla, A., Ebratt, R. y Capacho, J. (2014). Diseño y construcción de algoritmos. Barranquilla Universidad del Norte. Este libro contiene un compendio detallado y sistemático que sirve para el análisis, diseño y construcción de algoritmos. Cabrera, M. y Tenesaca, G. (2017). Guía didáctica de Algoritmos y Resolución de Problemas. Loja. Universidad Técnica Particular de Loja. La guía didáctica está diseñada para brindar los conocimientos necesarios sobre la resolución de problemas mediante el diseño de algoritmos. Explica cómo representar la solución de un problema a través de diagramas de flujo y miniespecificaciones. Además se enfoca en el uso de estructuras lógicas de condición, de repetición y estructuras de datos. La presente guía proporciona ejercicios y actividades recomendadas que ayudan a reforzar los conocimientos adquieridos sobre las temáticas planificadas.

4.2. Complementaria Farrell, J. (2013). Introducción a la programación lógica y diseño. México. Cengege Learning Editores. Su propósito es dar las bases y los conceptos del pensamiento lógico. Este recurso servirá de apoyo para solventar dudas sobre los fundamentos de algoritmos, naturaleza de los datos, estructuras lógicas condicionales, estructuras lógicas repetitivas y estructuras de datos.

8

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRELIMINARES

Ramírez, F. (2007). Introducción a la programación : algoritmos y su implementación en VB.Net, C#, Java y C++. México D. F Alfaomega Grupo Editor SA. El presente libro pretende que el lector consiga familiarizarse rápidamente con el lenguaje, aprendiendo sus fundamentos y descubriendo cómo utilizarlo para desarrollar diferentes tipos de aplicaciones. La unidad 3, ciclo de desarrollo y primitivas algorítmicas, se ha realizado en base a este recurso. Zapata, L. (2012). Desarrollo del pensamiento analítico y sistemático: Guía práctica para aprender a programar por competencias. Medellín Politécnico Colombiano. Guía práctica para aprender a programar por competencias. Este recurso apoyará en las siguientes temáticas: declaración de variables y tipos de datos, estructuras lógicas y estructuras de control, diagramas de flujo y codificación de programas.

9

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRELIMINARES

5. Orientaciones generales para el estudio

El estudio de la asignatura de Algoritmos y Resolución de Problemas es una tarea que requiere el desarrollo de algunas habilidades orientadas a descomponer un problema en partes manejables para dar una solución óptima al mismo. Además, se debe considerar que esta asignatura es de primer nivel y se convierte en la base para continuar con éxito la malla de la carrera. Con el objetivo de posibilitar un aprendizaje significativo y exitoso, a continuación se detalla el material de estudio y los recursos que utilizaremos durante el transcurso de la asignatura: ▪▪

El plan docente: Proporciona una planificación semanal a detalle, con las actividades a desarrollar durante del ciclo académico, por lo que es importante que se utilice este recurso para organizar de mejor manera su tiempo de dedicación.

▪▪

La guía didáctica: Le orientará sobre cómo y qué temas estudiar, además contiene actividades recomendadas y ejercicios de autoevaluación que le permitirán fortalecer y medir su grado de comprensión conforme vaya avanzando en la asignatura.

▪▪

El texto básico: Contiene los temas principales conforme se lo indica en la guía didáctica. Es importante aclarar que no todos los capítulos del texto se consideran para la asignatura y tampoco cubre todos los contenidos por lo que el estudio debe hacerse siguiendo las instrucciones de la guía didáctica.

▪▪

El Entorno Virtual de Aprendizaje (EVA): Es el medio por el cual se podrá interactuar con su docente y compañeros. En este entorno encontrará las orientaciones académicas de cada unidad por semana, además de las actividades síncronas y asíncronas planificadas. El EVA ayudará también a

10

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRELIMINARES

resolver inquietudes mediante el uso de la mensajería instantánea, foros, chats, entre otros. ▪▪

La tutoría personal: Los docentes dedicamos un horario de tutoría al estudiante. Tiempo para atender las inquietudes en relación a los contenidos o desarrollo de las tareas, actividades recomendadas, entre otras. Para ello, el docente publicará un anuncio en la plataforma virtual EVA con el horario en el puede considerar como recurso la planificación del plan docente..

▪▪

La tarea bimestral: Es una actividad teórica y práctica que acompaña a la guía didáctica de cada asignatura. La tarea bimestral no es obligatoria, pero tiene una valoración de 6 puntos que sumados a la calificación de participación en el EVA (4 puntos) en actividades síncronas o asíncronas, dan un total de 10 puntos a la nota final de cada bimestre. Esta tarea debe ser enviada en las fechas definidas en el calendario académico de MAD.

▪▪

Evaluación presencial: Al finalizar cada bimestre debe presentarse a la evaluación presencial en su centro universitario. Esta evaluación se califica sobre10 puntos, que sumados a los 10 puntos de la tarea bimestral y las actividades en el EVA le dan un total de 20 puntos por bimestre.

Antes de iniciar el estudio de esta asignatura se recomienda considerar las siguientes sugerencias y recomendaciones: •

Estudiar en un ambiente ordenado, con poco ruido, buena iluminación y temperatura. Con esto, garantiza que en sus momentos de estudio no pierda la concentración con facilidad.



Utilice técnicas de lectura comprensiva, como una lectura general para revisar las temáticas de cada unidad, y lecturas analíticas para identificar los aspectos más relevantes.

11

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas



PRELIMINARES

Mantener un aprendizaje activo, utilizando técnicas de estudio como: elaboración de resúmenes, esquemas, mapas conceptuales, subrayado u otra estrategia de aprendizaje.



Organizar su tiempo, de tal manera que evite dejar para el último momento el desarrollo de las actividades previstas. Se sugiere dedicar al menos 8 horas semanales para el estudio de esta asignatura. Para esta planificación es importante considerar sus ocupaciones, habilidades y conocimientos, llevando un orden y dedicación es posible cumplir con esta planificación.



Estudiar cada una de las temáticas planteadas de forma secuencial, asegurándose de no avanzar a la siguiente temática si aún tiene alguna duda. Para esto, tanto el plan docente como los recursos de apoyo son de mucha utilidad.



Dedicarse periódicamente a la revisión del texto básico, guía didáctica, así como los anuncios, directrices y recursos que se subirán en el Entorno de Aprendizaje Virtual (EVA).



La asignatura tiene una naturaleza práctica, por lo que es recomendable realizar la mayor cantidad de ejercicios sin limitarse a los ejercicios propuestos en la guía didáctica. El texto básico provee una cantidad de ejercicios por desarrollar, es importante analizar y realizar dichos ejercicios para fortalecer cada una de la unidades establecidas para la asignatura.



Es conveniente, que realice las actividades recomendadas y autoevaluaciones propuestas en la guía didáctica, esto le permitirá reforzar su proceso de aprendizaje.



Se recomienda que desarrolle la tarea conforme vaya avanzando en el estudio. En el plan docente se planifica el desarrollo de la misma por semana con el objetivo de cumplir con los plazos establecidos.

12

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas



PRELIMINARES

Se recomienda realizar todas las actividades síncronas y asíncronas planificadas por el docente en el transcurso de la asignatura. Estas actividades tienen dos objetivos, ayudar a fortalecer el conocimiento y dar una valoración para la aprobación de la asignatura.



Es importante conocer que en el transcurso del ciclo académico, existen tres momentos de evaluación presencial: el primer bimestre: que corresponde a los contenidos desarrollados en los primeros dos meses (ocho semanas) del período académico. En el segundo bimestre: considera los contenidos desarrollados en los siguientes dos últimos meses (ocho semanas) del período académico. Evaluación final: dirigida a los estudiantes que no alcanzaron el puntaje mínimo de aprobación de 28 puntos sobre 40 puntos (28/40).



Finalmente, recordar su auto motivación y perseverancia para superar las dificultades que se presenten en el camino de su aprendizaje. Pero es importante recordar los horarios de tutoría y el chat permanente de consulta. Esto le ayudará a no sentirse solo ya que cuenta con un equipo de docentes para apoyarlo.

13

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

6. Proceso de enseñanza-aprendizaje para el logro de competencias

PRIMER BIMESTRE UNIDAD 1. FUNDAMENTOS DE ALGORITMOS Y SU REPRESENTACIÓN “Para tener éxito, tus deseos de triunfar deberían ser más grandes que tu miedo de fracasar”. Bill Cosby. Estimado estudiante: Iniciamos el estudio de esta asignatura y le pido que vaya al título de la primera unidad del texto básico. La lectura del mismo le permite saber de qué se trata la temática y tener una visión general acerca del contexto del marco de Lógica de la Programación. La primera unidad del texto está enfocada a analizar el desarrollo tecnológico como el desarrollo de las formas de razonamiento humano. Por ello lo invitamos a revisar la presente unidad. En la presente unidad revisaremos el Capítulo 1: Marco conceptual de la Lógica de programación del texto básico, así mismo, puede ayudarse de los libros de Lógica planteados en la bibliografía complementaría, si puede disponer de ellos sería importante que los use para reforzar los temas planteados.

1.1. Concepto de Lógica Lógica es una rama de la filosofía que estudia de manera formal las deducciones válidas que se derivan de un sistema de razonamiento fundamentado en un

14

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

conjunto de reglas, es decir, la Lógica investiga la relación de consecuencia que se da entre una serie de premisas y la conclusión de un argumento correcto. En el texto nos habla de términos importantes de Lógica por ello lo invitamos a que lea la sección 1 en la página 1 del texto básico. ¿Cómo le fue con la lectura? Espero haya sido un buen comienzo. Podemos, entonces, seguir con el siguiente tema de la página 2 del texto básico que es muy interesante y le permitirá avanzar en su estudio.

1.2. Algoritmo Un algoritmo es como una secuencia de instrucciones que representan un modelo de solución para determinado tipo de problema. Según el texto básico un Algoritmo representa un conjunto finito de reglas bien definidas en su lógica de control que permiten la solución de un problema en una cantidad finita de tiempo. En la Figura 1 se observa las cuatro reglas para desarrollar un algoritmo.

1 1

4 %

Reglas de Entrada - Punto inicial

Reglas intermedias - Proceso - Cálculo

2 "

3

Reglas de finalización - Punto final

Proceso lógico - Respuesta de usuario

Figura 1. Reglas de un algoritmo Fuente: Mancilla, (2014) Elaboración: Cabrera, M.; Tenesaca, G., (2018)

15

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

A continuación detallamos el conjunto de reglas: •

Una(s) regla (s) de entrada(s) al algoritmo o punto inicial del algoritmo.



Una o un conjunto de reglas intermedias (reglas de proceso o de cálculo)



Un conjunto o una regla de finalización de algoritmo, que asegure su terminación.



Exactitud en el proceso lógico de organización de las reglas a fin de dar respuestas al usuario.

A continuación, lo invitamos a revisar el siguiente ejemplo propuesto, el mismo le permitirá poner en práctica lo aprendido, en especial al desarrollar un algoritmo utilizando un conjunto de reglas. Ejemplo 1.1 Crear las reglas en las que permita crear un barco de papel. Tenemos una hoja de papel, cuyo tamaño es A4. Análisis: Se tiene la hoja de tamaño A4 que permita construir un barco de papel. Solución: 1.

Primero debe doblar la hoja en la mitad (largo de hoja)

2.

Nuevamente doblar la hoja en la mitad

3.

Se abre el pliegue anterior y se realiza 2 nuevos pliegues desde las esquinas y deberán coincidir con la línea central marcada anteriormente.

4.

Se procede a doblar hacia arriba los bordes inferiores que han quedado del paso anterior, una para cada lado de la hoja.

5.

Introducir los extremos sobrantes que han quedado de los pasos anteriores, doblar uno interiormente bajo del otro, en ambos extremos sobrantes.

6.

Abrir y doblar de tal forma que forme un cuadrado y doblar las esquinas, para lo cual se recomienda una distancia de 1 cm entre los dos pliegues.

16

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

7.

PRIMER BIMESTRE

Abrir el hueco que se forma abajo del barco y se pliega en el otro sentido del papel.

8.

Finalmente, estirar de los dos extremos de los pliegues formando el barco de papel.

La Figura 2 muestra los pasos enunciados en el apartado anterior del ejemplo 1.1 Análisis para construir un barco de papel, el ejercicio es desarrollado con el fin de comprender el término de algoritmo como “secuencia de instrucciones”.

Figura 2. Algoritmo armar un barco de papel. Fuente: https://es.pinterest.com/pin/564005553307105984/

A continuación se propone el siguiente ejemplo, lo que permitirá poner en práctica lo aprendido. Ejemplo 1.2 Calcular el área de un terreno rectangular. Sean a y b los lados del rectángulo, cuyos lados son a= 30 metros (alto) y b= 40 metros (largo), diseñe un conjunto de reglas para determinar el área del terreno.

17

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Análisis:

Figura 3. Rectángulo Elaboración: Cabrera, M.; Tenesaca, G., (2018)

El área A del rectángulo se determina con A = ancho x alto, en este caso tenemos A = a x b. Solución: •

Primero: Se requiere una regla mediante la cual obtengamos los datos de entrada. Entonces R1 es igual a obtener a y b.



Segundo: Se necesita la segunda regla R2 que calcule el valor del área del terreno de forma rectangular, de acuerdo a la ecuación de cálculo A = a x b, por tanto: R2 = Calcular el valor de área A que es igual a alto a por el ancho b del rectángulo.



Finalmente, es necesaria una tercera regla R3 que muestre el resultado del cálculo. Luego, R3 = Muestre el valor de área (A) calculada.



Finalmente, organizamos de una forma lógica las reglas definidas anteriormente. Es decir, su ejecución manual es R1 → R2 → R3, si y solo si se realiza la secuencia de las reglas con el fin de lograr el cálculo del área del terreno rectangular, cuyo valor es, por ejemplo:

R = a x b = 30 x 40 = 120

18

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

El valor de 120 induce que de acuerdo a los primeros datos de entrada a = 30, b = 40 , la respuesta del Área es exacta = 120 Finalmente podemos ver en la Tabla 1. Un resumen del algoritmo para determinar el área de rectángulo Tabla 1. Algoritmo para determinar el área del terreno rectángulo. Entrada

Proceso

Salida

R1

R2

R3

Obtener a y b

Calcular valor

Presentar el valor de Ʌ

A=axb Fuente: Mancilla, (2014) Elaboración: Cabrera, M.; Tenesaca, G., (2018)

El problema puede complicarse más cuando se pide determinar el área de un paralelepípedo. ¿Sería capaz de plantear una solución considerando este problema? Lo invitamos a solucionarlo en papel. Una vez culminada la presente sección, es importante que estudie ahora los apartados del Capítulo 1: sección 1.1 y 1.2 del texto básico.

Además, si todavía tiene inquietudes respecto a la temática, a continuación lo invitamos a revisar los siguiente recurso de apoyo, que le explica ¿qué es un algoritmo? Recursos de apoyo Para fortalecer los conocimientos adquiridos se recomienda revisar el siguiente recurso audiovisual. • http://purl.org/taw-sbc-utpl/algorithm/unit1/v1_algortimos ¿Pudo acceder al enlace?. Ahora respondamos la pregunta: ¿Qué es un algoritmo? En el recurso de apoyo se define a un algoritmo como una serie de pasos o instrucciones finitas y ordenadas que sirven para dar solución a un problema, un algoritmo debe ser preciso y sin ambigüedades. Un

19

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

algoritmo debe tener siempre inicio y fin, entre el inicio y el fin debe estar las instrucciones o pasos. Existen dos tipos de algoritmos cualitativo y cuantitativo; el algoritmo cualitativo es aquel que describe situaciones de la vida cotidiana por ejemplo “algoritmo para encender un computador”, algoritmo cuantitativo es aquel que realiza operaciones matemáticas que tiene procesos, tiene entrada que es procesada para generar una salida por ejemplo “algoritmo para determinar la edad de una persona”. Además en el recurso existe una tarea planteada, lo invitamos a desarrollar el ejercicio. ¡Adelante, que lo están haciendo muy bien! ¿Qué le pareció la temática?. Ahora bien, para reforzar su aprendizaje sobre algoritmos, lo invitamos a estudiar la sección 1.2.2 – Algoritmo del texto básico. Esta sección le ayudará a comprender de mejor manera el siguiente tema de estudio: Sistema

1.3. Sistema Existen muchos puntos de vista para definir un sistema, entre ellas una definición genérica de sistema es que debe ser capaz de ser absorbido por un sistema mayor como una de sus partes. Una definición más enfocada al punto de vista informático es: Sistema se refiere a las interacciones de componentes de diferentes formas, tales como técnicas o instruccionales. Una de las características de la definición de sistema es la generación de información, a continuación se propone una definición. Información: Es considerada como un conjunto organizado de datos derivados de un sistema en operación. Para reforzar la temática, revisar los apartados del Capítulo 1: Concepto de Sistema del texto básico.

20

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Para fortalecer su aprendizaje sobre Sistema lo invitamos a estudiar la sección 1.3 Concepto de sistema del texto básico. Esto nos ayudará a comprender de mejor manera el siguiente tema de estudio: conceptos de algoritmo, lógica de programación y lenguajes de programación.

1.4. Concepto de algoritmo en el marco de la Lógica Desde el punto de vista de la Lógica, un algoritmo conduce a identificar que, la resolución de problemas factibles de ser tratados por máquinas de procesamiento electrónica de datos o computador inicia en el sistema de razonamiento humano.

1.5. Lógica de programación La lógica de programación es una herramienta que combina los campos de la lógica humana, la algoritmia y la ciencia de la computación en un sentido informático, para consolidar las capacidades del ingeniero en identificar, formular y resolver problemas en Ingeniería. Este tema se profundiza con la lectura del texto básico en la página 12 de la sección 1.4 Concepto de algoritmo en el marco de la lógica.

1.6. Lenguajes de programación: sintaxis básicas. Basados en Ramírez, (2007) los lenguajes de programación son estructuras simbólicas que nos permiten disponer de los dispositivos de una computadora. El objetivo primordial de un lenguaje de programación es, hacernos pues la vida más sencilla, proporcionando formas humanamente comprensibles. Sin la existencia de lenguajes de programación de alto nivel, sería imposible la elaboración de programas tan útiles y complejos como Microsoft Word o Microsoft Excel, los lenguajes de programación tienen los siguientes elementos que presentan la Tabla 2:

21

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Tabla 2. Elementos de los lenguajes de programación1 Elemento

Descripción

Ejemplo

Estructuras

Presenta la forma general

de código

en que debe escribirse un

private String nombre;

programa, con el fin de

private int idDrawable;

delimitar los bloques de código1

public String getNombre( ) {

Public class Coche {

que lo componen, en una forma

return nombre;

ordenada y sistemáticas.

} }

Palabras

Son palabras con significado

Generalmente son palabras en inglés,

reservadas

dentro del lenguaje de

que en el caso de ser verbos están

programación que no podrán

en infinitivo: palabras como PRINT, o

ser utilizadas más que en

DELETE.

el sentido original en el que fueron creadas. Símbolos que provocarán un comportamiento predecible. Expresiones Son valores expresados de

Class Sumas {

forma entendible para el

public static void main (String args [])

lenguaje de programación.

{

Generalmente los datos

String bienvenida=”Bienvenido a

de tipo numérico no tienen

UTPL”

problemas, ya que se escriben

int b=7;

como normalmente los

int Alberto=8;

entendemos. Las expresiones

int resultado;

textuales, llamadas cadenas

resultado= b+alberto

son secuencias de caracteres

// esta es la línea de expresión

generalmente delimitadas por

System.out.println(bienvenida);

comillas simples o dobles,

System.out.println(“El resultado

dependiendo del lenguaje.

es: ” +bienvenida); } }

1 Bloque de código: conjunto de líneas de código que pueden ser consideradas como unidad independiente de ejecución

22

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

Elemento

PRIMER BIMESTRE

Descripción

Ejemplo

Símbolos

Son los caracteres

A esta categoría pertenecen típicamente

especiales

(generalmente no más

los operadores aritméticos (+,-,*, /) y de

de dos), que provocan un

comparación (, ,=).

comportamiento predecible dentro de un programa. Sintaxis

Es la forma ordenada en que se //Aplicación Hola UTPL de ejemplo deben especificar la palabras

class HolaUTPL {

reservadas, las expresiones y

public static void main (String args []

los símbolos especiales, a fin

){

de que tengan significado para

System.out (‘ Hola UTPL’ );

el lenguaje de programación. Generalmente que no se

} }

respetar las reglas de sintaxis de un lenguaje provoca errores en los programas. Semántica

Son las reglas que determinan

Un ejemplo en el que la semántica

el significado que ha de dársele toma relevancia es cuando se utiliza a una palabra reservada,

en algunos lenguajes el símbolo de

expresión o símbolo especial,

igualdad (=); dependiendo de la sintaxis

dependiendo del contexto de

utilizada el símbolo de igualdad puede

sintaxis en que se encuentran.

asignar un valor, o bien indicar una comparación en la que deseamos saber si un valor es igual a otro.

Fuente: Mancilla, (2014) Elaboración: Cabrera, M.; Tenesaca, G., (2018)

Ahora, lo invitamos a revisar el siguiente ejemplo propuesto esto le permitirá poner en práctica lo aprendido. El ejemplo 1.3 realiza la suma de dos números en lenguaje de programación Java, en el mismo se detalla la sintaxis y la estructura que se utiliza para desarrollar un programa.

23

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Ejemplo 1.3 Programa que suma dos números import java.lang.*; import java.io.*; import java.util.*; public class Sumas { public static void main(String[] args) { int a=0, b=0; int sum; Scanner Teclado= new Scanner (System.in); System.out.println("Ingrese el primer número"); a=Teclado.nextInt(); System.out.println("Ingrese el segundo valor"); b=Teclado3.nextInt(); sum=a+b; System.out.println("La suma de los dos números es:"+sum); } } Es momento de reforzar lo aprendido con el desarrollo de algunos ejercicios propuestos y recursos de apoyo que le ayudarán a fortalecer la elaboración de diagramas de flujo. Recursos de apoyo Para fortalecer los conocimientos adquiridos se recomienda revisar el siguiente recurso audiovisual. • http://purl.org/taw-sbc-utpl/algorithm/unit1/v2_programacion ¿Pudo revisar el recurso? ¿Qué le pareció? Interesante! ¡Verdad!. La explicación le ayudará a diferenciar los principios básicos de programación, definiciones como: Lógica es tener idea del camino más fácil para lograr nuestro objetivo, en programación siempre está sujeto a decidir entre varias

24

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

alternativas distintas, entonces se debe analizar cada alternativa y ver la mejor decisión. Otras definiciones importantes de conocer es ¿Qué es un programa? Un programa es un conjunto de instrucciones que logran un objetivo al ser ejecutadas, el objetivo es el programa. ¿Qué es programación? Programación es crear una serie de pasos o instrucciones para que un problema pueda ser resuelto. Conceptos que elementales conocer y saber diferenciar. Si desea avanzar o tener más información puede seguir el canal de subscripción ya que esto le ayudará a fortalecer su estudio. Éxitos estimado estudiante. La revisión de los recursos de apoyo le ayudará a comprender de mejor manera el siguiente tema de estudio: Diagramas de flujo y su representación, cabe recalcar que este tema no se encuentra en el texto básico, por ello lo invitamos a revisar la bibliografía complementaria.

1.7. Diagramas de flujo y su representación Un diagrama de flujo es una representación visual del tratamiento de un problema; como mínimo, un diagrama de flujo muestra las operaciones realizadas dentro del proceso que pretende la solución del problema y la secuencia en la que son realizadas dichas operaciones. Los diagramas de flujo generalmente son elaborados en las fases iniciales del ciclo de vida de desarrollo (análisis, diseño), dado que facilitan la comunicación entre los desarrolladores y los clientes; una de sus mayores virtudes es que

25

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

facilitan el entendimiento de la lógica del problema a resolver, transformando problemas grandes y complejos en una serie ordenada de actividades por realizar. 1.7.1. Ventajas de los diagramas de flujo A continuación la Figura 4 presenta las diferentes ventajas de utilizar diagramas de flujo. Para la elaboración de diagramas de flujo se puede utilizar Microsoft Visio o Raptor, entre otros.

Son una de las mejores formas de comunicar la lógica de un programa o sistema.

Son aceptados como documentación técnica para los programas y desarrollos.

Son generalmente conocidos e interpretados.

Permiten el análisis de un problema de forma abstracta.

Sirven como referencia para los programadores.

Apoyan al proceso de depuración de programas, sobre todo en la solución de problemas relacionados con la lógica del programa, mismos que el compilador es incapaz de detectar.

Facilitan las funciones de mantenimiento a los programas, al exponerlos de una forma clara y lógica.

Figura 4. Ventajas de los diagramas de flujo. Elaboración: Cabrera, M.; Tenesaca, G., (2018)

En el tema de diagramas de flujo y sus ventajas destaca la importancia que tiene cada uno de los símbolos para desarrollar un algoritmo, ahora es importante conocer que cada uno de estos símbolos se basan a un Estándar ANSI/ISO 5807-1985 que distingue cada uno de los tipos de diagramas que existen, en el siguiente tema revisamos esta temática.

26

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

1.7.2. Estándar ANSI/ISO 5807-1985 para diagramas de flujo De acuerdo al estándar ANSI/ISO 5807-1985 de la (American National Standard Institute), los diferentes tipos de diagramas de flujo son los siguientes. •

Diagramas de flujo de datos (data flowchart).



Diagramas de flujo de programas (program flowchart).



Diagramas de flujo de sistemas (system flowchart).



Diagrama de flujo de red (program network chart).



Diagramas de recursos de sistemas (system resources chart).

El estándar ANSI/ISO 5807-1985 define un diagrama de flujo como la representación gráfica de la definición, análisis y métodos de solución de problemas, en el cual los símbolos son utilizados para representar operaciones, datos, flujos, equipo. Un símbolo es una representación gráfica asociada a un concepto de funcionalidad determinado. Dicha asociación, para ser efectiva, debe ser generalmente entendida y aceptada. El estándar propone símbolos para todos los tipos de diagramas, pero hace la distinción respecto a los símbolos que aplican para cada tipo de diagrama en particular. Desde luego, para nuestro interés nos centramos en los diagramas de flujo de programas. Un diagrama de flujo de programa contiene los siguientes elementos: •

Símbolos de procesamiento que definen la ruta que seguirá el programa tomando en cuenta condiciones lógicas.



Líneas de flujo que indican el flujo de control de las operaciones.



Símbolos especiales que facilitan la lectura y escritura del diagrama de flujo.

Hasta ahora hemos revisado los 5 tipos de diagramas de flujo, a continuación en la sección 1.7.3 estudiaremos los símbolos más utilizados en los diagramas de flujo.

27

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

1.7.3. Símbolos utilizados en los diagramas de flujo De acuerdo al estándar ANSI/ISO 5807-1985 los símbolos se dividen en las siguientes categorías: •

Símbolos de datos(data symbols)



Símbolos de proceso (process symbols)



Símbolos de líneas (line symbols)



Símbolos especiales (special symbols)

La Tabla 3 presenta un resumen descriptivo de los símbolos y las categorías de los diagramas de flujo de programas.. Tabla 3. Símbolos y categorías de los diagramas de flujo de los programas Símbolo

Categoría De datos

Nombre y utilidad Símbolo de datos (data): Representa los datos de entrada y salida. Operaciones que soporta: • Petición de datos • Muestra de datos.

De proceso

Símbolo de datos (process): Representa cualquier operación de procesamiento por ejemplo: la ejecución de una o más operaciones que resultan en un cambio de valor, forma o ubicación de la información; también puede tratarse de operaciones para determinar una o más rutas que puede seguir el flujo del programa (sin que sea una decisión) Operaciones que soporta: • Declaraciones • Cambios de estado.

28

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

Símbolo

PRIMER BIMESTRE

Categoría

Nombre y utilidad

De proceso

Símbolo de proceso definido(Predefined Process) Representa un proceso nominado que consiste en una o más operaciones especificadas en otro lado, como podría ser una subrutina, una clase o un módulo externo. Puede ser utilizado para evitar la mezcla de operaciones de diferente nivel. Operaciones que soporta: • Llamado a procedimiento.

De proceso

Símbolo de Preparación (Preparation) Este símbolo representa una modificación o instrucción que afecta la actividad subsecuente, aunque no forma parte del problema. Ejemplo de esto sería una variable de trabajo o inicializar contadores y acumuladores. Operaciones que soporta: • Cambios de estado

De proceso

Símbolo Modo paralelo (Parallel mode) Representa la sincronización de dos operaciones que deben realizarse de forma dependiente (paralelo). El uso del modo paralelo hace obligatorio que para realizar un proceso sea necesaria la conclusión de otro proceso. Operaciones que soporta: • Cambios de estado

De proceso

Símbolo de decisión y ciclo (Loop limit) Representa el inicio y fin de un bucle. La decisión a evaluar se encontrará en el límite inicial o en el final, dependiendo del tipo de ciclo que se esté utilizando. Operaciones que soporta: • Estructuras de control

29

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

Símbolo

Categoría De línea

PRIMER BIMESTRE

Nombre y utilidad Símbolo Línea de flujo (Line) Representa el flujo de datos y el control de la operación programa. Representa la secuencia lógica en que se desarrolla las operaciones.

De línea

Símbolo Línea punteada (Dashed Line) Representa una relación alternativa entre dos o más símbolos. Es útil para representar una conexión poco común entre dos o más elementos.

Especiales

Símbolo Conector (Connector) Traslada el control del programa a otra parte dentro del mismo diagrama. Cada conector deberá contar con un identificador único.

Especiales

Símbolo Terminador (Terminator) Representa la salida o la entrada al diagrama. Al menos se debe tener una entrada al diagrama (inicio), y al menos una terminación (fin).

Especiales

Símbolo Anotación (Annotation) Agrega explicaciones que clarifiquen de forma descriptiva el funcionamiento del diagrama y sus elementos.

Fuente: Mancilla, (2014) Elaboración: Cabrera, M.; Tenesaca, G., (2018)

1.7.4. ¿Cómo elaborar un diagrama de flujo en un programa? El desarrollo de diagramas de flujo puede realizarse de dos formas, la primera es partir de una mini especificación y la segunda es hacerlo directamente sin ella, en cualquiera de los dos casos debemos tener en cuenta la necesidad de realizar el análisis correspondiente del problema. Revisemos el siguiente ejemplo propuesto que se desarrolla partiendo desde una miniespecificación a un diagrama flujo.

30

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Ejemplo 1.4 Se desea desarrollar un algoritmo que muestre el proceso de comprar o plantar flores en la primavera Nro 1

Miniespecificación Inicio

2

//se solicita preguntar

3

10 * 40) ^ (30^2 > 15^4)) → ~ (“casa” = “caza” ˅ (20 * 30 * 50 > 10 * 40) ^ (30^2 > 15^4)) → ~ (“casa” = “caza” ˅ (600 * 50 > 10 * 40) ^ (30^2 > 15^4)) → ~ (“casa” = “caza” ˅ (30000 > 10 * 40) ^ (30^2 > 15^4)) → ~ (“casa” = “caza” ˅ (30000 > 400) ^ (30^2 > 15^4)) → ~ (“casa” = “caza” v (True) ^ (30^2 > 15^4)) → ~ (“casa” = “caza” ˅ (True) ^ (900 > 15^4)) → ~ (“casa” = “caza” ˅ (True) ^ (900 > 50625)) → ~ (“casa” = “caza” ˅ (True) ^ (False)) → ~ (“casa” = “caza” ˅ False) → ~ (False ˅ False) → ~ (False) True

56

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Como se observa en el desarrollo del ejercicio anterior, se considera la precedencia de cada operado para ir resolviendo paso a paso la expresión dada hasta llegar a su mayor simplificación. Para fortalecer la temáticas de operadores y expresiones lo invitamos a realizar los siguientes ejercicios propuestos. Ejercicios propuestos Para a = 3, b = 2 y c = 7, resolver lo siguiente: • ( a + b) / (b *( c/3)) > (b (a * c)) • ((a > b) v (a < c)) ˄ ((a = c) v (a > = b))

Para revisar la resolución de los ejercicios propuestos ingresar al siguiente enlace. http://purl.org/taw-sbc-utpl/ algorithm/unit2/solutions

¿Qué le pareció la temática sobre expresiones? Ahora bien, para reforzar su aprendizaje es conveniente estudiar la sección 2.5 - Expresiones del texto básico. Esto nos ayudará a comprender de mejor manera el siguiente tema de estudio: variables y tipos de datos.

2.6. Variables y tipos predefinidos En la presente sección se estudia los fundamentos en la creación de variables. Además, se explica los tipos de datos y dominios con los que se puede definir una variable. Para el inicio de la presente temática es importante que revise la sección de Variables y tipos predefinidos del Capítulo 2 del texto básico.

A continuación iniciamos esta sección con la definición de variables.

57

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

2.6.1. Variables Una variable es un conjunto de bytes en la memoria, referenciada por un nombre donde se almacena el valor correspondiente a un dato de un tipo de dato específico. El valor de una variable puede ser modificado en cualquier momento, bien por una asignación directa o bien como resultado de alguna expresión.

Figura 14. Definición de variables Fuente: Mancilla, (2014) Elaboración: Cabrera, M.; Tenesaca, G., (2018)

Una variable correctamente definida requiere: •

Nombre



Tipo de dato y dominio: numérico, carácter, cadena de caracteres o booleano.



Un valor inicia (opcional)

Reglas para definir el nombre de una variable Se debe considerar las siguientes reglas para definir correctamente el nombre de una variable:

58



Siempre iniciar con una letra.



Se recomienda que debe componerse de letras y números.

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas



PRIMER BIMESTRE

No contener espacios en blanco ni caracteres generales (incluyendo letras acentuadas y signos regionales) a excepción del guión bajo ( _ ).



No mayor a 32 caracteres.



Deben ser representativos del valor que almacena. Por ejemplo, si se quiere almacenar el área de un cuadrado, la variable sería: area. Recuerde: Cuando una variable se ha declarado de un cierto tipo de dato, solamente puede asignársele datos del mismo tipo.

A continuación presentamos algunos ejemplos que le ayudarán a representar un problema dado a través de variables. Ejemplo 2.5 Representar la nota del primer parcial de un estudiante Tabla 16. Definición de variables Variables correctas

Variables incorrectas

nota1parcial

1notaparcial

notaPrimerParcial

nota-primerparcial

nota_primerparcial

n1p

nota_1p

nota del primer parcialdelestudiante

¿Con lo aprendido, considera ya está en la capacidad de definir ¿qué es una variable?. Si tiene aún alguna duda le sugiero revisar la sección 2.3.1 – Variables, del texto básico. Una vez que tenemos claro cómo definir una variable, podemos continuar con la siguiente temática: naturaleza de los datos. 2.6.2. Naturaleza de los datos La naturaleza de los datos nos hace referencia a los tipos de valores que se pueden asignar a una variable. Para esto debemos considerar las siguientes propiedades de los datos:

59

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas



PRIMER BIMESTRE

Tipo de dato: Permite a una variable almacenar una determinada naturaleza de dato.



Dominio: Es el conjunto de valores válidos que es posible que el dato adquiera. El dominio evita el ingreso de datos equivocados.



Opcionalidad: Es la necesidad que se tiene que una variable tenga valor.



Valor: Es el valor que se le asigna a una variable.

A continuación vamos a revisar los diferentes tipos de datos que se utilizan en la definición de variables. Tipos de datos Los tipos de datos son clasificados en tres grandes grupos: numéricos, cadena y lógicos. En la siguiente Figura 15 observamos los diferentes tipos de datos por cada grupo y un ejemplo por cada uno de ellos.

Figura 15. Tipos de datos Fuente: Mancilla, (2014) Elaboración: Cabrera, M.; Tenesaca, G., (2018)

Datos numéricos: Este tipo de dato pertenece al conjunto de los números, y son de longitud fija. Los datos numéricos son: Enteros y Reales. Datos cadena: Los datos del tipo carácter están contenidos en el conjunto finito de caracteres: alfabéticos, numéricos y especiales. Y por otro lado, los datos tipo cadena de caracteres son sucesiones de caracteres con longitud finita y variable.

60

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Datos lógicos: Los datos tipo lógico pueden tomar uno de los dos valores booleanos: VERDADERO (true) o FALSO (false). La correspondencia binaria para estos dos valores es: 1 para VERDADERO y 0 para FALSO. Tipos predefinidos Cada uno de los lenguajes de programación tienen tipo de datos predefinidos para ser usados por los desarrolladores. En la Tabla 17 podemos observar los tipos predefinidos más utilizados en los lenguajes de programación C++ y Java. Tabla 17. Operadores matemáticos y lógicos Tipos de datos

C++

Java

Byte

short

byte

Entero

int

int

long

long

float

float

double

double

char

char

string

String

bool

boolean

Real Cadena Booleano

Para el estudio de la presente asignatura, vamos a utilizar la simbología que se describe en la Tabla 18. Esta simbología nos permitirá representar los tipos de datos que utilizaremos en la definición de variables a nivel de algoritmos y miniespecificaciones. Tabla 18. Simbología para representar tipos de datos Tipos de datos

61

Símbolo Abstracto

Byte

b

Entero

i

Real

d

Cadena

x(n) Dónde n es la longitud en caracteres de la cadena.

Booleano

l

Fecha

f MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Una vez aprendidos los diferentes tipos de datos, a continuación se presentan los dominios de lo datos que puede tomar un tipo de dato asociado a una variable. Dominio de los datos En el desarrollo de algoritmos, el dominio de los datos es el conjunto de valores válidos para un dato. La definición del dominio de datos para una variable evita el ingreso de datos equivocados. Podemos especificar los dominios considerando tres aspectos importantes: tipo, regla de negocios y relación con otros datos como podemos observar en la Figura 16.

Figura 16. Tipo de dominios Fuente: Mancilla, (2014) Elaboración: Cabrera, M.; Tenesaca, G., (2018)

Si aún tenemos dudas sobre esta temática, lo invitamos a revisar la sección 2.3 – Variables y tipos predefinidos del texto básico. Y para reforzar lo aprendido vamos a realizar los siguientes ejercicios.

62

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Declaraciones de variables, tipo de dato y dominio Para declarar una variable se debe considerar: el nombre de la variable, tipo de dato y dominio de dato. , [] A continuación presentamos algunos ejemplos de declaración de variables con su tipo de dato y dominio en base a un problema dato. Ejemplo 2.6 Declarar una variable para determinar el sueldo mensual de una persona. Declaración en Miniespecificación sueldo_mensual, d[1 - n] sueldoMensual, d[1 - n]

Ejemplo 2.7 Declara una variable para almacenar la siguiente información, “El usuario ha sido registrado”. Declaración en Miniespecificación informacion, x(50)

Ejemplo 2.8 Declara una variable que permita almacenar una clave compuesta por 6 letras y 4 números. Declaración en Miniespecificación clave, x(10) [6{A-Z}, 4{0-9}]

Para fortaleces esta temática, ahora lo invitamos a revisar los siguientes recursos de apoyo sobre: ¿qué es una variable?, su representación y uso.

63

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Recursos de apoyo Para fortalecer los conocimientos adquiridos se recomienda revisar los siguientes recursos audiovisuales. • http://purl.org/taw-sbc-utpl/algorithm/unit2/v3_variables • http://purl.org/taw-sbc-utpl/algorithm/unit2/v4_variables ¿Qué le parecieron los recursos de apoyos?. Esperamos hayan servido para aclarar las dudas pendientes. Ahora bien, con la revisión del recurso de apoyo ya estamos en la capacidad de responder a la pregunta ¿Para qué me sirve una variable?. Como revisamos en los recursos de apoyo, las variables sirven para identificar una datos específico que ha sido o será almacenado en la memoria del computador. Por ejemplo, llevando esto a la vida real, supongamos que queremos guardar en la refrigeradora leche, debemos primero buscar un recipiente que permita realizar esta acción, y debe ajustarse a los requerimientos de lo que se desea almacenar. Un requerimiento sería que el recipiente no debe tener agujeros, o sino la leche se derramaría. Una vez encontrado el recipiente idóneo, almacenamos la leche y cuando necesitemos la leche accedemos al lugar donde fue guardada dentro de la refrigeradora. Haciendo una equivalencia, podemos decir que en este ejemplo la variable es el recipiente, la leche es el valor que almacenamos y la refrigeradora es la memoria de la computadora donde almacenamos cada variable. ¡Mucho más claro, verdad!. Felicidades!!, se ha concluido con la segunda unidad. Ahora se puede medir lo aprendido con la siguiente autoevaluación.

64

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Autoevaluación 2

Responda las siguientes preguntas de opción múltiple y seleccione la respuesta correcta para cada una de ellas. 1.

2.

Corresponden a un carácter del sistema hexadecimal van desde (016) al (F16) a.

Bit

b.

Double Word

c.

Nibble

Se desea almacenar el costo de un producto, ¿qué tipo de dato se debe usar, tomando en cuenta el contexto que se presenta?

3.

4.

a.

Byte

b.

Decimal

c.

Entero

¿Cuál de las siguientes expresiones retorna un valor igual a True? a.

“C” = “c”

b.

7 >= 7

c.

4+5=9-1

¿Qué dominio es el correcto para almacenar los datos referentes a la edad de una persona?

65

a.

b[0-110]

b.

b[0-10]

c.

b[18-100]

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

5.

PRIMER BIMESTRE

La precedencia que se provoca mediante el uso de paréntesis, se conoce como:

6.

a.

Posicional

b.

Implícita

c.

Explícita

Tenemos la siguiente expresión: (a - b < 3 - c) and (c * 1 == a - b) Donde a = 2 , b = 4 , c = 6. Determine el valor resultante.

7.

a.

Verdadero

b.

Falso

c.

Nulo

Los nombres de variables deben cumplir algunas reglas, del siguiente listado, indique cuales pertenecen a estas reglas:

8.

1.

Siempre iniciar con letra

2.

Puede contener caracteres especiales

3.

Contener espacio y caracteres especiales opcionalmente

4.

Puede contener vocales tildadas

5.

Máximo 32 caracteres de longitud

6.

Representativo al valor que guarda.

a.

1,5,6

b.

1,2,5,6

c.

1,4,5

Seleccione la representación abstracta de dominio para una clave formada por una letra “Z” y 5 números. Ningún número puede ser 0

66

a.

X(6) [1 {Z}, 5 {0-9}]

b.

X(6) [1 {A-Z}, 5 {1-9}]

c.

X(6) [1 {Z}, 5 {1-9}] MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

9.

PRIMER BIMESTRE

¿Cuál de las siguientes opciones no describe el tipo de dato de una variable? a.

Los valores que puede contener ésta

b.

Qué operaciones pueden realizarse con ella

c.

El ámbito de la misma

10. Si
costoProducto y precioProducto son variables numéricas y nombreProducto es una variable cadena. ¿Cuál de las siguientes declaraciones no es válida? a.

costoProducto = 100

b.

precioProducto = “24.95”

c.

costoProducto = precioProducto - 10 Estimado estudiante para comprobar sus respuesta puede ir al solucionario que se encuentra al final de la guía. Si sus respuestas han sido correctas, Felicidades!!. Y sino, no se desanime!, puede revisar las temáticas nuevamente y volver a contestar. Hemos concluido la Unidad 2, sigamos avanzando en nuestros conocimientos con la Unidad 3: Ciclo de desarrollo y primitivas algorítmicas.

67

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

UNIDAD 3. CICLO DE DESARROLLO Y PRIMITIVAS ALGORÍTMICAS Nuestra mayor debilidad reside en rendirnos. La forma más segura de tener éxito es intentarlo una vez más. Thomas A. Edison. Estimado estudiante en la presente unidad se explica el ciclo de desarrollo de un programa con todas sus fases y lo que se realiza en cada una de ellas. También se revisa las primitivas básicas lógicas, el diseño de algoritmos y miniespecificaciones.

3.1. Ciclo de desarrollo de un programa El ciclo de desarrollo de un programa esta compuesto por cuatro fases: Análisis, diseño, codificación y pruebas e implementación. La Figura 17 presenta el ciclo de desarrollo de un programa.

Figura 17. Ciclo de desarrollo de un programa Fuente: Ramirez, (2017) Elaboración: Cabrera, M.; Tenesaca, G., (2018)

68

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

El desarrollo de cada una de estas fases debe responder a una pregunta y obtener los entregables necesarios para dar solución al problema planteado. A continuación describimos cada una de estas fases. 3.1.1. Fase de análisis El análisis consiste en descomponer el todo en sus partes, con el fin de comprender el problema. En esta fase interviene el analista de sistemas y es el encargado de analizar detalladamente el problema planteado para determinar las posibles soluciones y levantar los requerimientos necesarios para resolver el mismo. Esta fase es muy importante debido a que si el análisis esta equivocado, las siguientes fases desarrollarán un diseño, codificación e implementación equivocado y que no cumpla con los requerimientos del cliente. En la fase de análisis se debe responder la pregunta: ¿Qué quiere automatizar el cliente?. Y el entregable principal en esta fase son los algoritmos. En esta fase se tiene como objetivos realizar lo siguiente: •

Identificar claramente los requerimientos del cliente. Este objetivo consiste en conocer y documentar lo que el cliente espera del programa a desarrollar.



Identificar y definir el alcance del programa. Consiste en determinar las unidades de funcionalidades suficientes y necesarias para cubrir las necesidades del cliente. Las funcionalidades deben tener:

69

♦♦

Un identificador.

♦♦

Una prioridad.

♦♦

Una obligatoriedad.

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas



PRIMER BIMESTRE

Determinar la interfaz y el comportamiento del programa. La interfaz es el medio por el cual el usuario y la aplicación se comunican. La interfaz debe tener las siguientes características: ♦♦

Sencilla de entender.

♦♦

De uso intuitivo.

♦♦

Diseñada bajo estándares.

♦♦

Validar los dominios.

♦♦

Tener una secuencia lógica de sus elementos.

♦♦

Preguntar la cantidad mínima, suficiente y necesaria para el procesamiento o almacenamiento.

3.1.2. Fase de diseño La fase de diseño es la segunda más importante en el ciclo de desarrollo de un programa. Tiene por objetivo traducir técnicamente los requerimientos del cliente obtenidos en la fase de análisis a una forma abstracta y estandarizada. El resultado de la fase de análisis es el diseño de miniespecificaciones, diagramas de flujo y pruebas de escritorio. Estos entregables servirán como materia prima para la fase de codificación. Algo importante en esta fase es que no se deben modificar los requerimientos del cliente, ni agregar ni eliminar los requerimientos. En la fase de diseño se debe responder a la siguiente pregunta: ¿Cómo se puede automatizar lo que quiere el cliente?.

70

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

3.1.3. Fase de codificación La fase de codificación consiste en codificar bajo un lenguaje de programación los documentos obtenidos la fase de diseño. Hay un sin número de lenguajes de programación disponibles. El lenguaje de programación puede ser un requisito del cliente o una sugerencia del equipo de desarrollo. En esta fase se debe responder a la siguiente preguntas: ¿Cómo se representa las especificaciones de diseño en un lenguaje de programación?. El entregable en esta fase es el código fuente. Para tener una perspectiva de los lenguajes de programación más utilizados, lo invitamos a revisar los siguientes recursos de apoyo que presentan un ranking actual de los lenguajes de programación. Recursos de apoyo En los siguientes enlaces se presentan un ranking de los lenguajes de programación: • http://purl.org/taw-sbc-utpl/algorithm/unit2/programmingLanguages1 • http://purl.org/taw-sbc-utpl/algorithm/unit2/programmingLanguages2 Luego de haber revisado los recursos de apoyo, ahora ya conocemos cuales son los lenguajes de programación más utilizados a nivel mundial. Estos lenguajes son: Python, Java, C y C++ ubicados en los primeros puestos. Ahora bien, en el transcurso de la asignatura y la carrera se enseñaran varios de estos lenguajes de programación, pero no debe ser una limitante para aprender nuevos lenguajes que les permitan ampliar su perfil profesional.

71

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

3.1.4. Fase de pruebas e implementación La fase de pruebas es fundamental para el éxito del ciclo de desarrollo. En esta fase se realiza la verificación de que el programa desarrollado cumpla con los requisitos planteados en la fase de análisis y las especificaciones de diseño. Cuando un el programa no cumple con las especificaciones, se habla de un error lógico, es decir, que los resultados del programa no son los deseados. Aquí interviene un nuevo proceso, la depuración. La depuración ayuda a probar un programa sobre varios conjuntos de datos para de esta forma encontrar y corregir los errores presentados. La fase de pruebas está a cargo generalmente del equipo de calidad de la empresa. Ellos son los que dan el visto bueno y aprobación del programa y se hacen la siguiente pregunta: ¿Los programas cumplen a la perfección las especificaciones de diseño?. Recuerde: Un programa que no tiene errores de sintaxis no necesariamente está libre de errores lógicos.

La fase de implementación inicia una vez que se haya probado y depurado detalladamente el programa y aprobado por el equipo de control de calidad. Esta fase también se llama “puesta en producción” que significa poner el programa ya a disposición de usuario final. En el caso que existan nuevos requerimiento interviene la fase de mantenimiento del programa. En esta fase se realizan los nuevos cambios solicitados. Cuando se realizan estos cambios a los programas existentes se repite el ciclo de desarrollo. Esto significa que los cambios involucran: análisis, diseño, codificación, pruebas e implementación. Recuerde: Si el programa original requiere una cantidad considerable de modificaciones, es recomendable dar de baja el programa y empezar el ciclo de desarrollo para uno nuevo.

72

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Para revisar con mayor profundidad las actividades que se realizan en cada una de las fases del ciclo de desarrollo, así como también los entregables que se deben generar en cada fase, es recomendable revisar los apartados del capítulo 6 del recurso bibliográfico complementario (Ramírez, 2007) Una vez comprendida cada una de las fases, a continuación iniciamos la temática de primitivas algorítmicas.

3.2. Primitivas algorítmicas La presente sección se enfoca al estudio de las primitivas algorítmicas para el desarrollo de algoritmos y miniespecificaciones como los entregables de la fase de análisis y diseño del ciclo de desarrollo de programas. Estimado estudiante, previo al inicio de la presente unidad, es importante que revise los contenidos del Capítulo 3: Primitivas Algorítmicas del texto básico.

La lógica de la programación esta compuesta por un conjunto de estructuras lógicas de control algorítmico que desempeñan funciones básicas de entrada, asignación, proceso y salida en la resolución de problemas. Éstas estructuras lógicas son conocidas como primitivas algorítmicas. Una primitiva lógica para la construcción de algoritmos es una instrucción lógica que permite la ejecución de una o varias acciones en el computador. Acciones que, a su vez, pueden ser otras primitivas lógicas y que en un momento dado son codificadas y reciben el nombre de instrucciones de un lenguaje de programación. Los algoritmos están conformados por un conjunto de primitivas. Para explicar estas primitivas se realiza el siguiente ejercicio:

73

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Ejemplo 3.1: Calcular el área de un triángulo. Análisis: b h El área de un triángulo (AT) se define por la expresión matemática AT= * 2 donde b es la base del triángulo y h su altura. Para calcular la expresión AT, se

requiere necesariamente de su base y altura. El siguiente paso es identificar las entradas, el proceso y la salida, como se muestra en la Figura 18.

Figura 18. Entrada, proceso y salida de un programa Elaboración: Cabrera, M.; Tenesaca, G., (2018)

A continuación se explica cada una de las primitivas básicas en base al ejercicio planteado. Primitivas de inicio y fin: Son las primitivas que delimitan el inicio y fin de un algoritmo. A continuación se puede observar su representación a nivel de algoritmo y diagrama de flujo.

74

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

Algoritmo

PRIMER BIMESTRE

Diagrama de flujo

Inicio Decimal: AT, b, h Leer b Leer h Calcular el área: AT=

b*h 2

Escribir “El área es:”, AT Fin

Primitivas de entrada: Son las primitivas de lectura o entrada de datos. Se identifican por acciones de lectura (Leer) de datos que ingresan al computador sobre una o un conjunto de variables, como se observa a continuación. Algoritmo

Diagrama de flujo

Inicio Decimal: AT, b, h Leer b Leer h Calcular el área: AT=

b*h 2

Escribir “El área es:”, AT Fin

75

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE

Primitivas de asignación: Son las estructuras lógicas primitivas representadas por las asignaciones de valores. Estos valores pueden ser de inicialización o como resultado de la operaciones lógicas y aritméticas dentro del proceso. Para realizar la asignación de valores tanto en algoritmos y miniespecificaciones el símbolo (=) es sustituido por (←). b h AT= * 2

AT

b*h 2

Esta asignación se puede observar en el siguiente algoritmo y diagrama de flujo. Algoritmo

Diagrama de flujo

Inicio Decimal: AT, b, h Leer b Leer h Calcular el área: AT

b*h 2

Escribir “El área es:”, AT Fin

Primitiva de salida: Son las primitivas de salida de datos representadas por las variables que contienen los resultados de las operaciones de asignación. Se identifican por las acciones de escritura (Escritura) como se muestra a continuación.

76

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

Algoritmo

PRIMER BIMESTRE

Diagrama de flujo

Inicio Decimal: AT, b, h Leer b Leer h Calcular el área: AT = (b * h)/2 Escribir “El área es:”, AT Fin

Una vez comprendidas las primitivas básicas, ingresar al siguiente recurso para revisar la codificación del ejercicio propuesto con un lenguaje de programación. Codificación Ingresar al siguiente enlace para ver la codificación en un lenguaje de programación del ejercicio propuesto: http://purl.org/taw-sbc-utpl/algorithm/unit3/coding

3.3. Diseño de miniespecificaciones Una miniespecificación es la representación abstracta y simbólica que muestra de mejor manera las operaciones que un programa debe hacer con los datos. La miniespecificación es el paso siguiente al desarrollo de algoritmos. Se la considera además como una herramienta para la especificación sistemática de procesos computacionales, sin dejar de ser entendible por humanos. Las principales características de la miniespecificaciones son:

77

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas

PRIMER BIMESTRE



Debe tener un inicio y un fin.



Debe tener líneas numeradas.



Es independiente de los lenguajes de programación.



Contiene un cuadro básico de instrucciones que pueden ser representadas en cualquier lenguaje.



Se describen mayormente con representaciones simbólicas.

Además una miniespecificación por lo general debe tener la siguiente estructura: •

Inicio.



Declaración de variables: se coloca todas las variables a utilizar con su tipo de dato y dominio.



Inicialización de variables: se asigna el valor inicial a cada variable dependiendo del problema a resolver.



Entrada de datos: se realiza las peticiones de los datos de entrada.



Proceso: se realiza todas las operaciones establecidas.



Salida: se presenta los resultados obtenidos en el proceso.



Fin.

Utilizando el ejemplo 3.1, a continuación se presentan los cambios que se realizan al convertir un algoritmos a miniespecificación: •

Las declaraciones de los datos se transforman en declaraciones de memoria.



Se inicializa los datos declarados. Algoritmo

Miniespecificación

Inicio

Inicio

//declaración de variables

//declaración de variables

Decimal: AT, b, h

AT, d[0 – n]

Leer b

b, d [0 – n ]

Leer h

h, d [0 – n ]

Calcular el área: AT

b*h 2

//inicialización de variables

AT ← 0, b ← 0, h ← 0

Escribir “El área es:”, AT Fin

78

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas



PRIMER BIMESTRE

Para el ingreso o lectura de datos se reemplaza Leer por dos símbolo mayor que (>>). Algoritmo

Miniespecificación

Inicio

Inicio

//declaración de variables

//declaración de variables

Decimal: AT, b, h

AT, d[0 – n]

//lectura de datos

b, d [0 – n ]

Leer b

h, d [0 – n ]

Leer h

//inicialización de variables

Calcular el área: AT

b*h 2

Escribir “El área es:”, AT Fin



AT ← 0, b ← 0, h ← 0 //lectura de datos

>> b >> h

Los cálculos se transforma en asignaciones. Algoritmo

Miniespecificación

Inicio

Inicio

//declaración de variables

//declaración de variables

Decimal: AT, b, h

AT, d[0 – n] b, d [0 – n ]

//lectura de datos

h, d [0 – n ]

Leer b

//inicialización de variables

Leer h

AT ← 0, b ← 0, h ← 0 //lectura de datos

//proceso

Calcular el área: AT Escribir “El área es:”, AT Fin

79

>> b

b*h 2

>> h //proceso

AT

b*h 2

Fin

MODALIDAD ABIERTA Y A DISTANCIA

Guía Didáctica: Algoritmos y Resolución de Problemas



PRIMER BIMESTRE

Para la presentación o escritura de datos se reemplaza la palabra Escribir por dos signos menor que ( b

//proceso

Calcular el área: AT

b*h 2

//escritura de datos

Escribir “El área es:”, AT Fin

>> h //proceso

AT

b*h 2

//escritura de datos

> b

>> b

>> h

>> h

//proceso

//proceso

AT

b*h 2

Si (AT > 20) entonces

AT

b*h 2

Si (AT > 20) entonces

//escritura de datos

//escritura de datos

r_correctas

Escribir nombre

21

> r_incorrectas

24

> r_blanco

27

//proceso

28

p_correctas ← r_correctas * 4

29

p_incorrectas ← r_incorrectas * (-1)

30

p_total ← p_correctas + p_incorrectas

31

//salida de datos

32

temperatura

5

Si (temperatura > 25) entonces //Valida si la temperatura es mayor a 25

6

//Instrucción o primitiva que se ejecuta si la condición es verdadera

7

18 entonces >> edad Sino = 18 entonces >> edad Sino = 18 entonces >prod2, >>prod3 total = prod1 + prod2 + prod3 Si (total > 200) entonces desc = total x 15% Fin si total = total - desc prod2, >>prod3 total = prod1 + prod2 + prod3 Si (total > 200) entonces desc = total x 15% Fin si Total = Total + desc prod2, >>prod3 total = prod1 + prod2 + prod3 Si (total < 200) entonces desc = total x 15% total = total - desc Fin si