53
Alumna: Fiorella liza García. Profesora: Nerita tarrillo Dávila. Área: Educación para el trabajo. Grado y Sección: 4° “B”. Año:

MANUAL DE COMPUTO

Embed Size (px)

DESCRIPTION

ESPERO LES GUSTE Y SIRVA MI TRABAJO.. :D

Citation preview

Page 1: MANUAL DE COMPUTO

Alumna:

Fiorella liza García.

Profesora:

Nerita tarrillo Dávila.

Área:

Educación para el trabajo.

Grado y Sección:

4° “B”.

Año:

Page 2: MANUAL DE COMPUTO

En matemáticas, ciencias de la computación y disciplinas relacionadas,

un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático

persa Al-Juarismi1 ) es un conjunto preescrito de instrucciones o reglas bien

definidas, ordenadas y finitas que permite realizar una actividad mediante pasos

Page 3: MANUAL DE COMPUTO

sucesivos que no generen dudas a quien deba realizar dicha actividad.2 Dados un

estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado

final y se obtiene una solución. Los algoritmos son el objeto de estudio de

la algoritmia.1

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver

problemas. Algunos ejemplos son los manuales de usuario, que muestran

algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por

parte de su patrón. Algunos ejemplos en matemática son el algoritmo de

la división para calcular el cociente de dos números, el algoritmo de Euclidespara

obtener el máximo común divisor de dos enteros positivos, o el método de

Gauss para resolver un sistema lineal de ecuaciones.

Definición formal

En general, no existe ningún consenso definitivo en cuanto a la definición formal

de algoritmo. Muchos autores los señalan como listas de instrucciones para

resolver unproblema abstracto, es decir, que un número finito de pasos convierten

los datos de un problema (entrada) en una solución (salida). Sin embargo cabe

notar que algunos algoritmos no necesariamente tienen que terminar o resolver un

problema en particular. Por ejemplo, una versión modificada de la criba de

Eratóstenes que nunca termine de calcular números primos no deja de ser un

algoritmo.

A lo largo de la historia varios autores han tratado de definir formalmente a los

algoritmos utilizando modelos matemáticos como máquinas de Turing entre otros.

Sin embargo, estos modelos están sujetos a un tipo particular de datos como son

números, símbolos o gráficas mientras que, en general, los algoritmos funcionan

sobre una vasta cantidad de estructuras de datos. En general, la parte común en

todas las definiciones se puede resumir en las siguientes tres propiedades

siempre y cuando no consideremos algoritmos paralelos:

Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a

paso–, definiendo así una secuencia de estados "computacionales" por

Page 4: MANUAL DE COMPUTO

cada entrada válida (laentrada son los datos que se le suministran al

algoritmo antes de comenzar).

Estado abstracto. Cada estado computacional puede ser descrito

formalmente utilizando una estructura de primer orden y cada algoritmo es

independiente de su implementación (los algoritmos son objetos abstractos)

de manera que en un algoritmo las estructuras de primer orden son

invariantes bajo isomorfismo.

Exploración acotada. La transición de un estado al siguiente queda

completamente determinada por una descripción fija y finita; es decir, entre

cada estado y el siguiente solamente se puede tomar en cuenta una

cantidad fija y limitada de términos del estado actual.

En resumen, un algoritmo es cualquier cosa que funcione paso a paso,

donde cada paso se pueda describir sin ambigüedad y sin hacer

referencia a una computadora en particular, y además tiene un límite

fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un

solo paso. Esta amplia definición abarca tanto a algoritmos prácticos

como aquellos que solo funcionan en teoría, por ejemplo el método de

Newton y la eliminación de Gauss-Jordan funcionan, al menos en

principio, con números de precisión infinita; sin embargo no es posible

programar la precisión infinita en una computadora, y no por ello dejan

de ser algoritmos. En particular es posible considerar una cuarta

propiedad que puede ser usada para validar la tesis de Church-

Turing de que toda función calculable se puede programar en una

máquina de Turing (o equivalentemente, en un lenguaje de

programación suficientemente general):

Aritmetizabilidad. Solamente operaciones innegablemente calculables están

disponibles en el paso inicial.

Medios de expresión de un algoritmo

Page 5: MANUAL DE COMPUTO

Los algoritmos pueden ser expresados de muchas maneras,

incluyendo al lenguaje natural, pseudocódigo, diagramas de

flujo y lenguajes de programación entre otros. Las descripciones en

lenguaje natural tienden a ser ambiguas y extensas. El usar

pseudocódigo y diagramas de flujo evita muchas ambigüedades del

lenguaje natural. Dichas expresiones son formas más estructuradas

para representar algoritmos; no obstante, se mantienen

independientes de un lenguaje de programación específico.

La descripción de un algoritmo usualmente se hace en tres niveles:

1. Descripción de alto nivel. Se establece el problema, se

selecciona un modelo matemático y se explica el algoritmo

de manera verbal, posiblemente con ilustraciones y

omitiendo detalles.

2. Descripción formal. Se usa pseudocódigo para describir la

secuencia de pasos que encuentran la solución.

3. Implementación. Se muestra el algoritmo expresado en un

lenguaje de programación específico o algún objeto capaz

de llevar a cabo instrucciones.

También es posible incluir un teorema que demuestre que el

algoritmo es correcto, un análisis de complejidad o ambos.

Diagrama de flujo

Page 6: MANUAL DE COMPUTO

Diagrama de flujo que expresa un algoritmo para calcular la raíz

cuadrada de un número

Los diagramas de flujo son descripciones gráficas de algoritmos;

usan símbolos conectados con flechas para indicar la secuencia de

instrucciones y están regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos

pequeños, ya que abarcan mucho espacio y su construcción es

laboriosa. Por su facilidad de lectura son usados como introducción

a los algoritmos, descripción de un lenguaje y descripción de

procesos a personas ajenas a la computación.

Los algoritmos pueden ser expresados de muchas maneras,

incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y

lenguajes de programación entre otros. Las descripciones en

lenguaje natural tienden a ser ambiguas y extensas. El usar

pseudocódigo y diagramas de flujo evita muchas ambigüedades del

lenguaje natural. Dichas expresiones son formas más estructuradas

Page 7: MANUAL DE COMPUTO

para representar algoritmos; no obstante, se mantienen

independientes de un lenguaje de programación específico.

Pseudocódigo

El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es

una descripción de alto nivel de un algoritmo que emplea una

mezcla de lenguaje natural con algunas convenciones sintácticas

propias de lenguajes de programación, como asignaciones, ciclos y

condicionales, aunque no está regido por ningún estándar. Es

utilizado para describir algoritmos en libros y publicaciones

científicas, y como producto intermedio durante el desarrollo de un

algoritmo, como los |diagramas de flujo, aunque presentan una

