Algoritmo, Pseudocódigo y Diagrama de Flujo

23
UNIVERSIDAD DE ORIENTE NÚCLEO DE ANZOÁTEGUI ESCUELA DE ESTUDIOS BÁSICOS CARRERA PROFESIONAL DE INGENIERÍA EN MECÁNICA INTRODUCCIÓN A LA PROGRAMACIÓN LENGUAJES INFORMÁTICOS Y PROGRAMACIÓN ALUMNOS: Maria Cedeño 26.146.848 PROFESOR: Arturo Mujica

description

Algoritmo, Pseudocódigo y Diagrama de Flujo

Transcript of Algoritmo, Pseudocódigo y Diagrama de Flujo

Page 1: Algoritmo, Pseudocódigo y Diagrama de Flujo

UNIVERSIDAD DE ORIENTE

NÚCLEO DE ANZOÁTEGUI

ESCUELA DE ESTUDIOS BÁSICOS

CARRERA PROFESIONAL DE INGENIERÍA EN MECÁNICA

INTRODUCCIÓN A LA PROGRAMACIÓN

LENGUAJES INFORMÁTICOS Y PROGRAMACIÓN

ALUMNOS:

Maria Cedeño 26.146.848

PROFESOR: Arturo Mujica

FEBRERO; 2016

Page 2: Algoritmo, Pseudocódigo y Diagrama de Flujo

ÍNDICE

INTRODUCCIÓN 1

1. Diagrama de flujo 21.1. Características 21.2. Ventajas de los diagramas de flujo 21.3. Tipos de diagramas de flujo 21.4. Simbología y significado 2

2. Algoritmo 32.1. Medios de expresión de un algoritmo 32.2. Algoritmos como funciones 42.3. Análisis de algoritmos 52.4. Ejemplo de algoritmo 5

3. Pseudocódigo 63.1. Características 63.2. Partes 63.3. Definición de datos del pseudocódigo 73.4. Funciones y operaciones 73.5. Estructura de control 73.6. Desarrollo de algoritmos 83.7. Funciones y procedimientos 93.8. Ventajas del pseudocódigo sobre los diagrama de flujo 9

4. Programación estructurada 94.1. Orígenes 94.2. Ventajas de la programación estructurada 104.3. Inconvenientes de la programación estructurada 10

5. Resolución de problemas de programación 11 5.1. Análisis del problema 115.2. Diseño del algoritmo 11

6. Programación 13 6.1. Historia 136.2. Léxico y programación 136.3. Programas y algoritmos 146.4. Compilación 146.5. Programación e ingeniería del software 156.6. Referencias históricas 156.7. Objetivos de la programación 16

CONCLUSIÓN 17

Page 3: Algoritmo, Pseudocódigo y Diagrama de Flujo

INTRODUCCIÓN

La programación es una técnica que utiliza el hombre para comunicarse con una máquina y “hacerla pensar”. Pues bien, esa potencialidad está a la espera de que una persona (nosotros) le saque partido y para ello lo único que hace es proporcionarle instrucciones a la máquina, diremos por tanto que programar es definir instrucciones para ser ejecutadas por un ordenador.

La computadora fue inventada para facilitar el trabajo intelectual, si el hombre tiene algún problema, el diseñador define el algoritmo que resuelve el problema. Una vez diseñado el algoritmo este se pasa a un lenguaje de programación que el computador pueda leer este caso será el pseudocódigo. Debido a lo importante que ha sido hoy en día editar algoritmos, con el desarrollo de las nuevas tecnologías, el ser humano se ve en la necesidad de desarrollar sistemas computarizados para realizar sus tareas de manera más eficiente y para ello se utiliza lo se conoce como programación.

1

Page 4: Algoritmo, Pseudocódigo y Diagrama de Flujo

1. DIAGRAMA DE FLUJO (flowchart, del inglés)

