Está en la página 1de 77

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

ALGORITMOS COMPUTACIONALES.
CONCEPTOS BSICOS.
ARQUITECTURA DE LA COMPUTADORA.

Unidad de control

Dispositivos
de
ENTRADA
- INPUT

Dispositivos de
SALIDA OUTPUT
Unidad Aritmtica
y Lgica. (A.L.U)

Memoria RAM
(Almacenamiento
primario)

Lnea de
comunicacin
Almacenamiento Secundario

-2-

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

COMPUTADORA
Es un dispositivo electro mecnico que dados unos datos de entrada tiene la capacidad de
almacenarlos, procesarlos, realizando operaciones aritmticas y comparaciones para obtener un
resultado de salida.
Unidad de control: Indica a los dispositivos la tarea que deben realizar y sus funciones
son:
o Leer la instruccin.
o Entenderla, es decir, codificarla, para que los dispositivos correspondientes la
ejecuten.
o Mandarla a ejecutar a los dispositivos.
Unidad Aritmtica-Lgica: Se encarga de realizar las operaciones aritmticas y
comparaciones de los datos.
RAM Memoria primaria: Memoria de acceso aleatorio (Random Access Memory). Las
celdas o localidades de memoria se componen de una direccin y un contenido.

Ejemplos:
Direccin de memoria
CONTENIDO

0000 0000

0000 0001

0000 0010

1100 0101

1110 1110

1000 1011

Dispositivos de entrada: Aquellos que permiten la introduccin de datos para ser


procesados. Ejemplos:
o Teclado.
o Mouse.
o Scanner.
o Disquetes (Flexibles, Duros, Zip, Jazz, etc)
o Lpiz ptico.

Dispositivos de salida: Aquellos que despliegan el resultado del proceso que se les da a
los datos de entrada. Ejemplos:
o Impresora.
o Monitor.
o Disquetes (Flexible, Duros, Zip, Jazz, etc)
o Plotters.

-3-

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

SISTEMAS NUMERICOS.
Sistema

Base

No de dgitos

Dgitos

Dgito mayor

Decimal
Binario
Octal
Hexadecimal

10
2
8
16

10
2
8
16

0,1,2,3,4,5,6,7,8,9
0,1
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7,8,9
A,B,C,D,E,F (en donde A = 10, B
= 11, C = 12, D = 13, E = 14, F
=15)

9
1
7
F = 15

COMPARATIVO ENTRE SISTEMAS NUMERICOS.


DECIMAL

BINARIO

OCTAL

HEXADECIMAL

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0001 0000
0001 0001
0001 0010
0001 0011
0001 0100
0001 0101
0001 0110
0001 0111
0001 1000
0001 1001
0001 1010
0001 1011
0001 1100
0001 1101
0001 1110
0001 1111
0010 0000
0010 0001
0010 0010
0010 0011
0010 0100
0010 0101
0010 0110
0010 0111
0010 1000
0010 1001
0010 1010
0010 1011
0010 1100

0000
0001
0002
0003
0004
0005
0006
0007
0010
0011
0012
0013
0014
0015
0016
0017
0020
0021
0022
0023
0024
0025
0026
0027
0030
0031
0032
0033
0034
0035
0036
0037
0040
0041
0042
0043
0044
0045
0046
0047
0050
0051
0052
0053
0054

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22
23
24
25
26
27
28
29
2A
2B
2C

-4-

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

CONVERSIONES ENTRE SISTEMAS NUMRICOS.


DE DECIMAL A BINARIO.
Una de varias metodologas que existen para la conversin entre ambos sistemas es el Mtodo de
la divisin y se aplica de la siguiente manera:
1. Se divide el nmero decimal a convertir entre 2 (por ser base dos, es decir, sistema
binario).
2. El resultado que de en el cociente se vuelve a dividir entre 2 y el residuo (que deber ser
un valor entre 0 - 1) es nuestro primer resultado que iremos anotando de derecha a
izquierda para obtener nuestro resultado final: el nmero convertido a binario.
3. Si el cociente = 0 entonces se anota el nmero que queda en el residuo y se finaliza con el
mtodo.
El
nmero
que
queda
escrito,
es
el
resultado
final;
de lo contrario, regresar al paso 2.

Ejemplo:
Convertir 55 decimal a binario.

27
Nuestro resultado de la primera divisin es: cociente=27 residuo=1
2 55
15
1
tomamos el valor del residuo, nuestro primer valor resultado.
Resultado parcial: 1
Ahora dividimos el resultado del cociente entre 2:

13
2 27
Nuestro resultado de la segunda divisin es: cociente=13 residuo=1

07
1

tomamos el valor del residuo y lo colocamos a la izquierda del resultado anterior


y seguimos dividiendo el valor que queda como cociente entre 2 hasta que el
cociente= 0.
Resultado parcial: 11
6
2 13
1

Resultado parcial: 111

-5-

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

3
2 6
0

Resultado parcial: 0111

1
2 3
1
Resultado parcial:10111

0
21
1
Resultado parcial: 110111
Como el cociente = 0 terminamos de hacer las divisiones, por lo tanto se
tiene el resultado final:
55 decimal a binario = 110111
Convertir:
9 decimal a binario.
97 decimal a binario
2
58 decimal a binario.
895 decimal a binario.
1786 decimal a binario.
6892 decimal a binario.
12569 decimal a binario.
56877 decimal a binario.

DE DECIMAL A OCTAL
La metodologa a aplicar es muy similar a la conversin entre decimal y binario, lo que cambia
ahora es que la divisin se hace entre 8 en lugar de 2. Aplique el Mtodo de la divisin y haga los
siguientes pasos:
1.
2.

3.

Se divide el nmero decimal a convertir entre 8 (por ser base ocho, es decir, sistema
octal).
El resultado que de en el cociente se vuelve a dividir entre 8 y el residuo (que deber ser
un valor entre 0 - 7) es nuestro primer resultado que iremos anotando de derecha a
izquierda para obtener nuestro resultado final: el nmero convertido a octal.
Si el cociente = 0 entonces se anota el nmero que queda en el residuo y se finaliza con el
mtodo.
El
nmero
que
queda
escrito,
es
el
resultado
final;
de lo contrario, regresar al paso 2.

-6-

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo:
Convertir 55 decimal a octal.

6
8 55

Nuestro resultado de la primera divisin es: cociente=6 residuo=7

7
tomamos el valor del residuo, nuestro primer valor resultado.
Resultado parcial: 7
Ahora dividimos el resultado del cociente entre 8:

0
8 6 Nuestro resultado de la segunda divisin es: cociente=0 residuo=6
6
y lo colocamos a la izquierda del resultado. Como el cociente = 0 terminamos
de hacer las divisiones, por lo tanto se tiene el resultado final:
55 decimal a octal = 67
Convertir:
9 decimal a octal.
97 decimal a octal.
258 decimal a octal.
895 decimal a octal.
1786 decimal a octal.
6892 decimal a octal.
12569 decimal a octal.
56877 decimal a octal.

DE DECIMAL A HEXADECIMAL.
Aplicando el Mtodo de la divisinse aplican los siguientes pasos:
1.
2.

3.

Se divide el nmero decimal a convertir entre 16 (por ser base diecisis, es decir, sistema
hexadecimal).
El resultado que de en el cociente se vuelve a dividir entre 16 y el residuo (que deber ser
un valor entre 0 - 15) es nuestro primer resultado que iremos anotando de derecha a
izquierda para obtener nuestro resultado final: el nmero convertido a octal.
NOTA: Si el resultado en el residuo es 10 escribir su equivalente a A, si es 11 =
B, si es 12 = C... hasta 15 = F.
Si el cociente = 0 entonces se anota el nmero que queda en el residuo y se finaliza con el
mtodo.
El
nmero
que
queda
escrito,
es
el
resultado
final;
de lo contrario, regresar al paso 2.

-7-

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo:
Convertir 55 decimal a hexadecimal.
3
16 55

Nuestro resultado de la primera divisin es: cociente=3 residuo=7

07

tomamos el valor del residuo, nuestro primer valor resultado.


Resultado parcial: 7
Ahora dividimos el resultado del cociente entre 16:
0
16 3

Nuestro resultado de la segunda divisin es: cociente=0 residuo=3

Como el cociente = 0 terminamos de hacer las divisiones, por lo tanto se


tiene el resultado final:
55 decimal a octal = 37

Convertir:
9 decimal a hexadecimal.
97 decimal a hexadecimal.
258 decimal a hexadecimal.
895 decimal a hexadecimal.
1786 decimal a hexadecimal.
6892 decimal a hexadecimal.
12569 decimal a hexadecimal.
56877 decimal a hexadecimal.

Las conversiones de binario, octal y hexadecimal a sistema decimal, es muy similar aplicando el
Mtodo de la casilla, la diferencia es aplicar la base de la cual se desea convertir el nmero a decimal.

-8-

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

DE BINARIO A DECIMAL.
Base
Resultado de
la base.
Nmero a
convertir

27
128

26
64

25
32

24
16

23
8

22
4

21
2

20
1

Mtodo de la casilla
1. Se colocan los dgitos del nmero binario de derecha a izquierda en los lugares
correspondientes como lo indica la tabla anterior.
2. Multiplique el resultado del valor de la base solo por aquellos lugares que tengan
el valor de 1 (uno).
3. Sume los resultados de cada una de las multiplicaciones.
4. El resultado de la sumatoria ser el nmero convertido a decimal.

Ejemplo:

Convertir 1110101 a decimal.

Colocamos cada uno de los dgitos del nmero binario en las casillas correspondientes
de derecha a izquierda, tal y como se da el nmero binario.
Base
Resultado de
la base.
Nmero a
convertir

27
128

26
64

25
32

24
16

23
8

22
4

21
2

20
1

Se multiplican los resultados de la base por su nmero correspondiente de


cada casilla y se van sumando, es decir:
64 * 1 + 32 * 1 + 16 * 1 + 8 * 0 + 4 * 1 + 2 * 0 + 1 * 1 =
64 + 32 +16 + 4 + 1 = 117.
Resultado final: 117

-9-

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

DE BINARIO A OCTAL.
Se agrupa el nmero binario en grupos de 3 dgitos empezando de derecha a izquierda. Si no se
consiguen todos los grupos de tres se aadirn los ceros que sean necesarios al ltimo grupo, o sea se agregan
ceros a la izquierda. Se colocan los dgitos de derecha a izquierda en las casillas, esto es por cada grupo por
separado. Entonces cada grupo se convierte a su equivalente octal.

Ejemplo:

Convertir 11001.

Se agrupa en 3 dgitos de derecha a izquierda:


11001
En este caso, el ltimo grupo solo tiene dos dgitos, por lo que se agrega con un cero a la izquierda.
011 001
Ahora se convierte a su equivalente en octal, cada grupo.
Base
Resultado
de la
base.
Nmero a
convertir

22
4

21
2

20
1

Base
Resultado
de la
base.
Nmero a
convertir

22
4

21
2

20
1

Se multiplican los resultados de la base por su nmero correspondiente de cada casilla y se van
sumando, es decir:

(4*0)+(2*1)+(1*1) = 3

(4*0)+(2*0)+(1*1) = 1

El resultado es:
110012 = 318