ventaja importante sobre estos, y es que los algoritmos descritos en

pseudocódigo requieren menos espacio para representar

instrucciones complejas.

El pseudocódigo está pensado para facilitar a las personas el

entendimiento de un algoritmo, y por lo tanto puede omitir detalles

irrelevantes que son necesarios en una implementación.

Programadores diferentes suelen utilizar convenciones distintas,

que pueden estar basadas en la sintaxis de lenguajes de

programación concretos. Sin embargo, el pseudocódigo, en general,

es comprensible sin necesidad de conocer o utilizar un entorno de

programación específico, y es a la vez suficientemente estructurado

para que su implementación se pueda hacer directamente a partir

de él.

Así el pseudodocódigo cumple con las funciones antes

mencionadas para representar algo abstracto los protocolos son los

lenguajes para la programación. Busque fuentes más precisas para

tener mayor comprensión del tema.

Sistemas formales

Page 8: MANUAL DE COMPUTO

La teoría de autómatas y la teoría de funciones recursivas proveen

modelos matemáticos que formalizan el concepto de algoritmo. Los

modelos más comunes son la máquina de Turing, máquina de

registro y funciones μ-recursivas. Estos modelos son tan precisos

como un lenguaje máquina, careciendo de expresiones coloquiales

o ambigüedad, sin embargo se mantienen independientes de

cualquier computadora y de cualquier implementación.

Implementación

Muchos algoritmos son ideados para implementarse en

un programa. Sin embargo, los algoritmos pueden ser

implementados en otros medios, como una red neuronal, un circuito

eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos

inclusive se diseñan especialmente para implementarse usando

lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo

de Euclides, la criba de Eratóstenes y muchas formas de resolver la

raíz cuadrada son sólo algunos ejemplos.

Variables

Son elementos que toman valores específicos de un tipo de datos

concreto. La declaración de una variable puede realizarse

comenzando con var. Principalmente, existen dos maneras de

otorgar valores iniciales a variables:

1. Mediante una sentencia de asignación.

2. Mediante un procedimiento de entrada de datos (por

ejemplo: 'read').

Ejemplo:

...

i:=1;

Page 9: MANUAL DE COMPUTO

read(n);

while i < n do begin

(* cuerpo del bucle *)

i := i + 1

end;

...

Estructuras secuenciales

La estructura secuencial es aquella en la que una acción sigue a

otra en secuencia. Las operaciones se suceden de tal modo que la

salida de una es la entrada de la siguiente y así sucesivamente

hasta el fin del proceso. La asignación de esto consiste, en el paso

de valores o resultados a una zona de la memoria. Dicha zona será

reconocida con el nombre de la variable que recibe el valor. La

asignación se puede clasificar de la siguiente forma:

1. Simples: Consiste en pasar un valor constante a una variable

(a ← 15)

2. Contador: Consiste en usarla como un verificador del

número de veces que se realiza un proceso (a ← a + 1)

3. Acumulador: Consiste en usarla como un sumador en un

proceso (a ← a + b)

4. De trabajo: Donde puede recibir el resultado de una

operación matemática que involucre muchas variables (a ← c

+ b*2/4).

Un ejemplo de estructura secuencial, como obtener la área de un

triángulo:

Inicio

...

Page 10: MANUAL DE COMPUTO

float b, h, a;

printf("Diga la base");

scanf("%f", &b);

printf("Diga la altura");

scanf("%f", &h);

a = (b*h)/2;

printf("El área del triángulo es %f", a)

...

Fin

Algoritmos como funciones

Esquemática de un algoritmo solucionando un problema de ciclo

hamiltoniano.

Un algoritmo se puede concebir como una función que transforma

los datos de un problema(entrada) en los datos de una solución

(salida). Más aun, los datos se pueden representar a su vez como

secuencias de bits, y en general, de símbolos cualesquiera. Como

cada secuencia de bits representa a un número

natural (véase Sistema binario), entonces los algoritmos son en

esencia funciones de los números naturales en los números

naturales que sí se pueden calcular. Es decir que todo algoritmo

calcula una función donde cada número natural es

lacodificación de un problema o de una solución.

En ocasiones los algoritmos son susceptibles de nunca terminar,

por ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre,

el algoritmo nunca devuelve ningún valor de salida, y podemos decir

Page 11: MANUAL DE COMPUTO

que la función queda indefinida para ese valor de entrada. Por esta

razón se considera que los algoritmos son funciones parciales, es

decir, no necesariamente definidas en todo su dominio de definición.

Cuando una función puede ser calculada por medios algorítmicos,

sin importar la cantidad de memoria que ocupe o el tiempo que se

tarde, se dice que dicha función escomputable. No todas las

funciones entre secuencias datos son computables. El problema de

la parada es un ejemplo.

Análisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar

los recursos (memoria y tiempo) que consume el algoritmo. El

análisis de algoritmos se ha desarrollado para obtener valores que

de alguna forma indiquen (o especifiquen) la evolución del gasto de

tiempo y memoria en función del tamaño de los valores de entrada.

El análisis y estudio de los algoritmos es una disciplina de las

ciencias de la computación y, en la mayoría de los casos, su estudio

es completamente abstracto sin usar ningún tipo de lenguaje de

programación ni cualquier otra implementación; por eso, en ese

sentido, comparte las características de las disciplinas matemáticas.

Así, el análisis de los algoritmos se centra en los principios básicos

del algoritmo, no en los de la implementación particular. Una forma

de plasmar (o algunas veces "codificar") un algoritmo es escribirlo

en pseudocódigo o utilizar un lenguaje muy simple tal como Lexico,

cuyos códigos pueden estar en el idioma del programador.

Algunos escritores restringen la definición de algoritmo a

procedimientos que deben acabar en algún momento, mientras que

otros consideran procedimientos que podrían ejecutarse

eternamente sin pararse, suponiendo el caso en el que existiera

algún dispositivo físico que fuera capaz de funcionar eternamente.

Page 12: MANUAL DE COMPUTO

En este último caso, la finalización con éxito del algoritmo no se

podría definir como la terminación de este con una salida

satisfactoria, sino que el éxito estaría definido en función de las

secuencias de salidas dadas durante un periodo de vida de la

ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que

hay más ceros que unos en una secuencia binariainfinita debe

ejecutarse siempre para que pueda devolver un valor útil. Si se

implementa correctamente, el valor devuelto por el algoritmo será

válido, hasta que evalúe el siguiente dígito binario. De esta forma,

mientras evalúa la siguiente secuencia podrán leerse dos tipos de

señales: una señal positiva (en el caso de que el número de ceros

sea mayor que el de unos) y una negativa en caso contrario.

Finalmente, la salida de este algoritmo se define como la devolución

de valores exclusivamente positivos si hay más ceros que unos en

la secuencia y, en cualquier otro caso, devolverá una mezcla de

