Está en la página 1de 65

Algoritmos Pseudocodigo

y Diagramas de Flujo

Primera
Unidad
Definición de
Algoritmos
Un algoritmo constituye una lista bien definida, ordenada y
finita de operaciones, que permite encontrar la solución a un
problema determinado. Dado un estado inicial y una entrada,
es a través de pasos sucesivos y bien definidos que se llega a
un estado final, en el que se obtiene una solución (si hay
varias) o la solución (si es única).

Process output
input
Concepto de
algoritmo Parte importantes de un algoritmo:
• Entrada de datos: Datos necesarios que un algoritmo
necesita para ser ejecutado.
• Proceso: Secuencia de pasos para la ejecución del
algoritmo.
• Salida de resultado: dato(s) obtenidos luego de la ejecución
del algoritmo.
Ejemplo
Problema: Realizar un algoritmo que determine si una
persona puede casarse; considerando que para poderlo hacer
debe ser mayor de edad y estar soltero.
Solución
1. Inicio
2. Escribir ¿Cuál es su edad?
Concepto de 3. Leer edad
4. Escribir ¿Cuál es su estado civil?
algoritmo 5. Leer estado civil
6. Si (edad >= 18 y estado civil = soltero) entonces
7. Escribir Puede casarse
8. Si no
9. Escribir No puede casarse
10. Fin si
11. Fin
Ejemplo
Problema: Realizar un algoritmo que calcule el promedio de los
cursos que ha aprobado un estudiante. Permitiendo que el
usuario ingrese cuantas notas desee.
Solución
1. Inicio
2. Suma = 0, Conteo = 0, Promedio = 0
3. Escribir Ingrese nota
Concepto de 4. Leer nota

algoritmo 5. Suma = Suma + nota


6. Conteo = Conteo + 1
7. Escribir ¿Desea ingresar otra nota? y/n
8. Leer opción
9. Si (opción = y) ir a paso 3
10. Promedio = Suma / Conteo
11. Escribir Promedio
12. Fin
Concepto de algoritmo

Un algoritmo puede ser expresado en:


• Lenguaje natural (a veces, este no resulta muy claro, pero es muy útil para problemas simples)
• Pseudocódigo
• Diagramas de flujo
• Programas
El uso de algún elemento de la lista anterior para la expresión de un algoritmo, se hace según el nivel de
descripción de dicho algoritmo. El lenguaje natural es de mayor utilidad para transmitir las ideas del
algoritmo. Al contrario, un programa es difícil de entender por simple lectura, aun por una persona que
conoce el lenguaje del programa, e imposible para aquellas que no lo conocen.
El pseudocódigo y los diagramas de flujo, en cambio, se sitúan en un punto intermedio de comprensión,
entre el lenguaje natural y un programa. Estas dos herramientas poseen un poder de expresión equivalente;
no obstante, los diagramas de flujo tienen la ventaja de ser más gráficos y visuales.
Concepto de algoritmo
Por lo general, un problema se descompone en subproblemas;
por tanto, un algoritmo expresa la resolución de un problema
(elemental o no).
Las etapas de desarrollo de un algoritmo, con base en la lógica,
son las siguientes:
1. Definición: En esta etapa se especifica el propósito
del algoritmo y se ofrece una definición clara del
problema por resolver. Además, aquí también se

Análisis y 2.
establece lo que se pretende lograr con su solución.
Análisis: En este punto se analiza el problema y sus

compresión de un características, y se determinan las entradas y salidas


del problema. También debe investigarse si ya existe
una o varias soluciones al problema. En el caso de

problema que ya se conozcan varias soluciones, entonces se


determina cuál es la más conveniente para el
problema que estamos tratando. Si no se conoce
ninguna, o no nos satisfacen las soluciones existentes,
se propone una nueva.
3. Diseño: Aquí es donde se plasma la solución del
problema. Con ese fin, se emplea una herramienta de
diseño, que consiste en el diagrama de flujo y el
pseudocódigo.
4. Implementación: En este último paso es donde se
realiza o se ve concretado el programa y se realizan
sus respectivas pruebas.
Análisis y comprensión de un problema

