Sei sulla pagina 1di 88

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

ALGORITMOS COMPUTACIONALES.
CONCEPTOS BSICOS.
ARQUITECTURA DE LA COMPUTADORA.

Unidad de control

Dispositivo s de ENTRAD A - INPUT

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

Memoria RAM (Almacenamiento primario)

Lnea de comunicacin

Almacenamiento Secundario

-2-

Algoritmos Computacionales

MSI. 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 1100 0101 0000 0001 1110 1110 0000 0010 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

MSI. Ricardo Alfaro Cullar.

SISTEMAS NUMERICOS.
Sistema
Decimal Binario Octal Hexadecimal

Base
10 2 8 16

No de dgitos
10 2 8 16

Dgitos
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)

Dgito mayor
9 1 7 F = 15

COMPARATIVO ENTRE SISTEMAS NUMERICOS.


DECIMAL
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

BINARIO
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

OCTAL
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

HEXADECIMAL
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

-4-

Algoritmos Computacionales
44 0010 1100 0054 2C

MSI. Ricardo Alfaro Cullar.

-5-

Algoritmos Computacionales

MSI. 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. Nuestro resultado de la primera divisin es: cociente=27 residuo=1 tomamos el valor del residuo, nuestro primer valor resultado.
1 5 1 2 7 2 5 5

Resultado parcial: 1 Ahora dividimos el resultado del cociente entre 2:


13 2 27 07 1

Nuestro resultado de la segunda divisin es: cociente=13

residuo=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 1 3 1

Resultado parcial: 111


3 2 6 0

-6-

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar. Resultado parcial: 0111

1 2 3 1

Resultado parcial:10111
0 2 1 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. 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.

2.

3.

Ejemplo: Convertir 55 decimal a octal. Nuestro resultado de la primera divisin es: cociente=6 residuo=7 tomamos el valor del residuo, nuestro primer valor resultado.
6 8 5 5 7

-7-

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

Resultado parcial: 7 Ahora dividimos el resultado del cociente entre 8:


0 8 6 6

Nuestro resultado de la segunda divisin es: cociente=0

residuo=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. 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.

2.

3.

Ejemplo: Convertir 55 decimal a hexadecimal.


3 1 55 6 0 7

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

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

tomamos el valor del residuo, nuestro primer valor resultado. Resultado parcial: 7 Ahora dividimos el resultado del cociente entre 16:
0 1 3 6 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.

DE BINARIO A DECIMAL.
Base Resultado de

27 128

26 64

25 32

24 16

23 8 -9-

22 4

21 2

20 1

Algoritmos Computacionales
la base. Nmero a convertir

MSI. Ricardo Alfaro Cullar.

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 1

25 32 1

24 16 1

23 8 0

22 4 1

21 2 0

20 1 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

- 10 -

Algoritmos Computacionales

MSI. 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:
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 Resultad o de la base. Nmero a convertir

Convertir 11001.

22 4 0

21 2 1

20 1 1
Base Resultad o de la base. Nmero a convertir

22 4 0

21 2 0

20 1 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
El resultado es: 110012 = 318

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

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.

- 11 -

Algoritmos Computacionales Ejemplo:


Se agrupa en 4 dgitos de derecha a izquierda: 1101 0 1

MSI. Ricardo Alfaro Cullar.

Convertir 110101.

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 Resultad o de la base. Nmero a convertir

23 8 0

22 4 0

21 2 1

20 1 1
Base Resultad o de la base. Nmero a convertir

23 8 0

22 4 1

21 2 0

20 1 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
El resultado es: 110012 = 3516

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

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

87 209715 2

86 262144

85 32768

84 4096

83 512

82 64

81 8

80 1

1. 2. 3. 4.

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.

- 12 -

Algoritmos Computacionales Convertir 134 octal a decimal.

MSI. Ricardo Alfaro Cullar.

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 209715 2

86 26214 4

85 32768

84 4096

83 512

82 64 1

81 8 3

80 1 4

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 1 2 3 1 0 2 1 1

7 = 111 5 = 101

2 2 5 1

1 2 2 0

0 2 1 1

El resultado es 758 = 1111012

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

167 26843545 6

166 1677761 6

165 104857 6

164 65536

163 4096

162 256

161 16

160 1

- 13 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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. 4. El resultado de la sumatoria ser el nmero convertido a decimal.