señales positivas y negativas.

Ejemplo de algoritmo

El problema consiste en encontrar el máximo de un conjunto de

números. Para un ejemplo más complejo véase Algoritmo de

Euclides.

Descripción de alto nivel

Dado un conjunto finito de números, se tiene el problema de

encontrar el número más grande. Sin pérdida de generalidad se

puede asumir que dicho conjunto no es vacío y que sus elementos

están numerados como .

Es decir, dado un conjunto se pide

encontrar tal que para todo elemento que pertenece al

conjunto .

Page 13: MANUAL DE COMPUTO

Para encontrar el elemento máximo, se asume que el primer

elemento ( ) es el máximo; luego, se recorre el conjunto y se

compara cada valor con el valor del máximo número encontrado

hasta ese momento. En el caso que un elemento sea mayor que el

máximo, se asigna su valor al máximo. Cuando se termina de

recorrer la lista, el máximo número que se ha encontrado es el

máximo de todo el conjunto.

Descripción formal

El algoritmo puede ser escrito de una manera más formal en el

siguiente pseudocódigo:

Algoritmo Encontrar el máximo de un conjunto

función max( )

// es un conjunto no vacío de números//

← // es el número de elementos de //

para ← hasta hacer

si entonces

devolver

Sobre la notación:

"←" representa una asignación: ← significa que la

variable toma el valor de ;

"devolver" termina el algoritmo y devuelve el valor a su derecha

(en este caso, el máximo de ).

Implementación

Page 14: MANUAL DE COMPUTO

En lenguaje C++:

int max(int c[], int n)

{

int i, m = c[0];

for (i = 1; i < n; i++)

if (c[i] > m) m = c[i];

return m;

}

Page 15: MANUAL DE COMPUTO
Page 16: MANUAL DE COMPUTO

1 - Introducción

Todos los lenguajes utilizan este sistema o metodología para la programación de

aplicaciones, pero varían la forma en que se utilizan, su sintaxis etc...

Cuando uno recién empieza a programar, parece muy complicado entender estos

temas, pero con la práctica todo se va aclarando.

Lo bueno de comprender los fundamentos de la programación, es que nos permite

luego poder programar en casi cualquier lenguaje, por que la forma de programar

en general no varía demasiado, lo que cambia en cada uno de ellos es su sintaxis

y funciones y cosas propias del lenguaje. Aunque tampoco es tan así, ya que esto

no significa que porque uno sea experto por ejemplo programando en lenguaje C,

lo sea en Visual Basic y Viceversa.

2 - Las Variables

Las variables, como su nombre lo indica, se utilizan para almacenar valores que

Page 17: MANUAL DE COMPUTO

tienen la propiedad de variar el contenido. Cuando hablamos de contenido nos

referimos a cualquier tipo de datos, por ejemplo un nombre, una fecha, un color,

un número etc... .

A las variables se les asigna un nombre para poder utilizarlas. Por ejemplo puedo

crear una variable llamada fecha y esta almacenará una fecha. A los nombres de

las variables se los denomina identificadores. Cuando creamos variables, tenemos

que tratar de asignarles un nombre que se relacione con el tipo de dato que

queremos almacenar. Por ejemplo no tendría mucho sentido crear una variable

llamada m y allí guardar o almacenar un nombre o un apellido, por que cuando

echemos vista al código resultaría mas difícil deducir que tipo de dato estoy

guardando. Por ejemplo en este último caso sería mucho mas lógico crear una

variable llamada “nombres” y allí guardar "Luciano", "Pedro", "Natalia" etc..

En visual basic a las variables conviene declararlas, o sea, avisarle a vb que

vamos a utilizar dichas variables. A estas se las declara en el comienzo del código

y se les antepone la palabra reservada Dim, luego el nombre que nosotros

queramos y seguido el tipo de dato que almacenará, por ejemplo si quiero

almacenar en una variable llamada Numero

3 - Tipos de datos:

Los tipos de datos, indican el tipo de valor que puede almacenar una variable. Los

principales tipos de datos:

Números enteros: dentro de los números enteros tenemos varios tipos de datos

dependiendo el rango que queramos utilizar:

Byte: puede almacenar números enteros dentro del rango desde 0 a 255

Integer: puede almacenar números enteros dentro del rango -32.768 a

32.767

Long: puede almacenar números enteros dentro del rango -2.147.483.648

hasta 2.147.483.648 .

Page 18: MANUAL DE COMPUTO

Números decimales: para almacenar números decimales contamos con los

siguientes tipos de datos:

Single: almacena números decimales en el rango +/- 1e-45 hasta 3e38

Double: desde +/- 5e-324 hasta 1.8e308

Cadenas de caracteres: las cadenas de caracteres se definen con la

palabra String y tienen un rango de hasta 2 billones de caracteres.

Tipos de valores lógicos: para almacenar tipos de valores lógicos como verdadero

o falso, se utiliza la palabra Boolean y sus 2 posibles valores son True (verdadero)

y False(falso).

Fechas y horas: Para almacenar fechas y horas se utiliza la palabra Date

Tipo variant : Las variables de este tipo pueden almacenar cualquier tipo de valor,

pero ocupan más memoria.

Nota: hay más tipos de datos, incluso nosotros podemos crear los nuestros.

Page 19: MANUAL DE COMPUTO

El diagrama de flujo es la representación gráfica del algoritmo o proceso. Se utiliza

en disciplinas como la programación, laeconomía, los procesos industriales y

la psicología cognitiva. Estos diagramas utilizan símbolos con significados bien

definidos que representan los pasos del algoritmo, y representan el flujo de

ejecución mediante flechas que conectan los puntos de inicio y de fin de proceso.

Características

Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de

término.

Las siguientes son acciones previas a la realización del diagrama de flujo:

Page 20: MANUAL DE COMPUTO

Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben

estar presentes el dueño o responsable del proceso, los dueños o

responsables del proceso anterior y posterior y de otros procesos

interrelacionados, otras partes interesadas.

Definir qué se espera obtener del diagrama de flujo.

Identificar quién lo empleará y cómo.

Establecer el nivel de detalle requerido.

Determinar los límites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:

Establecer el alcance del proceso a describir. De esta manera quedará fijado el

comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del

proceso previo y el final la entrada al proceso siguiente.

Identificar y listar las principales actividades/subprocesos que están incluidos

en el proceso a describir y su orden cronológico.

Si el nivel de detalle definido incluye actividades menores, listarlas también.

Identificar y listar los puntos de decisión.

Construir el diagrama respetando la secuencia cronológica y asignando los

correspondientes símbolos.

Asignar un título al diagrama y verificar que esté completo y describa con

exactitud el proceso elegido.

Ventajas de los diagramas de flujo

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.

Page 21: MANUAL DE COMPUTO

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.

Tipos de diagramas de flujo

