Sie sind auf Seite 1von 13

Algoritmos y estructura de datos I Pgina 1

Karim Guevara, lvaro Fernndez Sesin 02


UNIVERSIDAD CATLICA DE SANTA MARA
PROGRAMA PROFESIONAL DE INGENIERA DE SISTEMAS



SESIN 02:

REPRESENTACIN DE ALGORITMOS



I
OBJETIVOS

Explicar los elementos de un algoritmo
Estudiar los mtodos formales para la representacin de algoritmos.
Estudiar las diferentes estructuras de control de la programacin estructurada
II
TEMAS A TRATAR
Mtodos formales para representar algoritmos
Pseudo cdigo
Estructuras de control (secuenciales, selectivas y repetitivas)
Procedimiento y funciones.


Algoritmos y estructura de datos I Pgina 2

Karim Guevara, lvaro Fernndez Sesin 02

III
MARCO TEORICO

REPRESENTACIN DE ALGORITMOS

Mtodo informal

Lenguaje natural
Ventajas: comprensible e intuitivo
Inconveniente: impreciso

Mtodos formales

Pseudos cdigo
Lenguaje natural limitado y sin ambigedad.
Es una mezcla de lenguaje de programacin y espaol (o cualquier otro idioma).
Es un conjunto pequeo y completo de sentencias que especfica los pasos de un algoritmo.

Diagramas
Diagramas de flujo u organigramas
Utiliza un conjunto de smbolos para representar cada estructura de control y mediante
lneas de flujo se indica el orden en que se realiza el flujo lgico del algoritmo
Diagramas de Nassi-Schneiderman o Diagramas N-S
Los pasos sucesivos se escriben en cajas con distintas formas segn la estructura de control
que representen

PSEUDO CDIGO

1 ESTRUCTURA GENERAL

ALGORITMO nombre
VARIABLES
declaracin de las variables utilizadas
INICIO
sentencias
FIN

2 EJEMPLO DE DECLARACIN DE VARIABLES

nombre ES TEXTO TEXTO : nombre
importe ES REAL REAL : importe
tiene_tarjeta ES BOOLEANO BOOLEANO : tiene_tarjeta
numero_cliente ES ENTERO ENTERO : numero_cliente
precios ES VECTOR DE REALES ARRAYS[1..n] : precios

Los nombres de las variables no deben contener espacios.

Algoritmos y estructura de datos I Pgina 3

Karim Guevara, lvaro Fernndez Sesin 02
3 SENTENCIAS SIMPLES

Describen lo que debe hacer el algoritmo

3.1 Asignacin: almacena un valor en una variable o constante.
Se representa con el operador:



Lectura de datos del teclado
LEER (importe)

Escritura de datos en pantalla
ESCRIBIR (importe)

Expresiones aritmticas
precio * 1.13
total + (precio + 3) * 2.5


Asignaciones
importe precio * 1.13
total total + (precio + 3) * 2.5
factorial valor * factorial
x x + 1

Expresiones lgicas (valores booleanos)
SI (factorial > 34 Y factorial < 54000) O (contador < 32) ENTONCES


4 PROGRAMACIN ESTRUCTURADA

Un programa se escribe utilizando los siguientes tipos de estructuras de control de secuencia:

Secuencial: Una accin se ejecuta una tras otra, es decir, una instruccin sigue a otra en
secuencia.
Selectiva: Se evala la condicin y en funcin del resultado se ejecuta un conjunto de
instrucciones u otro. Hay tres tipos de selectivas (simple, doble o mltiple).
Repetitiva: Contienen un bucle (conjunto de instrucciones que se repiten un nmero finito de
veces). Cada repeticin del bucle se llama iteracin. Todo bucle tiene que llevar


Identificador
declarado
anteriormente
Una variable, constante,
constante literal o frmula a
evaluar.
Deben ser del
mismo tipo
Variable Expresin
Algoritmos y estructura de datos I Pgina 4

Karim Guevara, lvaro Fernndez Sesin 02
4.1 ESTRUCTURA SECUENCIAL

Sentencia 1
Sentencia 2
...
Sentencia N