DE BINARIO A HEXADECIMAL.
Se agrupa el nmero binario en grupos de 4 dgitos empezando de derecha a izquierda. Si no se
consiguen todos los grupos de cuatro se aadirn los ceros que sean necesarios al ltimo grupo, o sea se
agregan ceros a la izquierda. Se colocan los dgitos de derecha a izquierda en las casillas, esto es por cada
grupo por separado. Entonces cada grupo se convierte a su equivalente octal.

Ejemplo:

Convertir 110101.

Se agrupa en 4 dgitos de derecha a izquierda:


1101 0 1

- 10 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

En este caso, el ltimo grupo solo tiene dos dgitos, por lo que se agrega con dos ceros a la izquierda.
0011 0101
Ahora se convierte a su equivalente en hexadecimal, cada grupo.
Base
Resultado
de la
base.
Nmero a
convertir

23
8

22
4

21
2

20
1

Base
Resultado
de la
base.
Nmero a
convertir

23
8

22
4

21
2

20
1

Se multiplican los resultados de la base por su nmero correspondiente de cada casilla y se van
sumando, es decir:

(8*0)+(4*0)+(2*1)+(1*1) = 3

(8*0)+(4*1)+(2*0)+(1*1) = 5

El resultado es:
110012 = 3516

DE OCTAL A DECIMAL.
Base
Resultado de
la base.
Nmero a
convertir

1.
2.
3.
4.

87
86
2097152 262144

85
32768

84
4096

83
512

82
64

81
8

80
1

Mtodo de la casilla
Se colocan los dgitos del nmero octal de izquierda a derecha en los lugares correspondientes como lo
indica la tabla anterior.
Multiplique el resultado del valor de la base por los respectivos dgitos del nmero octal.
Sume los resultados de cada una de las multiplicaciones.
El resultado de la sumatoria ser el nmero convertido a decimal.

Convertir 134 octal a decimal.

Colocamos cada uno de los dgitos del nmero octal en las casillas correspondientes de derecha a izquierda, tal y como se da el
nmero octal.

Base
Resultado
de la base.
Nmero a
convertir

87
86
85
2097152 262144 32768

- 11 -

84
4096

83
512

82
64

81
8

80
1

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Se multiplican los resultados de la base por su nmero correspondiente de


cada casilla y se van sumando, es decir:
64 * 1 + 8 * 3 + 1 * 4 =
64 + 24 + 4 = 92.
Resultado final: 92
DE OCTAL A BINARIO.
La conversin de octal a binario se facilita porque cada dgito octal se convierte directamente en 3
dgitos binarios equivalentes.

Ejemplo:
Convertir el nmero 75 a binario.

3
2 7

1
2 3

0
21

2
2 5

1
2 2

0
21

7 = 111

5 = 101

El resultado es 758 = 1111012

DE HEXADECIMAL A DECIMAL.
Base
Resultado
de la base.
Nmero a
convertir

167
166
165
164
268435456 16777616 1048576 65536

163
4096

162
256

161
16

160
1

Mtodo de la casilla
1. Se colocan los dgitos del nmero hexadecimal de izquierda a derecha en los lugares
correspondientes como lo indica la tabla anterior.
2. Multiplique el resultado del valor de la base por los respectivos dgitos del nmero
hexadecimal.
NOTA: Recuerde considerar los valores correspondientes a las letras A, B, C, D, E y F
como 10, 11, 12, 13, 14 y 15.
3. Sume los resultados de cada una de las multiplicaciones.

- 12 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

4.

El resultado de la sumatoria ser el nmero convertido a decimal.

Convertir 5C hexadecimal a decimal.

Ejemplo:

Colocamos cada uno de los dgitos del nmero octal en las casillas correspondientes de derecha a izquierda, tal y como se da el
nmero octal.

Base
Resultado
de la base.
Nmero a
convertir

167
166
165
164
163
268435456 16777616 1048576 65536 4096

162
256

161
16

160
1

Se multiplican los resultados de la base por su nmero correspondiente de


cada casilla y se van sumando, es decir:
16 * 5 + C * 1 =
16 * 5 + 12 * 1 =
80 + 12 = 92
Resultado final: 92

DE HEXADECIMAL A BINARIO.
La conversin de hexadecimal a binario se facilita porque cada dgito hexadecimal se convierte
directamente en 4 dgitos binarios equivalentes.

Ejemplo:
Convertir 55 hexadecimal a binario.

2
2 5

1
2 2

0
21

2
2 5

1
2 2

0
21

5 = 101

5 = 101

Como el 5 tiene solamente tres dgitos y la conversin debe de ser equivalentes a 4, entonces se le
agrega un 0 a la izquierda en cada grupo.
5 = 101
= 0101
Resultado es:

5516 = 010101012

- 13 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

DE HEXADECIMAL A OCTAL.
La conversin de hexadecimal a octal es un poco ms complicada ya que primero se tiene que
convertir el nmero hexadecimal a binario y despus de binario a octal.

Ejemplo:
Convertir 55 hexadecimal a octal.
Se debe convertir a binario

2
2 5

1
2 2

0
21

2
2 5

1
2 2

0
21

5 = 101

5 = 101

55 = 01010101 (Cada nmero es un grupo de 4 dgitos)

Ahora se hace la conversin de binario a octal (grupo de 3 dgitos).


001
1*1 = 1

010
2*1 = 2

101
(4*1) + (1*1) = 5

Resultado:
5516

1258

DE OCTAL A HEXADECIMAL.
La conversin de octal a hexadecimal es simplemente la operacin inversa de hexadecimal a octal. El
nmero octal se convierte a binario y despus de binario a hexadecimal.

Ejemplo:
Convertir 55 octal a hexadecimal.
Se debe convertir a binario

2
2 5

1
2 2

0
21

5 = 101

- 14 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

2
2 5

1
2 2

0
21

5 = 101

55 = 101101 (Cada nmero es un grupo de 3 dgitos)

Ahora se hace la conversin de binario a hexadecimal (grupo de 4 dgitos).


0010
(2*1) = 2

1101
(8*1) + (4*1) + (1*1) = 13 = D

Resultado:
558

2D16

CONVERSIN ENTRE UNIDADES DE COMPUTACIN.

Un bit (binary digit) es la unidad mnima en un sistema de cmputo. Es igual a 1 0.


Un byte es la unidad principal de almacenamiento de memoria. Es equivalente a 8 bits y
es igual a 1 carcter (nmero, letra, smbolo).

Las unidades que ms se utilizan en un sistema de cmputo y sus equivalencias son:


bit
Byte
Kilobyte
Megabyte
Gigabyte
Terabyte
Petabyte
Exabyte
Zettabyte
Yottabyte

bit
Byte (B)
Kbyte (KB)
Mbyte (MB)
Gbyte (GB)
Tbyte (TB)
Pbyte (PB)
Ebyte (EB)
Zbyte (ZB)
Ybyte (YB)

equivale a
equivale a
equivale a
equivale a
equivale a
equivale a
equivale a
equivale a
equivale a
equivale a

10
8 bits
1024 bytes
1024 Kbytes
1024 Mbytes
1024 Gbytes
1024 Tbytes
1024 Pbytes
1024 Ebytes
1024 Zbytes

Para el manejo de conversiones, se trabajar con reglas de tres simples y compuestas.


Ejemplos:

Convertir 2Kb a bytes.


x
1024bytes

despejando el valor de x
2 Kb
1Kb

- 15 -

Algoritmos Computacionales

(1024bytes ) * (2 Kb)
= 2048 bytes.
1Kb

Convertir 4Mb a Kb.


x
1024 Kb

4Mb
1Mb
x

Ing. Ricardo Alfaro Cullar.

(1024 Kb) * (4Mb)


= 4096 Kb.
1Mb

Convertir 20 bytes a Kb.

x
1Kb

20bytes 1024bytes
x

(20bytes ) * (1Kb) 20kb


=
= 0.01953 Kb
1024
1024bytes

En resumen para la conversin de unidades de cmputo se muestra a continuacin:

De mayor a menor se multiplica por 1024

KB

MB

GB

TB

De menor a mayor se divide por 1024

- 16 -

PB

EB

ZB

YB

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

INTRODUCCION A LOS ALGORITMOS Y PROGRAMAS


DIAGRAMAS DE FLUJO.
Casi de forma inconsciente, cotidianamente los humanos efectan una serie de pasos,
procedimientos o acciones que permiten alcanzar un resultado o resolver un problema.
Continuamente se siguen una serie de pasos o conjunto de acciones que permiten
alcanzar un resultado. En realidad se est aplicando un algoritmo para resolver un problema.
Un algoritmo es un conjunto de pasos, procedimientos o acciones que nos permiten
alcanzar un resultado o resolver un problema.
Muchas veces aplicamos el algoritmo de manera inadvertida inconsciente o
automticamente. Esto generalmente se produce cuando el problema que se tiene enfrente se ha
resuelto con anterioridad un gran nmero de veces.
Por otra parte, existe una gran cantidad de problemas que requieren de un anlisis
profundo y de un pensamiento flexible y estructurado para su solucin. Invariablemente surgen
ciertas preguntas:

Se puede ensear a resolver un problema?

Se puede ensear a analizarlo?

Se puede ensear a pensar...?

Lgicamente las respuestas no son fciles de obtener. No existen reglas especficas que
nos permitan resolver un problema. Sin embargo se puede ofrecer un conjunto de tcnicas y
herramientas metodolgicas que permitan flexibilizar y estructurar el razonamiento utilizado en la
resolucin de un problema. Eso provocar finalmente la construccin de algoritmos eficientes.
En la siguiente figura se muestran las etapas para la solucin de un problema:

Problema

Anlisis
profundo del
problema
Construccin
del algoritmo.

Verificacin
del
algoritmo.

- 17 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Las caractersticas que los algoritmos deben reunir son:

PRECISION: Los pasos a seguir en el algoritmo deben ser precisados

DETERMINISMO: El algoritmo, dado un conjunto de datos idnticos de entrada,

FINITUD:

claramente.

siempre deben arrojar los mismos resultados.

El algoritmo, independientemente de la complejidad del mismo,


siempre debe ser de longitud finita.

Un algoritmo consta de 3 secciones o mdulos principales:

Algoritmo

DATOS DE
ENTRADA

PROCESAMIENTO DE LOS
DATOS

IMPRESIN DE
RESULTADOS

El Mdulo I representa la operacin o accin que permite el ingreso de los datos del
problema.
El Mdulo II representa la operacin o conjunto de operaciones secuenciales, cuyo
objetivo es obtener la solucin del problema.
El Mdulo III representa una operacin o conjunto de operaciones que permiten
comunicar al exterior el o los resultados alcanzados.

- 18 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

DIAGRAMAS DE FLUJO.
Un diagrama de flujo representa la esquematizacin grfica de un algoritmo. En
realidad muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un
problema. Si el diagrama de flujo est completo y correcto, el paso del mismo a un lenguaje de
programacin es relativamente simple y directo.

La siguiente tabla presenta los smbolos usados para la construccin de un diagrama de


flujo. (estos satisfacen las recomendaciones del Internacional Standard Organization ISO y
la American Nacional Standard Institute ANSI)

SIMBOLOS UTILIZADOS EN LOS DIAGRAMAS DE FLUJO.


REPERESENTACION DEL SMBOLO

EXPLICACION DEL SIMBOLO