Ejemplo: Convertir 5C hexadecimal 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

167 26843545 6

166 1677761 6

165 104857 6

164 163 65536 4096

162 256

161 16 5

160 1 C

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 1 2 2 0 0 2 1 1

5 = 101 5 = 101

2 2 5 1

1 2 2 0

0 2 1 1

- 14 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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

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 1 2 2 0 0 2 1 1

5 = 101 5 = 101

2 2 5 1

1 2 2 0

0 2 1 1

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 A 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 1 2 2 0 0 2 1 1

5 = 101

- 15 -

Algoritmos Computacionales
2 2 5 1 1 2 2 0 0 2 1 1

MSI. Ricardo Alfaro Cullar.


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 1024 bytes = despejando el valor de x 2 Kb 1Kb

- 16 -

Algoritmos Computacionales
x= (1024 bytes ) * (2 Kb ) = 2048 bytes. 1Kb

MSI. Ricardo Alfaro Cullar.

Convertir 4Mb a Kb.


x 1024 Kb = 4 Mb 1Mb

x=

(1024 Kb ) * ( 4 Mb ) = 4096 Kb. 1Mb

Convertir 20 bytes a Kb.


x 1Kb = 20 bytes 1024 bytes

x=

( 20 bytes ) * (1Kb ) 20 kb = = 0.01953 Kb 1024 bytes 1024

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

PB

EB

ZB

YB

De menor a mayor se divide por 1024

- 17 -

Algoritmos Computacionales

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

- 18 -

Verificacin del algoritmo.

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

Las caractersticas que los algoritmos deben reunir son: PRECISION: Los pasos a seguir en el algoritmo deben ser precisados claramente. DETERMINISMO: El algoritmo, dado un conjunto de datos idnticos de entrada, siempre deben arrojar los mismos resultados. FINITUD: 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 ENTRAD A

PROCESAMIEN TO DE LOS

IMPRESIN DE RESULTADOS

El Mdulo I representa la operacin o accin que permite el ingreso de los datos del problema.

- 19 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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.

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.

- 20 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.


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.

Smbolos utilizados para expresar direccin del flujo del diagrama.

la

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 Inicio construccin un diagrama de flujo: Lectura de Datos

Procesamiento de los Datos Impresin de los resultados

NOTA: Estas fases se


presentan en la mayora de los diagramas de flujo, aunque a veces en orden diferente o repitiendo alguna (s) de

- 21 -

Fin

Algoritmos Computacionales

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

- 22 -

Algoritmos Computacionales

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

VLID

NO VLIDO

- 23 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

VLID

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.

- 24 -

Algoritmos Computacionales
SUBRANGO. DATOS ESTRUCTURADOS.

MSI. Ricardo Alfaro Cullar.

Ocupan un grupo de casillas de memoria. 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 14830. 1528 -714 8530 16325-

Los REALES son nmeros que pueden estar precedidos del signo + o -, y que tienen una parte decimal. Ejemplos: 7.5 1600.50. 128.0 -37.865 129.7

DATOS ALFANUMERICOS. En este tipo de datos se encuentran los de tipo CARCTER (simple) y CADENA DE CARACTERES (estructurado).

- 25 -

Algoritmos Computacionales
Son datos cuyo abecedario (0,1,2,3,...,8,9) $,*,/,!...) y que dobles comillas, programacin.

MSI. Ricardo Alfaro Cullar.


