UNIVERSIDAD ESTATAL PENÍNSULA DE SANTA ELENA UPSE Fundamentos y Lenguaje C Docente : Ing. Alexis Rocha Haro, MGTI Ingeniero en Sistemas Computacionales Magíster en Gerencia de Tecnologías de la Información Email: [email protected][email protected]La Libertad, Santa Elena, Ecuador Fundamentos de Programación
37
Embed
Fundamentos de Programación - CAP4 - Diagramas de Flujo
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
LOGO UNIVERSIDAD ESTATALPENÍNSULA DE SANTA ELENA
UPSE
Fundamentos y Lenguaje C
Docente:Ing. Alexis Rocha Haro, MGTI
Ingeniero en Sistemas ComputacionalesMagíster en Gerencia de Tecnologías de la Información
Bibliografía Básica:Joyanes Aguilar Luis (2008). Fundamentos de Programación: Algoritmos, Estructuras de Datos y Objetos (4ta. Edición) Madrid. Editorial: McGraw Hill. Páginas: 127 – 155, 157 – 198.
Bibliografía Recomendada:Corona Nakamura María Adriana, Ancona Valdez María de los Ángeles (2011). Diseño de algoritmos y su codificación en lenguaje C (1era. Edición) México. Editorial: McGraw Hill. Páginas: 27 – 127, 285 – 290.
Cairó Battistutti Osvaldo (2006). Fundamentos de Programación: Piensa en C (1era. Edición) México. Editorial: PEARSON Educación. Páginas: 49 – 84, 89 – 128.
¿Qué se quiere aprender al finalizar el Capítulo 4?
Conocer los diagramas utilizados en la programación básica con su respectiva simbología.
Conocer los operadores de asignación y comparación, así como los conceptos de contador, acumulador y banderas, herramientas utilizadas en la programación.
Realizar ejercicios con diagramas de flujo y dominar la sintaxis para las respectivas codificaciones.
LOGO Capítulo 4
Unidad 4 – Diagramas de Flujo
CONTENIDOS4.1. Diagramas de Flujo y Diagramas Nassi – Schneidermann.4.2. Símbolos Básicos para los Diagramas de Flujo.4.3. Operadores de Asignación y Comparación.4.4. Conceptos de Contador, Acumulador y Bandera (Flags).4.5. Ejercicios de Aplicación.4.6. Evaluación de la Unidad.
4.1. Diagramas de Flujo y Diagramas Nassi - Schneidermann
Diagramas de Flujo Un Diagrama de Flujo representa la
esquematización gráfica de un algoritmo, muestra gráficamente los pasos o procesos a seguir para alcanzar la solución de un determinado problema.
Su correcta construcción es importante, ya que a partir del mismo se escribe un programa en algún lenguaje de programación.
Si el diagrama de flujo está completo y correcto, el paso del mismo a un lenguaje de programación es relativamente simple y directo.
Estos diagramas utilizan símbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de Inicio y Fin del proceso.
Reglas de los Diagramas de Flujo
1) Todo diagrama de flujo tiene un Inicio y un Final.2) Utilizar simbología adecuada.3) Seguir un diseño TOP-DOWN (Arriba - Abajo).4) No deben haber flujos cruzados, utilicen en forma
horizontal o vertical.5) No utilizar palabras reservadas de un lenguaje de
programación.6) Cuando existan diagramas de flujo muy extensos,
utilice los respectivos conectores.7) Empiece a diseñar de arriba hacia abajo y de
izquierda a derecha.8) Para hacer la lectura, hágalo de arriba hacia abajo
y de izquierda hacia derecha.
Ventajas de los DFD(Diagramas de Flujo de Datos)
Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.
Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los flujos de los re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.
Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.
Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.
Al igual que el pseudocódigo, el diagrama de flujo con fines de análisis de algoritmos de programación puede ser ejecutado en un ordenador, con un IDE como Free DFD.
Diagramas Nassi - Schneidermann Un Diagrama Nassi-Schneidermann (NSDs) es una representación gráfica de un algoritmo para programación estructurada, desarrollado en 1972 por Isaac Nassi y Ben Schneidermann, estos diagramas son conocidos como Estructogramas debido a que muestran las estructuras de un programa.
Siguiendo un diseño TOP-DOWN, el problema es reducido en subproblemas cada vez menores, hasta que sólo comandos y estructuras permanecen, estos diagramas reflejan una descomposición de una forma clara y simple, usando cajas anidadas para representar subproblemas.
Comandos NS (Nassi - Schneidermann)Existen 3 tipos: Comando Normal: Cuando se asigna un valor a una
variable (c=a + b) o (nombre=‘’Juanita Pérez’’). El signo = es usado para asignación, para preguntas se usa el == (doble igual).
Comando Leer: Usado cuando se requiere que ingrese un número o un texto, estos comandos asignan el valor que el usuario ingresa a una variable. Ej.: Leer X, luego la variable X contiene el valor ingresado por el usuario.
Comando Escribir: Solo muestra el valor de la variable en pantalla al usuario.
Tipos de Diagramas NSD’s Todo algoritmo se representa de la siguiente forma:
Existe una representación para cada tipo de estructura algorítmica en la programación estructurada, existen 5 tipos: Secuenciales o Simples (IF, IF Anidados): Podemos
tener declaración de variables (tipo: nombre_variable), asignación (nombre_variable = valor), lectura (Leer <lista de variables>) y escritura de datos (Escribir <lista de constantes y variables>).
Condicionales, Selectivas o Alternativas (IF, SWITCH o CASE):
Cíclicas o Repetitivas (WHILE, DO WHILE, FOR):
CASOS ESPECIALES DE LAS ESTRUCTURAS ANIDADAS: Alternativas Anidadas: Consta de una serie de
estructuras IF, unas interiores a otras; a su vez, dentro de cada estructura pueden existir diferentes acciones, se utiliza para diseñar estructuras que contengan más de 2 alternativas (IF ANIDADOS).
Iterativas Anidadas: Consta en anidar un ciclo dentro de otro, en este caso, la estructura interna debe estar incluida totalmente dentro de la externa (WHILE, DO WHILE, FOR).
Operadores de Asignación Un operador de asignación asigna un valor a su operando izquierdo basándose en el valor de su operando derecho.
El operador básico de asignación es el igual (=), el cual asigna el valor de su operador derecho a su operador izquierdo, esto es, X=Y asigna el valor de Y a X.
Operadores Aritméticos
Operadores de Comparación
4.4. Conceptos de Contador, Acumulador y Bandera (Flags)
Estructuras de Control Iterativas Las estructuras de control iterativas se utilizan para resolver problemas donde sea necesario repetir un determinado número de veces un conjunto de instrucciones llamados Bucles, también se conocen como Estructuras Repetitivas.
Al igual que en las Estructuras Selectivas, se requiere definir la condición con la que se evaluará y decidirá qué acciones se llevarán a cabo, recordemos que para construir las condiciones es necesario utilizar los operadores relacionales (de comparación) y los operadores booleanos (lógicos).
EJEMPLO: (Calificacion > = 6) and (Sexo == ‘F’)
Las Estructuras de Control Iterativas se clasifican en: While, Do While y For
Para poder trabajar con estas estructuras es importante comprender el concepto de: Contador = Contador + Constante Sumador = Sumador + (Variable o Expresión) Acumulador = Acumulador + Variable Acumulador = Acumulador * (Variable, Constante o Expresión)
Contador Una Variable es un espacio de memoria que se
reserva en la PC, cuyo contenido puede cambiar a lo largo de la ejecución de un programa, entonces, un contador es un tipo de variable que incrementa o decrementa su contenido en un valor constante.
‘’Incrementar’’ significa que estamos sumando.
Como puedes observar, la variable veces, se está incrementando un valor constante (1), es decir, a su contenido le suma el valor y se vuelve a guardar en la misma variable.
’Decrementar’’ significa que estamos restando.
Como puedes observar, la variable total, se está decrementando un valor constante (3), es decir, a su contenido le resta el valor y se vuelve a guardar en la misma variable.
EJEMPLO: veces = veces + 1
EJEMPLO: total = total - 3
Es importante que se inicialice siempre los contadores:
El valor con el que se inicie el contador, dependerá del problema a resolver.
Veces = 0 total = 33
Sumador o Acumulador Un Acumulador es una variable que incrementa o
decrementa su contenido en cantidades variables.
Cuando decimos ‘’Incrementa’’, estamos sumando.
Como puedes observar, la variable nomina, se está incrementando una cantidad variable, es decir, a su contenido le suma la cantidad y se vuelve a guardar en la misma variable.
Cuando decimos ‘’Decrementar’’ significa que estamos restando.
Como puedes observar, la variable total, se está decrementando una cantidad variable, es decir, a su contenido le resta el valor y se vuelve a guardar en la misma variable.
EJEMPLO: nomina = nomina + sueldo
EJEMPLO: total = total - deuda
Es importante que se inicialice siempre los acumuladores:
El valor con el que se inicie el acumulador, dependerá del problema a resolver.
nomina = 0
total = 350
Bandera (Flags) Una Bandera o Flag es una variable que trabaja
en función de las condiciones o preguntas que se utilizan en las estructuras.
Trabajan en forma de operadores lógicos.
Como puedes observar, la variable opcion, tiene un mensaje donde el usuario tiene que responder si desea que dicho programa continúe o no continúe, donde dicha respuesta (S ó N), se almacene en dicha variable.
EJEMPLO: opcion = “Desea continuar (S-N):”
4.5. Ejercicios de Aplicación
Ejercicios de Aplicación 1ALGORITMOS y DIAGRAMAS NASSI SCHNEIDERMANN1) Diseñar un algoritmo para calcular el área y el perímetro de un
rectángulo. (Área=b*h, Perímetro=2*(b+h))2) Un maestro desea saber que porcentaje de hombres y mujeres hay
en un grupo de estudiantes.3) Un profesor prepara 3 cuestionarios para una evaluación final:
A, B y C. Se sabe que se tarda 5 minutos en revisar el cuestionario A, 8 minutos en revisar el cuestionario B y 6 minutos en el C. La cantidad de exámenes de cada tipo se entran por teclado. ¿Cuántas horas y cuántos minutos se tardará en revisar todas las evaluaciones?
4) Se desea realizar un algoritmo para obtener el valor absoluto de un número.
5) Ingresar 3 números y ordenarlos en forma ascendente.6) Una empresa desea calcular los nuevos salarios de sus empleados
de la siguiente forma: Quienes ganan hasta $500 tendrían un incremento del 10%, quienes devengan más de $500 y hasta $800 recibirán un aumento del 8% y los demás del 5%. ¿Cuál será el valor del nuevo sueldo?
7) Una distribuidora de motocicletas tiene una promoción de fin de año que consiste en lo siguiente: las motos marca HONDA tienen un descuento del 5%, las de marca YAMAHA del 8%, las de marca SUZUKI el 10% y las de otras marcas el 2%. Calcular el valor del descuento y el valor a pagar por la motocicleta.
Ejercicios de Aplicación 28) Leer N números y encontrar el valor promedio, el mayor y menor.9) Generar los 10 primeros números de la Serie FIBONACCI.10) Genere los 5 primeros números pares y los 5 primeros números impares.11) Imprimir los números del 1 al 10.12) Imprimir los números del 5 al 50 con intervalos de 5.13) Dado un número N, mostrar los números menores a éste, en orden descendente.14) Ingrese 10 números y muestre la sumatoria, el promedio, el número mayor y el número menor.15) Realizar un programa que ingrese por teclado 3 números enteros en las variables A, B y C, comprendidos entre 0 y 9. Se trata de conformar 2 números en las variables X y Y, compuesto por los dígitos almacenados en A, B y C. Por ejemplo:A=7 B=6 C=3 X=763 Y=367NOTA: La serie Fibonacci comienza con los números: 0, 1, 1, 2, 3, 5, 8, 13, 21, ....
Ejercicios de Aplicación 316) Realizar un programa que permita calcular la suma y el promedio de los números comprendidos entre X y Y, incluidos los números dados. Estos números deben ser ingresados por teclado (X, Y). Al finalizar el programa deberá preguntar al usuario si desea continuar y deberá salir con el dígito 777.17) Calcule y presente la edad actual de una persona en años, meses y días, para ello deberá ingresar la fecha de nacimiento y la fecha actual.18) Desarrollar un programa que calcule y presente la Suma y el Promedio, de las notas (1 a 20 puntos) de N estudiantes a ingresar. Al finalizar el programa deberá consultar al usuario si desea repetir el programa con las siguientes opciones (T = Repetir, F = Salir).19) Desarrollar un programa que permita ingresar una nota y convertir en calificaciones numéricas, según la siguiente tabla: SOBRESALIENTE = 19 y 20 puntos, MUY BUENA = 16, 17 y 18 puntos, BUENA = 13, 14 y 15 puntos, REGULAR = 10, 11 y 12 puntos, INSUFICIENTE = 1 hasta 9 puntos. Se asume que la nota está comprendida entre 1 y 20. Al finalizar el programa, se deberá consultar al usuario si desea repetir ingresando el dígito 123, caso contrario finaliza el programa.
Ejercicios de Aplicación 420) Ingresar 2 números enteros positivos y presentar en pantalla el producto de esos 2 números por sumas sucesivas (4 x 3 = 12, 4+4+4=12)21) Elabore un programa que a partir del ingreso de un número positivo N cualquiera, de como salida el valor de S = 1 + ½ + 1/3 + … + 1/N
Tarea 1 – 1/1 y 1/2 SemestreEjercicio 4:Se desea realizar un programa que calcule y presente por pantalla: el valor absoluto, la raíz cuadrada y la potencia de un número elevado a la N (para todos los casos, ingrese diferentes valores por teclado). Al finalizar el programa deberá repetir con las siguientes opciones (C=Continuar, S=Salir).Ejercicio 6:Una empresa desea calcular los nuevos salarios de sus empleados de la siguiente forma: Quienes ganan hasta $500 tendrían un incremento del 10%, quienes devengan más de $500 y hasta $800 recibirán un aumento del 8% y los demás del 5%. ¿Cuál será el valor del nuevo sueldo del empleado?. El ingreso se lo realiza por cada empleado (Nombres y Apellidos completos, sueldo ganado), de manera que permita el programa ingresar la información de otro empleado. Al finalizar el programa deberá repetir con las siguientes opciones (111=Continuar, 222=Salir).Ejercicio 7:Una distribuidora de motocicletas tiene una promoción de fin de año que consiste en lo siguiente: las motos marca HONDA tienen un descuento del 5%, las de marca YAMAHA del 8%, las de marca SUZUKI el 10% y las de otras marcas el 2%. Calcular el valor del descuento y el valor a pagar por la motocicleta.
Tarea 1 – 1/3 SemestreEjercicio 4:Se desea realizar un programa que calcule y presente por pantalla: el valor absoluto, la raíz cuadrada y la potencia de un número elevado a la N (para todos los casos, ingrese diferentes valores por teclado). Al finalizar el programa deberá repetir con las siguientes opciones (C=Continuar, S=Salir).Ejercicio 6:Una empresa desea calcular los nuevos salarios de sus empleados de la siguiente forma: Quienes ganan hasta $500 tendrían un incremento del 10%, quienes devengan más de $500 y hasta $800 recibirán un aumento del 8% y los demás del 5%. ¿Cuál será el valor del nuevo sueldo del empleado?. El ingreso se lo realiza por cada empleado (Nombres y Apellidos completos, sueldo ganado), de manera que permita el programa ingresar la información de otro empleado. Al finalizar el programa deberá repetir con las siguientes opciones (111=Continuar, 222=Salir).Ejercicio 16:Realizar un programa que permita calcular la suma y el promedio de los números comprendidos entre X y Y, incluidos los números dados. Estos números deben ser ingresados por teclado (X, Y). Al finalizar el programa deberá preguntar al usuario si desea continuar (código 33) y salir (código 77).
Información en la Webhttp://www.slideshare.net/josedavidsia/diagrama-de-flujo-delfinahttp://es.wikipedia.org/wiki/Diagrama_de_flujohttp://www.aiteco.com/que-es-un-diagrama-de-flujo/http://www.fundibeq.org/opencms/export/sites/default/PWF/downloads/gallery/methodology/tools/diagrama_de_flujo.pdfhttp://www.monografias.com/trabajos19/algoritmos/algoritmos.shtmlhttp://eii.ucv.cl/nessi/help/es/nsd.htmlhttp://www.slideshare.net/lopezvictor01/01-diagramas-nassischneidermanhttps://developer.mozilla.org/es/docs/Gu%C3%ADa_JavaScript_1.5/Operadores/Operadores_de_asignaci%C3%B3nhttp://es.wikipedia.org/wiki/Anexo:Operadores_de_C_y_C%2B%2Bhttp://www.slideshare.net/NoraO/contadores-y-acumuladores-3185194http://es.wikipedia.org/wiki/Contador_de_programahttp://www.slideshare.net/luisitops/presentacion-foro-evaluadohttps://sites.google.com/site/tutoriasdeingenieria/algoritmos/anidamiento-en-los-ciclos-de-los-algoritmos-cicle-on-python