Smbolo utilizado para marcar el inicio y el fin
del diagrama de flujo.
Smbolo utilizado para introducir los datos de
entrada. Expresa lectura.

Smbolo utilizado para representar un proceso.


En su interior se expresan asignaciones,
operaciones aritmticas, cambios de valor de
celdas de memoria, etc.
Smbolo utilizado para representar una decisin.
En su interior se almacena una condicin, y
dependiendo del resultado de la evaluacin de
la misma se sigue por una de las ramas o
caminos alternativos. Este smbolo se utiliza en
la estructura selectiva si-entonces y si
entonces sino, y en las estructuras
repetitivas repetir y mientras.
Smbolo utilizado para representar una decisin
mltiple. En su interior se almacena un selector,
y dependiendo del valor de dicho selector se
sigue por una de las ramas o caminos
alternativos. Este smbolo se utiliza en la
estructura selectiva si mltiple.

Smbolo utilizado para representar la impresin


de un resultado. Expresa escritura.

- 19 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Smbolos utilizados para expresar la direccin


del flujo del diagrama.

Smbolo para representar conexin dentro de


una misma pgina.

Smbolo utilizado para expresar conexin entre


pginas diferentes.

Smbolo utilizado para expresar un mdulo de


un problema. En realidad expresa que para
continuar con el flujo normal del diagrama se
debe primero resolver el subproblema que
enuncia en su interior.

La siguiente figura presenta las etapas que se deben seguir en la construccin un


diagrama de flujo:
Inicio

Lectura de
Datos

NOTA: Estas fases se presentan en


la mayora de los diagramas de flujo,
aunque a veces en orden diferente o
repitiendo alguna (s) de ellas. Tambin se
realizan tomas de decisiones y de
repeticin.

Procesamiento de
los Datos

Impresin de
los resultados

Fin

- 20 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

REGLAS PARA LA CONSTRUCCION DE DIAGRAMAS DE


FLUJO.
Se debe recordar que un diagrama de flujo debe ilustrar grficamente los pasos o
procesos a seguir para alcanzar la solucin de un problema. Los smbolos presentados, colocados
adecuadamente, permiten crear una estructura grfica flexible que ilustra los pasos a seguir para
alcanzar un resultado especfico.
El diagrama de flujo facilitar posteriormente la escritura del programa en algn lenguaje
de programacin.
REGLAS:
1. Todo diagrama de flujo debe tener un inicio y un fin.
Inicio

Fin

2. Las lneas utilizadas para indicar la direccin del flujo del diagrama deben ser
rectas, verticales y horizontales.

No deben ser
inclinadas

Ni tampoco debern
cruzarse.

- 21 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

3. Todas las lneas utilizadas para indicar la direccin del flujo del diagrama deben
estar conectadas. La conexin puede ser a un smbolo que exprese lectura,
proceso, decisin, impresin, conexin o fin de programa.

4. Todas las lneas utilizadas para indicar la direccin del flujo del diagrama deben
estar conectadas. La conexin puede ser a un smbolo que exprese lectura,
proceso, decisin, impresin, conexin o fin de diagrama.

5. El diagrama de flujo debe ser construido de arriba hacia abajo (top-down) y de


izquierda a derecha (right to left).
6. La notacin utilizada en el diagrama de flujo debe ser independiente del lenguaje
de programacin. La solucin presentada en el diagrama puede escribirse
posteriormente y fcilmente en diferentes lenguajes de programacin.
7. Es conveniente cuando se realiza una tarea compleja, poner comentarios que
expresen o ayuden a entender lo que se hizo.
8. Si el diagrama de flujo requiriera ms de una hoja para su construccin, se debe
utilizar los conectores adecuados y enumerar las pginas convenientemente.
9. No puede llegar ms de una lnea a un smbolo.

VLIDO

NO VLIDO

- 22 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

VLIDO

NO VLIDO

CONCEPTOS FUNDAMENTALES.
TIPOS DE DATOS
Los datos a procesar por una computadora pueden clasificarse en:

SIMPLES.

ESTRUCTURADOS.

DATOS SIMPLES.

Ocupen slo una casilla de memoria.

Dentro de este grupo se encuentran:


ENTEROS.
REALES.
CARACTERES.
BOLANOS.
ENUMERADOS.
SUBRANGO.

DATOS ESTRUCTURADOS.

Ocupan un grupo de casillas de memoria.

- 23 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Tienen varios componentes.

Cada uno de los componentes puede ser a su vez un dato simple y estructurado.

Dentro de este grupo se encuentran:


ARREGLOS.
CADENAS DE CARACTERES.
REGISTROS.
CONJUNTOS.

DATOS NUMERICOS.
Se encuentran los datos numricos ENTEROS y REALES.
Los ENTEROS son nmeros que pueden estar precedidos del
signo + o -, y que no tienen parte decimal.

Ejemplos:

128

1528 -714

8530 16325 -14830.

Los REALES son nmeros que pueden estar precedidos del signo
+ o -, y que tienen una parte decimal.

Ejemplos:

7.5

128.0 -37.865

129.7 1600.50.

