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
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 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
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
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
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
-5-
Algoritmos Computacionales
3
2 6
0
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
Ejemplo:
Convertir 55 decimal a octal.
6
8 55
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
Ejemplo:
Convertir 55 decimal a hexadecimal.
3
16 55
07
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
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:
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
-9-
Algoritmos Computacionales
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.
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.
- 10 -
Algoritmos Computacionales
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.
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
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
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
4.
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
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
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
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
2
2 5
1
2 2
0
21
5 = 101
1101
(8*1) + (4*1) + (1*1) = 13 = D
Resultado:
558
2D16
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
despejando el valor de x
2 Kb
1Kb
- 15 -
Algoritmos Computacionales
(1024bytes ) * (2 Kb)
= 2048 bytes.
1Kb
4Mb
1Mb
x
x
1Kb
20bytes 1024bytes
x
KB
MB
GB
TB
- 16 -
PB
EB
ZB
YB
Algoritmos Computacionales
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
FINITUD:
claramente.
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
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.
- 19 -
Algoritmos Computacionales
Lectura de
Datos
Procesamiento de
los Datos
Impresin de
los resultados
Fin
- 20 -
Algoritmos Computacionales
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
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.
VLIDO
NO VLIDO
- 22 -
Algoritmos Computacionales
VLIDO
NO VLIDO
CONCEPTOS FUNDAMENTALES.
TIPOS DE DATOS
Los datos a procesar por una computadora pueden clasificarse en:
SIMPLES.
ESTRUCTURADOS.
DATOS SIMPLES.
DATOS ESTRUCTURADOS.
- 23 -
Algoritmos Computacionales
Cada uno de los componentes puede ser a su vez un dato simple y estructurado.
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
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
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
20 .. 25
a .. m
consta de a,b,c,d,e,f,g,h,i,j,k,l y m.
100 .. 150
- 25 -
Algoritmos Computacionales
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
- 26 -
Algoritmos Computacionales
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
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
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 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
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
<=
25 < = 22
Falso
>=
35 > = 20
Verdadero
Ejemplos:
A = 5, B = 16
(A ^2 ) > ( B * 2 )
x = 6, B = 7.8
(x * 5 + B^3 / 4) < = (x ^3 div B)
- 30 -
Algoritmos Computacionales
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
~p
~q
p Vq
p^ q
V Verdadero
V Verdadero
V Verdadero
F falso
F - falso
V Verdadero
F falso
F falso
- 31 -
Algoritmos Computacionales
JERARQUIA
( ) parntesis
Mayor
^ - exponenciacin o potencia
*, /, div, mod
+, = , < >, < =, > =
NOT NO - ~
AND Y - ^
OR O - V
Menor
- 32 -
Algoritmos Computacionales
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:
suma = 0
I=I+1
J=5*7/6
M = 89.34
Acumula = suma * 5
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
DESCRIPCION
TIPO DE ARGUMENTO
TIPO DE RESULTADO
Abs (x)
Valor absoluto de x
Entero o real
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
Real
Log 10 (x)
Logaritmo decimal de x
Real
Sqr (x)
Raz cuadrada x
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)
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
- 34 -
Algoritmos Computacionales
Ejemplos:
Vlidos
Invlidos
Num1
1AB
Nombre _ apellido
AB456
4Nombre-45*
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,...
Comparaciones.
Longitud.
- 35 -
Algoritmos Computacionales
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
resultado
Cdigo A85
resultado
Subcadena.
Una Subcadena es una cadena que forma parte de una cadena mayor.
Ejemplo:
una sola tarjeta
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
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.
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
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
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
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
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
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).
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
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
- 40 -
Algoritmos Computacionales
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
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
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
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
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
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
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:
Operacin
- 45 -
Algoritmos Computacionales
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
CAL > 8
Fin
F
V
Aprobado
Fin
- 46 -
Algoritmos Computacionales
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
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
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
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
SELECTOR
Valor 1
ACCION 1
Valor 2
ACCION 2
Valor N
ACCION N
ACCION N+1
Pseudocdigo.
Si SELECTOR igual
- 50 -
Algoritmos Computacionales
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
- 51 -
Algoritmos Computacionales
De otra forma
Valor 3,4,5
ACCION 1
ACCION 2
ACCION Y
Pseudocdigo.
Si SELECTOR igual
- 52 -
ACCION X
Algoritmos Computacionales
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
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
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
Fin
Condicin 1
V
F
F
Condicin 2
Operacin 2-1
- 55 -
Operacin 2-2
Algoritmos Computacionales
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
- 56 -
Algoritmos Computacionales
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
- 57 -
Algoritmos Computacionales
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
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:
Algoritmos Computacionales
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
...
...
Diagrama de flujo.
Pseudocdigo:
Inicio
Leer (SUE1,SUE2,SUE3,SUE4,SUE5);
Asignar NOMINA=SUE1+SUE2+SUE3+SUE4+SUE5;
Imprimir (NOMINA);
Fin.
Inicio
NOMINA=SUE1+SUE2+SUE3+SUE4+SUE5
NOMINA
Fin
- 60 -
Algoritmos Computacionales
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
NOMINA
Fin
- 61 -
Algoritmos Computacionales
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
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:
cundo finalizar la ejecucin del ciclo. La condicin se evala al inicio del mismo.
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
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
Gasto
SUMGAS
Fin
- 64 -
Algoritmos Computacionales
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
F
SUMANUM =SUMANUM + Num
Num
SUMANUM
Fin
- 65 -
Algoritmos Computacionales
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
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
Estticas
Dinmicas
Registros (Records)
Lineales:
Pilas
Colas
Listas enlazadas.
No lineales:
- 67 -
rboles
Grfos
Algoritmos Computacionales
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.
Multidimensionales.
- 68 -
Algoritmos Computacionales
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.
en Pascal.
Int A[8]
en Turbo C.
----
- 69 -
Algoritmos Computacionales
Asignacin.
Lectura.
Escritura.
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
- 70 -
Algoritmos Computacionales
Instruccin (accin)
Efecto o resultado
Escribir H[4]
Visualiza 0
valor de H[4]
Visualiza 3.45
valor de H[3]
Visualiza 6.45
Visualiza 1
valor de H[3+2]=H[5]= -1
Visualiza 5
valor de H[3-1]=H[2]= 5
Visualiza 32
valor de H[4+3]=H[7]= 32
- 71 -
Algoritmos Computacionales
i=1
F
i <=10
V
dato
H[i] = dato
i=i+1
Pseudocdigo:
Leer (dato);
Asignar H[i] = dato;
} fin_repetir
Leer (dato);
- 72 -
Algoritmos Computacionales
i=1
F
i <=10
V
H[i]
i=i+1
Pseudocdigo:
Imprimir (H[i]);
} fin_repetir
Imprimir (H[i]);
} fin_mientras
- 73 -
Algoritmos Computacionales
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
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
Lenguaje C:
X[3][5] = 20;
- 76 -
Algoritmos Computacionales
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)
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 -