Es una técnica de representación gráfica de la lógica o pasos de un algoritmo que consiste de un conjunto de símbolos y flechas que se conectan entre sí donde los símbolos representan las diferentes acciones que se pueden ejecutar en un algoritmo, mientras que las flechas muestran la progresión paso a paso a través del algoritmo y suelen ser usados solo para representar algoritmos pequeños, ya que abarcan mucho espacio.

1.1. Características

Es una notación gráfica para implementar algoritmos. Se basa en la utilización de unos símbolos gráficos denominados bloques, en los que

escribimos las acciones que tiene que realizar el algoritmo. Estos bloques están conectados entre sí por líneas y eso nos indica el orden en el

que tenemos que ejecutar las acciones. En todo algoritmo siempre habrá un bloque de inicio y otro de fin, para el principio y

final del algoritmo.

1.2. Ventajas del diagrama de flujo

Rápida comprensión de las relaciones Se pueden usar como modelos de trabajo para el diseño de nuevos programas Documentación adecuada de los programas Produce una codificación eficaz en los programas Depuración y pruebas ordenadas de programas Fácil de traducir a cualquier lenguaje de programación.

1.3. Tipos de diagrama de flujo

Formato vertical : En él, el flujo y 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 : 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 flujo-gramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

1.4. Simbología y significado Líneas de flujo : Es una línea con una flecha (y solo una flecha) que permite conectar

los bloques del diagrama. La flecha indica la secuencia en la que se van a ejecutar las acciones.

Principio y Fin : Todo algoritmo y por lo tanto, todo diagrama de flujo tiene un principio y un fin (y son únicos). Dentro de este bloque se coloca la palabra “INICIO” o “FIN” según corresponda.

2

Page 5: Algoritmo, Pseudocódigo y Diagrama de Flujo

Proceso : Aquí dentro se escribe la acción que debe realizar el programa. Si son varias, se escriben una debajo de la otra, sin olvidarse que se ejecutan una a una en forma secuencial según en qué orden fueron escritas.

Condición : Dentro de este bloque se escribe una condición. Si ésta es verdadera, entonces el algoritmo tomará una de sus salidas, de lo contrario, tomará la siguiente. Permite representar estructuras del tipo selectivas y repetitivas.

Entrada y Salida : Representa acciones de entrada salida desde un teclado o hacia una pantalla respectivamente. Es decir, si debemos ejecutar una acción que consiste en leer un dato que se ingresa mediante el teclado de una PC y almacenarlo en la variable de nombre “a”, entonces dicha acción se describe dentro de este bloque como “leer a”.

Conectores : Permiten “unir” diagramas de flujo cuando éstos no caben en una misma columna de la hoja por completo. Es decir, cuando debemos, por cuestiones de espacio en la hoja, fragmentar el programa entonces utilizamos estos bloques para indicar los puntos de unión. Cada par de puntos que se deben unir llevarán dentro de este bloque el mismo número.

Comentarios: Es una aclaración para comprender mejor el código del programa, pero no forma parte del código, es decir, no se ejecuta.

Óvalo   o   Elipse : Inicio y Final (Abre y cierra el diagrama). 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).

2. ALGORITMOS

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.

Un algoritmo es un procedimiento para resolver un problema. Éste describe un conjunto finito y ordenado de pasos, reglas o instrucciones para producir la solución a un problema dado. Un algoritmo puede ser definido como una secuencia de instrucciones bien definidas y efectivas, y finaliza con la producción del resultado esperado a partir de las entradas dadas.

2.1. Medios de expresión de un algoritmo

++Por diagramas de flujo

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.

3

Page 6: Algoritmo, Pseudocódigo y Diagrama de Flujo

++Por pseudocódigo

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.

++Por sistemas formales

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:

Mediante una sentencia de asignación.

Mediante un procedimiento de entrada de datos (por ejemplo: 'read').

++Estructuras secuenciales

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*1/2).

2.2. Algoritmos como funciones

4

Page 7: Algoritmo, Pseudocódigo y Diagrama de Flujo

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, 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 la codificación de un problema o de una solución.