DATOS ALFANUMERICOS.
En este tipo de datos se encuentran los de tipo CARCTER
(simple) y CADENA DE CARACTERES (estructurado).
Son datos cuyo contenido pueden ser letras del abecedario
(a,b,c,d,...,x,y,z), dgitos (0,1,2,3,...,8,9) o smbolos
especiales (#,%,$,*,/,!...) y que van encerrados entre
comillas o dobles comillas, dependiendo del lenguaje de
programacin.
Aunque se usan nmeros (caracteres), no pueden realizarse
operaciones aritmticas.
Un dato tipo CARCTER contiene un solo carcter: a , B , 9,
# , f , ...

- 24 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.


Un dato tipo CADENA DE CARACTERES contiene un conjunto
de caracteres. Normalmente se aceptan una longitud mxima de
255: abcde, $9#7!, Ricardo Alfaro, Lagdi ,
456,768.

DATOS LGICOS.
Dentro de este tipo de datos se encuentran los bolanos. Son
datos que solo pueden tomar 2 valores: true (verdadero) o
false (falso).

DATOS ENUMERADOS.
Es un conjunto de datos que conservan un orden, tal que cada
elemento tiene un sucesor y un predecesor, excepto el primero
que no tiene predecesor y el ltimo que no tiene sucesor.
Ejemplos: AUTO=(BMW, Audi, Mercedes Benz, Chevrolet).
Estaciones =(Primavera, Verano, Otoo, Invierno).
Tiendas=(Liverpool, FbricasFrancia, Palacio).
Equipos=(UNAM,Guadalajara, Atlas, Amrica).

DATOS SUBRANGO.
Se define de un tipo de dato ordinal, especificando dos
constantes de ese tipo, una como lmite inferior y otra como
lmite superior.
Ejemplos:

1..10

consta de 1,2,3,4,5,6,7,8,9 y 10.

20 .. 25

consta de 20,21,22,23,24 y 25.

a .. m

consta de a,b,c,d,e,f,g,h,i,j,k,l y m.

100 .. 150

consta de 100,101,102 ... 149 y 150.

- 25 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

IDENTIFICADORES, CONSTANTES Y VARIABLES.


Los datos a procesar por una computadora, ya sean simples o estructurados, deben
almacenarse en casillas o celdas de memoria para su posterior utilizacin. Estas casillas o celdas de
memoria (constantes o variables) tienen un nombre que permite su identificacin.
Se llamar identificador al nombre que se le da a las casillas de memoria. Un
identificador se forma de acuerdo a ciertas reglas:
1. El primer carcter que forma un identificador debe ser una letra: a,b,c,d,,...z.
2. Los dems caracteres pueden ser letras (a,b,c,...z.), dgitos (0,1,2,...,9) o el guin
bajo ( _ ).
3. La longitud del identificador vara de acuerdo al lenguaje de programacin
utilizado se recomienda entre 7 y 15 caracteres.

MEMORIA

SUMA

AUXILIAR

ACUM

X7

CONSTANTES.
Las constantes son datos que no cambian durante la ejecucin de un programa. Para
nombrar las constantes se usan los identificadores.
Existen constantes enteras, reales, carcter, cadena de caracteres, booleanas, etc.
Ejemplos:

NUM

RESULTADO

NUMREAL

Resultado

7.57

Estas constantes no cambian durante la ejecucin de un programa. Es importante que los


nombres de las constantes sean representativos de la funcin que tienen en el programa.

- 26 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

VARIABLES.
Las variables son objetos que pueden cambiar su valor durante la ejecucin de un
programa. Para nombrarlas se utilizan identificadores.
Al igual que las constantes, pueden existir tipos de variables como tipos de datos.

SUELDO

SUMA

0.0

0.0

1.0

Estas Variables cambiarn su valor durante la ejecucin del programa. Los nombres de las
variables deben ser representativos de la funcin que cumplen en un programa.

OPERACIONES ARITMETICAS.
Para realizar operaciones aritmticas se requieren de operadores aritmticos. Estos
operadores permiten realizar operaciones aritmticas entre operandos: nmeros constantes o
variables. El resultado de una operacin aritmtica ser un nmero.
Los operadores aritmticos son los siguientes:

Operador Aritmtico

Operacin

Ejemplo

Resultado

Potencia

4^3 (4*4*4)

64

Multiplicacin

8*7

56

Divisin

15/4

3.75

Suma

5+8

13

Resta

65 35

30

Mdulo (residuo)

15 mod 2

Divisin entera

17 div 3

mod
div

- 27 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Al evaluar expresiones que contienen operadores aritmticos se debe respetar la jerarqua


en el orden de aplicacin. Es decir, si se tiene en una expresin ms de un operador, se debe
aplicar primero el operador de mayor jerarqua, se resuelve esa operacin, y as sucesivamente. En
la siguiente tabla se presenta la jerarqua de los operadores.

Operador

Jerarqua

Mayor

*, /, mod, div

Operacin
Potencia
Multiplicacin,
divisin entera.

+, -

Menor

divisin,

mdulo,

Suma, resta

Las reglas para resolver una expresin aritmtica son las siguientes:
1. Si una expresin contiene subexpresiones entre parntesis, stas se evalan
primero; respetando la jerarqua de los operadores aritmticos en esta
subexpresin. Si las subexpresiones se encuentran anidadas por parntesis,
primero se evalan las subexpresiones que se encuentran en el ltimo nivel de
anidamiento.
2. Los operadores aritmticos se aplican teniendo en cuenta la jerarqua y de
izquierda a derecha.
Ejemplos:

7+56*2
Primero se evala la multiplicacin por ser de mayor jerarqua.

7 + 5 12
Como la suma y la resta tienen la misma jerarqua la evaluacin se realiza
de izquierda a derecha, es decir, primero la suma y en el siguiente paso la
resta.

12 12 = 0.

9+7*85/5
Por tener la misma jerarqua la multiplicacin y la divisin, se evala de
izquierda a derecha, primero la multiplicacin y posteriormente la divisin.

9 + 56 1
Por tener la misma jerarqua la suma y la resta se evalan de izquierda a
derecha, es decir, primero la suma y despus la resta.

65 1 = 64

7 * 5 ^ 3 /4 div 3

- 28 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Primero se evala la potencia.

7 * 125 / 4 div 3
Despus los tres operandos que restan tienen la misma jerarqua, por lo
que se hace la evaluacin de izquierda a derecha, primero la multiplicacin,
despus la divisin y por ltimo la divisin entera.

875 / 4 div 3
218.75 div 3 = 72

2 * 3 * (4 mod 3 ^2) div 2 * 3 7


Por haber parntesis, primero se evalan las expresiones dentro del mismo.
Y ya en el interior del parntesis se observa que hay un operando de
potencia y un operando mod, por tanto, se evala primero la potencia y al
final el mod.

2 * 3 * (4 mod 9) div 2 * 3 7
2 * 3 * ( 4 ) div 2 * 3 7
Despus se tienen tres operandos de multiplicacin y uno de divisin
entera, por lo que se hace la evaluacin de izquierda a derecha por tener la
misma jerarqua ambos.

6 * 4 div 2 * 3 7
24 div 2 * 3 7
12 * 3 7
36 7
Y por ltimo la resta.

36 7 = 29

EXPRESIONES LOGICAS.
Las expresiones lgicas o booleanas, llamadas as en honor al matemtico George
Boole, estn constituidas por nmeros, constantes o variables y operadores lgicos relacionales.
El valor que toman es el de verdadero/true o falso/false.
Se utilizan frecuentemente en las estructuras selectivas (dependiendo del resultado de la
evaluacin se toma por un determinado camino alternativo) y en las estructuras repetitivas
(dependiendo del resultado de la evaluacin se contina con el ciclo o se interrumpe el mismo).

- 29 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

OPERADORES RELACIONALES.
Los operadores relacionales son operadores que pemiten comparar dos operandos. Los
operandos pueden ser nmeros, alfanumricos, constantes o variables, y stas a su vez pueden ser
del tipo entero, real, carcter o cadena de caracteres.
El resultado de una expresin con operadores relacionales es verdadera o falso.
OPERADOR

OPERACIN

EJEMPLO

RESULTADO.

Igual que

hola = lola

Falso

<>

Diferente a

a<>b

Verdadero

<

Menor que

7 < 15

Verdadero

>

Mayor que

22 > 11

Verdadero

<=

Menor o igual que

25 < = 22

Falso

>=

Mayor o igual que

35 > = 20

Verdadero

Ejemplos:

A = 5, B = 16
(A ^2 ) > ( B * 2 )

= (5^2) > (16 * 2)


= 25 > 32
= falso

x = 6, B = 7.8
(x * 5 + B^3 / 4) < = (x ^3 div B)

(6 * 5 + 7.8^3 / 4) < = (6^3 div 7.8)


(6 * 5 + 474.552 / 4) < = (216 div 7.8)
(30 + 474.552 / 4) < = (27)
(30 + 118.638) < = 27
148.638 < = 27
falso
NOTA: Cuando se utilizan los operadores de relacin con operandos lgicos,
falso es menor que verdadero.

- 30 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

OPERADORES LOGICOS.
Los operadores lgicos son operadores que permiten formular condiciones complejas a
partir de condiciones simples. Los operadores lgicos son de conjuncin and y, disyuncin
or o y negacin not no.

OPERADOR LOGICO

JERARQUIA

NO NOT

Mayor

EXPRESION LOGICA

SIGNIFICADO

No p

No p (~ p)

No es cierto que p
Es falso que p
P yq

Y AND

P^q
p sin embargo q

O OR

Menor

Poq

PVq
o p o q o ambos
Mnimo p o q

TABLA DE VERDAD DE LOS OPERADORES LOGICOS.


p

~p

~q

p Vq

p^ q

V Verdadero

V Verdadero

V Verdadero

F falso

F - falso

V Verdadero

F falso

F falso

En la tabla de verdad se tienen dos enunciados lgicos: p y q, en donde ambos


enunciados dan como resultado un valor booleano: verdadero o falso. Y si lee de acuerdo a la
columna correspondiente a sus operadores lgicos, es decir, en la columna ~ p, el valor que se
tiene original de p es verdadero, como tiene el smbolo de negacin ~ y como solo puede tomar
dos valores, el resultado se interpreta como negando p que es igual a falso.
Se puede observar que para los valores resultado de las columnas de AND (^) y de OR
( V ) se obtienen haciendo el anlisis de ambos enunciados p y q, es decir, para que un valor
resultado de dos enunciados OR ( V ) de V verdadero con uno de los dos enunciados que sea
verdadero toda la expresin resultado da V verdadero. Para el caso del AND (^) ambos
enunciados debern ser V verdadero para que la expresin resultado de V verdadero. Para el
resultado F falso se deber hacer un anlisis similar.

- 31 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

TABLA RESUMEN DE JERARQUIA DE LOS OPERADORES.


OPERADORES

JERARQUIA

( ) parntesis

Mayor

^ - exponenciacin o potencia
*, /, div, mod
+, = , < >, < =, > =
NOT NO - ~
AND Y - ^
OR O - V

Menor

Recordando que operadores de igual jerarqua se aplica la regla de evaluar la expresin


de izquierda a derecha, de lo contrario se aplica el operador que tenga mayor jerarqua, en
donde los parntesis tendrn la mayor jerarqua hasta el operador lgico OR O V con menor
jerarqua.
Ejemplos:
NOT (15>=7^2) OR (43 8 * 2div4 < > 3 * 2 div 2)

NOT (15>= 49) OR (43 16 div 4 < > 6 div 2)


NOT (falso) OR (43 4 < > 3)
Verdadero OR (39 < > 3)
Verdadero OR (verdadero)
Verdadero OR verdadero= (observe la tabla de verdad anterior para obtener el resultado)
Verdadero.
(15>=7*3^2 AND 8>3 AND 15 > 6) OR NOT(7*3<5+12*2div3^2)

(15>=7*9AND 8>3 AND 15 >6) OR NOT (21<5+12*2div9)


(15>=63 AND 8>3 AND 15>6) OR NOT (21<5+24div9)
(falso AND verdadero AND verdadero) OR NOT (21<5+2)
(falso AND verdadero) OR NOT (21<7)
(falso) OR NOT (falso)

- 32 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

falso OR verdadero = (se observa en la tabla de verdad para obtener el resultado)


verdadero.

NOT ((7*3div2*4) > (15/2*6>=15*2/17=15))

NOT((21 div 2*4) > (7.5*6 >= 30/17=15))


NOT((10*4) > (45.0 >= 1.7647=15))
NOT(40 > (verdadero = 15)) = (no se pueden realizar comparaciones entre un
valor lgico y un numrico, utilizando un operador relacional, por tanto el resultado se
expresa como Error)
= Error.

BLOQUES DE ASIGNACION
Un bloque de asignacin se utiliza para asignar valores o expresiones a una variable. La
asignacin es una operacin destructiva. Esto significa que si la variable tena asignado un valor
anteriormente, ste se destruye, conservando ahora el nuevo valor.
El formato de la asignacin es el siguiente:

Variable = expresin / valor.


Ejemplos:

suma = 0

I=I+1

J=5*7/6

M = 89.34

Acumula = suma * 5

Band = (8 > 5) AND (15 < 2^3)

FUNCIONES INTERNAS
Adems de las operaciones bsicas ya estudiadas, existe otro conjunto de funciones
predefinidas que normalmente incorporan la mayora de los lenguajes. Para utilizar cualquiera de
estas funciones, simplemente se da el nombre de la funcin, seguida por una constante, variable o
expresin denominada argumento encerrado entre parntesis.

- 33 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

A continuacin se muestran las funciones ms usuales:


FUNCION

DESCRIPCION

TIPO DE ARGUMENTO

TIPO DE RESULTADO

Abs (x)

Valor absoluto de x

Entero o real

Igual que el argumento

Arctan (x)

Arco tangente de x

Entero o real

Real

Cos (x)

Coseno de x (radianes)

Entero o real

Real

Ent (x)

Parte entera de x

Entero o real

Entero

Exp (x)

Exponencial de x

Entero o real

Real

Ln (x)

Logaritmo natural x

Entero o real positivo

Real

Log 10 (x)

Logaritmo decimal de x

Entero o real positivo

Real

Sqr (x)

Raz cuadrada x

Entero o real positivo

Real

Redo (x)

X se redondea al entero ms

Real

Entero

Sin (x)

Seno de x (radianes)

Real

Real

Tan (x)

Tangente de x (radianes)

Entero o real

Real

Trunc (x)

X se trunca a la parte entera

Real

Entero

(radianes)

prximo.

Ejemplos:
Redo (5.5)

Redo (-3.5) =

-4

Trunc (6.7) =

Trunc (-3.5) =

-3

Sqr (25)

Abs (-12)

12

Abs (6.5)

6.5

IDENTIFICADORES Y PALABRAS RESERVADAS.


IDENTIFICADORES: Son los nombres que se dan a los programas, constantes,
variables, subprogramas y otros objetos o entidades de dgitos, pero deben comenzar por una letra.
Ello permitira elegir identificadores significativos que sugieran lo que representan.
Estos identificadores se construyen de acuerdo a las reglas de sintaxis del lenguaje
especfico.

- 34 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

PALABRAS RESERVADAS: (KeyWords) Son palabras clave y propias de un lenguaje


de programacin que constituyen la base de las sentencias, funciones, expresiones y ordenes.
La regla aritmtica que se seguir para construir un identificador es:

Primer carcter deber ser una letra (A a la Z).

Segundo y posteriores caracteres (letras y dgitos) admitiendo el subrayado.

Longitud de identificadores (nmero de caracteres) ilimitado.

Ejemplos:

Vlidos

Invlidos

Num1

1AB

Nombre _ apellido

1num5 (por iniciar con un nmero)

AB456

4Nombre-45*

(por iniciar con un nmero)

Alfa
Profesin
Edad _ meses
En el lenguaje algortmico se utilizarn tambin palabras reservadas, pero con nombres
en espaol, por ejemplo:
Inicio, fin, si entonces, mientras, repetir,...

OPERACIONES CON CADENAS.


El procesamiento de cadenas de caracteres (string) es una tarea muy importante en el
diseo de algoritmos y programas debido esencialmente a la gran cantidad de operaciones que se
realizan con informaciones alfanumricas.
Las operaciones bsicas con cadenas son:

Comparaciones.

Concatenacin (unir palabras).

Subcadenas. (extraer caracteres de una cadena)

Longitud.

- 35 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Comparaciones.
Las operaciones de comparar cadenas de caracteres consisten en comparar las cadenas
carcter a carcter, comenzando por el primer carcter de la izquierda de igual forma que si
consultramos un diccionario.
El orden de la comparacin viene dado por el cdigo de la computadora ASCII o
EBCDIC.
Ejemplos:
Jos

<

Julio

Verdadero.

Luis Felipe

>

Luis Jos

verdadero.

135

>

445

falso.

Concatenacin de cadenas.
La operacin de concatenar cadenas consiste en unir dos o ms cadenas en una sola. La
operacin de concatenacin se indica con un operador de concatenacin: +, & o //.
Ejemplos:
Cdigo de empleado: & A8953

resultado

Cdigo de empleado: A8953

Cdigo & A85

resultado

Cdigo A85

Jacqueline & Hernndez & Basurto

resultado

Jacqueline Hernndez Basurto.

Subcadena.
Una Subcadena es una cadena que forma parte de una cadena mayor.
Ejemplo:
una sola tarjeta

es una Subcadena de Un mundo de beneficios en una sola tarjeta

200 mil dlares

es una Subcadena de Hasta 250 mil dlares en Accidentes.

tu ser

es una Subcadena de La realizacin es crecimiento continua de tu ser.

Las subcadenas se pueden extraer de las cadenas principales mediante una funcin de
cadena denominada Subcadena y cuyo formato es:
Subcadena (s1, s2, s3)
Donde

- 36 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

S1 es la cadena de la cual debe extraerse una parte de la Subcadena.


S2 es la posicin inicial del carcter donde comienza la Subcadena que se desea extraer.
S3 es la longitud total de la Subcadena a extraer (recordando que la longitud de una

cadena es el nmero de caracteres que contiene)

Si s3 no existe, se considera como resultado de Subcadena todos los caracteres a partir


del carcter s2 y hasta el final de la cadena.
Ejemplos:
Subcadena (Hello Mr. Marshall, 6, 3)

resultado

Mr.

Aqu se indica que se empieza a partir del carcter sexto, en donde H es el primer
carcter, e es el segundo carcter y as sucesivamente hasta llegar al espacio en blanco que es
el quinto carcter y la M el sexto. El tres indica que se debern extraer tres caracteres a partir de
la M, es decir, Mr..
resultado

iona.

Subcadena (Certifcate para trascender, 13,4) resultado

para

Subcadena (Nacional Geographic, 4, 4)

Longitud.
La longitud de una cadena, como ya se ha comentado, es el nmero de caracteres
encerrados entre los separadores ( ), incluyendo espacios y signos de puntuacin.
La funcin que permite calcular la longitud de una cadena es longitud y su formato es:
Longitud (s)
Donde s es una cadena o expresin de cadena.
Ejemplos:
M=Hola Mortimer

longitud (M) = 13.

L= Refrescate en cada momento

longitud (L) = 20.

Comentarios.
Los algoritmos, deben incluir comentarios aclaratorios de las partes ms importantes.
Estos comentarios deben ser concretos y encerrados entre llaves ({ }), o bien por dos diagonales
(/ / ), o tambin por diagonal asterisco ( /* */ ).
Los comentarios son parte significativa de un algoritmo y se deben incluir cuantos sean
necesarios para conseguir la mayor legibilidad posible del mismo.

- 37 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

CONSTRUCCION DE DIAGRAMAS DE FLUJO.


Hasta ahora se tienen los conceptos que nos permiten construir algunos diagramas de
flujo, as como preparados para desarrollar habilidad y capacidad de razonamiento estructurada y
flexible que le permita obtener la solucin a los problemas planteados.
Durante la construccin de diagramas de flujo se le ir llevando de un nivel bsico a un
nivel intermedio, agregando posteriormente su equivalente en pseudocdigo y en programacin en
C.
Ejemplo 1.
Construya un diagrama de flujo tal, que dados los datos A, B, C y D que
representan nmeros enteros, escriba los mismos en orden inverso.

1. Construccin del algoritmo

Inicio

Datos de
entrada....................................

A, B, C y D

Proceso
clculo....................................

Ordenarlos en
forma inversa

Datos de salida o de
impresin...............

D, C, B, A.

A,B,C,D

D,C,B,A

2. Diagrama de flujo
Fin

Ejemplo 2.
Construya un diagrama de flujo tal, que dados los datos enteros A y B, escriba el
resultado de la siguiente expresin:
(A+B)2 / 3

Inicio

1. Construccin del algoritmo


A,B

Datos de
entrada....................................

A, B

Proceso
clculo....................................

Res =
(A+B)2 / 3

Datos de salida o de
impresin...............

Res

Res = (A+B)2 / 3

Res

2. Diagrama de flujo
Fin

- 38 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo 3.
Dada la matrcula y 5 calificaciones de un alumno obtenidas a lo largo del
semestre; construya un diagrama de flujo que imprima la matrcula del alumno y
el promedio de sus calificaciones.
Inicio

1. Construccin del algoritmo


Datos de
entrada....................................

Matrcula (entero)
5 calificaciones (reales)

Proceso
clculo....................................

Promedio =
(cal1+cal2+cal3+cal4+cal5)/5

Datos de salida o de
impresin...............

Matrcula, Promedio

Mat,
cal1,cal2,cal3,
cal4,cal5

Prom = (cal1+cal2+cal3+cal4+cal5) / 5

Mat, Prom

2. Diagrama de flujo

Fin

Ejercicio 1
Escriba un algoritmo y su diagrama de flujo tal que permita calcular e imprimir
el cuadrado y el cubo de un nmero entero positivo NUM.

Ejercicio 2
Construya el algoritmo y su diagrama de flujo tal, que dados como datos la base
y la altura de un rectngulo, calcule el permetro y la superficie del mismo.

Permetro = 2*(base*+altura).

Superficie = base * altura.

Ejercicio 3
Construya el algoritmo y su diagrama de flujo tal que deduzca el salario neto de
un trabajador a partir de la lectura del nombre, horas trabajadas, precio de la
hora, y sabiendo que los impuestos aplicados son el 10% sobre el salario bruto.

- 39 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

PSEUDOCODIGO.
Los programas deben ser escritos en un lenguaje que pueda entender la computadora.
Por tanto, describir los algoritmos en un lenguaje que se parezca ms al lenguaje utilizado para
escribir programas de computadora, es natural, es decir un lenguaje algortmico de
pseudocdigo, una imitacin del cdigo de las computadoras.
No existe un conjunto de reglas que definan con precisin lo que es y lo que no es un
pseudocdigo. Vara de un programador a otro.
El Pseudocdigo es una mezcla de lenguaje natural y smbolos, trminos y otras
caractersticas comnmente utilizadas en uno o ms lenguajes de alto nivel.
La siguiente lista es una serie de palabras claves utilizadas de modo general en lenguajes
de programacin:
Espaol

Ingles

Inicio

Begin

fin

End

leer

Read / input

escribir

Write / print

Si - entonces

If then

desde

For

mientras

While

repetir

Repeat

Parada, fin

Sotp, end

Hasta, que

Until

Para la escritura de pseudocdigos se deber usar la indentacin sangras o mrgenes


en los bloques de instrucciones.
Ejemplo:
Sin indentacin o sin sangra
Si x<5
Entonces hacer N * 5
Sino hacer N/5
Fin_si

- 40 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Con indentacin o con sangra


Si x<5
Entonces hacer N*5
Sino hacer N/5
Fin_si

TABLA REPRESENTACION PSEUDOCODIGO


REPRESENTACION
SIMBOLO

DEL

INSTRUCCIN
Leer ...

EJEMPLO

A,B

Leer (A,B);

Mat, cal

Leer(Mat,cal);
Hacer ...

A=A+SUE
Asignar A=A+SUE
SUE=SUE*1.15+20
0
Asignar SUE=SUE*1.15+20

Imprimir / escribir

A,B

Imprimir (A,B);

Sueldo= , SUE

Imprimir (Sueldo = , SUE);

Ejemplo 1.
Defina el pseudocodigo tal, que dados los datos A,B,C y D, que representan
nmero enteros, escriba los mismos en orden inverso.

Pseudocdigo
Inicio
Leer (A,B,C,D);

- 41 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Imprimir (D,C,B,A);
Fin
Ejemplo 2.
Defina el pseudocdigo tal que dados los datos enteros A y B, escriba el
resultado de la siguiente expresin: (A+B)^2 / 3

Pseudocdigo
Inicio
Leer (A,B);
Asignar Res = (A+B)^2 / 3
Imprimir (Res);
Fin

Ejemplo 3.
Defina un pseudocdigo tal que dada la matrcula y 5 calificaciones de un
alumno, imprima la matrcula y el promedio de dichas calificaciones.

Pseudocdigo
Inicio
Leer (Mat, cal1, cal2, cal3, cal4, cal5);
Asignar Prom = (cal1+cal2+cal3+cal4+cal5) / 5;
Imprimir (Mat, Prom);
Fin
*****************************EJERCICIOS******************************
Ejercicio 1.
Defina un pseudocdigo tal que permita calcular e imprimir el cuadrado y el
cubo de un nmero entero positivo NUM.
Ejercicio 2.
Defina un pseudocdigo tal que dada la base y la altura de un rectngulo, calcule
el permetro y la superficie del mismo.
Ejercicio 3.

- 42 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Defina un pseudocdigo tal que deduzca el salario neto de un trabajador a partir


de la lectura del nombre, horas trabajadas, precio de la hora y sabiendo que los
impuestos aplicados son del 10% sobre el salario bruto.
Ejercicio 4.
Defina un algoritmo, diagrama de flujo y pseudocdigo tal que dados como
datos dos nmeros reales, calcule la suma, resta y multiplicacin de dichos
nmeros.
Ejercicio 5.
Defina un algoritmo, diagrama de flujo y pseudocdigo tales que, dado el costo
de un artculo vendido y la cantidad de dinero entregada por el cliente, calcule e
imprima el cambio que debe entregrsele al mismo.
Ejercicio 6.
Defina un algoritmo, diagrama de flujo y pseudocdigo tal que, dado el nombre
de un dinosaurio, su peso y su longitud, expresados estos en toneladas y pies
respectivamente, imprima el nombre del dinosaurio, su peso expresado en
kilogramos y su longitud expresada en metros.
1 tonelada = 1000 kg.

1 pie = 0.3047 mts

Ejercicio 7.
Defina un algoritmo, diagrama de flujo y pseudocdigo que resuelva el problema
que se tienen en las gasolineras, en donde los surtidores de la misma registran
lo que surten en galones, pero el precio de la gasolina esta fijado en litros. Se
debe calcular e imprimir lo que hay que cobrarle al cliente.
Galn = 3.785 lts

Precio litro = $ 6.025

Ejercicio 8.
Defina un algoritmo, diagrama de flujo y pseudocdigo en donde se plantea que
en una casa de cambio se necesita construir un programa tal que dado como
dato una entidad expresada en dlares, convierta esa cantidad a pesos.
1 dlar = $ 9.75
Ejercicio 9.
Defina un algoritmo, diagrama de flujo y pseudocdigo tal que, dado el radio y la
altura de un cilindro, calcule e imprima el rea y su volmen.
Volmen = PI*r^2*h

Area = 2*PI*r*h.

- 43 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejercicio 10.
Una persona compr una estancia en un pas sudamericano. La extensin de la
estancia est especificada en acres. Construya el algoritmo, diagrama de flujo y
pseudocdigo, tal que dado como dato la extensin del campo en acres,
calcule e imprima la extensin del mismo en hectreas.
1 acre = 4047 m2

1 hectrea = 10000 m2

Ejercicio 11.
Defina un algoritmo, diagrama de flujo y pseudocdigo para el siguiente
problema: en las olimpiadas de invierno el tiempo que realizan los participantes
en la competencia de velocidad de pista, se mide en minutos, segundos y
centsimas. La distancia que recorren, por otra parte, se expresa en metros.
Calcule la velocidad de los participantes, en kilmetros por hora, de las
diferentes competencias.
Tiempo_seg = Min*60 + seg + cent_seg/100
Velocidad_mtsseg = Distancia (mts) / Tiempo_seg
Velocidad_kmshr = (Velocidad_mtsseg * 3600) (kms) / 1000 (hrs)

Ejercicio 12.
Defina un algoritmo, diagrama de flujo y pseudocdigo tal que calcule e imprima
el nmero de segundos que hay en un determinado nmero de das.
Ejercicio 13.
Defina un algoritmo, diagrama de flujo y pseudocdigo tal que, dados los tres
lados de un tringulo, puede determinar su rea, en donde:
Area = sqrt (s * (s L1) * (s L2) * (s L3) )
S = (L1 + L2 + L3) / 2

- 44 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

ESTRUCTURAS ALGORITMICAS SELECTIVAS


Las estructuras lgicas selectivas se encuentran en la solucin algortmica de casi todo
tipo de problemas. La utilizacin se da cuando en el desarrollo de la solucin de un problema se
debe tomar una decisin, para establecer un proceso o sealar un camino alternativo a seguir.
Esta toma de decisin (expresada con un rombo) se basa en la evaluacin de una o ms
condiciones que nos sealarn como alternativa o consecuencia, la rama o camino a seguir.
Hay situaciones en las que la toma de decisiones se realiza en cascada. Es decir se toma
una decisin, se marca la rama correspondiente a seguir, se vuelve a tomar otra decisin y as
sucesivamente. Por lo que para alcanzar la solucin de este problema o subproblema se debe
aplicar prcticamente un rbol de decisin.
Las estructuras algortmicas selectivas que se utilizan para la toma de decisiones lgicas
se pueden clasificar de la siguiente forma:

1.- si entonces (Estructura selectiva simple)


2.- si entonces / sino (Estructura selectivo doble)
3.- si mltiple (Estructura selectiva mltiple)

Cabe sealar que cuando a las estructuras selectivas las aplicamos en cascada, se puede
utilizar una combinacin de las estructuras sealadas anteriormente en la clasificacin.

ESTRUCTURAS SI ENTONCES

La estructura selectiva si entonces permite que el flujo del diagrama siga por un camino
especfico si se cumple una condicin o conjunto de condiciones. Si al evaluar la condicin (o
condiciones) el resultado es verdadero, entonces se ejecuta(n) cierta(s) operacin (es).
Luego se contina con la secuencia normal del diagrama:

Diagrama de flujo:

Donde:

Condicin: expresa la condicin o


conjunto de condiciones a evaluarse.
Condicin

Operacin: expresa la operacin o


conjunto de operaciones que se van a
realizar si la condicin resulta
verdadera

Operacin

- 45 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Pseudocdigo:
Si condicin entonces
Hacer operacin.

Fin _ si.

Ejemplo 1.
Construya el diagrama de flujo y pseudocdigo tal, que dado como dato la
calificacin de un alumno en un examen, escriba aprobado, en caso de que esa
calificacin fuese mayor que 8.

Diagrama de flujo.

Pseudocdigo.

Inicio

Inicio.

CAL

Leer (CAL); /*tipo real*/


Si CAL > 8 entonces
Imprimir (Aprobado);
Fin_si

CAL > 8

Fin
F
V

Aprobado

Fin

- 46 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo 2.
Construya el diagrama de flujo y pseudocdigo tal, que dado como dato el
sueldo de un trabajador, aplquele un aumento del 15% si su sueldo es inferior a
$1000. Imprima en este caso, el nuevo saldo del trabajador.

Diagrama de flujo.

Pseudocdigo.

Inicio

Inicio.
Leer (SUE); /*tipo real*/
Si SUE < 1000 entonces
/* AUM es tipo real */
Asignar AUM= SUE*0.15;
/* NSUE es tipo real */
Asignar NSUE = SUE + AUM;
Imprimir (NSUE);
Fin_si

SUE
NSUE

F
SUE < 1000
Fin

Fin
V

AUM = SUE * 0.15


NSUE = SUE + AUM

LA ESTRUCTURA SI ENTONCES /SI NO

La estructura selectiva si entonces /sino permite que el flujo del diagrama se bifurque por
dos ramas diferentes en el punto de la toma de decisin (es). Si al evaluar la condicin (o
condiciones) el resultado es verdadero, entonces se sigue por un camino especfico y se ejecuta(n)
cierta (s) operacin (es) Por otra parte, si el resultado es falso entonces se sigue por otro camino y
se ejecuta (n) otra(s) operacin (es). En ambos casos, luego de ejecutarse la (s) operacin (es)
indicada(s), se contina con la secuencia normal del diagrama. A continuacin se presenta el
diagrama de flujo, que ilustra esta estructura selectiva:

- 47 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Diagrama de flujo:

Pseudocdigo:

Si Condicin entonces
Hacer Operacin 1
sino
Hacer Operacin 2
Fin_si

F
Condicin

Operacin 2

Operacin 1

Ejemplo 3.
Construya el diagrama de flujo y pseudocdigo tal, que dado como dato la
calificacin de un alumno en un examen, escriba aprobado si su calificacin es
mayor que 8 y reprobado en caso contrario.

Diagrama de flujo.

Pseudocdigo:

Inicio

Inicio
/* CAL es tipo real */
Leer (CAL);
Si CAL > 8 entonces
Imprimir (Aprobado);
sino
Imprimir (Reprobado);
fin_si
Fin.

CAL

V
CAL > 8

Aprobado

Reprobado

Fin

- 48 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo 4.
Construya el diagrama de flujo y pseudocdigo tal, que dado como dato el
sueldo de un trabajador, le aplique un aumento del 15% si su sueldo es inferior
a $ 1000 y un 12% en caso contrario. Imprimir el nuevo sueldo del trabajador.

Diagrama de flujo.

Pseudocdigo:

Inicio

Inicio
/* SUE es tipo real */
Leer (SUE);
Si SUE < 1000 entonces
/* NSUE es tipo real */
Asignar NSUE=SUE*1.15;
sino
Asignar NSUE=SUE*1.12;
fin_si
Imprimir (NSUE);
Fin.

SUE

V
SUE < 1000

NSUE= SUE*1.12

NSUE= SUE*1.15

NSUE

Fin

LA ESTRUCTURA SI MULTIPLE
La estructura selectiva si mltiple permite que el flujo del diagrama se bifurque por
varias ramas en el punto de la toma de decisin (es), esto en funcin del valor que tome el
selector. As si el selector toma el valor 1 se ejecutar la accin 1, si toma el valor 2 se
ejecutar la accin 2 , si toma el valor N se realizar la accin N, y si toma un valor distinto de
los valores comprendidos entre 1 y N, se continuar con el flujo normal del diagrama realizndose
la accin N+1.

- 49 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

A continuacin se presenta el diagrama de flujo que ilustra esta estructura selectiva:

SELECTOR

Valor 1

ACCION 1

Valor 2

ACCION 2

Valor N

ACCION N

ACCION N+1

SELECTOR: Es la variable o expresin a evaluarse, segn la cual se tomar una de la


mltiples decisiones o alternativas.
ACCION 1: Expresa la operacin o conjunto de operaciones que se van a realizar si el
selector toma el valor 1.
ACCION 2: Expresa la operacin o conjunto de operaciones que se van a realizar si el
selector toma el valor 2.
ACCION N: Expresa la operacin o conjunto de operaciones que se van a realizar si el
selector toma el valor N.
ACCION N+1: Expresa la operacin que se va a realizar cuando se contine con el flujo

normal del diagrama.

Pseudocdigo.
Si SELECTOR igual

Valor 1: hacer accin 1


Valor 2: hacer accin 2

Valor N: hacer accin N


fin_si

- 50 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Hacer accin N+1;


La estructura selectiva si mltiple es muy flexible, lo que permite aplicarla de diferentes
formas. Obsrvese los siguientes diagramas de flujo y las explicaciones correspondientes:
SELECTOR
Valor 1

Valor 3

Valor 2

ACCION 1

ACCION 3

ACCION 2

De otra forma

ACCION X

ACCION Y

Observe que si el selector toma el valor 1se ejecuta la accin 1, si toma el valor 2 se
realiza la accin 2, si toma el valor 3, se realiza la accin 3, y si toma cualquier otro valor se
realiza la accin X. Luego cuando se contina con el flujo normal del diagrama se realiza la accin
Y.

Pseudocdigo
Si SELECTOR igual

Valor 1: hacer accin 1


Valor 2: hacer accin 2
Valor 3: hacer accin 3
De otra forma: hacer accin X
fin_si
Hacer accin Y;

- 51 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Analicemos el siguiente caso:


SELECTOR
Valor 1,2

De otra forma

Valor 3,4,5

ACCION 1

ACCION 2

ACCION Y

Pseudocdigo.
Si SELECTOR igual

Valor 1,2: hacer accin 1


Valor 3,4,5: hacer accin 2
De otra forma: hacer accin 3
fin_si
Hacer accin X;

Veamos algunos ejemplos para comprender mejor lo anterior.

- 52 -

ACCION X

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo 5.
Construya el diagrama de flujo y pseudocdigo tal, que dado como dato dos
variables de tipo entero V y NUM, obtenga el resultado de la siguiente funcin:

VAL

100 * V

si NUM = 1

100 ^V

si NUM = 2

100/V

si NUM = 3

para otro valor de NUM.

Diagrama de flujo.
Inicio

NUM, V

NUM
1

VAL=100 * V

De otra forma

3
VAL = 100 / V

VAL = 100 ^ V

VAL = 0

VAL

Fin

Pseudocdigo
Inicio
Leer (NUM, V); /* NUM y V son variables tipo entera, VAL es tipo real */
Si NUM igual
1 : hacer VAL = 100 * V;
2 : hacer VAL = 100 ^ V;
3 : hacer VAL = 100 / V;
De otra forma: hacer VAL = 0;

- 53 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

fin_si
Imprimir (VAL);
Fin
Ejemplo 6.
Construya el diagrama de flujo y pseudocdigo tal, que dado como datos la
categora y el sueldo de un trabajador, calcule el aumento correspondiente
teniendo en cuenta la siguiente tabla. Imprima la categora del trabajador y su
nuevo sueldo.
CATEGORIA

AUMENTO

15%

10%

8%

7%

Diagrama de flujo
Inicio

CATE, SUE

CATE
1

NSUE=SUE*1.15

3
NSUE=SUE*1.08

NSUE=SUE*1.10

4
NSUE=SUE*1.07

CATE, SUE

Fin

Pseudocdigo.
Inicio
Leer (CATE, SUE); /* CATE es variables tipo entera, SUE y NSUE son tipo real */
Si CATE igual
1 : hacer NSUE = SUE * 1.15;

- 54 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

2 : hacer NSUE = SUE * 1.10;


3 : hacer NSUE = SUE * 1.08;
4 : hacer NSUE = SUE * 1.07;
fin_si
Imprimir (CATE, NSUE);
F

Fin

ESTRUCTURAS SELECTIVAS EN CASCADA ( ANIDADAS)


Se encuentran numerosos casos en el desarrollo de la solucin de problemas en el que
luego de tomar una decisin y marcar el camino correspondiente a seguir, es necesario tomar
otra decisin. Se seala, luego de evaluar las condiciones, la rama correspondiente a seguir, y
nuevamente se puede tener que tomar otra decisin. El proceso puede repetirse numerosas veces.
En este caso se est aplicando estructuras selectivas en cascada o anidadas, para resolver el
problema.
Observe el siguiente caso, donde dentro de la estructura selectiva si entonces, se
encuentra la estructura selectiva si entonces sino.

Condicin 1
V
F

F
Condicin 2

Operacin 2-1

- 55 -

Operacin 2-2

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Pseudocdigo.
Si condicin 1 entonces
Si condicin 2 entonces
hacer operacin 2-1
sino
hacer operacin 2-2
fin_si
fin_si
Se analizar este siguiente caso tambin:

V
Condicin 1

Condicin 2

Condicin 3

V
Operacin 2-1

Operacin 2-2
Operacin 3-1

Observe que dentro de la estructura selectiva si-entonces-sino existen otras dos


estructuras selectivas.

- 56 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Si al evaluar la condicin 1, esta resulta verdadera entonces se tiene que evaluar la


condicin 2, (estructura selectiva si-entonces-sino). Por otra parte si la condicin 1 resulta falsa,
entonces se tiene que evaluar la condicin 3 (estructura selectiva si-entonces)

Se estudiar por ltimo, el siguiente caso:


V

F
Condicin 1

SELECTOR
De otra forma

Valor 1

Condicin 5
Valor 2

Operacin 2-1

F
Condicin 4

Operacin 5-1

F
Condicin 3

Operacin 4-1

Operacin 4-2

Operacin 3-1

Observe que dentro de la estructura selectiva si-entonces-sino, se encuentran otras dos


estructuras selectivas: si-mltiple y si-entonces. A su vez, dentro de la estructura selectiva si
mltiple se encuentran otras dos estructuras selectivas.
A continuacin se muestra el pseudocdigo:
Si condicin 1 entonces
Si selector 1 igual

valor 1 : hacer operacin 2-1;

- 57 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

valor 2 : Si condicin3 entonces


hacer operacin 3-1;
fin_si

De otra forma : Si condicin 4 entonces


Hacer operacin 4-1;
Sino
Hacer operacin 4-2;
fin_si.
Fin_si /* selector*/
Sino
Si condicin 5 entonces
Hacer operacin 5-1
Fin_si.
Fin_si.

Ejemplo 7.
Construya el diagrama de flujo y pseudocdigo tal, que dado los datos A, B y C,
que representan nmeros enteros diferentes, escriba estos nmeros en forma
descendente, es decir, de mayor a menor.

Ejemplo 8.
Construya el diagrama de flujo y pseudocdigo para calcular el precio del billete
de ida y vuelta en ferrocarril, conociendo la distancia del viaje de ida y el tiempo
de estancia. Se sabe adems, que si el nmero de das de estancia es superior a
7 y la distancia total (ida y vuelta) a recorrer es superior a 800 kms, el billete
tiene una reduccin del 30%. El precio por km es de $0.17.

Ejemplo 9.
Construya el diagrama de flujo y pseudocdigo tal, que dados como datos de
entrada 3 nmeros enteros, determine si los mismos estn en orden creciente
(A,B,C)

- 58 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

ESTRUCTURAS REPETITIVAS.
Es muy comn encontrar en los algoritmos operaciones que se deben ejecutar un nmero
repetido de veces. Si bien las instrucciones son las mismas, los datos sobre los que se opera varan.
El conjunto de instrucciones repetidamente se llama ciclo.
Todo ciclo debe terminar de ejecutarse luego de un nmero finito de veces, por lo que es
necesario en cada iteracin del mismo, evaluar las condiciones necesarias para decidir si debe
seguir ejecutndose o debe deternerse. En todo ciclo, siempre debe existir una condicin de parada
o fin de ciclo.
Llamaremos repetir a la estructura algortmica repetitiva que se ejecuta un nmero
definido de veces.
Llamaremos mientras a la estructura algortmica repetitiva que se ejecuta mientras la
condicin evaluada resulta verdadera.

LA ESTRUCTURA REPETIR
Es la estructura algortmica adecuada para utilizar en un ciclo que se ejecutar un nmero
definido de veces. Se sabe de antemano cuntas veces tenemos que repetir una determinada
operacin, accin o tarea. El nmero de repeticiones NO depende de las proposiciones dentro del
ciclo.
El nmero de veces del planteamiento del problema o de una lectura que indica que el
nmero de iteraciones se debe realizar para N ocurrencias.
El diagrama de flujo de la estructura repetir es el siguiente:

V = Vi
V
V > Vf
F

Proceso

V=V + increm

- 59 -

Donde:

V es una variable de control.


Vi es el valor inicial.
Vf es el valor final.
Increm es el incremento que
debe tomar la variable de
control, puede ser de uno en
uno, de dos en dos, etc.

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

La variable V (contador del ciclo, generalmente representado por las letras i,j,k,v) toma
un valor inicial y se compara con el valor de la variable Vf (valor final). El ciclo se ejecutar
mientras V es menor o igual al valor de Vf. El valor de V se incrementa en cada iteracin. Cuando
V supera el valor de Vf entonces el ciclo se detiene.
El pseudocdigo lo expresamos de esta forma:
Hacer V = Vi
Repetir con V desde Vi hasta Vf
...
...

proceso u operaciones a realizar.


...
...
Hacer V = V + increm;
Fin_repetir
Ejemplo 1.
Construya el diagrama de flujo y pseudocdigo tal, que dados como datos los
sueldos de 5 trabajadores de una empresa, obtenga el total de nmina de la
misma. Considere adems que no puede utilizar estructuras algortmicas
repetitivas en la solucin del problema.

Diagrama de flujo.

Pseudocdigo:
Inicio
Leer (SUE1,SUE2,SUE3,SUE4,SUE5);
Asignar NOMINA=SUE1+SUE2+SUE3+SUE4+SUE5;
Imprimir (NOMINA);
Fin.

Inicio

SUE1, SUE2, SUE3, SUE4, SUE5

NOMINA=SUE1+SUE2+SUE3+SUE4+SUE5

NOMINA

Fin

- 60 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Considere que sucedera si en lugar de tener 5 empleados, la empresa tuviera 1000 o


10000 empleados. En realidad el problema es sencillo y se puede resolver con una estructura
repetitiva, de tal forma que el ciclo se ejecute tantas veces como empleados tenga la empresa de la
siguiente manera:

Diagrama de flujo.
Inicio

i = 1,
NOMINA=0

Pseudocdigo:
Inicio
Hacer i =1, NOMINA=0;
Repetir con i desde 1 hasta 5
{
Leer (sueldo);
Hacer NOMINA=NOMINA + sueldo;
Hacer i = i + 1;
} Fin_repetir.
Imprimir (NOMINA);
Fin.

i>5
F
sueldo

NOMINA=NOMINA + sueldo

i = i +1

i: es una variable de tipo entero que representa la


variable de control del ciclo. Contabiliza el
nmero de veces que ha de repetirse una
determinada accin. El contador toma un valor
inicial (generalmente 0 o 1) y se incrementa en la
mayora de los casos en una unidad en cada
vuelta del ciclo.

NOMINA: Es una variable de tipo real


que representa un acumulador. Este
se utiliza cuando debemos obtener el
total acumulado de un conjunto de
cantidades. Generalmente se inicializa
en cero.

NOMINA

Fin

- 61 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo 2.
Construya el diagrama de flujo y pseudocdigo tal, que dados como datos N
nmeros enteros, obtenga el nmero de ceros que hay entre estos nmeros.

Diagrama de flujo.

Pseudocdigo:
Inicio
Asignar SUMANUM = 0;
Asignar i = 0;
Leer (N);
Repetir con i desde 1 hasta N
{
Leer (Num);
Si Num = 0 entonces
Asignar SUMANUM=SUMANUM + Num;
Asignar i = i +1;
} fin_repetir
Imprimir (SUMCERO);
Fin.

Inicio

SUMCERO = 0
i=1

F
i <= N

V
Num
F

Num = 0

V
SUMCERO =SUMCERO + Num

i=i+1

SUMCERO

Fin

- 62 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

LA ESTRUCTURA MIENTRAS
Es la estructura adecuada para utilizarse en un ciclo cuando NO sabemos el nmero de
veces que ste se ha de repetir. Dicho nmero depende de las preposiciones dentro del ciclo.
En la estructura mientras se distinguen dos partes:

Ciclo: Conjunto de instrucciones que se ejecutarn repetidamente.

Condicin de terminacin: La evaluacin de esta condicin permite decidir

cundo finalizar la ejecucin del ciclo. La condicin se evala al inicio del mismo.

El diagrama de flujo de la estructura mientras es el siguiente:

Pi = Proposicin inicial

Evaluacin de
Pi

Pi : La proposicin
inicial, debe tener un
valor verdadero
inicialmente. Si el valor
de Pi es falso, entonces el
ciclo no se ejecuta

Pi = Modificacin de Pi

Debe existir tambin un enunciado dentro del ciclo que afecte la condicin, para evitar
que el ciclo se ejecute indefinidamente.
En el lenguaje algortmico la estructura mientras la expresamos de esta forma
(pseudocdigo):
...
...
Hacer Pi = Proposicin inicial;

- 63 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Mientras Pi es verdadero repetir


...
...
proceso u operaciones a realizar;
...
Hacer Pi = Modificacin de Pi;
...
fin_mientras.
Ejemplo 3.
Construya el diagrama de flujo y pseudocdigo tal, que se deben obtener la
suma de los gastos que se hicieron en un ltimo viaje, pero no se sabe
exactamente cuntos fueron.

Diagrama de flujo.
Inicio

Pseudocdigo:
Inicio
Asignar SUMGAS = 0;
Leer (Gasto);
Mientras Gasto < > -1 repetir
{
Asignar SUMGAS=SUMGAS + Gasto;
Leer (Gasto);
} fin_while
Imprimir (SUMGAS);
Fin.

SUMGAS = 0

Gasto

V
Gasto < > -1

F
SUMAGAS =SUMGAS + Gasto

NOTA: Observe que en este tipo de


problemas se debern realizar 2 lecturas,
una antes de iniciar el ciclo y otra antes de
finalizar el mismo.

Gasto

SUMGAS

Fin

- 64 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo 4.
Construya el diagrama de flujo y pseudocdigo tal, que calcule e imprima la
suma de una serie de nmeros naturales.

Diagrama de flujo.

Pseudocdigo:
Inicio
Asignar SUMANUM = 0;
Leer (Num);
Mientras Num < > -1 repetir
{
Asignar SUMANUM=SUMANUM + Num;
Leer (Num);
} fin_while
Imprimir (SUMANUM);
Fin.

Inicio

SUMANUM = 0

Num

Num < > -1

F
SUMANUM =SUMANUM + Num

Num

SUMANUM

Fin

- 65 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

* * EJERCICIOS CON SENTENCIAS SELECTIVAS Y REPETITVAS. * *


Ejercicio 1.
Se tienen las calificaciones de un grupo de alumnos que presentaron un examen.
El profesor desea obtener el promedio de estas calificaciones. Escriba el
diagrama del flujo y pseudocdigo para resolver lo planteado.

Ejercicio 2.
Escriba un diagrama de flujo y pseudocdigo tal, que dados como datos 270
nmeros enteros, obtenga la suma de los nmeros impares y el promedio de los
nmeros impares.

Ejercicio 3.
Escriba un diagrama de flujo y pseudocdigo tal, que dados como datos N
nmeros enteros, determine cuntos de ellos son pares y cuntos son impares.

Ejercicio 4.
Escriba un diagrama de flujo y pseudocdigo tal, que dados como datos N
nmeros enteros, determine cuntos de ellos son pares y cuntos son impares.

Ejercicio 5.
Haga un diagrama de flujo y pseudocdigo para obtener la tabla de multiplicar
de un nmero entero K, comenzando desde 1.

Ejercicio 6.
Haga un diagrama de flujo y pseudocdigo que obtenga la suma, e imprima los
trminos de la siguiente serie:
2,5,7,10,12,15,17, ... , 1800
Ejercicio 7.
Haga un diagrama de flujo y pseudocdigo que lea un nmero entero N y calcule
el resultado de la siguiente serie:

- 66 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

1 1 1 1
1
...
2 3 4 5
N

1+

Ejercicio 8.
Haga un diagrama de flujo y pseudocdigo que lea un nmero entero N y calcule
el resultado de la siguiente serie:
1-

1 1 1 1
1
...
2 3 4 5
N

ESTRUCTURAS DE DATOS, ARREGLOS: LISTAS Y


TABLAS.
Una estructura de datos es una coleccin o conjunto de datos que tienen el mismo
nombre. Los medios por los cuales se relacionan unos elementos con otros determinan el tipo de
estructura de datos.
El valor de la estructura de datos se determina por:
1. El valor de los elementos.
2. La composicin de los elementos.
Las estructuras de datos se pueden clasificar de acuerdo a:

Estticas

Dinmicas

Arreglos (Arrays vectores y matrices)

Registros (Records)

Archivos o ficheros (File)

Lineales:

Pilas

Colas

Listas enlazadas.

No lineales:

- 67 -

rboles

Grfos

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

ARREGLOS
Un arreglo o array se define como una coleccin finita, homognea y ordenada de
elementos.
Finita: todo arreglo tiene un lmite; es decir debe determinarse cul ser el nmero
mximo de elementos que podrn formar parte del arreglo.
Homognea: todos los elementos de una rreglo son del mismo tipo (todos enteros,
todos reales, todos bolanos, etc., pero nunca una combinacin de distintos tipos).
Ordenada: se puede determinar cul es el primer elemento, el segundo, el tercero,... y
el n-simo elemento.
Un array (arreglo, disposicin, vector o lista, tabla o matriz) es una estructura de datos
utilizada para almacenar un conjunto de datos del mismo tipo.
Un array se identifica por su nombre y se le asocia con un nombre de variable vlida.
Los componentes individuales de un array se llaman elementos y se distinguen entre
ellos por el nombre del array seguido de uno o varios ndices o subndices entre corchetes,
ejemplo:

Autos [3]
Escuelas [1]
Librerias [7]
Los elementos de un array se almacenan en la memoria de la computadora en posiciones
adyacentes (un elemento por posicin). Los elementos del array se pueden procesar
individualmente todas las veces que se desee, o bien todo el array completo.

Los arreglos se clasifican en:

Unidimensionales (vectores o listas).

Bidimensionales (tablas o matrices).

Multidimensionales.

Para poder utilizar un array en un problema es necesario declararlos previamente al


comienzo del programa indicando el nmero y tipo de elementos que puede contener.

ARREGLOS UNIDIMENSIONALES (VECTORES / LISTAS)


Un array unidimensional o vector es una secuencia de elementos en la que todos sus
elementos son del mismo y en los que el orden es significativo. El orden viene dado por le
subndice del vector. Los subndices son nmeros enteros o expresiones enteras que, normalmente,
comienzan en 0.

- 68 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejemplo:
Vector unidimensional.

A [0]

A [1]

A [3]

A [2]

25.4

32.0

54.3

14.2

Primer
elemento

Segundoele
mento

Tercer
elemento

Cuarto
elemento

A [24]

...
...

11.2

A [25]
95.8

Los vectores se pueden representar como filas de datos o como columnas de datos. Los
elementos de una array k de 6 elementos se muestran a continuacin.
k[0]

k[1]

12

k[2]

k[3]

k[4]

k[5]

14

a) Vector en columna