Se caracteriza porque las acciones se ejecutan una tras otra, es decir una sentencia sigue
a otra en secuencia.

EJEMPLO

Escribir un algoritmo que permita leer el sueldo de tres empleados y aplicarles un
aumento del
10, 12 y 15% respectivamente. Desplegar el resultado.

SOLUCIN
PSEUDO CDIGO
ALGORITMO Ejemplo
VARIABLES
Aum1, Aum2, Aum3, SF1,
SF2, SF3 SON REALES
INICIO
LEER (S1, S2, S3)
Aum1 S1 * 0.10
Aum2 S2 * 0.12
Aum3 S3 * 0.15
SF1 S1 + Aum1
SF2 S2 + Aum2
SF3 S3 + Aum3
ESCRIBIR (SF1, SF2, SF3)
FIN


4.2 ESTRUCTURAS SELECTIVAS

ESTRUCTURA SELECTIVA (SIMPLE)

SI condicin ENTONCES
sentencias
FINSI

Se evala la condicin, si es verdadera, se ejecutan las sentencias; en caso contrario, se
salta dicho grupo de sentencias.


ESTRUCTURA SELECTIVA (DOBLE)

SI condicin ENTONCES
sentencias 1
SINO
sentencias 2
FINSI

Se evala la condicin. Si es verdadera: se ejecutan las sentencias 1. Si es falsa: se
ejecutan las sentencias 2.

4.3 ESTRUCTURAS ITERATIVAS

Se utiliza la estructura repetitiva ( For Loop) y la iterativa ( While Loop) para utilizar
operaciones repetitivas dentro de un algoritmo.
Algoritmos y estructura de datos I Pgina 5

Karim Guevara, lvaro Fernndez Sesin 02

Una estructura repetitiva se ejecuta un nmero determinado de veces.
Una estructura iterativa se ejecuta hasta que la condicin especificada deja de ser
cierta.

LA ESTRUCTURA REPETITIVA (FOR LOOP)

Se usa cuando se conoce el nmero exacto de veces que hay que ejecutar el bucle.
El bucle lleva asociado una variable, llamada ndice, a la que se le asigna un valor inicial
y un valor final.

Este ndice se va a incrementar o decrementar en cada iteracin de bucle en un valor
constante


PARA var inicio HASTA fin HACER
sentencias
FIN_PARA
---------------------------------------------------------------------------------
PARA var inicio HASTA fin INCREMENTO valor HACER
sentencias
FIN_PARA
---------------------------------------------------------------------------------
PARA var inicio HASTA fin DECREMENTO valor HACER
sentencias
FIN_PARA


El trmino de iteracin (iteration terminal) contiene el valor de la iteracin que se est
ejecutando en ese momento; i=0 corresponde a la primera iteracin, i=1 corresponde a
la segunda iteracin y as sucesivamente hasta N-1. Si el valor que asignamos a la
variable N es el 0, la estructura no se ejecuta ya que no tiene sentido repetir 0 veces una
operacin. Esta estructura es equivalente al siguiente pseudo cdigo:

LA ESTRUCTURA ITERATIVA (WHILE LOOP)

MIENTRAS condicin HACER
sentencias
FIN_MIENTRAS

La condicin del bucle se evala al principio, antes ejecutar las sentencias del bucle,
Si es verdadera, se ejecutan las sentencias del bucle y despus se vuelve a
preguntar por la condicin.
En el momento en el que la condicin es falsa se sale del bucle.

Como la condicin es evaluada, la primera vez, antes de entrar en el bucle, puede que el
bucle se ejecute 0 veces.

Para finalizar un bucle, el valor de la condicin debe ser modificado en las sentencias
que componen el bucle.


LA ESTRUCTURA ITERATIVA (DO WHILE LOOP)

HACER
sentencias
MIENTRAS condicin


La condicin se evala siempre al final del bucle,
Algoritmos y estructura de datos I Pgina 6

Karim Guevara, lvaro Fernndez Sesin 02

si es VERDADERA, volvemos a ejecutar las acciones,
si es FALSA, se sale del bucle.

