You are on page 1of 8

Aprenda a Programar

INTRODUCCIÓN Las técnicas de desarrollo y diseño de programas que se utilizan en la programación convencional tienen inconvenientes, sobre todo a la hora de verificar y modificar un programa. En la actualidad están adquiriendo gran importancia las técnicas de programación, cuyo objetivo principal es el de facilitar la comprensión del programa, y además permiten, de forma rápida, las ampliaciones y modificaciones que surjan en la fase de explotación del ciclo de vida de un programa o una aplicación informática. En la programación convencional se suele hacer un uso indiscriminado y sin control de las instrucciones de salto condicional e incondicional, lo cual produce cierta complejidad en la lectura y en las modificaciones de un programa . eliminar estas dificultades es uno de los propósitos de la programación estructurada y, por ello, en ocasiones, se ha definido como la técnica de programación sin saltos condicionales e incondicionales.

-1-

De una forma general los diagramas de flujo de datos son gráficas dirigidas en donde los nodos especifican las actividades de proceso y los arcos la transferencia de datos entre nodos de proceso. Como cualquier diagrama de flujo, estos pueden ser utilizados en cualquier nivel de abstracción. Un diagrama de datos representa el flujo de datos entre estatutos individuales o entre bloques de estatutos dentro de una rutina; flujo de datos entre rutinas secuénciales, flujo de datos entre procesos concurrentes o flujo de datos entre sistemas de cómputo distribuidos, donde cada nodo representa una unidad de proceso geográficamente separada. Distinto a otros diagramas de flujo, las burbujas no indican la lógica de decisión o las condiciones bajo las cuales varios nodos de proceso se activen. Los diagramas de datos pueden expresarse utilizando una notación informal, o por medio de símbolos especiales para denotar a los nodos de proceso, a los nodos de entrada. Los diagramas generales especifican los procesos de un sistema en forma funcional; cada diagrama describe las entradas, los pasos de proceso y las salidas para la función en cuestión; un diagrama general puede indicar la localización de los diagramas de detalles subordinados necesarios.

Universidad América – Ing. Oscar David Murcia Portilla

Aprenda a Programar
DIAGRAMAS DE FLUJOS ESTRUCTURADOS CARACTERÍSTICAS DE LOS DIAGRAMAS ESTRUCTURADOS Los diagramas de flujo representan la forma más tradicional para especificar y documentar los detalles algorítmicos de un producto de programación; estos diagramas utilizan cajas rectangulares para especificar las acciones, cajas en forma de rombos para las proposiciones de decisión, arcos dirigidos para las interconexiones entre las diversas cajas, así como una variedad de formas especiales para denotar las entradas, las salidas, los almacenamientos, etcétera. TEOREMA DE LA ESTRUCTURA (EL NACIMIENTO DE LOS DIAGRAMAS DE FLUJO) En un inicio, la programación estructurada fue desarrollada en sus principios por Edsgar W. Dijkstra en sus Notes on Structured Programming y se basa en el denominado Teorema de la Estructura desarrollado en 1966 por Bömh y Jacopini, que se ratificó con los trabajos de Charlan D. Mills. En la actualidad existen diversas definiciones de estos diagramas, pero todas ellas giran alrededor del teorema de estructura que, como ya hemos dicho, se debe a Bömh y Jacopini que inician todo esto con esta técnica de programación a través de módulos o bloques. Para un buen entendimiento del teorema mencionado, se realiza una definición previa de algunos de los conceptos que trata el teorema:

-2-

En los distintos departamentos de informática existentes no siempre se dispone de los mismos programadores con respecto al tiempo que se pretende que dure una aplicación, por lo cual es de suma importancia que un programa realizado por una persona sea fácil de modificas u mantener por otra. En este sentido, la diagramación estructurada ofrece muchas ventajas para logras estos objetivos. Con esto podemos decir que: Un diagrama estructurados es: Fácil de leer y comprender. Fácil de codificar en una amplia gama de lenguajes y en diferentes sistemas. Fácil de mantener. Eficiente, aprovechando al máximo los recursos de la computadora. Modularizable.