Ejemplo
Supóngase un número entero N del que se requiere probar si es divisible o no entre 3.
En este caso, la definición del problema es el enunciado mismo: “Probar si un número entero N es o no divisible
entre 3”.
En la etapa de análisis, identificamos las entradas y las salidas:
• Entrada: Un número entero N.
• Salida: Una respuesta (Sí o No).
Para la resolución del problema de este ejemplo, conocemos la definición de la divisibilidad: “un número N es
divisible entre otro número k, si la división N / k es exacta (o el resto es 0)”.
Asimismo, existen métodos que presentan diferentes grados de dificultad para un ser humano:
• Realizar la división n / k y comprobar si es exacta.
• Efectuar la suma de las cifras que componen el número en base 10 y verificar si el número es divisible entre 3.
Análisis y comprensión de un problema

De acuerdo con la naturaleza del ser humano, él puede aplicar con mayor facilidad el segundo método,
debido a que la división de la suma de las cifras y el cálculo mismo de la suma son más simples que la
división inicial; sin embargo, para la computadora es lo mismo realizar la división de 78564589 entre 3 o la
división de 52 entre 3. En el segundo caso, en cambio, es necesario hacer la extracción de las cifras y luego la
suma de las cifras; entonces, la resolución del problema es simple, como lo establecen los siguientes pasos:
1. Se hace la lectura del número N.
2. Se toma el resto de la división de N entre 3 (la operación módulo N %3).
3. Según el valor del resto, se escribe: “Sí” o “No”.
En la etapa de fin de análisis, los pasos a seguir resultan muy claros; en tanto, en el paso de diseño se
formalizan aún más y lo describen sin ninguna ambigüedad. Durante la implementación, es preciso saber
cómo introducir los valores de entrada en la computadora y cómo hacer el programa.
Programas y paradigmas de programación y lenguajes

Un programa informático se define como un conjunto de instrucciones que, una vez ejecutado,
realiza una o varias tareas en una computadora. De esta forma, sin programas, una computadora
no puede realizar las actividades para las que fue diseñada y creada.
El conjunto general de programas que posee una computadora se denomina software, término
que se utiliza para definir al equipamiento o soporte lógico de una computadora.
Un programa se escribe con instrucciones en un lenguaje de programación, el cual, a su vez, está
definido por su sintaxis, que establece e indica las reglas de escritura (la gramática), y por la
semántica de los tipos de datos, instrucciones, definiciones, y otros elementos que constituyen
un programa.
Un lenguaje de programación es un caso particular del lenguaje informático; este último permite
hacer programas, pero también describir datos, configuraciones físicas y protocolos de
comunicación entre equipos y programas.
Si un programa está escrito en un lenguaje de programación
comprensible para el ser humano, se le llama código fuente. A
su vez, el código fuente se puede convertir en un archivo
ejecutable (código máquina) con la ayuda de un compilador,
aunque también puede ser ejecutado de inmediato a través de
un intérprete.
Programas y Un paradigma de programación provee (y determina) la visión y
los métodos de un programador en la construcción de un
paradigmas de programa o subprograma. Existen diferentes paradigmas que
derivan en múltiples y variados estilos de programación y en
diferentes formas de solución de problemas:
programación y • Paradigma Imperativo
• Paradigma Estructurado
lenguajes • Paradigma Declarativo
• Paradigma Funcional
• Paradigma Lógico
• Paradigma Orientado a Objetos
• Encapsulación
• Herencia
• Polimorfismo
• Paradigma de Programación por Eventos
• Paradigmas Paralelo, Distribuido y Concurrente
Transformación de un programa

Un programa de usuario recorre el siguiente camino hasta su ejecución:


• Edición: Con un editor de texto se escribe el programa en el lenguaje elegido.
• Compilación: En lenguaje de alto nivel, el código fuente se transforma en instrucciones para la máquina
(código objeto o código ejecutable).
• Enlazado: Un ejecutable se construye con códigos objeto (uno o más) y librerías de funciones, entre otros.
El resultado de este proceso es un código ejecutable directo para la máquina.
Pero también existe el modo interpretación de ejecución, en el cual cada frase, instrucción, orden o consulta,
escritos en código fuente, se transforma, poco a poco, en órdenes, ya sea directamente por el procesador,
por otro software o por la máquina abstracta. Este es el caso del intérprete del lenguaje PROLOG, del Shell y
del motor de resolución de consultas (SQL, por las bases de datos). En el mismo caso también se encuentra
el lenguaje Java en modo interpretado, en donde el código transformado (clases o archivos) es interpretado
por la “Máquina Virtual Java”.
Compilador Interprete
Transformación
• El código fuente se compila • El código fuente se
de un una vez y se ejecuta N veces. traduce cada ves que se
programa • Analiza el código fuente y lo
ejecuta.
traduce a otro equivalente • Permite interactuar con el
en lenguaje de máquina. código en tiempo de
• La ejecución es mas rápida. ejecución, facilitando la
búsqueda de errores.
• El ejecutable creado
únicamente funciona sobre • Necesita menos memoria.
la plataforma en que se • Cualquier programa puede
compilo. interpretarlo
independientemente de la
plataforma.

Código Código de Código


Compilador Interprete
fuente maquina fuente
Nociones básicas

Variables, tipos y expresiones


Variables

El formato de representación y de estructuración de los datos depende del paradigma del


lenguaje de programación y de la opción que el programador ha elegido para representar los
datos. En el paradigma imperativo y en el caso de algunos otros paradigmas existe una noción
básica común para el manejo de los datos: la noción de variable. La ventaja de las variables es
que almacenan datos de entrada, de salida o intermedios.
Por lo general, en cada programa aparece al menos una variable, lo que signifi ca que en cada
programa hay una zona de memoria con un tamaño fi jo que contiene un valor de tipo preciso.
Cada variable debe tener:
• Un tamaño de memoria ocupada y un modo de representación interna (Tipo de dato).
• Un conjunto de operadores y de tratamientos específicos que pueden aplicarse a la variable.
Variable
El nombre de una variable debe ser único y no ambiguo.
El nombre de una variable es un identificador diferente
de cualquier palabra clave utilizada en el lenguaje o
nombre de una función externa. Generalmente, los
nombres de las variables inician con una letra y son
sucesiones de letras y cifras y el símbolo _ (guión bajo).
Declaración de una variable:

• tipo de dato: tipo de datos que se pueden almacenar


en esta variable.
• nombre_variable: nombre dado a la variable.
• valor: es el valor inicial almacenado en la variable.
Tipos

Un tipo informático es el atributo de cualquier dato (constante, variable o dato almacenado


en la memoria interna o en la memoria externa) guardado por el programa de manera
implícita o explícita. Por lo general, el tipo indica la forma física del contenido del dato.
Los tipos son características de los lenguajes de programación y se clasifican en:
• Tipos primitivos
• Tipos objeto
• Tipos Primitivos • Tipos Objeto
Tipos
Tipos
Expresiones

En programación, una expresión es la traducción en lenguaje informático de un cálculo


aritmético, lógico o de otra naturaleza. La noción de la expresión fue inspirada de la noción
de expresión matemática, por lo que su semántica es similar: la evaluación de una expresión
se hace tomando en cuenta los valores que intervienen y aplicando los operadores. En las
expresiones, los operadores tienen un orden de evaluación y prioridades.
La escritura de una expresión en un código implica la evaluación de esta al momento de la
ejecución del código. La evaluación se hace tomando en cuenta la prioridad de los
operadores.
Los operadores están definidos por la sintaxis del lenguaje, al tiempo que la parte de
semántica indica el tipo de los operandos y el tipo del resultado.
Expresiones

Ejemplo
La expresión matemática 1/2 mv2 + mhg tiene como posible árbol de evaluación el siguiente (la operación de
multiplicación es asociativa, entonces hay varias maneras de hacer el cálculo):