Como la condicin se evala al final, incluso aunque la primera vez sea verdadera, se
ejecuta al menos una vez por el bucle.

Para finalizar un bucle, el valor de la condicin debe ser modificado en las sentencias que
componen el bucle.


5 ARREGLOS ARRAYS

array[<dimensin>] de <tipo_de_dato>

<dimensin> es un subrango con el ndice del lmite inferior y el lmite superior. Por
ejemplo, array[5..20] de entero declarara un array de 16 elementos enteros. Pueden
aparecer varios separados por comas para declarar arrays de ms de una dimensin.

<tipo_de_dato> es el identificador de cualquier tipo de dato estndar o definido por el
usuario.

El acceso a un elemento de un array se realizar indicando su ndice entre corchetes. El
ndice ser una expresin entera.

ARRAY[0..120] DE CARACTERES
ARRAY[1..5,1..120] DE ENTERO

6 PROCEDIMIENTOS

Un procedimiento es un sub-algoritmo que realiza una tarea especfica y que puede ser
definido con 0, 1 o N parmetros. Tanto la entrada de la informacin al procedimiento como la
devolucin de resultados desde el procedimiento al programa llamador se realizarn a travs
de los parmetros.

El nombre de un procedimiento no est asociado a ninguno de los resultados que obtiene.

La invocacin a un procedimiento se realiza con una instruccin llamar_a o o bien
directamente con el nombre del procedimiento.

[llamar_a] <nombre_procedimiento>([<lista_parmetros_actuales>])

Como se puede apreciar con respecto a la lista de parmetros no existe obligatoriedad.

DECLARACIN

procedimiento <nombre_procedimiento>([<lista_parmetros_formales>])
[declaraciones locales]
inicio

fin_procedimiento

<nombre_procedimiento> debe ser un identificador vlido.

<lista_parmetros_formales> son uno o ms grupos de parmetros separados por
punto y coma. Cada grupo de argumentos se define de la siguiente forma:

{E | valor| E/S | ref} <tipo_de_dato> : <lista_de_parmetros>

Algoritmos y estructura de datos I Pgina 7

Karim Guevara, lvaro Fernndez Sesin 02
E o valor indica que el paso de parmetros se realiza por valor.
E/S o ref indica que el paso de parmetros se realiza por referencia.
<tipo_de_dato> es un tipo de dato estndar o definido previamente por
el usuario.
<lista_de_parmetros> es uno o ms identificadores vlidos separados
por comas. Para indicar que se trata de un array, se podr utilizar el
identificador seguido de corchetes (por ejemplo notas[]).

LLAMADA A PROCEDIMIENTOS

[llamar_a] <nombre_procedimiento>([<lista_parmetros_actuales>])

La lista de parmetros actuales es una o varias variables o expresiones separadas por
comas que deben coincidir en nmero, orden y tipo con la lista de parmetros formales de
la declaracin.

7 FUNCIONES

La funcin es una estructura autnoma similar a los mdulos. La diferencia radica en que la
funcin se usa para devolver un solo valor de un tipo de dato simple a su punto de referencia.
La funcin se relaciona especificando su nombre en una expresin, como si fuera una
variable ordinaria de tipo simple. Las funciones se dividen en estndares y definidas por el
usuario.
Estndar: Son funciones proporcionadas por cualquier lenguaje de programacin de alto
nivel, y se dividen en aritmticas y alfabticas.
Definidas por el usuario: son funciones que puede definirlas el programador con el
propsito de ejecutar alguna funcin especfica, y que por lo general se usan cuando se
trata de hacer algn clculo que ser requerido en varias ocasiones en la parte principal
del algoritmo.

DECLARACIN

<tipo_de_dato> :funcin <nombre_funcin>([<lista_parmetros_formales>])
[declaraciones locales]
inicio

devolver(<expresin>)
fin_funcin

