Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Ciclo I-2020 Universidad de El Salvador Facultad de Ingeniería y Arquitectura Escuela de Ingeniería de Sistemas Informáticos Introducción a la Informática Guía No.1 De LABORATORIO Metodología para resolver problemas con estructuras selectivas y repetitivas Programación C# - Algoritmos con estructuras selectivas y repetitivas. Introducción Esta guía consta de tres partes. En la primera parte se desarrolla dos ejercicios completos en los cuales se aplica estructuras selectivas; la segunda parte trata sobre la teoría y ejemplos de las estructuras repetitivas y la tercera parte trata sobre tres ejercicios propuestos (selectivas y repetitivas), los cuales el estudiante desarrollará como actividad evaluada de laboratorio y serán entregados en el aula virtual en la fecha correspondiente que se especifica en este documento. Objetivo General: ● Adquirir el conocimiento y la habilidad para desarrollar soluciones haciendo uso de la metodología para resolver problemas, impartida en la asignatura; empleando las estructuras de control secuenciales, selectivas simples, dobles, anidadas o múltiples, así como las estructuras repetitivas mientras, hacer mientras, hacer hasta incremento, según sea necesario, todo esto auxiliándose de la herramienta para desarrollo de aplicaciones IDE Visual Studio 2015 para codificar la solución a los ejercicios evaluados que se le solicitan. Objetivos Específicos: ● Conocer, comprender y aplicar las estructuras selectivas simples, dobles, anidadas y múltiples en el diseño de algoritmos, así como las estructuras repetitivas. ● identificar cuándo utilizar las estructuras selectivas simples, dobles, anidadas y múltiples en un algoritmo, así como las estructuras repetitivas. ● Adquirir el conocimiento y la habilidad para implementar soluciones con estructuras selectivas anidadas, así como las estructuras repetitivas usando el Lenguaje C#. Equipo, Materiales y Herramientas: ● Computadora Personal con Windows. ● Conexión a Internet para entregar la actividad. ● Visual Studio 2015 Community Edition. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 2 Metodología. El estudiante DEBE desarrollar los ejercicios planteados en la Parte III. Además, recuerde que, en su tutoría previa en días previos a la entrega de esta actividad, usted como estudiante podrá consultarle a su tutor alguna duda que tenga con respecto a ella. PARTE I. APLICACIÓN DE LA METODOLOGÍA PARA RESOLVER PROBLEMAS EJERCICIOS DE EJEMPLO (ESTRUCTURAS SELECTIVAS). Para poder comenzar con los ejercicios de ejemplo veremos un poco de teoría sobre las condiciones simples, dobles y su uso de manera anidada. SINTÁXIS EN C# DE LA ESTRUCTURA DE SELECCIÓN SIMPLE La estructura de selección simple evalúa una condición, si esta es verdadera ejecuta una o varias instrucciones, si es falsa continua la ejecución normal del programa. La escritura de la estructura de selección simple, es muy fácil, involucra como novedad, la palabra reservada if y los separadores u operadores de agrupación ( ) y { }. If en español significa si, y nos indica que inicia la estructura y a continuación se escribe la expresión lógica o condición dentro de paréntesis; Si tiene más de una instrucción a realizar se debe de escribir dentro de llaves. Sintaxis Utilizarla cuando Ejemplo Comentarios if (condición) línea; La acción está formada por una sola instrucción if(x!=7) a=4; La acción a realizar es muy sencilla, una sola instrucción, por lo que la podemos escribir en una sola línea. if ( condición ) línea; La acción está formada por una sola instrucción, por lo cual no son necesarias las llaves. if (x!=7 ) a=4; Es igual que en el caso anterior, pero se escribe en dos líneas para mantener un mejor orden, además se deja una sangría o tabulación en la instrucción es decir la segunda línea, también debe notar que la primera línea no debe llevar punto y coma. if ( condición ) { línea 1; línea 2; . . . línea N; } La acción si la condición resulta verdadera está formada por varias instrucciones, por lo cual se utilizan las llaves if ( x>8 ) { a=2*x; b=a+x; } Cuando las acciones a realizar dentro de la condición son dos o más se debe utilizar llaves para poner entre ellas las líneas de código, cada línea de instrucción debe tener punto y coma al final, esto se conoce como bloque de código. Y es la forma que más se recomienda para UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 3 trabajar con estructuras condicionales, debido a que el código queda más ordenado y organizado. Es importante recordar también que: La condición puede ser simple o compuesta, y se escribe dentro de paréntesis. Ejemplos: Esta es una condición simple. if (Nota>=6) Las siguientes instrucciones tiene un ejemplo de condición compuesta y significa Nota>=0 y Nota<=10 ósea se evalúan dos condiciones las cuales están unidas por un operador lógico Y. if (Nota>=0 && Nota <=10) La siguiente instrucción significa que se evalúa que se cumpla como verdadera la primera condición o la segunda ya que están unidas con un operador lógico O. if ((x!=7) || (y ==7)) Si la condición es verdadera se ejecutan la o las líneas que están después de la sentencia if, y se continúa con la sentencia después de la estructura if. En el caso de la condición simple, si la condición es falsa la ejecución del programa sigue después de la estructura if. Si solo hay una sentencia dentro del if las llaves no son necesarias. Gráficamente la estructura de selección simple se puede representar así: Condición Falso Verdadero Instrucciones UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 4 SINTÁXIS EN C# DE LA ESTRUCTURA DE SELECCIÓN DOBLE La estructura condicional también se puede trabajar de manera doble, es decir, que cuando la condición evaluada resulta verdadera realizamos una serie de acciones al igual que la estructura condicional simple, la diferencia es que si la condición es falsa se ejecuta otro bloque de acciones a realizar. Sintaxis Utilizarla cuando Ejemplo Comentarios if ( condición ) { línea 1; línea 2; . . . línea N; } else { línea 1; línea 2; . . . línea N; } La acción si la condición resulta verdadera está formada por varias instrucciones, por lo cual se utilizan las llaves, luego existe otro bloque de instrucciones que se ejecutan si la condición resulta falsa. if ( x>8 ) { a=2*x; b=a+x; } Else { a=x+10; } Otro ejemplo if ( Nota>=6) { Estado="Aprobado"; } Else { Estado="Reprobado"; } Podemos observar que en una condición doble se ejecuta un bloque de instrucciones u otro, dependiendo de si la condición evaluada resulta verdadera o falsa. También las estructuras selectivas se pueden utilizar de manera anidada, lo cual significa que dentro del bloque de instrucciones que se ejecutan si la condición resulta verdadera o falsa, puede ir incluida otra estructura selectiva, y así sucesivamente dependiendo de las necesidades del ejercicio, esto se da cuando tenemos más de una condición independiente que evaluar. Gráficamente la estructura de selección doble se puede representar así: CondiciónFalso Verdadero Instrucciones Instrucciones UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 5 ANIDAMIENTO Anidar estructuras selectivas implica utilizarlas una dentro de otra, ya sea en el bloque de instrucciones verdadero o en el bloque de instrucciones falso, su objetivo es evaluar otra condición diferente a la evaluada en la estructura selectiva más externa. Por ejemplo: A continuación, veremos una serie de ejemplos de uso de estructuras selectivas de manera anidada. Ejemplo 1: En un almacén se realiza un descuento de 20% a los clientes cuya compra sea mayor o igual a los $1000.00 dólares. ¿Cuál será la cantidad de dinero que pagará una persona por su compra? DESARROLLO DE LA SOLUCION A. Planteamiento general del problema (Método de la caja negra). Calcular Descuento Encontrar el monto a pagar ENTRADAS ValorCompra PorcentajeDescuento SALIDAS TotalAPagar PROCESO Condición 1 Falso Verdadero Instrucciones Condición 2 Instrucciones Instrucciones Falso Verdadero UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 6 B. Análisis del problema. 1. Definición de variables de entrada. Definición de variables de entrada. Nombre Tipo Descripción ValorCompra Real Contiene el monto de la compra. Definición de constantes. Nombre Tipo Descripción PorcentajeDescuento Real Porcentaje de descuento a aplicar y su valor será 0.20 es decir y será 20%. 2. Definición de variables de salida. Definición de variables de salida. Nombre Tipo Descripción TotalAPagar Real Almacena la cantidad total de dinero a pagar por el cliente. 3. Restricciones. Debido a que es necesario que se realice una compra para hace el cálculo el valor de compra ingresado debe satisfacer esta condición. ValorCompra>0 Solamente se les aplicará descuento a los clientes cuya compra sea mayor o igual a 1000.00, por lo tanto, ValorCompra>=1000.00 para la estructura condicional. 4. Proceso. Vamos a recordar que, en esta parte, solo escribimos los procesos matemáticos (cálculos o asignaciones) y los procesos lógicos (comparaciones o condiciones), que se realizarán para resolver el problema, y si se escriben en orden nos facilita aún más el diseño de solución. Por lo tanto, las formulas a utilizar son: Descuento = ValorCompra * PorcentajeDescuento; TotalAPagar = ValorCompra – Descuento; En donde Descuento es la cantidad a descontar y PorcentajeDescuento es el porcentaje (20%) a descontar, este valor será expresado así 0.20 y será un valor constante. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 7 Los cálculos anteriores se deberán realizar siempre y cuando la compra (ValorCompra) sea mayor o igual a 1000.00, de lo contrario el pago (TotalAPagar) será igual al valor de la compra (ValorCompra), es decir que hay que establecer Descuento=0 por lo que no se le descuenta nada al cliente, resumiendo, lo que tenemos que evaluar es si le hacemos o no descuento al cliente. También hay que considerar que el dato ingresado por el cliente (ValorCompra) sea mayor a cero mediante una condición, y si dicha condición se cumple entonces se realiza todo el proceso, en caso contrario solo se muestra un mensaje que diga que el valor de la compra ingresado es incorrecto. Ordenando un poco las ideas planteadas anteriormente: ¿Es ValorCompra>0? SI: PorcentajeDescuento=0.20 Descuento = 0 ¿Es ValorCompra>=1000.00? SI: Descuento = ValorCompra * PorcentajeDescuento TotalAPagar = ValorCompra – Descuento No: TotalAPagar=ValorCompra Escribir “Total a pagar” + TotalAPagar + “dólares” No: Imprimir “El valor de la compra ingresado es incorrecto” 5. Definición de variables de proceso. Nombre Tipo Descripción Descuento Real Contiene el monto de la compra. C. Diseño de la solución. Algoritmo narrado. Proceso: Descuento_Compras {El programa aplicará el 20% de descuento a los clientes cuya compra supere los $1000.00} {TotalAPagar, ValorCompra, PorcentajeDescuento y Descuento son variables de tipo real} 1. Escribir “Digite el valor de la compra” 2. Leer ValorCompra 3. Si ValorCompra > 0 entonces a. Hacer PorcentajeDescuento= 0.2 UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 8 b. Hacer Descuento=0 c. Si ValorCompra >= 1000.00 entonces i. Descuento=PorcentajeDescuento * ValorCompra ii. Hacer TotalAPagar=ValorCompra - Descuento d. Sino i. Hacer TotalAPagar=ValorCompra e. {Fin del condicional del paso c} f. Escribir “Total a pagar” + TotalAPagar + “dólares” 4. Sino a. Escribir “El valor de la compra ingresado es incorrecto” 5 {Fin del condicional del paso 3} Sintaxis en C# using System; namespace Descuento_Compras { class Program { static void Main(string[] args) { float ValorCompra, TotalAPagar, Descuento, PorcentajeDescuento; Console.WriteLine("Digite el valor de la compra"); //la lectura por consola es de tipo String ValorCompra = float.Parse(Console.ReadLine()); if (ValorCompra>0) { Descuento = 0; PorcentajeDescuento = 0.2f; if (ValorCompra>=1000.00) { Descuento = PorcentajeDescuento * ValorCompra; TotalAPagar = ValorCompra - Descuento; } else { TotalAPagar = ValorCompra; } Console.WriteLine("\n\nTotal a pagar \t " + TotalAPagar + " dólares"); } else { Console.WriteLine("\n\nEl valor de la compra ingresado es incorrecto"); } Console.WriteLine("\n\nPresione una tecla para continuar..."); Console.Read(); } } } UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 9 Ejemplo 2: Dados dos números enteros, se desea saber cuál de los dos es el mayor. A. Planteamiento general del problema (Método de la caja negra). B. Análisis del problema. 1. Definición de variables de entrada. Definición de variables de entrada. Nombre Tipo Descripción Num1 Entero Primer número para comparar. Num2 Entero Segundo numero para comparar. 2. Definición de variables de salida. Definición de variables de salida. Nombre Tipo Descripción Mayor Entero Almacena el valor del número que resulta mayor. 3. Restricciones. Solo se aplicará la solución a números enteros, positivos, negativos y cero. 4. Proceso. Vamos a recordar que, en esta parte, solo escribimos los procesos matemáticos (cálculos o asignaciones) y los procesos lógicos (comparaciones o condiciones), que se realizarán para resolver el problema, y si se escriben en orden nos facilita aún más el diseño de solución. Debemos tener en cuenta que primero hay que evaluarsi los dos números son iguales, en caso de ser cierto no se realiza ninguna otra acción solo imprimir que son iguales, por lo tanto, debemos definir y evaluar primero esta condición. Evaluar ambos números para determinar si son iguales o cual de los dos es el mayor. ENTRADAS Num1 Num2 SALIDAS Mayor PROCESO UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 10 Por lo tanto, las condiciones de comparación a utilizar son: Num1==Num2 Num1>Num2 Si en la primera estructura selectiva la condición resulta verdadera entonces se le dice al usuario que los dos números son iguales, en cambio sí resulta falsa, se evalúa otra segunda condición dentro del bloque de instrucciones else de la primera estructura condicional, para averiguar cuál de los dos números es el mayor. Y las formulas a utilizar son: Mayor = Num1; Los cálculos anteriores se deberán realizar siempre y cuando Num1 sea mayor a Num2, de lo contrario, si la condición resulta falsa eso quiere decir que el mayor es Num2, por lo cual la formula a aplicar será. Mayor = Num2; Ordenando un poco las ideas planteadas anteriormente: ¿Es Num1 igual a Num2? SI: Escribir “Ambos números son iguales” No: ¿Es Num1>Num2? SI: Mayor = Num1 No: Mayor = Num2 Escribir “El número mayor es ” + Mayor 5. Definición de variables de proceso. No Hay UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 11 C. Diseño de la solución. Algoritmo narrado. Proceso: ComparacionNumeros {El programa realizará una comparación de dos números para saber si son iguales o cual es el mayor} {Num1, Num2, Mayor son variables de tipo entero} 1. Escribir “Digite el primer número” 2. Leer Num1 3. Escribir “Digite el segundo número” 4. Leer Num2 5. Si (Num1==Num2) entonces a. Escribir “Ambos números son iguales” 6. Sino g. Si (Num1 > Num2) entonces i. Hacer Mayor=Num1 h. Sino i. Hacer Mayor=Num2 i. {Fin del condicional del paso a} j. Escribir “El número mayor es ” + Mayor 7. {Fin del condicional del paso 5} Sintaxis en C# using System; namespace ComparacionNumeros { class Program { static void Main(string[] args) { int Num1, Num2, Mayor; Console.WriteLine("Digite el primer número"); Num1 = int.Parse(Console.ReadLine()); Console.WriteLine("Digite el segundo número"); Num2 = int.Parse(Console.ReadLine()); if (Num1==Num2) Console.WriteLine("Ambos números son iguales"); else { if (Num1 > Num2) { Mayor = Num1; } else { Mayor = Num2; } UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 12 Console.WriteLine("\n\nEl número mayor es {0}", Mayor); } Console.WriteLine("\n\nPresione una tecla para continuar..."); Console.ReadKey(); } } } PARTE II. APLICACIÓN DE LA METODOLOGÍA PARA RESOLVER PROBLEMAS EJERCICIOS DE EJEMPLO (ESTRUCTURAS REPETITIVAS). 1. GENERALIDADES - ESTRUCTURAS REPETITIVAS Para repetir varias veces un proceso determinado haremos uso de los ciclos repetitivos, a los cuales se les conoce también con el nombre de Estructuras Repetitivas, Estructuras Iterativas, Lazos, Bucles, Loops, o simplemente ciclos al conjunto de bloques y flechas que nos permite, representar en un flujograma que, una acción (o varias) se puede realizar una o varias veces (en algunos casos especiales ninguna vez) de acuerdo a una condición. Al igual que las estructuras secuenciales y las selectivas, estas estructuras tienen únicamente una flecha de entrada y una sola flecha de salida dentro de un flujograma. 2. TERMINOLOGÍA BÁSICA Para trabajar con estructuras repetitivas se hace necesario conocer ciertos conceptos, previo al estudio de cada estructura, ya que nos servirán para comprender mejor el funcionamiento de cada una de ellas. Estructuras de Control Repetitivas: En un programa son aquellas estructuras en las que una sentencia o grupo de sentencias se pueden repetir una o varias veces (en algunos casos especiales ninguna vez) Mientras o Hasta que una condición especifica se cumpla. Las estructuras repetitivas las clasificamos en fundamental y derivadas como se describe a continuación: a) Estructura Fundamental Entrada Condicionada o estructura “Mientras”, se repite mientras la condición se cumpla como verdadera. b) Estructuras Derivadas Ciclo controlado por contador o estructura “Desde Hasta”, se repite desde un valor inicial hasta un valor final, también se conoce como ciclo For. Entrada asegurada o estructura “Hasta Que”, se repite al menos una vez antes que se evalúa la condición y se repite mientras la condición se cumpla como verdadera. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 13 Para representar gráficamente una estructura repetitiva, haremos uso de los siguientes símbolos o bloques. Es el mismo rombo que se utiliza para las estructuras selectivas, pero en estructuras repetitivas, las flechas internas nunca se reúnen de nuevo. Con este símbolo se visualiza y comprende fácilmente el funcionamiento de las estructuras repetitivas Este es el símbolo especial para representar las tres estructuras repetitivas, por lo tanto es necesario aclarar a cuál de ellas representamos, escribiendo dentro del bloque el nombre de la estructura Cuerpo del Ciclo: Está formado por la acción o conjunto de acciones que se repite en un bucle y puede estar formado por una o más estructuras lógicas de control: Secuenciales (entrada de datos, asignación/proceso, salida de datos) Selectivas (simple, doble, anidada, múltiple) Repetitivas (entrada condicionada, entrada asegurada, controlada por contador) Combinación de las anteriores. Iteración: A la ejecución del cuerpo del ciclo se le conoce como iteración; dicho de otra forma, una iteración es cada una de las ejecuciones, es decir, cada una de las veces que se repite el cuerpo del ciclo. Si el cuerpo del ciclo o acción a repetir, se realiza 5 veces, se dice que se ejecutan 5 iteraciones. Representación general de las estructuras iterativas Variable de control del ciclo: Es una variable que permite controlar las veces que se ejecuta un ciclo. La variable de control puede ser: bandera, centinela o contador. Cabe aclarar que un ciclo UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 14 podría estar controlado por más de una variable. A continuación, se define cada una de las variables de control: Bandera: Es una variable de entrada y una variable de control de ciclo (con una sola función: continuar o detener un ciclo), y solamente puede almacenar uno de dos valores, normalmente cero (0) o uno (1), debemos recordar que cero es el valor numérico para falso y uno seconsidera el valor numérico para cierto. Se puede hacer uso de números o letras; pero en todo caso solo existirán dos valores posibles. En el caso de usar letras se escoge dos letras una de ellas indica cierto y la otra falso, por ejemplo 's' y 'n', una es sí (cierto) y la otra es no (falso). Se usa con el ciclo mientras o con el ciclo hasta que. Centinela: Es una variable de entrada y una variable de control de ciclo (con doble función la primera recibir los datos a procesar y la segunda función de: continuar o detener un ciclo). La variable centinela se escoge de entre las variables de entrada de la solución (variables tipo entero, tipo real o tipo alfanumérico de un carácter) La variable centinela al igual que la variable de control bandera se usará cuando la cantidad de veces que debe repetirse el ciclo es desconocida. Se usa con el ciclo mientras o con el ciclo hasta que. Contador: Es una variable que controla el número de veces que se repite un ciclo y/o el número de ocurrencias de un evento, situación o valor determinado (tiene una doble función controlar el ciclo repetitivo y contar; pero puede ser usada únicamente para contar). Para definir correctamente una variable contador, se debe de indicar lo siguiente: Valor inicial: representa el número a partir del cual se empieza a contar. Valor final: representa el número hasta el que se va a contar. Valor de cambio: Indica de cuanto en cuanto se realiza la cuenta (siempre es el mismo valor, es decir, es constante)(por ejemplo de uno en uno). La forma más común de contar es de uno en uno, sobre todo si lo que se desea es saber cuántas veces se repite una acción determinada, pero no es la única forma de contar, se puede hacer también contar de dos en dos ó de cinco en cinco ó de 100 en 100, es más también podemos contar con fracciones de 0.5 en 0.5 o de 0.01 en 0.01. Estas formas de contar se conocen como progresivas, y el valor de cambio de la variable que controla estas cuentas siempre es positivo y se le llama incremento, el valor inicial siempre debe de ser menor que el valor final para que la acción se pueda ejecutar. Existen también conteos regresivos, en estas formas de contar el valor de cambio es negativo y el valor inicial es siempre mayor que el valor final de la variable contador; así podemos contar desde 5 hasta 1 por ejemplo, el valor de cambio es -1. Es importante recordar que UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 15 independientemente del valor de cambio (positivo o negativo) de un contador, éste siempre es constante. Como ejemplo podemos mencionar que, para leer un grupo de 5 edades, se puede definir una variable contador numEd. Dicha variable numEd, tendrá un valor inicial de 1, un valor final de 5 y un valor de cambio 1. La variable contador se usará cuando la cantidad de veces que debe repetirse el ciclo es conocida o se puede preguntar las veces que debe repetirse, en cuyo caso la cantidad de repeticiones es una variable de entrada más a considerar. La variable contador se puede usar con ciclos mientras, hacer hasta que y hacer desde hasta. Acumulador: Es una variable que “almacena” el resultado final de sumar todos los distintos valores que toma una variable, para definirla, también es necesario indicar: Valor inicial: Representa el valor original o inicial del acumulador, por lo general cero. Valor final: El último valor que toma el acumulador, desconocido por lo general. Valor de cambio: Representa cada valor de la variable que se va sumando o acumulando (en cada iteración ese valor puede cambiar). Por ejemplo, para calcular el monto total a desembolsar para pagar la planilla de 20 empleados, tendríamos que sumar todos los salarios de los empleados. Podemos hacer uso de una variable suma; para la cual definimos un valor inicial de 0.0 y un valor de cambio que es el valor de la variable salario (contiene el salario del enésimo trabajador); el valor final es lo que pretendemos encontrar, no está definido de antemano. El acumulador no lo utilizaremos para controlar ciclos, pero es aplicable su uso en cualquier tipo de ciclos, con cualquier variable de control de ciclo o para recopilar la suma de diferentes valores calculados en cada iteración de los ciclos y obtener un resultado final o valor final acumulado para poder utilizarlo posteriormente cuando el ciclo haya terminado. 3. ESTRUCTURA DE ENTRADA CONDICIONADA - ESTRUCTURA MIENTRAS (WHILE) A la Estructura MIENTRAS (While) también se le llama estructura de entrada condicionada, debemos mencionar que ésta es la primera estructura usada para repetir porciones de un algoritmo a conveniencia, por lo tanto, se le distingue como Estructura Fundamental; de esta estructura, se diseñaron otras 3 estructuras, que se conocen como Derivadas. (Hacer desde hasta, hacer hasta que, y una última conocida como para cada elemento) Funcionamiento de la Estructura Mientras Esta estructura, nos permite realizar el cuerpo del ciclo las veces que sea necesario, siempre y cuando (o Mientras) se cumpla la condición. Al entrar a la estructura se evalúa la condición, si el resultado es falso, el cuerpo del ciclo no se ejecuta, si al contrario la condición resulta cierta, se realiza el cuerpo del ciclo. Una vez finalizada la ejecución del cuerpo del ciclo se regresa a UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 16 evaluar la condición de nuevo. De tal forma que el cuerpo del ciclo puede ser que se ejecute: ninguna vez, una vez o varias veces, dependiendo del resultado de la condición, por esta razón, a estos ciclos se les denomina ciclo con entrada condicionada, se entra al cuerpo del ciclo si la condición se cumple. Dentro del cuerpo del ciclo debe existir alguna estructura que modifique el resultado lógico (de verdadero a falso) de la condición; si esto no sucediera, la estructura repetitiva se quedaría ejecutando el cuerpo del ciclo indefinidamente, ya que para salir de la estructura la condición debe dar como resultado falso, en este caso el ciclo se denomina bucle infinito (ciclo o lazo infinito) o sin fin (situación que DEBE evitarse). Representación Gráfica – Diseño de la Solución Para representar gráficamente una estructura MIENTRAS, vamos a utilizar el símbolo especial que se mostró en la figura anterior, aunque también se puede utilizar el rombo, como se muestra en la figura de la siguiente página: UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 17 La estructura algorítmica mientras es la estructura adecuada para utilizar en un ciclo cuando no se sabe el número de veces que éste se ha de repetir. Dicho número depende de las proposiciones dentro del ciclo. Ejemplos en la vida cotidiana encontramos muchos. Por ejemplo, supongamos que tenemos que obtener el total de una serie de gastos, pero no sabemos exactamente cuántos son; o cuando tenemos que sacar el promedio de calificaciones de un examen, pero no sabemos precisamente cuántos alumnos lo aplicaron. Tenemos que sumar las calificaciones e ir contando el número de alumnos, esto con el fin de poder obtener posteriormente el promedio. El ciclo se repite mientras tengamos calificaciones de alumnos. Representación en Pseudo-Código – Diseño de la Solución Para expresar una estructura MIENTRAS en pseudo-código vamos a utilizar la siguiente simbología. Debe tenerse muy claro que el uso de ciclos implicala posible realización de acciones previas y acciones posteriores al ciclo, según corresponda al diseño de la solución. …… //Acciones Previas Hacer cont = Proposición Inicial Mientras cont es verdadero repetir { Repetir el Cuerpo del Ciclo Hacer cont = Modificación de cont } // Fin del ciclo //Acciones Posteriores … n=0 Mientras (n!= 5) repetir { Escribir "Adivine el número:" Leer n } //Fin del Ciclo Escribir "Felicidades Adivinó!!!" Reglas de Funcionamiento Las siguientes normas o reglas deben de cumplirse, cuando utilicemos una estructura MIENTRAS: 1. La condición (expresión lógica) es lo primero que se evalúa al llegar a la estructura; cuando el resultado es “Verdadero”, se ejecuta el cuerpo del ciclo (y se regresa a evaluar la condición), cuando el resultado es “Falso” se sigue la flecha de salida de la estructura. 2. Cuando la condición se evalúa a “Falso”, al entrar a la estructura por primera vez, el cuerpo del bucle no se ejecutará nunca. En este caso se dice que el bucle se ha ejecutado cero veces. 3. Mientras la condición dé como resultado “Verdadera” el cuerpo del ciclo se va a continuar ejecutando. 4. La única forma de salir del ciclo MIENTRAS, es obteniendo un resultado de falso en la expresión lógica. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 18 Codificación de la Estructura Mientras en C# La estructura iterativa de entrada condicionada necesita solamente la palabra reservada while, que justamente en español significa mientras, los paréntesis ( ) para encerrar la condición y las { } para delimitar el cuerpo del ciclo: Sintaxis Ejemplo . . . //Acciones previas cont = Proposición Inicial // cont=Vi; while(condición) // cont<=Vf; { //Cuerpo del Ciclo //Acción1 //AcciónN //cont = Modificación de cont cont++ } //Acciones Posteriores . . . //Acciones previas x = 100; while ( x <= 500) { Console.Write("\n {0}", x); x = x + 50; } //Acciones Posteriores . . . // En este ejemplo el valor inicial de X es 100 y va incrementando de 50 en 50. //Otro Ejemplo x = 1; while ( x <= 10) { Console.Write("\n {0}", x); x = x + 1; } //Acciones Posteriores . . . // En este ejemplo el valor inicial de X es 1 y va incrementando de 1 en 1. 4. VALIDACIÓN DE DATOS CON CICLO MIENTRAS Hasta el momento lo que hemos hecho con las restricciones de los datos de entrada es verificar si se cumplen, utilizando una estructura selectiva: si se cumplen realizamos el proceso; pero si no lo hacen, terminamos el algoritmo sin hacer nada o imprimimos un mensaje de "Error en los datos", y por lo tanto no se lleva a cabo el objetivo de la solución. El concepto de validación de datos consiste en obtener valores correctos, con el fin de llevar a cabo el objetivo de la solución; es decir, obtener datos que cumplan la o las restricciones, esto lo logramos con una estructura MIENTRAS. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 19 Por ejemplo, supongamos que tenemos un dato de entrada (que se llama puntos) cuya restricción es que debe ser mayor que 5 pero menor o igual a 20, para validar este dato osea cerciorarnos que el dato es correcto y que el algoritmo funciona lo podemos hacer así: Expresión de estructura Selectiva o Restricción: puntos >=5 && puntos <= 20 Validar este dato, significa que Mientras la restricción no se cumpla, el dato es incorrecto y debemos volver a leer el dato; por el funcionamiento de la estructura MIENTRAS (ejecuta la acción cuando la condición es cierta), es necesario escribir lo contrario de la restricción o simplemente negar la expresión de la restricción, y esto nos servirá para volver a leer otra vez leer puntos, y evaluar la condición nuevamente: Condición del ciclo Mientras: puntos < 5 || puntos > 20 Puede también escribirse: !(puntos >= 5 && puntos <= 20) Observe que la flecha regresa, siempre a evaluar la condición, NO ANTES NI DESPUÉS. En esta parte de algoritmo no hará más que pedir datos si no se cumple la restricción. Note también que en la condición se ha escrito lo contrario de la restricción, para que la estructura MIENTRAS funcione correctamente. Muy importante: debemos distinguir entre la Restricción y la Condición de validación ó expresión lógica de validación así: Restricción: es la condición que deben cumplir la o las variables de entrada para que la solución funcione correctamente, es decir, la restricción indica que valores son correctos para la o las variables de entrada. Condición de validación ó expresión lógica de validación: o En el caso del ciclo mientras: es la condición o expresión lógica que se debe de cumplir para seguir ejecutando el bucle de lectura de la o las variables de entrada en busca de un valor o valores correctos. En otras palabras, es lo contrario de la Restricción, como podemos observar en el ejemplo anterior. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 20 o En el caso del ciclo hasta que: es la condición o expresión lógica que se debe de cumplir para dejar de ejecutar el bucle de lectura de la o las variables de entrada en busca de un valor o valores correctos. En otras palabras, es la Restricción. Ejemplo de Estructura MIENTRAS Enunciado: Diseñe una solución que Imprima los n primeros números enteros positivos. Análisis del Problema. 1. Definición de variables de Entrada. Nombre Tipo Descripción cantNum Entero Almacena la cantidad de números a imprimir 2. Definición de variables de Salida. Nombre Tipo Descripción num Entero Representa cada uno de los números a imprimir Constantes: No son necesarias. 3. Restricciones. cantNum >0 4. Proceso. Lo que se hará es leer la cantidad de números que se va a imprimir y verificar que cumpla la restricción; luego iniciar con num=1; imprimirlo y aumentarle 1, mientras num sea menor o igual que cantNum. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 21 Leer cantNum ¿cantNum >0? Si: Inicialmente num=1 Mientras num <= cantNum Imprimir num num= num + 1 NO: Imprimir “Error en datos” 5. Definición de variables de Proceso. No se ha utilizado. Diseño de la solución. Pseudocodigo NOMBRE PROCESO: ImprimirNEnterosPositivos {El programa, imprime los n primeros números enteros positivos} {num y cantNum son variables de tipo entero, y deben ser positivo, num representa cada uno de los números a imprimir, cantNum almacena la cantidad de números a imprimir} 1. num = 1 2. Escribir “Cuantos números quiere imprimir (positivo)?” 2. Leer cantNum. 3. Si cantNum > 0 Entonces 3.1. Escribir “Números enteros positivos. “, cantNum 3.2. Mientras num <= cantNum repetir Escribir num num = num + 1; 3.3. {Fin del ciclo paso 3.2} 4. Sino 4.1 Escribir “Error en datos” 5. {fin del condicional del paso 3} 6. Escribir “Para continuar presione cualquier tecla …” 7. Pausar pantalla hasta que se presione una tecla UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURAINTRODUCCIÓN A LA INFORMÁTICA 22 Codificación. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 23 5. ESTRUCTURA CONTROLADA POR UN CONTADOR – ESTRUCTURA DESDE_HASTA (FOR) Esta estructura se conoce como Desde - Hasta o ciclo FOR, se utiliza cuando se conoce por anticipado el número exacto de veces que se va a ejecutar una determinada operación, acción o tarea. Al igual que el ciclo MIENTRAS, la realización del cuerpo del ciclo depende de una condición, que siempre está relacionada con el valor final del contador. Funcionamiento de la Estructura Desde - Hasta Esta estructura, permite realizar el cuerpo del ciclo las veces que sea necesario (cantidad conocida de veces), siempre y cuando se cumpla la condición. Al entrar a la estructura se evalúa la condición, si el resultado es falso, el cuerpo del ciclo no se ejecuta, si al contrario la condición resulta cierta, se realiza el cuerpo del ciclo. Al ejecutarse el ciclo por primera vez, el valor inicial se le asigna a una variable de control (o contador), se verifica si el valor de la variable de control es menor o igual (o mayor, en el caso de decremento) que el valor final, y a continuación se ejecuta el proceso del interior del ciclo; cuando se termina el cuerpo del ciclo se cambia el valor de la variable contador (según su valor de cambio); si la variable de control, es mayor (o menor en caso de cuentas regresivas) que el valor final, entonces se sale del bucle y continua con la siguiente estructura del algoritmo. Representación Gráfica – Diseño de la Solución Para la representación gráfica de esta estructura se utiliza solamente el símbolo de repetición, como se muestra adyacentemente, en donde: Cont : Variable de control (Contador) Vi : Valor inicial del contador (desde cuanto contamos) Vf : Valor final del contador (hasta cuanto contamos) Vc : Valor de cambio del contador (incremento o decremento) En otras palabras la estructura desde-hasta funciona como una estructura mientras (cuando su variable de control es un contador), asignando el valor inicial al contador y repitiendo el cuerpo del ciclo mientras éste se encuentre entre el rango de valores permitidos por el valor final del contador, dentro del cuerpo del ciclo se le cambia el valor al contador con el incremento o decremento del valor de cambio, sin necesidad de dibujar un bloque que lo indique, ya que la estructura automáticamente lo realiza. Representación en Pseudo-Código – Diseño de la Solución Para expresar una estructura Desde - Hasta en pseudo-código vamos a utilizar la siguiente simbología. Debe tenerse muy claro que el uso de ciclos implica la posible realización de acciones previas y acciones posteriores al ciclo, según corresponda al diseño de la solución. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 24 //Acciones Previas Hacer cont = Proposición Inicial Repetir con cont desde Vi hasta Vf {Repetir el Cuerpo del Ciclo} Hacer cont = Modificación de cont (Vc) {Fin del Ciclo} //Acciones Posteriores Ejemplo //Acciones Previas Hacer cont = 1 Repetir con cont desde 1 hasta 5 {Repetir el Cuerpo del Ciclo} Hacer cont = cont + 1 {Fin del Ciclo} //Acciones Posteriores Otra forma de narrar el pseudocódigo. //Acciones Previas Hacer i = Proposición Inicial Repetir i desde Vi hasta Vf con incremento 1 {Repetir el Cuerpo del Ciclo} //Cuando el ciclo llega acá hace //automáticamente el incremento de i {Fin del Ciclo} //Acciones Posteriores Ejemplo //Acciones Previas Hacer i = 1 Repetir i desde 1 hasta 5 con incremento 1 {Repetir el Cuerpo del Ciclo} //Cuando el ciclo llega acá hace //automáticamente el incremento de i {Fin del Ciclo} //Acciones Posteriores Nota: tome en cuenta que en un ciclo for no es necesario escribir la línea i=i+1 ya que el incremento lo hace automáticamente al terminar la iteración. Reglas de Funcionamiento Las siguientes normas o reglas deben de cumplirse, cuando utilicemos una estructura Desde - Hasta 1. La variable de control, valor inicial y valor final deben ser todas del mismo tipo: entera (int). 2. Los valores iniciales y finales pueden ser tanto expresiones, constantes o variables. 3. La última ejecución del bucle normalmente ocurre cuando la variable de control es igual al valor final. 4. El valor de cambio puede ser positivo (incremento) o negativo (decremento). 5. Cuando no se especifica el valor de cambio, el incremento de la variable de control es 1. 6. La variable de control o contador solo se le debe cambiar su valor, después de realizado el cuerpo del ciclo y por el valor de cambio indicado, nunca por una asignación extra. En esta estructura el valor de cambio siempre es un valor entero (al igual que el valor inicial y el final y; por lo tanto, la variable contador debe ser también tipo entero). No podemos tener un valor de cambio de 0.5. Entonces, si nuestra variable contador debe ser de tipo real, se debe de diseñar la solución con una estructura mientras y no con una desde – hasta. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 25 Codificación de la Estructura Desde_Hasta en C# La estructura iterativa Desde - Hasta necesita solamente la palabra reservada for ( ; ; ), que en español significa Desde - Hasta, los paréntesis ( ) para encerrar la condición, los ; para separar los argumentos y las { } para delimitar el cuerpo del ciclo. Cada instrucción for define el inicializador, la condición, y secciones de iterador (incremento). Estas secciones determinan normalmente cuántas veces recorre el bucle. . . . //Acciones previas for (Inicializar; condición; iterador) //for (cont=Vi; cont<=Vf; cont++) { //Cuerpo del Ciclo //Acción1 //AcciónN } //Acciones posteriores . . . Otra forma de representarlo . . . for (Expresion1; Expresion2; Expresion3) { Cuerpo del ciclo; } En donde: Expresion1: Es la expresión que asigna el valor inicial a la variable contador. Expresion2: Es una expresión lógica (condición) que verifica que el valor actual del contador se encuentre entre los permitidos (vi –vf). Expresion3: Es una expresión de asignación que cambia el valor del contador es decir el incremento. 6. ESTRUCTURA DE ENTRADA ASEGURADA – ESTRUCTURA HASTA_QUE (DO WHILE) Esta estructura se conoce como Hasta_Que o ciclo do-while, se utiliza cuando desconocemos el número exacto de veces que se va a ejecutar el ciclo. Al igual que el ciclo MIENTRAS, la realización del cuerpo del ciclo depende de una condición, con la única diferencia que esta estructura ejecuta (al menos una vez) el cuerpo del ciclo antes de que evalúe la condición. Funcionamiento de la Estructura Hasta_Que En esta estructura el cuerpo del ciclo se ejecuta la primera vez el cuerpo del ciclo, sin tomar en cuenta la condición, de aquí su nombre: ENTRADA ASEGURADA; al finalizar el cuerpo del ciclo, se evalúa la condición, si el resultado es cierto se continúa repitiendo el cuerpo del ciclo, caso contrario continúa con la estructura del algoritmo o flujograma. Esta estructura, permite repetir el cuerpo del ciclo (proceso, acciones o tareas) al menos una vez, es decir que el número de iteraciones puede ser 1, o más veces. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURAINTRODUCCIÓN A LA INFORMÁTICA 26 Antes de ejecutar por primera vez el cuerpo del ciclo se asigna el valor inicial de la variable de control, una vez completado el cuerpo del ciclo se verifica si el valor de la variable de control se cumple y al terminar la estructura, cambia la variable de control y regresa a evaluar la condición de nuevo, si el resultado es falso, el cuerpo del ciclo no se ejecuta más y continua con la estructura del algoritmo. Dentro del cuerpo del ciclo debe existir alguna estructura que modifique el resultado lógico (de verdadero a falso) de la condición. Representación Gráfica – Diseño de la Solución Para la representación gráfica de esta estructura se utiliza solamente el símbolo de repetición, como se muestra adyacentemente, en donde: En otras palabras, la estructura Hasta_Que funciona como una estructura mientras con la única diferencia que primero realiza el cuerpo de ciclo y luego evalúa la condición. Representación en Pseudo-Código – Diseño de la Solución Para expresar una estructura Hasta - Que en pseudo-código vamos a utilizar la siguiente simbología. Debe tenerse muy claro que el uso de ciclos implica la posible realización de acciones previas y acciones posteriores al ciclo, según corresponda al diseño de la solución. … //Acciones Previas Hacer cont = Proposición Inicial Repetir {Repetir el Cuerpo del Ciclo} Hacer cont = Modificación de cont (Vc) Hasta que ( condición ) {Fin del Ciclo} //Acciones Posteriores … Ejemplo … //Acciones Previas Hacer cont = 1 Repetir {Repetir el Cuerpo del Ciclo} hacer cont = cont + 1 Hasta que ( cont < 5 ) {Fin del Ciclo} //Acciones Posteriores … Reglas de Funcionamiento Las siguientes normas o reglas deben de cumplirse, cuando utilicemos una estructura HASTA_QUE: 1. La estructura se asigna el valor inicial de la variable de control. 2. Se ejecuta el cuerpo del ciclo una vez, la primera 3. Dentro del cuerpo del ciclo debe existir alguna expresión que posibilite la modificación del resultado lógico (de verdadero a falso) de la condición. 4. La estructura termina con una expresión lógica. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 27 5. Se evalúa la condición: resultado falso se repite una vez más el cuerpo del ciclo y se evalúa de nuevo la condición. Codificación de la Estructura Hasta_Que en C# La estructura iterativa de entrada asegurada necesita solamente la palabra reservada do while, que justamente en español significa Hasta que, los paréntesis ( ) para encerrar la condición y las { } para delimitar el cuerpo del ciclo. La instrucción do ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una determinada expresión se evalúa como false. El cuerpo del bucle se debe incluir entre llaves, {}, a menos que esté compuesto por una sola instrucción. En ese caso, las llaves son opcionales. Sintaxis . . . //Acciones previas cont = Proposición Inicial // cont=Vi; do { //Cuerpo del Ciclo //Acción1 //AcciónN //cont = Modificación de cont cont++ } while(condición) // cont<=Vf; //Acciones Ejemplo . . . //Acciones previas x = 1; do { Console.Write("\n {0}", x); x = x + 1; } while ( x <=10); //Acciones Posteriores //este ciclo de ejemplo se ejecutará 10 veces. En C# la estructura do-while puede salir del bucle utilizando la instrucción break en cualquier punto del bloque. Puede pasar directamente a la instrucción de evaluación de expresión while utilizando la instrucción continue. Si la expresión while se evalúa como true, la ejecución continúa en la primera instrucción tras el bucle. Si la expresión se evalúa como false, la ejecución continúa en la primera instrucción detrás del bucle do-while. En nuestro caso y con fines académicos no aplicaremos estas últimas técnicas para salir de la estructura sino como se indicó al principio de esta unidad se utilizarán llaves para delimitar el fin de la estructura. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 28 Ejemplo de Estructura HASTA_QUE Aplicando proceso solucionador de problemas con modularidad, estructuras selectivas y repetitivas. Un profesor calificó 25 exámenes de sus alumnos y requiere calcular la nota promedio de todos ellos, la nota más alta y cuántos aprobaron y reprobaron el examen. Además, deberá imprimir el nombre y la nota de cada estudiante. A. Planteamiento general del problema (Método de la caja negra). Entrada Salida Nombre de cada estudiante Calificación de cada estudiante Número de alumnos (25) Nota promedio Nota Mayor Número de aprobados Número de reprobados B. Análisis del problema. 1. Definición de variables de entrada. Nombre Tipo Descripción nota Real Representa la nota de cada estudiante. nombre Alfabético Representa el nombre de cada estudiante 2. Definición de variables de salida. Nombre Tipo Descripción promedio Real Representa la nota promedio del grupo de alumnos mayor Real Representa la nota mayor de todos los exámenes apr Entero Representa el número de aprobados. rep Entero Representa el número de reprobados. Constantes: No se utilizan 3. Restricciones. Nota >= 0 && nota <= 10 UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 29 4. Proceso. apr = 0 ; rep = 0 ; mayor = 0 ; i = 1 ; suma = 0 ; Repetir Leer nombre Leer nota Mientras (nota < 0 || nota > 10) Leer nota Fin: Mientras suma = suma + nota ¿ nota >= 6 ? Si: apr = apr +1 No: rep = rep + 1 ¿ nota > mayor? Si: mayor = nota i = i + 1 Hasta Que (i <= 25) promedio = suma / 25 5. Definición de Variables de Proceso. Nombre Tipo Descripción suma Real Representa la suma de las 25 notas de los alumnos. i Entero Representa el contador de los alumnos. C. Diseño de la solución Pseudocodigo Método: Main Acceso: Público Estático: Si {Un profesor calificó 25 exámenes de sus alumnos y requiere calcular la nota promedio de todos ellos, la nota más alta y cuántos aprobaron y reprobaron el examen. Además, se deberá imprimir el nombre y la nota de cada estudiante} {apr, rep son variables de tipo entero, deben ser positivos y representan el numero aprobados y reprobados respectivamente, nombre es del tipo alfanuméricos y representa el nombre del UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 30 estudiante, nota del tipo real, suma es del tipo real es variable de proceso y representa la suma de las 25 notas, i es un entero que representa un contador y es variable de proceso} 1. Hacer mayor = 0, rep = 0, apr = 0, suma = 0, i =1 2. Repetir Escribir “Digite el nombre del alumno: ” Leer nombre Hacer nota = ValidarNota() Hacer suma = suma + nota Escribir nombre, nota 2.1 Si nota >= 6 entonces Hacer apr = apr + 1 Sino Hacer rep = rep + 1 2.2 {Fin del ciclo paso 2.1} 2.3 Si nota > mayor entonces Hacer mayor = nota 2.4 {Fin del ciclo paso 2.3} Hacer i++ Hasta i <= 25 3 {Fin del ciclo paso 2} 4 Imprimir(suma, mayor, apr, rep) Método: ValidarNota Acceso: Público Estático: Si {Realiza la validación de nota, se encuentre entre el rango 0 y 10 de cada alumno} {nota es variablede tipo real} 1. Escribir “Introduzca la nota: ” 2. Leer nota 3. Mientras nota < 0 || nota > 10 Repetir Escribir “La nota debe estar entre 0 y 10…” Leer nota 4. {Fin del ciclo del paso 3} 5. Retornar nota Método: Imprimir Acceso: Público Estático: Si {recibe los valores de suma, mayor, apr, rep los cuales utiliza para realiza el cálculo del promedio y además imprime los demás valores} {promedio, mayor son variables de tipo real, deben ser positivos, apr, rep son variables de tipo entero, deben ser positivos y representan el numero aprobados y reprobados respectivamente} 1. Recibir suma, mayor, apr, rep 2. promedio = suma /25. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 31 3. Escribir “La nota promedio del grupo es ”, promedio 4. Escribir “Nota mayor del grupo es ”, mayor 5. Escribir “Numero de aprobados ”, apr 6. Escribir “Numero de reprobados ”, rep Codificación. using System; namespace calculaAprobadosReprobados { class Program { static void Main(string[] args) { // Entrada string nombre; float nota; // Salida int apr = 0, rep = 0; float mayor = 0; // Proceso int i = 1; float suma = 0; do // inicia el ciclo DO WHILE entrada asegurada { Console.Write("Digite el nombre del alumno: "); nombre = Console.ReadLine(); //realiza llamado al metodo y retorna nota nota = ValidarNota(); suma += nota; Console.WriteLine(" {0} {1:0.00}", nombre, nota); // Cuenta aprobados y reprobados if (nota >= 6) apr++; else rep++; // Almacena la nota mayor if (nota > mayor) mayor = nota; i++; } while (i <= 25); //llamado a metodo para realizar prom e imprimir Imprimir(suma, mayor, apr, rep); Console.Write("Para Continuar presione cualquier tecla ...."); Console.ReadKey(); } // Main private static float ValidarNota() { float nota; Console.Write("Introduzca la nota: "); nota = float.Parse(Console.ReadLine()); //Validacion de datos while (nota < 0 || nota > 10) { UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 32 Console.WriteLine("La nota debe estar entre 0 y 10..."); nota = float.Parse(Console.ReadLine()); } return nota; } private static void Imprimir(float suma, float mayor, int apr, int rep) { float promedio = 0; promedio = suma / 25; Console.WriteLine("La Nota Promedio del grupo es: {0:0.00} ", promedio); Console.WriteLine("Nota mayor del grupo: {0:0.00} ", mayor); Console.WriteLine("Numero de Aprobados: {0:} ", apr); Console.WriteLine("Numero de Reprobados: {0:} ", rep); } } } 7. CICLOS ANIDADOS El cuerpo de un ciclo puede contener cualquier tipo de sentencias: secuenciales, selectivas y repetitivas. Cuando un ciclo está contenido en el cuerpo de otro ciclo, se denominan ciclos anidados. Se pueden anidar cualquier tipo de estructura estudiada anteriormente, ya sea con un mismo tipo de estructuras o con una combinación de varias de ellas. Por ejemplo, los ciclos Hacer mientras y desde hasta pueden estar anidados, entre sí, o bien ciclos Hacer mientras con hasta que o viceversa. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 33 NOTA: Las variables tipo arreglo se verán en una unidad posterior pero a manera de ejemplo para aprendizaje de la estructura repetitiva foreach para recorrer arreglos se presenta el siguiente ejemplo. Ejemplo 1 de uso de foreach var NombresClientes = new List<string>() { "Alex", "Angel", "Nicolle" }; foreach (string name in NombresClientes) { Console.WriteLine(name); } Ejemplo 2 de uso de foreach // Creando un arreglo con 3 cadenas de texto string[] ObjetosComunes = {"Celular", "Televisor", "Mesa"}; // utilizando foreach para recorrer el arreglo e ir imprimiendo en pantalla el valor. foreach (string value in ObjetosComunes) { Console.WriteLine(value); } Nota: Cuando se recorre un arreglo con foreach no necesariamente solo se puede imprimir en pantalla, sino que también el programador puede realizar otras acciones con dichos datos a medida va recorriendo el arreglo con foreach. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 34 PARTE III: PRODUCTO A ELABORAR POR EL ESTUDIANTE: Resuelva los siguientes ejercicios de estructuras selectivas Ejercicio 1: En una Tienda se tienen 2 departamentos, en los cuales se tienen promociones de descuento en la mercadería, según el cliente que compra: Hombre o Mujer, de acuerdo a la siguiente tabla: Departamento Sexo Descuento (%) 1. Ropa 1. Femenino 20 2. Masculino 25 2. Calzado 1. Femenino 35 2. Masculino 30 Diseñe una solución que dado el monto de la compra en un departamento pueda otorgarle el descuento respectivo, indicándole cuánto debe pagar y el descuento aplicado. Además, se debe validar la entrada de datos solamente con estructuras selectivas para que únicamente se ingresen datos correctos en caso contrario presentar un mensaje de error. Solo se puede comprar de un departamento por transacción. Se pide: Planteamiento general del problema (Método de la caja negra). Análisis del problema. Definición de variables de entrada. Definición de variables de salida. Restricciones. Proceso. Definición de variables de proceso. Diseño de la solución. o Algoritmo narrado. o Sintaxis en C# UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 35 Ejercicio 2: Una tienda de venta en línea de camisetas tiene como política hacer descuentos de acuerdo a la cantidad de camisetas que el cliente solicite, validar que el cliente debe compre como mínimo una camisa, cada camiseta tiene el precio de $12.00 y hace los siguientes descuentos: Camisetas Descuento Menos de 3 $0.00 De 3 a 6 $5.00 De 7 a 12 $10.50 De 13 a 24 $15.00 Más de 25 $25.00 Se solicite que imprima lo siguiente: La cantidad de camisetas compradas. El monto de lo vendido según el descuento aplicado. Se pide: Planteamiento general del problema (Método de la caja negra). Análisis del problema. Definición de variables de entrada. Definición de variables de salida. Restricciones. Proceso. Definición de variables de proceso. Diseño de la solución. o Algoritmo narrado. o Sintaxis en C# UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURAINTRODUCCIÓN A LA INFORMÁTICA 36 Resuelva los siguientes ejercicios haciendo uso de estructuras repetitivas y selectivas. Ejercicio 3: Una empresa dedicada a las ventas necesita le elaboren un programa que como entrada de datos tenga el nombre del vendedor y su sueldo, (valide que el sueldo del vendedor debe ser mayor que cero); no se sabe la cantidad de vendedores que se procesaran, utilice la herramienta de estructuras repetitivas que crea más conveniente. Para cada vendedor deberá de calcular un bono de acuerdo a las ventas realizadas en el mes (valide que las ventas deben ser mayor o igual a cero) según lo establecido en la siguiente tabla. Ventas Bono Menor o Igual a $500.00 $0.0 Mayor a $500.00 y Menor o Igual a $700.00 5% sobre el sueldo del vendedor Mayor a $700.00 y Menor o igual a $900.00 7% sobre el sueldo del vendedor Mayor a $900.00 y Menor o igual a $1,100.00 9% sobre el sueldo del vendedor Mayor a $1,100.00 y Menor o igual a $1,300.00 11% sobre el sueldo del vendedor Mayor a $1,300.00 15% sobe el sueldo del vendedor Debe Imprimir lo siguiente: 1. Para cada vendedor imprimir su nombre, sueldo, sus ventas y su respectivo bono otorgado en base a la tabla anterior 2. La cantidad de Vendedores en cada rango y la sumatoria de las ventas por rango. 3. El promedio de las ventas. 4. El nombre del vendedor y su venta máxima. Se pide: Planteamiento general del problema (Método de la caja negra). Análisis del problema. Definición de variables de entrada. Definición de variables de salida. Restricciones. Proceso. Definición de variables de proceso. Diseño de la solución. o Algoritmo narrado. o Sintaxis en C# UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 37 INDICACIONES DE ENTREGA Los estudiantes entregarán un archivo comprimido conteniendo los proyectos en C# de los tres ejercicios solicitados en carpetas separadas y con el nombre Ejercicio1, Ejercicio2 y Ejercicio3. Además, entregarán un documento con el desarrollo de las fases del proceso solucionador de problemas, para cada ejercicio. Resumiendo, el archivo comprimido se deberá llamar CARNET_LAB1.ZIP, el reporte tendrá el nombre CARNET_ReporteLAB1.pdf, en donde reemplazará la palabra CARNET por su número de carnet., y las carpetas serán nombradas Ejercicio1, Ejercicio2 y Ejercicio3 respetivamente. 1. Documento: Deberá de contemplar lo siguiente: Carátula Índice. Introducción Objetivo general Objetivos específicos Desarrollo de los ejercicios (para cada uno de los ejercicios) o Enunciado. o Planteamiento general del problema (Método de la caja negra). o Análisis del problema. o Definición de variables de entrada. o Definición de variables de salida. o Restricciones. o Proceso. o Definición de variables de proceso. o Diseño de la solución. Algoritmo narrado. Sintaxis en C# Conclusiones. Recomendaciones. Bibliografía. Carátula. En esta parte se presenta la información personal (nombre, carnet, asignatura) e información de la Universidad. a. Imagen de minerva es decir el logo de la UES, centrada en la parte superior. b. Datos de la Universidad, Facultad, Carrera, Cátedra. c. Titulo o tema. d. Nombre de estudiante, seguido del carnet. e. Asignatura. UNIVERSIDAD DE EL SALVADOR EN LÍNEA FACULTAD DE INGENIERÍA Y ARQUITECTURA INTRODUCCIÓN A LA INFORMÁTICA 38 f. Sede. g. Grupo en aula virtual. h. Tutor (a). i. Ciclo y año. j. Lugar y fecha. El nombre del documento será CARNET_ReporteLAB1.pdf FECHA ASIGNACION: 23 de marzo de 2020. FECHA ENTREGA: 19 de abril de 2020 11:55 pm. MEDIO: Enlace en aula virtual llamado Laboratorio 1 Evaluado: Metodología para resolver problemas con estructuras selectivas y repetitivas, ubicado en la pestaña evaluaciones.
Compartir