Esta expresión se escribe 1/2*m*v*v+m*h*g en la forma de infijo.


Expreiones

• Operadores aritméticos • Operadores de asignación


• (+) Operador de suma (También se usa para • (=) Operador de asignación simple
concatenación de cadenas)
• (+=) : op1 += op2 --> op1 = op1 + op2
• (-) Operador de resta
• (-=) : op1 -= op2 --> op1 = op1 - op2
• (*) Operador de multiplicación
• (*=) : op1 *= op2 --> op1 = op1 * op2
• (/) Operador de división
• (/=) : op1 /= op2 --> op1 = op1 / op2
• (%) Operador de resto
• (%=) : op1 %= op2 --> op1 = op1 % op2
Expresiones
• Operadores unitarios • Operadores Relacionales
• (+) Operador más unitario; indica positivo • (>): Mayor que
• (-) Operador menos unitario; niega una • (<): Menor que
expresión
• (==): Iguales
• (!=): Distintos
• (>=): Mayor o igual que
Operadores incrementales • (<=): Menor o igual que
• (++) Operador de aumento; aumenta un
valor en uno
• (--) Operador de disminución; disminuye
un valor en uno
Expresiones
• Operadores lógicos
• (&&) : [AND] devuelve true si ambos operandos son true.
• (||) : [OR] devuelve true si alguno de los operandos es true.
• (!) : [NOT] niega el operando que se le pasa.
• (^) : [XOR] devuelve false si ambos operandos son true o ambos operandos son false.
• (&) : [AND] devuelve true si ambos operandos son true, evaluándolos ambos.
• (|) : [OR] devuelve true uno de los operandos es true, evaluándolos ambos.

Estos últimos dos operadores (& y |) son útiles si el operando derecho


tiene un efecto secundario requerido: la modificación del valor de una
variable. Por ejemplo, la expresión:
( cumpleanios == true ) | ( ++edad >= 65 )
Estructura genera del
pseudocodigo
Un pseudocódigo (falso lenguaje) está formado por una serie
de palabras con un formalismo muy sencillo, que permite
describir el funcionamiento de un programa. Se usa tanto en
la fase de diseño como en la fase de análisis.
El pseudocódigo describe un algoritmo utilizando una mezcla
de frases en lenguaje común, instrucciones de programación
y palabras clave que definen las estructuras básicas. Su
objetivo es permitir que el programador se centre en los
Pseudocódigo aspectos lógicos de la solución de un problema.
El pseudocódigo utiliza expresiones matemáticas,
expresiones lógicas y la noción de variable (sencilla, arreglo,
pila, cola, conjunto, etcétera). El pseudocódigo se puede
extender para expresar tipos complejos y operaciones entre
variables y constantes de este nuevo tipo.
Estructura general del pseudocódigo

Un pseudocódigo se escribe para dar las grandes líneas del cálculo; su objetivo es compartir con los demás
programadores su visión de la resolución del problema. Hay dos principios en la escritura de un
pseudocódigo:
• Al inicio se escriben todas las variables que se usan en pseudocódigo; cada una con su nombre y su tipo.
• Las líneas del pseudocódigo que siguen son órdenes (instrucciones o estructuras) que se ejecutan de
arriba hacia abajo; primero una orden y después otra, así sucesivamente.
El pseudocódigo que se utiliza para la descripción de un algoritmo o para indicar los pasos de resolución de
un problema contiene estructuras de control, las cuales se utilizan para describir las instrucciones de los
algoritmos. Hay cuatro tipos de estructuras:
• Secuencial
• Selectiva
• Iterativa
• Anidamiento
Estructuras componentes del
Pseudocódigo
Estructura secuencial

La estructura de control secuencial tiene la siguiente forma:

Las instrucciones se ejecutan en el orden indicado por los índices: de arriba hacia abajo y una después de la otra.
Ejemplo:
Lectura de x y cálculo del cuadrado de x:
Real x, y;
Lectura (x)
y←x×x
Escritura (y)
La estructura secuencial es la base del pseudocódigo, pero no es sufi ciente para resolver todos los problemas.
Estructura selectiva