contenido pueden ser letras del (a,b,c,d,...,x,y,z), dgitos o smbolos especiales (#,%, van encerrados entre comillas o dependiendo del lenguaje de

Aunque se usan nmeros (caracteres), no pueden realizarse operaciones aritmticas. Un dato tipo CARCTER contiene un solo carcter: a , B , 9, # , f , ... 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, Palacio). FbricasFrancia, Atlas,

Equipos=(UNAM,Guadalajara, 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.

- 26 -

Algoritmos Computacionales
20 .. 25 25. a .. m y m. 100 .. 150 y 150.

MSI. Ricardo Alfaro Cullar.


consta de 20,21,22,23,24 y consta de a,b,c,d,e,f,g,h,i,j,k,l consta de 100,101,102 ... 149

- 27 -

Algoritmos Computacionales

MSI. 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 ACUM AUXILIAR 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 5

RESULTADO Resultado

NUMREAL 7.57

- 28 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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.

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.

I 0.0

SUELDO 0.0

SUMA 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 Potencia Multiplicacin Divisin

Ejemplo 4^3 (4*4*4) 8*7 15/4

Resultado 64 56 3.75

- 29 -

Algoritmos Computacionales
+ mod div Suma Resta Mdulo (residuo) Divisin entera 5+8 65 35 15 mod 2 17 div 3

MSI. Ricardo Alfaro Cullar.


13 30 1 5

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 ^ *, /, mod, div

Jerarqua Mayor Potencia

Operacin

Multiplicacin, divisin, divisin entera. Menor Suma, resta

mdulo,

+, -

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.

- 30 -

Algoritmos Computacionales
9+7*85/5

MSI. Ricardo Alfaro Cullar.

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

- 31 -

Algoritmos Computacionales
Y por ltimo la resta. 36 7 = 29

MSI. Ricardo Alfaro Cullar.

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

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 Igual que Diferente a Menor que Mayor que Menor o igual que Mayor o igual que EJEMPLO hola = lola a<>b 7 < 15 22 > 11 25 < = 22 35 > = 20 RESULTADO. Falso Verdadero Verdadero Verdadero Falso Verdadero

Ejemplos: A = 5, B = 16 (A ^2 ) > ( B * 2 ) = (5^2) > (16 * 2) = 25 > 32 = falso

- 32 -

Algoritmos Computacionales
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

MSI. Ricardo Alfaro Cullar.

NOTA: Cuando se utilizan los operadores de relacin con operandos lgicos, falso es menor que verdadero.

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 NO NOT

JERARQUIA Mayor

EXPRESION LOGICA No p

SIGNIFICADO No p (~ p) No es cierto que p Es falso que p

Y AND

P yq

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
V Verdadero

q
V Verdadero

~p
F

~q
F

p Vq
V

p^ q
V

- 33 -

Algoritmos Computacionales
V Verdadero F - falso F falso F falso V Verdadero F falso F V V V F V

MSI. Ricardo Alfaro Cullar.


V V F F F F

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.

TABLA RESUMEN DE JERARQUIA DE LOS OPERADORES.


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

JERARQUIA
Mayor

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)

- 34 -

Algoritmos Computacionales
NOT (15>= 49) OR (43 16 div 4 < > 6 div 2) NOT (falso) OR (43 4 < > 3) Verdadero OR (39 < > 3) Verdadero OR (verdadero)

MSI. Ricardo Alfaro Cullar.

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) 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:

- 35 -

Algoritmos Computacionales 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)

MSI. Ricardo Alfaro Cullar.

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.

- 36 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

A continuacin se muestran las funciones ms usuales:


FUNCION Abs (x) Arctan (x) DESCRIPCION Valor absoluto de x Arco tangente de x (radianes) Coseno de x (radianes) Parte entera de x Exponencial de x Logaritmo natural x Logaritmo decimal de x Raz cuadrada x X se redondea al entero ms prximo. Seno de x (radianes) Tangente (radianes) de x TIPO DE ARGUMENTO Entero o real Entero o real TIPO DE RESULTADO Igual que el argumento Real

Cos (x) Ent (x) Exp (x) Ln (x) Log 10 (x) Sqr (x) Redo (x)

Entero o real Entero o real Entero o real Entero o real positivo Entero o real positivo Entero o real positivo Real

Real Entero Real Real Real Real Entero

Sin (x) Tan (x)

Real Entero o real

Real Real

Trunc (x)

X se trunca a la parte entera

Real

Entero

Ejemplos: Redo (5.5) = Redo (-3.5) Trunc (6.7) = Trunc (-3.5) Sqr (25) Abs (-12) Abs (6.5) = = = 6 = 6 = 5 12 6.5 -3 -4

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.

- 37 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

Estos identificadores se construyen de acuerdo a las reglas de sintaxis del lenguaje especfico. 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 Num1 Nombre _ apellido AB456 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,... Invlidos 1AB (por iniciar con un nmero)

1num5 (por iniciar con un nmero) 4Nombre-45*

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)

- 38 -

Algoritmos Computacionales
Longitud.

MSI. Ricardo Alfaro Cullar.

- 39 -

Algoritmos Computacionales
Comparaciones.

MSI. Ricardo Alfaro Cullar.

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 Luis Felipe 135 > < Julio > 445 Verdadero.

Luis Jos verdadero. 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 empleado: A8953 Cdigo & A85
Hernndez Basurto.

