Beruflich Dokumente
Kultur Dokumente
Ejercicios resueltos
Pgina 1
Programacin I - UTN-FRC
Ejercicios resueltos
INTRODUCCIN
El presente documento pretende ser una gua prctica para la comprensin y ejercitacin de diagramas de flujo, conteniendo una serie de conceptos bsicos necesarios, estructuras de control, simbologa y ejercicios prcticos resueltos.
CONTENIDOS
Introduccin ................................................................................................................................................... 2 Contenidos ..................................................................................................................................................... 2 Definiciones tericas bsicas .......................................................................................................................... 3 Diagrama de flujo ....................................................................................................................................... 3 Algoritmo .................................................................................................................................................... 3 Utilidad de un diagrama de flujo ................................................................................................................ 3 Lenguaje natural ......................................................................................................................................... 3 Estructura de control .................................................................................................................................. 3 Diagramas de flujo .......................................................................................................................................... 4 Inicio y fin ................................................................................................................................................... 4 Simbologa .................................................................................................................................................. 4 Estructuras de control .................................................................................................................................... 5 Estructura de control secuencial ................................................................................................................ 5 Estructura de control de seleccin o alternativa ........................................................................................ 5 Estructura de control iterativa o repetitiva ................................................................................................ 7 Estructura "for" .......................................................................................................................................... 8 Estructura "while" ...................................................................................................................................... 9 Estructura "do-while" ............................................................................................................................... 10 Resolucin de ejercicios de diagrama de flujo ............................................................................................. 11 Ejercicios resueltos ....................................................................................................................................... 12 Metodologa de trabajo ............................................................................................................................ 12 Ejercicios resueltos de estructuras secuenciales ...................................................................................... 12 Ejercicios resueltos de estructuras selectivas o alternativas .................................................................... 15 Ejercicios resueltos de estructuras iterativas o repetitivas ...................................................................... 19
Pgina 2
Programacin I - UTN-FRC
Ejercicios resueltos
ALGORITMO
Es un conjunto de instrucciones definidas, ordenadas y finitas (es decir, siempre tiene un fin) que permite mediante pasos sucesivos realizar una determinada actividad.
LENGUAJE NATURAL
El lenguaje natural es lenguaje hablado o escrito por humanos para propsitos generales de comunicacin. Este lenguaje tiene el problema que en ciertas circunstancias el mensaje que se quiere comunicar puede ser interpretado de distintas maneras de acuerdo al contexto y al receptor del mismo, por lo tanto se dice que puede ser impreciso y ambiguo.
ESTRUCTURA DE CONTROL
Una estructura de control es un mecanismo que permite alterar el flujo de ejecucin de un programa. Existen tres tipo de estructuras de control: secuencial, alternativa o de seleccin y iterativas o repetitivas.
Pgina 3
Programacin I - UTN-FRC
Ejercicios resueltos
SIMBOLOGA
Es absolutamente necesario, para poder entender y resolver ejercicios de diagrama de flujo, el conocimiento de la simbologa especfica a utilizar. A continuacin se detallan la simbologa bsica y ms utilizada en la construccin de diagramas de flujo (hay smbolos que no estn contemplados en esta gua): Terminal. Demarca el inicio o el fin del diagrama de flujo.
Entrada. Ingreso de datos, se utiliza para representar las entradas del algoritmo o valores ingresados por un usuario que est utilizando el programa.
Decisin. Bloque que permite alterar el flujo del algoritmo eligiendo entre varios caminos o escenarios alternativos. Decisin simple, doble y mltiple.
Impresora. Indica la salida o impresin de un resultado, puede interpretarse como que se est mostrando un resultado del algoritmo al usuario que est empleado el programa.
Pgina 4
Programacin I - UTN-FRC
Ejercicios resueltos
Pgina 5
Programacin I - UTN-FRC
Ejercicios resueltos
Pgina 6
Programacin I - UTN-FRC
Ejercicios resueltos
CICLO/BUCLE
Un ciclo es cada vez que se repite una operacin o conjunto de operaciones definida dentro de la estructura iterativa en cuestin. Cada estructura iterativa por lo general pretende tener 1 o ms ciclos o bucles.
CONTADOR
Un contador es una variable especial de tipo nmero entero ("int" en C#) que se incrementa en una unidad cada ciclo o bucle. Sirve para contar las iteraciones o bucles que han transcurrido y realizar alguna determinada accin en base a esa cantidad.
ACUMULADOR
Un acumulador es una variable especial numrica ("int" si es entera, "float" o "double" si es decimal) que tiene como objetivo sumar y acumular la suma acumulada, la cual se incrementa o decrementa en cada ciclo del iterador.
BANDERA
Una bandera es una variable especial de tipo boolean (true/false) que permite modificar las acciones a realizar dentro del iterador. Por ejemplo, puede utilizarse para realizar una accin concreta dentro del iterador una nica vez (generalmente alguna tarea de inicializacin); de tal forma que las iteraciones sucesivas que ocurran omitan esta accin, consultando el valor de la bandera.
Programacin I - UTN-FRC
Ejercicios resueltos
ESTRUCTURA "FOR"
La estructura "For" se caracteriza por ser controlada por contador, es decir que se ejecuta un nmero fijo de veces. Tiene cuatro componentes esenciales: Valor de inicializacin. Define el valor de inicio del contador que determinar la cantidad de ciclos que se van a ejecutar. Condicin booleana de corte o paro. Expresin booleana que ser evaluada al principio de cada ciclo para determinar si se debe continuar o si se escapa de la estructura iterativa. Incremento. Define cuntas unidades se suman al contador tras cada iteracin, generalmente se trata de un incremento unitario, expresado como "i = i + 1" o en forma abreviada como "i++" (que significa que la variable "i" se incrementa en una unidad). Expresin a repetir. Es el corazn de la estructura, define cul es la operacin u operaciones a repetir en cada ciclo del iterador.
En C# se la sintaxis es la siguiente: for(inicializacin; condicin; incremento) { expresiones a repetir; } Ejemplo concreto: Mostrar por consola nmeros de 0 a 9. for(int i = 0; i< 10; i++){ Console.WriteLine(i); }
Pgina 8
Programacin I - UTN-FRC
Ejercicios resueltos
ESTRUCTURA "WHILE"
La estructura "While" es una estructura de control iterativa controlada por condicin, es decir, que finaliza cuando una determinada expresin a evaluar devuelve FALSE. Para definir una estructura "While" es necesario contar con: Condicin booleana de corte o paro. Expresin que es evaluada y en caso de resultar TRUE contina la ejecucin del prximo ciclo del iterador, y en caso de ser FALSE finaliza y escapa del iterador. Expresin a repetir. Es el corazn de la estructura, define cul es la operacin u operaciones a repetir en cada ciclo del iterador.
En C# la sintaxis es la siguiente: while(condicion){ expresin a repetir; } Ejemplo concreto: Mostrar por consola nmeros de 0 a 9. int contador = 0; while(contador < 10){ Console.WriteLine(contador); contador = contador +1; }
Pgina 9
Programacin I - UTN-FRC
Ejercicios resueltos
ESTRUCTURA "DO-WHILE"
La estructura "Do-While" tambin es una estructura de control iterativa controlada por condicin, sin embargo se diferencia de la estructura While por el hecho que siempre se garantiza que la accin a repetir se ejecute al menos una vez. En la estructura While, de acuerdo a la condicin de corte podra ocurrir que la accin a repetir no se ejecute ni una sola vez. Al igual que la estructura While, sus componentes principales son la condicin booleana de corte o paro y la expresin a repetir. En C# la sintaxis es: do { expresin a repetir; } while (condicin) Ejemplo concreto: nmeros de 0 a 9. Mostrar por consola
Pgina 10
Programacin I - UTN-FRC
Ejercicios resueltos
Segunda etapa. Construccin. Todo diagrama de flujo siempre tiene un punto de inicio y un punto de fin. Entonces el primer paso en la construccin es diagrama el punto de inicio. Por lo general, inmediatamente a continuacin del punto de inicio se deja previsto un bloque para declaracin de variables. Este bloque es muy til al momento que se quiere programar el algoritmo en un lenguaje de programacin real.
Las entradas esperadas son las que determinan los datos a ingresar, por lo tanto, generalmente tambin se incluye un bloque de ingreso de datos.
A continuacin es comn el uso de estructuras de control secuenciales, selectivas o iterativas de acuerdo al algoritmo en particular que se est modelando. Finalmente, todo diagrama de flujo finaliza con un bloque de fin.
Tercera etapa. Verificacin. Prueba de escritorio. Una vez construido el diagrama de flujo es necesario asegurarse del correcto funcionamiento del algoritmo, esto significa que dado el universo de posibles entradas siempre el algoritmo logre alcanzar la salida esperada. Para ello se deben elegir conjuntos de entradas, ejecutar paso a paso el algoritmo y chequear que la salida real corresponda con la salida esperada. Si la salida real difiere de la esperada se deber analizar la causa de la diferencia y tomar acciones correctivas para corregir el problema. Pgina 11
Programacin I - UTN-FRC
Ejercicios resueltos
Ejercicios resueltos
Para realizar la prueba de escritorio es bueno construir una tabla que contenga tantas columnas como variables se hayan definido en el bloque de declaracin de variables del el algoritmo (en este caso: sumando 1, sumando2 y resultado), seguidas de la salida esperada y una columna que indique si el resultado fue satisfactorio (Ok) o errneo (Error). Sumando 1 3 9 55 Sumando 2 5 17 12 Resultado 8 26 67 Salida esperada 8 26 67 Verificado Ok Ok Ok
Para cada entrada del algoritmo se debe elegir un valor en forma aleatoria o bajo algn criterio de eleccin, y a partir de dichas entradas proceder a interpretar el algoritmo desde el bloque de inicio hasta el bloque de fin, completando durante este proceso las columnas correspondientes a cada variables del problema. En pocas palabras se tratara de una "ejecucin del algoritmo en papel". En caso de encontrarse diferencias entre la salida real del algoritmo, producto de su ejecucin, y la salida esperada que debera haber surgido, se debe re-analizar la solucin propuesta en el diagrama de flujo, detectarse la falencia y proceder a corregir el problema. Tras esto, se volver a ejecutar la prueba de escritorio hasta que el resultado sea satisfactorio para todos los escenarios o combinacin de entradas planteadas.
Pgina 13
Programacin I - UTN-FRC
Ejercicios resueltos
EJERCICIO 2
Enunciado: Dado el valor de la longitud de la hipotenusa y el cateto menor de un tringulo rectngulo, calcular su rea Resolucin Objetivo del algoritmo: Calcular el rea de un tringulo rectngulo Entradas: Hipotenusa, cateto menor Salida esperada: rea del tringulo Esquema conceptual necesario: En ocasiones es bueno valerse de algn diagrama, anotacin o grfico que nos ayude a razonar y hacer inferencias para resolver el problema. En este caso es til ayudarse con un grfico del tringulo rectngulo y la relacin de Pitgoras para tringulos rectngulos. Hipotenusa = Cateto mayor + Cateto menor Diagrama de flujo: Explicacin de la construccin del diagrama: 1. 2. 3. 4. Declaracin del bloque de inicio Definir bloque de declaracin de variables , completar despus. Ingresar datos de entrada necesarios, en este caso la hipotenusa y el valor del catetoMenor del tringulo rectngulo Para calcular el rea de un tringulo con la frmula "(base * altura)/2" vemos que conocemos la altura (el cateto menor), pero no la base (cateto mayor). Sin embargo, ayudndonos de la hipotenusa podemos calcular el valor de la base (cateto mayor) mediante la relacin de Pitgoras. 2 2 De ella deducimos que: Cateto mayor = Hipotenusa - Cateto 2 menor Por lo tanto: 2 2 Cateto mayor = Raz cuadrada de(Hipotenusa - Cateto menor ) Luego, aplicando la frmula para el clculo del rea llegamos al resultado: rea = (Base * altura)/2 = (Cateto mayor * Cateto menor) / 2 Mostrar el resultado de la operacin. En este caso, el rea del tringulo. Completar el bloque de declaracin de variables previsto en el punto 2. Finalizar el algoritmo incluyendo un nodo de "Fin".
2 2 2
5. 6. 7.
Pgina 14
Ejercicios resueltos
Dado las variables hipotenusa , cateto menor, cateto mayor y rea, se define la siguiente tabla para realizar una prueba de escritorio. Hipotenusa 21,54 31,06 68,06 Cateto menor 8 17 12 Cateto mayor 20 26 67 rea 80 221 402 Salida esperada 80 221 402 Verificado Ok Ok Ok
Pgina 15
Programacin I - UTN-FRC 5. 6.
Ejercicios resueltos
Completar el bloque de declaracin de variables con todas las variables que hayan sido utilizadas Declara bloque de fin.
Prueba de escritorio: Dado las variables nmero 1 y nmero 2 se define la siguiente tabla para realizar una prueba de escritorio. Nmero 1 8 15 Nmero 2 20 6 Salida real "El nmero 2 es el mayor" "El nmero 1 es el mayor" Salida esperada "El nmero 2 es el mayor" "El nmero 1 es el mayor" Verificado Ok Ok
Pgina 16
Programacin I - UTN-FRC
Ejercicios resueltos
EJERCICIO 4
Enunciado: Dados dos nmeros (PUEDEN ser iguales), determinar cul de ellos es el mayor Resolucin Objetivo del algoritmo: Determinar cul es el nmero mayor o en su defecto determinar si son iguales Entradas: Nmero 1, nmero 2 Salida esperada: Nmero mayor o igualdad Diagrama de flujo: Explicacin de la construccin del diagrama 1. 2. 3. 4. Bloque de inicio Prever bloque de declaracin de variables Ingreso de datos, nmero 1 y nmero 2 Determinar si nmero 1 es el mayor a. Si la expresin es TRUE, entonces el nmero 1 es el mayor b. Si la expresin es FALSE, evaluar si nmero 1 es menor que el nmero 2 i. Si la expresin es TRUE, entonces el nmero 2 es el mayor ii. Si la expresin es FALSE, entonces ambos son iguales Completar bloque de declaracin de variables Bloque de fin
5. 6.
Pgina 17
Ejercicios resueltos
Dado las variables nmero 1 y nmero 2 se define la siguiente tabla para realizar una prueba de escritorio. Nmero 1 8 9 Nmero 2 20 9 Salida real "El nmero 2 es el mayor" "Ambos nmeros son iguales" "El nmero 1 es el mayor" Salida esperada "El nmero 2 es el mayor" "Ambos nmeros son iguales" "El nmero 1 es el mayor" Verificado Ok Ok
80
21
Ok
En este caso se opt por no considerar en la prueba de escritorio una columna para cada evaluacin booleana, pero si fuera necesario podran incluirse cada una de estas expresiones como una columna adicional, de tal forma que se garantice una trazabilidad desde las entradas al resultado obtenido, lo que posteriormente permite, en caso de un error, la determinacin de la causa del mismo y la posible correccin o solucin.
Pgina 18
Programacin I - UTN-FRC
Ejercicios resueltos
4.
5.
6. 7.
Pgina 19
Ejercicios resueltos
Las pruebas de escritorio en algoritmos que tienen alguna estructura de control iterativa comienzan a complejizarse, y ya no se puede expresar toda la operatoria en una sola fila, sino que se van a requerir mltiples filas de la tabla siguiente para realizar un seguimiento del algoritmo en ejecucin. i 0 1 2 3 4 5 6 ... 97 98 99 acumulador 0 1 2 4 7 11 16 ... 4753 4851 4950 Salida real ... 4950 Salida esperada ... 4950 Verificado ... Ok
NOTA ACLARATORIA
Con el objetivo de mantener enfocado al alumno en las estructuras de control ms sencillas (secuencial y selectiva), a fin de permitirle adoptar los nuevos conceptos en forma incremental, se propone profundizar sobre las estructuras de control iterativas/repetitivas en una etapa ms avanzada del curso, por ello no se incluyen ejercicios resueltos de estructuras "While" o "Do-while".
CONCLUSIN
El estudio de diagramas de flujo es un buen punto de inicio para lograr un cambio en la estructura mental del alumno y acercarlo a un enfoque lgico, necesario para la resolucin de problemas de programacin; objetivo fundamental de este primer tramo de la carrera Tecnicatura en Programacin. Esperamos con esto preparar a alumno para adentrarse en el campo de la programacin y el desarrollo de software.
Pgina 20