ALGUNAS DIFERENCIAS DE LOS DIAGRAMAS ESTRUCTURADOS Y LOS DIAGRAMAS TRADICIONALES. Los diagramas de flujo estructurados difieren de los diagramas tradicionales en que los primeros tienen restricción en cuanto a las formas de uso; con esto se obtiene que la gráfica obtenida sea un equivalente gráfico de la descripción por medio del seudocódigo estructurado; un ejemplo de las formas comunes y de los equivalentes en seudocódigo son: Los diagramas estructurados poseen una entrada única y una salida única; así estas formas pueden ser anidadas dentro de otras formas hasta el nivel deseado de S anidamiento, manteniendo el principio del teorema de la estructura.

1.

Diagrama Propio. Es aquel que posee un solo punto de entrada y uno de salida.

A
N

ALGUNAS VENTAJAS Y DESVENTAJAS SOBRE LOS DIAGRAMAS TRADICIONALES. Sabemos ahora, que los diagramas estructurados, a diferencia de los tradicionales es que, los primeros son una representación gráfica tal cual de los que es el seudocódigo estructurados de los programas que desarrollan hoy en día de acuerdo a la tendencia de la programación modulada. También existe un mejor entendimiento a mayor velocidad de cómo se maneja la transformación de datos. En los diagramas tradicionales, son mucho mejores para representar las especificaciones del diseño externo y del diseño interno en cualquier nivel además de que aquí los diagramas especifican los procesos de un sistema en forma funcional.

2.

Programa Propio. Es aquel programa que cumple las siguientes condiciones: Posee un solo inicio y un solo fin. Todo elemento del programa es accesible, es decir, existe al menos un camino desde el inicio al fin que pasa a través de él. No posee bucles infinitos.

APLICACIONES DE LOS DIAGRAMAS DE FLUJO. 3. Teorema de la Estructura. Todo programa propio, realice el trabajo que realice, tiene siempre al menos un programa propio equivalente que sólo utiliza las estructuras básicas de la programación, que son: La secuencia. La selección. La repetición. Los diagramas de flujo estructurados, como su nombre menciona, es actualmente caracterizado como una herramienta de la programación estructurada. Gracias a esta herramienta (y debido a las características de la programación estructurada) podemos interpretar cada acción de un programa y representarlo gráficamente (en un diagrama estructurado) con la debida estructura (simple o compuesta) de la diagramación estructurada.

Universidad América – Ing. Oscar David Murcia Portilla

Aprenda a Programar
Instrucción(es):Son las acciones a realizar cuando se cumple o no la condición si no :Precede a las acciones a realizar cuando no se cumple la condición Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o más acciones. Múltiples:

-3-

PRINCIPALES ESTRUCTURAS DE LOS DIAGRAMAS ESTRUCTURADOS.

1.

Estructura Secuencial. Es una estructura con una entrada y una salida en la cual figuran una serie de acciones cuya ejecución es lineal y en el orden en que aparecen. A su vez. Todas las acciones tienen una única entrada y una única salida.

2.

Estructura Alternativa. Es una estructura con una sola entrada y una sola salida en la cual se realiza una acción de entre varias, según una condición o se realiza una acción según el cumplimiento o no de una determinada condición. Esta condición puede ser simple o compuesta. Las estructuras alternativas pueden ser: De dos salidas, en la que una de ellas puede ser la acción nula. De tres o más salidas, que también se llama múltiple.

Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente:

Pseudocódigo:

Diagrama de flujo:

Simples: Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma: Pseudocódigo: Diagrama de flujo:

Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma: Pseudocódigo: Diagrama de flujo:

Múltiples (En caso de): Las estructuras de comparación múltiples, es una toma de decisión especializada que permiten evaluar una variable con distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma es la siguiente:

Donde: Si:Indica el comando de comparación Condición : Indica la condición a evaluar Entonces : Precede a las acciones a realizar cuando se cumple la condición

Pseudocódigo:

Diagrama de flujo:

Universidad América – Ing. Oscar David Murcia Portilla

Aprenda a Programar
Escriba “Aprobó el curso” Fin-Si FIN Diagrama de flujo:

-4-

Veamos algunos ejemplos donde se aplique todo lo anterior: Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe aparecer un mensaje indicándolo. Expresarlo en Pseudocódigo y Diagrama de flujos. Pseudocódigo: Diagrama de flujo: Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o igual a 150 cm envíe el mensaje: “Persona de altura baja”; si la altura está entre 151 y 170 escriba el mensaje: “Persona de altura media” y si la altura es mayor al 171 escriba el mensaje: “Persona alta”. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos. Pseudocódigo: INICIO Altura: ENTERO ESCRIBA “Cuál es tu altura? ” LEA Altura Si Altura <=150 entonces ESCRIBA “persona de altura baja” Sino Si Altura <=170 entonces ESCRIBA “persona de altura media” Sino Si Altura>170 ENTONCES ESCRIBA “persona alta” Fin-Si Fin-Si Fin-Si FIN ¡Es importante ser ordenado en el código que se escribe! Diagrama de flujo:

Se pide leer tres notas del alumno, calcular su definitiva en un rango de 0-5 y enviar un mensaje donde diga si el alumno aprobó o reprobó el curso. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos. Pseudocódigo: INICIO Not1, Not2, Not 3 :REAL Def: REAL LEA Nota1, Nota2, Nota3 Def ß (Not1 + Not2 + Not3) /3 Si Def < 3 entonces Escriba “Reprobó el curso” Sino

Universidad América – Ing. Oscar David Murcia Portilla

Aprenda a Programar

-5-

Ejemplos Instrucciones Si-Entonces-SiNo. El siguiente ejemplo utiliza la instrucción selectiva Si, de la forma más elemental en Decisión simple. SI_1.ALG INICIO Entero numero Escribir("Digite un número: ") Leer(numero) Si (numero > 100) entonces Escribir("Se digitó un número mayor a 100") FinSi FIN 1 El siguiente algoritmo utiliza la instrucción selectiva Si, en decisión simple. SI_2.ALG INICIO Entero numero Escribir("Digite un número: ") Leer(numero) Si (numero > 100) entonces numero = numero + 10 Escribir("Se digitó un número mayor a 100 ") Escribir("y a continuación se incrementa en 10 para dar ") FinSi Escribir(numero) FIN. 2 El siguiente algoritmo utiliza la instrucción selectiva Si en su forma completa y de la forma más elemental, es decir sin bloques de código delimitados. Este es un ejemplo de decisión múltiple SI_3.ALG INICIO Entero numero Escribir("Digite un número: ") Leer(numero)

Dado un numero entre 1 y 7 escriba su correspondiente día de la semana así: 1- Lunes 2- Martes 3- Miércoles 4- Jueves 5- Viernes 6Sábado 7- Domingo Exprese el algoritmo usando Pseudocódigo y diagrama de flujos. Pseudocódigo: Pseudocódigo: INICIO Dia: ENTERO ESCRIBA “Diga un número para escribir su día” LEA Dia En-caso-de Dia haga Caso 1: ESCRIBA “Lunes” Caso 2: ESCRIBA “Martes” Caso 3: ESCRIBA “Miércoles” Caso 4: ESCRIBA “Jueves” Caso 5: ESCRIBA “Viernes” Caso 6: ESCRIBA “Sábado” Caso 7: ESCRIBA “Domingo” SINO: ESCRIBA “Escribió un numero fuera del rango 1-7” Fin-Caso FIN Diagrama de flujo:

Universidad América – Ing. Oscar David Murcia Portilla