k[0]

k[1]

k[2]

k[3]

k[4]

k[5]

12

14

b) Vector en fila.

DECLARACIONES DE VECTORES
La declaracin del nmero y tipo de elementos se realiza de diferentes formas segn el
tipo de lenguajes:
Dim x(8)

----

en BASIC.

Array [1..8] of real ----

en Pascal.

Int A[8]

en Turbo C.

----

- 69 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

En el lenguaje de pseudocdigo se utilizar:


Dimensin del array <nombre> [num_de_elems]: <tipo de dato>
Ejemplo:
Dimensin del array X[8]: real;
Nombre[30]: char;

OPERACIONES CON VECTORES.


Las operaciones con vectores se pueden realizar con elementos individuales o sobre los
vectores completos mediante las instrucciones bsicas y estructuras de control.
Las operaciones se aplican a los elementos o bien al vector completo, estas operaciones
son:

Operaciones sobre los elementos:

Asignacin.

Lectura.

Escritura.

Operaciones sobre el vector completo:

Recorrido.

Bsqueda.

Insercin.

Eliminacin.

Ejemplos:
Sea el vector H de 10 elementos siguientes:

H[0]

H[1]

H[2]

H[3]

H[4]

H[5]

H[6]

H[7]

H[8]

H[9]

16.5