resultado

Cdigo

de

resultado

Cdigo A85 resultado


Jacqueline

Jacqueline & Hernndez & Basurto

Subcadena. Una Subcadena es una cadena que forma parte de una cadena mayor. Ejemplo: una sola tarjeta sola tarjeta 200 mil dlares Accidentes. tu ser es una Subcadena de Un mundo de beneficios en una es una Subcadena de Hasta 250 mil dlares en

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

- 40 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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 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.. Subcadena (Nacional Geographic, 4, 4) iona. resultado

Subcadena (Certifcate para trascender, 13,4) resultado para 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.

- 41 -

Algoritmos Computacionales
Comentarios.

MSI. Ricardo Alfaro Cullar.

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.

- 42 -

Algoritmos Computacionales

MSI. 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
Datos de entrada.............................. ...... Proceso clculo................................ .... Datos de salida o de impresin............... A, B, C y D A,B,C,D Ordenarlos en forma inversa D, C, B, A. Inicio

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 1. Construccin del algoritmo
Datos de entrada.............................. ...... Proceso clculo................................ .... Datos de salida o de A, B A,B Inicio

Res = (A+B)2 / 3

Res = (A+B)2 / 3

Res

Res

- 43 -

Fin

Algoritmos Computacionales
impresin...............

MSI. Ricardo Alfaro Cullar.

2. Diagrama de flujo

- 44 -

Inicio

Algoritmos Computacionales
Ejemplo 3.

MSI. Ricardo Alfaro Cullar.

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............................ ........ Proceso clculo............................. ....... Datos de salida o de impresin............... Matrcula (entero) 5 calificaciones (reales) Promedio = (cal1+cal2+cal3+cal4+cal5 )/5 Matrcula, Promedio Mat, Prom Mat, cal1,cal2,cal3, cal4,cal5

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

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.

- 45 -

Algoritmos Computacionales

MSI. 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 Inicio fin leer escribir Si - entonces desde mientras repetir Parada, fin Hasta, que Ingles Begin End Read / input Write / print If then For While Repeat Sotp, end 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

- 46 -

Algoritmos Computacionales
Entonces hacer N * 5 Sino hacer N/5 Fin_si

MSI. Ricardo Alfaro Cullar.

- 47 -

Algoritmos Computacionales
Con indentacin o con sangra Si x<5 Entonces hacer N*5 Sino hacer N/5 Fin_si

MSI. Ricardo Alfaro Cullar.

TABLA REPRESENTACION PSEUDOCODIGO REPRESENTACION SIMBOLO DEL INSTRUCCIN Leer ... EJEMPLO
A,B

Leer (A,B);

Mat, cal

al); Hacer ...


A=A+SUE

Leer(Mat,c

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

- 48 -

Algoritmos Computacionales
Leer (A,B,C,D); Imprimir (D,C,B,A); Fin Ejemplo 2.

MSI. Ricardo Alfaro Cullar.

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.

- 49 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

Defina un pseudocdigo tal que dada la base y la altura de un rectngulo, calcule el permetro y la superficie del mismo. Ejercicio 3. 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. 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 1 pie = 0.3047 mts

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

- 50 -

Algoritmos Computacionales
Ejercicio 9.

MSI. Ricardo Alfaro Cullar.

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.

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 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) 1 hectrea = 10000 m2

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

- 51 -

Algoritmos Computacionales
S = (L1 + L2 + L3) / 2

MSI. Ricardo Alfaro Cullar.

- 52 -

Algoritmos Computacionales

MSI. 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. Operacin: expresa la operacin o conjunto de operaciones que se van a realizar si la condicin resulta verdadera

Condici n

- 53 Operacin

Algoritmos Computacionales

MSI. 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.
Inici o

Pseudocdigo.

CAL

Inicio. Leer (CAL); /*tipo real*/ Si CAL > 8 entonces Imprimir (Aprobado); Fin_si
F

CAL > 8 V

Fin

Aprobado

Fin

- 54 -

Algoritmos Computacionales
Ejemplo 2.

MSI. Ricardo Alfaro Cullar.

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.
Inici o

Pseudocdigo.

Inicio.
SUE NSUE F SUE < 1000 V Fin

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 Fin

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:

- 55 -

Algoritmos Computacionales
Diagrama de flujo:
V Condicin F

