Introducción a la programación NIVEL MEDIO SUPERIOR
Autores Claudia De Anda Quintin Rigoberto Santiago Garzón Edwin Ramón Romero Espíritu
Dr. Juan Eulogio Guerra Liera Rector
Director Editorial y Producción: Gustavo González
Dr. Jesús Madueña Molina Secretario General
Diseño y diagramación electrónica: Ediciones GYROS, S.A. de C.V.
© D.R. Universidad Autónoma de Sinaloa, 2020 Dirección General de Escuelas Preparatorias, Circuito interior S/N Ciudad universitaria, CP. 80010 Culiacán de Rosales, Sinaloa. Título de la obra: Introducción a la programación Primera edición 2020 © D. R. Universidad Autónoma de Sinaloa Claudia De Anda Quintin Rigoberto Santiago Garzón Edwin Ramón Romero Espíritu ISBN: EN TRÁMITE
Director Administrativo: Gustavo González Foto de portada: 123 rf
Introducción a la programación Primera edición 2020 ISBN: EN TRÁMITE © D. R. Ediciones GYROS, S. A. de C. V. 2020 Isabel la Católica No. 642 Colonia Roma, Monterrey, N. L. Tel. (81) 1234-0965
Ni la totalidad, ni parte de esta publicación pueden reproducirse, registrarse, almacenarse, utilizarse o transmitirse, por un sistema de recuperación de información, en ninguna forma, ni por ningún medio, sea electrónico, mecánico, fotoquímico, magnético o electroóptico, por fotocopia, grabación, escaneo, digitalización, grabación en audio, distribución en internet, distribución en redes de información o almacenamiento y recopilación en sistemas de información sin el consentimiento por escrito de los propietarios de los derechos. Impreso en Monterrey, México Enero, 2020
Presentación El libro Introducción a la programación corresponde a la asignatura de Laboratorio de cómputo IV del Plan de estudios 2018 del Bachillerato General, emitido por la Dirección General de Escuelas Preparatorias de la Universidad Autónoma de Sinaloa. El Programa de estudios de la asignatura se basa en el enfoque por competencias, a las que considera como el conjunto de conocimientos, habilidades, actitudes y valores, que buscan orientarte hacia el desempeño idóneo en los diversos contextos culturales y sociales, y hacerte protagonista de tu propio proceso de aprendizaje, partiendo del desarrollo y fortalecimiento de tus habilidades cognoscitivas y metacognitivas, e incorporarte a la educación superior o al mundo laboral. Atiende las competencias genéricas y disciplinares básicas del campo de la Comunicación, establecidas en el Marco Curricular Común por la Reforma Integral de la Educación Media Superior y de la propia UAS, presenta una alineación entre los propósitos curriculares, competencias, productos e instrumentos de evaluación, así como los ambientes de aprendizaje propiciados por las interacciones entre alumnos y docentes. Por tanto, los contenidos de la presente obra se diseñan bajo un modelo didáctico que contribuirán al desarrollo de tus competencias y al logro del propósito del programa de estudio de Laboratorio de cómputo IV: Utiliza lenguajes de programación de modo gráfico y de consola, para crear programas que den solución a problemas de manera óptima, fortaleciendo la capacidad de análisis y las competencias digitales que apoyan la construcción de su conocimiento. Mismo que te ofrece la oportunidad de construir saberes conceptuales, procedimentales y actitudinales en torno a las tecnologías de la información que tienes a tu alcance como instrumentos de comunicación. El libro está organizado en tres unidades temáticas: en la primera se propone que diseñes algoritmos y diagramas de flujo para solucionar diversos problemas de manera óptima, identificando los datos de entrada, cómo serán procesados y el resultado que se obtendrá. En la segunda unidad, que crees programas de modo gráfico mediante el lenguaje de programación visual de Scratch para solucionar problemas y representar el funcionamiento del pseudocódigo. En la tercera unidad se pretende que utilices el lenguaje de programación estructurado C++ como herramienta de codificación de pseudocódigos en programas, para la solución de problemas. Para cumplir con estos propósitos académicos establecidos en el programa, no basta el conocimiento y la comprensión de los conceptos expuestos en esta obra, sino también a resolver actividades que te lleven a la reflexión y autoanálisis para que examines tu propio proceso de aprendizaje, revises tus fortalezas y debilidades vividas durante el proceso de aprendizaje, para transformar y mejorar tu vida y el entorno social, económico y profesional en el que te desarrollas.
Introducción a la programación
3
Reconocimientos Los autores queremos reconocer el apoyo que recibimos de los profesores a la Academia de Informática de las diferentes Unidades Académicas; su colaboración y propuestas didácticas fueron de gran ayuda durante la redacción de este libro. Gracias a todos ellos. Alejandro Jáuregui Chiquete | UAP LA Cruz César Pilar Quintero Campos | UAP La Cruz Eduin Alejandro Laveaga Corrales | UAP La Cruz Enrique Omar Villegas Melchor | UAP A. César Sandino Jesús González Aldaz |UAP La Cruz José Alejo Sandoval Gallardo |UAP Rubén Jaramillo Laura Patricia Sedano Barraza | UAP Rubén Jaramillo María del Carmen Melisa Quintero Félix | DGEP María Susana Rodríguez Verdugo | UAP 2 de octubre
Introducción a la programación
5
Índice Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Reconocimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Conoce tu libro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Unidad I: Introducción a la programación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.1. Solución estructurada de problemas mediante la computadora. . . 1.1.1 Problemas y algoritmos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2 Algoritmos formales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.1 Conceptos fundamentales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.1 Fases en la creación de algoritmos. . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3 Diagramas de flujo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1 Reglas para la construcción de un diagrama de flujo . . . . . . . . 1.1.3.2 Simbología. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12 13 14 15 19 20 21 22
1.2. Estructuras de control selectivas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1. Selectivas simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2. Selectivas dobles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2.1. Selectivas dobles anidadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3. Selectivas múltiples o de caso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26 28 30 32 35
Estructuras de control repetitivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1. Repetitivas Mientras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2. Repetitivas Haz mientras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3. Repetitivas Para. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40 42 44 46
1.3.
Unidad II. Creación de programas: modo gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.1. Pseudocódigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Definición y características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2. Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.1. Interfaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.2. Elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Introducción a la programación
54 55 57 58 64
2.2. Estructuras de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 2.2.1. Control selectivas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 2.2.2. Control repetitivas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Unidad III. Creación de programas: modo consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1. Metodología de la programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Lenguajes de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1.1. Evolución de los lenguajes de programación. . . . . . . . . . . . . . . . 3.1.1.2. Clasificación de lenguajes de programación. . . . . . . . . . . . . . . . . 3.1.1.3. Programación estructurada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2. Metodología para codificación de aplicaciones. . . . . . . . . . . . . . . . . . . . . 3.1.2.1. Codificación de un programa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.2. Compilación y ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.3. Verificación e implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3. Lenguaje C++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3.1. Características C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3.2. Sintaxis C++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4. Consola. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4.1. Interfaz de Dev C++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84 86 87 88 90 91 91 92 92 93 94 94 95 97 97
3.2. Codificación de estructuras de control selectivas. . . . . . . . . . . . . . . . . . . . 3.2.1. Selectivas simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2. Selectivas dobles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2.1. Dobles anidadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3. Selectivas múltiples o de caso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
100 101 102 103 106
Codificación de estructuras de control repetitivas. . . . . . . . . . . . . . . . . . . 3.3.1. Repetitiva Mientras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. Repetitiva Haz mientras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. Repetitiva Para. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
110 111 112 115
3.3.
Producto integrador del curso: Programa de un menú de opciones . . . . . . . . . . . . . 124 Bibliografía. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Introducción a la programación
7
Conoce tu libro El libro Introducción a la programación, correspondiente a la asignatura Laboratorio de cómputo IV del bachillerato de la Universidad Autónoma de Sinaloa, ha sido diseñado con el propósito de ayudarte en la integración de los saberes y el desarrollo de tus competencias. Está conformado por tres unidades, cada una de ellas constituida por temas y subtemas principales. Incluye diferentes tipos de actividades que deberás realizar para adquirir y aplicar tus conocimientos, así como evidenciar tu nivel de desempeño y el desarrollo de competencias. Los componentes del libro son: Entrada de la unidad. En esta sección se exponen el propósito de la unidad, contenidos temáticos, competencias genéricas y disciplinares, y los saberes específicos que aprenderás a lo largo de la unidad. • Portafolio de evidencias. Es una lista de cotejo que puntualiza las evidencias para evaluar del desarrollo de competencias y saberes adquiridos en la unidad. Ésta se genera a partir de las secciones Encamina tus habilidades, Subproductos procedimentales, conceptuales y actitudinalesvalorales, y el producto integrador de unidad. • ¿Qué tanto sé? Es un cuestionario de evaluación diagnóstica al que debes responder al inicio de cada unidad, es útil para que reconozcas tus fortalezas acerca de los temas que estudiarás a lo largo de la unidad. Secuencia didáctica por tema • A Desarrollar. En esta sección se presentan los objetivos a lograr en cada secuencia didáctica; enuncia las actividades, subproductos y atributos de las competencias genéricas que desarrollarás. • De aquí en adelante. Al inicio de cada tema se presenta una situación problemática con preguntas que te guiarán a recuperar tus conocimientos previos y puedas establecer su relación con el tema a estudiar. • Desarrollo del tema. Es el apartado que contiene el discurso y las actividades de diversos tipos, que te ayudarán a trabajar de manera colaborativa, a desarrollar tus competencias y poner en práctica tus saberes. En el desarrollo se incluyen secciones y cápsulas que te permitirán adquirir y ejercitar habilidades y destrezas, descubrir tus actitudes y manifestarlas en los subproductos.
• Producto integrador de la Unidad. Propone una actividad integrando lo aprendido a lo largo de la unidad, en ella evidenciarás tus saberes y el nivel de logro de las competencias. • Producto integrador del curso. Esta actividad es interdisciplinar y transversal, está propuesta para ayudar a que articules los conceptos y teorías de las otras asignaturas entre sí, para que pienses en el problema de manera integral, contextualizando los contenidos de estudio a partir de una situación realista y abordable en el aula. Por ello, se sugiere que de forma colaborativa realices una propuesta integradora de los saberes de todas las asignaturas que se cursan en el mismo semestre, y que con el mismo producto sean evaluadas todas ellas.
8
Introducción a la programación
• Evaluación. Son ejercicios disponibles al final de cada unidad y del curso, que requieren apliques conceptualmente lo aprendido.
Tipo de actividades • A practicar. Son prácticas a desarrollar en el laboratorio de cómputo con la guía del profesor. No se incluyen en el portafolio de evidencias, pero serán evaluadas como parte de la participación en clase. • Encamina tus habilidades. Son actividades que te ayudarán a desarrollar tus competencias y están encaminadas al producto integrador. Se consideran para el portafolio de evidencias. • Subproductos. En el libro se proponen tres tipos de subproductos, cada uno con un enfoque diferente: procedimental, declarativo y actitudinal-valoral. Al finalizar cada secuencia de tema principal, tendrás un subproducto de tipo procedimental y al finalizar la unidad los subproductos conceptual y actitudinal-valoral. Los subproductos son evaluables y servirán de base para la realización del producto integrador de unidad. • Insignia. Son ejercicios, investigaciones o procedimientos específicos, con el fin de que obtengas puntos extra (valor de rescate). Tienen tiempo límite para su elaboración.
Cápsulas · Relaciónalo con... Describe información más profunda del tema para que establezcas su vínculo con otras asignaturas, con tu vida cotidiana y tu comunidad. · ¿Sabías que? Son cápsulas con información adicional e interesante para que amplíes tus saberes. · Glosario. Son definiciones de los términos técnicos mencionados en el desarrollo y que son poco usuales. · Recursos en línea. Son enlaces a sitios de Internet que se recomiendan en algunas de las secciones o cápsulas y están referidos como recursos. Para acceder a ellos, basta con ingresar a la página http://bit.ly/2nUayXh y dar clic en el libro y número de recurso que corresponda o ingresa a través del código QR:
Introducción a la programación
9
Unidad
1
Propósito de la unidad Tu propósito será: • Diseñar algoritmos y diagramas de flujo para solucionar diversos problemas de manera óptima, identificando los datos de entrada, cómo serán procesados y el resultado que se obtendrá.
Contenidos temáticos 1.1. Solución estructurada de problemas mediante la computadora. 1.1.1 Problemas y algoritmos. 1.1.2 Algoritmos formales. 1.1.3 Diagramas de flujo. 1.2. Estructuras de control selectivas. 1.2.1. Selectivas simples. 1.2.2. Selectivas dobles. 1.2.3. Selectivas múltiples o de caso. 1.3. Estructuras de control repetitivas. 1.3.1. Repetitivas Mientras. 1.3.2. Repetitivas Haz mientras. 1.3.3. Repetitivas Para.
Competencias a desarrollar Genéricas: • Escucha, interpreta y emite mensajes pertinentes en distintos contextos con el uso de medios, códigos y herramientas apropiados. • Desarrolla innovaciones y proponer soluciones a problemas a partir de métodos establecidos. • Sustenta una postura personal sobre temas de interés y relevancia general, considerando otros puntos de vista de manera crítica y reflexiva. • Aprende por iniciativa e interés propio a lo largo de la vida. • Participa y colabora de manera efectiva en equipos diversos. Disciplinar: • Utiliza las tecnologías de la información y la comunicación para investigar, resolver problemas, producir materiales y transmitir información.
10
Introducción a la programación Saberes específicos ¿Cómo lo aprenderás? • Definiendo los conceptos algoritmo y diagrama de flujo. • Identificando las reglas y simbología para diseñar algoritmos. • Ordenando instrucciones de entrada, proceso y salida que conducen a la solución de un problema determinado. • Describiendo las formas que representan un proceso dentro de un diagrama de flujo. • Diagramando algoritmos. • Identificando las secuencias de cada estructura de control selectiva y repetitivas. • Comparando las estructuras secuencias de control selectivo y repetitivo. • Estructurando sentencias secuenciales de control selectivo y repetitivo. • Ejercitando soluciones de problemas mediante algoritmos. • Analizando la importancia del uso de algoritmos y diagramas de flujo para resolver problemas. • Colaborando con tus compañeros en la construcción de sus aprendizajes. • Reflexionando sobre el proceso propio de aprendizaje.
Mi portafolios de evidencias Evidencia Logrado
Encamina tus habilidades: Diagrama de flujo (página 24)
Sí
No
Subproducto procedimental 1.1: Video (página 25)
Sí
No
Encamina tus habilidades: Cuadro relacional (página 38)
Sí
No
Subproducto procedimental 1.2: Presentación electrónica (página 39)
Sí
No
Encamina tus habilidades: Infografía (página 48)
Sí
No
Subproducto procedimental1.3: Algoritmo (página 49)
Sí
No
Subproducto actitudinal-valoral: Reflexión escrita (página 49)
Sí
No
Subproducto conceptual: Cuestionario (página 49)
Sí
No
Producto integrador de la Unidad 1: Algoritmo y diagrama (página 50)
Sí
No
¿Qué tanto sé? Responde con base en tus conocimientos previos. 1. Describe al menos tres diferencias entre hardware y software. 2. ¿Qué es algoritmo? 3. ¿Qué es una variable? 4. ¿Cuál es la función de una variable dentro de un algoritmo? 5. ¿Cuál es la diferencia entre un operador lógico y un operador aritmético? 6. ¿Cómo calcularías la suma de los números pares comprendidos entre 1 y 100? 7. ¿Cómo puedes conocer el valor de x de la función 5 + x = 15? 8. Menciona una ventaja en tu vida cotidiana de aprender a diseñar programas de computadora.
11
1.1. Solución estructurada de problemas mediante la computadora A desarrollar Al terminar esta secuencia identificarás las reglas y simbología para diseñar algoritmos formales y diagramas de flujo. Asimismo, describirás las formas de representación de procesos de algoritmos ordenando dentro de diagramas las instrucciones de entrada, proceso y salida para la solución de problemas específicos. Crearás algoritmos formales y diagramas de flujo siguiendo una secuencia lógica, analizando los procedimientos establecidos y aplicando cada una de las fases de la resolución de problemas para cumplir con este proceso de forma óptima. Como subproducto procedimental elaborarás un video con la explicación del diseño de un algoritmo y diagrama de flujo para calcular el radio de una circunferencia. Las actividades que realizarás en esta secuencia te servirán para: 4.1 Expresar ideas y conceptos mediante diversos sistemas de representación simbólica. 4.2 Aplicar diversas estrategias comunicativas según quienes sean sus interlocutores, el contexto en el que se encuentra, y los objetivos que persigue. 4.5 Manejar las tecnologías de la información y la comunicación para obtener información y expresar ideas. 5.2 Ordenar información de acuerdo a categorías, jerarquías y relaciones. 5.7 Proponer soluciones a problemas del orden cotidiano, científico, tecnológico y filosófico. 7.3 Articular saberes de diversos campos y establecer relaciones entre estos y la vida cotidiana. 8.1 Plantear problemas y ofrecer alternativas de solución al desarrollar proyectos en equipos de trabajo, y define un curso de acción con pasos específicos. 8.3 Asumir una actitud constructiva al intervenir en equipos de trabajo, congruente con los conocimientos y habilidades que posee.
De aquí en adelante Desde el curso anterior practicaste métodos para resolver problemas lógico-matemáticos, reactiva tus conocimientos resolviendo mediante un algoritmo la siguiente situación. Supón que tienes que hacer un recorrido en automóvil a un campamento escolar y éste no tiene suficiente gasolina para realizarlo, además el viaje es largo y necesitas saber cuánto dinero debes llevar para llegar a tu destino. • ¿Cómo representarías las decisiones que debes tomar para asistir al campamento? • ¿Qué elementos intervienen en la resolución del problema? Resuelve en tu cuaderno de notas el problema planteado y socializa con tu profesor y compañeros tus respuestas. Determinen de entre todas las propuestas cuál fue la solución más óptima y porqué.
12
Introducción a la programación
1.1.1. Problemas y algoritmos
¿Sabías que…?
Casi de manera inconsciente los humanos efectuamos habitualmente una serie de pasos, procedimientos o acciones que permiten alcanzar un resultado o resolver un problema y esto lo hacemos innumerables veces durante el día, con ello, lo que estamos haciendo de manera inadvertida y automáticamente es aplicar un algoritmo, sus múltiples usos cotidianos y tecnológicos pueden ser una fórmula matemática o una receta de cocina e incluso el diseño e implementación de políticas públicas; están insertos en nuestra naturaleza humana y vida cotidiana. Un algoritmo es una serie de acciones que permiten alcanzar un resultado. Hay registros que señalan que desde la Antigua Grecia estaban presentes los algoritmos, uno de los más famosos es la Criba de Eratóstenes que permite encontrar todos los números primos menores que un número natural dado. Sin embargo, es en el siglo pasado donde los algoritmos dieron un salto significativo con el primer modelo teórico de una máquina de computación diseñada por Alan Turing, que en realidad era un dispositivo abstracto que simulaba la lógica de cualquier algoritmo, lo que anticipó la creación de las primeras computadoras. Actualmente la omnipresencia de los algoritmos en la vida diaria y en los grandes saltos de la tecnología hace cada vez más común escuchar este término para referir a procesos rutinarios, por ejemplo, los servicios de múltiples aplicaciones en los dispositivos móviles, como reconocer rostros, tomar fotos, manejar autos y encontrar lugares, también basan su funcionamiento en algoritmos los procesos asociados a tarjetas de crédito, las sugerencias de series y películas que muestra Netflix, de música en YouTube, de publicaciones y de usuarios de acuerdo a perfiles e intereses en las redes sociales al igual que los resultados de las búsquedas que se realizan en Internet. Los algoritmos resuelven hasta los problemas sencillos como ayudarte a elegir un lugar para ir a comer. Por ejemplo, la aplicación Maps de Google hace poco tiempo incorporó un factor de afinidad de 0 a 100, que funciona a partir de una serie de valoraciones previas como reseñas y vistas que hagas a bares, restaurantes, cafés, etc. Tantos más sitios visites o califiques, el algoritmo de la aplicación más acertará en tus gustos e intereses en las siguientes sugerencias de restaurantes que haga.
La Inteligencia artificial está basada en algoritmos avanzados.
Figura 1.1.
Relaciónalo con… Los algoritmos para recomendaciones de Netflix y de Amazon funcionan a partir las reseñas a las series o películas que te gustan, usando los likes y dislikes. Mediante la Inteligencia Artificial, estas compañías comparan a usuarios coincidentes en calificaciones previas, si algo les gustó a todos, probablemente a ti también. “Aprenden” de usuarios similares que pueden gustarte. Entre más información le otorgas más acierta recomendando.
Otro ejemplo sencillo es la notificación del tráfico que hace todos los días a la misma hora tu smartphone basado en el algoritmo de las rutas frecuentes entre tu casa, escuela, trabajo y lugares que recorres diariamente, incluso puede determinar el domicilio donde vives y donde estudias.
Figura 1.2.
Introducción a la programación
13
1.1.2. Algoritmos formales En el curso anterior diseñaste algoritmos para dar solución a problemas sencillos y cotidianos, la secuencia de pasos que seguiste para resolverlos fue de manera informal usando palabras simples y entendibles a toda persona. Ahora diseñarás algoritmos formales mejor conocidos como computacionales, que serán diseñados para resolverse mediante la computadora con resultados deseados, rápidos y confiables. De aquí en adelante se referirá sólo a este tipo de algoritmos. Algoritmo formal/computacional es la descripción de un procedimiento o instrucciones ordenadas y bien definidas que dará solución a un problema determinado mediante una computadora. Cualquier problema de computación puede resolverse ejecutando una serie de acciones definidas en un orden específico. Los algoritmos son la base de la programación de computadoras, son escritos en código especial entendible por los programas de computadora llamado lenguaje algorítmico, éste implementa una solución teórica a un problema indicando las operaciones a realizar y el orden en que deben ejecutarse. ¿Sabías que…? El Algoritmo de Google es la forma que tiene el buscador de posicionar las páginas ante una búsqueda, es decir, es lo que decide que muestra primero, segundo o en la siguiente página. Este algoritmo cambia unas 500 veces al año y resulta difícil seguirle la pista.
Un algoritmo debe cumplir obligatoriamente con tres características: • Precisión. Cada paso a seguir debe ser precisado claramente. • Determinismo. Dado un conjunto de datos idénticos de entrada, el algoritmo siempre debe arrojar el mismo resultado. • Finitud. Sin importar la complejidad del algoritmo, debe tener un número determinado de pasos. Se aconseja diseñar algoritmos que cumplan con lo antes enunciado y también con lo siguiente: • Resolver el problema para el que fue formulado. • Independiente de los lenguajes de programación, es decir, un algoritmo debe poder ser utilizado en cualquier lenguaje. • Ser válido careciendo de errores, porque si bien puede resolver el problema para el que se planteó puede no hacerlo debido a que posee errores. • Ser eficiente en la obtención de la solución en poco tiempo. • Óptimo, siendo lo más eficiente posible y sin errores. La búsqueda de este algoritmo debe ser tu objetivo prioritario. El procedimiento de un algoritmo está estructurado en tres partes:
Proceso • Datos a ejecutarse
Entrada
14
Introducción a la programación
• Acciones y cálculos a realizar
• Resultado esperado
Salida
Observa el siguiente ejemplo de un algoritmo para calcular el área de un triángulo rectángulo: Inicio 1. 2. 3. 4. 5. 6. Fin
Definir variables (b, h, a) Preguntar: “¿Cuál es la base? ” Capturar valor a la variable b Preguntar: “¿Cuál es la altura? ” Capturar valor a la variable h Asignar a la variable a el resultado de multiplicar y dividir (b × h) / 2 7. Expresar: “El área del triángulo rectángulo es: ” + a
Relaciónalo con… En un programa o algoritmo es indispensable colocar entre comillas el caracter o cadena de caracteres que se desea desplegar en pantalla y que no es resultado de alguna operación. Todo caracter que no esté descrito entre comillas será tomado como un valor y posiblemente sea causa de error por no estar definido de manera correcta.
En el procedimiento del ejemplo se observa que la entrada son los datos de las variables b y h. El proceso es el cálculo resultante de la multiplicación de las variables b y h y su división entre dos y su asignación a la variable a. Y la salida es el valor de la variable a.
1.1.2.1. Conceptos fundamentales Para diseñar algoritmos y por ende programas de computadora, es importante que identifiques algunos conceptos básicos que utilizarás desde la creación de algoritmos hasta el desarrollo de programas más adelante. Tipos de datos Los datos deben definirse de manera correcta, al igual que en Excel no es lo mismo considerar un dato como número que como letra. Los tipos de datos que puede procesar una computadora son los simples y los estructurados.
Figura 1.3.
1. Datos simples. Ocupan sólo una casilla de memoria, por lo que una variable simple hace referencia a un único valor a la vez. A este grupo de datos corresponden: números enteros, reales, también los caracteres y datos booleanos. • Datos numéricos. Este tipo de datos simples considera a los números enteros y a los reales. Los números enteros no tienen decimales a diferencia de los reales. Ambos pueden estar precedidos del signo + o –. Por ejemplo: 57, –1895, 457.7, –65.50. • Datos alfanuméricos. Son las letras del abecedario, dígitos y símbolos especiales. Recuerda que los números pronunciados como carácter no pueden ser utilizados para realizar operaciones aritméticas. Este tipo de datos pueden contener caracteres simples y estructurados. Para definir un dato de un sólo carácter debe escribirse entre comillas apóstrofes: ‘a’, ‘C’, ‘$’. Un dato tipo cadena de caracteres, es decir, estructurado, debe escribirse entre comillas: “Hola mundo”, “667-712-1656”. • Datos lógicos. Conocidos como datos booleanos y pueden tomar sólo dos valores: verdadero y falso.
Introducción a la programación
15
2. Datos estructurados. se caracterizan por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria. Un dato de este tipo tiene varios componentes, cada uno de ellos puede ser a su vez un dato simple o estructurado. En este grupo se ubican: arreglos, cadena de caracteres, registros y conjuntos. Identificadores Relaciónalo con… En el panel emergente de Borrar, ubicado en la categoría Modificar de la pestaña Inicio, se borran las configuraciones de diseño aplicadas a la hoja.
Como se mencionó anteriormente los datos a procesar por una computadora se almacenan en casillas de memoria, a cada una se le asigna un nombre para su identificación, de manera que, al nombre de las casillas de datos simples y estructurados se le conoce como identificador. Este nombre se asigna atendiendo ciertas reglas que dependerán del lenguaje de programación que se utilice, pero de manera general deben considerarse: que inicie con una letra, seguido de otras letras, números o del símbolo guion bajo “_”. Su longitud no debe exceder de siete caracteres. Ejemplos:
Memoria SUMA
AUX
ACUM
NUM_1
Figura 1.4.
Constantes En el procesamiento de un algoritmo al igual que en las matemáticas, las constantes son datos que no cambian su valor durante el proceso. En memoria se almacena con un tamaño fijo en el área reservada que corresponde a valores fijos. Para definirlas se utilizan los identificadores, se acostumbra asignarles en mayúsculas nombres representativos a la función que tendrán durante la ejecución. Pueden contener valores de tipo entero, real, carácter y cadena de caracteres. Ejemplos: ¿Sabías que…?
Memoria
Entre los desarrolladores de programas es muy común que utilicen las letras i y j para definir variables que requieren ir acumulando valores, conocidas como contadores o acumuladores.
PI
NUM
NREAL
KB
3.14
7
98.75
1024
Figura 1.5.
Variables Se les llama así a los símbolos que pueden cambiar su valor durante el proceso y ejecución del algoritmo. El uso de variables no es novedoso para ti, en matemáticas, física y química las has usado para representar expresiones donde se busca un valor, por ejemplo, el clásico: encuentra el valor de x en la expresión 5x – 2 = 13. El espacio en memoria que ocupará una variable puede ser de longitud fija cuyo tamaño no cambia a lo largo de la ejecución de los procesos, o puede ser de longitud variable que si modifican su tamaño según se requiera como en los arreglos dinámicos.
16
Introducción a la programación
Al igual que las constantes las variables pueden almacenar datos enteros, reales, un solo carácter o un conjunto de ellos. Para asignarles nombre deben atenderse las mismas reglas que las aplicadas a los identificadores: iniciar con una letra, puede contener el signo de guion bajo y su longitud no debe ser larga. Al inicio de un programa todas las variables deben declararse e inicializarse con valor de cero, durante la ejecución irán tomando los valores que se le asignen en las operaciones en que intervienen. Ejemplo: Inicio 1. 2. 3. 4. 5. 6. 7. Fin
Definir e inicializar variables (Suma, Num1, Num2) Preguntar: “¿Cuál es el primer número a sumar?” Capturar valor a la variable Num1 Preguntar: “¿Cuál es el segundo número a sumar?” Capturar valor a la variable Num2 Asignar a la variable Suma el resultado de sumar Num1 + Num2 Expresar: (“La suma de ” + Num1 + “ + ” + Num2 + “es: ” + Suma
Memoria Valor inicial:
Suma
Num1
Num2
0
0
0
90
99
Valor final: 189
Figura 1.6.
Constante
Observa en el ejemplo cómo los valores de las variables cambiaron adquiriendo el valor asignado por el usuario y por el cálculo de la suma. Presta atención al paso siete, donde se usan comillas para indicar la cadena de caracteres incluyendo los espacios en blanco que se desean desplegar en pantalla y el signo “+” para concatenarlas con el valor de las variables. A diferencia del paso seis el signo de “+” atiende la operación aritmética de sumar los valores de dos variables. De acuerdo a los valores asignados el resultado del algoritmo desplegaría: La suma de 90 + 99 es: 189 Expresiones Son combinaciones de constantes, variables y operadores que permiten manipular datos para obtener nuevos datos. Están compuestas de un operador y dos operandos, cada uno tiene valores que puede ser de tipo constante, variable u otras expresiones. En programación se usan los mismos conceptos de las operaciones matemáticas, el valor de la expresión se obtiene de aplicar el operador a los valores de los operandos. Los operadores pueden ser aritméticos, relacionales, lógicos y de conversión, conócelos a continuación: 1. Operadores aritméticos
Además de la asignación de nombres y valores a las constantes y variables, es necesario definir otros elementos que intervienen en el procesamiento del algoritmo, estos son los operadores aritméticos. Son necesarios para realizar los cálculos matemáticos entre los valores de las constantes y variables. La siguiente tabla detalla y describe la operación que pueden realizar mediante ejemplos. Operador aritmético + – * / ** mod div
Operación que realiza Suma Resta Multiplicación División Potencia Módulo (residuo) División entera
Ejemplo 523.9 + 48.2 1027 – 854 3*2 39 / 4 4 ** 3 45 mod 2 17 div 3
Constante
7x + 5 = 21 – x Variable
Variable Operadores
Figura 1.7. Ejemplo expresión matemática. Glosario Residuo. Es la cantidad que sobra en una división y que no es divisible entre el divisor. Potencia. Es el número de veces que debe ser multiplicado por sí mismo de acuerdo al número que indique el exponente. Concatenar. Es la unión de cadenas de caracteres con valores de variables o constantes en un algoritmo o programa para formar un dato más grande. La unión se hace con el signo “+”.
Resultado 572.1 173 6 9.75 64 1 5
Introducción a la programación
17
Operadores
Jerarquía
()
Mayor
** *, /, mod, div +, – =, <>, <, >, <=, >= NO Y O
Menor
Figura 1.8. Jerarquía de los operadores aritméticos, relacionales y lógicos.
Reglas para resolver expresiones aritméticas: • Las operaciones se resuelven de izquierda a derecha. • Si una expresión contiene sub expresiones, éstas deben indicarse entre paréntesis indicando que se calcularán primero. Si las sub expresiones se encuentran anidadas por paréntesis, primero se resolverán las que se encuentran en el último nivel de anidamiento. En el caso de haber corchetes se resuelven los términos por corchetes. • Es muy importante realizar las operaciones considerando la jerarquía de los operadores de mayor a menor. 2. Operadores relacionales
Se utilizan para comparar dos operandos que pueden ser números, cadenas de caracteres, constantes o variables. El resultado de una expresión con este tipo de operadores sólo puede tener dos valores: verdadero o falso. La siguiente tabla detalla las comparaciones que pueden realizarse mediante ejemplos cuyos resultados serían verdaderos. Operador relacional
Relaciónalo con… Existen otros tipos de operadores: de asignación, se denota con “←” su función es asignar valor o expresiones a una variable. De asociación, se identifica con paréntesis “()”, tiene la prioridad más alta en cualquier lenguaje de programación. Y operadores de incremento y decremento, se usa “++” para incrementar en 1 y “– –” para el decremento en 1.
> < == <= >= !=
Comparación que realiza Mayor que Menor que Igual que Menor o igual que Mayor o igual que Diferente
Ejemplo 123 > 20 20 < 123 123 = 123 20 <= 123 123 >= 20 123 <> 20
3. Operadores lógicos
Estos operadores se usan con valores booleanos e implementan las conectivas de la lógica proposicional. Permiten agrupar expresiones lógicas para validar condiciones, de cumplirse la condición el resultado es verdadero, de no cumplirse el resultado de la expresión es falso. Operador lógico AND OR NOT
Expresión lógica Conjunción (Y) Disyunción (O) Negación (NO)
A practicar 1. Para reactivar tus conocimientos acerca de operaciones aritméticas, resuelve las siguientes operaciones atendiendo las reglas jerárquicas: a. 4(7 – 1) + (4 – 2(3 – 4))2 = b. [2(3 – 1)]2 = c. [5(3 – 4)/2]/3 + [2(3 + 3(2 – 1))]3 = 2. Comenta en clase los resultados con tus compañeros y expliquen el procedimiento que siguieron para resolver.
18
Introducción a la programación
1.1.2.2. Fases en la creación de algoritmos La parte más creativa y estimulante de resolver un problema es desmenuzarlo para analizarlo y razonarlo a detalle para encontrar una solución lógica y algorítmica. Resolver un problema mediante la computadora requiere seguir algunas fases de resolución de problemas. En el mundo del desarrollo de programas pueden encontrarse distintos números de fases o etapas, pero todas ellas coinciden en el procedimiento que se debe seguir para diseñar y verificar que los algoritmos funcionen correctamente dando solución al problema. Entre los métodos más reconocidos está el propuesto por George Pólya, que consta de cuatro pasos para resolver problemas matemáticos: 1) entender el problema, 2) configurar un plan, 3) ejecutar el plan y 4) mirar hacia atrás. Su objetivo principal fue desarrollar una metodología heurística que contribuya no sólo a la solución de problemas matemáticos sino también a problemas de la vida cotidiana.
Figura 1.9.
Esta estrategia fue adaptada por Simon Thompson para resolver problemas de programación estableciendo con ello el procedimiento que muchos desarrolladores de programas utilizan en la actualidad. Describe en cuatro pasos lo que se necesita para resolver un problema computacional:
Paso 1: Entender el problema
¿Cuáles son los argumentos? ¿Cuál es el resultado? ¿Cuál es la especificación del problema? ¿Puede satisfacerse la especificación? ¿Es insuficiente? ¿Qué restricciones se suponen sobre los argumentos y el resultado? ¿Puedes descomponer el problema en partes? Puede ser útil dibujar diagramas con ejemplos de argumentos y resultados.
Paso 2: Diseñar el programa
¿Te has encontrado con un problema semejante? ¿O has visto el mismo problema planteado en forma ligeramente diferente? ¿Conoces algún problema relacionado con éste? ¿Puedes resolver una parte del problema? ¿Puedes deducir algún elemento útil de los datos? ¿Puedes pensar en algunos otros datos apropiados para determinar la incógnita? ¿Has empleado todos los datos? ¿Has empleado todas las restricciones sobre los datos? ¿Has considerado todos los requisitos de la especificación? Si no puedes resolver el problema propuesto, trata de resolver primero algún problema similar.
Paso 3: Escribir el programa
Al escribir el programa, comprueba cada uno de los pasos y funciones auxiliares. ¿Puedes ver claramente que cada paso o función auxiliar es correcta? Puedes escribir el programa en etapas. Piensa en los diferentes casos en los que se divide el problema; en particular, piensa en los diferentes casos para los datos. Piensa en el cálculo de los casos independientemente y únelos para obtener el resultado final. Piensa en la solución del problema descomponiéndolo en problemas con datos más simples y uniendo las soluciones parciales para obtener la solución del problema; esto es, por recursión. En su diseño se puede usar problemas más generales o más particulares. Escribe las soluciones de estos problemas; ellas pueden servir como guía para la solución del problema original, o se pueden usar en su solución. ¿Puedes apoyarte en otros problemas que has resuelto? ¿Pueden usarse? ¿Pueden modificarse? ¿Pueden guiar la solución del problema original?
Paso 4: Examinar la solución obtenida
¿Puedes comprobar el funcionamiento del programa sobre una colección de argumentos? ¿Puedes comprobar propiedades del programa? ¿Puedes escribir el programa en una forma diferente? ¿Puedes emplear el programa o el método en algún otro programa?
Introducción a la programación
19
En este libro se continuará describiendo en tres fases la resolución de problemas estructurados, tal como viste en el curso anterior: 1. Análisis del problema. Se determina el problema a resolver identificando los datos de entrada del algoritmo y los datos que deberán obtenerse como salida. 2. Diseño del algoritmo. Elaboración del algoritmo. 3. Implementación y verificación. Comprobación del resultado, es decir, confirmar si el algoritmo arroja la salida esperada para todas las entradas.
Figura 1.10.
A practicar Con base en lo que has visto acerca del diseño de algoritmos formales, es hora de poner en práctica tus conocimientos. Para resolver el problema aplica las fases: análisis del problema, diseño de algoritmo e implementación y verificación, asimismo utiliza los operadores aritméticos y relaciona los que consideres necesarios. 1. Diseña un algoritmo para calcular el término n de cualquier sucesión aritmética. 2. Para resolver paso a paso el problema usa la tabla que se encuentra en esta URL: http://bit.ly/2Miir1d o accede a ella desde el código QR del lado izquierdo. 3. En la fase de análisis debes tomar esto en cuenta: a. Que para calcular el termino (an), en las progresiones aritméticas, se debe obtener primero la diferencia entre sus dos primeros términos, para esto se debe aplicar la siguiente ecuación: d = an + 1 – an b. Ahora para calcular cualquier término en la sucesión (termino general), debes emplear la siguiente fórmula: an = a1 + d n – 1 c. Tomando siempre en cuenta que la variable n representa la posición del término a encontrar. 4. Con la guía de tu profesor llena la fase de creación de algoritmo tomando todo lo anterior en cuenta. 5. Entrega a tu profesor por el medio que solicite para que valore tu aprendizaje y avance en el diseño de algoritmos. ¿Sabías que…? En programación no se permiten palabras acentuadas dentro de algoritmos, diagramas de flujo ni código de lenguaje. Las únicas palabras que se deben acentuar son en frases que se despliegan entre comillas atendiendo las reglas ortográficas.
20
1.1.3. Diagramas de flujo Para representar la solución de un problema se pueden usar diferentes herramientas de programación, entre ellas: diagramas de flujo, diagramas Nassi-Scheneiderman y pseudocódigos. Una de las técnicas de representación más antigua y muy utilizada son los diagramas de flujo. Utiliza símbolos estándar que incorporan los pasos del algoritmo escritos en cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se debe ejecutar.
Introducción a la programación
Un diagrama de flujo es un algoritmo gráfico pues representa su esquematización con formas preestablecidas. En él se muestra gráficamente la secuencia ordenada de instrucciones a seguir para alcanzar la solución del problema. Su correcta construcción es sumamente importante porque a partir del mismo se escribe un programa en algún lenguaje de programación, si el diagrama de flujo está completo y correcto, su traducción a un lenguaje es relativamente simple.
1.1.3.1. Reglas para la construcción de un diagrama de flujo Existen normas que deben atenderse en cualquier aplicación que se use para crear diagramas de flujo: • Los diagramas de flujo se escriben de arriba abajo y de izquierda a derecha. • Tienen un inicio y un fin. • Todo símbolo exceptuando a las líneas de flujo, debe contener en su interior información que indique su función exacta y unívoca. • Un elemento del diagrama no puede tener más de una salida si no es un elemento de decisión. • Las líneas de flujo no pueden cruzarse. Observa los siguientes casos de diagramación e identifica la razón de ser correctos o incorrectos:
Figura 1.11.
Introducción a la programación
21
1.1.3.2. Simbología Los pasos del proceso de un algoritmo son descritos en formas que la American National Standars Institute (ANSI) normalizó a un estándar de símbolos para definir cada tipo de acción. Los más comunes son: inicio, entrada/salida, proceso, decisión, conectores, dirección del flujo y fin. A continuación, se describen formas que usarás en este curso definiendo lo que representa cada uno de ellos y su función: Símbolo
Significado
Instrucción algorítmica
Inicio y fin del diagrama.
Inicio
Entrada o captura de datos, expresa lectura.
Fin Capturar respuesta a …
Proceso con las operaciones a realizar. Utiliza el símbolo: ⟵
Asignar proceso a … Asignar resultado a …
Representación simbólica de la salida de resultados, expresa escritura.
Decir Expresar Preguntar
Son usados para definir la dirección del flujo del diagrama. Conector utilizado dentro de una página. A
Conector usado entre páginas diferentes. 1
Condición(es)
SÍ
Instrucción(es)
Condición(es)
Sí
Instrucción(es)
Sí
No
Instrucción(es)
Condición(es)
No
Instrucción(es) Sí
Condición(es)
Instrucción(es)
22
No
Instrucción(es)
Representa una toma de decisión, en el interior del símbolo debe expresarse una condición y según su cumplimiento el flujo tomará un camino.
Si (condición(es)) Fin del Si
Representa una toma de decisión doble: Si entonces – De lo contrario. En su interior debe estar la condición y si el resultado es verdadero el flujo será hacia la izquierda y si es falso hacia la derecha.
Si (condición(es)) De lo Contrario Fin del Si
Representa una toma de decisión doble anidada: Si entonces – De lo contrario Si – De lo contrario. En su interior debe estar la condición y si el resultado es verdadero el flujo será hacia la izquierda y si es falso hacia la derecha y así sucesivamente.
Si (condición(es)) De lo Contrario Si (condición(es)) De lo Contrario Fin del Si
Introducción a la programación
Símbolo op
op1
Interrumpir
defecto
op2
Instrucción(es)
Instrucción(es)
op3
Instrucción(es)
Instrucción(es)
Interrumpir
Interrumpir
Condición(es)
No
Sí Instrucción(es) 1 Instrucción(es) n
Significado Simboliza toma de decisiones múltiple o selección de casos. Dentro del símbolo debe estar el selector y dependiendo de su valor será el camino que tomará el flujo del diagrama.
Instrucción algorítmica En caso de (opción) Fin del caso de
Representación de ciclos o bucles: Mientras (While) y Haz mientras (Do while). Dentro del símbolo debe ir la condición que ejecutará el ciclo mientras ésta se cumpla. Dentro de los procesos del bucle debe estar el incremento o decremento del contador de eventos para romper el ciclo.
Mientras (condición(es)) Fin del mientras Haz Mientras (condición(es))
Instrucción(es) 1 Instrucción(es) n
Sí
Condición(es)
Inicio; Condición(es); Comportamiento Sí
Instrucción(es) 1 Instrucción(es) n
No
No
Representación del ciclo o bucle Para (For). El Para (tarea_de_inicialización; condición; símbolo está dividido en tres partes: tarea_final_por_vuelta) Define a partir de cuándo o de qué valor inicia Fin del Para el ciclo. La condición que ejecuta el ciclo. De qué manera el contador de eventos del ciclo se irá incrementando para llegar a la condición que rompa el ciclo.
Para concretar la representación gráfica de un algoritmo observa el procedimiento del siguiente ejemplo para encontrar el coeficiente y residuo de un número entero cualquiera entre un divisor cualquiera. Inicio 1. Definir e inicializar variables (numero⟵0, divisor⟵0, cociente⟵0, residuo⟵0) 2. Preguntar (“Introduce un número entero a dividir”) 3. Capturar el valor de numero 4. Preguntar (“Introduce un divisor entero”) 5. Capturar el valor de divisor 6. cociente ¬ numero/divisor 7. residuo ¬ numeroMODdivisor 8. Expresar (“El cociente de la división: ” + numero + “/” + divisor + “ = ” + cociente) 9. Expresar (“El residuo de la división: ” + numero + “/” + divisor + “ = ” + residuo) Fin
Inicio número <–– 0 divisor <–– 0 cociente <–– 0 residuo <–– 0
número, divisor
cociente <–– número/divisor
residuo <–– númeroMODdivisor
cociente, residuo
Fin
Figura 1.12. Diagrama de flujo del ejemplo de la izquierda.
Introducción a la programación
23
Relaciónalo con… Es conveniente que en el diseño de algoritmo y diagramas de flujo acostumbres escribir las variables y constantes con formato de cursivas para identificarlas fácilmente.
Prueba de escritorio Las pruebas de escritorio son simulaciones del comportamiento de un algoritmo que permiten determinar la validez del mismo, corresponde a la fase de verificación. Consisten en generar una tabla con tantas columnas como variables tenga el algoritmo y seguir las instrucciones poniendo los valores correspondientes. Una vez probado el algoritmo con diferentes valores y haya arrojado los resultados esperados, entonces se puede escribir el pseudocódigo siguiendo el procedimiento del diagrama de flujo. Retomando el ejemplo de encontrar el cociente y residuo de un número entero cualquiera entre un divisor cualquiera observa la siguiente prueba de escritorio para valorar su algoritmo.
Figura 1.13.
Instrucción Asignar valores Realizar operaciones Expresar mensaje Expresar mensaje
Operaciones numero = 45 divisor = 4 cociente = 45/4 = 11.25 residuo = 45MOD4 = 1 El cociente de la división: 45/4 = 11.25 El residuo de la división: 45/4 = 1
Encamina tus habilidades Desarrolla tus competencias y demuestra tu aprendizaje acerca del diseño de diagramas de flujo creando uno para el algoritmo propuesto en la sección A practicar de la página 20. Utiliza las formas que representen la acción a realizar en cada paso con la herramienta de tu preferencia o la que se sugiere al final de esta página. Termina de llenar el formato que usaste para el mismo problema que contendrá el análisis del problema, algoritmo, diagrama de flujo y la comprobación. Envíalo a tu profesor por el medio que acuerden para recibir evaluación y realimentación para mejoras en el caso de requerirse.
Herramientas para diseñar diagramas de flujo Actualmente hay una gran diversidad de aplicaciones para crear y compartir diagramas de flujo en línea, algunos requieren de una suscripción con pago, pero muchos son de acceso libre. En cursos anteriores has trabajado con algunas herramientas especializadas que te pueden ayudar a diseñar tus propios diagramas entre ellos Visio, Cacoo y CmapTools, pero incluso puedes crear un diagrama en aplicaciones con fines más generales, incluso Microsoft Word y PowerPoint tienen un grupo de formas predefinidas específicas insertar diagramas. A través de la siguiente URL: http://bit.ly/2VnLxjF puedes acceder al videotutorial de una herramienta para colaboración en línea con opción de crear una cuenta gratuita para diseñar todos los diagramas que quieras con el límite de 60 objetos por diagrama.
24
Introducción a la programación
Subproductos Subproducto procedimental Para evidenciar tus aprendizajes y el desarrollo de tus competencias, de manera individual con ayuda de un software de creación de videos, elabora un video con las características que a continuación se describen: 1. Explica la forma de calcular el radio de una circunferencia de X m2 de superficie a través de la algoritmia. 2. El video deberá describir de forma clara y precisa los procedimientos de: a. Fase de análisis del problema con cada uno de los elementos que se requieren. b. Diseño del algoritmo que permita realizar el cálculo de manera correcta. c. Diagrama de flujo. d. Verificación del resultado del cálculo. 3. Considera todo lo necesario para que el video sea entendible para un estudiante de tu edad. Aplica lo aprendido en cursos pasados en creación y edición de videos. 4. Exporta el video en formato mp4 con calidad de entre 720p o 1080p. La duración del video no debe exceder los 10 minutos. 5. Envía a tu profesor el enlace donde alojes el video o entrega por el medio que te solicite para evaluar tu aprendizaje.
Figura 1.14.
Introducción a la programación
25
1.2. Estructuras de control selectivas A desarrollar Al término de la secuencia identificarás las características de las estructuras de control selectivas y analizarás la eficiencia de cada una de ellas. Asimismo, estructurarás oraciones para dar solución a problemas ordenando instrucciones de entrada, proceso y salida. Crearás algoritmos siguiendo una secuencia lógica de acción simple, doble y múltiple siguiendo los procedimientos establecidos. Como subproducto procedimental elaborarás un cuadro relacional de las estructuras de control selectivas. Las actividades que realizarás en esta secuencia te servirán para: 4.2 Aplicar diversas estrategias comunicativas según quienes sean sus interlocutores, el contexto en el que se encuentran, y los objetivos que persiguen. 5.2 Ordenar información de acuerdo a categorías, jerarquías y relaciones. 5.7 Proponer soluciones a problemas del orden cotidiano, científico, tecnológico y filosófico. 7.3 Articular saberes de diversos campos y establecer relaciones entre ellos y su vida cotidiana. 8.1 Plantear problemas y ofrecer alternativas de solución al desarrollar proyectos en equipos de trabajo, y definir un curso de acción con pasos específicos. 8.3 Asumir una actitud constructiva al intervenir en equipos de trabajo, congruente con los conocimientos y habilidades que posee.
De aquí en adelante Al inicio de cada ciclo escolar es frecuente que debas adquirir nuevos útiles escolares, uniformes y zapatos o tenis. Esto representa un fuerte gasto para las familias especialmente cuando hay dos o más estudiantes en casa. Supón la situación de comprarte un par de zapatos escolares para escribir un algoritmo que seguirías para estrenar zapatos y tratar de ahorrar dinero y que pueda ser útil para tus compañeros. Movilizando tus aprendizajes adquiridos en el curso pasado en el tema resolución de problemas lógico matemáticos, en tu cuaderno de notas redacta los pasos para comprarte zapatos escolares. Comenta con tu profesor y compañeros la secuencia que consideras debe llevarse a cabo para hacer una buena compra. Elijan la mejor propuesta de las expuestas en clase y anota los puntos que pasaste por alto para que tu propuesta fuera la mejor.
26
Introducción a la programación
La resolución de problemas de tipo general requiere de algoritmos con capacidad de controlar cuáles son las oraciones que se deben ejecutar y en qué momentos. A medida que los algoritmos usados para resolver problemas se vuelven más grandes y complejos, se hace necesario utilizar estructuras algorítmicas que controlen el flujo de información. En programación existen varios tipos de estructuras categorizadas como estructuras de control que como su nombre lo indica controlan el flujo de ejecución de un programa o función. Permiten combinar instrucciones o sentencias individuales en una unidad lógica con un punto de entrada y uno de salida. Las estructuras se clasifican en tres tipos: secuencia, selección y repetición. 1. Las secuenciales se encuentran en la solución algorítmica de muchos tipos de problemas. Por ejemplo, todos los problemas definidos en la secuencia anterior se ejecutan de modo secuencial, es decir, una sentencia después de la otra. Es un algoritmo útil para resolver problemas sencillos, pues ejecutan instrucciones de forma consecutiva; comienza con la primera sentencia y prosiguen hasta finalizar el proceso, cada una de ellas se ejecuta sólo una vez. 2. Las estructuras de control selectivo, comúnmente llamadas toma de decisiones, porque permiten evaluar una condición para determinar qué instrucción debe ejecutarse. 3. Las estructuras repetitivas o iterativas son las que permiten repetir una o varias instrucciones un determinado número de veces. En las siguientes páginas conocerás las características de cada una de ellas y tendrás oportunidad de diseñar algoritmos y diagramas de flujo, usándolas para resolver problemas que las requieran.
Figura 1.15. Toma de decisiones.
Glosario Sentencia/instrucción. Son los elementos básicos en los que se divide el código en un lenguaje de programación. Programa. Es un conjunto de sentencias o instrucciones que se ejecutan para realizar una cierta tarea. Condición. Expresión lógica que devuelve verdadero o falso. Variables Booleanas. Tipo de variables que alojan datos lógicos con sólo dos resultados: verdadero o falso.
Estructuras de control selectivas Un grupo de estructuras que permiten evaluar condiciones lógicas son las estructuras de control selectivas, intervienen en el flujo de ejecución de las instrucciones mediante el cumplimiento o no de una condición. Se les conoce también como estructuras condicionales, alternativas o de decisiones. En tu vida cotidiana aplicas constantemente este tipo de algoritmos, tu comportamiento y realización de determinadas acciones precisan de una toma de decisión. Las estructuras selectivas a su vez están clasificadas en cuatro tipos: simples, dobles, anidadas y múltiples. Las primeras tres basan su toma de decisión en una condición o prueba lógica evaluándola para realizar procesos dependiendo del resultado. Las condiciones que emplean usan operadores relacionales y lógicos, lo que hace común la definición de variables booleanas. A diferencia, las estructuras selectivas múltiple de caso basan su funcionamiento en la elección entre distintas opciones y cada una deriva sus propios procesos.
Introducción a la programación
27
Relaciónalo con… El semestre anterior utilizaste en MS Excel la función SI, pues su comportamiento es como una estructura de control selectiva con operadores relacionales y lógicos.
1.2.1. Selectivas simples Las estructuras de control selectivas simples se utilizan para evaluar una condición, obteniendo como resultado un valor verdadero o falso. Cuando la condición se cumpla éste será verdadero y ejecutará la o las instrucciones definidas, por el contrario, si la condición no se cumple su resultado será falso, no ejecutará ninguna instrucción y terminará el proceso. La manera de definirlas en un algoritmo es con el siguiente formato: Si(condición(es)) entonces Instrucción(es) Fin del si Estas estructuras son utilizadas cuando en el desarrollo de la solución de un problema se debe condicionar la decisión para establecer un proceso o señalar el único camino a seguir. De seguro en muchas situaciones cotidianas has tenido que condicionar o te han condicionado, por ejemplo, cuando tus padres condicionaron las horas de juego si terminabas tus tareas escolares, la sentencia para este caso condicionante sería: Si(tarea==true) entonces Jugar Fin del si Observa que la variable condicionante es de tipo booleana, que de cumplirse se ejecuta la acción, no hay un de lo contrario, la condición es si haces la tarea entonces juegas. La toma de decisión de una estructura selectiva simple se expresa con la forma de un rombo. Su representación gráfica es:
Condición(es)
Sí Instrucción(es)
Figura 1.16. Estructura de control simple.
28
Introducción a la programación
Analiza el siguiente problema con la descripción de cada fase de resolución de problemas con los que te has familiarizado desde la secuencia anterior. Toma en cuenta tu calificación en un examen cualquiera, determina si has “Aprobado”, esto será si la calificación mínima es de 7. Ejemplo: Problema
Análisis
Entrada ¿Cuál fue la calificación de tu examen? 8 ¿Cuál fue la calificación de tu examen? 6
Salida Con una calificación de 8 has Aprobado.
Identificación de la solución: Para solucionar este problema se necesita conocer la calificación obtenida para poder compararla con la calificación mínima aprobatoria según el problema. Variable: calif Reglas: Sí calif >= 7: Aprobado
Algoritmo
Inicio 1. Definir e inicializar variables (calif⟵0) 2. Preguntar: “¿Cuál fue la calificación de tu examen?” 3. Capturar valor a la variable calif 4. Si (calif>=7) entonces 4.0.1. Expresar: “Con una calificación de ” + calif + “has Aprobado” 5. Fin del si Fin Inicio
calif < -- 0
Diagrama de Flujo
“¿Cuál fue la calificación de tu examen?
A
calif > = 7
Sí
“Con una calificación de ” + calif + ” estás Aprobado”
calif Fin A
Introducción a la programación
29
1.2.2 Selectivas dobles Las estructuras de control selectivas dobles permiten en el punto de la toma de decisión la bifurcación por dos caminos diferentes, el flujo del proceso es con base en la evaluación de una o varias condiciones. A diferencia de las estructuras simples, las condicionantes lógicas de las selectivas admiten con una misma evaluación realizar dos distintos procesos, en las instrucciones se determina qué hacer en caso de un resultado verdadero y qué operación ejecutar si la condición no se cumple. Este tipo de estructuras son básicas y muy utilizadas en todo lenguaje de programación. La sintaxis de esta estructura es: Si(condición(es)) entonces Instrucción(es) De lo contrario Instrucción(es) Fin del si Relaciónalo con… En los diagramas de flujo de largos procesos en ocasiones se requiere escribirlos en dos o más partes dentro de una misma página o en otra diferente, para ello son útiles los conectores. Es conveniente usar letras del alfabeto en cada conector para evitar confusión de secuencia del flujo.
Al igual que la estructura anterior las selectivas dobles se aplican continuamente en tu vida diaria, muchas veces tienes que decidir entre realizar una u otra tarea dependiendo de una condición. Piensa en el mismo ejemplo del permiso para jugar que tienes cuando haces la tarea, usando una condición doble las instrucciones se describen así: Si(tarea==true) entonces Jugar De lo contrario Hacer la tarea Fin del si
Si haces tu tarea entonces puedes jugar si no, debes hacerla. El diagrama de flujo en lenguaje algorítmico se representa de esta forma:
Condición(es) Sí
No
Instrucción(es)
Instrucción(es)
Figura 1.17. Estructura de control doble.
30
Introducción a la programación
Siguiendo con el ejemplo de aprobado, observa la diferencia en el algoritmo y diagrama con una estructura selectiva doble. A través de una calificación de un examen tuyo cualquiera, determinar si has “Aprobado”, si la calificación fue mínima de 7, y “Reprobado” en caso contrario. Ejemplo: Problema
Análisis
Entrada ¿Cuál fue la calificación de tu examen? 8 ¿Cuál fue la calificación de tu examen? 6
Salida Con una calificación de 8 has Aprobado. Con una calificación de 6 has Reprobado.
Identificación de la solución: Para solucionar este problema se necesita conocer la calificación obtenida y compararla con la calificación mínima aprobatoria, en caso de no ser igual indicar que es reprobatoria. Variable: calif Reglas: Sí calif >= 7: Aprobado; de lo contrario: Reprobado
Algoritmo
Inicio 1. Definir e inicializar variables (calif⟵0) 2. Preguntar: “¿Cuál fue la calificación de tu examen?” 3. Capturar valor a la variable calif 4. Si (calif>=7) entonces 4.1. Expresar: “Con una calificación de ” + calif + “has Aprobado” 5. De lo contrario 5.1. Expresar: “Con una calificación de ” + calif + “has Reprobado” 6. Fin del si Fin A
Inicio
calif < -- 0
Diagrama de Flujo
“¿Cuál fue la calificación de tu examen?”
calif > = 7 Sí
No
“Con una calificación de” + calif + “has Aprobado”
“Con una calificación de” + calif + “has Aprobado”
calif
A
Fin
Introducción a la programación
31
1.2.2.1 Selectivas dobles anidadas En ámbitos de algoritmia y programación se cuenta con otro tipo de estructuras de control selectiva doble útiles para el desarrollo de soluciones donde después de tomar una decisión y seguir su camino correspondiente se hace necesario tomar una decisión más, estas estructuras son conocidas como anidadas. Su función se da cuando dentro de la secuencia de una condición hay otra condición. En un Si – de lo contrario se encuentra otro Si – de lo contrario. Cada condición se evalúa en el orden en el que va apareciendo, si la primera condición es verdadera se ejecutan sus instrucciones y no se revisan las otras condicionantes, en caso contrario se evalúa la siguiente condición y de cumplirse se realiza su instrucción, así continúa hasta que una de las condiciones sea falsa. Se pueden anidar el número de condiciones que se requieran para dar solución al problema. La sintaxis algorítmica y la representación en diagrama de estas estructuras son: Si (condición(es)) entonces Instrucción(es) De lo contrario Si (condición(es)) entonces Instrucción(es) De lo contrario
Sí
Condición(es)
No
Instrucción(es) Sí
Condición(es)
No
Instrucción(es) Instrucción(es)
Fin del Si
Instrucción(es)
Figura 1.18. Estructura de control doble.
En la vida real hoy son más comunes los casos con estas condiciones que las anteriores, esto sucede cuando necesitas realizar actividades que dependen de una lista de condiciones, por ejemplo: la hora de salida de tu casa a la escuela puede condicionar el medio de transporte que usarás para llegar a tiempo. Si sales entre 6:00 y 6:15 viajas en autobús, si sales entre 6:16 y 6:20 vas en taxi, pero si es más tarde tendrás que usar Uber. Observa la estructura de control para esta situación: Si (hora >= 6:00 AND hora <= 6:15) entonces Tomar autobús De lo contrario Si (hora >= 6:16 AND hora <= 6:20) entonces Tomar taxi De lo contrario Tomar Uber Fin del Si Observa en el siguiente ejemplo la aplicación de una estructura selectiva doble.
32
Introducción a la programación
Problema
Un restaurant de tu ciudad decide ampliar sus ofertas de acuerdo a una escala de consumo, con relación a ella se determinará el descuento que se le hará a los clientes, y se calculará el impuesto (IVA: 16%) y el monto a pagar: Escala de descuento con base al consumo • 0 < consumo <=100, aplicar un 10% • 100 < consumo <=200, aplicar un 20% • 200 < consumo <= a, aplicar un 30% Entrada ¿Cuánto fue el consumo del cliente? 189 ¿Cuánto fue el consumo del cliente? 256
Salida El total a pagar son $175.39 El total a pagar son $207.87
Identificación de la solución: para calcular el descuento al importe a pagar, necesitas saber el importe de éste y con base en las reglas de descuento y aplicando un 16% más, calcular el total pagar. Análisis
Algoritmo
Variable: consumo, total Reglas: • Si consumo > 0 AND consumo <=100: descuento 10% • Si consumo >100 AND consumo <=200: descuento 20% • Si consumo >200: descuento 30% Inicio 1. Definir e inicializar variables (consumo⟵0, total⟵0) 2. Preguntar: “¿Cuánto fue el consumo del cliente? ” 3. Capturar valor a la variable consumo 4. Si (consumo<=100) entonces 4.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.10))*1.16) 5. De lo contrario Si (consumo<=200) 5.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.20))*1.16) 6. De lo contrario 6.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.30))*1.16) 7. Fin del si 8. Expresar: “El total a pagar son $” + total + “ MXN.” Fin A Inicio
consumo < -- 0
Diagrama de Flujo
“¿Cuánto fue el consumo del cliente?
Sí
Consumo <=100
No
total <— (consumo - (consumo * .10))*1.16
Sí
Consumo <=100
total <— (consumo - (consumo * .10))*1.16
No
total <— (consumo - (consumo * .10))*1.16
consumo
A
“El total a pagar son $” + total
Fin
Introducción a la programación
33
A practicar Es momento de poner en práctica el uso de las estructuras de control selectivas. Con la guía de tu profesor diseña un algoritmo y su diagrama de flujo para resolver el siguiente problema: Un egresado de bachillerato está por ingresar a estudiar una ingeniería en una universidad de prestigio. La universidad tiene un criterio propio de asignación de las carreras a los aspirantes a través del promedio de ingreso, que resulta de promediar el resultado de examen de admisión y su promedio de bachillerato. Ayuda a la universidad a realizar un algoritmo que defina de forma eficaz y eficiente a qué carrera asignar a cada aspirante, basado en los siguientes criterios: • • • • •
Sistemas 90<promedio de admisión<=100 Físico - Matemático 80<promedio de admisión<=90 Electrónica 70<promedio de admisión<=80 Industrial 60<promedio de admisión<=70 Los demás no serán admitidos.
Ten en cuenta que es necesario conocer el nombre del aspirante. Ejemplo: Entrada
¿Cuál es nombre del aspirante? Juan Pérez López ¿Cuál es el resultado del examen de admisión? 95 ¿Cuál es el promedio de bachillerato? 96
Salida El aspirante Juan Pérez López con un promedio de admisión de 95.5 es aceptado en la carrera de Sistemas
1. Utiliza la tabla de las fases de resolución de problemas que has venido manejando desde la secuencia anterior. 2. Llena cada espacio con la información necesaria para resolver el problema. 3. Básate en el ejemplo de entrada y salida de resultados para diseñar el algoritmo, en los ejemplos de esta sección y las especificaciones que indique tu profesor. 4. Diseña el diagrama de flujo en la aplicación de tu preferencia. Exporta e inserta dentro del documento en el apartado correspondiente. 5. Guarda la tabla con el nombre que te indiquen y envía a tu profesor para recibir realimentación.
Insignia Para obtener esta insignia y conseguir puntos extra, realiza lo siguiente: 1. Descarga el archivo de Word desde el hipervínculo http://bit.ly/2o20qLP correspondiente al Enlace1.2_R1 o accede con el código QR. 2. Resuelve el problema planteado en el documento y en el mismo desarrolla las fases de resolución de problemas. 3. Crea el diagrama de flujo adecuado que atienda todos los aspectos del algoritmo hecho. 4. Envía el documento a tu profesor para que evalúe tu participación extra.
34
Introducción a la programación
1.2.3. Estructuras múltiples o de caso Dentro de la categoría de estructuras de control selectivo, también se encuentran las selectivas de caso, que como ya se mencionó anteriormente son estructuras que permiten elegir entre dos o más opciones, es decir, asemejan a un menú desplegable donde no hay condiciones sino opciones.
Relaciónalo con… La estructura selectiva múltiple permite comparar un valor, pero cuando se requiere manejar rangos se puede usar una estructura selectiva doble anidada con los operadores >= y <=.
Evaluar las alternativas con estructuras de caso tiene la ventaja de legibilidad y fácil interpretación del proceso de solución, a pesar de ello, en ocasiones se utilizan estructuras anidadas, esto no es recomendable pues hace confuso y complicado el análisis de la solución. La sintaxis En caso de es muy simple: En caso de (op) caso op1: Instrucción(es) Interrumpir caso op2: Instrucción(es) Interrumpir caso defecto: Instrucción(es) Fin del caso
La expresión En caso de lleva implícito el operador “==” para comparar que la expresión sea igual a cualquiera de las opciones, por lo que es un error tratar de compararlas con cualquier otro operador. Por otro lado, la instrucción Interrumpir debe de colocarse al final de las instrucciones de cada opción para salir del proceso, de no colocarla el algoritmo recorrería todas las instrucciones aun cuando la evaluación haya sido verdadera desde la primera opción. Sin embargo, en el caso defecto no es necesario por ser la última opción de la estructura y se ejecutará cuando la expresión no coincida con ninguna otra opción. La aplicación de una situación frecuente con este tipo de estructura se da cuando tienes disponibilidad de varias opciones a elegir, como elegir a donde salir el sábado por la noche: ir al cine, a cenar, al antro o en la elección de qué ropa vestir. Observa el siguiente ejemplo de elección de color a usar: En caso de (color) caso 1: Usar playera color negro Interrumpir caso 2: Usar playera color rojo Interrumpir caso 3: Usar playera color blanco Interrumpir Caso defecto: Usar playera color amarillo Fin del caso
Relaciónalo con… Los datos de las expresiones a evaluar sólo pueden ser de tipo: entero o caracter.
Introducción a la programación
35
El diagrama de flujo de una estructura de control múltiple se representa de la siguiente manera:
op
op1
defecto
op2
Instrucción(es)
Interrumpir
op3
Instrucción(es)
Instrucción(es)
Interrumpir
Interrumpir
Instrucción(es)
Figura 1.19. Estructura de control selectiva múltiple o de caso.
Con relación a un número entero expresar el nombre del día de la semana al que pertenezca. Ejemplo: Problema
Entrada Introduce un número entero: 3 Introduce un número entero: 8 Introduce un número entero: 5
Análisis
Salida El día 3 de la semana es el miércoles. Opción válida El día 3 de la semana es el viernes.
Identificación de la solución: Para expresar el nombre del día de la semana es necesaria una lista de opciones para los números del 1 al 7 y una opción defecto para cualquier otra opción que no sea válida. Variable: dia Reglas: 1 – lunes; 2 – martes; 3 – miércoles; 4 – jueves; 5 – viernes; 6 – sábado; 7 – domingo
36
Introducción a la programación
Algoritmo
Inicio 1. Definir e inicializar variables (dia⟵0) 2. Preguntar: “Introduce un numero entero:” 3. Capturar valor a la variable dia 4. En caso de (dia) 4.1. caso 1: 4.1.1. Expresar (“El día ” + dia + “ de la semana es lunes.”) 4.1.2. Interrumpir 4.2. caso 2: 4.2.1. Expresar (“El día ” + dia + “ de la semana es martes.”) 4.2.2. Interrumpir 4.3. caso 3: 4.3.1. Expresar (“El día ” + dia + “ de la semana es miércoles.”) 4.3.2. Interrumpir 4.4. caso 4: 4.4.1. Expresar (“El día ” + dia + “ de la semana es jueves.”) 4.4.2. Interrumpir 4.5. caso 6: 4.5.1. Expresar (“El día ” + dia + “ de la semana es sábado.”) 4.5.2. Interrumpir 4.6. caso 7: 4.6.1. Expresar (“El día ” + dia + “ de la semana es domingo.”) 4.6.2. Interrumpir 4.7. caso defecto: 4.7.1. Expresar (“Opción no válida”) 5. Fin del caso Fin A
Inicio 1 día < -- 0
“Introduce un número entero”
día
Diagrama de Flujo
“El día “ + día + ” de la semana es Lunes
Interrumpir
7 2
día 6
3
5 4
“El día “ + día + ” de la semana es Martes
Interrumpir
“El día “ + día + ” de la semana es Sábado.”
“El día “ + día + ” de la semana es Miércoles
“El día “ + día + ” de la semana es Viernes
“El día “ + día + ” de la semana es Domingo.”
defecto
Interrumpir
Interrumpir
“Opción no válida.”
A Interrumpir
Interrumpir “El día “ + día + ” de la semana es Jueves
Interrumpir
Fin
Introducción a la programación
37
Encamina tus habilidades Es tiempo de demostrar tus aprendizajes acerca del uso de estructuras de control selectivas en lenguaje algorítmico, para ello realiza lo que a continuación se te solicita: 1. Ingresa al Enlace1.2_R2 desde este link http://bit.ly/2oHxFo5 o bien desde el código QR de esta página y descarga el archivo de Word que contiene un formato de cuadro relacional. 2. De manera individual completa el cuadro relacional tomando en cuenta las características de cada tipo de estructura de control selectiva. 3. Explica con tus palabras el uso que tiene cada estructura en la resolución de problemas para las que fueron diseñadas. 4. Guarda el archivo y expórtalo a formato pdf con el nombre que tu profesor indique y envíalo por el medio que acuerden para recibir evaluación.
Como pudiste darte cuenta el uso de estructuras de control en este caso las selectivas, son muy útiles para la toma de decisiones, lo cual ayuda en gran medida a realizar algoritmos de distinta índole de una forma certera. Lo más importante del uso de estas estructuras radica en la elección de la condición a evaluar ya que si ésta no está bien formulada, ocasiona que la decisión sea tomada de manera errónea provocando que los resultados o el producto obtenido después de realizar el algoritmo no sea el deseado.
38
Introducción a la programación
Subproductos Subproducto Procedimental Evidencia el logro de tus competencias y el dominio del diseño de las estructuras de control selectivo elaborando el siguiente subproducto procedimental: 1. Reúnete con otro compañero y de manera colaborativa elaboren una presentación como herramienta de apoyo en la explicación de las estructuras de control selectivo. 2. Describan de manera puntual y clara los procedimientos que crean convenientes para el desarrollo de las estructuras. 3. Incluyan ejemplos que ayuden en la explicación. 4. Inserten elementos multimedia, efectos de animación y transición necesarios para que su presentación sea creativa e innovadora. Recuerden no hacer uso excesivo de ellos. 5. Guarden la presentación en formato ppsx con el nombre que indique su profesor y envíen a su profesor para recibir evaluación y comentarios de mejora en el caso de requerirse.
Introducción a la programación
39
1.3. Estructuras de control repetitivas A desarrollar Al término de esta secuencia identificarás las características de las estructuras de control repetitivas y analizarás la eficiencia de cada una de ellas. Asimismo, estructurarás secuencias usando los ciclos repetitivos para dar solución a problemas de manera óptima. Crearás algoritmos siguiendo una secuencia lógica de acción cíclica siguiendo los procedimientos establecidos. Como subproducto procedimental diseñarás un algoritmo para contar el número de dígitos en una cifra. Las actividades que realizarás en esta secuencia te servirán para: 4.2 Aplicar diversas estrategias comunicativas según quienes sean sus interlocutores, el contexto en el que se encuentra, y los objetivos que persigue. 5.2 Ordenar información de acuerdo a categorías, jerarquías y relaciones. 5.7 Proponer soluciones a problemas del orden cotidiano, científico, tecnológico y filosófico. 7.3 Articular saberes de diversos campos y establecer relaciones entre estos y la vida cotidiana. 8.1 Plantear problemas y ofrecer alternativas de solución al desarrollar proyectos en equipos de trabajo, y definir un curso de acción con pasos específicos. 8.3 Asumir una actitud constructiva al intervenir en equipos de trabajo, congruente con los conocimientos y habilidades que posee.
De aquí en adelante A lo largo de la unidad has diseñado algoritmos para diferentes situaciones, que han requerido de condicionantes y opciones a evaluar para ejecutar instrucciones muy específicas. Continuando con el lenguaje algorítmico piensa en tu situación cotidiana, qué acciones completan tu rutina diaria, qué labores se requieren para modificar tu actuar en determinados días. Plantea en lenguaje algorítmico en cinco pasos tu rutina diaria:
40
Introducción a la programación
Las tareas repetitivas son algo que los humanos encontramos difíciles y tediosas de realizar, a diferencia de las computadoras que aumentan considerablemente su potencia por su capacidad para ejecutar una tarea muchas veces con gran velocidad, precisión y fiabilidad. El lenguaje algorítmico también cuenta con estructuras que permiten iterar un bloque de instrucciones tantas veces se cumpla una condición, en el momento en que la condición tenga una respuesta negativa la repetición se detiene. Estas secuencias son conocidas como estructuras de control repetitivas, donde al conjunto de instrucciones que se ejecuta repetidamente se llama ciclo o bucle. Todo ciclo debe terminar su ejecución luego de un número finito de veces, por lo que en cada repetición se precisa evaluar las condiciones que deciden si se debe continuar ejecutando el ciclo o si debe detenerse. Estas estructuras están presentes en las aplicaciones que usas en tus dispositivos electrónicos, básicamente permiten que se mantengan en ejecución mientras tú no elijas salir de ellas, también hacen que realicen ciertas funciones por ejemplo búsquedas de información.
Ciclo Figura 1.20. Estructuras repetitivas.
En las secuencias repetitivas intervienen algunos términos que pueden ser novedosos para tu léxico algorítmico, por lo que es recomendable los identifiques antes de estructurar secuencias cíclicas. La variable de control o contador permite establecer, registrar y comprobar el número de repeticiones que efectúan estas estructuras principalmente el Para. Contador es una variable entera que se incrementa o decrementa con un valor constante, y las variables de cualquier tipo que almacenen valores variables se llaman acumulador. Por costumbre, la variable de control o contador se nombra con una sola letra, por ejemplo: i, j, k, l, etc. Su inicialización consiste en definir a partir de donde inicia la contabilización, normalmente se inicia en cero, lo que indica que no se ha ejecutado ninguna repetición del bloque de instrucciones. El incremento o decremento de la variable de control lo debe indicar el diseñador del algoritmo, puede definirse de uno en uno, de dos en dos, o de lo que la condición requiera para resolver.
i j
i+1 j–1
Contador
i j
i+x j–y
Acumulador
Por otra parte, una condición es la situación o circunstancia indispensable que mientras se cumpla se repite la ejecución del bloque. Usualmente la condición es una comparación, de manera que si se cumple la comparación el resultado es verdadero, de lo contrario es falso. La definición de comparaciones sigue las mismas reglas que la instrucción Sí- entonces. Dentro de este tipo de estructuras hay tres variaciones: estructuras Mientras (while), Haz mientras (do while) y estructuras Para (for). Aunque desde el punto de vista de eficiencia y utilidad no hay diferencia entre sus instrucciones, el uso de una u otra dependerá se tu preferencia.
Introducción a la programación
41
1.3.1. Estructura Mientras
Relaciónalo con… En lenguaje matemático el símbolo “!” es para denotar el factorial de un número, pero en programación el mismo símbolo es usado para hacer comparaciones con valores que requieren ser diferentes. Por ejemplo: if a!=b then; sí a es diferente de b entonces. En la aplicación de MS Excel también expresa factorial.
La estructura algorítmica mientras en inglés while, es utilizada para ejecutar repetidamente un bloque de instrucciones mientras se cumpla una condición, es decir, hasta que la condición evaluada sea falsa se detendrá la ejecución de las instrucciones. En el funcionamiento de la estructura mientras, primero se evalúa la(s) condición(es) y si es/son verdadera(s) se ejecuta el bloque de instrucciones del ciclo; antes de cada repetición se evalúa(n) y si el resultado es falso se detiene la ejecución. Su sintaxis es: Mientras(condición(es)) haz
Instrucción(es) 1
Instrucción(es) n
Fin mientras
También es posible crear estructuras mientras anidadas, colocando una o más estructuras repetitivas dentro; también puede contener estructuras de cualquier otro tipo. Un ejemplo de aplicación de este tipo de repetición es cuando ingieres alimentos, continúas comiendo mientras no te sientas satisfecho, en el momento que tu cerebro reciba la señal de satisfacción por parte del estómago sentirás la sensación que te hará detener y no comer más. Mientras(satisfecho!=true) haz Comer Fin mientras El diagrama de flujo para representar una estructura repetitiva mientras es:
Condición(es)
Sí Instrucción(es) 1 Instrucción(es) n Figura 1.21. Estructura Mientras.
42
Introducción a la programación
No
Analiza el siguiente problema que requiere instrucción repetitiva mientras con la descripción de cada fase de resolución de problemas con los que te has familiarizado desde la secuencia anterior. Capturar consecutivamente números enteros hasta que se introduzca el número cero, para que al final se muestre como resultado la suma de todos los números ingresados. Ejemplo: Problema
Análisis
Algoritmo
Entrada Introduce un número a sumar: 4 Introduce un número a sumar: 6 Introduce un número a sumar: 0
Salida El total de la suma es 10
Identificación de la solución: Acumular la suma de los números enteros, hasta que se introduzca el número cero. Variable: suma, x , band Reglas: si band==true: suma⟵suma + x ; si x == 0 : band⟵false Inicio 1. Definir e inicializar variables (suma⟵0, x⟵0, band⟵true) 2. Mientras (band==true) haz 2.1. Preguntar “Introduce un número a sumar: ” 2.2. Capturar x 2.3. Acumular x en suma (suma ⟵ suma + x) 2.4. Si (x==0) entonces 2.4.1. Asignar el valor de false a band (band⟵false) 2.5. Fin del si 3. Fin Mientras 4. Expresar: “El total de la suma es ” + suma Fin Inicio suma <— 0 x <— 0 band <— true
band == true
No
Sí
Diagrama de Flujo
“Introduce un número a sumar”
x
“El resultado de la suma es ” + suma
Fin
suma <-- suma + x
x == 0 Sí band <-- false
Introducción a la programación
43
1.3.2. Estructura Haz mientras La estructura haz mientras en inglés do while es útil en los mismos casos que la estructura mientras, con la diferencia de que ésta se ejecutará al menos una vez antes de evaluar la condición. La iteración se efectúa mientras se cumpla una condición al igual que con el while, la diferencia del do while es colocar al principio del bloque la instrucción Haz y la instrucción Mientras al final. Esto permitirá que las instrucciones sean ejecutadas al menos una vez antes de evaluar la(s) condición(es) que debe(n) cumplirse. Su sintaxis algorítmica es la siguiente: Haz
Instrucción(es) 1
Instrucción(es) n
Mientras(condición(es)) ¿Sabías que…? En ocasiones es necesario utilizar variables tipo bandera en las estructuras repetitivas para ayudar a detener o seguir ejecutando el ciclo o bucle.
El objetivo particular del do while en las aplicaciones que usas en tus dispositivos electrónicos es asegurar su ejecución cuando hagas doble clic o presiones su ícono en la pantalla táctil y que estén disponibles hasta que indiques que deseas salir, significa que la iteración del ciclo mantendrá a la aplicación en estado activo hasta que ejecutes el cierre. Haz
Ejecutar MS Word Presionar comandos
Mientras (comando!=salir) El diagrama de flujo para representar una estructura repetitiva Haz mientras es:
Instrucción(es) 1 Instrucción(es) n
Sí
Figura 1.22. Estructura Haz Mientras.
44
Introducción a la programación
Condición(es)
No
Analiza el siguiente ejemplo con estructura haz mientras con su respectiva descripción para cada fase de resolución de problemas.
Problema
Análisis
Algoritmo
Calcular el promedio de varios números enteros positivos diferentes del número cero. En el momento que ingrese un cero a la lista se debe calcular el promedio de todos los números ingresados. Ejemplo: Entrada Introduce un número a sumar: 4 Introduce un número a sumar: 6 Introduce un número a sumar: 0
Salida El promedio de los 2 datos es 5
Identificación de la solución: Se pedirá una lista de valores numéricos positivos y mientras el valor de entrada no sea cero se acumulará su suma y al final se dividirá entre la cantidad de números ingresados diferentes de cero. Variables: n, datos, promedio Reglas: n mientras n != 0 : promedio⟵promedio + n Inicio 1. Definir e inicializar variables (datos⟵0, n⟵0, promedio⟵0) 2. Haz 2.1. Preguntar “Introduce un numero entero: ” 2.2. Capturar valor de la variable n 2.3. Si (n != 0) entonces 2.3.1. Acumular n en promedio (promedio⟵promedio + n) 2.3.2. Incrementar en 1 la variable datos (datos⟵datos +1) 2.4. Fin del Si 3. Mientras (n != 0) 4. Asignar a promedio el cálculo de (promedio⟵promedio/datos) 5. Expresar: “El promedio de los ” + datos + “ datos es ” + promedio Fin Inicio datos <-- 0 n <-- 0 promedio <-- 0
“Introduce un número entero” Sí n n!= 0
Diagrama de Flujo
Sí
Sí promedio <-- promedio + n datos <-- datos + 1
n!= 0
No promedio <-- promedio + n “El promedio de los ” + datos + “ es ” + promedio Fin
Introducción a la programación
45
1.3.3. Estructura Para La instrucción Para conocida por su significado en inglés como For, al igual que las otras estructuras iterantes ejecuta un bloque de instrucciones un número determinado de veces mientras se cumple una condición. Para su funcionamiento requiere de tres elementos: inicialización de una variable de control de repeticiones, la(s) condición(es) y el incremento del contenido de la variable contador. Recuerda que la variable de control permite establecer, registrar y comprobar el número de repeticiones que efectúa la instrucción for. A diferencia de las mientras y haz mientras, el para es utilizado cuando se tiene conocimiento del número de veces que se ejecutarán las instrucciones. La instrucción for en términos sencillos, contabiliza cuántas veces se repite el bloque de instrucciones. Su sintaxis algorítmica es: Para(inicio;condición(es);comportamiento)
Instrucción(es) 1
Instrucción(es) n
Fin para
Un ejemplo de la estructura para es el caminar un bloque de cuadras para llegar a la casa de tu mejor amigo, primero llegas a la esquina y giras a la izquierda para caminar tres cuadras más hacia adelante, revisa a continuación su algoritmo: Si(localizacion==esquina) entonces Para(cuadras=0;cuadras<=3;cuadras⟵cuadras+1)
Caminar cuadra
Fin Para
Fin del Si El diagrama de flujo para representar una estructura repetitiva Haz mientras es:
Inicio; condición(es); comportamiento Sí Instrucción(es) 1 Instrucción(es) n
Figura 1.23. Estructura Para.
46
Introducción a la programación
No
Observa un ejemplo desarrollado con estructura para que incluye la descripción de cada fase de resolución de problemas. Calcular el promedio de varios números enteros positivos diferentes del número cero. En el momento que ingrese un cero a la lista se debe calcular el promedio de todos los números ingresados. Problema
Análisis
Algoritmo
Ejemplo: Entrada Introduce un número: 4 Introduce un número: 7
Salida El 4 ! = 24 El 7 ! = 5040
Identificación de la solución: El factorial de un número se representa con el símbolo “!” y se calcula con la multiplicación acumulativa de los números comprendidos desde el número dado hasta el número uno. Variable: n, fact, i Reglas: Para i empezando en n, mientras i > 0 : fact⟵fact*i Inicio 1. Definir e inicializar variables (fact⟵1, n⟵0, i⟵0) 2. Preguntar “Introduce un número: ” 3. Capturar valor de la variable n 4. Para (i⟵n; i>0; i⟵i - 1) 4.1. Acumular la multiplicación en fact (fact⟵fact * i) 5. Fin Para 6. Expresar: “El ” + n + “! = ” + fact Fin Inicio fact <— 0 n <— 0 i <— 0 “Introduce un número:”
Diagrama de Flujo
n
n <— n; i > 0; i <— i – 1
Sí fact <-- fact * !
No
“El” + n + “!=” + fact
Fin
Introducción a la programación
47
Encamina tus habilidades Reafirma tu aprendizaje acerca de las estructuras de control repetitivas elaborando una infografía con las siguientes características: 1. Diséñala de manera individual y con la herramienta de tu preferencia o la que se sugiere en el hipervínculo: http://bit.ly/35dSEjp. También puedes acceder a él con el código QR del lado izquierdo. 2. Considera las tres estructuras cíclicas abordadas en la secuencia, y los elementos que consideres son necesarios para explicarlas. 3. Utiliza colores, textos y formas que den aspecto creativo e interesante para estudiantes de tu edad. 4. Guarda en formato jpg y envía a tu profesor por el medio que solicite para evaluar tu aprendizaje. Recomendaciones en el diseño de estructuras repetitivas • Evitar repeticiones infinitas. Estas suceden cuando un bloque de instrucciones se repite de manera eterna, básicamente es un error de lógica al no estar definida correctamente la condición. • Procurar definir una variable de control por instrucción particularmente si se emplea el For. • Si requieres efectuar operaciones aritméticas con la variable de control asegúrate que la instrucción a repetir no se vea afectada por las operaciones a realizar. • Cuando sumes o restes el contenido de la variable de control asegúrate que la expresión matemática esté correcta.
Insignia Incrementa tu habilidad en el diseño de secuencias lógicas y obtén puntos extra resolviendo lo siguiente: 1. Diseña un algoritmo para calcular el número de electrones por nivel de energía de un elemento químico de acuerdo al Modelo de Bohr. 2. Sabiendo que la fórmula es 2n2 resuelve siguiendo las cuatro fases de resolución de problemas. 3. Envía el documento generado a tu profesor para que registre tu participación.
48
Introducción a la programación
Subproductos Subproducto Procedimental De manera individual y con base a lo que aprendiste en este tema de la unidad 2, realiza el procedimiento conveniente para crear un algoritmo con las características que a continuación se indican: 1. Utiliza el formato de las fases para resolución de problemas que has empleado a lo largo de la unidad. 2. Describe a detalle cada una de las fases para calcular la cantidad de dígitos que conforman una cifra dada. Ejemplo: Entrada Introduce un número: 4567 Introduce un número: 123456
Salida El número 4567 tiene 4 dígitos El número 123456 tiene 6 dígitos
Analiza la información con la que cuentas para resolver. a. Define las variables y reglas que intervienen en el cálculo. b. Diseña el algoritmo con la secuencia lógica apropiada. c. Diseña el diagrama de flujo que represente el algoritmo. d. Verifica el resultado con una prueba de escritorio.
3. Guarda el formato y envía a tu profesor por el medio que acuerden para recibir evaluación. Subproducto Actitudinal – Valoral Redacta un escrito de tu reflexión acerca del desarrollo e implementación de secuencias lógicas con estructuras de control, guíate en las siguientes preguntas: • ¿Crees que los problemas escolares que se te presentan pueden resolverse de mejor manera aplicando estructuras de control? ¿Por qué? • ¿Visualizas de manera diferente los problemas de matemáticas, química y física? ¿Qué los diferencia? Subproducto conceptual Relaciona cada interrogante con su respuesta correcta. 1. Tipo de datos que pueden tomar sólo dos valores: verdadero y falso. 2. Son combinaciones de constantes, variables y operadores que permiten manipular datos para obtener nuevos datos. 3. Permite establecer, registrar y comprobar el número de repeticiones que efectúa la instrucción. 4. Estructura de control que interviene en el flujo de ejecución de las instrucciones mediante el cumplimiento o no de una condición.
( ) Expresiones ( ) Contador ( ) Repetitivas ( ) Selectivas ( ) Booleanos
5. Estructuras de control que itera un bloque de instrucciones tantas veces se cumpla una condición.
Introducción a la programación
49
Producto integrador de unidad Es momento de evidenciar tus aprendizajes y el desarrollo de tus competencias. Para ello, como producto integrador de unidad diseña un algoritmo y su respectivo diagrama de flujo para el problema que se plantea a continuación: 1. Reúnete con un compañero para resolver en binas el problema. 2. Hagan uso del formato de las fases de resolución de problemas. 3. Determinen cuántos dígitos pares, impares y ceros tiene un número entero. Ejemplo: Entrada Introduce un número: 45670
Salida El número 45670 tiene 2 dígito(s) par(es), 2 impar(es) y 1 cero(s). El número 123456 tiene 3 digito(s) par(es), 3 impar(es) y 0 cero(s).
Introduce un número: 123456
4. Redacten una conclusión de los procedimientos que siguieron para resolver cada caso. 5. Guarden el formato y envíen a su profesor por el medio que les solicite para recibir evaluación.
Autoevaluación Como parte del proceso de autoevaluación contesta la siguiente escala de valores, con la que identificarás tu nivel de dominio en los aspectos relacionados a lo que aprendiste en esta unidad. Aspectos Identifico todos los elementos de la situación a resolver. Diseño algoritmos definiendo correctamente los tipos de variables. Utilizo las estructuras de control más apropiadas para resolver el problema. Defino las condiciones respetando las reglas del lenguaje algorítmico. Utilizo los operadores apropiados a la condición que ejecutará la instrucción. Represento con las formas correctas cada proceso del algoritmo. Empleo las tres fases para resolver los problemas planteados. Verifico con diferentes valores los resultados del algoritmo.
50
Introducción a la programación
Nivel de dominio 1
2
3
4
5
Comentarios
Coevaluación Evalúa el desempeño general de tu equipo de trabajo en este bloque por medio de la Guía de evaluación: 3 Buen trabajo
2 Algo nos faltó
1 Debemos mejorar
Evaluación
Organizamos el trabajo estipulando tareas, prioridades y plazos.
Se organizó el trabajo pero no se estipularon tareas ni prioridades, en el plazo de entrega final.
No hubo organización para realizar nuestros trabajos.
Cumplió cada quien con las tareas asignadas y el plazo estipulado.
Casi todos los miembros del equipo cumplieron con las tareas asignadas y el plazo estipulado; teniendo que resolver lo que a otros les fue encomendado.
Un solo miembro del equipo realizó todos los productos.
Todos participamos activamente en la elaboración de los productos.
Casi todos los miembros del equipo participaron activamente en la elaboración de los productos.
No hubo participación activa de los miembros del equipo en la elaboración de los productos.
La calidad de los productos elaborados, fue la adecuada para su entrega.
La calidad de los productos elaborados, fue en su mayoría la adecuada para su entrega.
No se cumplió con la calidad adecuada de los productos para su entrega. Total
de 12
Evaluación Responde las siguientes preguntas encontrando las respuestas en la sopa de letras. 1. Serie de acciones que permiten alcanzar un resultado: 2. Representación gráfica de un algoritmo: 3. Son datos que no cambian su valor durante el proceso: 4. Cambia su valor durante el proceso y ejecución del algoritmo: 5. Tipo de operador que compara dos operandos de tipo número, cadena de caracteres, constante o variable: 6. Operador que realiza cálculos matemáticos entre los valores de las constantes y variables: 7. Es la estructura que evalúa una condición obteniendo como resultado un valor verdadero o falso: 8. En la estructura se bifurca por dos caminos diferentes el flujo del proceso con base en la evaluación de una o varias condiciones: 9. Es la estructura de control que después de tomar una decisión hace necesario tomar una decisión más: 10. Se llama así a la situación o circunstancia que causa la repetición de la ejecución del bloque mientras se cumpla:
Introducción a la programación
51
Unidad
2
Propósito de la unidad Tu propósito será: • Crear programas de modo gráfico mediante el lenguaje de programación visual de Scratch para solucionar problemas y representar el funcionamiento del pseudocódigo.
Contenidos temáticos ¿Qué aprenderás? 2.1 Pseudocódigo 2.1.1. Definición y características 2.1.2. Scratch 2.1.2.1. Interfaz 2.1.2.2. Elementos 2.2 Estructuras de control 2.2.1. Selectivas 2.2.2. Repetitivas
Competencias a desarrollar Genéricas • Escucha, interpreta y emite mensajes pertinentes en distintos contextos con el uso de medios, códigos y herramientas apropiados. • Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. • Sustenta una postura personal sobre temas de interés y relevancia general, considerando otros puntos de vista de manera crítica y reflexiva. • Aprende por iniciativa e interés propio a lo largo de la vida. • Participa y colabora de manera efectiva en equipos diversos. Disciplinar • Utiliza las tecnologías de la información y la comunicación para investigar, resolver problemas, producir materiales y transmitir información.
52
Creación de programas: modo gráfico Saberes específicos ¿Cómo lo aprenderás? • Identificando los tipos de variables. • Identificando el entorno de la aplicación de Scratch. • Describiendo las herramientas que proporciona Scratch en la creación de proyectos. • Identifica elementos del lenguaje Scratch para transformar un algoritmo en un programa de modo gráfico. • Creando programas en modo gráfico. • Declarando variables según requiera el caso planteado. • Describiendo las formas de representar un proceso para solucionar problemas en lenguaje de programación Scratch. • Identificando la simbología de las estructuras de control selectivo y repetitivo que se programan en lenguaje Scratch. • Estructurando secuencias de control para crear programas en lenguaje Scratch. • Analizando la importancia de resolver problemas mediante aplicaciones de modo gráfico. • Colaborando con tus compañeros en la construcción de sus aprendizajes. • Reflexionando sobre el proceso propio de aprendizaje.
Mi portafolios de evidencias Evidencia Logrado
Encamina tus habilidades: Infografía (página 67)
Sí
No
Subproducto procedimental 2.1: Archivo de Scratch (página 67)
Sí
No
Encamina tus habilidades: Archivo de Scratch (página 77)
Sí
No
Subproducto procedimental 2.2: Archivo de Scratch (página 81)
Sí
No
Subproducto actitudinal-valoral: Preguntas guía (página 81)
Sí
No
Subproducto conceptual: Cuestionario de relación (página 81)
Sí
No
Producto integrador de la Unidad 1: Informe escrito (página 82)
Sí
No
¿Qué tanto sé? Responde con base en tus conocimientos previos. 1. ¿Cuál es la diferencia entre diseñar un algoritmo, un diagrama de flujo y un pseudocódigo?
2. ¿Qué utilidad pueden tener los pseudocódigos en tu vida escolar?
3. ¿Conoces alguna herramienta digital para diseñar pseudocódigos?
4. ¿Consideras que es difícil codificar algoritmos en algún lenguaje de programación?
5. ¿Crees que programar secuencias lógicas mediante ambientes gráficos pueda favorecer tu gusto por la programación?
53
2.1. Pseudocódigo A desarrollar Al terminar la secuencia precisarás que es un pseudocódigo y variable y los usarás para descripciones algorítmicas. También identificarás la interfaz y los elementos de Scratch, asimismo, su simbología como lenguaje de programación visual, representando en modo gráfico las variables y los procesos de resolución de problemas. Crearás proyectos en Scratch transformando algoritmos a modo gráfico. Como subproducto procedimental elaborarás una infografía representando los elementos del proceso secuencial de los algoritmos en el lenguaje de programación Scratch. Las actividades que realizarás en esta secuencia te servirán para: 4.1 Expresar ideas y conceptos mediante diversos sistemas de representación simbólica. 5.1 Seguir instrucciones y procedimientos de manera reflexiva en la búsqueda y adquisición de nuevos conocimientos. 5.2 Ordenar información de acuerdo a categorías, jerarquías y relaciones. 5.6 Utilizar las tecnologías de la información y comunicación para procesar e interpretar información. 5.7 Proponer soluciones a problemas del orden cotidiano, científico, tecnológico y filosófico. 6.4 Estructurar ideas y argumentos de manera clara, coherente y sintética. 7.3 Articular saberes de diversos campos y establecer relaciones entre estos y la vida cotidiana. 8.1 Plantear problemas y ofrecer alternativas de solución al desarrollar proyectos en equipos de trabajo, y define un curso de acción con pasos específicos. 8.3 Asumir una actitud constructiva al intervenir en equipos de trabajo, congruente con los conocimientos y habilidades que posee.
De aquí en adelante De seguro los ejercicios que resolviste a lo largo de la unidad 1 han desarrollado tu pensamiento lógico, has mejorado tu habilidad en el entendimiento de los problemas que te plantean en las asignaturas de física y matemáticas y muy posiblemente has mejorado tu rendimiento escolar. El diseño de algoritmos para resolver problemas empieza a cobrar sentido en tus tareas cotidianas. Antes de adentrarte en el tema preparado para esta unidad, activa tu curiosidad observando el video alojado en http://bit.ly/2IC4E4u al que también puedes acceder desde tu teléfono celular escaneando el siguiente código QR. A partir de lo observado en el video, piensa en torno a las preguntas: • ¿En qué crees te ayudaría aprender a codificar los algoritmos que hasta el momento has diseñado? • ¿Qué utilidad puede tener desarrollar programas de computadora? Socializa tus respuestas con tu profesor y compañeros. Rescata los aspectos que te parezcan interesantes de las participaciones en clase.
54
Introducción a la programación
2.1.1 Definición y características Otro instrumento para el diseño de algoritmos son los pseudocódigos. Son herramientas de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la escritura como la lectura de programas. En esencia, es un lenguaje de especificaciones de algoritmos, se le considera como un primer borrador previo a la versión en lenguaje de programación; entre el pseudocódigo y la codificación hay sólo un paso y muy sencillo por su parecido a cualquier lenguaje. El pseudocódigo nació como un lenguaje sustituto al lenguaje de programación estructurada, como un medio de representación de las estructuras de control. Utiliza palabras reservadas en inglés homónimas en los lenguajes de programación para representar las acciones sucesivas, tales como start, end, stop, if-then-else, while-end, repeat-until, etc. Aunque inicialmente son palabras muy similares a las del idioma inglés, su terminología se ha extendido al idioma español facilitando considerablemente su aprendizaje y uso en la programación. Aunque no existen reglas para su escritura en español, se apropia una notación estándar para este libro y que es muy empleada en los libros de programación en español: inicio, fin, parada, leer, escribir, si-entonces- sino, mientras, fin-mientras, repetir, hasta-que.
Figura 2.1.
Glosario Palabras reservadas. Son identificadores predefinidos que tienen un significado especial.
Contrasta el algoritmo y el pseudocódigo del siguiente ejemplo que utiliza una estructura de control do-while para calcular el promedio de varios números enteros positivos, cuyo ciclo de captura se repetirá hasta que se lea el número cero. Algoritmo Inicio 1. Definir e inicializar variables (datos⟵0, n⟵0, promedio⟵0) 2. Haz 2.1. Preguntar (“Introduce un numero entero: ”) 2.2. Capturar valor de la variable n 2.3. Si (n != 0) entonces 2.3.1. Acumular n en promedio (promedio¬promedio + n) 2.3.2. Incrementar en 1 la variable datos (datos⟵datos +1) 2.4. Fin del Si 3. Mientras (n != 0) 4. Asignar a promedio el cálculo (promedio⟵ promedio/(datos)) 5. Expresar: (“El promedio de los ” + datos + “ datos es ” + promedio) Fin
Pseudocódigo Entero datos ⟵ 0, n ⟵ 0 Decimal promedio ⟵ 0 Haz Imprime (“Introduce un numero entero: ”) Leer n SI (n!=0) entonces promedio⟵promedio + n datos⟵datos + 1 fin del Si Mientras (n!=0) Imprime (“El promedio de ” + datos + “ datos es ” + promedio)
Creación de programas: modo gráfico
55
Una ventaja del pseudocódigo es que, en su uso, durante la planificación de un programa, el desarrollador se puede concentrar en la lógica y en las estructuras de control sin preocuparse de las reglas de un lenguaje especifico. Además, es fácil de modificarlo en caso de descubrir errores y anomalías en la lógica de la secuencia. Otra ventaja es que puede ser traducido fácilmente a lenguajes estructurados como Pascal, FORTRAN 77/90, C++, Java, C#, u otros. Relaciónalo con… La escritura del pseudocódigo exige normalmente la indentación de diferentes líneas, llamada así la sangría al margen izquierdo.
Comúnmente los pseudocódigos se escriben a mano o en algún editor de textos, sin embargo, no pueden ser ejecutados directamente por una computadora, para ello se requiere de programas o aplicaciones específicas. Entre las más populares está el programa PSeInt. Es una herramienta para enseñarte los primeros pasos en programación, mediante un simple e intuitivo pseudolenguaje en español, te permite centrar tu atención en los conceptos fundamentales de los algoritmos, minimizando las dificultades propias de un lenguaje y proporcionándote un entorno de trabajo con numerosas ayudas y recursos didácticos.
Figura 2.2. Interfaz de PSeInt.
Por otro lado, existe un lenguaje de programación visual que cuenta con su propia aplicación llamado Scratch. Está orientado a facilitarte el aprendizaje en programación de forma intuitiva mediante bloques. Tiene la ventaja de emplear piezas que se conectan para desarrollar diferentes instrucciones sin escribir código.
Figura 2.3. Interfaz de Scratch.
En las siguientes páginas se te explicará más a fondo la metodología de Scratch para que diseñes tus propios pseudocódigos.
56
Introducción a la programación
2.1.2. Scratch Scratch es un lenguaje de programación desarrollado por un grupo de investigadores del Instituto de Tecnología de Massachusetts (MIT) que por medio de su interfaz gráfica de usuario hace que la programación sea atractiva y accesible para todo aquel que se enfrente por primera vez a programar. Los programas se hacen uniendo bloques de colores usando el ratón. Estos grupos de bloques generan programas, es como programar usando Legos o armando un rompecabezas. Figura 2.4. Bloques de Lego.
Empezando con Scratch Existen dos modos de trabajo con Scratch: • En línea. Se puede programar directamente desde su página web utilizando una computadora con conexión a internet que cuente con un navegador web instalado. Para trabajar en este modo es necesario registrarte y crear una cuenta de usuario. Selecciona la opción Únete a Scratch del menú principal, sigue las sencillas instrucciones paso a paso hasta completar este procedimiento. Sólo debes contar con un correo electrónico activo y asignar una contraseña de inicio. • Escritorio. Permite trabajar sin conexión a internet, para esto es necesario descargar e instalar la aplicación en una computadora. En este libro se utilizará la versión 3.6.0, la cual puedes descargar en el Enlace2.1_R1 de la URL http:// bit.ly/2Vsp1WO o desde el código QR de la derecha. Una vez descargado, ejecuta el archivo instalador (Scratch_Desktop_Setup_3.6.0.exe) y sigue las instrucciones que el mismo proporciona. Al completar este proceso se creará un acceso directo con el nombre Scratch Desktop en el escritorio de tu computadora que te permitirá abrir la aplicación para trabajar en ella. Si deseas descargar la versión más actualizada al momento que estás leyendo este libro debes ingresar al sitio web oficial y pulsar la opción Editor sin conexión dentro de la categoría Soporte, situada en la parte final de la página de inicio.
Figura 2.5. Sitio web oficial: https://scratch.mit.edu
Creación de programas: modo gráfico
57
2.1.2.1. Interfaz
Glosario Interfaz gráfica de usuario. Medio a través del cual una persona puede controlar un software o hardware especifico.
La interfaz de usuario de Scratch es el entorno en tu pantalla donde existe el programa Scratch. La pantalla está dividida en múltiples secciones o paneles que tienen diferentes funciones. Los elementos que se enlistan a continuación son los componentes principales del entorno gráfico de Scratch; identifica cada uno de ellos relacionando el número en la lista e imagen.
Figura 2.6.
1. 2. 3. 4. 5. 6.
Paleta de bloques. Área de programas. Escenario. Panel de objetos (Sprites). Panel de escenario. Panel de disfraces / fondos (las imágenes de estos paneles se muestran en la página 62). 7. Panel de Sonido. 8. Barra de herramientas y tutoriales. Paleta de Bloques Es donde se encuentran todos los bloques de código los cuales se pueden arrastrar al área de programas para crear secuencias de comandos. Una característica que hay que tomar en cuenta es que están agrupados por colores de acuerdo a su tipo. En esta nueva versión de Scratch se pueden ver todos los bloques con sólo desplazarse con el ratón hacia abajo. ¿Sabías que…? Un Sprite es cualquier imagen o información que representa una imagen. Se trata de un tipo de mapa de bits dibujados en la pantalla de la computadora.
58
Las diferentes categorías de bloques de código son las siguientes: • Movimiento. En este tipo se encuentra todo lo relacionado con controlar el movimiento, orientación, desplazamiento, ubicación, rotación, coordenadas, entre otras funciones. En resumen, todas las opciones para darle movimiento a los objetos (sprites).
Introducción a la programación
• Apariencia. Da la posibilidad de cambiar disfraces, animar, organizar, mostrar, esconder, incrementar el tamaño, además de aplicar efectos gráficos a los objetos. Es uno de los tipos de bloques más importante ya que en él encuentras las estructuras para escribir mensajes que se muestran en el escenario. • Sonido. Los bloques de esta categoría permiten insertar audio a los objetos. Puede ser algún sonido predeterminado disponible en la biblioteca de Scratch o ser importado desde tu computadora. • Eventos. Está muy relacionado con la estructura básica de la programación. Activa secuencias de comandos o series de bloques de código. Consiste principalmente en bloques de inicio (hat blocks), los cuales sirven para indicar cuando se empezará a ejecutar cierta instrucción o evento, por ejemplo, al presionar una tecla o al hacer clic con el ratón. • Control. Son otros tipos de bloques que están relacionados de forma directa con la programación. Aquí se encuentran los bucles o ciclos, estructuras de control selectivo o repetitivo para aplicarse en tus proyectos; además es posible indicar cuándo debe detenerse la ejecución del programa. • Sensores. Por medio de los bloques de esta categoría se realizan procesos como pedir algún dato, leerlo y asignarlo a una variable; además permiten detectar señales o colores con los cuales se pueden ejecutar ciertas acciones dependiendo de lo solicitado. • Operadores. Contiene los bloques para realizar distintas operaciones de carácter lógico o cálculos matemáticos. Es posible sumar, restar, multiplicar, dividir y hacer comparaciones. Se usan para modificar variables y cadenas. • Variables. Permite crear variables o listas, las cuales se utilizan para almacenar datos en proyectos, como una cadena de texto o un valor numérico. • Mis bloques. Permite crear bloques con instrucciones personalizadas por el usuario con el objetivo de reutilizar código y no tener que escribir dos veces las mismas instrucciones. Esta categoría es utilizada con frecuencia en la Programación Orientada a Objetos (POO).
Creación de programas: modo gráfico
59
Dentro de la paleta de bloques, en la parte inferior izquierda de la pantalla se encuentra el botón de extensiones que al pulsarlo se desplegará un mosaico con las extensiones disponibles. Estas añaden nuevas características a los proyectos como traducción de textos, lecturas de textos, lápiz y sonidos.
Figura 2.7. Botón Añadir extensión.
Figura 2.8. Catálogo de extensiones.
Al activar alguna categoría de la Paleta de bloques se muestran todos los bloques relacionados con dicha categoría, sólo se debe seleccionar el bloque que se desea utilizar y arrastrarlo hasta el área llamada Área de programas, tal como se observa en la siguiente imagen.
Figura 2.9.
60
Introducción a la programación
Área de programas Es donde el código es arrastrado y ensamblado. Sirve para colocar los bloques de las estructuras que se necesitan al diseñar y crear un programa. Escenario Es donde se ejecuta el programa armado con los bloques. Siempre aparece con fondo blanco y muestra al objeto del gato ya que estos son los valores por defecto. Es el espacio donde se despliegan todos los objetos, escenarios y mensajes que se agregan al proyecto.
Figura 2.10.
Figura 2.11.
Panel de objetos (sprites) Este panel permite agregar tantos objetos como se necesiten según el proyecto que se esté creando. El objeto (gato) es creado por default por Scratch pero es posible personalizarlo. Aquí se encuentra toda la información acerca de los objetos y brinda herramientas para manipularlos, algunas de las acciones que se pueden realizar son: asignarle un nombre, cambiar su ubicación por coordenadas, mostrar u ocultar, así como cambiar tamaño y dirección. También es posible agregar un objeto creado desde tu computadora, dibujarlo desde la opción de pintar o elegirlo desde el catálogo de personajes con el que cuenta Scratch. Panel de escenario Es muy similar al panel de objetos pero aplicado al escenario del proyecto que se está trabajando, aquí se encuentran todas las herramientas para personalizarlo. Las funciones principales son: cargar una imagen que sirva de escenario desde tu computadora, elegir uno al azar del catálogo de Scratch, dibujar un escenario desde la opción de pintar o seleccionarlo desde el catálogo de escenarios.
Figura 2.12.
Creación de programas: modo gráfico
61
Panel de disfraces / fondos Estos dos paneles están directamente relacionados ya que ofrecen funciones muy similares y se muestran en la misma pestaña, se puede acceder a los paneles de Disfraces y Fondos haciendo clic en la pestaña central entre la pestaña Código y la pestaña Sonidos. Para alternar entre los paneles de Disfraces y Fondos se debe seleccionar la miniatura deseada ya sea un objeto o el escenario. Estos paneles permiten editar la apariencia de los objetos así como el escenario del proyecto respectivamente.
Figura 2.13. Panel de disfraces/fondos.
Panel de sonido Permite crear y manipular sonidos. Es posible incluir sonidos al proyecto a partir de tres opciones principales: seleccionar sonidos de la librería de Scratch, grabar nuevos sonidos o importar archivos de audio de tu computadora.
Figura 2.14. Panel de sonido.
62
Introducción a la programación
Barra de herramientas y tutoriales La barra de herramientas en la parte superior de la pantalla contiene las siguientes opciones: • Idioma: Al pulsar el icono de globo permite cambiar el idioma de la aplicación. • Archivo: Aquí se encuentra un sub-menú donde es posible crear un nuevo proyecto, cargar un proyecto desde tu computadora y guardar el proyecto en el que se está trabajando. • Editar: Contiene las opciones de Restaurar y Activar modo Turbo. Restaurar se utiliza para recuperar algo que se haya borrado en el proyecto y Activar modo Turbo sirve para acelerar la ejecución del programa. • Tutoriales: Ofrece una serie de videos tutoriales para mejorar las habilidades en el uso de esta herramienta.
Figura 2.15.
A practicar Con el apoyo de tu profesor realiza la siguiente actividad. 1. Crea un proyecto nuevo en Scratch. 2. Desde el Panel de objetos, elimina el objeto del gato que se crea por defecto y agrega el objeto con el nombre Dog2. 3. Desde el Panel de escenario, agrega el fondo con el nombre Blue Sky. 4. Desde el Panel de sonido, elimina el sonido por default y agrega a tu objeto el sonido Dog2. 5. Agregar los siguientes bloques de código (categoría | bloque): a. Eventos | al hacer clic b. Apariencia | decir ¡Hola! durante 2 segundos c. Movimiento | mover 10 pasos (modificar el valor a 200 pasos) d. Sonido | iniciar sonido Dog2 e. Control | detener todo (modificar el valor a este programa). 6. Comparte con tu profesor para recibir evaluación. El resultado que debes de obtener debe ser igual a las siguientes imágenes:
Figura 2.16. Bloques de código.
Figura 2.17. Escenario.
Creación de programas: modo gráfico
63
2.1.2.2. Elementos Bloques en Scratch La mejor manera de aprender Scratch es a través de la experimentación, y el que sea un entorno interactivo facilita el proceso. Como ya se expuso anteriormente, para crear un programa simplemente se debe arrastrar un bloque de la paleta de bloques al área de programas. El uso de los bloques requiere de conocimiento en la identificación de la utilidad de cada uno de ellos dentro de un programa. A continuación, se muestra la equivalencia entre los bloques y los símbolos de un diagrama de flujo, esto te puede servir de guía para seleccionar de manera correcta los bloques a utilizar al momento de construir un programa en Scratch. Símbolo
Significado Inicio
Fin
Entrada y salida de datos, expresa lectura. Proceso con las operaciones a realizar.
Imprimir mensaje.
“mensaje“ + variable + “mensaje”
+ – * /
Y O NO
64
Concatenar o unir (+) mensajes.
Operadores aritméticos.
Operadores lógicos.
Introducción a la programación
Bloque
Símbolo MOD
> < = =
Significado
Bloque
Módulo (residuo de una división)
Operadores relacionales
A practicar Llegó la hora de poner en práctica lo que has visto con relación al lenguaje Scratch, para esto siguiendo las indicaciones de tu profesor, retoma de la actividad A Practicar de la secuencia 1.1 donde desarrollaste las fases de resolución de problemas, para el siguiente problema: Calcular el término n de cualquier sucesión aritmética. 1. Ejecuta la aplicación Scratch Desktop. 2. Con base en el contenido de la tabla de las fases de resolución de problemas realiza lo siguiente en Scratch: a. Ve a la categoría Variables, para crear los bloques de las variables necesarias. b. Arrastra el bloque al presionar de la categoría Eventos hacia el Escenario. c. Agrega los bloques de cada variable para inicializarlas todas. d. Arrastra el bloque de preguntar de la categoría Sensores. e. Inserta el bloque establecer de la categoría Variables y coloca dentro de éste el subbloque respuesta, el cual pertenece al de la pregunta agregada. Repite esto por cada pregunta y captura que existe en el algoritmo. f. Agrega los bloques de establecer de la categoría Variables, combinados con los bloques de la categoría Operadores necesarios para realizar los procesos requeridos. g. Inserta el bloque decir de la categoría Apariencia para atender la instrucción Expresar del algoritmo usando también el bloque unir de la categoría Operadores, para la concatenación del mensaje final. 3. Dirígete al menú Archivo y da clic en la opción Guardar en tu computador, dale el nombre que tu profesor indique, agregando la extensión del archivo sb3. 4. Envíalo a tu maestro y espera realimentación.
Insignia Incrementa tu habilidad en el diseño de secuencias lógicas y obtén puntos extras resolviendo lo siguiente: 1. Ingresa a la URL: code.org. 2. Ve al apartado Hora del Código. 3. Elige una de las actividades a realizar y resuelve lo que se te pide. 4. Descarga el reconocimiento que te otorga el portal. 5. Mándalo a tu profesor como evidencia que has logrado completar la Hora del código y recibe puntos extra.
Creación de programas: modo gráfico
65
Bloques de estructuras de control en Scratch Tanto en los algoritmos como en los diagramas las estructuras de control selectivas y repetitivas tienen su propia sintaxis y simbología, en el lenguaje Scratch también cuentan con sus bloques para poder programarla en él. Todas ellas deben usar para su buen funcionamiento los bloques de la categoría Operadores, para las condiciones que deben contener estas estructuras. Símbolo
Estructura
Condición(es)
Selectiva simple.
Sí
Instrucción(es)
Condición(es) Sí
No
Instrucción(es)
Instrucción(es)
Selectiva doble.
Condición(es) Sí
No
Instrucción(es)
Selectiva doble anidada.
Condición(es) Sí
No
Instrucción(es)
Instrucción(es)
op
op1
defecto
op2
Instrucción(es) Interrumpir
op3
Instrucción(es)
Instrucción(es)
Interrumpir
Interrumpir
Condición(es)
No
Instrucción(es)
Instrucción(es) 1 Instrucción(es) n
Sí
Sí
Condición(es)
Instrucción(es) 1 Instrucción(es) n
inicio; condición(es); comportamiento
No
Selectiva múltiple o de caso
Repetitivas: Mientras (While) y Haz mientras (Do while).
No
Sí
Instrucción(es) 1 Instrucción(es) n
66
Introducción a la programación
Repetitiva: Para (For).
Scratch
Encamina tus habilidades Es momento de poner en práctica tus aprendizajes, para ello elabora una infografía con las características que a continuación se te solicitan: 1. Organízate con un compañero para trabajar la actividad en binas y con ayuda de algún software especializado o utilizando el que se sugiere en el video tutorial disponible en el siguiente hipervínculo: http://bit. ly/35dSEjp. También pueden acceder desde sus dispositivos móviles con el código QR de la derecha. 2. En la infografía describan la interfaz de la aplicación del lenguaje Scratch. 3. Consideren todo lo necesario para que el contenido sea entendible para un estudiante de tu edad. 4. Utilicen colores, textos, ejemplos e imágenes que den un aspecto creativo e innovador. 5. Exporten a formato jpg y envía a tu profesor por el medio que te solicite para evaluar sus aprendizajes.
Subproductos Subproducto procedimental Para evidenciar tus aprendizajes y el desarrollo de tus competencias de esta secuencia didáctica, programa en Scratch el algoritmo que realizaste en la sección Subproducto Procedimental de la Unidad 1 en la secuencia 1.1, que permitía: calcular el radio de una circunferencia de X m2 de superficie. 1. Utiliza la tabla con las fases de resolución de problemas en esa actividad. 2. Considera las etapas necesarias en el algoritmo para agregar los bloques correspondientes en el lenguaje Scratch. 3. Guarda el archivo de Scratch con el nombre que acuerden con tu docente agregándole la extensión .sb3. 4. Coloca el archivo de MS Word con la tabla de las fases de resolución de problemas junto con el archivo de Scratch en un directorio comprimido. 5. Envíalo a tu profesor para que evalúe tu aprendizaje.
Creación de programas: modo gráfico
67
2.2. Estructuras de control A desarrollar Al término de esta secuencia identificarás la simbología de las estructuras de control selectivas y repetitivas en el lenguaje visual Scratch. Asimismo, describirás las formas de representar en modo gráfico los procesos lógicos de resolución de problemas con estructuras cíclicas y de selección. Crearás proyectos en Scratch transformando algoritmos a modo gráfico. Como subproducto procedimental elaborarás un proyecto en Scratch para calcular el número de dígitos de una cifra. Las actividades que realizarás en esta secuencia te servirán para: 4.1 Expresar ideas y conceptos mediante diversos sistemas de representación simbólica. 5.1 Seguir instrucciones y procedimientos de manera reflexiva en la búsqueda y adquisición de nuevos conocimientos. 5.2 Ordenar información de acuerdo a categorías, jerarquías y relaciones. 5.6 Utilizar las tecnologías de la información y comunicación para procesar e interpretar información. 5.7 Proponer soluciones a problemas del orden cotidiano, científico, tecnológico y filosófico. 6.4 Estructurar ideas y argumentos de manera clara, coherente y sintética. 7.3 Articular saberes de diversos campos y establecer relaciones entre estos y la vida cotidiana. 8.1 Plantear problemas y ofrecer alternativas de solución al desarrollar proyectos en equipos de trabajo, y define un curso de acción con pasos específicos. 8.3 Asumir una actitud constructiva al intervenir en equipos de trabajo, congruente con los conocimientos y habilidades que posee.
De aquí en adelante A partir de lo que aprendiste en la unidad temática anterior y en el diseño de algunos proyectos de Scratch observa los siguientes cuatro ejemplos de Scratch que se muestran a continuación e identifica a qué estructura corresponden las instrucciones que ejecuta cada uno y coméntalos en clase. Video
68
Enlace y QR de descarga
Proyecto 1
http://bit.ly/2M59E3T
Proyecto 2
http://bit.ly/2AYwnbl
Proyecto 3
http://bit.ly/2nBNKM6
Proyecto 4
http://bit.ly/2VzgyRR
Introducción a la programación
Tipo de estructura
Como recuerdas, el principal objetivo de los algoritmos es que sean programados o codificados en un lenguaje de programación; por lo tanto, en esta secuencia aprenderás a elaborar programas en Scratch retomando los conocimientos de las etapas previas. Como ya has visto anteriormente, en programación existen varios tipos de estructuras categorizadas como estructuras de control que como su nombre lo indica controlan el flujo de ejecución de un programa o función. Permiten combinar instrucciones o sentencias individuales en una unidad lógica con un punto de entrada y uno de salida. En esta secuencia nos centraremos en las siguientes estructuras de control: • Estructuras de control selectivo o de toma de decisiones. Permiten evaluar una condición para determinar que instrucción debe ejecutarse. • Estructuras repetitivas o iterativas. Permiten repetir una o varias instrucciones un determinado número de veces.
2.2.1. Estructuras de control selectivas Para la codificación de las estructuras de control selectivas en el lenguaje de programación Scratch, es imprescindible tener claro las acciones que ejecuta cada secuencia de instrucciones descritas en el algoritmo. La creación de un programa en esta herramienta requiere seguir un proceso ordenado para la manipulación de los bloques de código, siempre respetando y siguiendo como guía la estructura del algoritmo. Las estructuras de control selectiva que trabajaremos son del tipo: simple, doble, anidada y múltiple. Selectivas simples En la codificación de las estructuras de control selectivas simples en Scratch debes hacer uso del bloque de código si <> entonces dentro de la categoría Control en la paleta de bloques. Observa y relaciona su algoritmo con el bloque de código. Algoritmo
Scratch
Si (condición(es)) entonces Instrucción(es) Fin del si
A continuación, se muestra un programa que muestra la codificación de esta estructura, retoma el siguiente ejemplo que ya analizaste en la unidad 1.
Creación de programas: modo gráfico
69
Toma en cuenta tu calificación en un examen cualquiera, determina si has “Aprobado”, esto será si la calificación mínima es de 7. Ejemplo: Problema
Entrada
Salida
¿Cuál fue la calificación de tu examen? 8
Con una calificación de 8 has Aprobado.
¿Cuál fue la calificación de tu examen? 6
Análisis
Identificación de la solución: Para solucionar este problema se necesita conocer la calificación obtenida para poder compararla con la calificación mínima aprobatoria según el problema. Variable: calif Reglas: Si calif >= 7: Aprobado
Algoritmo
Inicio 1. Definir e inicializar variables (calif⟵0) 2. Preguntar: “¿Cuál fue la calificación de tu examen?” 3. Capturar valor a la variable calif 4. Si (calif>=7) entonces 4.1. Expresar: “Con una calificación de ” + calif + “ has Aprobado” 5. Fin del si Fin Scratch
70
Introducción a la programación
Selectivas dobles Para la codificación de estructuras de control selectivas dobles en Scratch debes hacer uso del bloque de código si <> entonces – si no dentro de la categoría Control en la paleta de bloques. Observa y relaciona su algoritmo con el bloque de código. Algoritmo
Scratch
Si (condición(es)) entonces Instrucción(es) De lo contrario Instrucción(es) Fin del si
A continuación, se muestra un programa que muestra la codificación de esta estructura, retoma el siguiente ejemplo que ya analizaste en la unidad 1. A través de una calificación de un examen tuyo cualquiera determinar si has “Aprobado”, si la calificación fue mínima de 7, y “Reprobado” en caso contrario. Ejemplo: Problema
Análisis
Entrada
Salida
¿Cuál fue la calificación de tu examen? 8
Con una calificación de 8 has Aprobado.
¿Cuál fue la calificación de tu examen? 6
Con una calificación de 6 has Reprobado.
Identificación de la solución: Para solucionar este problema se necesita conocer la calificación obtenida y compararla con la calificación mínima aprobatoria, en caso de no ser igual indicar que es reprobatoria. Variable: calif Reglas: Si calif >= 7: Aprobado; de lo contrario: Reprobado.
Algoritmo
Inicio 1. Definir e inicializar variables (calif⟵0) 2. Preguntar: “¿Cuál fue la calificación de tu examen?” 3. Capturar valor a la variable calif 4. Si (calif>=7) entonces 4.1. Expresar: “Con una calificación de ” + calif + “has Aprobado” 5. De lo contrario 5.1. Expresar: “Con una calificación de ” + calif + “has Reprobado” 6. Fin del si Fin
Creación de programas: modo gráfico
71
Scratch
A practicar Es momento de poner en práctica el uso de las estructuras de control selectivas. Con la guía de tu profesor y de manera individual realiza lo siguiente: 1. Ingresa al Enlace2.2_R1 desde la siguiente URL: http://bit.ly/312xCkm o bien escaneando el código QR del lado izquierdo, en él encontrarás la Tabla de las fases de resolución de problemas, con una situación planteada la cual debes resolver usando las estructuras de control selectivas. 2. Sigue las indicaciones de tu profesor para crear el algoritmo adecuado para resolver el problema de manera correcta. 3. Una vez que hayas realizado la prueba de escritorio y verificado que el algoritmo funciona, abre Scratch y realiza lo siguiente: a. Ve a la categoría Variables, para crear los bloques de las variables necesarias. b. Arrastra el bloque Al presionar de la categoría Eventos hacia el Escenario. c. Agrega los bloques de cada variable para inicializarlas todas. d. Arrastra el bloque de preguntar de la categoría Sensores. e. Inserta el bloque establecer de la categoría Variables y coloca dentro de éste el subbloque respuesta, el cual pertenece al de la pregunta agregada. Repite esto por cada pregunta y captura que existe en el algoritmo. f. Agrega los bloques de las categorías Control, Variables y Operadores, necesarios para atender las estructuras de control del algoritmo. g. Inserta el bloque decir de la categoría Apariencia para atender la instrucción Expresar del algoritmo usando también el bloque unir de la categoría Operadores, para la concatenación del mensaje final. 4. Coloca el archivo docx y sb3 en un directorio comprimido, para enviarlo y esperar realimentación de parte de tu profesor.
72
Introducción a la programación
Selectivas dobles anidadas En el caso de la codificación de estructuras de control selectivas dobles anidadas en Scratch, debes hacer uso del bloque de código si <> entonces – si no dentro de la categoría Control en la paleta de bloques. Una observación importante es que esta estructura se logra utilizando dos bloques de código antes mencionados, ya que no existe un bloque que por sí solo cumpla con esta función. Relaciona su algoritmo con los bloques de códigos, observa cómo después de la primera condición se sigue evaluando hasta que se agoten todos los criterios necesarios. Algoritmo Si (condición(es)) entonces
Scratch
Instrucción(es) De lo contrario Si(condición(es) entonces Instrucción(es) De lo contrario Instrucción(es) Fin del si
El siguiente ejemplo, te servirá de base para realizar programas en Scratch implementando estructuras de control selectivas dobles anidadas.
Problema
Un restaurant de tu ciudad decide ampliar sus ofertas de acuerdo a una escala de consumo, con relación a ella se determinará el descuento que se le hará a los clientes, y se calculará el impuesto (IVA: 16%) y el monto a pagar: Escala de descuento con base al consumo • 0 < consumo <=100, aplicar un 10% • 100 < consumo <=200, aplicar un 20% • 200 < consumo <= a, aplicar un 30% Ejemplo: Entrada
Salida
¿Cuánto fue el consumo del cliente? 189
El total a pagar son $175.39
¿Cuánto fue el consumo del cliente? 256
El total a pagar son $207.87
Identificación de la solución: Para calcular el descuento al importe a pagar, necesitas saber el importe de éste y con base en las reglas de descuento y aplicando un 16% más calcular el total pagar. Análisis
Variable: consumo, total Reglas: - Si consumo > 0 AND consumo <=100: descuento 10% - Si consumo >100 AND consumo <=200: descuento 20% - Si consumo >200: descuento 30%
Creación de programas: modo gráfico
73
Algoritmo
Inicio 1. Definir e inicializar variables (consumo⟵0, total⟵0) 2. Preguntar: “¿Cuánto fue el consumo del cliente?” 3. Capturar valor a la variable consumo 4. Si (consumo<=100) entonces 4.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.10))*1.16) 5. De lo contrario Si (consumo<=200) 5.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.20))*1.16) 6. De lo contrario 6.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.30))*1.16) 7. Fin del si 8. Expresar: “El total a pagar son $” + total Fin Scratch
Estructuras múltiples o de caso Dentro de las estructuras de control selectivo se ubica la selectiva de caso, la cual permite elegir sólo una opción entre dos o más posibilidades y ejecutar las instrucciones de la opción seleccionada. Para crear un programa con esta estructura en Scratch debes hacer uso del bloque de código si <> entonces dentro de la categoría Control en la paleta de bloques.
74
Introducción a la programación
Al igual que en las estructuras dobles anidadas, no existe un bloque que por sí solo cumpla con esta estructura de control en Scratch. Por lo tanto, para crear un programa debemos de utilizar el bloque previamente mencionado las veces que sea necesario. Relaciona su algoritmo con los bloques de códigos, observa cómo se apilan los bloques dependiendo de las opciones que requiera nuestro algoritmo. Algoritmo
Scratch
En caso de (op)
caso op1:
instrucción(es) Interrumpir
caso op2:
instrucción(es) interrumpir
caso defecto:
instrucción(es) Fin del caso
En el siguiente ejemplo se muestra cómo crear un programa de estructura múltiple utilizando los recursos que te ofrece Scratch. Con relación a un número entero expresar el nombre del día de la semana al que pertenezca. Ejemplo: Problema
Entrada
Salida
Introduce un número entero: 3
El día 3 de la semana es el miércoles.
Introduce un número entero: 8
Opción no válida.
Introduce un número entero: 5
El día 5 de la semana es el viernes.
Identificación de la solución: Para expresar el nombre del día de la semana es necesaria una lista de opciones para los números del 1 al 7 y una opción defecto para cualquier otra opción que no sea válida. Variable: dia Análisis
Reglas: 1 – lunes; 2 – martes; 3 – miércoles; 4 – jueves; 5 – viernes; 6 – sábado; 7 – domingo
Creación de programas: modo gráfico
75
Algoritmo
Inicio 1. Definir e inicializar variables (dia⟵0) 2. Preguntar: “Introduce un numero entero:” 3. Capturar valor a la variable dia 4. En caso de (dia) 4.1. caso 1: 4.1.1. Expresar (“El día ” + dia + “ de la semana es lunes.”) 4.1.2. Interrumpir 4.2. caso 2: 4.2.1. Expresar (“El día ” + dia + “ de la semana es martes.”) 4.2.2. Interrumpir 4.3. caso 3: 4.3.1. Expresar (“El día ” + dia + “ de la semana es miércoles.”) 4.3.2. Interrumpir 4.4. caso 4: 4.4.1. Expresar (“El día ” + dia + “ de la semana es jueves.”) 4.4.2. Interrumpir 4.5. caso 6: 4.5.1. Expresar (“El día ” + dia + “ de la semana es sábado.”) 4.5.2. Interrumpir 4.6. caso 7: 4.6.1. Expresar (“El día ” + dia + “ de la semana es domingo.”) 4.6.2. Interrumpir 4.7. caso defecto: 4.7.1. Expresar (“Opción no válida”) 5. Fin del caso Fin Scratch
76
Introducción a la programación
Encamina tus habilidades Es tiempo de demostrar tus aprendizajes acerca del uso de estructuras de control selectivas en lenguaje Scratch, para ello de manera individual realiza lo que a continuación se te solicita: 1. Retoma tu archivo de MS Word con la Tabla de resolución de problemas que realizaste en la actividad A Practicar, de la secuencia 1.2 de la Unidad 1 donde atendiste el siguiente problema:
Un egresado de bachillerato está por ingresar a estudiar una ingeniería en una universidad de prestigio. La universidad tiene un criterio propio de asignación de las carreras a los aspirantes a través del promedio de ingreso, que resulta de promediar el resultado de examen de admisión y su promedio de bachillerato.
2. Utiliza el lenguaje Scratch para elaborar una aplicación con bloques que resuelva el problema planteado. 3. Coloca el archivo docx y sb3 en un directorio comprimido, para enviarlo y recibir evaluación.
2.2.2. Estructuras de control repetitivas Para programar estructuras de control repetitivas en el lenguaje de programación Scratch, es imprescindible tener claro la lógica y los elementos que se deben utilizar en cada secuencia de instrucciones descritas en el algoritmo. La creación de un programa en esta herramienta requiere seguir un proceso ordenado para la manipulación de los bloques de código, siempre respetando y siguiendo como guía la estructura del algoritmo. Las estructuras de control repetitivas que trabajaremos son del tipo: mientras (while), haz mientras (do while), y por último para (for). Estructura Mientras y Haz Mientras Las estructuras mientras (while) y haz mientras (do while) son utilizadas para ejecutar repetidamente un bloque de instrucciones mientras se cumpla una condición, es decir, hasta que la condición evaluada sea falsa se detendrá la ejecución de las instrucciones. Para crear un programa con estas estructuras se debe seleccionar el bloque de código repetir hasta que <> de la categoría Control de la paleta de bloques. Al usar este bloque hay que estar muy atento ya que la condición en Scratch se interpreta al revés. Algoritmo Mientras (condición(es)) Haz Instrucción(es) Fin mientras Has Instrucción(es) Mientras(condición(es))
Scratch
Creación de programas: modo gráfico
77
El siguiente ejemplo muestra cómo puedes utilizar este bloque para resolver problemas que impliquen el uso de las estructuras mientras y haz mientras. Capturar consecutivamente números enteros hasta que se introduzca el número cero, para que al final se muestre como resultado la suma de todos los números ingresados. Ejemplo: Problema
Entrada
Salida
Introduce un número a sumar: 4 Introduce un número a sumar: 6 Introduce un número a sumar: 0
Análisis
El total de la suma es 10
Identificación de la solución: Acumular la suma de los números enteros, hasta que se introduzca el número cero. Variable: suma, x , band Reglas: si band==true: suma⟵suma + x ; si x == 0 : band⟵false
Algoritmo
Inicio 1. Definir e inicializar variables (suma⟵0, x⟵0, band⟵true) 2. Mientras (band==true) haz 2.1. Preguntar “Introduce un número a sumar: ” 2.2. Capturar x 2.3. Acumular x en suma (suma ⟵ suma + x) 2.4. Si (x==0) entonces 2.4.1. Asignar el valor de false a band (band⟵false) 2.5. Fin del si 3. Fin Mientras 4. Expresar: “El total de la suma es ” + suma Fin Scratch
78
Introducción a la programación
Estructura Para La estructura para (for) también forma parte de las estructuras de control repetitivas, las cuales permiten que un bloque de instrucciones se ejecute repetidamente hasta que no se cumpla una condición, es decir, hasta que la condición evaluada sea falsa se detendrá la ejecución de las instrucciones. En el lenguaje Scratch, el bloque correspondiente a esta estructura es el siguiente: Algoritmo Para (inicio;condición(es);comportamiento) Instrucción(es) 1 Instrucción(es) n Fin para
Scratch
Al ver la tabla anterior puedes notar que los parámetros que usa esta estructura en los algoritmos, en Scratch son necesarios, en este bloque en el espacio donde se muestra el número 10 debe colocarse la variable o bien un número constante que representa las veces que será necesario repetir las instrucciones del bucle. Observa un ejemplo donde se usa la estructura para en Scratch, mismo que se mostró en la Unidad 1. Calcular el factorial de un numero entero positivo y expresar su resultado. Ejemplo: Problema
Entrada Introduce un numero: 4 Introduce un numero: 7
Análisis
Salida El 4! = 24 El 7! = 5040
Identificación de la solución: El factorial de un número se representa con el símbolo “!” y se calcula con la multiplicación acumulativa de los números comprendidos desde el número dado hasta el número uno. Variable: n, fact, i Reglas: Para i empezando en n, mientras i > 0 : fact⟵fact*i
Algoritmo
Inicio 1. Definir e inicializar variables (fact⟵1, n⟵0, i⟵0) 2. Preguntar “Introduce un número: ” 3. Capturar valor de la variable n 4. Para (i⟵n; i>0; i⟵i - 1) 4.1. Acumular la multiplicación en fact (fact⟵fact * i) 5. Fin Para 6. Expresar: “El ” + n + “! = ” + fact Fin
Creación de programas: modo gráfico
79
Scratch
Como puedes observar en el ejemplo anterior los parámetros que se indican en el algoritmo en la estructura para, no se pueden colocar dentro del bloque de ésta en Scratch, sin embargo, deben incluirse en los bloques, por ejemplo en el caso anterior el parámetro de inicio toma su lugar el bloque establecer donde a i se le asigna un valor inicial de n antes de llegar al bloque repetir, la condición pasa a ser el bloque de la variable n que indica la cantidad de repeticiones del bucle y por último dentro de éste se coloca el comportamiento con el bloque change (cambiar) asignándole en qué forma se irá decrementando en este caso la variable i.
80
Introducción a la programación
Subproductos Subproducto Procedimental Realiza el siguiente procedimiento para evidenciar tu aprendizaje acerca del diseño de secuencias lógicas en el lenguaje scratch. 1. De manera individual diseña un proyecto para calcular la cantidad de dígitos de una cifra determinada. Básate en el siguiente ejemplo: Entrada
Salida
Introduce un número: 4567 Introduce un número: 123456
El número 4567 tiene 4 dígitos El número 123456 tiene 6 dígitos
2. Te puede ayudar retomar el algoritmo y el diagrama de flujo que elaboraste en el subproducto procedimental de la secuencia 1.3 de la unidad 1. 3. Guarda y envía el proyecto a tu profesor para recibir evaluación. Subproducto Actitudinal – Valoral Redacta un documento con tus conclusiones del uso y elaboración de programas en lenguaje scratch, en torno a las siguientes preguntas guía para: • ¿Cuáles ventajas encuentras al desarrollar secuencias lógicas para resolver problemas mediante un lenguaje en modo gráfico? • ¿Crees que todos los problemas que se te presenten, pueden solucionarse aplicando el proceso que aprendiste en esta unidad? ¿Por qué? • ¿Despertó el lenguaje scratch tu interés por el desarrollo de programas? • ¿Deseas aprender a codificar algoritmos con otro lenguaje de programación? Subproducto conceptual Relaciona cada interrogante con su respuesta correcta. 1. Tipo de bloques que están relacionados de forma directa con la programación.
( ) Sprites
2. Categoría de bloques de código que ayuda a cambiar disfraces, animarlos y manipularlos para personalizar el proyecto.
( ) Bloque
3. Panel que permite agregar tantos objetos se necesiten según el proyecto que se esté creando. 4. Identificadores que contienen instrucciones de un programa. 5. Tipo de bloque que permite poner bloques encima y de bajo de él.
( ) Control ( ) Apilable ( ) Apariencia
Creación de programas: modo gráfico
81
Producto integrador de unidad Es momento de evidenciar tus aprendizajes y el desarrollo de tus competencias. Para ello, como producto integrador de unidad elabora un informe escrito con las siguientes características: 1. Trabaja este producto de manera individual. 2. En un documento de Word redacta un informe escrito donde describas el procedimiento que llevaste a cabo para elaborar el proyecto de Scratch que se te solicitó como subproducto procedimental de la secuencia 2.2. 3. Redacta de manera clara y puntual cada paso que seguiste para dar solución al problema planteado, incluyendo los pasos estructurados en cada una de las fases. 4. Incluye las imágenes u otros elementos que pueden enriquecer tu informe. 5. Guarda y envía el documento para recibir evaluación. Autoevaluación Como parte del proceso de autoevaluación contesta la siguiente escala de valores, con la que identificarás tu nivel de dominio en los aspectos relacionados a lo que aprendiste en esta unidad. Aspectos Identifico los elementos del entorno de Scratch. Identifico los bloques de inicio, apilables y de cierre. Diseño proyectos utilizando los bloques de código. Utilizo los operadores apropiados a la condición que ejecutará la instrucción. Defino las condicionantes respetando las reglas del lenguaje de Scratch. Empleo los bloques de estructuras de control más convenientes para resolver el problema. Personalizo los objetos con animación. Concateno los elementos de manera correcta.
82
Introducción a la programación
Nivel de dominio 1 2 3 4 5
Comentarios
Coevaluación Evalúa el desempeño general de tu equipo de trabajo en este bloque por medio de la Guía de evaluación: 3 Buen trabajo
2 Algo nos faltó
1 Debemos mejorar
Evaluación
Organizamos el trabajo estipulando Se organizó el trabajo pero no se es- No hubo organización para realizar tareas, prioridades y plazos. tipularon tareas ni prioridades, ni el nuestros trabajos. plazo de entrega final. Cumplió cada quien con las tareas Casi todos los miembros del equipo Un solo miembro del equipo realizó asignadas y el plazo estipulado. cumplieron con las tareas asignadas todos los productos. y el plazo estipulado; teniendo que resolver lo que a otros les fue encomendado. Todos participamos activamente en la Casi todos los miembros del equipo No hubo participación activa de los elaboración de los productos. participaron activamente en la elabo- miembros del equipo en la elaboraración de los productos. ción de los productos. La calidad de los productos elabora- La calidad de los productos elabora- No se cumplió con la calidad adecuados, fue la adecuada para su entrega. dos, fue en su mayoría la adecuada da de los productos para su entrega. para su entrega. Total
de 12
Evaluación Relaciona con las instrucciones del lado derecho lo que ejecuta cada de los bloques del lado izquierdo: 1. Ciclos mientras y haz mientras 2. Ciclo para 3. Módulo 4. Operador aritmético 5. Operador lógico 6. Toma de decisión 7. Toma de decisión doble 8. Concatenar 9. Entrada y salida de datos 10. Proceso
Introducción a la programación
83
Unidad
3
Creación de programas: modo consola
Propósito de la unidad
Saberes específicos
Tu propósito será:
¿Cómo lo aprenderás?
• Utilizar el lenguaje de programación estructurado C++ como herramienta de codificación de pseudocódigos en programas, para la solución de problemas.
• Conociendo la evolución y uso de los lenguajes de programación más populares. • Definiendo programa, lenguajes de programación y variable. • Identificando la metodología para la codificación de aplicaciones. • Identificando las características de los lenguajes de programación estructurados. • Describiendo las reglas sintácticas y semánticas del lenguaje de programación estructurada C++. • Identificando los tipos de datos primitivos y operadores del lenguaje C++. • Creando estructuras de código en un editor de programas. • Declarando e inicializando variables en C++. • Programando sentencias de control de flujo selectivo y repetitivo. • Expresando algoritmos en el lenguaje de programación C++. • Analizando la importancia de resolver problemas mediante la codificación de instrucciones en C++. • Colaborando con tus compañeros en la construcción de sus aprendizajes. • Reflexionando sobre el proceso propio de aprendizaje.
Contenidos temáticos ¿Qué aprenderás? 3.1. 3.2. 3.3.
Metodología de la programación 3.1.1. Lenguajes de programación 3.1.2. Metodología para codificación de aplicaciones 3.1.3. Lenguaje C++ 3.1.4. Consola. Codificación de estructuras de control selectivas 3.2.1. Simple 3.2.2. Doble 3.2.3. Múltiples 3.2.4. De caso. Codificación de estructuras de control repetitivas 3.3.1. Mientras 3.3.2. Haz mientras 3.3.3. Para.
Competencias genéricas y disciplinares Genéricas: • Escucha, interpreta y emite mensajes pertinentes en distintos contextos con el uso de medios, códigos y herramientas apropiados. • Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. • Sustenta una postura personal sobre temas de interés y relevancia general, considerando otros puntos de vista de manera crítica y reflexiva. • Aprende por iniciativa e interés propio a lo largo de la vida. • Participa y colabora de manera efectiva en equipos diversos. Disciplinar: • Utiliza las tecnologías de la información y la comunicación para investigar, resolver problemas, producir materiales y transmitir información.
84
Mi portafolios de evidencias Subproducto procedimental 3.1: Cuadro relacional (página 99)
Sí
No
Encamina tus habilidades: Mapa mental (página 108)
Sí
No
Subproducto procedimental 3.2: Programa (página 109)
Sí
No
Encamina tus habilidades: Programa (página 117)
Sí
No
Subproducto procedimental 3.2: Presentación electrónica (página 121)
Sí
No
Subproducto actitudinal-valoral: Preguntas guía (página 121)
Sí
No
Subproducto conceptual: Cuestionario (página 121)
Sí
No
Producto integrador de la Unidad 1: Escrito argumentativo (página 122)
Sí
No
¿Qué tanto sé? Responde con base en tus conocimientos previos. 1. Describe ¿qué entiendes por programación en informática?
2. ¿Cuál crees es el procedimiento para que tus algoritmos resuelvan los problemas para los que fueron diseñados?
3. ¿Cuál crees sea la diferencia entre los niveles de los lenguajes de programación?
4. ¿En qué consiste la compilación y ejecución de código?
5. ¿Cuáles consolas de ejecución conoces?
6. ¿Qué es la programación estructurada?
7. ¿Qué sabes acerca de C++?
85
3.1. Metodología de la programación A desarrollar Al término de esta secuencia identificarás las características de los lenguajes de programación estructurados y describirás las reglas sintácticas y semánticas del lenguaje de programación C++. Asimismo, identificarás los tipos de datos primitivos, los operadores básicos y la sintaxis para declarar e inicializar las variables para expresar algoritmos en el lenguaje C++. Crearás secuencias de código en editores de programas haciendo uso de las estructuras de control de flujo selectivo y repetitivo. Como subproducto procedimental elaborarás un cuadro relacional entre la sintaxis para procesos usadas en los algoritmos, diagramas de flujo y lenguaje C++. Las actividades que realizarás en esta secuencia te servirán para: 4.1 Expresar ideas y conceptos mediante diversos sistemas de representación simbólica. 5.1 Seguir instrucciones y procedimientos de manera reflexiva en la búsqueda y adquisición de nuevos conocimientos. 5.2 Ordenar información de acuerdo a categorías, jerarquías y relaciones. 5.6 Utilizar las tecnologías de la información y comunicación para procesar e interpretar información. 5.7 Proponer soluciones a problemas del orden cotidiano, científico, tecnológico y filosófico. 6.4 Estructurar ideas y argumentos de manera clara, coherente y sintética. 7.3 Articular saberes de diversos campos y establecer relaciones entre estos y la vida cotidiana. 8.1 Plantear problemas y ofrecer alternativas de solución al desarrollar proyectos en equipos de trabajo, y define un curso de acción con pasos específicos. 8.3 Asumir una actitud constructiva al intervenir en equipos de trabajo, congruente con los conocimientos y habilidades que posee.
De aquí en adelante Actualmente el desarrollo de los lenguajes de programación permite que día a día surjan nuevas tecnologías que facilitan la realización de ciertas tareas, sin embargo, debes entender el contexto en que se ha desarrollado esta rama de la informática a través de los años. Pide a tu profesor que organice una plenaria con la participación de tus compañeros de clase para abordar las siguientes interrogantes relacionadas a la programación: 1. ¿Qué son los lenguajes de programación? 2. ¿En qué crees que están presentes los programas? 3. ¿Cómo crees que se desarrollan? 4. ¿Por qué crees que surgieron los lenguajes de programación? 5. ¿Cómo concibes el mundo sin aplicaciones digitales como las que usas a diario?
86
Introducción a la programación
3.1.1. Lenguajes de programación
¿Sabías que…?
En la actualidad hay en uso más de mil millones de computadoras de propósito general, además de miles de millones de teléfonos inteligentes y dispositivos portátiles, este explosivo crecimiento está creando oportunidades importantes para la programación de aplicaciones.
La computadora sólo entiende un lenguaje conocido como código binario o código máquina, consistente en ceros y unos.
Figura 3.1.
Las computadoras pueden realizar cálculos y tomar decisiones con una rapidez increíblemente mayor que los humanos, algunas realizan miles de millones de procesos en un segundo, más de lo que un humano podría realizar en toda su vida. Procesan datos bajo el control de instrucciones que se llaman programas de computadora, estos guían a la computadora a ejecutar acciones especificadas por los programadores de computadoras, quienes a su vez requieren de un lenguaje mediador para que la computadora entienda las instrucciones, es decir de un lenguaje de programación. Éste es un lenguaje formal que proporciona una serie de instrucciones que permiten a un programador escribir secuencias de órdenes y algoritmos a modo de controlar el comportamiento físico y lógico de una computadora con el objetivo de que produzca diversas clases de datos. Los lenguajes de programación han revolucionado la vida del ser humano, su evolución tiene como principal propósito facilitar a los usuarios la realización de actividades cotidianas tan simples como diseñar la presentación electrónica para apoyar la exposición de clase, enviar un mensaje instantáneo, compartir en redes sociales el video de una broma hecha a un compañero en clase, disponer de efectivo en un cajero automático, solicitar un servicio de traslado a un destino en particular, o tareas más complejas como acudir a un laboratorio a conseguir una tomografía para verificar que una caída no lastimó los huesos del cuerpo, jugar tu videojuego favorito haciendo sentir cada movimiento como si se estuviera dentro de él o hacer descubrimientos del sistema solar mediante naves espaciales, entre muchas actividades más. En los cursos anteriores has administrado herramientas del sistema operativo, utilizado aplicaciones para fines particulares, diseñado organizadores gráficos colaborativos en línea y realizado búsquedas de información en medios electrónicos, entre otros, has sido beneficiado con programas que programadores expertos en software han desarrollado para que los utilices de forma sencilla. Pero detrás de cada programa y aplicación hay un proceso largo de diseño y verificación que es ajeno a la mayoría de los usuarios.
Creación de programas: modo consola
87
3.1.1.1. Evolución de los lenguajes de programación La historia de los lenguajes de programación se remonta a mediados del siglo XIX, Charles Babbage fue el primero en concebir la idea de un lenguaje de programación al desarrollar la idea de la máquina analítica programable. Sin embargo, fue Ada Lovelace quien desarrolló el primer lenguaje de programación al escribir un algoritmo para la máquina analítica de Babbage antes de ser construida. La evolución de los primeros lenguajes de programación ha derivado a varios tipos de lenguajes, así como se puede apreciar en el siguiente mapa:
Figura 3.2. Evolución de los lenguajes de programación.
Glosario Intérprete. Programa informático capaz de analizar y ejecutar otros programas.
Los lenguajes de programación al principio eran muy difíciles de analizar, estaban desarrollados para ser entendidos directamente por las máquinas, con el paso de los años se han hecho cada vez más amigables y con ayuda de compiladores e intérpretes se puede programar a un nivel más sencillo. Esto ha facilitado el proceso de desarrollo de software.
Compilador. Traduce un programa escrito en un cierto lenguaje a otro.
Los programadores escriben las instrucciones en diversos lenguajes, algunos los comprende directamente la computadora, mientras que otros requieren pasos intermedios de traducción. Aunque Fortran es enunciado como el primer lenguaje de programación popular que utilizaba tarjetas perforadas para codificar instrucciones, le anteceden lenguajes más rústicos y difíciles de comprender por el humano como el lenguaje máquina, que consiste de cadenas de números que finalmente se traducen en unos y ceros, y que se definen de acuerdo a su diseño de hardware, esto es, que cualquier computadora puede entender de manera directa sólo su propio lenguaje o código máquina. Dada la lentitud de ese lenguaje, se comenzaron a utilizar abreviaturas para representar las operaciones elementales que fueron la base para el lenguaje ensamblador, conocido como programas traductores que convierten los programas de lenguaje ensamblador a máquina.
Figura 3.3. Lenguaje ensamblador.
En la siguiente tabla se detalla en qué son usados algunos lenguajes de programación:
88
Introducción a la programación
Año
19571959
1970
1972
1983
1983
1987
1991
1993
1995
Lenguaje FORTRAN - traducción de fórmula. LISP - lista de procesador. COBOL - Lenguaje común Orientado a Negocios. PASCAL - nombrado en honor al físico matemático Blaise Pascal. C - basado en un lenguaje anterior llamado B.
C++ - Formalmente C con clases; ++ es el incremento del operador en C OBJETIVE C Extensión de C orientado a objetos. PERL - Pearl ya estaba ocupado.
Python – nombrado por la afición del creador a la tropa británica cómica: Monty Python.
RUBY – Creado por el programador japonés Yukihiro Matz Matsumoto. JAVA -Lenguaje de programación y una plataforma informática comercializada por Sun Microsystems.
Característica
Primero usos
Usado para
Considerado el más viejo de los Aplicaciones de supercomputado- NASA, Tarjetas de lenguajes que es usado hoy en día. ras. Inteligencia Artificial, software crédito, ATM. Es de Alto nivel. Creado para com- de trabajo. putadoras de trabajo y científicas y matemáticas.
De alto nivel, para enseñar las estructuras de programación y de datos. Versiones comerciales usadas en los años 80. Propósito general y de bajo nivel. Creado por sistemas Unix, es el segundo lenguaje más popular (después de JAVA). Deriva varios lenguajes como: C#, Java, Java script, Perl, Php y Python. Nivel intermedio, orientado a objetos. Es una extensión de C con mejoras como clases, funciones y plantillas.
Enseñar programación. Es usado comúnmente para aplicaciones para mejoramiento de Windows. Programación de plataformas, Sistemas de programación, programas Unix, desarrollo de juegos de computadora.
Propósito general de alto nivel. Expansión de C que añade la función de mensajes basados en lenguaje Smalltalk Propósito general de alto nivel. Creado para reportes de procesamientos en sistemas Unix. Hoy es conocido por su gran poder y versatilidad. Propósito general, alto nivel. Es un lenguaje multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, dinámico y multiplataforma. Propósito general, alto nivel. Lenguaje de enseñanza influenciado por Perl, Ada, Lisp. Smalltalk, etc. Diseñado para productivo divertido. Propósito general, alto nivel. Creado para un proyecto interactivo de TV. Actualmente es el lenguaje de programación más popular en el mundo.
Programas de Apple.
Apple, Lisa (1983) y Skype.
Unix (en 1973), clientes iniciales del servicio del www
Desarrollo de aplicaciones comer- Google Chrome, ciales, software ensamblador, apli- Mozilla Firefox, MS caciones de cliente/servidor y video Internet Explorer. juegos. Sistemas operativos de Apple: X e IOS
CGI, aplicaciones de bases de da- IMDb, Amazon, tos, sistemas de administración, Priceline, programas de internet y gráficos. Ticketmaster. Aplicaciones web, desarrollo de soft- Google, Yahoo, ware y seguridad de la información. Spotify.
Desarrollo de aplicaciones web y Twitter, Hulu, Ruby on rails. Gruopon.
Programación de internet, desarrollo Aplicaciones del de aplicaciones web, desarrollo de sistema operativo software, desarrollo de interfaces Android. gráficas.
Creación de programas: modo consola
89
Año 1995
1995
Lenguaje
Característica
PHP - Página Personal de Casa, ahora se usa como Preprocesador de hipertexto. JAVA SCRIPT decisión final después de Mocha y Livescript.
Fuente abierta de propósito general. Para construir páginas web dinámicas, mayormente usado por compañías de software libre. Alto nivel. Creado para extender la funcionalidad de una página web. Usado por páginas web dinámicas para formas de introducción y validación, interactividad, animaciones, actividad de rastreo del usuario, etc.
Primero usos
Usado para
Construcción/ mantenimiento de Facebook, páginas web dinámicas, desarrollo Wikipedia, Digg, de servidores. Wordpress, Joomla. Desarrollo de web dinámica, docu- Gmail, Adobe mentos pdf, navegadores de inter- Photoshop, Mozilla net, widget de escritorio. Firefox.
3.1.1.2. Clasificación de lenguajes de programación En la actualidad, hay más de dos mil lenguajes de programación y cada día son creados otros que emplean de forma más eficiente los recursos de las computadoras y hasta posibilitan la programación para los usuarios. Existen lenguajes de programación cada vez más completos, que son concebidos a partir diversos enfoques, características y propósitos, y que pueden clasificarse de distintas formas, tal como a se describe continuación: ¿Sabías que…? De acuerdo a We Live Security de ESET, en México se detectaron durante el primer semestre del año 2019 afectaciones de una gran cantidad de Malware, cerca del 40% de las empresas padeció una infección con este tipo de código malicioso desarrollado en lenguajes de programación.
Gráfico con los nombres de detección de los productos de ESET y porcentajes para las amenazas en México durante enero y junio de 2019. Fuente: Security Report 2019.
1. Nivel de abstracción: a. Bajo nivel: Son diferentes para cada procesador, es decir, cada tipo de computadora tiene su propio lenguaje. Cuentan con instrucciones que controlan directamente los recursos del hardware de la máquina. Por ejemplo: lenguaje máquina o lenguaje ensamblador (Assembly). b. Nivel medio: Son lenguajes que tienen algunas características de los lenguajes de bajo nivel y otras de alto nivel. El lenguaje más utilizado de este nivel es lenguaje C. c. Alto nivel: Son lenguajes independientes del procesador. Son sencillos y fáciles de leer, aunque generan un código menos eficiente que los de bajo nivel. Ejemplos: Pascal, C++, PHP, Java, entre otros. 2. Según su propósito: a. Propósito general: Son lenguajes que pueden usarse para programar cualquier tipo de procesos. b. Propósito específico: Están orientados para el desarrollo de aplicaciones en específico, por ejemplo: PHP cuyo enfoque es el desarrollo de aplicaciones Web. 3. Según su orientación a: a. Procedimiento: En ellos se describen los pasos que se han de realizar para resolver un problema específicamente. b. Problema: Son de tipo declarativo, ya que lo que hacen es describir el problema en sí. c. Objetos: Son lenguajes que modelan la realidad centrándose en los elementos que la componen.
90
Introducción a la programación
Sin importar la clasificación, los lenguajes de programación en general tienen un conjunto de símbolos con estructura gramatical, reglas semánticas y de sintaxis. Por otro lado, existen distintas estrategias de programación, cada una define las formas de desarrollar las secuencias lógicas de un programa, algunas estrategias son: 1. Estructurada, que se centra en la creación de abstracciones funcionales organizadas de forma compositiva de acuerdo a una estructura jerárquica. 2. Modular, es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable. 3. Orientada a objetos, es un paradigma que innova la forma de obtener resultados, los objetos manipulan los datos de entrada para la obtención de datos de salida específicos.
Glosario Lenguaje de bajo nivel. Lenguaje de abstracción reducida entre el lenguaje y el hardware. Sus instrucciones ejercen un control directo sobre el hardware y están condicionados por la estructura física de las computadoras que lo soportan. Lenguaje de alto nivel. Expresan los algoritmos de una manera adecuada a la capacidad cognitiva humana.
Durante este curso usarás la programación estructurada.
3.1.1.3. Programación estructurada Los términos programación modular, programación ascendente y programación estructurada se introdujeron en la segunda mitad de la década de los setenta y a menudo se utilizan como sinónimos, aunque no significan lo mismo. En la programación estructurada, los programas deben estar dotados de una estructura y deben escribirse de acuerdo con las siguientes reglas: • El programa tiene un diseño modular. • Los módulos son diseñados de modo ascendente. • Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección y repetición. El término programación estructurada se refiere a un conjunto de técnicas que en su evolución han aumentado considerablemente la productividad del programa, reduciendo en elevado grado el tiempo requerido para escribir, verificar, depurar y mantener los programas. Esta programación utiliza un número limitado de estructuras de control que minimiza la complejidad de los programas y, por consiguiente, reducen los errores.
Figura 3.4.
3.1.2. Metodología para codificación de aplicaciones El desarrollo de un software requiere de un gran equipo que atienda gestión, diseño, desarrollo e implantación para lograr un software de calidad y seguro. En la etapa del diseño se lleva a cabo la programación de computadoras contemplando las actividades de planeación, codificación, prueba y documentación. Para llevar a cabo estas actividades se precisa de una metodología que atienda el proceso de transferencia de las secuencias lógicas de un algoritmo a un determinado lenguaje de programación. En las secuencias anteriores has estado trabajando en la parte que corresponde al diseño, para finalizarla es necesario codificar el algoritmo, lo que a su vez solicita el cumplimiento de los pasos: codificación del programa, compilación y ejecución, y verificación y depuración.
Creación de programas: modo consola
91
Glosario
3.1.2.1. Codificación de un programa
Archivo de programa. Es un archivo de los denominados ejecutables, se refieren a aquellos que corren por sí mismos.
Codificación es la escritura en un lenguaje de programación de la representación del algoritmo desarrollado en las etapas precedentes. Dado que el diseño de un algoritmo es independiente del lenguaje de programación utilizado para su implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro.
Programa/código fuente. Conjunto de líneas de código (instrucciones) que forman parte esencial de un programa informático. Programa/código objeto. Es el responsable de que la computadora interprete las acciones que se ordenan y los comandos que han sido prefijados en el código, para ser ejecutados, interpretados y retransmitidos por el hardware.
Para realizar la conversión del algoritmo en programa se deben sustituir las palabras reservadas en español por sus homónimos en inglés, y las operaciones/instrucciones indicadas en lenguaje natural expresarlas en lenguaje de programación correspondiente. En las siguientes páginas conocerás las reglas semánticas del lenguaje de programación C++ para codificar los algoritmos que diseñaste en actividades anteriores.
Programa ejecutable. Un ejecutable es un archivo diseñado para poder iniciar un programa. Bibliotecas. Llamada así por vicio del lenguaje librería (del inglés library) es un conjunto de implementaciones funcionales, codificadas en un lenguaje de programación, que ofrece una interfaz bien definida para la funcionalidad que se invoca.
Figura 3.5.
3.1.2.2. Compilación y ejecución Una vez que el algoritmo se transfiere a un lenguaje, es decir, se convierte en un programa fuente, es preciso ponerlo en la memoria de la computadora mediante un programa editor, el cual convierte el programa fuente en un archivo de programa. El programa fuente debe ser traducido a un lenguaje máquina, este proceso lo realiza el compilador y el sistema operativo. Si tras la compilación se presentan errores (errores de compilación) en el programa fuente, es necesario regresar a editar el programa, corregir los errores y compilar de nuevo. Este proceso debe repetirse hasta que no se produzcan errores durante la compilación. Una compilación de programa fuente sin errores da como resultado el programa objeto, este archivo aún no es ejecutable directamente. Teniendo el programa objeto, se debe instruir al sistema operativo que realice el montaje o enlace, carga del programa objeto con las bibliotecas del programa del compilador. Este último proceso de montaje es el que produce el programa ejecutable, el cual puede “correr” el programa con sólo teclear su nombre desde el sistema operativo. De no encontrarse en este paso errores en tiempo de ejecución, se obtendrá como salida los resultados del programa o aplicación.
92
Introducción a la programación
3.1.2.3. Verificación e implementación
¿Sabías que…?
La verificación e implementación de un programa es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados datos de prueba, que determinarán si el programa tiene errores (bugs). Para realizar la verificación se debe desarrollar una amplia gama de datos de prueba: valores normales de entrada, valores extremos de entrada que comprueben los límites del programa y valores de entrada que comprueben aspectos especiales del programa. Por otro lado, la depuración es el proceso de encontrar los errores del programa y corregir o eliminarlos. Durante la ejecución se pueden encontrar errores: • De compilación: Normalmente son por el uso incorrecto de las reglas del lenguaje de programación y suelen ser errores de sintaxis. De existir un error de este tipo la computadora no logra comprender la instrucción y no se producirá el programa/código objeto. En este caso se imprimirá una lista de todos los errores encontrados durante la compilación. • De ejecución: Se producen por instrucciones que la computadora puede comprender, pero no ejecutar, por ejemplo: la división por el número cero y las raíces cuadradas de números negativos. • Lógicos: Se producen en la lógica y la fuente del error suele ser el diseño del algoritmo. Estos errores son más fáciles de detectar porque la aplicación puede funcionar y no producir errores de compilación ni de ejecución, sólo se advierte error por obtención de resultados incorrectos. En este caso se debe ir al algoritmo, modificarlo y cambiar el programa fuente para compilar y ejecutar de nuevo.
Para que el código objeto pueda realizar la interpretación es necesario contar con sistemas de traducción que son conocidos bajo los nombres de Compiladores, Intérpretes o Ensambladores, entre otros sistemas de traducción, que son los encargados de llevar estos lenguajes hacia un Sistema Binario de ceros y unos (es decir, transmisión o no-transmisión de la energía eléctrica a través de los dispositivos electrónicos).
Relaciónalo con… C++ es un lenguaje de programación creado por Bjarne Stroustrup en los laboratorios de At&T en 1983. Stroustrup tomó como base el lenguaje de programación más popular en aquella época, el cual era C.
Figura 3.6. Diagrama del proceso de creación de un programa o aplicación.
Creación de programas: modo consola
93
¿Sabías que…? Los desarrolladores localizan más fácilmente los errores al leer líneas de código usando un depurador (debug) que también vigila el estado de las variables, las entradas y las salidas. Algunos lenguajes de programación lo incluyen, de no tenerlo debe obtenerse como complementario.
3.1.3. Lenguaje C++ El lenguaje de programación C++ es uno de los lenguajes de desarrollo de software más populares, puesto que es un lenguaje de programación de computadoras apropiado para personas con orientación técnica con poca o ninguna experiencia en programación y para programadores experimentados que desarrollan grandes sistemas de información. C++ es un poderoso lenguaje de programación de computadoras que tiene sus orígenes en el lenguaje C, un lenguaje de propósito general que ha estado y sigue estando asociado con el sistema operativo Unix. Esto hace que C++ sea un súper conjunto y la mejor extensión de su antecesor. La lógica de ambos lenguajes tiene una gran sinergia incluso en muchas ocasiones se habla de C/C++ para definir a los compiladores que siguen estas normas.
3.1.3.1. Características de C++ El lenguaje C++ es un lenguaje de programación de nivel alto. Un lenguaje de alto nivel es el que permite al programador escribir la codificación de programas con palabras reservadas en inglés, como por ejemplo if, while, for, etc. Las características más notables que han ido incorporándose a C++ son:
Figura 3.7. Gráfica de vulnerabilidad del lenguaje C++
•
• • •
94
• Lenguaje fuertemente tipado, esto es que el programador debe saber cómo hacer y declarar el código para que funcione. • El lenguaje de programación C++ fue el lenguaje que ayudó a potenciar la programación orientada a objetos. • Hoy en día, la mayoría de lenguajes actuales modernos tienen este tipo de programación, y es gracias al lenguaje C++. • Herencia múltiple, genericidad, plantillas, funciones, virtuales, excepciones, etc. • Existe una versión C++ 2.0 que se lanzó en 1989, con nuevas opciones como clases abstractas, funciones estáticas, herencia múltiple, los lenguajes actuales de programación orientada a objetos sólo permiten una única herencia. • Compatibilidad de C con C++. Un compilador de C++ puede compilar código escrito en C, o usar librerías de C con poca modificación de código. • Uso de punteros. Biblioteca estándar, que suele venir con el compilador. No sólo estamos hablando de las funciones de sistema, como puede ser cout, sino de plantillas de clases (o colecciones de objetos) para vectores, listas, mapas, colas, pilas, etc., y soporte multihilo. Es portátil, tiene un gran número de compiladores en diferentes plataformas y sistemas operativos. Eficiencia con el hardware, al ser un lenguaje compilado. Además, se acerca bastante a un lenguaje de bajo nivel. Soporta expresiones Lambda, también llamadas funciones anónimas.
Introducción a la programación
3.1.3.2. Sintaxis de C++
¿Sabías que…?
Sintaxis de la estructura básica de un programa en lenguaje C++.
B es el nombre de un lenguaje de programación desarrollado en los Bell Labs, y es predecesor del lenguaje de programación C.
Figura 3.8. Estructura de programa en C++
Datos primitivos Como ya sabes, las instrucciones de almacenamiento permiten establecer espacios de memoria para guardar y recuperar datos, y dentro de este grupo se encuentran las instrucciones para definir las constantes y las variables, y otros tipos más como vectores que no corresponden en este curso. Cuando el programa termina de ejecutarse se liberan todos los espacios de memoria. El tipo de dato está directamente relacionado con el espacio de memoria a reservar que el compilador y el tipo de hardware determinarán, existen pequeñas diferencias entre ejecutar en un equipo de 32, 64 y 128 bits. En la siguiente tabla se describen los tipos de datos y su función en C++ Tipo Boleano Caracter Cadena Entero Entero Entero con signo Entero sin signo Largo con signo Largo sin signo Real Doble
Codificación bool char string short unsigned short int Unsigned int Long long int Unsigned long long int float double
Largo doble
Long double
Descripción Valor verdadero o falso. Una letra o símbolo. Texto con varios caracteres. Número entero corto con signo de hasta cinco dígitos. Número entero corto sin signo de hasta cinco dígitos. Entero con signo de hasta 10 dígitos. Entero sin signo de hasta 10 dígitos. Número entero con signo hasta 18 dígitos. Número entero sin signo de hasta 20 dígitos. Número real con aproximación de hasta siete dígitos. Real de doble precisión con aproximación de hasta 15 dígitos. Reales de doble precisión con aproximación de hasta 18 dígitos.
Creación de programas: modo consola
95
Observa el siguiente ejemplo donde se describe el algoritmo y el código en lenguaje C++, asimismo una explicación de cada línea de instrucción: Algoritmo
Lenguaje C++ #include <bits/stdc++> using namespace std;
Inicio 1. Definir variables (b, h, a) 2. Preguntar: “¿Cuál es la base? ” 3. Capturar valor a la variable b 4. Preguntar: “¿Cuál es la altura? ” 5. Capturar valor a la variable h
Explicación Invocación de la librería general de C++ Indicar que se usarán cin y cout.
int main(){ Definición de variables tipo float, para almacenar los valores necesarios. Se usa cout<<, mandar texto a cout<<“¿Cuál es la base? ”; la pantalla. Se utiliza cin>>, para capturar y almacenar en variables cin>>b; los datos que el usuario proporciona. Se usa cout<<, mandar texto a cout<<“¿Cuál es la altura? ”; la pantalla. Se utiliza cin>>, para capturar y almacenar en variables cin>>h; los datos que el usuario proporciona.
float b=0, h=0, a=0;
6. Asignar a la variable a el resultado de multiplicar y dividir (b × h) / 2
a = (b*h)/2;
Se almacena en la variable a el resultado de la fórmula del área de un triángulo.
7. Expresar: “El área del triángulo rectángulo es: ” + a
cout<<“El área del triángulo rectángulo es: ”<<a;
Se usa cout<<, para mandar el mensaje a la pantalla y se concatena texto y valor de la variable con los símbolos <<.
Fin
return 0; }
A practicar Es momento de poner en práctica el uso de las estructuras de control selectivas. Con la guía de tu profesor corrige el código fuente del algoritmo que resuelve el siguiente problema que abordaste en la secuencia 1.1 de la Unidad 1 de este curso: Obtener el cociente y residuo de un número entero cualquiera con un divisor cualquiera. 1. Ejecuta Dev C++. 2. Dirígete al menú Archivo y posiciona el cursor sobre en la opción Nuevo y elige la opción Archivo Fuente. 3. En el área de codificación teclea el siguiente código:
96
Introducción a la programación
#include <bits/stdc++.h> using namespace std; int main(){
float numero = 0, divisor = 0, cociente = 0, residuo = 0;
cout<<”Introduce un numero entero a dividir: “; cin>>numero; cout<<”Introduce un divisor entero: “; cin>>divisor;
cociente = numero/divisor; residuo = numero%divisor;
cout<<”El cociente de la división: “<<numero<<” / “ “<<divisor<<” = “<<cociente; cout<<”El residuo de la división: “<<numero<<” / “ “<<divisor<<” = “<<residuo; }
return 0;
4. Ve al menú Archivo a la opción Guardar o Guardar Como… o bien presiona las teclas <Ctrl + S>, para guardar el código, colócale el nombre que tu profesor indique con extensión .cpp. 5. Continúa con la revisión de errores de codificación ejecutando la compilación, hazlo presionando la tecla <F9> o mediante el comando de acceso rápido Compilar. 6. Observa en la sección inferior de la ventana de Dev C++ los errores de codificación y solicita a tu profesor ayuda si algunos no logras comprenderlos. 7. Continúa realizando el punto número 5 hasta que ya no aparezcan errores de compilación. 8. Una vez corregidos todos los errores, ejecuta el código de la consola del sistema presionando el comando Ejecutar o la tecla <F10>. 9. Después de probar el funcionamiento de tu aplicación de consola y verificar que todo marchó bien, envía a tu profesor el archivo cpp que creaste y espera realimentación.
3.1.4. Consola El proceso de codificar un programa depende del lenguaje y herramientas de programación que se utilice y que se ajuste mejor al problema que se intenta resolver. Los desarrolladores suelen emplear un procesador de textos, un editor de programas o un VDE para codificar programas. Un editor de programas es un tipo de editor de textos especialmente diseñado para introducir código para programas de cómputo. Estos editores se obtienen en versiones gratuitas y de paga. Las funciones entre diferentes editores son variables, pero todas incluyen ayudas de programación muy útiles, como palabras clave de colores, conclusión de frases, macros de teclado y búsqueda/reemplazo.
Relaciónalo con… Los programas VDE (Ambiente Visual de Desarrollo) ofrecen a los programadores herramientas para desarrollar secciones sustanciales de un programa por medio de clics, en lugar de escribir líneas de código. Por ejemplo, el editor de Visual Basic.
Los editores de programas a diferencia de los de texto, ofrecen en la parte inferior las herramientas que en este caso están orientadas a la programación. Existen una diversidad de editores de código de acceso libre y de fácil uso los que pueden ser utilizados como medio de simbolización de algoritmos, entre ellos: GNU Emacs, Brackets, Notepad++, CodeBlock, DevC++, Araneae y Atom que son soportados por el sistema operativo Windows y macOS, estos últimos cuatro son gratuitos; también los hay para dispositivos móviles, por ejemplo, Coda para iOS y DroidEdit es un editor de código para Android.
3.1.4.1. Interfaz de Dev C++
Figura 3.9.
Para comenzar a codificar en el lenguaje C++, conoce cómo está compuesta la interfaz gráfica del editor Dev C++, sus componentes principales son:
Creación de programas: modo consola
97
¿Sabías que…? La transformación digital promueve una nueva ‘lengua’: la programación. Según el artículo de Silicon, los expertos de Smartick, compañía española que ha diseñado un método para aprender matemáticas online, consideran que la programación – o codingserá una disciplina fundamental para acceder al mercado de trabajo, tan importante como el dominio del inglés. Fuente: https://trycore.co/ pildoras-de-conocimiento/ transformacion-digitalpromueve-la-programacion/
(1) Barra de Menú. Contiene los menús principales del editor como: Archivo, Edición, Buscar, Ver, Proyecto, Ejecutar, Herramientas, AStyle, Ventana y Ayuda. (2) Barra de Herramientas. Como en otros softwares esta barra presenta las opciones más usadas como lo son: Nuevo, Abrir proyecto, Guardar, Guardar todo, Cerrar, Cerrar todo, etc. (3) Botones de Ejecución. Estos botones contienen las opciones que necesitaremos para realizar las siguientes acciones con nuestro código: a. Compilar (F9). Esta acción traduce el código escrito en el lenguaje C++ a código ejecutable por la máquina, en este proceso el compilador busca que no existan errores en la sintaxis del código, si llegara a haber, mostrará en la casilla de Registro de Compilación (6), cuáles son y en qué línea se encuentran. b. Ejecutar (F10). Como su nombre lo indica, este botón se encargará de ejecutar la última compilación del código generando en el directorio del proyecto un archivo .exe (ejecutable), al ejecutar en este editor el código abrirá de forma automática una ventana del cmd o símbolo del sistema, en la cual podrás ver la ejecución de tu programa. c. Compilar y Ejecutar (F11). Realiza con un solo clic las dos acciones anteriores, es decir, compila el código y lo ejecuta siempre y cuando no tenga errores. d. Reconstruir todo (F12). Esta opción vuelve a compilar el código y hacer el archivo .exe con los cambios que se hayan realizado, pero sin ejecutarlo. (4) Navegador de Proyectos/Clases. Aquí Dev C++ mostrará el o los proyectos que tengas abiertos para poder acceder a ellos de manera más fácil. (5) Área de codificación. Aquí se teclearán todas las instrucciones en el lenguaje C++, siguiendo las reglas de sintaxis y de estándar de codificación de programación estructurada. (6) Registro de codificación. En esta sección el editor mostrará los resultados de la compilación o reconstrucción de la codificación del programa en C++. (7) Ventana Prompt (cmd o símbolo del sistema). Esta será la ventana de ejecución de tus programas, en ella podrás leer, procesar y mostrar información, según tu codificación.
Figura 3.10.
98
Introducción a la programación
Subproductos Subproducto procedimental Para evidenciar lo que aprendiste en esta secuencia, de manera individual realiza el siguiente procedimiento: 1. Descarga el archivo de MS Word que se encuentra en la siguiente URL: http://bit.ly/2MrV6u2 o con el código QR que pertenecen al recurso. 2. Completa la tabla relacional, aplicando tus conocimientos adquiridos en las unidades temáticas de este curso de Introducción a la Programación. 3. Relaciona cada estructura de algoritmo y diagrama de flujo con su sintaxis en el lenguaje de programación de alto nivel C++. 4. Guarda el archivo con el nombre que tu profesor indique. 5. Envíalo por el medio que acuerden, para recibir evaluación correspondiente a este subproducto.
Figura 3.11.
Creación de programas: modo consola
99
3.2. Codificación de estructuras de control selectivas A desarrollar Al terminar la secuencia identificarás la sintaxis de las estructuras de control selectivas en el lenguaje de programación C++, además, describirás procedimientos para resolver problemas haciendo uso de ellas. Programarás sentencias de control de flujo selectivas para expresar algoritmos en lenguaje C++ que den solución a problemas específicos. Como subproducto procedimental, diseñarás un programa en lenguaje C++ que presente un proceso selectivo de ingreso. Las actividades que realizarás en esta secuencia te servirán para: 4.1 Expresar ideas y conceptos mediante diversos sistemas de representación simbólica. 5.1 Seguir instrucciones y procedimientos de manera reflexiva en la búsqueda y adquisición de nuevos conocimientos. 5.2 Ordenar información de acuerdo a categorías, jerarquías y relaciones. 5.6 Utilizar las tecnologías de la información y comunicación para procesar e interpretar información. 5.7 Proponer soluciones a problemas del orden cotidiano, científico, tecnológico y filosófico. 6.4 Estructurar ideas y argumentos de manera clara, coherente y sintética. 7.3 Articular saberes de diversos campos y establecer relaciones entre estos y la vida cotidiana. 8.1 Plantear problemas y ofrece alternativas de solución al desarrollar proyectos en equipos de trabajo, y define un curso de acción con pasos específicos. 8.3 Asumir una actitud constructiva al intervenir en equipos de trabajo, congruente con los conocimientos y habilidades que posee.
De aquí en adelante Tomando en cuenta que ya has diseñado algoritmos con estructuras de control selectivas, reactiva tus conocimientos para identificar las siguientes sintaxis escritas en lenguaje de programación C++. En la siguiente tabla coloca en la fila de los encabezados el nombre de la estructura de control selectiva que corresponda a la sintaxis del lenguaje C++ de cada columna. Comenta tus respuestas en clase para conocer los argumentos de tus compañeros.
switch (x){ case 1: …….. break; case 2: …….. break; default: ……. }
100
If(!x){ ……….; ……….; else{ ……….; ……….; }
Introducción a la programación
If(!x){ ……….; ……….; }
If(!x){ ……….; ……….; else if(x){ ……….; ……….; }else{ ……….; ……….; }
Para la codificación de las estructuras de control selectivas en el lenguaje de programación C++, sea del tipo simple, doble, anidada o múltiple, es necesario tener claras las acciones que ejecuta cada secuencia de instrucciones descritas en el algoritmo. Su codificación debe seguir las normas de sintaxis del lenguaje de programación y la secuencia de las estructuras de los algoritmos.
3.2.1. Selectivas simples En la codificación de las estructuras de control selectivas simples debes hacer uso de la palabra reservada de C++: if, cuyo significado es español es Si denotando una interrogante utilizada para comparar condiciones. En los algoritmos Si (condición(es)) entonces Instrucción(es) Fin del si
En C++ If(condición(es)){ Instrucción(es); }
Para que identifiques la sintaxis de codificación de esta estructura, retoma el siguiente ejemplo que analizaste desde la Unidad 1: Toma en cuenta tu calificación en un examen cualquiera, determina si has “Aprobado”, esto será si la calificación mínima es de 7. Ejemplo: Problema
Entrada ¿Cuál fue la calificación de tu examen? 8 ¿Cuál fue la calificación de tu examen? 6
Análisis
Salida Con la calificación de 8 has Aprobado.
Identificación de la solución: Para solucionar este problema se necesita conocer la calificación obtenida para poder compararla con la calificación mínima aprobatoria según el problema. Variable: calif Reglas: Sí calif >= 7: Aprobado
Algoritmo
Inicio 1. Definir e inicializar variables (calif⟵0) 2. Preguntar: “¿Cuál fue la calificación de tu examen?” 3. Capturar valor a la variable calif 4. Si (calif>=7) entonces 4.1. Expresar: “Con una calificación de ” + calif + “ has Aprobado” 5. Fin del si Fin
Creación de programas: modo consola
101
Lenguaje C++ #include <bits/stdc++.h> using namespace std; int main(){
int calif = 0;
cout<<”¿Cuál fue la calificación de tu examen? “; cin>>calif; if(calif>=7){ cout<<”Con una calificación de “<<calif<<” has Aprobado”; } return 0; }
3.2.2. Selectivas dobles Para la codificación de las estructuras de control selectivas dobles debes hacer uso de las palabras reservadas de C++: if - else, cuyos significados en español son: Si – de lo contrario. Observa la sintaxis de su estructura y compárala con su algoritmo en la siguiente tabla: En los algoritmos Si (condición(es)) entonces Instrucción(es) De lo contrario Instrucción(es) Fin del si
En C++ If(condición(es)){ Instrucción(es); }else{ Instrucción(es); }
A continuación, se muestra la codificación de esta estructura con un ejemplo que analizaste en la Unidad 1: A través de una calificación de un examen tuyo cualquiera determinar si has “Aprobado”, si la calificación fue mínima de 7, y “Reprobado” en caso contrario. Ejemplo: Problema Entrada
102
Salida
¿Cuál fue la calificación de tu examen? 8
Con una calificación de 8 has Aprobado.
¿Cuál fue la calificación de tu examen? 6
Con una calificación de 6 has Reprobado.
Introducción a la programación
Análisis
Identificación de la solución: para solucionar este problema se necesita conocer la calificación obtenida y compararla con la calificación mínima aprobatoria, en caso de no ser igual indicar que es reprobatoria. Variable: calif Reglas: Sí calif >= 7: Aprobado; de lo contrario: Reprobado
Algoritmo
Inicio 1. Definir e inicializar variables (calif⟵0) 2. Preguntar: “¿Cuál fue la calificación de tu examen?” 3. Capturar valor a la variable calif 4. Si (calif>=7) entonces 4.1. Expresar: “Con una calificación de ” + calif + “has Aprobado” 5. De lo contrario 5.1. Expresar: “Con una calificación de ” + calif + “has Reprobado” 6. Fin del si Fin Lenguaje C++
#include <bits/stdc++.h> using namespace std; int main(){ int calif = 0; cout<<”¿Cuál fue la calificación de tu examen? “; cin>>calif; if(calif>=7){ cout<<”Con una calificación de “<<calif<<” has Aprobado”; }else{ cout<<”Con una calificación de “<<calif<<” has Reprobado”; } return 0; }
3.2.2.1. Selectivas dobles anidadas Para la codificación de las estructuras dobles anidadas se usan las palabras reservadas: if – else if, en español Si – de lo contrario Si, que sigue evaluando la condición hasta que se agoten todos los criterios necesarios. En los algoritmos Si (condición(es)) entonces Instrucción(es) De lo contrario Si(condición(es) entonces Instrucción(es) De lo contrario Instrucción(es) Fin del si
En C++ If(condición(es)){ Instrucción(es); }else if(condición(es){ Instrucción(es); }else{ Isntrucción(es); }
Creación de programas: modo consola
103
La codificación del siguiente ejemplo, te servirá de base para realizar aplicaciones en consola con la implementación de las estructuras de control selectivas dobles anidadas.
Problema
Un restaurant de tu ciudad decide ampliar sus ofertas de acuerdo a una escala de consumo, con relación a ella se determinará el descuento que se le hará a los clientes, y se calculará el impuesto (IVA: 16%) y el monto a pagar: Escala de descuento con base al consumo • 0 < consumo <=100, aplicar un 10% • 100 < consumo <=200, aplicar un 20% • 200 < consumo <= a, aplicar un 30% Ejemplo: Entrada ¿Cuánto fue el consumo del cliente? 189 ¿Cuánto fue el consumo del cliente? 256
Análisis
Algoritmo
Identificación de la solución: para calcular el descuento al importe a pagar, necesitas saber el importe de éste y con base en las reglas de descuento y aplicando un 16% más calcular el total pagar. Variable: consumo, total Reglas: - Si consumo > 0 AND consumo <=100: descuento 10% - Si consumo >100 AND consumo <=200: descuento 20% - Si consumo >200: descuento 30% Inicio 1. Definir e inicializar variables (consumo⟵0, total⟵0) 2. Preguntar: “¿Cuánto fue el consumo del cliente? ” 3. Capturar valor a la variable consumo 4. Si (consumo<=100) entonces 4.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.10))*1.16) 5. De lo contrario Si (consumo<=200) 5.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.20))*1.16) 6. De lo contrario 6.1. Asignar a total el resultado del cálculo (total⟵(consumo-(consumo*.30))*1.16) 7. Fin del si 8. Expresar: “El total a pagar son $” + total Fin Lenguaje C++
#include <bits/stdc++.h> using namespace std; int main(){
float consumo = 0, total = 0;
cout<<”¿Cuánto fue el consumo del cliente? “; cin>>consumo; if(consumo<=100){ total = (consumo*.10)*1.16; }else if(consumo<=200){ total = (consumo*.12)*1.16; }else{ Total = (consumo*.30)*1.16;
104
Salida El total a pagar son $175.39 El total a pagar son $207.87
Introducción a la programación
} cout<<”El total a pagar son $”<<total<<” MXN”; }
return 0;
A practicar Es momento de poner en práctica el uso de las estructuras de control selectivas. Con la guía de tu profesor corrige el código fuente del algoritmo que resuelve el siguiente problema: Al ingresar un número entero determinar si éste es POSITIVO, NEGATIVO o CERO. Entrada Introduce un número entero: 23 Introduce un número entero: –345
Salida El número 23 es un número ENTERO POSITIVO El número -345 es un número ENTERO NEGATIVO
1. Descarga los dos archivos, uno es de extensión cpp y el otro docx. Hazlo desde la URL: http://bit.ly/2p83Hd3 correspondiente al Enlace3.2_R1 o accede con el código QR del lado derecho. 2. Primero abre el archivo de MS Word que contiene la tabla de las fases de resolución de problemas. a. Sigue las indicaciones que tu profesor indique para llenar la tabla en cada una de las fases de resolución de problemas. b. Una vez que se realice la fase de Verificación e implementación, como corrida de escritorio y concluyan que el algoritmo es correcto, prosigue con las indicaciones de esta actividad. 3. Ejecuta la aplicación Dev C++ y desde la opción Abrir del menú Archivo o desde el comando Abrir archivo selecciona el archivo cpp que descargaste anteriormente. a. Escribe en la ventana del editor el código en C++ de tu programa. b. Guarda el programa con el nombre que te soliciten. 4. Para revisar si el programa tiene errores de sintaxis se requiere ejecutar la compilación, hazlo presionando la tecla <F9> o mediante el comando de acceso rápido Compilar. a. Observa en la sección inferior de la ventana de Dev C++ los errores de codificación encontrados, se muestran en inglés, por lo que deberás hacer uso de tus conocimientos adquiridos en la sección 3.1 para identificar los tipos de errores mostrados. b. Con la indicación que de tu profesor ve corrigiendo cada uno de los errores que el archivo que descargaste tenga. c. Una vez corregidos todos los errores, ejecuta el código de la consola del sistema presionando el comando Ejecutar o la tecla <F10>. 5. Después de probar el funcionamiento de tu aplicación de consola y verificar que todo marchó bien, comprime en una sola carpeta el archivo cpp y el archivo docx. Envía a tu profesor para recibir realimentación de la práctica.
Relaciónalo con… La acción de algunos comandos que se requieren para ejecutar un programa en lenguaje C++ son: Abrir. Compilar. Ejecutar.
Creación de programas: modo consola
105
Insignia Para obtener esta insignia y conseguir puntos extra, realiza lo siguiente: 1. Descarga el archivo de Word desde el hipervínculo http://bit.ly/2B0IBjv correspondiente al Enlace3.2_R2 o accede con el segundo código QR del lado izquierdo de esta página. 2. Resuelve el problema planteado en el documento y en el mismo desarrolla las fases de resolución de problemas. 3. Crea el diagrama de flujo adecuado que atienda todos los aspectos del algoritmo hecho. 4. Codifica el algoritmo creado en lenguaje C++ 5. Envía el documento a tu profesor para que evalúe tu participación extra.
3.2.3. Estructuras múltiples o de caso Recuerda que, dentro de las estructuras de control selectivo se ubican las selectivas de caso, cuyo funcionamiento consiste en permitir elegir entre dos o más opciones para ejecutar instrucciones. En el caso específico de lenguaje de programación C++ utilizan las palabras reservadas switch – case – break – default. En los algoritmos En caso de (op) caso op1: instrucción(es) Interrumpir caso op2: instrucción(es) interrumpir caso defecto: instrucción(es) Fin del caso
En C++ switch (op){ case 1: instrucción(es); break; case 2: instrucción(es); break; default: instrucción(es); }
Con relación a un número entero expresar el nombre del día de la semana al que pertenezca. Ejemplo: Problema
106
Entrada
Salida
Introduce un número entero: 3
El día 3 de la semana es el miércoles.
Introduce un número entero: 8
Opción no válida.
Introduce un número entero: 5
El día 5 de la semana es el viernes.
Introducción a la programación
Análisis
Identificación de la solución: para expresar el nombre del día de la semana es necesaria una lista de opciones para los números del 1 al 7 y una opción defecto para cualquier otra opción que no sea válida. Variable: dia Reglas: 1 – lunes; 2 – martes; 3 – miércoles; 4 – jueves; 5 – viernes; 6 – sábado; 7 – domingo
Algoritmo
Inicio 1. Definir e inicializar variables (dia⟵0) 2. Preguntar: “Introduce un numero entero:” 3. Capturar valor a la variable día 4. En caso de (dia) 4.1. caso 1: 4.1.1. Expresar (“El día ” + dia + “ de la semana es lunes.”) 4.1.2. Interrumpir 4.2. caso 2: 4.2.1. Expresar (“El día ” + dia + “ de la semana es martes.”) 4.2.2. Interrumpir 4.3. caso 3: 4.3.1. Expresar (“El día ” + dia + “ de la semana es miércoles.”) 4.3.2. Interrumpir 4.4. caso 4: 4.4.1. Expresar (“El día ” + dia + “ de la semana es jueves.”) 4.4.2. Interrumpir 4.5. caso 6: 4.5.1. Expresar (“El día ” + dia + “ de la semana es sábado.”) 4.5.2. Interrumpir 4.6. caso 7: 4.6.1. Expresar (“El día ” + dia + “ de la semana es domingo.”) 4.6.2. Interrumpir 4.7. caso defecto: 4.7.1. Expresar (“Opción no válida”) 5. Fin del caso Fin
Lenguaje C++ #include <bits/stdc++.h> using namespace std; int main(){ int dia = 0; cout<<”Introduce un numero entero: “; cin>>dia; switch(dia){ case 1: cout<<”El día “<<dia<<” de la semana break; case 2: cout<<”El día “<<dia<<” de la semana break; case 3: cout<<”El día “<<dia<<” de la semana break; case 4: cout<<”El día “<<dia<<” de la semana break; case 5: cout<<”El día “<<dia<<” de la semana break; case 6: cout<<”El día “<<dia<<” de la semana break; case 7: cout<<”El día “<<dia<<” de la semana break; case default: cout<<”Opción no válida”; } return 0; }
es lunes.”; es martes.”; es miércoles.”; es jueves.”; es viernes.”; es sábado.”; es domingo.”;
Creación de programas: modo consola
107
Encamina tus habilidades Es tiempo de demostrar tus aprendizajes acerca del uso de estructuras de control selectivas en lenguaje de programación C++, para ello realiza lo que a continuación se te solicita: 1. De manera individual, elabora un organizador gráfico, tipo mapa mental, donde la idea central sean las estructuras de control selectivo. 2. Indica en el organizador gráfico en qué tipo de situaciones se debe usar cada una de las estructuras de control selectivo. 3. Recuerda utilizar elementos visuales adecuados y creativos dentro del mapa mental. 4. Exporta el archivo como imagen de alta calidad con extensión png. 5. Envíalo a tu profesor por el medio que solicite y espera evaluación.
Conforme avanzas en el mundo de la programación el paradigma de este tema se vuelve un poco más complejo, sin embargo, no existe nada que con práctica y constancia no mejore. Para ayudarte en la codificación de las estructuras que aprendiste en esta secuencia, pueden serte de utilidad las sugerencias: • Evita la confusión entre = y == • Respeta la sangría en cada una de las instrucciones que pertenecen a cada estructura. • Al abrir una llave ({) presiona la tecla <Enter> para separarla de su cierre (}) y evitar borrarla o extraviarla entre el código. • Asigna a las variables nombres con títulos relacionados con el problema. • Recuerda siempre que al codificar las estructuras no llevan el signo de punto y coma (;) al final de ellas, éstas sólo pertenecen a las líneas de instrucciones codificadas.
Figura 3.12.
108
Introducción a la programación
Subproductos Subproducto Procedimental De manera individual y con base a lo que aprendiste en este tema de unidad 3, realiza los siguiente: 1. Descarga el archivo de Word desde el hipervínculo http://bit.ly/2OycQGC correspondiente al Procedimental3.2 o accede con el código QR del lado derecho de esta página. 2. Resuelve el problema planteado en el documento y en el mismo desarrolla las fases de resolución de problemas. 3. Crea el diagrama de flujo adecuado que atienda todos los aspectos del algoritmo hecho. 4. Codifica el algoritmo creado en lenguaje C++ 5. Envía el documento a tu profesor para recibir la evaluación de este subproducto.
Creación de programas: modo consola
109
3.3. Codificación de estructuras de control repetitivas A desarrollar Al término de esta secuencia describirás las reglas sintácticas y semánticas para declarar e inicializar variables y estructurar sentencias cíclicas en el lenguaje de programación estructurada C++. Además, codificarás en C++ algoritmos formales en editores de programas. También programarás secuencias lógicas de control repetitivo que den solución a problemas específicos. Como subproducto procedimental elaborarás una presentación electrónica con los temas abordados a lo largo de la unidad tres. Las actividades que realizarás en esta secuencia te servirán para: 4.1 Expresar ideas y conceptos mediante diversos sistemas de representación simbólica. 5.1 Seguir instrucciones y procedimientos de manera reflexiva en la búsqueda y adquisición de nuevos conocimientos. 5.2 Ordenar información de acuerdo a categorías, jerarquías y relaciones. 5.6 Utilizar las tecnologías de la información y comunicación para procesar e interpretar información. 5.7 Proponer soluciones a problemas del orden cotidiano, científico, tecnológico y filosófico. 6.4 Estructurar ideas y argumentos de manera clara, coherente y sintética. 7.3 Articular saberes de diversos campos y establecer relaciones entre estos y la vida cotidiana. 8.1 Plantear problemas y ofrecer alternativas de solución al desarrollar proyectos en equipos de trabajo, y definir un curso de acción con pasos específicos. 8.3 Asumir una actitud constructiva al intervenir en equipos de trabajo, congruente con los conocimientos y habilidades que posee.
De aquí en adelante Continuando en el ámbito de la codificación de algoritmos, pide a tu profesor que organice una lluvia de ideas para determinar cuál de los algoritmos descritos en el documento del enlace DeAquienAdelante3.3, puedes descargar desde esta URL: http://bit.ly/2M01b1C o bien desde el código QR; es el siguiente problema planteado: Capturar el nombre de un estudiante, para después obtener el promedio de n calificaciones ingresadas y determinar si el estudiante aprueba o reprueba; tomando en cuenta que el promedio mínimo aprobatorio es 6. Después de hacer la elección del algoritmo que consideres óptimo, expón en la lluvia de ideas, porqué desde tu punto de vista esa es la mejor elección.
110
Introducción a la programación
Para la codificación de las estructuras de control repetitivas en el lenguaje de programación de alto nivel C++, while, do while o for, es necesario tener claro el funcionamiento de cada uno de los bucles, sobre todo al estructurar las condiciones que deben cumplirse para seguir ejecutándose. Su codificación debe seguir las normas de sintaxis del lenguaje de programación y la secuencia de las estructuras de los algoritmos.
3.3.1. Estructura Mientras Al codificar la estructura de control repetitiva mientras, debes hacer uso de la palabra reservada de C++: while, cuyo significado en español es mientras la cual permite repetir la ejecución de instrucciones cada vez que una condición sea evaluada como verdadera. En los algoritmos Mientras (condición(es)) Haz Instrucción(es) Fin mientras
En C++ while(condición(es)){ Instrucción(es); }
Para que identifiques la sintaxis de codificación de esta estructura, retoma el siguiente ejemplo que analizaste desde la Unidad 1: Capturar consecutivamente números enteros hasta que se introduzca el número cero, para que al final se muestre como resultado la suma de todos los números ingresados. Ejemplo: Problema
Entrada
Salida
Introduce un número a sumar: 4 Introduce un número a sumar: 6 Introduce un número a sumar: 0
Análisis
Algoritmo
El total de la suma es 10
Identificación de la solución: Acumular la suma de los números enteros, hasta que se introduzca el número cero. Variable: suma, x , band Reglas: si band==true: suma⟵suma + x ; si x == 0 : band⟵false Inicio 1. Definir e inicializar variables (suma⟵0, x⟵0, band⟵true) 2. Mientras (band==true) haz 2.1. Preguntar “Introduce un número a sumar: ” 2.2. Capturar x 2.3. Acumular x en suma (suma ⟵ suma + x) 2.4. Si (x==0) entonces 2.4.1. Asignar el valor de false a band (band⟵false) 2.5. Fin del si 3. Fin Mientras 4. Expresar: “El total de la suma es ” + suma Fin
Creación de programas: modo consola
111
Lenguaje C++ #include <bits/stdc++.h> using namespace std; int main(){
int suma = 0, x = 0; bool band = true;
while(band){ cout<<”Introduce un número a sumar: “; cin>>x;
suma += x;
if(x==0){ band = false; } } cout<<”El total de la suma es “<<suma; return 0; }
3.3.2. Estructura Haz Mientras Para codificar la estructura de control repetitiva haz mientras, en el lenguaje de programación C++ es necesario usar las palabras reservadas do while, cuyo significado es haz mientras, debes recordar que esta estructura tiene como principal característica que permite ejecutar el bloque de instrucciones dentro del bucle al menos una vez antes de evaluar su(s) condición(es) y además es la única estructura de control que debe cerrarse con un ;. En los algoritmos Haz Instrucción(es) Mientras(condición(es))
En C++ do{ Instrucción(es); }while(condición(es));
Para que identifiques la sintaxis de codificación de esta estructura en el lenguaje C++, retoma el siguiente ejemplo: Calcular el promedio de varios números enteros positivos diferentes del número cero. En el momento que ingrese un cero a la lista se debe calcular el promedio de todos los números ingresados. Problema
Ejemplo: Entrada Introduce un número entero: 4 Introduce un número entero: 6 Introduce un número entero: 0
112
Introducción a la programación
Salida El promedio de los 2 datos es 5
Análisis
Identificación de la solución: se pedirá una lista de valores numéricos positivos y mientras el valor de entrada no sea cero se acumulará su suma y al final se dividirá entre la cantidad de números ingresados diferentes de cero. Variables: n, datos, promedio Reglas: n mientras n != 0 : promedio⟵promedio + n
Algoritmo
Inicio 1. Definir e inicializar variables (datos⟵0, n⟵0, promedio⟵0) 2. Haz 2.1. Preguntar “Introduce un número entero: ” 2.2. Capturar valor de la variable n 2.3. Si (n != 0) entonces 2.3.1. Acumular n en promedio (promedio⟵promedio + n) 2.3.2. Incrementar en 1 la variable datos (datos⟵datos +1) 2.4. Fin del Si 3. Mientras (n != 0) 4. Asignar a promedio el cálculo de (promedio¬ promedio/datos) 5. Expresar: “El promedio de los ” + datos + “ datos es ” + promedio Fin Lenguaje C++
#include <bits/stdc++.h> using namespace std; int main(){ float datos = 0, promedio = 0, n = 0; do{ cout<<”Introduce un número entero: “; cin>>n; if(n!=0){ promedio += n; datos++; } }while(n!=0); promedio = promedio/datos; }
cout<<”El promedio de los “<<datos<<” datos es “<<promedio; return 0;
Creación de programas: modo consola
113
A practicar Ahora pondrás en práctica el uso de las estructuras de control repetitivas que has aprendido hasta este momento. Con la guía de tu profesor corrige el código fuente del algoritmo que resuelve el siguiente problema: Ingresar el nombre completo de un alumno y un número de calificaciones para poderlas promediar, para expresar un veredicto de Aprobado o Reprobado. La captura de los valores de las calificaciones deberá parar al introducir un valor de -1. El resultado del promedio deberá mostrar sólo 2 posiciones decimales. Entrada Nombre del alumno: Juan Pérez Introduce una calificación: 10 Introduce una calificacion: 7 Introduce una calificación: 9 Introduce una calificación: –1
Salida El alumno Juan Pérez con 3 calificaciones ingresadas, obtuvo un promedio de 8.66, por lo tanto ha Aprobado.
1. Descarga el archivo docx. Hazlo desde la URL: http://bit.ly/2MqPkZu correspondiente al Enlace3.3_ R1 o accede con el código QR de esta actividad. 2. Abre el archivo en MS Word ya que contiene la tabla de las fases de resolución de problemas. a. Sigue las indicaciones que dé tu profesor para llenar la tabla en cada una de las fases de resolución de problemas. b. Una vez que se realice la fase de Verificación e implementación, como corrida de escritorio y concluyan que el algoritmo es correcto, prosigue con las indicaciones de esta actividad. 3. Ejecuta Dev C++. 4. Dirígete al menú Archivo y posiciona el cursor sobre en la opción Nuevo y elige la opción Archivo Fuente. 5. En el área de codificación teclea el siguiente código: #include <bits/stdc++.h> using namespace std; int main(){
float calif = 0, prom = 0, n = 0; string nombre = “”;
cout<<”Nombre del alumno: “; getline(cin,nombre); do{ cout<<”Introduce una calificación: “; cin>>calif; if(calif!=-1){ prom += calif; n++; } }while(calif!=-1); prom /= n;
}
114
if(prom>=6.00){ cout<<”El alumno “<<nombre<<” con “<<n<<” “<<fixed<<setprecision(2)<<prom<<”, por lo }else{ cout<<”El alumno “<<nombre<<” con “<<n<<” “<<fixed<<setprecision(2)<<prom<<”, por lo } return 0;
Introducción a la programación
calificaciones ingresadas, obtuvo un promedio de tanto ha Aprobado “ ; calificaciones ingresadas, obtuvo un promedio de tanto ha Reprobado “ ;
6. Ve al menú Archivo a la opción Guardar o Guardar Como… o bien presiona las teclas <Ctrl + S>, para guardar el código, colócale el nombre que tu profesor indique con extensión .cpp. 7. Continúa con la revisión de errores de codificación ejecutando la compilación, hazlo presionando la tecla <F9> o mediante el comando de acceso rápido Compilar. 8. Observa en la sección inferior de la ventana de Dev C++ los errores de codificación y solicita a tu profesor ayuda si algunos no logras comprenderlos. 9. Continúa realizando el punto número 5 hasta que ya no aparezcan errores de compilación. 10. Una vez corregidos todos los errores, ejecuta el código de la consola del sistema presionando el comando Ejecutar o la tecla <F10>. 11. Después de probar el funcionamiento de tu aplicación de consola y verificar que todo marchó bien, envía a tu profesor el archivo cpp que creaste y espera realimentación.
3.3.3. Estructura Para Al codificar la estructura de control repetitiva para, debes hacer uso de la palabra reservada de C++: for, cuyo significado en español es para la cual necesita de tres parámetros para funcionar adecuadamente. Algoritmo Para(inicio;condición(es);comportamiento) Instrucción(es) 1 Instrucción(es) n Fin para
En C++ For(inicio;condición(es);comportamiento){ Instrucción(es) 1; Instrucción(es) n; }
Para que identifiques la sintaxis de codificación de esta estructura, retoma el siguiente ejemplo que analizaste desde la Unidad 1: Contar cuántos números pares e impares existen en un rango de datos. Ejemplo: Problema
Entrada
Salida
Inicio del rango: 1 Fin del rango: 10
Del número 1 al número 10 existen 5 números pares y 5 números impares
Identificación de la solución: Para determinar si un número es par debe ser múltiplo de 2 de lo contrario es impar. Análisis
Variable: inicio, fin, pares, impares, i Reglas: Para i empezando en inicio, mientras i <= fin, aumenta en 1 i : Si (iMOD2==0) : aumenta en 1 pares, de lo contrario aumenta en 1 impares
Algoritmo
Inicio 1. Definir e inicializar variables (inicio⟵0, fin⟵0, i⟵0, pares⟵0, impares⟵0) 2. Preguntar “Inicio del rango: ” 3. Capturar valor de la variable inicio 4. Preguntar “Fin del rango: ”
Creación de programas: modo consola
115
Algoritmo
5. Capturar valor de la variable fin 6. Para (i⟵inicio; i<=fin; i⟵i + 1) 6.1. Si (iMOD2==0) entonces 6.1.1. Aumenta par en 1 (par⟵par + 1) 6.2. De lo contrario 6.2.1. Aumenta impar en 1 (impar⟵impar + 1) 7. Fin Para 8. Expresar: “Del número ” + inicio + “ al número ” + fin + “ existen ” + pares + “ números pares y ” + impares + “ números impares” Fin Inicio
A
inicio < -- 0 fin < -- 0 i < -- 0 pares < -- 0 impares < -- 0
i < -- inicio ; i <= fin ; i < -- i + 1
Sí “Inicio del rango:
iMOD2==0
pares <-- pares + 1
No
No
“Del número” + inicio +” al número” + fin + “existen” + pares + “números pares y” + impares + “números impares”.
impares <-- impares + 1
Diagrama de Flujo
Fin inicio
“Fin del rango:
fin
A
Lenguaje C++ #include <bits/stdc++.h> using namespace std; int main(){ int inicio = 0, i = 0, pares = 0, fin = 0, impares = 0; cout<<”Inicio del rango: “<<inicio; cout<<”Fin del rango: “<<fin; for(i=inicio;i<=fin;i++){ if(i%2==0){ pares++; }else{ impares++; } }
}
116
cout<<”Del número “<<incio<<” al número “<<fin” existen “<<pares<<” números pares y “”<<impares<<” números impares”<<; return 0;
Introducción a la programación
Encamina tus habilidades Es tiempo de demostrar tus aprendizajes acerca del uso de estructuras de control repetitivas en lenguaje de programación C++, para ello de manera individual realiza lo que a continuación se te solicita: 1. Descarga el archivo de Word desde el hipervínculo http://bit.ly/2pTkQaS correspondiente al Enlace3.3_R2 o accede con el código QR del lado izquierdo de esta página. 2. Resuelve el problema planteado en el documento el cual consiste en:
Calcular el factorial de un número entero positivo y expresar su resultado.
Ejemplo: Entrada Introduce un número: 4 Introduce un número: 7
Salida El 4! = 24 El 7! = 5040
3. Llena la tabla de las fases de resolución de problemas con la información necesaria. 4. Codifica el algoritmo creado en lenguaje C++. 5. Coloca ambos archivos en un directorio comprimido con el nombre que tu maestro solicite. 6. Envíalo a tu profesor por el medio que solicite y espera evaluación.
Cada una de las estructuras de control repetitivo, tiene sus particularidades sin embargo, las tres pueden ser usadas para resolver el mismo problema ya que su propósito es el mismo, pero no debes olvidar que programar también se trata de optimizar, así que siempre es necesario que antes de tomar la decisión de qué estructura de las abordadas en esta secuencia didáctica utilizarás para resolver un problema que implique ciclos, debes comparar su codificación y comportamiento. Para que te quede más claro este punto, realizarás la siguiente actividad.
A practicar 1. Retoma tus archivos elaborados a partir de la actividad anterior Encamina tus habilidades. 2. Pide a tu profesor que te muestre cómo podría codificarse el código de esa actividad con los tres diferentes tipos de estructuras repetitivas: a. while b. do while c. for 3. Sigue las indicaciones que dé tu profesor para codificar los tres archivos en el lenguaje C++.
Creación de programas: modo consola
117
4. A partir de observar el funcionamiento de las tres aplicaciones de consola, redacta en el archivo de la Tabla de las fases de resolución de problemas, un escrito reflexivo donde tomes en cuenta todos los pormenores del uso de cada estructura en el mismo problema. 5. Coloca los archivos de C++ y el de MS Word en un directorio comprimido. 6. Envíalo a tu profesor y espera realimentación.
Como ya se mencionó anteriormente, las estructuras de control repetititvas, son utilizadas en las aplicaciones de tus dispositivos electrónicos para mantenerse en ejecución hasta que tú decidas lo contrario, es decir, éstas se cierran hasta que tú eliges una vez que las ejecutaste, salir de ellas. Pero ¿cuál de las estructuras repetitivas debes utilizar?, ¿cómo puedes realizar esto en una aplicación de consola? Observa el siguiente ejemplo de una de las aplicaciones que se codificaron durante el curso, pero ahora agregándole el ciclo do while, para lograr que se mantenga en ejecución hasta solicitar lo contrario. Desarrolla una aplicación en consola que permita resolver el siguiente problema, pero que pueda mantenerse en ejecución mientras el usuario no decida lo contrario. Ingresar el nombre completo de un alumno y un número de calificaciones para poderlas promediar, para expresar un veredicto de Aprobado o Reprobado. La captura de los valores de las calificaciones deberá parar al introducir un valor de –1. El presultado del promedio deberá mostrar sólo 2 posiciones decimales. Problema
Entrada Nombre del alumno: Juan Pérez Introduce una calificación: 10 Introduce una calificación: 7 Introduce una calificación: 9 Introduce una calificación: –1
Análisis
Salida El alumno Juan Pérez con 3 calificaciones ingresadas, obtuvo un promedio de 8.66, por lo tanto ha Aprobado.
Identificación de la solución: se necesita la implementación de un bucle haz mientras, para lograr ejecutar por lo menos una vez el algoritmo y al final preguntar si se desea continuar realizando las instrucciones una vez más cada vuelta del bucle. Para calcular el promedio es necesario acumular las n calificaciones en una variable para después de que se capture un -1 poder realizar el cálculo del promedio. Variable: nombre, calif, prom, resp Reglas: n mientras clif != -1 : prom⟵prom + calif y n⟵n +1; prom⟵prom / n
Algoritmo
118
Inicio 1. Definir e inicializar variables (prom⟵0, n⟵0, calif⟵0, nombre⟵”” resp) 2. Haz 2.1. Preguntar “Nombre del alumno: ” 2.2. Capturar valor de la variable nombre 2.3. Haz 2.3.1. Preguntar “Introduce una calificación: ”
Introducción a la programación
2.3.2. Capturar valor de la variable calif 2.3.3. Si (calif !=-1) entonces 2.3.3.1. Acumular calif en prom (prom⟵prom + calif) 2.3.3.2. Aumenta n en 1 (n⟵n + 1) 2.3.4. Fin del Si 2.4. Mientras (calif !=-1) 2.5. Realizar la división para el promedio (prom⟵prom /n) 2.6. Si (prom>=6.00) entonces 2.6.1. Expresar: “El alumno ” + nombre + “ con ” + n + “ obtuvo un promedio de ” + prom + “ por lo tanto ha Aprobado” 2.7. De lo contrario 2.7.1. Expresar: “El alumno ” + nombre + “ con ” + n + “ obtuvo un promedio de ” + prom + “ por lo tanto ha Reprobado” 2.8. Fin del si 2.9. Preguntar “¿Deseas obtener el promedio de otro alumno más? [S=Si|N=No]: ” 2.10. Capturar valor de la variable resp 3. Mientras (resp==’S’ OR resp==’s’)
Algoritmo
Fin Inicio
prom < -- 0 n < -- 0 calif < -- 0
“Nombre del alumno: ”
Diagrama de Flujo
nombre
A
C
Sí
“Introduce una calificación:”
calif >= 6.0
“El alumno” + nombre + “con ”+ n +” calificaciones ingresadas, obtuvo un promedio de “+ prom +”, por lo tanto ha Aprobado”
calif
No
“El alumno” + nombre + “con ”+ n +” calificaciones ingresadas, obtuvo un promedio de “+ prom +”, por lo tanto ha Reprobado”
calif != –1 Sí
A
prom < -- prom + calif n < -- n + 1
resp==‘s’ OR resp==‘S’
No
calif != –1 No Sí B
Fin C B
Creación de programas: modo consola
119
Lenguaje C++ #include <bits/stdc++.h> using namespace std; int main(){ float prom = 0, n = 0, calif = 0; char resp; string nombre = “”; do{ system(“cls”); cout<<”Nombre del alumno: “; getline(cin,nombre); do{ cout<<”Introduce una calificacion: “; cin>>calif; if(calif!=-1){ prom += calif; n++; } }while(calif!=-1);
prom /= n;
if(prom>=6.00){ cout<<”El alumno tuvo un promedio Aprobado”; }else{ cout<<”El alumno tuvo un promedio Reprobado “ ; }
“<<nombre<<” con “<<n<<” calificaciones ingresadas, obde “<<fixed<<setprecision(2)<<prom<<”, por lo tanto esta
“<<nombre<<” con “<<n<<” calificaciones ingresadas, obde “<<fixed<<setprecision(2)<<prom<<”, por lo tanto esta
cout<<”\n¿Deseas obtener el promedio de otro alumno más? [S=Si|N=No]: “; cin>>resp; }while(resp==’s’ || resp==’S’); return 0; }
120
Introducción a la programación
Subproductos Subproducto Procedimental Evidencia el logro de tus competencias y del aprendizaje en codificación de procedimientos algorítmicos en lenguaje de programación C++, elaborando el siguiente subproducto procedimental: 1. Reúnete con un compañero y de manera colaborativa elaboren una presentación electrónica como herramienta de apoyo en la explicación de la codificación de algoritmos al lenguaje C++. 2. Describan de manera puntual y clara los procedimientos para obtener el Programa/código ejecutable. 3. Incluyan la explicación de la metodología para la codificación de aplicaciones: codificación del programa, compilación y ejecución, y verificación y depuración. 4. Inserten elementos multimedia, efectos de animación y transición necesarios para que su presentación sea creativa e innovadora. Recuerden no hacer uso excesivo de ellos. 5. Guarden la presentación en formato ppsx con el nombre que les indiquen y envíen a su profesor para recibir evaluación y comentarios de mejora en el caso de requerirse. Subproducto Actitudinal – Valoral Redacta un documento con tus conclusiones de la creación de aplicaciones codificando instrucciones en un lenguaje de programación, básate en las siguientes preguntas guía: • ¿Cuáles ventajas encuentras al desarrollar secuencias lógicas para resolver problemas mediante un lenguaje en modo consola? • ¿Qué ventajas rescatas de seguir una metodología para la codificación de algoritmos a lenguaje de programación? • ¿Crees que todos los problemas que se te presenten, pueden solucionarse aplicando el proceso que aprendiste en esta unidad? ¿Por qué? • ¿Despertó el lenguaje de programación C++ tu interés por la codificación de aplicaciones? Subproducto conceptual Relaciona cada interrogante con su respuesta correcta. 1. Es el responsable de que la computadora interprete las acciones que se ordenan y los comandos que han sido prefijados en el código, para ser ejecutados, interpretados y retransmitidos por el hardware. 2. Conjunto de líneas de código (instrucciones) que forman parte esencial de un programa informático. 3. Archivo diseñado para poder iniciar un programa. 4. Aplicación diseñada especialmente para introducir código para programas de cómputo. 5. Representan un único dato simple que puede ser de tipo char, byte, short, int, long, float, double, boolean.
( ) Programa ejecutable ( ) Datos primitivos ( ) programa/código fuente ( ) Editor de programas ( ) Lenguaje de programación
Creación de programas: modo consola
121
Producto integrador de unidad Es momento de evidenciar tus aprendizajes y el desarrollo de tus competencias. Para ello, como producto integrador de unidad elabora un escrito argumentativo con las siguientes características: 1. Trabaja con dos compañeros de manera colaborativa el producto integrador. En un documento de MS Word redacta un escrito donde argumente la secuencia lógica que se describió para resolver el problema de un número perfecto. 2. Descarguen el Enlace PIU_U3 de la siguiente dirección http://bit.ly/2VtENkg el documento de un ejemplo del problema a resolver. Accedan a él también desde el código QR de la derecha. 3. Utilicen el formato de las fases de resolución de problemas que han trabajado durante toda la unidad. Redacten de manera clara y puntual cada paso que siguieron para dar solución al problema planteado. 4. Guarden en una misma carpeta los archivos: a. Tabla de las fases de la resolución de problemas. b. Documento de una cuartilla de argumentación del procedimiento, incluyan los nombres completos de los integrantes de equipo. c. Archivos de código y de ejecutable generados por el editor DevC++. 5. Compriman la carpeta y envíen a su profesor para recibir evaluación.
Autoevaluación Como parte del proceso de autoevaluación contesta la siguiente escala de valores, con la que identificarás tu nivel de dominio en los aspectos relacionados a lo que aprendiste en esta unidad. Aspectos Identifico las etapas de la metodología de codificación de una aplicación. Selecciono las estructuras de control adecuada para resolver de manera óptima el problema. Identifico los tipos de datos que tiene cada variable. Utilizo los operadores aritméticos, lógicos y de relación de acuerdo al algoritmo diseñado. Codifico las instrucciones en lenguaje C++ de acuerdo a su sintaxis. Diferencio los tipos de archivo que se generan al crear un programa en consola. Identifico los tipos de errores que arroja la compilación de un programa. Resuelvo de manera óptima un problema determinado mediante la creación de programas en lenguaje C++
122
Introducción a la programación
Nivel de dominio 1 2 3 4 5
Comentarios
Coevaluación Evalúa el desempeño general de tu equipo en este bloque por medio de la siguiente guía de evaluación. 3 Buen trabajo
2 Algo nos faltó
1 Debemos mejorar
Evaluación
Organizamos el trabajo estipulando Se organizó el trabajo pero no se es- No hubo organización para realizar tareas, prioridades y plazos. tipularon tareas ni prioridades, ni el nuestros trabajos. plazo de entrega final. Cumplió cada quien con las tareas Casi todos los miembros del equipo Un solo miembro del equipo realizó asignadas y el plazo estipulado. cumplió con las tareas asignadas y todos los productos. el plazo estipulado; teniendo que resolver lo que a otros les fue encomendado. Todos participamos activamente en Casi todos los miembros del equipo No hubo participación activa de los la elaboración de los productos. participaron activamente en la ela- miembros del equipo en la elaboraboración de los prods. ción de los productos. La calidad de los productos elabo- La calidad de los productos elabora- No se cumplió con la calidad aderados, fue la adecuada para su en- dos, fue la en su mayoría la adecua- cuada de los productos para su entrega. da para su entrega. trega. Total
de 12
Evaluación Complete el crucigrama respondiendo las preguntas y colocándolas en la línea correspondiente. 1
HORIZONTALES 2
4. Error que implica ir al algoritmo, modificarlo y cambiar el programa fuente para compilar y ejecutar de nuevo. 5. Tipo de programación que codifica utilizando las tres estructuras de control básicas: secuencia, selección y repetición. 7. Tipo de errores que son por el uso incorrecto de las reglas del lenguaje de programación, comúnmente son errores de sintaxis. 9. Sintaxis en C++ del tipo de dato de texto con varios caracteres. 10. Lenguaje que consiste de cadenas de número que finalmente se traducen en unos y ceros.
3 4
5
6
7
8
VERTICALES 1. Conjunto de implementaciones funcionales, codificadas en un lenguaje de programación, que ofrece una interfaz bien definida que se invoca. 2. Lenguaje formal que proporciona una serie de instrucciones que permiten a un programador escribir algoritmos a modo de controlar el comportamiento físico y lógico de una computadora. 3. Lenguaje sencillo y fácil de leer, aunque generan un código menos eficiente que de bajo nivel.
9
10
6. Tipo de error que se produce por instrucciones que la computadora puede comprender, pero no ejecutar. 8. Es uno de los lenguajes de desarrollo de software más populares.
Introducción a la programación
123
Producto integrador de curso 1. Reúnete con los mismos compañeros que trabajaron el producto integrador de unidad 3 para resolver lo que se solicita. 2. Descarguen el archivo en formato pdf del Enlace PIC alojado en el sitio http://bit.ly/2oyW4MS . También pueden acceder a él usando el código QR. 3. Sigan las indicaciones que se describen en el documento para crear el diagrama de flujo y el código de programación de un Menú. 4. Redacten una conclusión de los procedimientos que siguieron para resolver. 5. Guarden y envíen para recibir evaluación.
124
Introducción a la programación
Evaluación Responde las siguientes preguntas: 1. ¿Cuál es la función de una variable dentro de un algoritmo? 2. ¿Cuál es la diferencia entre un operador lógico y un operador aritmético? 3. ¿Cuál es la diferencia entre diseñar un algoritmo, un diagrama de flujo y un pseudocódigo? 4. Describe ¿qué entiendes por programación en informática? 5. ¿Qué es la programación estructurada? 6. ¿En qué consiste la compilación y ejecución de código? 7. Describe las fases de resolución de problemas. 8. Describe en qué consiste la metodología para codificar algoritmos en un lenguaje de programación.
Introducción a la programación
125
Bibliografía CAIRÓ, O. (2007). Metodología de la programación. Alfaomega. México. DE ANDA, C., SANTIAGO, R. & QUINTERO, C. (2016). Laboratorio de cómputo IV. Santillana. México. DEITEL, P. & DEITLE, H. (2014). Cómo programar en C++. Pearson Educación. México. GARCÍA, S. (2010). Resolución de problemas matemáticos en la escuela primaria: proceso representacional, didáctico y evaluativo. Trillas. México. GOTTFRIED, B. (2005). Programación en C. McGRAW-HILL/INTERAMERICA DE ESPAÑA. Madrid. JAMRICH, P, & OJA, D. (2008). Conceptos de computación: nuevas perspectivas. Cengage Learning. México. JOYANES, L. (2013). Fundamentos generales de programación. McGRAW-HILL/INTERAMERICA DE ESPAÑA. Madrid. JOYANES, L. & ZAHONERO, I. (2005). Programación en C: Metodología, algoritmos y estructura de datos. McGRAW-HILL/INTERAMERICA DE ESPAÑA. Madrid. MIRANDA, E. & FUENLABRADA, S. (2015). Manejo de técnicas de programación. Pearson Educación. México. MARCELO, R. (2008). Fundamentos de programación C++ más de 100 algoritmos codificados. Macro E.I.R.L. editorial. Perú. PUNTAMBEKAR, A. (2009). Data, Structures & Algorithms. Technical Publications Pune. India. Referencias digitales
https://Scratch.mit.edu
Introducción a la programación
127
Impreso en Monterrey, México GYROS Ediciones, S.A. de C.V. Isabel la Católica No. 642, Col. Roma C.P. 64700, Monterrey, N.L., México
El presente título corresponde a la asignatura de Laboratorio de cómputo IV del Plan de estudios 2018 del Bachillerato General de la Universidad Autónoma de Sinaloa. Diseñado en un esfuerzo de trabajo por los coordinadores de la Academia de Informática de la Dirección General de Escuelas Preparatorias y el apoyo de profesores de distintas unidades académicas. Esta obra acerca al estudiante del bachillerato de la UAS al tratamiento digital de la información y diseño de secuencias lógicas de programación estructurada por medio de las computadoras. Los contenidos y actividades se diseñan bajo un modelo didáctico que contribuirán al desarrollo de las competencias genéricas y disciplinares de los estudiantes particularmente las del área de Comunicación, que buscan orientarlo hacia un desempeño idóneo en los diversos contextos tecnológicos, culturales y sociales, y hacerlo protagonista de su propio proceso de aprendizaje.