Formato vertical: En él, el flujo o la secuencia de las operaciones, va de arriba

hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda

la información que se considere necesaria, según su propósito.

Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de

izquierda a derecha.

Formato panorámico: El proceso entero está representado en una sola carta y

puede apreciarse de una sola mirada mucho más rápido que leyendo el texto,

lo que facilita su comprensión, aún para personas no familiarizadas. Registra

no solo en línea vertical, sino también horizontal, distintas acciones

simultáneas y la participación de más de un puesto o departamento que el

formato vertical no registra.

Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona

sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas

es eminentemente descriptivo, mientras que los utilizados son

fundamentalmente representativos.

Simbología y significado

Óvalo o Elipse: Inicio y término (Abre y/o cierra el diagrama).

Page 22: MANUAL DE COMPUTO

Rectángulo: Actividad (Representa la ejecución de una o más actividades o

procedimientos).

Rombo: Decisión (Formula una pregunta o cuestión).

Círculo: Conector (Representa el enlace de actividades con otra dentro de un

procedimiento).

Triángulo boca abajo: Archivo definitivo (Guarda un documento en forma

permanente).

Triángulo boca arriba: Archivo temporal (Proporciona un tiempo para el

almacenamiento del documento).

Cursograma

Se trata de la más común y práctica entre todas las clases de flujogramas.

Describe el flujo de información en un ente u organización, sus procesos, sistemas

administrativos y de control. Permite la impresión visual de los procedimientos y

una clara y lógica interpretación.

Simbología y normas del cursograma

Círculo: Procedimiento estandarizado.

Cuadrado: Proceso de control.

Línea ininterrumpida: Flujo de información vía formulario o documentación en

soporte de papel escrito.

Línea interrumpida: Flujo de información vía formulario digital.

Rectángulo: Formulario o documentación. Se grafica con un doble de ancho

que su altura.

Rectángulo Pequeño: Valor o medio de pago (cheque, pagaré, etcétera).Se

grafica con un cuádruple de ancho que su altura, siendo su ancho igual al de

los formularios.

Page 23: MANUAL DE COMPUTO

Triángulo (base inferior): Archivo definitivo.

Triángulo Invertido (base superior): Archivo Transitorio.

Semi-óvalo: Demora.

Rombo: División entre opciones.

Trapezoide: Carga de datos al sistema.

Elipsoide: Acceso por pantalla.

Hexágono: Proceso no representado.

Pentágono: Conector.

Cruz de Diagonales: Destrucción de Formularios.

Según la normativa, el flujo presupuesto es de izquierda a derecha y de arriba

hacia abajo, siendo optativo el uso de flechas. Cuando el sentido es invertido (de

derecha a izquierda o de arriba hacia abajo), es obligatorio el uso de la flecha.

Historia

La paternidad del diagrama de flujo es en principio algo difusa. El método

estructurado para documentar graficamente un proceso como un flujo de pasos

sucesivo y alternativos, el "proceso de diagrama de flujo", fue expuesto por Frank

Gilbreth, en la Sociedad Americana de Ingenieros Mecánicos (ASME), en 1921,

bajo el enunciado de "Proceso de Gráficas-Primeros pasos para encontrar el mejor

modo". Estas herramientas de Gilbreth rápidamente encontraron sitio en los

programas de ingeniería industrial. Al principio de los 30, un ingeniero industrial,

Allan H. Mogensen comenzó la formación de personas de negocios en Lake

Placid, Nueva York, incluyendo el uso del diagrama de flujo. Art Spinanger,

asistente a las clases de Mogesen, utilizó las herramientas en su trabajo en

Procter & Gamble, donde desarrolló su “Programa Metódico de Cambios por

Etapas”. Otro asistente al grupo de graduados en 1944, Ben S. Graham, Director

de Ingeniería de Formcraft Standard Register Corporation, adaptó la Gráfica de

flujo de procesos al tratamiento de la información en su empresa. Y desarrolló la

Gráfica del proceso de múltiples flujos en múltiples pantallas, documentos, y sus

relaciones. En 1947, ASME adoptó un conjunto de símbolos derivados de la obra

Page 24: MANUAL DE COMPUTO

original de Gilbreth como Norma ASME para los gráficos de procesos (preparada

Mishad, Ramsan y Raiaan).

Sin embargo, según explica Douglas Hartree fueron originalmente Herman

Goldstine y John von Neumann quienes desarrollaron el diagrama de flujo

(inicialmente llamado "diagrama") para planificar los programas de ordenador. Las

tablas de programación original de flujo de Goldstine y von Neumann, aparecen en

un informe no publicado, "Planificación y codificación de los problemas de un

instrumento de computación electrónica, la Parte II, Volumen 1 "(1947),

reproducido en las obras completas de von Neumann. Inicialmente los diagramas

de flujo resultaron un medio popular para describir algoritmos de computadora, y

aún se utilizan con este fin. Herramientas como los diagramas de actividad UML,

pueden ser considerados como evoluciones del diagrama de flujo.

En la década de 1970 la popularidad de los diagramas de flujo como método

propio de la informática disminuyó, con el nuevo hardware y los nuevos lenguajes

de programación de tercera generación. Y por otra parte se convirtieron en

instrumentos comunes en el mundo empresarial. Son una expresión concisa,

legible y práctica de algoritmos. Actualmente se aplican en muchos campos del

conocimiento, especialmente como simplificación y expresión lógica de procesos,

etc.

Page 25: MANUAL DE COMPUTO

1. Calcular el número de pulsaciones que una persona debe tener por cada

10seg de ejercicios si la fórmula es:

‘’num_puls =(220 – edad) / 10’’

INICIO

X, N, P es real

Leer: edad: x

NP = (220 – x) / 10

Mostrar NP

FIN

Page 26: MANUAL DE COMPUTO

2. Calcular el nuevo salario de un obrero si obtuvo un incremento de 25%

sobre su salario anterior.

FIN

Mostrar: SN

A = (0,25 * SA)

SN = SA + T

Leer: SA

SA, T, SN es real

INICIO

Page 27: MANUAL DE COMPUTO

3. Todos los lunes, miércoles y viernes una persona corre la misma distancia

y cronometra los tiempos obtenidos. Determinar el tiempo promedio que la

persona tarda en recorrer la ruta en una semana.

Leer: Lun, Mier,

Vie

Mostrar: TP

FIN

TP = (lun + Mier + Vie) / 3

INCIO

Lun, Mier, Vie, TP

es real

Page 28: MANUAL DE COMPUTO

4. Un vendedor recibe un sueldo base más un 10% extra por comisión de sus

ventas, el vendedor desea saber el total que recibirá en el mes tomando en

cuenta su sueldo básico y comisiones.

SB, C, T es real

X, es entero

‘’ Mostrar T’’

T = SB + C