Aprenda a Programar
Si (numero > 100) entonces Escribir("Se digitó un número mayor a 100") Si_no Escribir("Se digitó un número menor o igual a 100") FinSi FIN. 3 El siguiente algoritmo permite leer desde el teclado dos números y mostrar comentarios que digan: "los dos son positivos" o "los dos son negativos" o "tienen diferente signo". Es una aplicación de decisión múltiple. SI_7.ALG INICIO Real a, b Escribir("Digite real: ") Leer(a) Escribir("Digite real: ") Leer(b) Si ( a > 0 Y b > 0) entonces Escribir("LOS DOS SON POSITIVOS") Si_no Si (a < 0 Y b < 0) entonces Escribir("LOS DOS SON NEGATIVOS") Si_no Escribir("TIENEN DIFERENTE SIGNO") FinSi FinSi FIN. 4 El siguiente algoritmo utiliza la instrucción selectiva Si en su forma completa de decisión múltiple. SI_4.ALG INICIO Entero numero Escribir("Digite un número: ") Leer(numero) Si (numero > 100) entonces Escribir("Se digitó un número mayor a 100 ") numero = numero + 10 Escribir("y a continuación se incrementa en 10 para dar ") Si_no Escribir("Se digitó un número menor o igual a 100 ") numero = numero - 10 Escribir("y a continuación se decrementa en 10 para dar") FinSi Escribir(numero) FIN. 5 El siguiente algoritmo calcula el número medio entre tres enteros, no es el promedio. SI_5.ALG INICIO Entero a, b, c Escribir("Digite entero: ") Leer(a) Escribir("Digite entero: ") Leer(b) Escribir("Digite entero: ") Leer(c)

-6-