14.2

5.0

3.45

-1.0

2.45

32

-45.0

15.0

Se analizarn ciertos casos de acuerdo a la instruccin que se indica en la columna de la


izquierda para obtener el resultado que se muestra en la segunda columna:

- 70 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Instruccin (accin)

Efecto o resultado

Escribir H[4]

Visualiza 0

valor de H[4]

Escribir H[I] donde I = 3

Visualiza 3.45

valor de H[3]

Escribir H[I]+3 donde I=3

Visualiza 6.45

valor de H[3] = 3.45+3=6.45

Escribir H[I+2] donde I=3

Visualiza 1

valor de H[3+2]=H[5]= -1

Escribir H[I-1] donde I=3

Visualiza 5

valor de H[3-1]=H[2]= 5

Escribir H[4+I] donde I=3

Visualiza 32

valor de H[4+3]=H[7]= 32

Asignar a H[I] = H[I-1] donde I=5

Asigna a H[5] = 0 valor de H[5-1] = H[4] = 0

Asignar a H[I-1] = H[I] donde I=9

Asigna a H[8] = -45 valor de H[9-1]=H[8]= -45

Asignar a H[I] = H[I+2] donde I=7

Asigna a H[7] = 15 valor de H[7]=H[9]= 15

Asignar a H[I] = H[12] donde I=5