<tipo_de_dato> es un tipo de dato estndar o definido previamente por el usuario. Se
trata del tipo del dato que devuelve la funcin. En el caso de que la funcin devuelva un
array, se podr utilizar el nombre del tipo de dato base seguido de corchetes (por ejemplo,
entero[]).
<nombre_funcin> debe ser un identificador vlido.
<lista_parmetros_formales> son uno o ms grupos de parmetros separados por
punto y coma. Cada grupo de argumentos se define de la siguiente forma:

{E | valor | E/S | ref} <tipo_de_dato> : <lista_de_parmetros>

E o valor indica que el paso de parmetros se realiza por valor.
E/S o ref indica que el paso de parmetros se realiza por referencia.
<tipo_de_dato> es un tipo de dato estndar o definido previamente por
el usuario.
<lista_de_parmetros> es uno o ms identificadores vlidos separados
por comas.
<expresin> es el valor de retorno de la funcin. Debe coincidir con
el tipo de dato de la declaracin. Para indicar que se trata de un
Algoritmos y estructura de datos I Pgina 8

Karim Guevara, lvaro Fernndez Sesin 02
array, se podr utilizar el identificador seguido de corchetes (por
ejemplo notas[])

LLAMADA A FUNCIONES

<nombre_funcin>([<lista_parmetros_actuales>])

La lista de parmetros actuales es una o varias variables o expresiones separadas por
comas que deben coincidir en nmero, orden y tipo con la lista de parmetros formales de
la declaracin. Al devolver un valor y no existir funciones que no devuelven valores
(funciones void de C o Java), la llamada debe hacerse siempre dentro de una expresin.


IV
(La prctica tiene una duracin de 4 horas) ACTIVIDADES


EJEMPLO 1: BSQUEDA SECUENCIAL EN UN VECTOR

Escriba un algoritmo que lea un nmero real del teclado y busque dicho nmero en un vector
de N nmeros reales, donde N es una constante a la que le daremos un valor cualquiera.
Si se encuentra el nmero, se debe escribir por pantalla el ndice del elemento que lo contiene.

Supongamos que:
1. Que el algoritmo no necesita leer el contenido del vector.
2. Ningn elemento del vector se repite.

SOLUCIN
PSEUDO CDIGO
ALGORITMO bsqueda secuencial
CONSTANTES
n VALE 100
VARIABLES
a ES ARRAY [1 .. n] DE REALES
i ES ENTERO
valor ES REAL
encontrado ES BOOLEANO
INICIO
LEER (valor)
i 1
encontrado FALSO
MIENTRAS (i<=n) Y NO(encontrado) HACER
SI a[i] = valor ENTONCES
encontrado VERDADERO
ESCRIBIR (El valor se ha encontrado en la
posicin, i)
FINSI
i i+1
FIN_MIENTRAS
FIN


EJEMPLO 2: SUELDO DE EMPLEADOS

Escriba un algoritmo en pseudo-cdigo que calcule el aumento de sueldo para un grupo de
empleados de una empresa, teniendo en cuenta el siguiente criterio:
Si el sueldo es inferior a 1000 euros: Aumento 15%
Si el sueldo es mayor o igual a 1000 euros: Aumento 12%
Imprima el nombre del trabajador, su sueldo sin aumento, su sueldo nuevo con aumento y el
total de la nmina de la empresa, considerando este nuevo aumento.
Algoritmos y estructura de datos I Pgina 9

Karim Guevara, lvaro Fernndez Sesin 02
Supongamos que la empresa tiene 100 empleados.

SOLUCIN

ALGORITMO Problema1
CONSTANTES
num_emp ES 100
VARIABLES
i, aux, aumento, total_nomina SON ENTEROS
sueldo ES ARRAY[1 .. num_emp] DE ENTEROS
nombre ES ARRAY[1 .. num_emp] DE CADENAS
INICIO
total_nomina 0
PARA i 1 HASTA num_emp HACER
ESCRIBIR (El nombre del empleado es: , nombre[i])
ESCRIBIR (El sueldo del empleado es: , sueldo[i])
SI sueldo[i] < 1000 ENTONCES
aumento 15
SINO
aumento 12
FINSI
sueldo[i] sueldo[i] + (sueldo[i] * aumento) / 100
total_nomina total_nomina + sueldo[i]
ESCRIBIR (Su nuevo sueldo es: , sueldo[i])
FIN_PARA
ESCRIBIR (El total de nomina de la empresa es: , total_nomina)
FIN