MSI. Ricardo Alfaro Cullar.

Pseudocdigo: Si Condicin entonces Hacer Operacin 1 sino Hacer Operacin 2 Fin_si

Operacin 1

Operacin 2

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.
Inici o

Pseudocdigo: 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

- 56 -

Algoritmos Computacionales
Ejemplo 4.

MSI. Ricardo Alfaro Cullar.

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.
Inici o

Pseudocdigo: 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.15

NSUE= SUE*1.12

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.

- 57 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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

SELECTOR
Valor 1 Valor 2 Valor N

ACCION 1

ACCION 2

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

- 58 -

Algoritmos Computacionales
fin_si Hacer accin N+1;

MSI. Ricardo Alfaro Cullar.

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:
SELECTO R

Valor 1

Valor 2

Valor 3

De otra forma

ACCION 1

ACCION 2

ACCION 3

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;

- 59 -

Algoritmos Computacionales
Analicemos el siguiente caso:
Valor 1,2 SELECTO R

MSI. Ricardo Alfaro Cullar.

Valor 3,4,5

De otra forma

ACCION 1

ACCION 2

ACCION X

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.

- 60 -

Algoritmos Computacionales
Ejemplo 5.

MSI. Ricardo Alfaro Cullar.

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: 100 * V 100 ^V VAL 100/V 0 si NUM = 1 si NUM = 2 si NUM = 3 para otro valor de NUM.

Diagrama de flujo.

Inici o NUM, V

1
VAL=100 * V

NUM 2
VAL = 100 ^ V

3
VAL = 100 / V VAL = 0

De otra forma

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;

- 61 -

Algoritmos Computacionales
De otra forma: hacer VAL = 0; fin_si Imprimir (VAL); Fin Ejemplo 6.

MSI. Ricardo Alfaro Cullar.

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 1 2 3 4 AUMENTO 15% 10% 8% 7%

Diagrama de flujo

Inici o

CATE, SUE

1
NSUE=SUE*1.15

CATE 2
NSUE=SUE*1.10

3
NSUE=SUE*1.08

4 NSUE=SUE*1.07

CATE, SUE

Fin

Pseudocdigo. Inicio Leer (CATE, SUE); /* CATE es variables tipo entera, SUE y NSUE son tipo real */

- 62 -

Algoritmos Computacionales
Si CATE igual 1 : hacer NSUE = SUE * 1.15; 2 : hacer NSUE = SUE * 1.10; 3 : hacer NSUE = SUE * 1.08; 4 : hacer NSUE = SUE * 1.07; fin_si Imprimir (CATE, NSUE);
F

MSI. Ricardo Alfaro Cullar.

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 F

V Condicin 2

Operacin 2-1

Operacin 2-2

- 63 -

Algoritmos Computacionales

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

V Condicin 2

F Condicin 3 V

Operacin 2-1

Operacin 2-2 Operacin 3-1

- 64 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

Observe que dentro de la estructura selectiva si-entonces-sino existen otras dos estructuras selectivas. 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 Condicin 1 F

F SELECTO R Valor 1 Valor 2 Operacin 2-1 F Condicin 3 V Operacin 4-1 Operacin 4-2 V Condicin 4 De otra forma F

Condicin 5 V

Operacin 5-1

Operacin 3-1

- 65 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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

- 66 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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)

- 67 -

Algoritmos Computacionales

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

Donde:

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

V=V + increm - 68 -

Algoritmos Computacionales

MSI. 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.
Inici o

SUE1, SUE2, SUE3, SUE4, SUE5

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

NOMINA=SUE1+SUE2+SUE3+SUE4+SUE5

NOMINA

- 69 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

Fin

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.
Inici o

i = 1, NOMINA=0

V i> 5 F

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.

sueldo

NOMINA=NOMINA + sueldo

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.

i = i +1

NOMINA: Es una variable de tipo real que representa un acumulador. Este se utiliza cuando debemos obtener el total acumulado

NOMINA

- 70 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

Fin

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.

Inici o

SUMCERO = 0 i=1

N F
i <= N

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.

V Num F
Num = 0

V
SUMCERO =SUMCERO + Num

i=i+1

SUMCERO

- 71 Fin

Algoritmos Computacionales

MSI. 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 repetidamente. de instrucciones que se ejecutarn

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):

- 72 -