Error ya que 12 > 9 y no es posible la asignacin

- 71 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

LECTURA / ESCRITURA DE VECTORES COMPLETOS


(RECORRIDO)
La escritura del vector H se puede realizar con una estructura desde mientras o
repetir.
Inicio

i=1

F
i <=10

V
dato

H[i] = dato

i=i+1

Pseudocdigo:

Con la estructura repetir:


Repetir con i desde 1 hasta 10
{

Leer (dato);
Asignar H[i] = dato;

} fin_repetir

Con la estructura mientras:


Mientras i<=10 repetir
{

Leer (dato);

- 72 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Asignar H[i] = dato;


} fin_mientras
La impresin de los elementos del arreglo H, se puede realizar tanto con una
estructura Repetir como para una estructura repetir Mientras.
Inicio

i=1

F
i <=10

V
H[i]

i=i+1

Pseudocdigo:

Con la estructura repetir:


Repetir con i desde 1 hasta 10
{

Imprimir (H[i]);

} fin_repetir

Con la estructura mientras:


Mientras I<=10 repetir
{

Imprimir (H[i]);

} fin_mientras

- 73 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Ejercicio 9.
Haga un diagrama de flujo y pseudocdigo que lea los sueldos de un grupo de 70
empleados de una empresa, y se requiere saber cuntos de estos empleados
tienen un sueldo superior al promedio del grupo.