C = 10 * X / 100

INICIO

FIN

Leer: SB, X

Page 29: MANUAL DE COMPUTO

DFD es un programa de libre disposición para ayuda al diseño e implementación

de

Page 30: MANUAL DE COMPUTO

algoritmos expresados en diagramas de flujo (DF). Además incorpora opciones

para

el depurado de los algoritmos, lo que facilita enormemente la localización de los

errores de ejecución y lógicos más habituales.

Su utilización es muy sencilla, al tratarse de una herramienta gráfica, y además

incluye un menú de ayuda muy completo, por lo que en estas notas nos vamos a

centrar en el uso básico de las herramientas de diseño y depuración. El resto de

opciones (detalles de sintaxis más avanzados, operadores y funciones

disponibles),

puede consultarse directamente en la ayuda del programa.

1. INICIO DE DFD

La ejecución de DFD presenta la pantalla de inicio siguiente

donde nos fijaremos en la barra de herramientas.

Aunque puede accederse a todas las opciones que comentaremos a continuación

a

través del menú, y con atajos de teclado, en estas notas las describiremos a

través de

los botones correspondientes.

· El bloque de botones de objetos nos permite seleccionar los distintos

elementos (objetos) que vamos a introducir en el DF: sentencias de

Page 31: MANUAL DE COMPUTO

asignación, selección, iteración, ...

· El bloque de ejecución permite poner en funcionamiento el algoritmo

· El bloque de depuración se utiliza, en caso de funcionamiento incorrecto,

para detectar errores en la construcción del algoritmo y corregirlos.

· Los botones de subprogramas permiten introducir funciones definidas por el

programador

· Los restantes botones tienen una funcionalidad similar a la de las restantes

aplicaciones Windows: abrir fichero, guardar fichero, cortar, pegar, ... Puede

verse su tarea asociada acercando el cursor del ratón (sin hacer clic) al botón

correspondiente.

1.1 Un primer ejemplo de diseño con DF

Construiremos un primer ejemplo sencillo de algoritmo para ilustrar las

capacidades más básicas de DFD. Dicho algoritmo consistirá en pedir un número

al

usuario y presentarlo por pantalla.

La operación básica será la de inserción de objetos. En primer lugar, insertaremos

una sentencia de salida que le pida al usuario el número que posteriormente se va

a

imprimir. Para ello pulsamos el botón correspondiente al objeto que se desea

insertarDIAGRAMAS DE FLUJO CON DFD 3

Page 32: MANUAL DE COMPUTO

y llevamos el ratón al punto donde vamos a insertarlo. La inserción se realiza

pulsando el botón izquierdo, con lo que tendremos una situación como la

siguiente:

Los puntos azules indican qué objeto se acaba de insertar. Para introducir en la

sentencia de salida el mensaje que queremos imprimir será necesario EDITAR

dicho

objeto, haciendo doble clic sobre el mismo. De este modo se abre una ventana

donde