2.3. 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.

2.4. 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  .

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( )5

Page 8: Algoritmo, Pseudocódigo y Diagrama de Flujo

//  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

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;}

3. PSEUDOCÓDIGO

Es una descripción de alto nivel compacta e informal del principio operativo de un programa informático u otro algoritmo.

3.1. Características Se puede ejecutar en un ordenador Es una forma de representación sencilla de utilizar y de manipular. Facilita el paso del programa al lenguaje de programación. Es independiente del lenguaje de programación que se vaya a utilizar. Es un método que facilita la programación y solución al algoritmo del programa.

3.2. Partes Instrucciones primitivas.2. Instrucciones de proceso.3. Instrucciones de control.4. Instrucciones compuestas.5. Instrucciones de descripción.

6

Page 9: Algoritmo, Pseudocódigo y Diagrama de Flujo

Estructura a seguir en su realización:1. Cabecera. 1. Programa.2. Modulo.3. Tipos de datos.4. Constantes.5. Variables.2. Cuerpo. 6. Inicio.7. Instrucciones.8. Fin.

3.3. Definición de datos del pseudocódigo

La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte la desarrollaremos adecuadamente.

3.4. Funciones y operaciones

Cada autor usa su propio pseudocódigo con sus respectivas convenciones. Por ejemplo, la instrucción "reemplace el valor de la variable x por el valor de la variable y" puede ser representado como:

* asigne a el valor de 

Las operaciones aritméticas se representan de la forma usual en matemáticas.

3.5. Estructuras de control

En la redacción del pseudocódigo se utiliza tres tipos de estructuras de control: las secuenciales, las selectivas y las iterativas.

++Estructuras secuenciales

Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de renglón. Es decir que las instrucciones se ejecutan de arriba hacia abajo.

++Estructuras selectivas

Las instrucciones selectivas representan instrucciones que pueden o no ejecutarse, según el cumplimiento de una condición. La condición es una expresión booleana. Instrucciones es ejecutada sólo si la condición es verdadera.

A. Selectiva doble (alternativa )

La instrucción alternativa realiza una instrucción de dos posibles, según el cumplimiento de una condición. La condición es una variable booleana o una función reducible a booleana (lógica, Verdadero/Falso). Si esta condición es cierta se ejecuta Instrucciones1, si no es así, entonces se ejecuta Instrucciones.

7

Page 10: Algoritmo, Pseudocódigo y Diagrama de Flujo

B. Selectiva múltiple

También es común el uso de una selección múltiple que equivaldría a anidar varias funciones de selección. En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de ellas se cumple las demás tienen que ser falsas necesariamente, hay un caso si no que será cierto cuando las demás condiciones sean falsas.

C. Selectiva múltiple-Casos

Una construcción similar a la anterior (equivalente en algunos casos) es la que se muestra a continuación.

++Estructuras iterativas

Las instrucciones iterativas representan la ejecución de instrucciones en más de una vez.

A. Bucle mientras

El bucle se repite mientras la condición sea cierta, si al llegar por primera vez al bucle mientras la condición es falsa, el cuerpo del bucle no se ejecuta ninguna vez.

B. Bucle repetir

Existen otras variantes que se derivan a partir de la anterior. La estructura de control repetir se utiliza cuando es necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se cumpla la condición.

C. Bucle hacer

El Bucle hacer se utiliza para repetir un bloque de código mientras se cumpla cierta condición.

D. Bucle para

Una estructura de control muy común es el ciclo para, la cual se usa cuando se desea iterar un número conocido de veces, empleando como índice una variable que se incrementa (o decrementa).

E. Bucle para cada

Por último, también es común usar la estructura de control para cada. Esta sentencia se usa cuando se tiene una lista o un conjunto   y se quiere iterar por cada uno de sus elementos.

F. El anidamiento Cualquier instrucción puede ser sustituida por una estructura de control, es decir, está