Diagrama de flujo:

Inicio

Sum = 0
i=0

cont
F

i < 70

Fin

sueldo

SE[i] = sueldo

Sum=sum + SE[i]

i=i+1

Prom=Sum/70
cont = 0
i=0

i < 70

V
F
SE[i] > Prom
<=70

V
cont=cont +1

i=i+1

- 74 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Pseudocdigo:
Inicio
1. Asignar sum=0;
2. Asignar i=0;
3. Repetir con i desde 0 hasta 69
{
3.1. Leer (sueldo);
3.2. Asignar SE[i]=sueldo;
3.3. Asignar sum=sum + SE[i];
3.4. Asignar i = i +1;
} fin_repetir
4. Asignar prom=sum/70;
5. Asignar cont=0;
6. Asignar i=0;
7. Repetir con i desde 0 hasta 69
{
7.1. Si SE[i] > prom entonces
7.1.1. Asignar cont=cont + 1;
7.2. Asignar i = i +1;
} fin_repetir
8. Imprimir (cont);
Fin

- 75 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

Bsqueda de elementos en un arreglo unidimensional


Para la bsqueda de algn elemento en particular en un arreglo unidimensional, debe
considerarse que el elemento puede o no puede estar capturado en alguno de los lugares del
arreglo, por lo que se deber contemplar la accin a seguir en dado caso que se llegara a
presentar. Se recomienda enviar un mensaje de que no se encontr el elemento en el arreglo para
que el usuario se percate de que no existe dicho elemento.

ARREGLOS UNIDIMENSIONALES (VECTORES / LISTAS)


Una matriz es un arreglo de dos dimensiones, y para especificar cualquier elemento,
debemos hacer referencia a dos ndices (que representan la posicin como rengln y columna).
Aunque no se justificar aqu, es conveniente mencionar que la representacin matricial es
puramente conceptual y con el nico fin de facilitar al programador el manejo de los elementos, ya
que la computadora almacena los datos en una forma totalmente diferente.
Pseudocdigo:
tipo nombre_de_variable [rango1][rango2]
donde tipo puede ser cualquier tipo de datos (entero, flotante, carcter, etc.)
Lenguaje C:
tipo nombre_de_variable [rango1][rango2];
donde:
tipo puede ser cualquier tipo de dato (int, float, char, etc.).
nombre_de_variable es el nombre del arreglo.
rango 1 corresponde al nmero de renglones que conforman el arreglo.
rango 2 corresponde al nmero de columnas.

Podemos trabajar con cada uno de los elementos de la matriz:


Pseudocdigo:
X[3][5]

20 (asigna al elemento de la fila 4 y la columna 6 el valor de 20)

Lenguaje C:
X[3][5] = 20;

- 76 -

Algoritmos Computacionales

Ing. Ricardo Alfaro Cullar.

EJEMPLO:
El siguiente programa realiza la lectura de una matriz de 7 renglones y 15 columnas (de
una matriz de orden [7x15]) rengln por rengln).
/* programa que lee los elementos de una matriz de orden 7 x 15 */
constantes
REN 7
COL 15
PRINCIPAL
inicio
entero i, j, x [ren] [col];
desde (i =0; i<ren ; i

i+1)

desde (j =0; j< col ; j

j+1)

inicio
imprime (INTRODUCE EL ELEMENTO : , i, j);
leer (x [i] [j]);
fin
fin
Lenguaje C:
#include <stdio.h>
#define ren 7
#define col 15
main ()
{
int i, j;
int x [ren][col];
for (i=0; i<ren; i++)
for(j=0; j<col ; j ++)
{
printf (INTRODUCE EL ELEMENTO A (%d, %d) , I, j);
scanf (%d, &x [i] [j]);
}
}

- 77 -