Las estructuras selectivas permiten expresar las elecciones que se hacen durante la
resolución del problema. Hay varios
tipos de estructuras selectivas:
• Selectiva simple.
• Selectiva doble (alternativa).
• Selectiva múltiple.
• Selectiva casos (múltiple).
La estructura selectiva simple es de la siguiente forma:

En esta estructura, primero se hace el cálculo de la expresión lógica; si el valor de esta


expresión es verdadero se ejecutan las instrucciones. Si el valor de la expresión lógica es
falso, no se ejecuta nada.
Estructura selectiva

La estructura selectiva alternativa es de esta forma:

Primero, se hace el cálculo de la expresión lógica. Si el valor de esta expresión es verdadero


se ejecutan las instrucciones1. Si no, se ejecutan las instrucciones2.
Estructura selectiva

La estructura selectiva múltiple es usada para anidar condiciones lógicas mutuamente


excluyentes. Su forma es la siguiente:

Primero se hace el cálculo de la expresión lógica1, si el resultado es verdadero se ejecutan


instrucciones1 y la instrucción selectiva se termina. Si no, se hace el cálculo de la expresión
lógica2; si el resultado es verdadero se ejecuten instrucciones2 y la instrucción selectiva se
termina… Si todas las expresiones lógicas son falsas, entonces se ejecutan instruccionesn.
Estructura selectiva

La estructura selectiva múltiple-casos se usa cuando un mismo valor se compara con varios
valores. Su forma es la siguiente:

La expresión puede ser una sola variable. Primero, se obtiene el valor de esta expresión y se
compara con cada valor1; si hay expresión = valor1, se ejecutan las instrucciones1… Si
ningún valor corresponde, se ejecuta la parte ‘en otro caso’, instruccionesn.
Selectiva Simple Selectiva doble (alternativa)
Estructura Verificar si un número entero es o no Verificar si un número entero es o
no divisible entre 3.
selectiva divisible entre 3.
La entrada es el número n, la salida La entrada es el número n, la salida

(Ejemplos) es un mensaje de tipo Sí o No. es un mensaje de tipo Sí o No.

Integer N Integer N
Lectura (N)
String mensaje = “NO”
resto = N%3
Lectura (N)
si resto = 0 entonces
resto = N%3
Escritura (“SÍ”)
si resto = 0 entonces
sino
mensaje = “SÍ”
Escritura (“NO”)
fin si
fin si
Escritura (mensaje)
Selectiva Múltiple
Resolver la ecuación de primer grado que tiene su forma
matemática más general:
ax + b = 0
Una proposición de pseudocódigo es la siguiente:

Real a, b
Real x

Estructura selectiva Lectura (a)


Lectura (b)

(Ejemplos) si a ≠ 0 entonces
Escritura (“Hay una única raíz”)
x = b/a
Escritura (x)
sino si b ≠ 0 entonces
Escritura (“No hay ninguna raíz”)
sino
Escritura (“Hay una infinidad de raíces”)
fin si
Selectiva casos (múltiples)
Según el valor de una variable de entrada, se escribe:
• “FALSO” si el valor de la variable es 0.
• “CIERTO” si el valor de la variable es 1.
• “INDEFINIDO” si el valor de la variable es −1.
• “ERROR” en otros casos.
El pseudocódigo es muy simple, está estructurado en dos partes:
la lectura de la variable y una estructura selectiva de tipo “caso”:

Estructura selectiva Integer x


Lectura (x)

(Ejemplos) seleccionar x
caso 0
Escritura (“FALSO”)
caso 1
Escritura (“CIERTO”)
caso −1
Escritura (“INDEFINIDO”)
en otro caso
Escritura (“ERROR”)
fin seleccionar
Estructura iterativa

Las estructuras iterativas abren la posibilidad de ejecutar un grupo de instrucciones más de una vez; es decir, sirven
para ejecutar varias veces una misma parte de un código. Hay varios tipos de estas:
• Bucle mientras
• Bucle repetir
• Bucle para (cada)
La estructura iterativa mientras (while) tiene la siguiente forma:

Primero se calcula la expresión lógica y si su valor es verdadero, se ejecutan las instrucciones y se hace un nuevo
cálculo de la expresión lógica. Entones, en total, las instrucciones se ejecutan 0 o varias veces, dependiendo del
valor de la expresión lógica.
Estructura iterativa

La estructura iterativa repetir (repeat) tiene la siguiente forma:

Se ejecutan las instrucciones y se hace el cálculo de la expresión lógica. Si su valor es falso,


se ejecutan de nuevo las instrucciones y se hace un nuevo cálculo de la expresión lógica.
En resumen, las instrucciones se ejecutan una o más veces, dependiendo del valor de la
expresión lógica.
Estructura iterativa

Una estructura iterativa que toma en cuenta la noción de variable-contador es la estructura iterativa para
(for), la cual tiene la siguiente forma:

Donde i es una variable (simple) e inicio, fin, p, son valores numéricos. Si el paso no es declarado, su valor es
1. Su ejecución es repetitiva y su funcionamiento es el siguiente:
La i recibe el valor inicio y se ejecutan las instrucciones; luego, i se incrementa el valor de p (el paso) y se
reejecutan las instrucciones, si el valor de i es menor que fin.
En resumen, las instrucciones se ejecutan 0 o varias veces, dependiendo de los valores de inicio, fin y el paso.
El valor de la variable i se puede usar al interior de las instrucciones, pero no puede ser modificado.
Bucle mientras
Buscar el entero m más pequeño, pero que sea mayor que un
número real positivo x, con x ≥ 1.
La entrada del problema es el número x y la salida es el
número entero m. La idea es incrementar en 1 una variable m
iniciada con el valor 0 hasta que la variable m sea más grande
Estructura que la variable de entrada x. El pseudocódigo es:

iterativa Real x
(Ejemplos) Integer m
Lectura (x)
m=0
mientras m<x hacer
m=m+1
fin mientras
Escritura (m)
Bucle repetir
Para un número real x entre 0 y 1 (0 <x< 1), una base de numeración b (b ≤
10) y un número entero positivo k, buscar las k primeras cifras después del
punto decimal de la representación de x en base de b.

Real x, y, p
Integer b, k, i, c
Estructura Lectura (x)
Lectura (b)
iterativa Lectura (k)
y=x
(Ejemplos) i=0
repetir
p = y*b
c = parte_entera(p)
y = parte_fraccionaria(p)
Escritura (c)
i=i+1
hasta que i ≥ k
Estructura iterativa (Ejemplos)

Bucle PARA
Obtener todas las potencias de un número a desde a1 hasta ak, donde a y k son valores de entrada; a es un número real y k es un
entero positivo.

Real a, p
Integer k, i
Lectura (a)
Lectura (k)
p=1
para cada i de 1 hasta k
p = p*a
Escritura (p)
fin para
Uso de arreglos
Arreglos

En Java, un arreglo es un grupo de variables (llamadas elementos o componentes) que contienen valores,
todos del mismo tipo. Recuerde que los tipos en Java se dividen en dos categorías: tipos primitivos y tipos de
referencia. Los arreglos son objetos, por lo que se consideran como tipos de referencia. Lo que consideramos
generalmente como un arreglo es en realidad una referencia a un objeto arreglo en memoria. Los elementos
de un arreglo pueden ser tipos primitivos o de referencia. Para hacer referencia a un elemento específico en
un arreglo, debemos especificar el nombre de la referencia al arreglo y el número de la posición del
elemento en el arreglo. El número de la posición del elemento se conoce formalmente como el índice o
subíndice del elemento.
Los valores por defecto son los siguientes:
• Para números el valor cero “0”.
• Para cadenas y letras el valor vacío.
• Para booleanos el valor false.
• Para objetos el valor null.
Arreglos unidimensionales

La sintaxis para declarar e inicializar un array será:

En caso de que queramos inicializarlos con valores propios, haremos esto:

.
Arreglos multidimensionales