relacionado a la inclusión de estructuras de control dentro de otras, usualmente indicado mediante la inclusión de distintos niveles de sangría dentro del código fuente. En general, las estructuras anidadas se muestran indentadas, para hacer más sencilla su identificación a simple vista.

3.5. Desarrollo de algoritmos

8

Page 11: Algoritmo, Pseudocódigo y Diagrama de Flujo

Con este pseudocódigo se puede desarrollar cualquier algoritmo que:* Tenga un único punto de inicio.* Tenga un número finito de posibles puntos de término.* Haya un número finito de caminos, entre el punto de inicio y los posibles puntos de término.

3.6. Funciones y procedimientos

Es necesario dejar en claro cuáles son las entradas para el algoritmo, esto se hace comúnmente colocando estos valores entre paréntesis al principio o bien declarándolo explícitamente con un enunciado. En el caso de las funciones, es necesario colocar una palabra como regresar o devolver para indicar cuál es la salida generada por el algoritmo. Por ejemplo, el pseudocódigo de una función que permite calcular an (un número a elevado a potencia n).

Un ejemplo de procedimiento seria el algoritmo de Ordenamiento de burbuja, por el que partiendo de una lista de valores estos se ordenan, nótese que en un procedimiento, no se calcula el valor de una función, sino que se realiza una acción, en este caso ordenar la lista.

3.7. Ventajas del pseudocódigo sobre los diagramas de flujo

1. Ocupan mucho menos espacio en el desarrollo del problema.2. Permite representar de forma fácil operaciones repetitivas complejas.3. Es más sencilla la tarea de pasar de pseudocódigo a un lenguaje de programación formal.4. Si se siguen las reglas de identación se puede observar claramente los niveles en la estructura del programa.5. En los procesos de aprendizaje de los alumnos de programación, éstos están más cerca del paso siguiente (codificación en un lenguaje determinado, que los que se inician en esto con la modalidad Diagramas de Flujo).6. Mejora la claridad de la solución de un problema.

4. PROGRAMACIÓN ESTRUCTURADA

4.1. Orígenes

A finales de los años 1970 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su mejor comprensión, no sólo proveyendo ventajas durante la fase de desarrollo, sino también posibilitando una más sencilla modificación posterior.

El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:

Secuencia

Instrucción condicional.

Iteración (bucle de instrucciones) con condición al principio.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, estas pueden ser construidas mediante las tres básicas citadas.

9

Page 12: Algoritmo, Pseudocódigo y Diagrama de Flujo

++Estructura secuencial

Es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. 

En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma:

PSEUDOCODIGO Nombre

VARIABLES

Nombre: Tipo De Dato

CONSTANTES

Nombre = Valor

INICIO

   accion

   accion1

   accion2      .      .      .    accionNFIN

++Estructuras selectivas

Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas.

En las estructuras selectivas se evalúan una condición y en función del resultado de la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, elseo bien en español si, entonces, si_no), con una figura geométrica en forma de rombo o bien con un triangulo en el interior de una caja rectangular.

++Estructuras iterativas

Las estructuras iterativas de control de flujo se ocupan de repetir una serie de líneas de código tantas veces como el programador indique o bien hasta que se de una cierta condición. A estas estructuras también se les llama bucles.

4.2. Ventajas de la programación estructurada

Los programas son más fáciles de entender, pueden ser leídos de forma secuencial y no hay necesidad de hacer engorrosos seguimientos en saltos de líneas (GOTO) dentro de los bloques de código para intentar entender la lógica.

La estructura de los programas es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.

Reducción del esfuerzo en las pruebas y depuración. El seguimiento de los fallos o errores del programa (debugging) se facilita debido a su estructura más sencilla y comprensible, por lo que los errores se pueden detectar y corregir más fácilmente.

10

Page 13: Algoritmo, Pseudocódigo y Diagrama de Flujo

Reducción de los costos de mantenimiento. Análogamente a la depuración, durante la fase de mantenimiento, modificar o extender los programas resulta más fácil.

