Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ALGORITMOS COMPUTACIONALES.
CONCEPTOS BSICOS.
ARQUITECTURA DE LA COMPUTADORA.
Unidad de control
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.
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
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
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
-5-
Algoritmos Computacionales
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
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
-6-
Algoritmos Computacionales
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
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.
Algoritmos Computacionales
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
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
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.
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
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 -
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 -
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.
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
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
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.
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.
167 26843545 6
166 1677761 6
165 104857 6
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.
5 = 101 5 = 101
2 2 5 1
1 2 2 0
0 2 1 1
- 14 -
Algoritmos Computacionales
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.
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.
5 = 101
- 15 -
Algoritmos Computacionales
2 2 5 1 1 2 2 0 0 2 1 1
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
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:
- 16 -
Algoritmos Computacionales
x= (1024 bytes ) * (2 Kb ) = 2048 bytes. 1Kb
x=
x=
KB
MB
GB
TB
PB
EB
ZB
YB
- 17 -
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
- 18 -
Algoritmos Computacionales
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.
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
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)
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
la
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
- 21 -
Fin
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.
- 22 -
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.
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
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.
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.
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.
- 27 -
Algoritmos Computacionales
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
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 ^ * /
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
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.
Operacin
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
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
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
- 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
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.
JERARQUIA Mayor
EXPRESION LOGICA No p
Y AND
P yq
O OR
Menor
Poq
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
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.
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)
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 -
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
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 Real
Trunc (x)
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
- 37 -
Algoritmos Computacionales
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)
- 38 -
Algoritmos Computacionales
Longitud.
- 39 -
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 Luis Felipe 135 > < Julio > 445 Verdadero.
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
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
- 40 -
Algoritmos Computacionales
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.
- 41 -
Algoritmos Computacionales
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.
- 42 -
Algoritmos Computacionales
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...............
2. Diagrama de flujo
- 44 -
Inicio
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 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
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
- 47 -
Algoritmos Computacionales
Con indentacin o con sangra Si x<5 Entonces hacer N*5 Sino hacer N/5 Fin_si
TABLA REPRESENTACION PSEUDOCODIGO REPRESENTACION SIMBOLO DEL INSTRUCCIN Leer ... EJEMPLO
A,B
Leer (A,B);
Mat, cal
Leer(Mat,c
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
- 48 -
Algoritmos Computacionales
Leer (A,B,C,D); 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.
- 49 -
Algoritmos Computacionales
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.
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
- 52 -
Algoritmos Computacionales
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
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.
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
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
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.
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
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.
- 58 -
Algoritmos Computacionales
fin_si Hacer accin N+1;
La estructura selectiva si mltiple es muy flexible, lo que permite aplicarla de diferentes formas. Obsrvese los siguientes diagramas de flujo y las explicaciones correspondientes:
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
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;
- 60 -
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: 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.
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
Fin
Condicin 1 F
V Condicin 2
Operacin 2-1
Operacin 2-2
- 63 -
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
V Condicin 2
F Condicin 3 V
Operacin 2-1
- 64 -
Algoritmos Computacionales
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)
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
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
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
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
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
NOMINA=SUE1+SUE2+SUE3+SUE4+SUE5
NOMINA
- 69 -
Algoritmos Computacionales
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
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
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.
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.
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
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.
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
Pseudocdigo: Inicio Asignar SUMANUM = 0; Leer (Num); Mientras Num < > -1 repetir { Asignar SUMANUM=SUMANUM + Num; Leer (Num); } fin_while Imprimir (SUMANUM); Fin. F
Num
SUMANUM
Fin
- 74 -
Algoritmos Computacionales
* * 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
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
No lineales:
- 76 -
Algoritmos Computacionales
o o
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:
Los arreglos se clasifican en: Unidimensionales (vectores o listas). Bidimensionales (tablas o matrices).
- 77 -
Algoritmos Computacionales
Multidimensionales.
Para poder utilizar un array en un problema es necesario declararlos previamente al comienzo del programa indicando el nmero y tipo de elementos que puede contener.
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
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.
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;
- 79 -
Algoritmos Computacionales
Ejemplos: Sea el vector H de 10 elementos siguientes: Eliminacin.
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
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] =
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
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
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_mientras
- 83 -
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
V
sueld o SE[i] = sueldo
Fin
Sum=sum + SE[i]
i=i+1
F
i < 70
A F
V
SE[i] > Prom <=70
V
cont=cont +1 i=i+1
- 84 -
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
- 85 -
Algoritmos Computacionales
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
- 86 -
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)
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]); } }
- 88 -