En Java es posible crear arrays con más de una dimensión, pasando de la idea de lista, vector
o matriz de una sola fila a la idea de matriz de m x n elementos.
La sintaxis para declarar e inicializar un arrays multidimensionales será:
Arreglos multidimensionales

Para obtener el número de filas de la matriz, podemos recurrir a la propiedad “length” de


los arrays, de la siguiente manera:

Para el caso del número de columnas sería de la siguiente forma :


Arreglos de objetos

También es posible crear arreglos de cualquier tipo de objeto, aunque el proceso es un poco
mas complicado.

El arreglo de objetos se inicializa de modo similar a un arreglo ordinario


Funciones y procedimientos
Las funciones y los procedimientos son partes de un
programa que van a ser ejecutadas, una o varias veces, con
los valores transmitidos en los parámetros:
• Función: Recibe parámetros (uno o varios) y calcula un
valor de regreso.
• Procedimiento: Recibe parámetros, pero no regresa
Funciones y explícitamente ningún valor.
procedimientos Los parámetros son de tipos conocidos (simples o arreglos) y
pueden ser de entrada o de salida. Un parámetro de entrada
sirve para introducir los valores necesarios al cálculo y un
parámetro de salida va a cambiar su valor durante la
ejecución de la función o del procedimiento, para entregar
resultados.
Funciones y procedimientos

La declaración de un procedimiento es:

La llamada de un procedimiento es de la siguiente forma:


nombre procedimiento(parametro1, parametro2, …)
Donde los parametros1 son variables o arreglos, expresiones o constantes. Hay casos en los
que los parámetros corresponden en número y tipo con la defi nición.
Funciones y procedimientos

Una función se define como:

La función tiene que regresar o devolver un valor del mismo tipo de la función. Una llamada
de función es parecida a una llamada de procedimiento y puede ser escrita en una
expresión.
La definición de un procedimiento para la
lectura de un arreglo:

procedimiento lectura_arreglo (Integer


dimension, Integer X[])
inicio
Integer i
Procedimiento para cada i de 1 hasta dimension hacer
Lectura (X[i])
(Ejemplo) fin para
fin procedimiento

Ejemplo de dos llamadas:

lectura_arreglo(100, A)
lectura_arreglo(N, X)
La definición de una función para la suma de
los elementos de un arreglo es la siguiente:

función Integer suma_arreglo(Integer


dimension, Integer X[ ])
inicio
Integer i, ss
ss = 0
Función (Ejemplo) para cada i de 1 hasta dimension hacer
ss = ss + X[i]
fin para
regresa ss
fin funcion
Diagramas de Flujo
Diagrama de Flujo

Los diagramas de flujo son comunes en varios dominios técnicos y se usan para poner en orden
los pasos a seguir o las acciones a realizar. Su principal ventaja es que tienen la capacidad de
presentar la información con gran claridad, además de que se necesitan relativamente pocos
conocimientos previos para entender los procesos y/o el objeto del modelado.
En Lenguaje Unificado de Modelado (UML), es un diagrama de actividades que representa los
flujos de trabajo paso a paso. Un diagrama de actividades muestra el flujo de control general.
En la descripción de los algoritmos o de los programas existen varios formalismos. Pero, de una
manera sintética, las reglas comunes a todos para expresar algoritmos, según el paradigma de la
programación estructurada, son:
• Un diagrama de flujo se lee de arriba hacia abajo.
• Un diagrama se compone de bloques entre los cuales existen flechas que indican el sentido de
lectura o de ejecución.
Forma ANSI/ISO Nombre Descripción
Muestra el orden de operación de los procesos. Una línea saliendo de un símbolo
Línea de flujo (Flecha)
y apuntando a otro.

Indica el inicio o fin de un programa o subprocesos. Usualmente contienen la


Terminal palabra "Inicio" o "Fin", o alguna otra frase señalando el inicio o fin de un
proceso, como "presentar consulta" o "recibir producto".

Representa un conjunto de operaciones que cambian el valor, forma o ubicación