Los programas son más sencillos y más rápidos de confeccionar. Se incrementa el rendimiento de los programadores.

4.3. Inconvenientes de la programación estructurada

El principal inconveniente de este paradigma de programación es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo; esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado.

Un método un poco más sofisticado es la programación por capas, en la que los módulos tienen una estructura jerárquica en la que se pueden definir funciones dentro de funciones o de procedimientos.

5. RESOLUCIÓN DE PROBLEMAS DE PROGRAMACIÓN

5.1. Análisis del problema

Cuando un usuario plantea a un programador un problema que resolver mediante su ordenador, por lo general ese usuario tendrá conocimientos más o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos de informática. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa será un experto en contabilidad (dominio del problema), pero no tiene por qué ser experto en programación.

Al abordar un problema que se quiere resolver mediante un ordenador, el programador necesita de la experiencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solución satisfactoria es necesario que:

El problema esté bien definido con el máximo detalle Las especificaciones de las entradas y salidas del problema, deben ser descritas también

en detalle:¿Qué datos son necesarios para resolver el problema?

¿Qué información debe proporcionar la resolución del problema?

5.2. Diseño del algoritmo

Para poder describir cualquier tipo de acción de las que intervienen en un algoritmo, diversos autores proponen el uso de un conjunto de construcciones lógicas (secuencia, decisión e iteración) con las que es posible escribir cualquier programa. Lo que sigue a continuación es la descripción de las diferentes construcciones disponibles para el diseño de algoritmos.

++Acciones elementales

Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que serán de dos tipos:

11

Page 14: Algoritmo, Pseudocódigo y Diagrama de Flujo

Aritmético – lógicas : Operaciones que, a partir de unos determinados datos, realizan un cálculo aritmético (suma, resta, multiplicación,...) o un cálculo lógico (mayor que, menor que, igual que,...).Las primeras devuelven un valor numérico (4, -5.67,...) y las segundas un valor lógico (verdadero o falso).

De entrada – salida:  Acciones que permiten capturar datos para su posterior tratamiento (las de entrada) y guardar los resultados de dicho tratamiento (las de salida).

++Secuencia de acciones elementales

Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente, éstas se describen una detrás de otra según el orden en que deban ejecutarse. Si se desea se puede emplear algún tipo de símbolo para separar dos acciones consecutivas. En el siguiente ejemplo se muestra la descripción de n acciones separadas por punto y coma (símbolo que habitualmente se emplea como separador).

Acción 1;Acción 2;...Acción n;

++Composición condicional

Cuando en un algoritmo se quiere indicar que cierta acción solo se debe ejecutar bajo cierta condición se indica del siguiente modo:

Si Condición Entonces Acción;FinSi

Solo si la Condición (operación lógica) es verdadera se ejecutará la Acción. En este caso, la Acción puede referirse tanto a una acción elemental como a un conjunto de ellas.

++Composición condicional doble (alternativa)

En ocasiones, se deben ejecutar unas acciones u otras dependiendo de la ocurrencia de una determinada condición. Esta especificación se realiza del siguiente modo:

Si Condición Entonces Acción A;SiNo Acción B;FinSi

12

Page 15: Algoritmo, Pseudocódigo y Diagrama de Flujo

Dependiendo de si la Condición es verdadera o falsa se ejecutará la Acción A o la Acción B respectivamente. De forma análoga a como ocurría en el caso anterior, tanto la Acción A como la Acción B pueden referirse a una acción elemental o a un conjunto de ellas.

++Composición condicional múltiple

También es posible que a la hora de especificar la ejecución de una acción haya que escoger ésta entre varias dependiendo del valor de una determinada variable (o indicador). Este caso se expresa del siguiente modo:

Según Indicador Hacer Caso Valor 1: Acción 1; Caso Valor 2: Acción 2; ... Caso Valor n: Acción n; [De Otro Modo: Acción X;]FinSegun

++Composición iterativa o bucle