Algoritmos Computacionales
... ... Hacer Pi = Proposicin inicial; Mientras Pi es verdadero repetir ... ... proceso u operaciones a realizar; ... Hacer Pi = Modificacin de Pi; ... fin_mientras. Ejemplo 3.

MSI. Ricardo Alfaro Cullar.

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 Inici flujo. de
o

SUMGAS = 0

Gasto V

Gasto < > -1

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

F
SUMAGAS =SUMGAS + Gasto

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

- 73 -

Fin

Algoritmos Computacionales
Ejemplo 4.

MSI. Ricardo Alfaro Cullar.

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

SUMANUM = 0

Num

Num < > -1

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

SUMANUM =SUMANUM + Num

Num

SUMANUM

Fin

- 74 -

Algoritmos Computacionales

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

- 75 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

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

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 matrices) Registros (Records) Archivos o ficheros (File) Lineales: o o o Pilas Colas Listas enlazadas. vectores y

No lineales:

- 76 -

Algoritmos Computacionales
o o

MSI. Ricardo Alfaro Cullar.


rboles Grfos

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

- 77 -

Algoritmos Computacionales
Multidimensionales.

MSI. Ricardo Alfaro Cullar.

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. Ejemplo: Vector unidimensional.

A [0]
25.4

A [1]
32.0

A [2]
54.3

A [3]
14.2 ...

...

A [24]
11.2

A [25]
95.8

Primer elemento

Segundoele mento

Tercer elemento

Cuarto elemento

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] k[2] k[3] k[4] k[5] 4 12 3 0 7 14 a) Vector en columna

k[0]

k[1]

k[2]

k[3]

k[4]

k[5]

- 78 -

Algoritmos Computacionales
4 12 b) 3 0

MSI. Ricardo Alfaro Cullar.


7 14

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. en Pascal. en Turbo C.

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

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.

- 79 -

Algoritmos Computacionales
Ejemplos: Sea el vector H de 10 elementos siguientes: Eliminacin.

MSI. Ricardo Alfaro Cullar.

H[0]
16.5

H[1]
14.2

H[2]
5.0

H[3]
3.45

H[4]
0

H[5]
-1.0

H[6]
2.45

H[7]
32

H[8]
-45.0

H[9]
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:

- 80 -

Algoritmos Computacionales

MSI. Ricardo Alfaro Cullar.

Instruccin (accin) Escribir H[4] Escribir H[I] donde I = 3 Escribir H[I]+3 donde I=3 Escribir H[I+2] donde I=3 Escribir H[I-1] donde I=3 Escribir H[4+I] donde I=3 Asignar a H[I] = H[I-1] donde I=5 Asignar a H[I-1] = H[I] donde I=9 Asignar a H[I] = H[I+2] donde I=7 Asignar a H[I] = H[12] donde I=5

Efecto o resultado Visualiza 0 Visualiza 3.45 Visualiza 6.45 3.45+3=6.45 Visualiza 1 Visualiza 5 Visualiza 32 valor de H[4] valor de H[3] valor de H[3] =

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

Asigna a H[5] = 0 =0

Asigna a H[8] = -45 valor de H[9-1]=H[8]= -45 Asigna a H[7] = 15 valor de H[7]=H[9]= 15 Error ya que 12 > 9 y no es posible la asignacin

- 81 -

Algoritmos Computacionales

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

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

- 82 -

Algoritmos Computacionales
Asignar H[i] = dato; } fin_mientras

MSI. Ricardo Alfaro Cullar.

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
i <=10

F 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

- 83 -

Algoritmos Computacionales
Ejercicio 9.

MSI. Ricardo Alfaro Cullar.

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

V
sueld o SE[i] = sueldo

Fin

Sum=sum + SE[i]

i=i+1

Prom=Sum/70 cont = 0 i=0

F
i < 70

A F

V
SE[i] > Prom <=70

V
cont=cont +1 i=i+1

- 84 -

Algoritmos Computacionales

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

- 85 -

Algoritmos Computacionales

MSI. 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: 20) X[3][5] 20 (asigna al elemento de la fila 4 y la columna 6 el valor de

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

- 86 -

Algoritmos Computacionales

MSI. 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) j+1)

desde (j =0; j< col ; j 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);

- 87 -

Algoritmos Computacionales
scanf (%d, &x [i] [j]); } }

MSI. Ricardo Alfaro Cullar.

- 88 -

Potrebbero piacerti anche