Proceso
de datos.

Muestra una operación condicional que determina cuál camino tomará el


Decisión programa. La operación es comunmente una pregunta de sí/no o una prueba de
verdadero/falso.

Indica el proceso de hacer entrar o salir datos, en la forma de ingresar datos o


Entrada/Salida
mostrar resultados.

Indica información adicional a cerca de un paso en el programa. Representado


Anotación (Comentario) como un rectángulo abierto con una línea (que puede ser punteada)
conectándolo con el símbolo correspondiente del diagrama de flujo.

Proceso Predefinido Muestra, por su nombre, un proceso que ha sido definido otro lugar.

Pares de conectores etiquetados reemplazan línea largas o confusas en la página


Conector de Página
del diagrama. Representados como pequeños círculos con una letra dentro.

Conector fuera de página Un conector etiqueta para usar cuando el objetivo es otra página.
Diagrama de Flujo (Ejemplo)

• Se desea obtener una tabla con las depreciaciones acumuladas y valores reales de cada
año, de un automóvil comprado en Q 1,800,000.00 en el año 1996, durante los seis años
siguientes suponiendo un valor de recuperación o rescate de Q 120,000.00. realizar el
análisis del problema, conociendo la formula de la depreciación anual D para cada año de
vida útil.
Año Acumulada Valor actual
0Q 0.00 Q 1,800,000.00
1 Q 280,000.00 Q 1,520,000.00
2 Q 560,000.00 Q 1,240,000.00
3 Q 840,000.00 Q 960,000.00
4 Q 1,120,000.00 Q 680,000.00
5 Q 1,400,000.00 Q 400,000.00
6 Q 1,680,000.00 Q 120,000.00
• Seudocódigo • Diagrama de flujo
Diagrama de
Flujo
(Ejemplo)
Inicio

C=0
S=0

Diagrama de flujo(Ejemplo) Leer Dato

Dato <> 0 No

Si

Calcular la media de una serie de números C=C+1


S = S + Dato
Media = S / C

positivos, suponiendo que los datos se leen Si e l primer dato le ido es


cero la division S / C
Imprimir
Media

desde un terminal. Un valor cero – como producirá un error si se


ejecutara el algoritmo en
una computadora, ya que
no e stá permitida en ella la
división por ce ro.
Fin

entrada – indicará que se ha alcanzado el


final de la serie de números positivos.
El primer paso a dar en el desarrollo del
algoritmo es descomponer el problema en
una serie de pasos secuenciales. Para calcular
una media se necesita sumar y contar los
valores.
Inicio

Diagrama de Flujo Suma = 2

(Ejemplo) Numero = 4

Suma = Suma +
Numero
• Suma de los números pares comprendidos
entre 2 y 100.
Numero =
Numero + 2

Si Numero =< 100

No
Escribir
Suma

Fin
• Se desea realizar el algoritmo que resuelva el siguiente problema:
Cálculo de los salarios semanales de los empleados de una empresa,
Diagrama de Flujo sabiendo que estos se calculan con base a las horas semanales
trabajadas y de acuerdo a un precio especificado por horas. Si se pasan
(Ejemplo) de cuarenta horas semanales, las horas extraordinarias se pagaran a
razón de 1.5 veces la hora ordinaria.

Inicio

Horas,
PrecioHora,
Nombre

Si Horas >= 40 No

Salario = Horas Salario = 40 *


* PrecioHora PrecioHora + 1.5
* PrecioHora *
(Horas – 40)

Escribir
Salario

Si Más datos

No

Fin
La escritura de algoritmos para realizar operaciones sencillas de conteo es
una de las primeras cosas que un ordenador puede aprender:

Diagrama de Flujo Supongamos que se proporciona una secuencia de números, tales como
5 3 0 2 4 4 0 0 2 3 6 0 2
(Ejemplo)
y se desea contar e imprimir el numero de ceros de la secuencia.

Inicio

Total = 0

Más números No

Si

Leer Escribir
Numero Total

No Numero = 0 Fin

Si

Total = Total + 1

También podría gustarte