podemos dicho mensaje (por ejemplo 'Buenos días. Dígame un número, por

favor').

Como el mensaje es una cadena de caracteres, no debemos olvidarnos de las

comillas simples al inicio y final de la misma.4 FUNDAMENTOS DE

PROGRAMACIÓN—1º GSTIC

Seguidamente vamos a insertar una sentencia de ENTRADA, para almacenar en

una

variable el valor del número que nos proporcione el usuario. Para ello pulsaremos

el botón correspondiente

y lo insertaremos a continuación de la sentencia de salida anterior. Si editamos el

objeto, haciendo doble clic sobre el mismo, aparecerá una pantalla cuyo cuadro de

texto nos permitirá darle nombre a la variable donde vamos a guardar el valor (en

este ejemplo la variable se va a llamar numero:

Page 33: MANUAL DE COMPUTO

Para finalizar, mostraremos al usuario el número que ha introducido, para lo cual

insertaremos una nueva sentencia de SALIDA, que editaremos para que muestre

el

siguiente mensaje:

con lo que el algoritmo tendrá el siguiente aspecto en pantalla:DIAGRAMAS DE

FLUJO CON DFD 5

1.2 Un primer ejemplo de ejecución con DF

Tras haber diseñado el algoritmo podemos probar a ejecutarlo, al objeto de

detectar

posibles errores en él. Para ello utilizaremos los botones de ejecución, y en

particular el botón EJECUTAR

que pondrá en marcha el algoritmo.

La primera sentencia en ejecutarse será la de SALIDA, que mostrará en pantalla el

mensaje correspondiente:6 FUNDAMENTOS DE PROGRAMACIÓN—1º GSTIC

Seguidamente la de ENTRADA, que nos muestra un cuadro de texto donde

introduciremos el valor que queramos darle a la variable (por ejemplo, 123.45):

y, finalmente, la última sentencia de SALIDA:DIAGRAMAS DE FLUJO CON DFD 7

Cuando el algoritmo finaliza su ejecución sin error se muestra el siguiente

mensaje:

Dado que el algoritmo es correcto, procederemos a guardarlo (por ejemplo, con el

Page 34: MANUAL DE COMPUTO

nombre entradasalida). La opción de guardar es similar a la de cualquier

aplicación Windows, por lo que no merece mayor comentario. Únicamente

recordar

que en general, durante el proceso de elaboración de un algoritmo (que puede ser

largo) debemos guardar frecuentemente en disco el diseño, al objeto de prevenir

posibles fallos o errores que dejen inutilizado el ordenador y provoquen la pérdida

del trabajo realizado.

Ejercicio 1: al objeto de ver ejemplos de errores, modificaréis el algoritmo anterior

en

el siguiente sentido:

1. errores de sintaxis: Eliminar una de las comillas en alguna de las sentencias

de salida y ejecutar el algoritmo.

2. errores de ejecución: Eliminar la sentencia de entrada (para ello seleccionaréis

dicha sentencia haciendo clic sobre el objeto y pulsáis el botón ELIMINAR o

la tecla SUPRIMIR). Ejecutar el algoritmo.

Ejercicio 2: diseñar un nuevo algoritmo que pida al usuario dos números a y b y le

diga cuál es su suma. Guardar.

2. OBJETOS DEFINIDOS EN DFD

DFD permite incluir los objetos básicos de programación estructurada: asignación,

selección, lazos y subprogramas. Cualquier objeto que se inserte en el algoritmo

Page 35: MANUAL DE COMPUTO

puede ser editado haciendo doble clic, lo que permite definir los elementos que lo

componen. Esto quiere decir que la EDICIÓN permitirá, por ejemplo, en el caso

de:

· sentencias de salida: indicar la expresión que se va a presentar en pantalla8

FUNDAMENTOS DE PROGRAMACIÓN—1º GSTIC

· sentencias de entrada: indicar los nombres de las variables donde se guardará

la información

· sentencias de asignación: indicar las expresiones y los nombres de las

variables donde se guardará el resultado

· estructuras de selección: indicar la condición

· ...

Otra acción interesante sobre los objetos es la SELECCIÓN de los mismos (clic

sobre

el objeto), que permite realizar acciones como eliminarlos y cortarlos o copiarlos

para posteriormente pegarlos en otro punto del algoritmo.

Veamos a continuación los aspectos más destacados a este respecto. Para mayor

detalle, remitimos al menú de ayuda de DFD (tecla F1).

2.1 Sentencia de asignación

Se accede a ella con el botón

y su edición permite introducir hasta TRES asignaciones en la misma sentencia:

Page 36: MANUAL DE COMPUTO

Para formar expresiones válidas tendremos en cuenta que DFD admite los

siguientes

elementos, todos ellos bien documentados en las opciones "Conceptos básicos

(Tipos y conceptos de datos)" y "Referencia de operadores y funciones" del menú

de

ayuda:

· Constantes y variables

o de tipo numérico

o de tipo carácter (entre comillas simples) DIAGRAMAS DE FLUJO CON DFD 9

o de tipo lógico (valores .V. y .F.)

· Operadores aritméticos habituales (+, -, *, /, ^), junto con otros como el

operador módulo (MOD)

· Funciones matemáticas: logaritmos y exponenciales, trigonométricas,

redondeo y truncamiento número (ROUND, TRUNC), ...

· Funciones de manejo de cadenas de caracteres: longitud de una cadena (LEN)

y extracción de subcadenas (SUBSTRING)

Ejercicio:

Diseñar y ejecutar un algoritmo que pida dos números a y b al usuario y calcule su

suma, resta y producto. Guardarlo con el nombre asignacion.

2.2 Estructura de selección

Page 37: MANUAL DE COMPUTO

Al editar el elemento una vez insertado se puede introducir la condición que se va

a

evaluar, a través de la ventana siguiente:

que también permite indicar qué rama (izquierda o derecha) va a corresponder al

caso CIERTO de la condición. Al pulsar ACEPTAR en esta ventana,

automáticamente se incluye el punto de confluencia de ambas ramas (punto de

cierre de la estructura), que será el lugar por donde progrese el flujo del algoritmo

una vez ejecutada la rama correspondiente.10 FUNDAMENTOS DE

PROGRAMACIÓN—1º GSTIC

Las condiciones en DFD son expresiones lógicas (que o bien son ciertas o bien

falsas), que admiten los operadores habituales:

· Operadores de comparación: >, <, >=, <=, =, !=

· Operadores lógicos: AND, OR, NOT

En cada una de las ramas se podrán insertar los objetos que se necesiten, igual

que

en cualquier otra parte del programa. En particular, se pueden insertar nuevas

estructuras de selección para dar lugar a la estructura de selección múltiple. En

todo

momento DFD redibujará la estructura para mantener la legibilidad de la misma.

Ejercicios:

Page 38: MANUAL DE COMPUTO

Diseñar y ejecutar un algoritmo que indique si un número a pedido por teclado es

positivo o negativo. Guardarlo con el nombre seleccion1.

Modificar el algoritmo anterior para que considere también el caso en que a sea

igual a cero. Guardarlo con el nombre seleccion2.

Modificar el algoritmo asignacion para que incluya la división, y que no

produzca error de ejecución cuando b sea igual a cero.

2.3 Lazos

DFD permite dos tipos de lazos: el MIENTRAS y el DESDE (que en DFD se llama

ciclo "para"), por lo que el lazo REPETIR-HASTA QUE debe ser diseñado a partir

de

los dos anteriores.

2.3.1 Lazo desde

La siguiente figura muestra el botón correspondiente al lazo DESDE, junto con su

símbolo en DFD y la ventana de edición correspondiente. Cabe señalar que la

representación DFD no utiliza flechas hacia atrás para indicar el final de la

estructura, sino un indicador especial etiquetado como CIERRE.DIAGRAMAS DE

FLUJO CON DFD 11

La ventana de edición permite indicar en su parte izquierda el nombre de la

variable

del lazo, y a la derecha los valores (enteros o reales) de inicio, final e incremento

Page 39: MANUAL DE COMPUTO

deseados.

Ejercicio

Diseñar y ejecutar un algoritmo que calcule el factorial de un número n pedido al

usuario por teclado. Guardarlo con el nombre factorial. Probarlo con valores

n=-1, 0, 1, 2 y 100.

2.3.2 Lazo mientras

En la figura se muestran el botón correspondiente al lazo mientras y su

representación en DFD. La ventana de edición es idéntica a la de la estructura de

selección, por lo que ya no la mencionamos.12 FUNDAMENTOS DE

PROGRAMACIÓN—1º GSTIC

El símbolo DFD tampoco utiliza la representación habitual de la flecha hacia atrás,

como es habitual en la representación en DF, sino el símbolo de CIERRE.

Ejercicio

Modificar el algoritmo factorial. para utilizar la estructura mientras. Guardarlo

con el nombre factorial2.

3. AGRUPACIONES ESTÁTICAS DE DATOS: VECTORES Y MATRICES

DFD admite agrupaciones de datos, a las cuales denomina "arreglos"

(fonéticamente

similar a la palabra inglesa original, array).

Hay que señalar que la asignación de valores a una agrupación de datos debe

Page 40: MANUAL DE COMPUTO

hacerse siempre COMPONENTE A COMPONENTE, no pudiendo manejarse

vectores o matrices completas. Esto debe tenerse en cuenta también para

cualquier

operación (entrada/salida, condiciones, lazos, ...).

La forma de referenciar un elemento de un vector o matriz es mediante su índice,

que puede ser una constante, una variable o una expresión, pero siempre un valor

ENTERO. El índice se expresa entre paréntesis, y habrá tantos índices como

dimensiones tenga la agrupación de datos (1 para vectores, 2 en matrices, ...).

Así, las expresiones siguientes tienen el significado que se indica:

· V(2) 2ª componente de un vector de nombre VDIAGRAMAS DE FLUJO CON

DFD 13

· M(i, j) Componente ij de una matriz de nombre M

Es importante señalar que cuando se usen variables como índices para referenciar

un elemento de una agrupación de datos, éstas deben tener un valor conocido en

el

momento de realizar la referencia. En caso contrario, se producirá un error.

Ejercicios:

Pedir al usuario una lista de valores numéricos y calcular su suma.

Pedir al usuario dos matrices A y B de 2x2 elementos y calcular su resta.

En el ejercicio anterior, añadir una sentencia de salida que imprima los elementos

Page 41: MANUAL DE COMPUTO

B(0,0), B(3,3), B(1,5). ¿Qué tipo de error se produce?

4. MANEJO DE OBJETOS

Los objetos DFD pueden eliminarse, copiarse o moverse de sitio siguiendo la

estrategia habitual de Windows, con la salvedad de que sólo puede trabajarse con

UN objeto en cada operación. Para ello se dispone de la barra de botones

correspondiente

que actuará siempre sobre el objeto SELECCIONADO (clic sobre el mismo).

La única novedad destacable en las operaciones de copiar, eliminar y cortar es

que

DFD no dispone del botón DESHACER, por lo que deberán hacerse con cuidado,

ya

que un objeto eliminado o cortado no podrá recuperarse de ninguna forma que no

sea definiéndolo manualmente de nuevo.

La operación PEGAR permite situar un objeto desde el portapapeles de Windows

en cualquier punto del algoritmo. En DFD indicaremos el punto donde deseamos

pegar un objeto del portapapeles seleccionando el objeto a continuación del cual

deseamos colocarlo. Es decir, debemos tener en cuenta que el objeto va a quedar

pegado JUSTO DESPUÉS del "objeto destino". La figura siguiente ilustra el

proceso, 14 FUNDAMENTOS DE PROGRAMACIÓN—1º GSTIC

para un ejemplo en donde se pretende mover la sentencia de salida al inicio del

Page 42: MANUAL DE COMPUTO

algoritmo:

Para ello se opera del siguiente modo:

· Paso 1: Seleccionamos la sentencia que vamos a mover

· Paso 2: Pulsamos el botón de cortar

· Paso 3: Seleccionamos la sentencia que está justo antes de donde vamos a

insertar el objeto cortado (sentencia de inicio)

· Sit. final: Pulsamos el botón pegar.

En caso de que el punto de destino sea la condición de una sentencia de

selección, se

abrirá una ventana que nos pedirá la rama donde deseamos colocar el objeto:

Estas operaciones pueden realizarse igualmente, como en cualquier aplicación

Windows, con los contenidos de cualquier cuadro de texto (por ejemplo, al definir

asignaciones, condiciones, lazos, ...).

5. DEPURACIÓN DE ALGORITMOS

Las herramientas de depuración se utilizan para detectar la/s sentencia/s en

donde

se han producido errores en el diseño de un algoritmo. La tarea de depuración

consiste básicamente en explorar el algoritmo, ejecutándolo paso a paso y

comparando en todo momento los valores que van tomando las distintas variables

DIAGRAMAS DE FLUJO CON DFD 15

Page 43: MANUAL DE COMPUTO

con los valores esperados. Es necesario, por tanto, haber analizado con

anterioridad

algunos casos de prueba que permitan anticipar en todo momento los valores que

deben tomar las variables y saber si la progresión del algoritmo es correcta o no.

Normalmente la depuración se realizará ante la presencia de errores de ejecución

o

lógicos, ya que los de sintaxis suelen ir acompañados de algún tipo de mensaje

que

facilita su localización.

Los botones relacionados con la depuración son los siguientes (acercando el ratón

a

cada uno de ellos puedes ver la etiqueta con el nombre que le asocia DFD:):

5.1 PASO SIMPLE

Permite ir ejecutando el algoritmo sentencia a sentencia. Combinado con la

ventana

de evaluación de variables permite ir viendo los valores que toman estas. A cada

pulsación del botón, el flujo del algoritmo avanza una sentencia. El símbolo de la

sentencia que se va a ejecutar en cada momento es destacado en color azul.

En cualquier momento puede pararse la ejecución paso a paso pulsando el botón

DETENER:

Page 44: MANUAL DE COMPUTO

Ejercicio

Ejecutar paso a paso el algoritmo de resta de dos matrices.16 FUNDAMENTOS

DE PROGRAMACIÓN—1º GSTIC

5.2 EJECUTAR HASTA

Esta opción es útil cuando se sabe con certeza que una parte del algoritmo está

correctamente diseñada y por tanto, la ejecución paso a paso de dicha parte no es

necesaria (además de poder ser bastante tediosa).

El botón EJECUTAR HASTA permite establecer un PUNTO DE RUPTURA en las

sentencias del algoritmo, de modo que el programa se ejecutará con normalidad

hasta dicho punto, y a partir de ahí puede realizarse alguna de las siguientes

posibilidades:

· evaluar variables

· retomarse la ejecución normal

· seguir paso a paso

· establecer un punto de ruptura en una sentencia posterior del algoritmo y

continuar hasta él

El punto de ruptura debe establecerse con anterioridad, seleccionando (clic) la

sentencia donde se quiere fijar éste, y seguidamente pulsando el botón

EJECUTAR

Page 45: MANUAL DE COMPUTO

HASTA. En el momento que la ejecución alcance el punto de ruptura, el algoritmo

se

detendrá, y la sentencia correspondiente queda marcada en color azul.

Ejercicio

Establecer un punto de ruptura en la primera sentencia ejecutable del algoritmo de

resta de dos matrices, y continuar paso a paso a partir de ahí.

5.3 DEPURADOR

Abre una ventana donde se pueden escribir los nombres de las variables (o

expresiones en general) cuyo valor se desea explorar durante la depuración del

algoritmo. Se utilizará en combinación con cualquiera de los dos métodos de

depuración anteriores, para valorar si las variables toman valores correctos o no.

Al pulsar el botón correspondiente se abre una ventana en la que se van a

visualizar

las variables o expresiones que interese evaluar. DIAGRAMAS DE FLUJO CON

DFD 17

Dichas expresiones se introducen en el cuadro de texto que aparece pulsando la

tecla INSERTAR, cuando la ventana del depurador está activada (si no lo

estuviera,

basta con hacer clic en cualquier punto de ella para activarla).

Page 46: MANUAL DE COMPUTO

Si se desea eliminar alguna de las expresiones, basta con marcarla con el ratón

(clic)

y pulsar la tecla SUPRIMIR. Esto puede resultar útil, ya que una vez insertada una

variable en la ventana del depurador

En una sesión de depuración, normalmente se tendrá visible la ventana del

depurador, con el objeto de ir comparando en todo momento los valores que

toman

las variables. Cuando una variable no ha sido inicializada, se mostrará el mensaje

"Variable no existe", que cambiará al valor correspondiente una vez

ejecutada la sentencia que le asigna un valor (sentencia de asignación o sentencia

de

entrada). La siguiente figura ilustra esta situación:

Puede verse en la parte izquierda cómo la sentencia que inicializa las variables no

se

ha ejecutado aún (señalada en azul), y por tanto las variables no toman valores

conocidos. Una vez ejecutada, las variables toman los valores esperados.18

FUNDAMENTOS DE PROGRAMACIÓN—1º GSTIC

5.4 Depuración de errores en DFD. Sesión de ejemplo.

En primer lugar, copiaremos del Web de prácticas el fichero numeroprimo.dfd,

disponible en la sección Metodología de la Programación. El algoritmo presenta un

Page 47: MANUAL DE COMPUTO

error lógico, como podéis comprobar ejecutándolo para algunos casos (2, 4, 15,

...).

Para detectar dicho error realizaremos una ejecución hasta el lazo mientras, ya

que

no parece probable que el error esté en las primeras sentencias del programa.

Por tanto, fijamos el punto de ruptura en dicha sentencia, seleccionándola y

pulsando el botón EJECUTAR HASTA. A partir de aquí, el proceso evoluciona de

la

siguiente manera:

Acción Consecuencia Resultado

Se nos pide el número. Introducimos

el valor 6:

La ejecución alcanza el punto de

ruptura

+INS

Abrimos una ventana del depurador

para evaluar las variables definidas

hasta el momento. En este momento,

todas ellas toman valores correctos

A partir de aquí seguimos paso a

Page 48: MANUAL DE COMPUTO

paso. La siguiente instrucción es el

mientras, que se debe verificar.DIAGRAMAS DE FLUJO CON DFD 19

Se cumple la condición, ya que 2 es

divisor de 6. Por tanto, ya sabemos

que el número NO es primo, y

divisor debe incrementarse y

pasar a valer 1.

Se alcanza el final de la estructura

de selección, y la variable

divisor sigue valiendo cero.

¡Aquí hay un error!

Detenemos la ejecución paso a paso

para editar la asignación errónea y

corregirla.

Una vez corregido el error, probamos nuevamente el algoritmo con los casos de

prueba anteriores, verificando que funciona correctamente.

6. SUBPROGRAMAS

El tipo de subprograma que admite DFD es la función. Debe notarse que en DFD

los

Page 49: MANUAL DE COMPUTO

argumentos se pasan por REFERENCIA cuando son nombres de variables (tanto

variables escalares como vectores o matrices), y se pasan por VALOR cuando son

expresiones. Dentro de la opción OBJETOS del menú de ayuda, las opciones

LLAMADA y SUBPROGRAMAS profundizan en estos aspectos. Igualmente, las

funciones DFD no disponen de la sentencia DEVOLVER, por lo que los valores

que

deba retornar la función deberán almacenarse en los correspondientes

argumentos

de salida.

El código correspondiente a las funciones incluidas en un algoritmo debe añadirse

al mismo utilizando el botón NUEVO SUBPROGRAMA20 FUNDAMENTOS DE

PROGRAMACIÓN—1º GSTIC

que abre una nueva pantalla similar a la de inicial de un algoritmo, en la cual

cambia el símbolo INICIO por la cabecera de la función. Editando dicha cabecera

se

establecerá el nombre de la función, los parámetros (ficticios) correspondientes y,

si

se desea, una breve descripción de dicha función (documentación de la misma).

La inserción, borrado y edición de objetos en una función es idéntica a como se

describió para el algoritmo principal.

Page 50: MANUAL DE COMPUTO

La llamada a una función desde otro módulo tiene también un símbolo especial en

DFDDIAGRAMAS DE FLUJO CON DFD 21

cuya edición permite introducir el nombre y los parámetros verdaderos de la

función:

Los restantes botones del menú subprogramas permiten moverse entre las

distintas

ventanas de subprogramas o eliminar el subprograma actual:

Por último, señalar que las operaciones de COPIAR, CORTAR, PEGAR y

ELIMINAR pueden realizarse entre subprogramas de un mismo algoritmo y entre

algoritmos que se abran en una misma sesión de DFD.

Esta última posibilidad puede aprovecharse para reutilizar funciones previamente

construidas sin necesidad de volver a construirlas manualmente en el nuevo

algoritmo. Dado que desafortunadamente DFD no permite copiar y pegar un

algoritmo o función completa, es preciso recurrir a un pequeño artificio para poder

realizar esta tarea de forma fácil.

El artificio consiste en encerrar las funciones que diseñemos con DFD en una

sentencia que englobe totalmente a la función (salvo la cabecera), y que no añada

nada a la ejecución de la misma (por ejemplo, un lazo desde que se ejecute una

sóla

Page 51: MANUAL DE COMPUTO

vez). De esta manera sí es posible copiar dicho lazo desde (y por tanto, la función

22 FUNDAMENTOS DE PROGRAMACIÓN—1º GSTIC

completa), y pegarla en otro algoritmo donde vayamos a utilizar la función. Lo

único que habrá que completar manualmente será la cabecera, que como ya

hemos

mencionado no puede copiarse.

Page 52: MANUAL DE COMPUTO

Estructuras de Condicionales Las estructuras condicionales comparan una variable contra otro(s) valor(es),para que en base al resultado de esta comparación, se siga un curso de acciónden t ro de l p rograma. Cabe menc iona r que la comparac ión se puede hace r contra otra variable o contra una constante, según se necesite. Existen dostipos básicos, las simples y las múltiples. • Simples: Las estructuras condicionales simples se les conoce como“Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma:Si <condición> entoncesAcción(es)Fin-si • Dobles: Las estructuras condicionales dobles permiten elegir entre dosopciones o alternativas posibles en función del cumplimiento o no de unadeterminada condición. Se representa de la siguiente forma:Si <condición> entoncesAcción(es)si noAcción(es)Fin-siDonde:Si …………………Indica el comando de comparaciónCond ición…………Indica la condición a evaluar entonces……..……Precede a las acciones a realizar cuando se cumple lacondiciónacción(es)…………Son las acciones a realizar cuando se cumple o no lacondiciónsi no………………Precede a las acciones a realizar cuando no se cumple lacondiciónDependiendo de si la comparación es cierta o falsa, se pueden realizar una omas acciones. • Múltiples:

Page 53: MANUAL DE COMPUTO

Las es t ruc tu ras de compa rac ión mú l t ip les , son tomas dedec is ión espec ia l i zadas que pe rmi ten compa ra r una va r iab le con t ra distintos posibles resultados, ejecutando para cada caso una serie deinstrucciones específicas. La forma común es la siguiente:

Si <condición> entoncesAcción(es)si noSi <condición> entoncesAcción(es)si no.. V a r i a s c o n d i c i o n e s . Ejemplos: 1 ) L e e r 2 n ú m e r o s ; s i s o n i g u a l e s q u e l o s m u l t i p l i q u e , s i e l p r i m e r o e s mayor que el segundo que los reste y si no que los sume.InicioLeer num1, num2si num1 = num2 entoncesresul = num1 * num2si nosi num1 > num2 entoncesresul = num1 - num2si noresul = num1 + num2fin-sifin-sifin2)Leer tres números diferentes e imprimir el numero mayor de los tres.InicioLeer num1, num2, num3Si (num1 > num2) and (num1 > num3) entoncesmayor = num1si noSi (num2 > num1) and (num2 > num3) entoncesmayor = num2si nomayor = num3fin-sifin-siImprimir mayor fin