EJEMPLO 3

Disear un algoritmo que permita intercambiar el valor de 2 variables.
Nota: Implementar el procedimiento Intercambio.

SOLUCIN

ALGORITMO IntercambioVariables
VARIABLE
ENTERO : x, y

INICIO

LEER(x)
LEER(y)
Intercambio(x, y)
ESCRIBIR(x)
ESCRIBIR(y)

FIN


PROCEDIMIENTO Intercambio(E/S ENTERO: a; E/S ENTERO: b)
VARIABLES
ENTERO : aux
INICIO
aux a
a b
b aux
FIN_PROCEDIMIENTO


Algoritmos y estructura de datos I Pgina 10

Karim Guevara, lvaro Fernndez Sesin 02
EJEMPLO 4

Disear un algoritmo que permita obtener el valor absoluto de un nmero.
Nota: Implementar la funcin Absoluto.

SOLUCIN

ALGORITMO ValorAbsoluto

VARIABLE
entero : num

INICIO
LEER(num)
num Absoluto(num)
ESCRIBIR(num)
FIN

ENTERO FUNCION Absoluto(E entero: n)
inicio

SI n<0 entonces
devolver (n*-1)
SINO
devolver (n)
FINSI

FIN_FUNCION


Algoritmos y estructura de datos I Pgina 11

Karim Guevara, lvaro Fernndez Sesin 02


V
EJERCICIOS

Escriba los Pseudo-cdigos respectivamente.


1 Leer 10 nmeros e imprimirlos al cuadrado
2 Leer 10 nmeros e imprimir slo los positivos
3 Imprimir los 10 primeros nmeros mltiplos de cuatro
4 Leer 50 nmeros e imprimir cuntos son negativos, positivos e iguales a 0.
5 Leer 50 nmeros e imprimir cuntos son pares y cuantos impares.
6 Leer 10 nmeros, obtener su cubo y su cuarta ( n3 y n4)
7 Leer el nombre, edad y sexo para n personas. Calcular e imprimir cuantas son mujeres
menores, mayores y cuntos son varones menores.

8 Se desea obtener el salario semanal neto de los empleados de una empresa cuyo trabajo se
paga por horas y del modo siguiente:
Las horas inferiores o iguales a 35 horas (normales) se pagan a una tarifa determinada
que se debe introducir por teclado al igual que el nmero de horas y el nombre del
trabajador.
Las horas superiores a 35 se pagarn como extras a un costo del 1.5 de las horas
normales.
Los impuestos a deducir a los trabajadores varan en funcin de su sueldo mensual:
A. Sueldo <= 20 000 libre de impuestos.
B. Los siguientes 15 000 soles el 20% de impuestos.
C. El resto el 30% de impuestos.

9 El dueo de una empresa desea planificar las decisiones financieras que tomara en el
siguiente ao. La manera de planificarlas depende de lo siguiente:

Si actualmente su capital se encuentra con saldo negativo, pedir un prstamo bancario para
que su nuevo saldo sea de $10 000.

Si su capital tiene actualmente un saldo positivo pedir un prstamo bancario para tener un
nuevo saldo de $20 000, pero si su capital tiene actualmente un saldo superior a los $20 000 no
pedir ningn prstamo.

Posteriormente repartir su presupuesto de la siguiente manera.
$5 000 para equipo de computo
$2 000 para mobiliario
y el resto la mitad ser para la compra de insumos y la otra para otorgar incentivos
al personal.
Desplegar que cantidades se destinaran para la compra de insumos e incentivos al personal
y, en caso de que fuera necesario, a cuanto ascendera la cantidad que se pedira al banco.

10 El jurado provincial de Arequipa desea hacer un proceso de simulacin realizando 10
simulacros aleatorios para las prximas elecciones municipales
Para lo cual considera solamente 2 candidaturas, 43 distritos y en cada distrito un mximo de
40000 electores; adems no se deben considerar votos nulos/blancos/viciados.