Cuando una acción o conjunto de acciones debe ejecutarse varias veces se recurre a una estructura iterativa o bucle. En este tipo de estructuras se necesita una condición que determine cuando terminan las iteraciones. Dependiendo de si esa condición se evalúa al principio o al final de la estructura y de si la condición para que las iteraciones continúen debe ser verdadera o falsa,

6. PROGRAMACIÓN

6.1. Historia

En sus inicios las computadoras interpretaban solo instrucciones en un lenguaje específico, del más bajo nivel, conocido como código máquina, siendo éste excesivamente complicado para programar. De hecho solo consiste en cadenas de números 1 y 0 (sistema binario). Para facilitar el trabajo de programación, los primeros científicos, que trabajaban en el área, decidieron reemplazar las instrucciones, secuencias de unos y ceros, por palabras o abreviaturas provenientes del inglés; las codificaron y crearon así un lenguaje de mayor nivel, que se conoce como Asembly o lenguaje ensamblador.

A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un método sencillo para programar. Entonces, se

13

Page 16: Algoritmo, Pseudocódigo y Diagrama de Flujo

crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como multiplicar dos números puede necesitar un conjunto de instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará con solo una.

6.2. Léxico y programación

La programación se rige por reglas y un conjunto más o menos reducido de órdenes, expresiones, instrucciones y comandos que tienden a asemejarse a una lengua natural acotada (en inglés); y que además tienen la particularidad de una reducida ambigüedad. Cuanto menos ambiguo es un lenguaje de programación, se dice, es más potente. Bajo esta premisa, y en el extremo, el lenguaje más potente existente es el binario, con ambigüedad nula (lo cual lleva a pensar así del lenguaje ensamblador).

En los lenguajes de programación de alto nivel se distinguen diversos elementos entre los que se incluyen el léxico propio del lenguaje y las reglas semánticas y sintácticas.

6.3. Programas y algoritmos

Un programa normalmente implementa uno o más algoritmos. Un algoritmo puede expresarse de distintas maneras: en forma gráfica, como un diagrama de flujo, en forma de código como en pseudocódigo o un lenguaje de programación, en forma explicativa, etc.

Los programas suelen subdividirse en partes menores, llamadas módulos, de modo que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. Esta es una práctica muy utilizada y se conoce como "refino progresivo".

Según Niklaus Wirth, un programa está formado por los algoritmos y la estructura de datos.

Se han propuesto diversas técnicas de programación cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas, se pueden mencionar las siguientes:

Programación declarativa Programación estructurada Programación modular Programación orientada a objetos

6.4. Compilación

El código fuente del programa se debe someter a un proceso de traducción para convertirlo a lenguaje máquina o bien a un código intermedio, generando así un módulo denominado "objeto". A este proceso se le llama compilación.

14

Page 17: Algoritmo, Pseudocódigo y Diagrama de Flujo

Habitualmente la creación de un programa conlleva dos pasos. El primer paso se llama compilación y traduce el código fuente escrito en un lenguaje de programación almacenado en un archivo de texto a código en bajo nivel. El segundo paso se llama enlazado en el cual se enlaza el código de bajo nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se añade el código de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda comunicarse directamente con el sistema operativo, traduciendo así finalmente el código objeto a código máquina, y generando un módulo ejecutable.

Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de compilación en archivos objetos; para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de compilación puede almacenarse solo de forma temporal. Un programa podría tener partes escritas en varios lenguajes, por ejemplo, Java, C, C++ y ensamblador, que se podrían compilar de forma independiente y luego enlazar juntas para formar un único módulo ejecutable.

6.5. Programación e ingeniería del software

Existe una tendencia a identificar el proceso de creación de un programa informático con la programación, que es cierta cuando se trata de programas pequeños para uso personal, y que dista de la realidad cuando se trata de grandes proyectos.

El proceso de creación de software, desde el punto de vista de la ingeniería, incluye mínimamente los siguientes pasos:

1. Reconocer la necesidad de un programa para solucionar un problema o identificar la posibilidad de automatización de una tarea.