Si ( (b<a Y a<c) O (c<a Y a<b) ) entonces Escribir(a, " es el del medio") FinSi Si ( (a<b Y b<c) O (c<b Y b<a) ) entonces Escribir(b, " es el del medio") FinSi Si ( (a<c Y c<b) O (b<c Y c<a) ) entonces Escribir(c, " es el del medio") FinSi FIN. 6 El siguiente algoritmo calcula el número medio entre tres enteros, no es el promedio. Segunda versión SI_6.ALG INICIO Entero a, b, c Escribir("Digite entero: ") Leer(a) Escribir("Digite entero: ") Leer(b) Escribir("Digite entero: ") Leer(c) Si ( (b<a Y a<c) O (c<a Y a<b) ) entonces Escribir(a, " es el del medio") SiNo Si ( (a<b Y b<c) O (c<b Y b<a) ) entonces Escribir(b, " es el del medio") SiNo Escribir(c, " es el del medio") FinSi FinSi FIN. 7 Se desarrolla un algoritmo el cual lee desde teclado los datos de una persona así: nombre, edad, sexo y estado civil. Se debe imprimir el nombre solo si corresponde a un hombre casado menor de 30 años o a una mujer soltera menor de 50 años. SI_20.ALG INICIO Entero Edad Caracter Sexo, EstadoCivil Caracter Nombre[25] Escribir("Digite el nombre del encuestado: ") Leer((Nombre) Escribir("Sexo (M/F): ") Leer(Sexo) Escribir("Edad: ") Leer(Edad) Escribir("Estado Civil (Casado, Soltero, Otro): ") Leer(EstadoCivil) Si ( ( Sexo=='M' Y Edad<30 ) O ( Sexo=='F' Y Edad<50 ) ) entonces Escribir(Nombre, " Cumple una de las condiciones") SiNo Escribir("No cumple ninguna de las condiciones solicitadas") FinSi FIN.

Universidad América – Ing. Oscar David Murcia Portilla

Aprenda a Programar
8 Se debe digitar por teclado un entero de hasta cuatro dígitos, con el siguiente limitante, que el usuario debe tener en cuenta al digitar: los dos primeros (00 al 23) significan las horas en un reloj de 24 horas, y los dos de la derecha representan minutos (00 al 59). A continuación se hace aparecer la hora en el formato HH:MM, debiendo aparecer los cuatro dgitos aún cuando seán ceros. Ejemplo: entrada: 904 debe producir en pantalla 09:04. SI_8.ALG INICIO Entero hora, minuto Escribir("Digite entero de hasta cuatro dígitos: ") Leer(hora) minuto = hora MOD 100 hora = hora / 100 Si ( hora < 10 Y minuto < 10 ) entonces Escribir("0", hora, ":", "0", minuto) Si_no Si ( hora < 10 Y minuto >= 10 ) entonces Escribir("0", hora, ":", minuto) Si_no Si ( hora > 10 Y minuto < 10 ) entonces Escribir(hora, ":", "0", minuto) Si_no Si ( hora > 10 Y minuto >= 10 ) entonces Escribir(hora, ":", minuto) FinSi FinSi FinSi FinSi FIN. 9 Dados dos enteros leídos desde teclado, ¿uno es divisor del otro? SI_9.ALG INICIO Entero x, y Escribir("Digite separados por un espacio dos números enteros: ") Leer(x, y) Si (x MOD y == 0) entonces Escribir(y, " es divisor de " , x) SiNo Si (y MOD x == 0) entonces Escribir(x, " es divisor de ", y) SiNo Escribir("No son divisores entre si") FinSi FinSi FIN. 10 Se calcula el valor de Y en función de X, teniendo en cuenta los siguientes intervalos: Y = X^2 - 4 si X<4 Y = X^3 + 2X - 31 si X>4 y X<=10 Y = 3X^2 - 10.5X - 3 si X>10 SI_10.ALG INICIO Real x, y Escribir("Digite valor de la variable independiente X: ") Leer(x) Si (x <= 4) entonces FinSi Si (a < b Y a < c) entonces Escribir(" Menor es " , a) SiNo FIN. FIN. y = x*x - 4 SiNo Si (x <= 10) entonces y = x^3 + 2*x - 31 SiNo y = 3*x*x - 10.5*x - 3 FinSi FinSi Escribir("Variable dependiente Y = ", y)

-7-

11 Un capital Co, está colocado a un tipo de interes I. Al termino de dos años, calcular el capital final Cf y decir si es el doble o mayor del inicial. Sabiendo que Cf = Co (1+i)_, donde n es el periodo en este caso dos años. SI_11.ALG INICIO Real Co, // capital inicial Cf, // capital final I // interes Entero n // número de periodos Escribir("Capital inicial $ ") Leer(Co) Escribir("Interes en % por periodo de tiempo: ") Leer(I) I = I /100 Cf = Co * (1+I) * (1+I) Escribir("Capital final = $ ", Cf) Si (Cf >= 2*Co) entonces Escribir("El Capital es mayor o igual al doble " ) SiNo Escribir("El Capital No se duplicó " ) FinSi 12 Dados tres valores numéricos por teclado, a, b c: se imprime el mayor, el menor y se calcula su promedio. SI_12.ALG INICIO Real a, b, c, menor, mayor, promedio Escribir("Digite valor para a: ") Leer(a) Escribir("Digite valor para b: ") Leer(b) Escribir("Digite valor para c: ") Leer(c) Si (a > b Y a > c) entonces Escribir("Mayor es ", a) SiNo Si (b > a Y b > c) entonces Escribir("Mayor es ", b) SiNo Escribir("Mayor es " , c) FinSi

Universidad América – Ing. Oscar David Murcia Portilla

Aprenda a Programar

-8-

Si (b < a Y b < c) entonces Escribir("Menor es ", b) SiNo Escribir("Menor es " , c) FinSi FinSi promedio = (a + b + c) / 3 Escribir("Promedio de los tres números = " , promedio) FIN. Actividad Los ejemplos propuestos se deben pasar a Diagrama de Flujo de Datos y lenguaje Visual Basic.

Universidad América – Ing. Oscar David Murcia Portilla