BELTRÁN FRANCO
El capítulo 5 de c++ se descarga de la página web, con
la clave que se suministra en el momento de la compra
del libro. al igual que los códigos de DFD y de Devc++
9 789584 489876
ISBN 978-958-44-8987-6
Apuntes de clase de
Algoritmos
Apuntes de clase de
Algoritmos
Nelson Francisco
Beltrán Franco
Derechos Reservados © 2011 por Nelson Francisco Beltrán Franco Esta obra es propiedad intelectual de su autor y el editor de la publicación. Prohibida su reproducción parcial o total por cualquier medio sin permiso escrito del propietario de los derechos del copyright.
Nota importante:
La información contenida en esta obra tiene un fin exclusivamente didáctico, no está prevista su utilización a nivel profesional o industrial. Las indicaciones técnicas y programas incluidos, han sido elaborador con atención y cuidado por el autor y reproducidos bajo estrictas normas de control. Nelson Francisco Beltrán Franco, no será jurídicamente responsable por errores u omisiones; daños y perjuicios que se puedan atribuir al uso de la información comprendida en este libro, ni por el uso indebido que se le dé.
Internet: http://www.nefrabel.net/libros/algoritmos.php Email: [email protected]
ISBN: 978-958-44-8987-6
9 789584 489876
Se imprimieron 1000 ejemplares en el mes de Julio de 2011
Impreso en Bogotá D.C., Colombia por Nelson Francisco Beltrán Franco.
A María Teresa y Agustín, por un pronto reencuentro.
Los créditos de este trabajo indiscutiblemente sólo le corresponden a Dios, a quien le agradezco por darme cada día una nueva oportunidad. Los errores y equivocaciones si son de mi autoría.
vii
Agradecimientos
En la realización de este trabajo, recibí el apoyo y respaldo de varias personas que me animaron en todo momento, para no desfallecer cuando por cansancio o dificultades cotidianas, llegué a pensar en abandonar este proyecto. A todos ellos les doy un agradecimiento y reconocimiento por su solidaridad.
A mi hermana Clara, quien me colaboró con las continuas y repetidas revisiones del material escrito, por su respaldo incondicional y sincero en el desarrollo de este proyecto, y en todas las demás actividades y dificultades de la vida, le estoy afectuosamente agradecido. A mi hermana Bernarda, quien con su silenciosa y sigilosa presencia, me demostró que siempre cuento con su compañía y apoyo, le doy un cariñoso agradecimiento. De la misma forma a mis otras hermanas y hermanos con quienes siempre he contado.
Quiero agradecer especialmente a Ernesto Carrillo Mora, quien ha estado pendiente del desarrollo del proyecto, y en los momentos en que parecía que se complicaban las cosas, estuvo presente, animándome y respaldándome.
ix
Contenido
Introducción ... 1
Capítulo 1: Procesos secuenciales ... 5
1 Procesos secuenciales ... 5 1.1 Introducción ... 5 1.2 Análisis de la información ... 6 1.3 Algoritmo ... 9 1.4 Seudocódigo ... 10 1.5 Diagrama de flujo ... 11 1.6 Prueba de escritorio ... 14 1.7 Operadores aritméticos ... 16 1.8 Expresiones lógicas ... 20 1.8.1 Operadores relacionales ... 20 1.8.2 Operadores lógicos ... 22
1.9 Tablas de certeza de los operadores lógicos ... 24
1.10 Procesos secuenciales ... 26
EJERCICIOS DE INICIACIÓN ... 27
E.1.1 ... 27
x
E.1.3 ... 32 E.1.4 ... 35 E.1.5 ... 39 1.11 Resumen ... 46 EJERCICIOS PROPUESTOS ... 49 EP.1.1 ... 49 EP.1.2 ... 49 EP.1.3 ... 49 EP.1.4 ... 49 EP.1.5 ... 49 EP.1.6 ... 49 EP.1.7 ... 50 EP.1.8 ... 50 EP.1.9 ... 50 EP.1.10 ... 50Capítulo 2: Procesos de decisión ... 51
2 Proceso de toma de decisiones ... 51
2.1 Proceso Si _____; haga _____ ... 51
EJERCICIOS DE INICIACIÓN ... 52
xi
E.2.2 ... 55 E.2.3 ... 59 E.2.4 ... 65 E.2.5 ... 70 E.2.6 ... 752.2 Proceso Si _____ ; haga _____ ; sino haga _____ ... 79
E.2.7 ... 79
E.2.8 ... 84
E.2.9 ... 89
2.3 Proceso de selección múltiple ... 93
E.2.10 ... 95 E.2.11 ... 99 E.2.12 ... 103 2.4 Resumen ... 113 EJERCICIOS PROPUESTOS ... 115 EP.2.1 ... 115 EP.2.2 ... 115 EP.2.3 ... 115 EP.2.4 ... 115 EP.2.5 ... 116 EP.2.6 ... 116
xii
EP.2.7 ... 116
EP.2.8 ... 116
EP.2.9 ... 117
Capítulo 3: Procesos repetitivos ... 119
3 Procesos repetitivos ... 119
3.1 Proceso Para ________ hasta ________ de a ________ ... 119
E.3.1 ... 120
E.3.2 ... 126
E.3.3 ... 128
E.3.4 ... 133
E.3.5 ... 138
3.2 Proceso Mientras Qué __________ haga ... 144
E.3.6 ... 145 E.3.7 ... 150 E.3.8 ... 155 E.3.9 ... 160 E.3.10 ... 164 3.3 Resumen ... 168 EJERCICIOS PROPUESTOS ... 169 EP.3.1 ... 169
xiii
EP.3.2 ... 169 EP.3.3 ... 170 EP.3.4 ... 170 EP.3.5 ... 170 EP.3.6 ... 171 EP.3.7 ... 171 EP.3.8 ... 171 Capítulo 4: Arreglos ... 173 E.4.1 ... 175 E.4.2 ... 180 E.4.3 ... 185 4.2 Resumen ... 189 EJERCICIOS PROPUESTOS ... 190 EP.4.1 ... 190 EP.4.2 ... 190 EP.4.3 ... 190 EP.4.4 ... 191 EP.4.5 ... 192 EP.4.6 ... 192 EP.4.7 ... 193xiv
EP.4.8 ... 193 EP.4.9 ... 193 EP.4.10 ... 193 Capítulo 5: C++ ... 195 5.1 Estudio de un programa en C++ ... 195 E.5.1 ... 195 5.2 Comentarios ... 1965.3 Caracteres de impresión especiales ... 199
Bibliografía ... 201
Introducción
Este libro se escribió para que sea estudiado y consultado, por los estudiantes de educación técnica, tecnológica y universitaria que necesiten cursar materias relacionadas con la computación o la definición de algoritmos. La literatura relacionada con los temas previos a la programación es escasa.
Los libros que se encuentran en el mercado, abordan la programación en diferentes lenguajes, pero no tienen en cuenta que los estudiantes puedan tener dudas o vacíos en el desarrollo o planteamiento de un algoritmo, para luego ser traducido a un lenguaje de programación específico. Cuando estaba empezando a realizar este trabajo, algunos estudiantes de ingeniería de sistemas y de tecnologías en sistemas, revisaron los borradores y comentaron, “si en la universidad hubiera encontrado un libro que explicara como plantear un algoritmo tan fácil, no habría repetido la materia y aprender a programar hubiera sido más sencillo.”
Enseñar a pensar es complicado, cada persona, realiza esta actividad de acuerdo a sus experiencias vividas, al entorno en el cual fue educado y en el medio en que se ha desenvuelto, sin olvidar su herencia genética. Con este trabajo sólo quiero mostrarle al lector cuáles son los pasos que puede seguir para definir correctamente un algoritmo, y comprobar su funcionamiento antes de traducirlo a un lenguaje de programación.
Todas las personas aplican inconscientemente algoritmos en las actividades que desarrolla en su vida cotidiana. Para cocinar, para trabajar, estudiar, hacer sus oficios, pero en el momento en que se le pide que escriba un algoritmo, se quedan bloqueadas, no saben por donde empezar.
Por esta razón, antes de empezar a codificar un algoritmo en cualquier lenguaje de programación, se le debe enseñar al estudiante cómo escribir sus algoritmos y comprobar su funcionamiento. Y no como acostumbran la mayoría de los
maestros, saltarse la parte de los algoritmos, para empezar con un lenguaje de programación, dejando vacíos en la formación técnica de los estudiantes que más adelante se vuelven insalvables.
Pensando en los estudiantes que se encuentran con estos problemas en el curso de su formación técnica y universitaria, se escribió este libro. El contenido del libro, consiste en una parte teórica puntual, y ejercicios resueltos con cierto grado de dificultad, que le permiten al estudiante observar como se aplican los conceptos que se exponen en los capítulos.
El primer capítulo trabaja los procesos secuenciales, y la metodología que se debe aplicar para resolver los problemas que se presentan cuando se va a definir un algoritmo.
El segundo capítulo contiene los procesos de decisión. Se encuentran varios ejercicios resueltos, en todas sus etapas, que le permiten al lector comprobar que estos pasos realmente son apropiados para llegar a una respuesta correcta.
El capítulo tercero desarrolla los procesos secuenciales, aplicando los conceptos estudiados en los dos primeros capítulos, utilizando la metodología de ejercicios resueltos.
El cuarto capítulo maneja los conceptos relacionados con los arreglos, desarrollando ejercicios que le permiten al estudiante aprender a definir algoritmos para manejar volúmenes de información un poco más complicados.
El quinto capítulo trata los temas relacionados con C++. En este capítulo se van a aplicar los conocimientos adquiridos en los cuatro primeros, para aprender a manejar este lenguaje. Se va a tratar hasta programación orientada a objetos. Puede ser descargado en formato PDF, de la página web del autor.
Para desarrollar los ejercicios resueltos y propuestos, de cada capítulo se utilizó el programa SmartDFD, que es de distribución
gratuita y se puede descargar de la página de internet de los autores del programa http://wiki.freaks-unidos.net/freedfd/index Los ejercicios desarrollados en cada capítulo, pueden ser descargados de http://www.nefrabel.net/libros/algoritmos.php, allí también encuentra la opción de hacer consultas en línea de los temas del libro.
Los ejercicios realizados en el capítulo 5, funcionan con cualquier compilador de C++, pero cuando se escribió este libro, se utilizó Dev-C++ versión 4.9.9.2. Este software es de distribución gratuita y la última versión se puede descargar de la página de los autores http://www.bloodshed.net/
Para poder descargar estos ejercicios, debe utilizar la clave que aparece en la primera página. Esta clave la puede usar una sola vez, es única e irrepetible, y le sirve para recibir información adicional y otros ejercicios que he desarrollado para que sean estudiados por los lectores del libro.
Los comentarios relacionados con el contenido del libro, o los ejercicios pueden ser enviados al correo [email protected].
1 Procesos secuenciales
1.1 IntroducciónEn el diseño de programas para computadores hay tres elementos que es necesario tener en cuenta:
Entrada de datos. Procesamiento de datos Obtención de resultados
Los datos de entrada corresponden a la información inicial que se tiene de una situación determinada, que se quiere automatizar o modificar la forma como está sistematizada o como funciona manualmente.
El procesamiento de datos consiste en el análisis y manejo que se debe hacer a los datos de entrada, para obtener algunos resultados intermedios, que permiten llegar a la respuesta deseada o producto final.
La obtención de resultados, es el paso final del proceso que se realiza y proporciona la información que se espera obtener después de haber analizado y trabajado con los datos iniciales.
Cuando se trabaja solucionando los inconvenientes que se presentan en los programas de computadores, es necesario conocer todas las estructuras lógicas que se pueden utilizar para hacer que el computador ejecute de la manera más rápida y eficiente los códigos, sin presentar errores que hagan fallar los programas. Estas fallas o errores son la consecuencia de haberse equivocado en el momento de escribir el algoritmo que va a servir para resolver el problema, o en el momento de escribir el código en el lenguaje que se está trabajando. Estas situaciones erróneas se presentan porque el programador desconoce o no sabe aplicar las estructuras básicas, para hacer los algoritmos que definen los diferentes caminos y pasos que debe seguir el computador para ejecutar el correcto procesamiento de los datos.
En este libro se van a tratar las estructuras utilizadas para escribir correctamente un algoritmo.
Para evitar estos inconvenientes en el momento de ejecutar un programa, es importante conocer todos los procesos lógicos que se utilizan para el procesamiento de la información, así como los pasos que se requieren para verificar que los algoritmos escritos por el programador están bien utilizados y arrojan los resultados esperados.
En este primer capítulo, se va a explicar el funcionamiento del proceso secuencial y las herramientas o procedimientos que permiten probar, que el trabajo que se está haciendo es correcto y procesa la información de la manera que se está pensando.
Se aplica una metodología que le permita al programador, seguir una secuencia lógica adecuada para resolver los problemas que se presentan en el momento previo a escribir el código de un programa en cualquier lenguaje; estos pasos son: el análisis de la información, definir cuál es el algoritmo a aplicar, escribir el seudocódigo, realizar el diagrama de flujo y hacer la prueba de escritorio para comprobar que el trabajo está bien hecho y está entregando los resultados esperados.
1.2 Análisis de la información
Cuando se necesita un programador de computadores, es porque se quiere sistematizar un procedimiento que se está ejecutando manualmente o se necesita modificar un código ya existente.
Generalmente el usuario no sabe definir cuál es el problema. Sólo dice quiero sistematizar esta actividad, o quiero que modifiquen este programa, o esta página web, para que haga las cosas de otra forma diferente a como las está ejecutando; pero él no define el problema en términos precisos que entienda el profesional o experto que va a contratar para que realice esta tarea. Esta definición del problema la debe hacer el programador que está ejecutando el
proyecto, de la manera más precisa posible, teniendo en cuenta todas las posibilidades y requerimientos que desea el cliente.
Este proceso de analizar la información es muy importante y se toma muy a la ligera, porque se debe tener bien claro qué es lo que quiere y necesita la persona o la empresa que va a mandar hacer un programa, y qué es lo que ha entendido quien va a hacer la programación. Porque es muy frecuente que cuando se termina el trabajo de la programación y se va a entregar el programa ya funcionando, el cliente que ha mandado hacer la aplicación dice, pero yo quería que hiciera esto o aquéllo y no lo está haciendo, y el programador contesta, pero eso fue lo que usted me dijo que hiciera, o fue lo que yo le entendí.
Para evitar que se presente esta situación, es conveniente que se realice un documento por escrito que contenga la información que suministra el cliente, qué quiere que haga el programa o qué quiere que se haga con esta información y por último qué resultados quiere que le entregue el programa ya terminado y funcionando.
Es al programador de computadores o desarrollador de software, a quien le corresponde plantear el problema a solucionar, con base en todos los datos suministrados por el cliente y los observados por él en las diferentes visitas realizadas para hacer el levantamiento de la información y procesos en el campo de trabajo.
Cuando ya se conoce cuál es la situación problema, el paso a seguir es determinar con qué se cuenta para empezar el trabajo, esto quiere decir qué debemos conocer, cuál es la información inicial que se tiene para empezar a hacer el estudio o análisis.
Luego se debe saber cuáles son los procesos que hay que realizar y qué datos intermedios se deben conocer; que no son los resultados finales, pero son pasos o datos que van a permitir llegar a los resultados finales que se quieren obtener.
Por ejemplo, si se quiere preparar un suculento sancocho de pescado, no se van a introducir todos los ingredientes en el
recipiente y luego colocarlos en el fuego, porque lo que se tendría al final no sería un sancocho de pescado y mucho menos suculento. Es claro que hay toda una serie de pasos y procedimientos que se deben seguir para que este plato sea el esperado. Si se alteran o se omiten, el resultado es incierto e inesperado.
Para solucionar un problema de programación de computadores o escribir el código de un programa, se debe seguir un procedimiento lógico, conociendo cuáles pasos van primero, cuáles después y qué hace cada uno de ellos, porque no se pueden realizar de manera desordenada debido a que el resultado es sorpresivo, y corregirlo conlleva rediseñar el algoritmo y reescribir el código y esto representa tiempo y dinero que no va a asumir el cliente, sino el programador o la empresa que está realizando el proyecto. Si estos errores son cometidos por un programador que trabaja en una empresa, es muy probable que pierda su empleo y, si es el dueño de la compañía, pues no va a tener éxito en su trabajo.
Si se tienen en cuenta estas indicaciones antes de empezar a escribir el algoritmo, se puede estar seguro de que se están contemplando las diferentes alternativas y se está minimizando el número de posibilidades de que el algoritmo esté errado o presente inconsistencias.
Ejemplo
En una oficina los empleados se encuentran trabajando normalmente, pero inesperadamente, la oficina se queda a oscuras. Una de las personas presentes prende y apaga nuevamente el interruptor del fluido eléctrico en la oficina y puede comprobar que el bombillo no prende y, al salir de la oficina, comprueba que las otras oficinas aledañas tienen iluminación.
¿Qué fue lo que hizo el empleado al verificar si prendía el bombillo y comprobar si las otras oficinas contiguas estaban iluminadas?
Estaba recolectando la información necesaria para saber qué estaba pasando y cuáles son las alternativas para solucionar el problema. En pocas palabras estaba recolectando la información de campo. Con esta información ya está preparado para definir el problema y saber qué necesita para solucionarlo.
El problema es: “se dañó la bombilla que está colocada, hay que cambiarla por una nueva”.
¿Qué se necesita para solucionarlo? un bombillo.
una banca o una escalera para pararse y poder cambiar el bombillo.
Ya se sabe qué está pasando, qué se necesita y cómo se debe hacer, entonces ahora si se puede empezar a definir el algoritmo. 1.3 Algoritmo
El segundo paso para buscar la solución a un problema de programación de computadores es realizar el algoritmo que defina los pasos finitos que se deben ejecutar en un orden lógico establecido, después de tener clara la información que se tiene para empezar, así como qué procesos, herramientas o datos se requieren como información intermedia, para poder llegar a los resultados finales.
En pocas palabras, un algoritmo es una receta que se debe realizar con pasos finitos, ordenados, que permiten obtener un resultado específico, teniendo en cuenta los ingredientes necesarios para el respectivo platillo que indica la receta y en qué forma y momento se deben aplicar para no llegar al final a un resultado diferente y además inesperado, teniendo resultados equivocados, que van a hacer que se tenga que empezar nuevamente el trabajo, ocasionando pérdida de tiempo y dinero.
Ejemplo
Continuando con el ejemplo anterior, y aplicando la definición de algoritmo, se deben definir los pasos que se van a ejecutar para poder restablecer nuevamente la iluminación de la oficina. Los pasos necesarios a seguir, son los siguientes:
Paso 1: Buscar el bombillo de repuesto Paso 2: Desconectar el fluido eléctrico
Paso 3: Colocar una escalera, cajón o banca debajo del bombillo Paso 4: Pararse sobre la escalera, cajón o banca
Paso 5: Desenroscar el bombillo averiado Paso 6: Enroscar el nuevo bombillo
Paso 7: Bajar de la escalera, cajón o banca Paso 8: Encender el fluido eléctrico
Si se siguen estos pasos en este orden, es seguro que el empleado podrá restablecer nuevamente la iluminación de la oficina para continuar trabajando. Este es el algoritmo que sirve para cambiar el bombillo. Cambiar el orden de los pasos no va a permitir que se pueda lograr el objetivo que se quiere lograr: restablecer la iluminación de la oficina.
Todas las personas actúan de acuerdo a algoritmos que se establecen en la mente. Se tienen algoritmos para bañarse, para vestirse, para cocinar, trabajar, estudiar, para todo y se siguen inconscientemente.
1.4 Seudocódigo
El paso siguiente es realizar el seudocódigo. El seudocódigo es una forma de expresar las instrucciones que se realizan en el algoritmo, de la manera más parecida a como se expresarían en un lenguaje de programación.
El realizar el seudocódigo permite fácilmente escribir después o traducir el código en un lenguaje de programación determinado, con mayor fluidez y rapidez.
Ejemplo
Buscar el bombillo de repuesto. Desconectar el fluido eléctrico.
Colocar una escalera, cajón o banca debajo del bombillo. Pararse sobre la escalera, cajón o banca.
Desenroscar el bombillo averiado. Enroscar el nuevo bombillo.
Bajar de la escalera, cajón o banca. Encender el fluido eléctrico.
1.5 Diagrama de flujo
Si se expresan las ideas por medio de dibujos y diagramas, es más sencillo que sean comprendidas por las personas a las cuales se las presentamos.
Los diagramas de flujo son representaciones gráficas de los algoritmos. Esta herramienta hace que cuando se trabaja con algoritmos complicados, se pueda ver con más claridad el camino a seguir y sea fácil verificar cuál es la forma como se va a comportar el flujo de la información.
Como su nombre lo indica, un diagrama de flujo muestra cuáles son los caminos que se deben seguir para ejecutar una actividad o un proceso. Permite ver la selección de alternativas de decisión, de acuerdo a los resultados intermedios que se van presentando a medida que se hace el recorrido por el diagrama, y así poder verificar que se están realizando las instrucciones correctamente. El realizar el diagrama de flujo cuando se está trabajando en un proyecto de programación de computadores, es útil porque le permite al programador encontrar nuevas alternativas que puede usar en el algoritmo ya que es más fácil verlas gráficamente.
Existen en el mercado programas que permiten realizar los diagramas de flujo y verificar los resultados intermedios y finales del algoritmo. Los ejercicios que se realizaron en este libro fueron probados con el programa Smart DFD 1.0, es un software gratuito de libre distribución, que se puede descargar de internet o la versión libre actualizada FreeDFD1.1, también gratuita se puede descargar de http://wiki.freaks-unidos.net/freedfd/index#c-digo-fuente. Fue realizado por estudiantes de la Universidad del Magdalena en Santa Marta - Colombia.
Para el diseño de los diagramas de flujo se utilizan diferentes dibujos o símbolos que sirven para indicar las operaciones que se ejecutan en un programa de computación. Estos dibujos le permiten al programador identificar qué tipo de instrucción tiene que ejecutar, si se debe tomar una decisión, realizar un ciclo repetitivo, seguir un proceso secuencial, leer un arreglo, ejecutar una operación, presentar un mensaje por pantalla o realizar una impresión.
En la Tabla 1.1 se pueden ver las convenciones y símbolos utilizados para el diseño de los diagramas de flujo. Si se encuentra la misma convención en dos diagramas de flujo diferentes, ésta tiene el mismo significado y representa la misma acción.
Óvalo Para iniciar y
terminar
Rectángulo Para realizar
cálculos o procesos
Trapecio Para entrada
manual de datos
Paralelogramo Para entrada de
Figura 1.1
En la Figura 1.1 del ejemplo, se puede ver la forma como se aplican algunos de los símbolos que se encuentran en la Tabla 1.1.
Este símbolo se utiliza para indicar el punto de inicio del diagrama de flujo o el final del mismo.
La flecha indica la conexión entre dos símbolos y la dirección que sigue la información en el diagrama.
El rectángulo representa la ejecución de una operación, instrucción o la asignación de un valor a una variable. 1.6 Prueba de escritorio
Cuando se ha realizado el análisis del problema y se tiene claro qué operaciones se deben hacer, qué decisiones se deben tomar, así como qué variables intervienen y qué resultados se esperan
Subirse sobre la escalera o cajón Desenroscar el bombillo averiado Enroscar el nuevo bombillo
Bajar del cajón Encender el fluido
eléctrico Terminar
Inicio
Bajar del cajón
obtener, ya se está listo para definir el algoritmo. Teniendo creado el algoritmo, se puede escribir el seudocódigo, realizar el diagrama de flujo y por último hacer la prueba de escritorio para comprobar su funcionamiento y finalmente verificar los resultados que arroja. En conclusión la prueba de escritorio es la prueba final del algoritmo, antes de pasar al lenguaje de programación. El trabajo realizado hasta este momento, es previo a escribir el código en cualquier lenguaje de programación.
En el desarrollo de los algoritmos para resolver problemas de diseño de programas para computadoras o desarrollo de software, se van a utilizar variables y constantes.
Una variable es un espacio temporal de memoria, donde se va a almacenar la información mientras se esté ejecutando el algoritmo o el programa. Esta información se puede cambiar durante la ejecución del programa.
Una contante es un valor fijo que se guarda en un espacio de memoria en forma temporal, mientras se esté ejecutando el algoritmo o el programa. Esta información no se puede cambiar durante la ejecución del programa.
Un programa es un conjunto de instrucciones que sigue el computador, para poder alcanzar un resultado específico. Los programas están escritos en lenguajes de programación, que pueden ser entendidos por el computador.
Cuando se está escribiendo un programa de computador, es necesario utilizar diferentes estructuras para controlar el flujo de las operaciones a realizar y de las decisiones que se deben tomar. Hay procesos que son secuenciales, condicionales y repetitivos. La correcta aplicación de estos procesos se conoce como programación estructurada. Para cada uno de estos procesos es necesario utilizar símbolos diferentes y estructuras lógicas diferentes, ya que en cada uno de ellos los datos se manejan de manera completamente diferente.
1.7 Operadores aritméticos
Para realizar las operaciones matemáticas es necesario utilizar los operadores aritméticos, que permiten hacer las operaciones aritméticas entre constantes, números y variables. Cuando se realizan estas operaciones se obtiene como resultado un número. En la Tabla 1.2 se encuentran los operadores aritméticos, y se indica qué clase de operación se puede realizar con cada uno de ellos. Estos operadores se utilizan en los algoritmos, seudocódigos y diagramas de flujo. Operadores aritméticos Operador Operación ** Exponenciación * Multiplicación / División + Suma - Resta
Mod Módulo (residuo) Div División entera
Tabla 1.2
Algunos ejemplos de la aplicación de estos operadores son: Exponenciación: 7 ** 2 = 49 Multiplicación: 9 * 11 = 99 División: 15 / 2 = 7.5 Suma: 3 + 2.5 = 5.5 Resta: 3 - 2.5 = 0.5 Módulo: 7 mod 2 = 1
División entera: 7 div 2 = 3
El resultado que se obtiene con mod es el residuo de la división, en el ejemplo anterior si 2 en 7 está 3 veces, queda 1 de residuo. Cuando se realizan operaciones con los operadores aritméticos, se presentan expresiones más complicadas que estos ejemplos que se acaban de hacer, entonces en esos casos se debe respetar la jerarquía o prelación en el orden de realizar las operaciones. Se puede observar la Tabla 1.3 en donde se encuentra la prelación de mayor a menor para cada uno de los operadores aritméticos.
Jerarquía operadores aritméticos
Operador Operación Jerarquía
() Parentesis Mayor
** Exponenciación
*, /, mod,
div Multiplicación, división, módulo, división entera
+, - Suma, resta Menor
Tabla 1.3
En una expresión la operación que se realiza primero, es la que se encuentran entre paréntesis, luego sigue la exponenciación porque tiene la mayor prelación, luego siguen la multiplicación, división, módulo, división entera que tienen el mismo grado de jerarquía y por último la suma y resta que tienen la menor prioridad.
Para resolver una expresión aritmética se deben cumplir los siguientes puntos:
1. Primero se desarrollan las expresiones que se encuentran entre paréntesis, respetando la jerarquía de los operadores aritméticos. Si hay operaciones que se encuentran entre paréntesis que están anidados, entonces se empieza desde el paréntesis que se encuentra en el último nivel de anidamiento.
Ejemplo: (((4+3)/2)*5)**2 (((7)/2)*5)**2 ((3.5)*5)**2 (17.5)**2 306.25
2. La jerarquía de los operadores aritméticos se aplica de izquierda a derecha. Ejemplo: 3 – 7 + 9 -4 + 9 5 Ejemplo: 3 * 7 + 9 / 2 – 8 21 + 9 / 2 – 8 21 + 4.5 – 8 25.5 – 8 25.5 - 8 17.5
Ejemplo: 4 ** 2 * 3 + 7 / 4 16 * 3 + 7 / 4 48 + 7 / 4 49.75 Ejemplo: 6 + (4 ** 2 * 3 + 7 / 4) mod 3 + 7 * 9 6 + (16 * 3 + 7 / 4) mod 3 + 7 * 9 6 + (48 + 7 / 4) mod 3 + 7 * 9 6 + (48 + 1.75) mod 3 + 7 * 9 6 + (49.75) mod 3 + 7 * 9 6 + 1.75 + 7 * 9 6 + 1.75 + 63 7.75 + 63 70.75 Ejemplo: (6 + (4 ** (2 * 3 + 7) / 4)) div ((3 + 7) * 9) (6 + (4 ** (6 + 7) / 4)) div ((3 + 7) * 9) (6 + (4 ** (13) / 4)) div ((3 + 7) * 9)
(6 + (67108864 / 4)) div ((3 + 7) * 9) (6 + (16777216)) div ((3 + 7) * 9) (16777222) div ((3 + 7) * 9) (16777222) div ((10) * 9) 16777222 div 90 186413 1.8 Expresiones lógicas
Las expresiones lógicas también conocidas como booleanas, están compuestas por números, constantes, variables y operadores relacionales o lógicos. Cuando se evalúan estas expresiones, el resultado que se obtiene es verdadero o falso. Se utilizan en los procesos de decisión y en una clase de proceso repetitivo, de acuerdo al valor que dé después de evaluar la expresión, se determina qué camino o alternativa se sigue en el algoritmo.
1.8.1 Operadores relacionales
Esta clase de operadores se utiliza para comparar dos números, constantes, variables, expresiones alfanuméricas o expresiones aritméticas. Cuando se validan las expresiones con operadores relacionales se obtienen solamente dos resultados verdadero o falso.
Operadores relacionales Operador Operación = Igual a <> Diferente a < Menor que > Mayor que
<= Menor o igual que >= Mayor o igual que
Algunas expresiones como ejemplos con estos operadores son: Ejemplo: 5 = 3; Falso e <> E; Verdadero 5 > 3; Verdadero 5 < 3; Falso 5 >= 3; Verdadero 9 <= 3; Falso Ejemplo: X = -5 Y = 3 (X * 9) > (-Y / 13) -45 > -0.230769 Falso Ejemplo: N = 5 M = 2 (N * 9 + 7 * 2) / M <> (M / 3 + 4 / 6) – 4 ** (0.5 + 2 * M) (45 + 7 * 2) / M <> (M / 3 + 4 / 6) – 4 ** (0.5 + 2 * M)
(45 + 14) / M <> (M / 3 + 4 / 6) – 4 ** (0.5 + 2 * M) (59) / M <> (M / 3 + 4 / 6) – 4 ** (0.5 + 2 * M) 29.5 <> (M / 3 + 4 / 6) – 4 ** (0.5 + 2 * M) 29.5 <> (0.666667 + 4 / 6) – 4 ** (0.5 + 2 * M) 29.5 <> (0.666667 + 0.666667) – 4 ** (0.5 + 2 * M) 29.5 <> (1.333333) – 4 ** (0.5 + 2 * M) 29.5 <> (1.333333) – 4 ** (0.5 + 4) 29.5 <> (1.333333) – 4 ** 4.5 29.5 <> (1.333333) – 512 29.5 <> -510.667 Verdadero 1.8.2 Operadores lógicos
Estos operadores hacen posible establecer condiciones complejas, partiendo de expresiones sencillas. Los operadores lógicos son (Y) que corresponde a la conjunción, (O) a la disyunción y (NO) a la negación. En la Tabla 1.5, se encuentran los operadores lógicos, la prioridad o jerarquía que ejercen en las expresiones lógicas y qué significan.
Jerarquía operadores lógicos
Operador Operación Jerarquía Significado No P; No P; P Mayor No es cierto P
Y P y Q; P & Q; P Q P también Q O P o Q; P Q Menor Al menos P al menos Q
El operador No, hace las veces de término de enlace y niega la proposición.
Ejemplo:
Sea la proposición P “El día esta soleado”. Al salir a la calle se verifica que el cielo está nublado y está lloviendo. Entonces la proposición no es cierta, y se expresa de la siguiente forma:
No (El día está soleado.) P
P
Da como resultado: El día no está soleado.
El operador No, es una negación de la proposición y es el término de enlace.
Ejemplo:
La luna no está hecha de queso.
La proposición es “la luna está hecha de queso”, el término de enlace es no. Se tiene como resultado una negación.
El operador Y forma una conjunción, también cumple la función de término de enlace, por ejemplo si se tienen las proposiciones P “el día está soleado” y la proposición Q “está haciendo calor”, entonces el papel que desempeña el operador o término de enlace es:
P Q P & Q P y Q
Se puede escribir de estas tres formas y significan lo mismo. La proposición es:
El día está soleado y está haciendo calor.
El operador O forma una disyunción, cumple la función de término de enlace, por ejemplo si se tienen las proposiciones P “Rocío está en Bogotá” y la proposición Q “no viajó el fin de semana”, entonces el papel que desempeña el operador o término de enlace es:
P Q P o Q
Se puede representar de estas dos formas y tienen el mismo significado. La proposición entonces queda:
Rocío está en Bogotá o no viajó el fin de semana. 1.9 Tablas de certeza de los operadores lógicos
Para poder saber si las proposiciones son ciertas o falsas, se utilizan las tablas de certeza. A continuación se encuentran las tablas de certeza, para los tres operadores o términos de enlace vistos.
Negación
P P
Cierta Falsa Falsa Cierta
Tabla 1.6
En el ejemplo 5 > 3 la proposición es cierta, y al hacer la negación (5>3) es falsa, porque cinco es mayor que tres. Cuando la proposición es Falsa, 5 < 3 al hacer la negación (5<3), pasa a ser Cierta. En conclusión la negación de una proposición cierta es falsa y la negación de una proposición falsa es cierta.
Esta es la tabla para el caso de la conjunción (Y). Conjunción (Y)
P Q P Q Cierta Cierta Cierta Cierta Falsa Falsa
Falsa Cierta Falsa Falsa Falsa Falsa
Tabla 1.7
Para que la proposición sea cierta, se requiere que las dos proposiciones que está uniendo el operador o término de enlace sean ciertas. Si alguna de las dos no es Cierta, la proposición es Falsa.
En este ejemplo (3 = 9/3) 4 es divisible por 2; las 2 proposiciones son ciertas, entonces la conjunción es Cierta.
Si (3 = 9/2) 4 es divisible por 2; la primera es Falsa y la segunda es Cierta, entonces la conjunción es Falsa. La conjunción es cierta si y solo si las dos proposiciones son ciertas.
Para la disyunción (O) se tiene la Tabla 1.8 Conjunción (O) P Q P Q Cierta Cierta Cierta Cierta Falsa Cierta Falsa Cierta Cierta Falsa Falsa Falsa
Tabla 1.8
Utilizando las proposiciones del ejemplo anterior, Si (3 = 9/2) v 4 es divisible por 2; la primera es Falsa y la segunda es Cierta, entonces la conjunción es Cierta. La disyunción de dos proposiciones es cierta si y solo si al menos una de las dos proposiciones es cierta.
Esta información es importante en programación y computación no sólo en el diseño de algoritmos, también se utiliza en compuertas o circuitos lógicos, matemáticas discretas y lógica.
A continuación está la Tabla 1.9 que contiene las prioridades o jerarquías de los operadores aritméticos, relacionales y lógicas.
Jerarquía de los operadores Operador Jerarquía () Mayor ** *, /, mod, div +, - =, <>, <, >, <=, >= No Y O Menor Tabla 1.9 1.10 Procesos secuenciales
La manera más sencilla de realizar un proceso es de forma secuencial, y esto se presenta cuando no se tienen que evaluar varias opciones o realizar un conjunto de operaciones varias veces consecutivas. El único requisito de este proceso, es que las instrucciones estén debidamente ordenadas y se realicen una a continuación de la otra, para evitar sorpresas desagradables en el momento de tener las respuestas o resultados. Esta es la estructura más sencilla que se utiliza en el momento de estar programando. El ejemplo anterior de cambiar un bombillo, corresponde a un proceso secuencial, porque no hubo necesidad de evaluar ningún valor para seguir una ruta específica dentro del algoritmo o realizar procesos repetitivos.
Se inician los ejercicios estudiando esta clase de procesos y explicando de forma clara y sencilla, en qué consiste cada una de las instrucciones y qué resultados se obtienen con ellas, de la misma
manera como se aplican los operadores aritméticos, lógicos y relacionales que se van a utilizar en el transcurso del libro.
EJERCICIOS DE INICIACIÓN
E.1.1 Cree un algoritmo para sumar dos números. Análisis de la información
Se tienen dos números y se sabe qué operación se desea realizar con ellos. En este caso se conocen los datos de entrada, qué se debe hacer con ellos y qué resultados se espera que presente el algoritmo al final.
Algoritmo
Como se tiene claro con qué información se empieza a trabajar y qué se debe hacer con ella, ya se puede escribir el algoritmo.
Paso 1: Lea el primer número Paso 2: Lea el segundo número
Paso 3: Realice la suma del primer número y del segundo número, luego guárdelo en una variable llamada suma
Paso 4: Presente el resultado de la suma de los dos números guardado en la variable suma
Ya se tiene el algoritmo, como se puede ver es una secuencia ordenada de pasos finitos que se deben realizar para obtener el resultado esperado. Este tipo de algoritmo es para un proceso secuencial.
Como ya se mencionó un proceso secuencial es el que se utiliza para ejecutar los algoritmos que realizan instrucciones que no requieren decisiones o procesos repetitivos.
Seudocódigo
Leer segundo número
Haga suma igual a primer número más segundo número Presentar suma
Diagrama de flujo
Para realizar el diagrama de flujo, se parte de las instrucciones escritas en el seudocódigo, entonces:
Figura 1.2
Con el símbolo se da comienzo al diagrama de flujo y a los procesos que se quieren realizar con él.
Los símbolos y se utilizan para indicar que se están leyendo el primer número y el segundo número. Con se ejecuta la suma del primer número y el segundo número y se guarda en una variable llamada suma. Para presentar el resultado de todo el proceso que está almacenado en la variable suma, se utiliza
Inicia r
Primer número Segundo número
Suma = Primero + Segundo
Suma Iniciar
Primer número
Segundo número
Suma = Primero + Segundo
Suma
Ya se realizaron todas las instrucciones establecidas en el algoritmo, entonces para indicar que ya se termina el proceso, se utiliza
Prueba de escritorio
Para hacer la prueba de escritorio, es necesario tomar unos valores reales y realizar todos los pasos que indica el algoritmo.
Se va a utilizar una tabla para ir almacenando los valores de cada variable y se realiza la prueba de escritorio con los valores 1 para el primer número y 2 para el segundo número
Primero Segundo
1 2
Tabla 1.10
Se han leído para la variable Primero el valor 1 y para la variable Segundo el valor 2. Hasta ahora se han ejecutado las tres primeras instrucciones del diagrama de flujo. Se sigue con la cuarta instrucción que indica que se realice la suma de los dos valores que se almacenan en las variables y se guarde en la variable Suma y da como resultado 3
Primero Segundo Suma
1 2 3
Tabla 1.11
Se continúa con la última instrucción para presentar el resultado de la variable Suma.
Primero Segundo Suma Presentar Suma
1 2 3 3
Tabla 1.12
Se comprobó que el algoritmo si ejecuta la suma de dos números y por último presenta el resultado obtenido.
E.1.2 Crear un algoritmo que calcule el área de un círculo. Análisis de la información
Para realizar el cálculo del área de un círculo, se necesita conocer el radio del círculo y luego reemplazar este valor en la fórmula del área de un círculo que es siento R el radio del círculo y = 3.141592. Ahora ya se pueden realizar las operaciones indicadas para obtener el valor buscado.
Algoritmo
Paso 1: Conocer el valor del radio del círculo
Paso 2: Reemplazar el valor del radio en la fórmula Paso 3: Presentar el área del círculo
Seudocódigo
Leer valor del radio Haga Presentar el valor de A Diagrama de flujo Figura 1.3 Iniciar Radio A= Radio² A Terminar
El símbolo indica que comienzan a ejecutarse las instrucciones del algoritmo que se representan por medio del diagrama de flujo.
La primera instrucción que se ejecuta es leer el valor del radio y se representa por medio de
Para ejecutar unas operaciones y asignar estos resultados a una variable, se hace de la siguiente forma . Acá se realiza la operación para calcular el área del círculo y luego se guarda el resultado en una variable llamada A.
Una vez se tiene el valor del área del círculo almacenado en la variable A, el paso siguiente es presentar el resultado al usuario. Este proceso se indica en el diagrama de flujo con el siguiente símbolo
Por último, para indicar que se terminó el proceso del algoritmo, se utiliza la siguiente figura.
Prueba de escritorio
Ya se tiene creado el algoritmo, se escribió el seudocódigo, y se expresó gráficamente por medio del diagrama de flujo, ahora es el momento de probar con valores reales si este proceso arroja los valores esperados o si se cometieron errores en el momento de crear el algoritmo.
Para el radio se toma un valor igual a 1 y para = 3.141592 Radio 1 3.141592 Tabla 1.13 Iniciar Radio A = *Radio² A Terminar
El algoritmo indica que se debe reemplazar el valor del radio y de en la formula . El producto de estas dos cantidades da como resultado el área del círculo que se almacena en la variable A.
Radio A
1 3.141592 3.141592 Tabla 1.14
Se ha comprobado que el algoritmo está correctamente diseñado y arroja los valores esperados.
E.1.3 Crear un algoritmo que calcule la suma de dos números, del primero reste el segundo y el producto de ellos. Por último que presente los valores contenidos en las variables Suma, Resta y Producto.
Análisis de la información
Inicialmente se necesita conocer el valor de los dos números para realizar la suma, luego del primer número restar el segundo, y por último multiplicar el primer número por el segundo. El valor de la suma se almacena en una variable Suma, la resta en una variable llamada Resta y el producto en una llamada Producto.
Algoritmo
Paso 1: Conocer primer número Paso 2: Conocer segundo número
Paso 3: Sume el primer número al segundo número y almacénelo en Suma
Paso 4: Del primer número reste el segundo número y almacénelo en Resta
Paso 5: Multiplique el primer número por el segundo número y almacénelo en Producto.
Seudocódigo
Lea número primero Lea número segundo
Haga Suma = primero + segundo Haga Resta = primero – segundo Haga Producto = primero * segundo Presentar Suma, Resta, Producto Terminar Diagrama de flujo Figura 1.4 Iniciar primero segundo
Suma = primero + segundo
Resta = primero - segundo
Producto = primero * segundo
Suma, Resta, Producto
Prueba de escritorio
Ahora es necesario verificar que el algoritmo que se ha diseñado, está cumpliendo con las necesidades establecidas por el enunciado inicial del ejercicio.
Para poder lograr esto, se va a realizar la prueba de escritorio, tomando dos números para cada una de las variables primero y segundo, luego se ejecutan las instrucciones indicadas y se comprueba si los resultados obtenidos son los esperados.
Primero Segundo
1 2
Tabla 1.15
De acuerdo con el algoritmo, se debe realizar la suma de estas dos variables y guardar este resultado en una variable llamada Suma que es igual a 3.
Primero Segundo Suma
1 2 3
Tabla 1.16
Se continúa con la instrucción siguiente establecida en el algoritmo, que consiste en restar del valor de la variable Primero el valor de la variable Segundo y guardarlo en la variable Resta que es igual a -1.
Primero Segundo Suma Resta
1 2 3 -1
Tabla 1.17
La siguiente instrucción consiste en realizar el producto de los valores almacenados en las variables Primero y Segundo. Este resultado se almacena en la variable Producto y es igual a 2.
Primero Segundo Suma Resta Producto
1 2 3 -1 2
Tabla 1.18
Para finalizar, se debe presentar el valor de las variables Suma, Resta y Producto.
Primero Segundo Suma Resta Producto Presentar
Suma Presentar Resta Presentar Producto
1 2 3 -1 2 3 -1 2
Tabla 1.19
De esta forma quedan ejecutadas todas las operaciones indicadas en el algoritmo. Los valores obtenidos en cada una de las operaciones, son congruentes con los valores esperados para este algoritmo. E.1.4 Escriba un algoritmo que indique la manera como se prepara una mantecada.
Análisis de la información
Para preparar una mantecada, primero se deben tener a mano todos los ingredientes que se necesitan y luego, saber cuál es la forma exacta de preparación.
Los ingredientes que se deben tener a mano para preparar la mantecada son:
¾ de libra de mantequilla o margarina o manteca de marrano.
1 libra de azúcar.
2 copas de aguardiente. 10 huevos.
tazas rasas de fécula de maíz. ½ taza de harina de trigo 1/8 de cucharadita de sal.
Ya se sabe cuáles son los materiales o ingredientes necesarios para preparar la mantecada, ahora se necesita saber qué se debe hacer con estos elementos, en qué forma se deben mezclar, en qué momento y a qué temperatura se deben cocinar. Se necesitan además los siguientes implementos para la preparación de la mantecada.
1 horno que pueda calentar a 350 ºF
1 lata o molde para poder agregar la masa antes de meterla al horno.
1 recipiente auxiliar, para hacer el batido y mezcla de los ingredientes.
Algoritmo
Este es el momento de indicar qué procedimiento se debe seguir con todos estos ingredientes e implementos.
Paso 1: Caliente el horno a 350 ºF (moderado). Paso 2: Engrase una lata.
Paso 3: Bata la margarina con el azúcar hasta formar crema suave y agregue los huevos.
Paso 4: Mezcle y añada poco a poco la fécula de maíz. Paso 5: Añada la harina de trigo y la sal.
Paso 6: Revuelva la mezcla. Paso 7: Añada el aguardiente.
Paso 8: Bata hasta conseguir que se incorporen todos los ingredientes o se consiga una mezcla lo más homogénea posible. Paso 9: Vierta la masa en la lata engrasada y deje cocinar en el horno calentado previamente por aproximadamente 35 minutos. Paso 10: Ya puede sacar la lata del horno.
Seudocódigo:
Calentar el horno a 350 ºF (moderado). Engrase una lata o molde.
Bata la margarina con el azúcar hasta formar crema suave. Agregue los huevos.
Mezcle y añada poco a poco la fécula de maíz. Añada la harina de trigo.
Añada la sal y revuelva. Añada el aguardiente.
Bata hasta conseguir que se incorporen todos los ingredientes o se consiga una mezcla los más homogénea posible.
Vierta la masa en la lata engrasada y deje cocinar en el horno calentado previamente por aproximadamente 35 minutos.
Ya la puede sacar del horno. Diagrama de flujo Iniciar Calentar horno a 350 ºF Engrasar lata o molde Bata la margarina con el azúcar, hasta
forma crema suave Agregue los huevos
Figura 1.5 Mezcle y añada poco a poco la fécula de maíz Añada la harina de trigo Añada la sal y revuelva A Añada el aguardiente Bata hasta conseguir
que se incorporen todos los ingredientes
o se consiga una mezcla los más homogénea posible Vierta la masa en la lata engrasada y deje cocinar en el horno calentado previamente
por aproximadamente 35 minutos
Ya la puede sacar del horno
En este ejercicio se utiliza por primera vez este símbolo, que indica que el diagrama de flujo continúa en la página siguiente. Es un conector, que tiene como función presentar en qué punto se interrumpió el diagrama en la página en que se empezó a escribir y luego en la página siguiente en donde continúa el flujo de la información. En este ejercicio, se ve muy sencillo, pero en aplicaciones más complejas, en donde se van a encontrar varias rutas del flujo de la información, se va a comprender mejor su importancia.
El diagrama de flujo de la Figura 1.5 indica todos los pasos para preparar una mantecada. De la misma forma se hace el algoritmo para escribir un programa de computadores, se especifican claramente los pasos que se deben realizar, en un orden establecido, para evitar sorpresas y pérdida de tiempo al final, porque si usted quiere, puede cambiar los pasos para preparar la mantecada y comprobar si obtiene el mismo resultado.
Prueba de escritorio
Creo que para este ejercicio la mejor prueba de escritorio es poder probar una porción de la suculenta mantecada.
Ya está claro cómo se utilizan los procesos secuenciales, cuáles son los diferentes pasos que se deben seguir para poder realizar un algoritmo, un seudocódigo y el diagrama de flujo; por último cómo comprobar que los resultados que se obtienen son los correctos, por medio de la prueba de escritorio.
E.1.5 Escriba un algoritmo que lea 2 números complejos y luego calcule la suma, la diferencia del primero menos el segundo, el producto y el cociente del primero entre el segundo.
Análisis de la información
Antes de empezar a escribir el algoritmo, es conveniente documentarse para poder resolver este ejercicio. Los números complejos son de la forma , corresponde a la parte real y
es la parte imaginaria, por esta razón se les llama números complejos, porque tienen una parte real y una imaginaria. Es importante saber que .
La suma de números complejos se define como:
La diferencia es:
El producto es:
El cociente es:
Para poder realizar el cociente, es necesario multiplicar la fracción por el conjugado, esto es:
El resultado del producto de esas dos fracciones es igual a
Algoritmo
Paso 1: Conocer a
Paso 2: Guardar a en la variable A Paso 3: Conocer b
Paso 4: Guardar b en la variable B Paso 5: Conocer c
Paso 6: Guardar c en la variable C Paso 7: Conocer d
Paso 8: Guardar d en la variable D
Paso 9: Guardar en la variable Suma1 la suma de A y C Paso 10: Guardar en la variable Suma2 la suma de B y D Paso 11: Guardar en la variable Resta1 la resta de A y C Paso 12: Guardar en la variable Resta2 la resta de B y D
Paso 13: Guardar en la variable Producto1 la resta de A por C y B por D
Paso 14: Guardar en la variable Producto2 la suma de A por D y B por C
Paso 15: Guardar en la variable Cociente1 la suma de A por C y B por D
Paso 16: Guardar en la variable Cociente2 la resta de B por C y A por D
Paso 17: Guardar en la variable Cociente3 la suma de C2 y D2 Paso 18: Presentar “La suma es ”, Suma1,”+”, Suma2,” “ Paso 19: Presentar “La resta es ”, Resta1,”-”, Resta2,” “
Paso 20: Presentar “El producto es ”, Producto1,”+”, Producto2,” “ Paso 21: Presentar “El cociente es ”, Cociente1/Cociente3,”+”, Cociente2/Cociente3,” “ Paso 22: Terminar Seudocódigo Lea a A = a Lea b B = b Lea c C = c Lea d D = d Suma1 = A+C Suma2 = B+D Resta1 = A-C
Resta2 = B-D Producto1 = A*C-B*D Producto2 = A*D+B*C Cociente1 = A*C+B*D Cociente2 = B*C-A*D Cociente3 = C2+D2
Presentar “La suma es ”, Suma1,”+”, Suma2,” “ Presentar “La resta es ”, Resta1,”-”, Resta2,” “
Presentar “El producto es ”, Producto1,”+”, Producto2,” “ Presentar “El cociente es ”, Cociente1/Cociente3, ”+”,
Cociente2/Cociente3, ” “ Diagrama de flujo Iniciar a A = a b B = b H c C = c d D = d
Figura 1.6 Prueba de escritorio
La prueba de escritorio se va a realizar para los siguientes números complejos:
5+3 y 2-
Entonces se leen los números a, b, c y d, y se guardan en las variables A, B, C, D respectivamente. a b c d A B C D 5 3 2 -1 5 3 2 -1 Tabla 1.20 H Suma1 = A+C Suma2 = B+D Resta1 = A-C Cociente2 = B*C-A*D Cociente3 = C2+D2
“La suma es ”, Suma1,”+”, Suma2,” “; “La resta es ”, Resta1,”-”, Resta2,” “; “El producto es ”, Producto1,”+”, Producto2,” “; “El cociente es ”, Cociente1/Cociente3, ”+”, Cociente2/Cociente3, ” “
Terminar
SI USTED ESTÁ INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PÁGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo [email protected]
Se ejecutan las instrucciones indicadas y se tienen los siguientes resultados
a b c d A B C D Suma1 Suma2 Resta1 Resta2 Producto 1 5 3 2
-1 5 3 2 -1 7 2 3 4 13 Producto
2 Cociente1 Cociente2 Cociente3 1 7 11 5
Mensaje
La suma es 7 + 2 ; La resta es 3 - 4 ; El producto es 13 +1 ; El cociente es (7 / 5) +( 11 / 5)
Tabla 1.21
Este es un interesante ejercicio, que permite ver la importancia de realizar un buen análisis de la información antes de empezar a ejecutar operaciones, sin tener la información completa de qué se debe hacer.
En el desarrollo de este algoritmo se realizaron algunas prácticas que son convenientes que adquiera todo programador, por ejemplo, después de leer un dato, almacenarlo en una variable antes de empezar a realizar las operaciones, porque cuando se esté trabajando en un lenguaje de programación como C++, se debe definir el tipo de variable y luego si almacenar el dato para poder empezar a utilizarlo en las operaciones que se necesite realizar. Otro buen hábito de programación es ir guardando en variables las operaciones intermedias, para ser utilizadas más adelante en el mismo algoritmo.
Para la presentación del mensaje final en el diagrama de flujo, se utilizó un nuevo símbolo y en el seudocódigo y diagrama de flujo una nueva manera de presentar el mensaje al usuario del programa.
Figura 1.7
Este símbolo se utiliza cuando se quiere indicar que el mensaje se va a presentar por pantalla.
“La suma es ”, Suma1,”+”, Suma2,” “. Esta manera de presentarlo es un poco particular. Los textos que están escritos entre comillas dobles, quiere decir que van a aparecer como están escritos, la coma (,) indica que a continuación va otro dato. En este caso aparece Suma1, entonces va a aparecer el valor que está almacenado en esta variable, no el nombre de la variable, que es igual a 7. Luego aparece el signo + porque está entre comillas, en seguida el valor de la variable Suma2 que es igual a 2 y por último la letra i que se encuentra entre comillas, entonces el usuario verá este mensaje:
En cada ejercicio va a encontrar elementos que no necesariamente se van a estar nombrando pero su observación, capacidad analítica, inductiva-deductiva y poder de síntesis, permite que al usted descubrirlos, entren a formar parte más pronto de su imaginario, y pueda avanzar fácilmente en el aprendizaje del diseño de algoritmos para la programación de computadores y creación de algoritmos.
“La suma es ”, Suma1,”+”, Suma2,” “; “La resta es ”, Resta1,”-”, Resta2,” “; “El producto es ”, Producto1,”+”, Producto2,” “; “El cociente es ”, Cociente1/Cociente3, ”+”, Cociente2/Cociente3, ” “
1.11 Resumen
En el diseño de programas para computadores hay tres elementos que es necesario tener en cuenta:
o Entrada de datos. o Procesamiento de datos o Obtención de resultados
Se aplica una metodología que le permita al programador, seguir una secuencia para resolver los problemas; estos pasos son: el análisis de la información, definir el algoritmo, escribir el seudocódigo, realizar el diagrama de flujo y hacer la prueba de escritorio.
Este proceso de analizar la información es importante y se toma a la ligera, porque se debe tener bien claro qué es lo que quiere y necesita el usuario, y qué es lo que ha entendido quien va a hacer la programación.
Un algoritmo es una receta que se debe realizar con pasos finitos, ordenados, que permiten obtener un resultado específico. El seudocódigo es una forma de expresar las instrucciones que se realizan en el algoritmo, de la manera más parecida a como se expresarían en un lenguaje de programación.
El diagrama de flujo es la representación gráfica del algoritmo. La prueba de escritorio es la prueba final del algoritmo, antes de
pasar al lenguaje de programación.
Una variable es un espacio temporal de memoria, donde se va a almacenar la información mientras se esté ejecutando el algoritmo o el programa. Esta información se puede cambiar durante la ejecución del programa.
Una contante es un valor fijo que se guarda en un espacio de memoria en forma temporal, mientras se esté ejecutando el algoritmo o el programa. Esta información no se puede cambiar durante la ejecución del programa.
Un programa es un conjunto de instrucciones que sigue el computador, para poder alcanzar un resultado específico. Los programas están escritos en lenguajes de programación, que pueden ser entendidos o interpretados por el computador.
Hay procesos que son secuenciales, condicionales y repetitivos. La correcta aplicación de estos procesos se conoce como programación estructurada.
Para realizar las operaciones matemáticas se utilizan los operadores aritméticos, que permiten hacer las operaciones aritméticas entre constantes, números y variables. Cuando se realizan estas operaciones se obtiene como resultado un número.
Para resolver una expresión aritmética se deben cumplir los siguientes puntos:
o Primero se desarrollan las expresiones que se encuentran entre paréntesis, respetando la jerarquía de los operadores aritméticos. Si hay operaciones que se encuentran entre paréntesis que están anidados, se empieza desde el paréntesis que se encuentra en el último nivel de anidamiento.
o La jerarquía de los operadores aritméticos se aplica de izquierda a derecha.
Las expresiones lógicas también conocidas como booleanas, están compuestas por números, constantes, variables y operadores relacionales o lógicos. Cuando se evalúan estas expresiones, el resultado que se obtiene es verdadero o falso. Se utilizan en los procesos de decisión y en una clase de proceso repetitivo.
Los operadores relacionales se utilizan para comparar dos números, constantes, variables, expresiones alfanuméricas o expresiones aritméticas. Cuando se validan las expresiones con operadores relacionales se obtienen solamente dos resultados verdadero o falso.
Estos operadores hacen posible establecer condiciones complejas, partiendo de expresiones sencillas. Los operadores lógicos son (Y) que corresponde a la conjunción, (O) a la disyunción y (NO) a la negación.
El operador No, hace las veces de término de enlace y niega la proposición.
El operador Y forma una conjunción, también cumple la función de término de enlace. La conjunción es verdadera, cuando las dos proposiciones son verdaderas.
El operador O forma una disyunción, cumple la función de término de enlace. La disyunción es verdadera, cuando una de las dos proposiciones es verdadera.
El proceso secuencial es cuando no se tienen que evaluar varias opciones o realizar un conjunto de operaciones varias veces consecutivas. El único requisito de este proceso, es que las instrucciones estén debidamente ordenadas y se realicen una a continuación de la otra.
EJERCICIOS PROPUESTOS
EP.1.1 Escriba un algoritmo que describa el proceso que realiza para almorzar.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.2 Escriba un algoritmo para calcular el volumen y la superficie de una esfera.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.3 Escriba un algoritmo para cambiar la rueda de un vehículo. Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.4 Escriba un algoritmo para preparar un café con leche.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.5 Escriba un algoritmo para amarrarse los cordones de los zapatos.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.6 Escriba un algoritmo para indicar todas las actividades que realiza desde el momento en que se levanta de la cama en la mañana, hasta el momento que sale de la casa para ir a estudiar o trabajar.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.7 Escriba un algoritmo para calcular la equivalencia entre grados Kelvin (K) y grados Celsius (ºC), leyendo inicialmente la temperatura en grados K.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.8 Escriba un algoritmo para calcular la equivalencia entre grados Kelvin (K) y grados Fahrenheit (ºF), leyendo inicialmente la temperatura en grados ºF.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.9 Escriba un algoritmo para calcular el volumen y la superficie de una pirámide de base triangular y altura h.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
EP.1.10 Escriba un algoritmo para amarrarse la corbata.
Realice el análisis de la información, algoritmo, seudocódigo, diagrama de flujo y prueba de escritorio.
2 Proceso de toma de decisiones
Estos procesos se utilizan cuando es necesario tomar decisiones entre varios resultados o alternativas, de acuerdo con expresiones lógicas que utilizan operadores relacionales y lógicos vistos en el capítulo 1.
Se van a estudiar en este capítulo los procesos que tienen que optar por una sola posibilidad, dos alternativas, como son: si o no, verdadero o falso, uno o cero, o también entre dos valores establecidos, y luego se va a estudiar el proceso de selección múltiple que permite tomar decisiones cuando se tienen más de dos posibilidades. Estos procesos se utilizan en casi todos los algoritmos que se necesita desarrollar cuando se está trabajando en programación de computadores. Es un proceso que proporciona fluidez y versatilidad al momento de aplicar la programación estructurada.
2.1 Proceso Si _____; haga _____:
Es frecuente encontrarse en situaciones que requieren que se siga una alternativa para poder continuar con el proceso que se está realizando. El tipo de decisión más frecuente es: Si se presenta determinada situación, haga esto, de lo contrario continúe.
Figura 2.1
En la Figura 2.1, se puede ver con claridad cuál es la forma de representar este proceso en un diagrama de flujo. Para entenderlo mejor, observar atentamente algunos ejemplos.
No
Si Si ____?