Instituto Tecnológico de Las Américas Facultad: Software 2023-C-1 Carrera: Desarrollo de Software Asignatura: Programación I Grupo: 11# (Mi - 8:00am a 12:00pm) Maestro: Jean Charly Joseph Saint Tema: Análisis del Libro "Fundamentos de programación" de Luis Joyanes Aguilar Estudiante: Rusbert Antonelly Sánchez Rosario Matrícula: 2022-0323 Fecha: 13/02/2023 "Fundamentos de Programación" de Luis Joyanes Aguilar 1. INTRODUCCIÓN A LAS COMPUTADORAS Y LOS LENGUAJES DE PROGRAMACIÓN. Análisis Propuesto del Capítulo. Las computadoras (ordenadores) electrónicas modernas son uno de los productos más importantes del siglo XXI ya que se han convertido en un dispositivo esencial en la vida diaria de las personas, como un electrodoméstico más del hogar o de la oficina y han cambiado el modo de vivir y de hacer negocios. Constituyen una herramienta esencial en muchas áreas: empresa, industria, gobierno, ciencia, educación..., en realidad en casi todos los campos de nuestras vidas. Son infinitas las aplicaciones que se pueden realizar con ellas: consultar el saldo de una cuenta corriente, retirar dinero de un banco, enviar o recibir mensajes por teléfonos celulares (móviles) que a su vez están conectados a potentes computadoras, escribir documentos, navegar por Internet, enviar y recibir correos electrónicos (email), etc. El papel de los programas de computadoras es fundamental; sin una lista de instrucciones a seguir, la computadora es virtualmente inútil. Los lenguajes de programación nos permiten escribir esos programas y por consiguiente comunicarnos con las computadoras. La principal razón para que las personas aprendan lenguajes y técnicas de programación es utilizar la computadora como una herramienta para resolver problemas. En el capítulo se introducen conceptos importantes tales como la organización de una computadora, el hardware, el software y sus componentes, y se introducen los lenguajes de programación más populares C, C++, Java o C#. Aprendizaje e Importancia de la Lectura. Una computadora es una máquina para procesar información y obtener resultados en función de unos datos de entrada y se divide en dos partes principales: • Hardware: parte física de una computadora. • Software: parte lógica de una computadora. Las computadoras se componen de: • Dispositivos de entrada y salida. • CPU • Memoria central. • Memoria auxiliar o externa. El software del sistema comprende, entre otros, el sistema operativo Windows, Linux, en computadoras personales y los lenguajes de programación. Los lenguajes de programación de alto nivel están diseñados para hacer más fácil la escritura de programas que los lenguajes de bajo nivel. Existen numerosos lenguajes de programación cada uno de los cuales tiene sus propias características y funcionalidades, y normalmente son más fáciles de transportar a máquinas diferentes que los escritos en lenguajes de bajo nivel. Los programas escritos en lenguaje de alto nivel deben ser traducido por un compilador antes de que se puedan ejecutar en una máquina específica. En la mayoría de los lenguajes de programación se requiere un compilador para cada máquina en la que se desea ejecutar programas escritos en un lenguaje específico. Los lenguajes de programación se clasifican en: • Alto nivel • Bajo nivel • Máquina • Diseño de Web Los programas traductores de lenguajes son: • Compiladores. • Intérpretes. Conclusión del Capítulo. Existen lenguajes específicos para cada tarea diferente. Los lenguajes y las Técnicas de Programación son importantes para la utilización de la computadora como una herramienta para resolver problemas. En computación, un Problema consiste en la necesidad de transformar un grupo de datos iniciales en un grupo diferente de datos finales (resultados). De este modo, una computadora podrá resolver un problema si alguien desarrolla un programa que contenga las instrucciones adecuadas que permitan transformar los datos. Los lenguajes deben ser confiables, comprensibles, eficientes en términos de tiempo de ejecución y consumo de espacio, y deben satisfacer las necesidades de una comunidad, ya sean científicos, hombres de negocios o usuarios no técnicos. Cada uno estos grupos está acostumbrado a un vocabulario particular y una manera de ver las cosas; de este modo, existe una gran variedad de lenguajes y muy probablemente esto continuará siendo así. 2. METODOLOGÍA DE LA PROGRAMACIÓN Y DESARROLLO DE SOFTWARE. Análisis Propuesto del Capítulo. Este capítulo le introduce a la metodología que hay que seguir para la resolución de problemas con computadoras. La resolución de un problema con una computadora se hace escribiendo un programa, que exige al menos los siguientes pasos: 1. 2. 3. 4. Definición o análisis del problema. Diseño del algoritmo. Transformación del algoritmo en un programa. Ejecución y validación del programa. Este capítulo introduce al lector en el concepto de algoritmo y de programa, así como las herramientas que permiten “dialogar” al usuario con la máquina: los lenguajes de programación. Aprendizaje e Importancia de la Lectura. Un método general para la resolución de un problema con computadora tiene las siguientes fases: 1. 2. 3. 4. 5. 6. Análisis del programa. Diseño del algoritmo. Codificación. Compilación y ejecución. Verificación. Documentación y mantenimiento. El sistema más idóneo para resolver un problema es descomponerlo en módulos más sencillos y luego, mediante diseños descendentes y refinamiento sucesivo, llegar a módulos fácilmente codificables. Estos módulos se deben codificar con las estructuras de control de programación estructurada. 1. Secuenciales: las instrucciones se ejecutan sucesivamente una después de otra. 2. Repetitivas: una serie de instrucciones se repiten una y otra vez hasta que se cumple una cierta condición. 3. Selectivas: permite elegir entre dos alternativas (dos conjuntos de instrucciones) dependiendo de una condición determinada). Resolución de Ejercicios. 2.2. Escribir un algoritmo para: a) b) c) d) Sumar dos números enteros. Restar dos números enteros. Multiplicar dos números enteros. Dividir un número entero por otro. 2.4. Diseñar un algoritmo que lea y visualice una serie de números distintos de cero. El algoritmo debe terminar con un valor cero que no se debe visualizar. Visualizar el número de valores leídos. 2.5. Diseñar un algoritmo que visualice y sume la serie de números 3, 6, 9, 12…, 99. 2.6. Escribir un algoritmo que lea cuatro números y a continuación visualice el mayor de los cuatro. 2.7. Diseñar un algoritmo que lea tres números y descubra si uno de ellos es la suma de los otros dos. 2.9. Diseñar un algoritmo para determinar los números primos iguales o menores que N (leído del teclado). (Un número primo sólo puede ser divisible por él mismo y por la unidad.) 2.10. Escribir un algoritmo que calcule la superficie de un triángulo en función de la base y la altura (S = 1/2 Base × Altura). 2.11. Calcular y visualizar la longitud de la circunferencia y el área de un círculo de radio dado. 2.12. Escribir un algoritmo que encuentre el salario semanal de un trabajador, dada la tarifa horaria y el número de horas trabajadas diariamente. 2.13. Escribir un algoritmo que indique si una palabra leída del teclado es un palíndromo. Un palíndromo (capicúa) es una palabra que se lee igual en ambos sentidos como “radar”. Conclusión del Capítulo. Hoy en día la comunicación, la tecnología y los sistemas de información avanzan y evolucionan a una velocidad exponencial generando consigo que la gestión de proyectos informáticos esté a la altura de la velocidad de los cambios ocasionados por esta evolución. El mundo del desarrollo del software ha cambiado drásticamente desde la aparición de internet y la gran cantidad de herramientas que nos permiten crear ecosistemas de trabajo mucho más colaborativos en los que el flujo de información es mucho más rápido que con las estructuras tradicionales. En esta nueva generación, las metodologías tradicionales de desarrollo de software fueron quedado obsoletas en determinados sectores, en los que la propia demanda de los usuarios es más rápida que la capacidad de producción de las empresas ancladas a las viejas metodologías de gestión de proyectos de sistemas informáticos. 3. ESTRUCTURA GENERAL DE UN PROGRAMA. Análisis Propuesto del Capítulo. En los capítulos anteriores se ha visto la forma de diseñar algoritmos para resolver problemas con computadora. En este capítulo se introduce al proceso de la programación que se manifiesta esencialmente en los programas. El concepto de programa como un conjunto de instrucciones y sus tipos constituye la parte fundamental del capítulo. La descripción de los elementos básicos de programación, que se encontrarán en casi todos los programas: interruptores, contadores, totalizadores, etc., junto con las normas elementales para la escritura de algoritmos y programas, conforman el resto del capítulo. En el capítulo se examinan los importantes conceptos de datos, constantes y variables, expresiones, operaciones de asignación y la manipulación de las entradas y salidas de información, así como la realización de las funciones internas como elemento clave en el manejo de datos. Por último se describen reglas de escritura y de estilo para la realización de algoritmos y su posterior conversión en programas. Aprendizaje e Importancia de la Lectura. Un programa es un conjunto de instrucciones que se proporciona a una computadora para realizar una tarea determinada. El proceso de programación requiere las siguientes fases o etapas fundamentales: definición y análisis del problema, diseño del algoritmo, codificación del programa, depuración y verificación, documentación y mantenimiento. En la práctica un programa es una caja negra —un algoritmo de resolución del problema— que tiene una entrada de datos y una salida de resultados. La entrada de datos se realiza a través del teclado, ratón, escáner, discos... y la salida se representa en impresora, pantalla, etc. Existen diferentes tipos de instrucciones básicas: • • • • • • Inicio Fin Asignación Lectura Escritura Bifurcación Los elementos básicos constitutivos de un programa son: palabras reservadas, identificadores, caracteres especiales, constantes, variables, expresiones, instrucciones a los cuales se unen para tareas de ejecución de operaciones otros elementos primitivos de un programa, tales como: bucles, contadores, acumuladores, interruptores y estructuras. Todos estos elementos manipulan datos o información de diferentes tipos como numéricos, lógicos o carácter. Los valores de estos datos se almacenan para su tratamiento en constantes y variables. Las combinaciones de constantes, variables, símbolos de operaciones, nombres de funciones, etc., constituyen las expresiones que a su vez se clasifican en función del tipo de objetos que manipulan en: aritméticas, relacionales, lógicas y carácter. Otro concepto importante para considerar en la iniciación a la programación es el concepto y tipos de operadores que sirven para la resolución de expresiones y constituyen elementos clave en las sentencias de flujo de control que se estudiarán en los capítulos posteriores. La operación de asignación es un sistema de almacenamiento de valores en una variable. Existen diferentes tipos de asignaciones en función de los tipos de datos cuyos deseos se desean almacenar. La conversión de tipos en operaciones de asignaciones es una tarea importante y su comprensión es vital para evitar errores en el proceso de depuración de un programa. La última característica importante para considerar en el capítulo es la escritura de algoritmos y programas, para lo que se necesitan unas reglas claras y precisas que faciliten su legibilidad y su posterior codificación en un lenguaje de programación. Resolución de Ejercicios. 3.2. ¿Cuáles de los siguientes identificadores no son válidos? a) XRayo b) X_Rayo c) R2D2 d) X e) 45 (no válido) f) N14 g) ZZZZ h) 3μ (no válido) 3.3. ¿Cuáles de las siguientes constantes no son válidas? a) 234 b) –8.975 c) 12E – 5 (no válido) d) 0 e) 32,767 f) 1/2 g) 3.6E + 7 (no válido) h) –7E12 i) 3.5 x 10 (no válido) j) 0,456 k) 0.000001 l) 224E1 3.4. Evaluar la siguiente expresión para A = 2 y B = 5: 3*A-4*B/A^2 =3*2–4*5/2^2 = 6 – 4 * 5 / = 6 – 4 * 1.25 =6–5 =1 3.5. Evaluar la expresión: 4/2*3/6+6/2/1/5^2/4*2 = 2 * 3 / 6 + 6 / 2 / 1 / 25 / 4 * 2 = 6 / 6 + 6 / 2 / 1 / 25 / 4 *2 = 1 + 6 / 2 / 1 / 25 / 4* 2 = 1 + 3 / 1 / 25 / 4 * 2 = 1 + 3 / 25 / 4 * 2 = 1 + 0.12 / 4 * 2 = 1 + 0.03 * 2 = 1 + 0.06 = 1.06 3.6. Escribir las siguientes expresiones algebraicas como expresiones algorítmicas: a) √𝑏2 − 4𝑎𝑐 = sqrt(b ^ 2) – 4 * a * c b) 𝑥 2+ 𝑦2 = (x ^ 2 + y ^ 2) / z ^ 2 𝑧2 c) 3𝑥 + 2𝑦 d) 𝑎+𝑏 2𝑧 𝑐−𝑑 = (3 * x + 2 * y) / 2 * z = (a + b) / (c - d) e) 4𝑥 2 − 2𝑥 + 7 = 4 * x ^2 – 2 * x + 7 f) 𝑥+𝑦 g) 𝑎 𝑥 𝑏𝑐 − 3𝑥 5 = (x + y) / x – (3 * x) / 5 = a / (b * c) h) xyz = x * y * z i) 𝑦2 − 𝑦1 𝑥2 − 𝑥1 = (𝑦2 − 𝑦1 ) / (𝑥2 − 𝑥1 ) j) 2𝜋𝑟 = 2 * pi * r k) 4 3 𝜋𝑟 3 = (4 / 3) * pi * r ^ 3 l) (𝑥2 − 𝑥1 )2 + (𝑦2 − 𝑦1 )2 = (𝑥2 − 𝑥1 ) ^ 2 + (𝑦2 − 𝑦1 ) ^ 2 3.7. Escribir las siguientes expresiones algorítmicas como expresiones algebraicas: a) b ^ 2 – 4 * a * c = 𝑏2 − 4𝑎𝑐 b) 3 * X ^ 4 – 5 * X ^ 3 + X 12 – 17 = 3𝑋 4 − 5𝑋 3 + 𝑋12 − 17 c) (b + d) / (c + 4) = 𝑏+𝑑 𝑐+4 1 d) (x ^ 2 + y ^ 2) ^ (1 / 2) = (𝑥 2 + 𝑦 2 )2 3.8. Si el valor de A es 4, el valor de B es 5 y el valor de C es 1, evaluar las siguientes expresiones: a) B * A – B ^ 2 / 4 * C = 5 * 4 - 5 ^ 2 / 4 * 1 = 20 – 25 / 4 = 13.75 b) (A * B) / 3 ^ 2 = (4 * 5) / 3 ^ 2 = 20 / 9 = 2.22 c) (((B + C) / 2 * A + 10) * 3 * B) – 6 = (((5 + 1) / 2 * 4 + 10) * 3 * 5) – 6 = ((6 / 2 * 4 + 10) * 15) - 6 = ((3 * 4 + 10) * 15) – 6 = (22 * 15) - 6 = 330 - 6 = 324 3.9. Si el valor de A es 2, B es 3 y C es 2, evaluar la expresión: A ^ B ^ C = 2 ^ (3 ^ 2) = 2 ^ 9 = 512 3.10. Obtener el valor de cada una de las siguientes expresiones aritméticas: a) b) c) d) e) f) g) h) 7 div 2 = 3.5 7 mod 2 = 1 12 div 3 = 4 12 mod 3 = 0 0 mod 5 = 0 15 mod 5 = 0 7 * 10 – 50 mod 3 * 4 + 9 = 70 – 50 % 12 + 9 = 70 – 2 + 9 = 71 (7 * (10 – 5) mod 3) * 4 + 9 = ((7 * 5) % 3) * 4 + 9 = (35 % 3) * 4 + 9 = 17 3.22. Diseñar un diagrama que permita realizar un contador e imprimir los cien primeros números enteros. Conclusión del Capítulo. Este capítulo también habla de cuáles son los elementos importantes que poseen los programas que es necesario dominar para una adecuada implementación de los idiomas programación, ejemplo: cambio, ciclos, contadores, letras y números especiales, constantes. Destaca qué tipos de datos se utilizan, si son booleanos, cadena, entero, coma flotante, etc. Lo más probable, de modo que en el caso esencial otros programadores puedan entender codificar de manera eficiente o traducir ese código a lenguaje máquina, también da una breve descripción del valor de la documentación del código programadores el trabajo de leer código largo y ayudar a descubrir qué trabaja la práctica que el código en el programa. Me gustaría aclarar que encuentro que la lectura es muy efectiva gracias a todo lo que dije antes, porque estas son las bases para lograr algoritmos que funcionen correctamente y ayuden a resolver un problema de forma adecuada.