Generando votaciones aleatorias en todos los distritos, mostrar el nmero de votos alcanzados
por cada candidato con su correspondiente porcentaje que representa en cada simulacro.

Al termino de todo el proceso de simulacin indicar las veces que gana cada candidato y el
nmero de la candidatura ganadora si lo hubo ya que se considera ganador aquella
candidatura que obtenga ms de la mitad de los votos.

Algoritmos y estructura de datos I Pgina 12

Karim Guevara, lvaro Fernndez Sesin 02

UTILIZANDO FUNCIONES Y PROCEDIMIENTOS

11 Calcular el valor de la serie donde N es un valor que se pasa como parmetro al
subprograma que hace el clculo.
1
0 0
)
1
* 1 (
n
i
n
i
n
i


12 Tomando como base los resultados obtenidos en un laboratorio de anlisis clnicos, un
medico determina si una persona tiene anemia o no, lo cual depende de su nivel de
hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de hemoglobina que tiene una
persona es menor que el rango que le corresponde, se determina su resultado como positivo
y en caso contrario como negativo. La tabla en la que el medico se basa para obtener el
resultado es la siguiente:

EDAD NIVEL HEMOGLOBINA
0 - 1 mes 13 - 26 g%
> 1 y < = 6 meses 10 - 18 g%
> 6 y < = 12 meses 11 - 15 g%
> 1 y < = 5 aos 11.5 - 15 g%
> 5 y < = 10 aos 12.6 - 15.5 g%
> 10 y < = 15 aos 13 - 15.5 g%
mujeres > 15 aos 12 - 16 g%
hombres > 15 aos 14 - 18 g%

13 Una institucin educativa estableci un programa para estimular a los alumnos con buen
rendimiento acadmico y que consiste en lo siguiente:
Si el promedio es de 9.5 o mas y el alumno es de preparatoria, entonces este podr cursar 55
unidades y se le har un 25% de descuento.
Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de preparatoria,
entonces este podr cursar 50 unidades y se le har un 10% de descuento.
Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria, este podr
cursar 50 unidades y no tendr ningn descuento.
Si el promedio es de 7 o menor, el numero de materias reprobadas es de 0 a 3 y el alumno
es de preparatoria, entonces podr cursar 45 unidades y no tendr descuento.
Si el promedio es de 7 o menor, el numero de materias reprobadas es de 4 o mas y el
alumno es de preparatoria, entonces podr cursar 40 unidades y no tendr ningn descuento.
Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podr cursar
55 unidades y se le har un 20% de descuento.
Si el promedio es menor de 9.5 y el alumno es de profesional, entonces podr cursar 55
unidades y no tendr descuento.


Obtener el total que tendr que pagar un alumno si la colegiatura para alumnos de
profesional es de $300 por cada cinco unidades y para alumnos de preparatoria es de $180
por cada cinco unidades.


VI
CUESTIONARIO
1. Qu herramientas existen para representar algoritmos?
2. Qu especificacin de algoritmos le parece la ms apropiada? Por q u?



Algoritmos y estructura de datos I Pgina 13

Karim Guevara, lvaro Fernndez Sesin 02
VII
BIBLIOGRAFIA Y REFERENCIAS
BIBLIOGRAFA BSICA
D.S.Malik, DATA STRUCTURES USIGN C++, Thomson Learning, 2003
J. Galve. ALGORITMIA, Ed.Adisson Wesley, Espaa, 2000.
Brassard, ANLISIS DE ALGORITMOS, Ed. Mc. Graw Hill., Espaa, 1999.,

BIBLIOGRAFA COMPLEMENTARIA
Wirth M., ALGORITMOS Y ESTRUCTURA DE DATOS, Ed. Addison Wesley, Mxico, 1997
Aho. DISEO Y ANLISIS DE ALGORITMOS, Ed. Addison Wesley. USA, 1999.
Deitel & Deitel COMO PROGRAMAR EN C/C++. Editorial Prentice Hall, 1995.

Das könnte Ihnen auch gefallen