2. Recoger los requisitos del programa. Debe quedar claro qué es lo que debe hacer el programa y para qué se necesita.

3. Realizar el análisis de los requisitos del programa. Debe quedar claro qué tareas debe realizar el programa. Las pruebas que comprueben la validez del programa se pueden especificar en esta fase.

4. Diseñar la arquitectura del programa. Se debe descomponer el programa en partes de complejidad abordable.

5. Implementar el programa. Consiste en realizar un diseño detallado, especificando completamente todo el funcionamiento del programa, tras lo cual la codificación (programación propiamente dicha) debería resultar inmediata.

6. Probar el programa. Comprobar que pasan pruebas que se han definido en el análisis de requisitos

7. Implantar (instalar) el programa. Consiste en poner el programa en funcionamiento junto con los componentes que pueda necesitar (bases de datos, redes de comunicaciones, etc.).

15

Page 18: Algoritmo, Pseudocódigo y Diagrama de Flujo

La ingeniería del software se centra en los pasos de planificación y diseño del programa, mientras que antiguamente (programación artesanal) la realización de un programa consistía casi únicamente en escribir el código, bajo solo el conocimiento de los requisitos y con una modesta fase de análisis y diseño.

6.6. Referencias históricas

El trabajo de Ada Lovelace, el título de primera programadora de computadoras del mundo, aunque Babbage nunca completó la construcción de la máquina. El nombre del lenguaje de programación Ada fue escogido como homenaje a esta programadora.

6.7. Objetivos de la programación

La programación debe perseguir la obtención de programas de calidad. Para ello se establece una serie de factores que determinan la calidad de un programa. Algunos de los factores de calidad más importantes son los siguientes:

Correctitud. Un programa es correcto si hace lo que debe hacer tal y como se estableció en las fases previas a su desarrollo. Para determinar si un programa hace lo que debe, es muy importante especificar claramente qué debe hacer el programa antes de su desarrollo y, una vez acabado, compararlo con lo que realmente hace.

Claridad. Es muy importante que el programa sea lo más claro y legible posible, para facilitar tanto su desarrollo como su posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, así como cuidar el estilo de programación..

Eficiencia. Normalmente, al hablar de eficiencia de un programa, se suele hacer referencia al tiempo que tarda en realizar la tarea para la que ha sido creado y a la cantidad de memoria que necesita, pero hay otros recursos que también pueden ser de consideración para mejorar la eficiencia de un programa, dependiendo de su naturaleza (espacio en disco que utiliza, tráfico en la red que genera, etc.).

Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma, ya sea hardware o software, diferente a aquélla en la que se desarrolló. La portabilidad es una característica muy deseable para un programa, ya que permite, por ejemplo, a un programa que se ha elaborado para el sistema GNU/Linux ejecutarse también en la familia de sistemas operativos Windows. Esto permite que el programa pueda llegar a más usuarios más fácilmente.

16

Page 19: Algoritmo, Pseudocódigo y Diagrama de Flujo

CONCLUSIÓN

Luego de realizar este trabajo hemos visto como los algoritmos son una de las herramientas más complejas y aplicables en el área de la informática y el mundo de los computadores: Pudimos comprobar que mientras más potente, completo y eficiente es el computador o la aplicación que corre sobre el mismo, más grande, complejo y exacto es el algoritmo que utiliza.

Con la finalidad de resolver operaciones matemáticas o cualquier problema, afirmamos que los algoritmos son de carácter general y puede aplicarse a cualquier operación, la formulación de algoritmos fue unos de los más grandes adelantos dentro de la ciencia matemática ya que a partir de ellos se pudieron resolver infinidad de problemas. Diseñar los algoritmos sería el paso más fácil, luego vendría lo que es traducir ese algoritmo diseñado a un lenguaje de computación que se legible para él mismo, y una vez traducido crear un archivo ejecutable el cual será utilizado por ordenadores o similares para resolver o realizar lo requerido para el cual fue hecho el algoritmo.

17