manual de introduccion algoritmos computacionales

95

Upload: raki-sanz

Post on 05-Jul-2015

1.422 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Manual de Introduccion Algoritmos Computacionales
Page 2: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

ALGORITMOS COMPUTACIONALES.

CONCEPTOS BÁSICOS.

ARQUITECTURA DE LA COMPUTADORA.

- 2 -

Unidad de control

Unidad Aritmética y Lógica. (A.L.U)

Memoria RAM (Almacenamiento primario)

Dispositivos de ENTRADA - INPUT

Dispositivos de SALIDA - OUTPUT

Almacenamiento Secundario

Línea de comunicación

Page 3: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

COMPUTADORAEs un dispositivo electro – mecánico que dados unos datos de entrada tiene la capacidad de

almacenarlos, procesarlos, realizando operaciones aritméticas 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 instrucción.o Entenderla, es decir, codificarla, para que los dispositivos correspondientes la

ejecuten.o Mandarla a ejecutar a los dispositivos.

Unidad Aritmética-Lógica: Se encarga de realizar las operaciones aritméticas 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 dirección y un contenido.

Ejemplos:

Dispositivos de entrada: Aquellos que permiten la introducción de datos para ser procesados. Ejemplos:

o Teclado.o Mouse.o Scanner.o Disquetes (Flexibles, Duros, Zip, Jazz, etc)o Lápiz óptico.

Dispositivos de salida: Aquellos que despliegan el resultado del proceso que se les da a los datos de entrada. Ejemplos:

o Impresora.o Monitor.o Disquetes (Flexible, Duros, Zip, Jazz, etc)o Plotters.

- 3 -

Dirección de memoria

CONTENIDO

0000 0000

1100 0101

0000 0001

1110 1110

0000 0010

1000 1011

Page 4: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

SISTEMAS NUMERICOS.

Sistema Base No de dígitos Dígitos Dígito mayorDecimal 10 10 0,1,2,3,4,5,6,7,8,9 9Binario 2 2 0,1 1Octal 8 8 0,1,2,3,4,5,6,7 7Hexadecimal 16 16 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)

F = 15

COMPARATIVO ENTRE SISTEMAS NUMERICOS.

DECIMAL BINARIO OCTAL HEXADECIMAL0 0000 0000 01 0001 0001 12 0010 0002 23 0011 0003 34 0100 0004 45 0101 0005 56 0110 0006 67 0111 0007 78 1000 0010 89 1001 0011 910 1010 0012 A11 1011 0013 B12 1100 0014 C13 1101 0015 D14 1110 0016 E15 1111 0017 F16 0001 0000 0020 1017 0001 0001 0021 1118 0001 0010 0022 1219 0001 0011 0023 1320 0001 0100 0024 1421 0001 0101 0025 1522 0001 0110 0026 1623 0001 0111 0027 1724 0001 1000 0030 1825 0001 1001 0031 1926 0001 1010 0032 1 A27 0001 1011 0033 1 B28 0001 1100 0034 1 C29 0001 1101 0035 1 D30 0001 1110 0036 1 E31 0001 1111 0037 1 F32 0010 0000 0040 2033 0010 0001 0041 2134 0010 0010 0042 2235 0010 0011 0043 2336 0010 0100 0044 2437 0010 0101 0045 2538 0010 0110 0046 2639 0010 0111 0047 2740 0010 1000 0050 2841 0010 1001 0051 2942 0010 1010 0052 2 A43 0010 1011 0053 2 B44 0010 1100 0054 2 C

- 4 -

Page 5: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

CONVERSIONES ENTRE SISTEMAS NUMÉRICOS.

DE DECIMAL A BINARIO.

Una de varias metodologías que existen para la conversión entre ambos sistemas es el “Método de la división” y se aplica de la siguiente manera:

1. Se divide el número decimal a convertir entre 2 (por ser base dos, es decir, sistema binario).

2. El resultado que de en el cociente se vuelve a dividir entre 2 y el residuo (que deberá ser un valor entre 0 - 1) es nuestro primer resultado que iremos anotando de derecha a izquierda para obtener nuestro resultado final: el número convertido a binario.

3. Si el cociente = 0 entonces se anota el número que queda en el residuo y se finaliza con el método. El número que queda escrito, es el resultado final; de lo contrario, regresar al paso 2.

Ejemplo: Convertir 55 decimal a binario.

Nuestro resultado de la primera división es: cociente=27 residuo=1tomamos el valor del residuo, nuestro primer valor resultado.

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

Nuestro resultado de la segunda división es: cociente=13 residuo=1

tomamos el valor del residuo y lo colocamos a la izquierda del resultado anterior y seguimos dividiendo el valor que queda como cociente entre 2 hasta que el cociente= 0.

Resultado parcial: 11

Resultado parcial: 111

Resultado parcial: 0111

Resultado parcial:10111

- 5 -

Page 6: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Resultado parcial: 110111Como 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 OCTALLa metodología a aplicar es muy similar a la conversión entre decimal y binario, lo que cambia

ahora es que la división se hace entre 8 en lugar de 2. Aplique el “Método de la división” y haga los siguientes pasos:

1. Se divide el número decimal a convertir entre 8 (por ser base ocho, es decir, sistema octal).

2. 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 número convertido a octal.

3. Si el cociente = 0 entonces se anota el número que queda en el residuo y se finaliza con el método. El número que queda escrito, es el resultado final; de lo contrario, regresar al paso 2.

Ejemplo: Convertir 55 decimal a octal.

Nuestro resultado de la primera división es: cociente=6 residuo=7tomamos el valor del residuo, nuestro primer valor resultado.

Resultado parcial: 7

Ahora dividimos el resultado del cociente entre 8:

- 6 -

Page 7: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Nuestro resultado de la segunda división es: cociente=0 residuo=6

y lo colocamos a la izquierda del resultado. Como el cociente = 0 terminamos de hacer las divisiones, por lo tanto se tiene el resultado final:

55 decimal a octal = 67Convertir:

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 “Método de la división”se aplican los siguientes pasos:

1. Se divide el número decimal a convertir entre 16 (por ser base dieciséis, es decir, sistema hexadecimal).

2. 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 número 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”.

3. Si el cociente = 0 entonces se anota el número que queda en el residuo y se finaliza con el método. El número que queda escrito, es el resultado final; de lo contrario, regresar al paso 2.

Ejemplo: Convertir 55 decimal a hexadecimal.

Nuestro resultado de la primera división es: cociente=3 residuo=7

tomamos el valor del residuo, nuestro primer valor resultado.

Resultado parcial: 7

Ahora dividimos el resultado del cociente entre 16:

- 7 -

Page 8: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Nuestro resultado de la segunda división es: cociente=0 residuo=3

Como el cociente = 0 terminamos de hacer las divisiones, por lo tanto se tiene el resultado final:

55 decimal a octal = 37

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

Las conversiones de binario, octal y hexadecimal a sistema decimal, es muy similar aplicando el “Método de la casilla”, la diferencia es aplicar la base de la cual se desea convertir el número a decimal.

DE BINARIO A DECIMAL.

Base 27 26 25 24 23 22 21 20

Resultado de la base.

128 64 32 16 8 4 2 1Número a convertir

“Método de la casilla”

1. Se colocan los dígitos del número 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.

- 8 -

Page 9: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

4. El resultado de la sumatoria será el número convertido a decimal.Ejemplo:

Convertir 1110101 a decimal.

Colocamos cada uno de los dígitos del número binario en las casillas correspondientes

de derecha a izquierda, tal y como se da el número binario.

Base 27 26 25 24 23 22 21 20

Resultado de la base.

128 64 32 16 8 4 2 1Número a convertir

1 1 1 0 1 0 1

Se multiplican los resultados de la base por su número correspondiente de cada casilla y se van sumando, es decir:64 * 1 + 32 * 1 + 16 * 1 + 8 * 0 + 4 * 1 + 2 * 0 + 1 * 1 =64 + 32 +16 + 4 + 1 = 117. Resultado final: 117

- 9 -

Page 10: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

DE BINARIO A OCTAL.

Se agrupa el número binario en grupos de 3 dígitos empezando de derecha a izquierda. Si no se consiguen todos los grupos de tres se añadirán los ceros que sean necesarios al último grupo, o sea se agregan ceros a la izquierda. Se colocan los dígitos de derecha a izquierda en las casillas, esto es por cada grupo por separado. Entonces cada grupo se convierte a su equivalente octal.

Ejemplo:

Convertir 11001. Se agrupa en 3 dígitos de derecha a izquierda:

1 1 0 0 1

En este caso, el último grupo solo tiene dos dígitos, por lo que se agrega con un cero a la izquierda.011 001

Ahora se convierte a su equivalente en octal, cada grupo.

Base 22 21 20

Resultado de la base.

4 2 1

Número a convertir

0 1 1

Se multiplican los resultados de la base por su número 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 número binario en grupos de 4 dígitos empezando de derecha a izquierda. Si no se consiguen todos los grupos de cuatro se añadirán los ceros que sean necesarios al último grupo, o sea se agregan ceros a la izquierda. Se colocan los dígitos de derecha a izquierda en las casillas, esto es por cada grupo por separado. Entonces cada grupo se convierte a su equivalente octal.

Ejemplo:

Convertir 110101. Se agrupa en 4 dígitos de derecha a izquierda:

1 1 0 1 0 1

En este caso, el último grupo solo tiene dos dígitos, por lo que se agrega con dos ceros a la izquierda.

- 10 -

Base 22 21 20

Resultado de la base.

4 2 1

Número a convertir

0 0 1

Page 11: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

0011 0101

Ahora se convierte a su equivalente en hexadecimal, cada grupo.

Base 23 22 21 20

Resultado de la base.

8 4 2 1

Número a convertir

0 0 1 1

Se multiplican los resultados de la base por su número 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 87 86 85 84 83 82 81 80

Resultado de la base.

2097152 262144 32768 4096 512 64 8 1Número a convertir

“Método de la casilla”

1. Se colocan los dígitos del número octal 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 dígitos del número octal.3. Sume los resultados de cada una de las multiplicaciones.4. El resultado de la sumatoria será el número convertido a decimal.

Convertir 134 octal a decimal. Colocamos cada uno de los dígitos del número octal en las casillas correspondientes de derecha a izquierda, tal y como se da el número octal.

Base 87 86 85 84 83 82 81 80

Resultado de la base.

2097152 262144 32768 4096 512 64 8 1Número a convertir

1 3 4

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

- 11 -

Base 23 22 21 20

Resultado de la base.

8 4 2 1

Número a convertir

0 1 0 1

Page 12: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

64 * 1 + 8 * 3 + 1 * 4 =64 + 24 + 4 = 92.

Resultado final: 92

DE OCTAL A BINARIO.

La conversión de octal a binario se facilita porque cada dígito octal se convierte directamente en 3 dígitos binarios equivalentes.

Ejemplo:

Convertir el número 75 a binario.

7 = 111

5 = 101

El resultado es 758 = 1111012

DE HEXADECIMAL A DECIMAL.

Base 167 166 165 164 163 162 161 160

Resultado de la base.

268435456 16777616 1048576 65536 4096 256 16 1Número a convertir

“Método de la casilla”

1. Se colocan los dígitos del número 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 dígitos del número 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 número convertido a decimal.

Ejemplo:

Convertir 5C hexadecimal a decimal.

Colocamos cada uno de los dígitos del número octal en las casillas correspondientes de derecha a izquierda, tal y como se da el número octal.

- 12 -

Page 13: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Base 167 166 165 164 163 162 161 160

Resultado de la base.

268435456 16777616 1048576 65536 4096 256 16 1Número a convertir

5 C

Se multiplican los resultados de la base por su número 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 conversión de hexadecimal a binario se facilita porque cada dígito hexadecimal se convierte directamente en 4 dígitos binarios equivalentes.

Ejemplo: Convertir 55 hexadecimal a binario.

5 = 101

5 = 101

Como el 5 tiene solamente tres dígitos y la conversión 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 conversión de hexadecimal a octal es un poco más complicada ya que primero se tiene que convertir el número hexadecimal a binario y después de binario a octal.

Ejemplo: Convertir 55 hexadecimal a octal.

Se debe convertir a binario

5 = 101

5 = 101

- 13 -

Page 14: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

55 = 01010101 (Cada número es un grupo de 4 dígitos)

Ahora se hace la conversión de binario a octal (grupo de 3 dígitos).

001 010 1011*1 = 1 2*1 = 2 (4*1) + (1*1) = 5

Resultado: 5516 = 1258

DE A OCTAL A HEXADECIMAL.

La conversión de octal a hexadecimal es simplemente la operación inversa de hexadecimal a octal. El número octal se convierte a binario y después de binario a hexadecimal.

Ejemplo: Convertir 55 octal a hexadecimal.

Se debe convertir a binario

5 = 101

5 = 101

55 = 101101 (Cada número es un grupo de 3 dígitos)

Ahora se hace la conversión de binario a hexadecimal (grupo de 4 dígitos).

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

Resultado: 558 = 2D16

CONVERSIÓN ENTRE UNIDADES DE COMPUTACIÓN. Un bit (binary digit) es la unidad mínima en un sistema de cómputo. Es igual a 1 ó 0. Un byte es la unidad principal de almacenamiento de memoria. Es equivalente a 8 bits y

es igual a 1 carácter (número, letra, símbolo).

Las unidades que más se utilizan en un sistema de cómputo y sus equivalencias son:

bit bit equivale a 1 ó 0Byte Byte (B) equivale a 8 bits

- 14 -

Page 15: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Kilobyte Kbyte (KB) equivale a 1024 bytes

Megabyte Mbyte (MB) equivale a 1024 KbytesGigabyte Gbyte (GB) equivale a 1024 MbytesTerabyte Tbyte (TB) equivale a 1024 GbytesPetabyte Pbyte (PB) equivale a 1024 Tbytes

Exabyte Ebyte (EB) equivale a 1024 PbytesZettabyte Zbyte (ZB) equivale a 1024 EbytesYottabyte Ybyte (YB) equivale a 1024 Zbytes

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

Convertir 2Kb a bytes.

despejando el valor de “x”

= 2048 bytes.

Convertir 4Mb a Kb.

= 4096 Kb.

Convertir 20 bytes a Kb.

= = 0.01953 Kb

En resumen para la conversión de unidades de cómputo se muestra a continuación:

De mayor a menor se multiplica por 1024

B KB MB GB TB PB EB ZB YB

- 15 -

Page 16: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

De menor a mayor se divide por 1024

- 16 -

Page 17: Manual de Introduccion Algoritmos Computacionales

Problema

Análisis profundo del problema

Análisis profundo del problema

Construcción del algoritmo.Construcción

del algoritmo.

Verificación del algoritmo.

Verificación del algoritmo.

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

INTRODUCCION A LOS ALGORITMOS Y PROGRAMAS – DIAGRAMAS DE FLUJO.

Casi de forma inconsciente, cotidianamente los humanos efectúan una serie de pasos, procedimientos o acciones que permiten alcanzar un resultado o resolver un problema.

Continuamente se siguen una serie de pasos o conjunto de acciones que permiten alcanzar un resultado. En realidad se está aplicando un algoritmo para resolver un problema.

Un algoritmo es un conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema.

Muchas veces aplicamos el algoritmo de manera inadvertida inconsciente o automáticamente. Esto generalmente se produce cuando el problema que se tiene enfrente se ha resuelto con anterioridad un gran número de veces.

Por otra parte, existe una gran cantidad de problemas que requieren de un análisis profundo y de un pensamiento flexible y estructurado para su solución. Invariablemente surgen ciertas preguntas:

¿Se puede enseñar a resolver un problema?

¿Se puede enseñar a analizarlo?

¿Se puede enseñar a pensar...?

Lógicamente las respuestas no son fáciles de obtener. No existen reglas específicas que nos permitan resolver un problema. Sin embargo se puede ofrecer un conjunto de técnicas y herramientas metodológicas que permitan flexibilizar y estructurar el razonamiento utilizado en la resolución de un problema. Eso provocará finalmente la construcción de algoritmos eficientes.

En la siguiente figura se muestran las etapas para la solución de un problema:

- 17 -

Page 18: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Las características 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 idénticos de entrada, siempre deben arrojar los mismos resultados.

FINITUD: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de longitud finita.

Un algoritmo consta de 3 secciones o módulos principales:

El Módulo I representa la operación o acción que permite el ingreso de los datos del problema.

El Módulo II representa la operación o conjunto de operaciones secuenciales, cuyo objetivo es obtener la solución del problema.

El Módulo III representa una operación o conjunto de operaciones que permiten comunicar al exterior el o los resultados alcanzados.

- 18 -

Algoritmo

DATOS DE ENTRADA

DATOS DE ENTRADA

PROCESAMIENTO DE LOS

IMPRESIÓN DE RESULTADOSIMPRESIÓN DE

RESULTADOS

Page 19: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

DIAGRAMAS DE FLUJO.Un diagrama de flujo representa la esquematización gráfica de un algoritmo.

En realidad muestra gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema. Si el diagrama de flujo está completo y correcto, el paso del mismo a un lenguaje de programación es relativamente simple y directo.

La siguiente tabla presenta los símbolos usados para la construcción de un diagrama de flujo. (estos satisfacen las recomendaciones del Internacional Standard Organization – ISO y la American Nacional Standard Institute – ANSI)

SIMBOLOS UTILIZADOS EN LOS DIAGRAMAS DE FLUJO.REPERESENTACION DEL SÍMBOLO EXPLICACION DEL SIMBOLO

Símbolo utilizado para marcar el inicio y el fin del diagrama de flujo.

Símbolo utilizado para introducir los datos de entrada. Expresa lectura.

Símbolo utilizado para representar un proceso. En su interior se expresan asignaciones, operaciones aritméticas, cambios de valor de celdas de memoria, etc.

Símbolo utilizado para representar una decisión. En su interior se almacena una condición, y dependiendo del resultado de la evaluación de la misma se sigue por una de las ramas o caminos alternativos. Este símbolo se utiliza en la estructura selectiva si-entonces y si – entonces – sino, y en las estructuras repetitivas repetir y mientras.

Símbolo utilizado para representar una decisión múltiple. En su interior se almacena un selector, y dependiendo del valor de dicho selector se sigue por una de las ramas o caminos alternativos. Este símbolo se utiliza en la estructura selectiva si – múltiple.

- 19 -

Page 20: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Símbolo utilizado para representar la impresión de un resultado. Expresa escritura.

Símbolos utilizados para expresar la dirección del flujo del diagrama.

Símbolo para representar conexión dentro de una misma página.

Símbolo utilizado para expresar conexión entre páginas diferentes.

Símbolo utilizado para expresar un módulo 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 construcción un diagrama de flujo:

- 20 -

Inicio

Lectura de Datos

Procesamiento de los Datos

Impresión de los resultados

Fin

NOTA: Estas fases se presentan en la mayoría de los diagramas de flujo, aunque a veces en orden diferente o repitiendo alguna (s) de

Page 21: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

REGLAS PARA LA CONSTRUCCION DE DIAGRAMAS DE FLUJO.

Se debe recordar que un diagrama de flujo debe ilustrar gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema. Los símbolos presentados, colocados adecuadamente, permiten crear una estructura gráfica flexible que ilustra los pasos a seguir para alcanzar un resultado específico.

El diagrama de flujo facilitará posteriormente la escritura del programa en algún lenguaje de programación.

REGLAS:

1. Todo diagrama de flujo debe tener un inicio y un fin.

2. Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas, verticales y horizontales.

- 21 -

Inicio

Fin

No deben ser

inclinadas

Ni tampoco

deberán cruzarse.

Page 22: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

3. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión, impresión, conexión o fin de programa.

4. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión, impresión, conexión 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 notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de programación. La solución presentada en el diagrama puede escribirse posteriormente y fácilmente en diferentes lenguajes de programación.

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 más de una hoja para su construcción, se debe utilizar los conectores adecuados y enumerar las páginas convenientemente.

9. No puede llegar más de una línea a un símbolo.

- 22 -

VÁLID NO VÁLIDO

Page 23: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

CONCEPTOS FUNDAMENTALES.

TIPOS DE DATOS

Los datos a procesar por una computadora pueden clasificarse en:

SIMPLES.

ESTRUCTURADOS.

DATOS SIMPLES.

Ocupen sólo una casilla de memoria.

Dentro de este grupo se encuentran:

ENTEROS.

REALES.

CARACTERES.

BOLÉANOS.

ENUMERADOS.

SUBRANGO.

DATOS ESTRUCTURADOS.

Ocupan un grupo de casillas de memoria.

Tienen varios componentes.

- 23 -

VÁLID NO VÁLIDO

Page 24: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

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 numéricos ENTEROS y REALES.

Los ENTEROS son números que pueden estar precedidos del signo + o -, y que no tienen parte decimal.

Ejemplos: 128 1528 -714 8530 16325-14830.

Los REALES son números 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 CARÁCTER (simple) y CADENA DE CARACTERES (estructurado).

Son datos cuyo contenido pueden ser letras del abecedario (a,b,c,d,...,x,y,z), dígitos (0,1,2,3,...,8,9) o símbolos especiales (#,%,$,*,/,!...) y que van encerrados entre comillas o dobles comillas, dependiendo del lenguaje de programación.

Aunque se usan números (caracteres), no pueden realizarse operaciones aritméticas.

Un dato tipo CARÁCTER contiene un solo carácter: ‘a’ , ‘B’ , ‘9’, ‘ # ’, ‘ f ’, ...

- 24 -

Page 25: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

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

DATOS LÓGICOS.

Dentro de este tipo de datos se encuentran los boléanos. 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, Otoño, Invierno).

Tiendas=(Liverpool, FábricasFrancia, Palacio).

Equipos=(UNAM,Guadalajara, Atlas, América).

DATOS SUBRANGO.

Se define de un tipo de dato ordinal, especificando dos constantes de ese tipo, una como límite inferior y otra como límite superior.

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

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

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

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

- 25 -

Page 26: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

IDENTIFICADORES, CONSTANTES Y VARIABLES.Los datos a procesar por una computadora, ya sean simples o estructurados,

deben almacenarse en casillas o celdas de memoria para su posterior utilización. Estas casillas o celdas de memoria (constantes o variables) tienen un nombre que permite su identificación.

Se llamará identificador al nombre que se le da a las casillas de memoria. Un identificador se forma de acuerdo a ciertas reglas:

1. El primer carácter que forma un identificador debe ser una letra: a,b,c,d,,...z.

2. Los demás caracteres pueden ser letras (a,b,c,...z.), dígitos (0,1,2,...,9) o el guión bajo ( _ ).

3. La longitud del identificador varía de acuerdo al lenguaje de programación utilizado se recomienda entre 7 y 15 caracteres.

CONSTANTES.

Las constantes son datos que no cambian durante la ejecución de un programa. Para nombrar las constantes se usan los identificadores.

Existen constantes enteras, reales, carácter, cadena de caracteres, booleanas, etc.

Ejemplos:

- 26 -

SUMA ACUMAUXILIAR X7

MEMORIA

5 “Resultado” 7.57

NUM RESULTADO NUMREAL

Page 27: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Estas constantes no cambian durante la ejecución de un programa. Es importante que los nombres de las constantes sean representativos de la función que tienen en el programa.

VARIABLES.

Las variables son objetos que pueden cambiar su valor durante la ejecución de un programa. Para nombrarlas se utilizan identificadores.

Al igual que las constantes, pueden existir tipos de variables como tipos de datos.

Estas Variables cambiarán su valor durante la ejecución del programa. Los nombres de las variables deben ser representativos de la función que cumplen en un programa.

OPERACIONES ARITMETICAS.

Para realizar operaciones aritméticas se requieren de operadores aritméticos. Estos operadores permiten realizar operaciones aritméticas entre operandos: números constantes o variables. El resultado de una operación aritmética será un número.

Los operadores aritméticos son los siguientes:

Operador Aritmético Operación Ejemplo Resultado

^ Potencia 4^3 (4*4*4) 64

* Multiplicación 8*7 56

/ División 15/4 3.75

+ Suma 5+8 13

- Resta 65 – 35 30

mod Módulo (residuo) 15 mod 2 1

- 27 -

0.0 0.0 1.0

I SUELDO SUMA

Page 28: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

div División entera 17 div 3 5

Al evaluar expresiones que contienen operadores aritméticos se debe respetar la jerarquía en el orden de aplicación. Es decir, si se tiene en una expresión más de un operador, se debe aplicar primero el operador de mayor jerarquía, se resuelve esa operación, y así sucesivamente. En la siguiente tabla se presenta la jerarquía de los operadores.

Operador Jerarquía Operación

^ Mayor Potencia

*, /, mod, div Multiplicación, división, módulo, división entera.

+, - Menor Suma, resta

Las reglas para resolver una expresión aritmética son las siguientes:

1. Si una expresión contiene subexpresiones entre paréntesis, éstas se evalúan primero; respetando la jerarquía de los operadores aritméticos en esta subexpresión. Si las subexpresiones se encuentran anidadas por paréntesis, primero se evalúan las subexpresiones que se encuentran en el último nivel de anidamiento.

2. Los operadores aritméticos se aplican teniendo en cuenta la jerarquía y de izquierda a derecha.

Ejemplos:

7 + 5 – 6 * 2

Primero se evalúa la multiplicación por ser de mayor jerarquía.

7 + 5 – 12

Como la suma y la resta tienen la misma jerarquía la evaluación se realiza de izquierda a derecha, es decir, primero la suma y en el siguiente paso la resta.

12 – 12 = 0.

9 + 7 * 8 – 5 / 5

Por tener la misma jerarquía la multiplicación y la división, se evalúa de izquierda a derecha, primero la multiplicación y posteriormente la división.

9 + 56 – 1

- 28 -

Page 29: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Por tener la misma jerarquía la suma y la resta se evalúan de izquierda a derecha, es decir, primero la suma y después la resta.

65 – 1 = 64

7 * 5 ^ 3 /4 div 3

Primero se evalúa la potencia.

7 * 125 / 4 div 3

Después los tres operandos que restan tienen la misma jerarquía, por lo que se hace la evaluación de izquierda a derecha, primero la multiplicación, después la división y por último la división entera.

875 / 4 div 3

218.75 div 3 = 72

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

Por haber paréntesis, primero se evalúan las expresiones dentro del mismo. Y ya en el interior del paréntesis se observa que hay un operando de potencia y un operando mod, por tanto, se evalúa primero la potencia y al final el mod.

2 * 3 * (4 mod 9) div 2 * 3 – 7

2 * 3 * ( 4 ) div 2 * 3 – 7

Después se tienen tres operandos de multiplicación y uno de división entera, por lo que se hace la evaluación de izquierda a derecha por tener la misma jerarquía 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 lógicas o booleanas, llamadas así en honor al matemático George Boole, están constituidas por números, constantes o variables y operadores lógicos relacionales.

El valor que toman es el de verdadero/true o falso/false.

- 29 -

Page 30: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Se utilizan frecuentemente en las estructuras selectivas (dependiendo del resultado de la evaluación se toma por un determinado camino alternativo) y en las estructuras repetitivas (dependiendo del resultado de la evaluación se continúa con el ciclo o se interrumpe el mismo).

OPERADORES RELACIONALES.

Los operadores relacionales son operadores que pemiten comparar dos operandos. Los operandos pueden ser números, alfanuméricos, constantes o variables, y éstas a su vez pueden ser del tipo entero, real, carácter o cadena de caracteres.

El resultado de una expresión con operadores relacionales es verdadera o falso.

OPERADOR OPERACIÓN EJEMPLO RESULTADO.

= Igual que ‘ hola ’ = ‘ lola ’ Falso

< > Diferente a ‘ a ‘ < > ‘ b ‘ Verdadero

< Menor que 7 < 15 Verdadero

> Mayor que 22 > 11 Verdadero

< = Menor o igual que 25 < = 22 Falso

> = Mayor o igual que 35 > = 20 Verdadero

Ejemplos:

A = 5, B = 16

(A ^2 ) > ( B * 2 )

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

= 25 > 32

= falso

x = 6, B = 7.8

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

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

(6 * 5 + 474.552 / 4) < = (216 div 7.8)

(30 + 474.552 / 4) < = (27)

(30 + 118.638) < = 27

148.638 < = 27

falso

- 30 -

Page 31: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

NOTA: Cuando se utilizan los operadores de relación con operandos lógicos, falso es menor que verdadero.

OPERADORES LOGICOS.

Los operadores lógicos son operadores que permiten formular condiciones complejas a partir de condiciones simples. Los operadores lógicos son de conjunción – and – y, disyunción – or – o y negación – not – no.

OPERADOR LOGICO JERARQUIA EXPRESION LOGICA SIGNIFICADO

NO – NOT Mayor No p No p (~ p)

No es cierto que p

Es falso que p

Y – AND P y q P ^ q

p sin embargo q

O – OR Menor P o q P V q

o p o q o ambos

Mínimo p o q

TABLA DE VERDAD DE LOS OPERADORES LOGICOS.

p q ~ p ~ q p V q p^ q

V – Verdadero V – Verdadero F F V V

V – Verdadero F – falso F V V F

F - falso V – Verdadero V F V F

F – falso F – falso V V F F

En la tabla de verdad se tienen dos enunciados lógicos: 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 lógicos, es decir, en la columna ~ p, el valor que se tiene original de p es verdadero, como tiene el símbolo de negación ~ y como solo puede tomar dos valores, el resultado se interpreta como negando p que es igual a falso.

- 31 -

Page 32: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Se puede observar que para los valores resultado de las columnas de AND (^) y de OR ( V ) se obtienen haciendo el análisis 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 expresión resultado da V – verdadero. Para el caso del AND (^) ambos enunciados deberán ser V – verdadero para que la expresión resultado de V – verdadero. Para el resultado F – falso se deberá hacer un análisis similar.

TABLA RESUMEN DE JERARQUIA DE LOS OPERADORES.

OPERADORES JERARQUIA

( ) – paréntesis Mayor

^ - exponenciación o potencia

*, /, div, mod

+, -

= , < >, < =, > =

NOT – NO - ~

AND – Y - ^

OR – O - V Menor

Recordando que operadores de igual jerarquía se aplica la regla de evaluar la expresión de izquierda a derecha, de lo contrario se aplica el operador que tenga mayor jerarquía, en donde los paréntesis tendrán la mayor jerarquía hasta el operador lógico OR – O – V con menor jerarquía.

Ejemplos:

NOT (15>=7^2) OR (43 – 8 * 2div4 < > 3 * 2 div 2)

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

NOT (falso) OR (43 – 4 < > 3)

Verdadero OR (39 < > 3)

Verdadero OR (verdadero)

Verdadero OR verdadero= (observe la tabla de verdad anterior para obtener el resultado)

Verdadero.

(15>=7*3^2 AND 8>3 AND 15 > 6) OR NOT(7*3<5+12*2div3^2)

- 32 -

Page 33: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

(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 lógico y un numérico, utilizando un operador relacional, por tanto el resultado se expresa como Error)

= Error.

BLOQUES DE ASIGNACION

Un bloque de asignación se utiliza para asignar valores o expresiones a una variable. La asignación es una operación destructiva. Esto significa que si la variable tenía asignado un valor anteriormente, éste se destruye, conservando ahora el nuevo valor.

El formato de la asignación es el siguiente:

Variable = expresión / valor.

Ejemplos:

suma = 0

I = I + 1

J = 5 * 7 / 6

M = 89.34

Acumula = suma * 5

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

- 33 -

Page 34: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

FUNCIONES INTERNAS

Además de las operaciones básicas ya estudiadas, existe otro conjunto de funciones predefinidas que normalmente incorporan la mayoría de los lenguajes. Para utilizar cualquiera de estas funciones, simplemente se da el nombre de la función, seguida por una constante, variable o expresión denominada argumento encerrado entre paréntesis.

- 34 -

Page 35: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

A continuación se muestran las funciones más usuales:

FUNCION DESCRIPCION TIPO DE ARGUMENTO TIPO DE RESULTADO

Abs (x) Valor absoluto de x Entero o real Igual que el argumento

Arctan (x) Arco tangente de x (radianes)

Entero o real Real

Cos (x) Coseno de x (radianes) Entero o real Real

Ent (x) Parte entera de x Entero o real Entero

Exp (x) Exponencial de x Entero o real Real

Ln (x) Logaritmo natural x Entero o real positivo Real

Log 10 (x) Logaritmo decimal de x Entero o real positivo Real

Sqr (x) Raíz cuadrada x Entero o real positivo Real

Redo (x) X se redondea al entero más próximo.

Real Entero

Sin (x) Seno de x (radianes) Real Real

Tan (x) Tangente de x (radianes) Entero o real Real

Trunc (x) X se trunca a la parte entera

Real Entero

Ejemplos:

Redo (5.5) = 6

Redo (-3.5) = -4

Trunc (6.7)= 6

Trunc (-3.5) = -3

Sqr (25) = 5

Abs (-12) = 12

Abs (6.5) = 6.5

IDENTIFICADORES Y PALABRAS RESERVADAS.

IDENTIFICADORES: Son los nombres que se dan a los programas, constantes, variables, subprogramas y otros objetos o entidades de dígitos, pero deben comenzar por una letra. Ello permitiría elegir identificadores significativos que sugieran lo que representan.

Estos identificadores se construyen de acuerdo a las reglas de sintaxis del lenguaje específico.

- 35 -

Page 36: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

PALABRAS RESERVADAS: (KeyWords) Son palabras clave y propias de un lenguaje de programación que constituyen la base de las sentencias, funciones, expresiones y ordenes.

La regla aritmética que se seguirá para construir un identificador es:

Primer carácter deberá ser una letra (A a la Z).

Segundo y posteriores caracteres (letras y dígitos) admitiendo el subrayado.

Longitud de identificadores (número de caracteres) ilimitado.

Ejemplos:

Válidos Inválidos

Num1 1AB (por iniciar con un número)

Nombre _ apellido 1num5 (por iniciar con un número)

AB456 4Nombre-45*

Alfa

Profesión

Edad _ meses

En el lenguaje algorítmico se utilizarán también palabras reservadas, pero con nombres en español, por ejemplo:

Inicio, fin, si entonces, mientras, repetir,...

OPERACIONES CON CADENAS.

El procesamiento de cadenas de caracteres (string) es una tarea muy importante en el diseño de algoritmos y programas debido esencialmente a la gran cantidad de operaciones que se realizan con informaciones alfanuméricas.

Las operaciones básicas con cadenas son:

Comparaciones.

Concatenación (unir palabras).

Subcadenas. (extraer caracteres de una cadena)

Longitud.

- 36 -

Page 37: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Comparaciones.

Las operaciones de comparar cadenas de caracteres consisten en comparar las cadenas carácter a carácter, comenzando por el primer carácter de la izquierda de igual forma que si consultáramos un diccionario.

El orden de la comparación viene dado por el código de la computadora ASCII o EBCDIC.

Ejemplos:

“José” < “Julio” Verdadero.

“Luis Felipe” > “Luis José” verdadero.

“135” > “445” falso.

Concatenación de cadenas.

La operación de concatenar cadenas consiste en unir dos o más cadenas en una sola. La operación de concatenación se indica con un operador de concatenación: “+”, “&” o “//”.

Ejemplos:

“Código de empleado: ” & “A8953” resultado Código de empleado: A8953

“Código “ & “A85” resultado Código A85

“Jacqueline ” & “Hernández ” & “Basurto” resultado Jacqueline Hernández Basurto.

Subcadena.

Una Subcadena es una cadena que forma parte de una cadena mayor.

Ejemplo:

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

“200 mil dólares” es una Subcadena de “Hasta 250 mil dólares en Accidentes”.

“tu ser” es una Subcadena de “La realización es crecimiento continua de tu ser”.

Las subcadenas se pueden extraer de las cadenas principales mediante una función de cadena denominada Subcadena y cuyo formato es:

- 37 -

Page 38: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Subcadena (s1, s2, s3)

Donde

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

S2 es la posición inicial del carácter 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 número de caracteres que contiene)

Si s3 no existe, se considera como resultado de Subcadena todos los caracteres a partir del carácter 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 carácter sexto, en donde “H” es el primer carácter, “e” es el segundo carácter y así sucesivamente hasta llegar al espacio en blanco que es el quinto carácter y la “M” el sexto. El tres indica que se deberán extraer tres caracteres a partir de la “M”, es decir, “Mr.”.

Subcadena (“Nacional Geographic”, 4, 4) resultado “iona”.

Subcadena (“Certifícate para trascender”, 13,4) resultado “para”

Longitud.

La longitud de una cadena, como ya se ha comentado, es el número de caracteres encerrados entre los separadores (“ “), incluyendo espacios y signos de puntuación.

La función que permite calcular la longitud de una cadena es longitud y su formato es:

Longitud (s)

Donde s es una cadena o expresión de cadena.

Ejemplos:

M=“Hola Mortimer” longitud (M) = 13.

L= “Refrescate en cada momento” longitud (L) = 20.

Comentarios.

Los algoritmos, deben incluir comentarios aclaratorios de las partes más importantes. Estos comentarios deben ser concretos y encerrados entre llaves ({ }), o bien por dos diagonales (/ / ), o también por diagonal asterisco ( /* */ ).

- 38 -

Page 39: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Los comentarios son parte significativa de un algoritmo y se deben incluir cuantos sean necesarios para conseguir la mayor legibilidad posible del mismo.

- 39 -

Page 40: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

CONSTRUCCION DE DIAGRAMAS DE FLUJO.

Hasta ahora se tienen los conceptos que nos permiten construir algunos diagramas de flujo, así como preparados para desarrollar habilidad y capacidad de razonamiento estructurada y flexible que le permita obtener la solución a los problemas planteados.

Durante la construcción de diagramas de flujo se le irá llevando de un nivel básico a un nivel intermedio, agregando posteriormente su equivalente en pseudocódigo y en programación en “C”.

Ejemplo 1.

Construya un diagrama de flujo tal, que dados los datos A, B, C y D que representan números enteros, escriba los mismos en orden inverso.

1. Construcción del algoritmo

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

A, B, C y D

Proceso – cálculo....................................

Ordenarlos en forma inversa

Datos de salida o de impresión...............

D, C, B, A.

2. Diagrama de flujo

Ejemplo 2.

Construya un diagrama de flujo tal, que dados los datos enteros A y B, escriba el resultado de la siguiente expresión:

(A+B)2 / 3

1. Construcción del algoritmo

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

A, B

Proceso – cálculo....................................

Res = (A+B)2 / 3

Datos de salida o de impresión...............

Res

2. Diagrama de flujo

- 40 -

Inicio

Fin

A,B,C,D

D,C,B,A

Inicio

Fin

A,B

Res

Res = (A+B)2 / 3

Page 41: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Ejemplo 3.

Dada la matrícula y 5 calificaciones de un alumno obtenidas a lo largo del semestre; construya un diagrama de flujo que imprima la matrícula del alumno y el promedio de sus calificaciones.

1. Construcción del algoritmo

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

Matrícula (entero)

5 calificaciones (reales)

Proceso – cálculo....................................

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

Datos de salida o de impresión...............

Matrícula, Promedio

2. Diagrama de flujo

Ejercicio 1

Escriba un algoritmo y su diagrama de flujo tal que permita calcular e imprimir el cuadrado y el cubo de un número 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 rectángulo, calcule el perímetro y la superficie del mismo.

Perímetro = 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.

- 41 -

Inicio

Inicio

Fin

Mat, cal1,cal2,cal3,

cal4,cal5

Mat, Prom

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

Page 42: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

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 más al lenguaje utilizado para escribir programas de computadora, es natural, es decir un lenguaje algorítmico de pseudocódigo, una imitación del código de las computadoras.

No existe un conjunto de reglas que definan con precisión lo que es y lo que no es un pseudocódigo. Varía de un programador a otro.

El Pseudocódigo es una mezcla de lenguaje natural y símbolos, términos y otras características comúnmente utilizadas en uno o más lenguajes de alto nivel.

La siguiente lista es una serie de palabras claves utilizadas de modo general en lenguajes de programación:

Español Ingles

Inicio Begin

fin End

leer Read / input

escribir Write / print

Si - entonces If – then

desde For

mientras While

repetir Repeat

Parada, fin Sotp, end

Hasta, que Until

Para la escritura de pseudocódigos se deberá usar la indentación – sangrías o márgenes – en los bloques de instrucciones.

Ejemplo:

Sin indentación o sin sangría

Si x<5

Entonces hacer N * 5

Sino hacer N/5

Fin_si

- 42 -

Page 43: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Con indentación o con sangría

Si x<5

Entonces hacer N*5

Sino hacer N/5

Fin_si

TABLA REPRESENTACION PSEUDOCODIGO

REPRESENTACION DEL SIMBOLO

INSTRUCCIÓN EJEMPLO

Leer ... Leer (A,B);

Leer(Mat,cal);

Hacer ...

Asignar A=A+SUE

Asignar SUE=SUE*1.15+20

Imprimir / escribir Imprimir (A,B);

Imprimir (“Sueldo = “, SUE);

Ejemplo 1.

Defina el pseudocodigo tal, que dados los datos A,B,C y D, que representan número enteros, escriba los mismos en orden inverso.

Pseudocódigo

Inicio

Leer (A,B,C,D);

- 43 -

A,B

Mat, cal

A=A+SUE

SUE=SUE*1.15+200

A,B

“Sueldo= “, SUE

Page 44: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Imprimir (D,C,B,A);

Fin

Ejemplo 2.

Defina el pseudocódigo tal que dados los datos enteros A y B, escriba el resultado de la siguiente expresión: (A+B)^2 / 3

Pseudocódigo

Inicio

Leer (A,B);

Asignar Res = (A+B)^2 / 3

Imprimir (Res);

Fin

Ejemplo 3.

Defina un pseudocódigo tal que dada la matrícula y 5 calificaciones de un alumno, imprima la matrícula y el promedio de dichas calificaciones.

Pseudocódigo

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 pseudocódigo tal que permita calcular e imprimir el cuadrado y el cubo de un número entero positivo NUM.

Ejercicio 2.

Defina un pseudocódigo tal que dada la base y la altura de un rectángulo, calcule el perímetro y la superficie del mismo.

Ejercicio 3.

- 44 -

Page 45: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Defina un pseudocódigo 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 pseudocódigo tal que dados como datos dos números reales, calcule la suma, resta y multiplicación de dichos números.

Ejercicio 5.

Defina un algoritmo, diagrama de flujo y pseudocódigo tales que, dado el costo de un artículo vendido y la cantidad de dinero entregada por el cliente, calcule e imprima el cambio que debe entregársele al mismo.

Ejercicio 6.

Defina un algoritmo, diagrama de flujo y pseudocódigo tal que, dado el nombre de un dinosaurio, su peso y su longitud, expresados estos en toneladas y pies respectivamente, imprima el nombre del dinosaurio, su peso expresado en kilogramos y su longitud expresada en metros.

1 tonelada = 1000 kg. 1 pie = 0.3047 mts

Ejercicio 7.

Defina un algoritmo, diagrama de flujo y pseudocódigo 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.

Galón = 3.785 lts Precio litro = $ 6.025

Ejercicio 8.

Defina un algoritmo, diagrama de flujo y pseudocódigo en donde se plantea que en una casa de cambio se necesita construir un programa tal que dado como dato una entidad expresada en dólares, convierta esa cantidad a pesos.

1 dólar = $ 9.75

Ejercicio 9.

Defina un algoritmo, diagrama de flujo y pseudocódigo tal que, dado el radio y la altura de un cilindro, calcule e imprima el área y su volúmen.

Volúmen = PI*r^2*h Area = 2*PI*r*h.

- 45 -

Page 46: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Ejercicio 10.

Una persona compró una estancia en un país sudamericano. La extensión de la estancia está especificada en acres. Construya el algoritmo, diagrama de flujo y pseudocódigo, tal que dado como dato la extensión del campo en “acres”, calcule e imprima la extensión del mismo en hectáreas.

1 acre = 4047 m2 1 hectárea = 10000 m2

Ejercicio 11.

Defina un algoritmo, diagrama de flujo y pseudocódigo 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 centésimas. La distancia que recorren, por otra parte, se expresa en metros. Calcule la velocidad de los participantes, en kilómetros 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 pseudocódigo tal que calcule e imprima el número de segundos que hay en un determinado número de días.

Ejercicio 13.

Defina un algoritmo, diagrama de flujo y pseudocódigo tal que, dados los tres lados de un triángulo, puede determinar su área, en donde:

Area = sqrt (s * (s – L1) * (s – L2) * (s – L3) )

S = (L1 + L2 + L3) / 2

- 46 -

Page 47: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

ESTRUCTURAS ALGORITMICAS SELECTIVAS

Las estructuras lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de problemas. La utilización se da cuando en el desarrollo de la solución de un problema se debe tomar una decisión, para establecer un proceso o señalar un camino alternativo a seguir.

Esta toma de decisión (expresada con un rombo) se basa en la evaluación de una o más condiciones que nos señalarán como alternativa o consecuencia, la rama o camino a seguir.

Hay situaciones en las que la toma de decisiones se realiza en cascada. Es decir se toma una decisión, se marca la rama correspondiente a seguir, se vuelve a tomar otra decisión y así sucesivamente. Por lo que para alcanzar la solución de este problema o subproblema se debe aplicar prácticamente un árbol de decisión.

Las estructuras algorítmicas selectivas que se utilizan para la toma de decisiones lógicas se pueden clasificar de la siguiente forma:

1.- si entonces (Estructura selectiva simple)

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

3.- si múltiple (Estructura selectiva múltiple)

Cabe señalar que cuando a las estructuras selectivas las aplicamos en cascada, se puede utilizar una combinación de las estructuras señaladas anteriormente en la clasificación.

ESTRUCTURAS SI ENTONCES

La estructura selectiva si entonces permite que el flujo del diagrama siga por un camino específico si se cumple una condición o conjunto de condiciones. Si al evaluar la condición (o condiciones) el resultado es verdadero, entonces se ejecuta(n) cierta(s) operación (es).

Luego se continúa con la secuencia normal del diagrama:

Diagrama de flujo:

- 47 -

Condición

Operación

Donde:

Condición: expresa la condición o conjunto de condiciones a evaluarse.

Operación: expresa la operación o conjunto de operaciones que se van a realizar si la condición resulta verdadera

Page 48: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Pseudocódigo:

Si condición entonces

Hacer operación.

Fin _ si.

Ejemplo 1.

Construya el diagrama de flujo y pseudocódigo tal, que dado como dato la calificación de un alumno en un examen, escriba “aprobado”, en caso de que esa calificación fuese mayor que 8.

Diagrama de flujo. Pseudocódigo.

- 48 -

Inicio

CAL

CAL > 8

“Aprobado”

Fin

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

FinF

V

Page 49: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Ejemplo 2.

Construya el diagrama de flujo y pseudocódigo tal, que dado como dato el sueldo de un trabajador, aplíquele un aumento del 15% si su sueldo es inferior a $1000. Imprima en este caso, el nuevo saldo del trabajador.

Diagrama de flujo. Pseudocódigo.

LA ESTRUCTURA SI ENTONCES /SI NO

La estructura selectiva si entonces /sino permite que el flujo del diagrama se bifurque por dos ramas diferentes en el punto de la toma de decisión (es). Si al evaluar la condición (o condiciones) el resultado es verdadero, entonces se sigue por un camino específico y se ejecuta(n) cierta (s) operación (es) Por otra parte, si el resultado es falso entonces se sigue por otro camino y se ejecuta (n) otra(s) operación (es). En ambos casos, luego de ejecutarse la (s) operación (es) indicada(s), se continúa con la secuencia normal del diagrama. A continuación se presenta el diagrama de flujo, que ilustra esta estructura selectiva:

- 49 -

Inicio

SUE

SUE < 1000

NSUE

Fin

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

Fin

AUM = SUE * 0.15NSUE = SUE + AUM

A

A

F

V

Page 50: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Diagrama de flujo:

Ejemplo 3.

Construya el diagrama de flujo y pseudocódigo tal, que dado como dato la calificación de un alumno en un examen, escriba “aprobado” si su calificación es mayor que 8 y “reprobado” en caso contrario.

Diagrama de flujo.

- 50 -

Condición

V F

Operación 1 Operación 2

Pseudocódigo:

Si Condición entonces Hacer Operación 1sino Hacer Operación 2Fin_si

Inicio

CAL

CAL > 8

“Aprobado” “Reprobado”

Fin

Pseudocódigo:

Inicio/* CAL es tipo real */

Leer (CAL); Si CAL > 8 entonces

Imprimir (“Aprobado”); sino

Imprimir (“Reprobado”); fin_siFin.

V F

Page 51: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Ejemplo 4.

Construya el diagrama de flujo y pseudocódigo 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.

LA ESTRUCTURA SI MULTIPLE

La estructura selectiva si múltiple permite que el flujo del diagrama se bifurque por varias ramas en el punto de la toma de decisión (es), esto en función del valor que tome el selector. Así si el selector toma el valor 1 se ejecutará la acción 1, si toma el valor 2 se ejecutará la acción 2 , si toma el valor N se realizará la acción N, y si toma un valor distinto de los valores comprendidos entre 1 y N, se continuará con el flujo normal del diagrama realizándose la acción N+1.

- 51 -

Inicio

SUE

SUE < 1000

Fin

Pseudocódigo:

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.

FV

NSUE= SUE*1.15 NSUE= SUE*1.12

NSUE

Page 52: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

A continuación se presenta el diagrama de flujo que ilustra esta estructura selectiva:

SELECTOR: Es la variable o expresión a evaluarse, según la cual se tomará una de la múltiples decisiones o alternativas.

ACCION 1: Expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el valor 1.

ACCION 2: Expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el valor 2.

ACCION N: Expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el valor N.

ACCION N+1: Expresa la operación que se va a realizar cuando se continúe con el flujo normal del diagrama.

Pseudocódigo.

Si SELECTOR igual

Valor 1: hacer acción 1

Valor 2: hacer acción 2

Valor N: hacer acción N

fin_si

- 52 -

SELECTOR

ACCION 1ACCION 2

ACCION N

Valor 1 Valor 2 Valor N

ACCION N+1

Page 53: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Hacer acción N+1;

La estructura selectiva si múltiple es muy flexible, lo que permite aplicarla de diferentes formas. Obsérvese los siguientes diagramas de flujo y las explicaciones correspondientes:

Observe que si el selector toma el valor 1se ejecuta la acción 1, si toma el valor 2 se realiza la acción 2, si toma el valor 3, se realiza la acción 3, y si toma cualquier otro valor se realiza la acción X. Luego cuando se continúa con el flujo normal del diagrama se realiza la acción Y.

Pseudocódigo

Si SELECTOR igual

Valor 1: hacer acción 1

Valor 2: hacer acción 2

Valor 3: hacer acción 3

De otra forma: hacer acción X

fin_si

Hacer acción Y;

- 53 -

SELECTOR

ACCION 1 ACCION 2 ACCION 3 ACCION X

ACCION Y

Valor 1Valor 2 Valor 3 De otra forma

Page 54: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Analicemos el siguiente caso:

Pseudocódigo.

Si SELECTOR igual

Valor 1,2: hacer acción 1

Valor 3,4,5: hacer acción 2

De otra forma: hacer acción 3

fin_si

Hacer acción X;

Veamos algunos ejemplos para comprender mejor lo anterior.

- 54 -

SELECTOR

ACCION 1 ACCION 2 ACCION X

ACCION Y

Valor 1,2

Valor 3,4,5De otra forma

Page 55: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Ejemplo 5.

Construya el diagrama de flujo y pseudocódigo tal, que dado como dato dos variables de tipo entero V y NUM, obtenga el resultado de la siguiente función:

100 * V si NUM = 1

100 ^V si NUM = 2

VAL 100/V si NUM = 3

0 para otro valor de NUM.

Diagrama de flujo.

Pseudocódigo

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;

- 55 -

Inicio

NUM, V

NUM

VAL=100 * V VAL = 100 ^ V VAL = 100 / V VAL = 0

12 3

De otra forma

VAL

Fin

Page 56: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

fin_si

Imprimir (VAL);

Fin

Ejemplo 6.

Construya el diagrama de flujo y pseudocódigo tal, que dado como datos la categoría y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categoría del trabajador y su nuevo sueldo.

CATEGORIA AUMENTO

1 15%

2 10%

3 8%

4 7%

Diagrama de flujo

Pseudocódigo.

Inicio

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

Si CATE igual

1 : hacer NSUE = SUE * 1.15;

- 56 -

Inicio

CATE, SUE

CATE

NSUE=SUE*1.15 NSUE=SUE*1.10 NSUE=SUE*1.08 NSUE=SUE*1.07

12 3

4

CATE, SUE

Fin

Page 57: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

2 : hacer NSUE = SUE * 1.10;

3 : hacer NSUE = SUE * 1.08;

4 : hacer NSUE = SUE * 1.07;

fin_si

Imprimir (CATE, NSUE);

Fin

ESTRUCTURAS SELECTIVAS EN CASCADA ( ANIDADAS)

Se encuentran numerosos casos en el desarrollo de la solución de problemas en el que luego de tomar una decisión y marcar el camino correspondiente a seguir, es necesario tomar otra decisión. Se señala, luego de evaluar las condiciones, la rama correspondiente a seguir, y nuevamente se puede tener que tomar otra decisión. El proceso puede repetirse numerosas veces. En este caso se está aplicando estructuras selectivas en cascada o anidadas, para resolver el problema.

Observe el siguiente caso, donde dentro de la estructura selectiva si – entonces, se encuentra la estructura selectiva si – entonces – sino.

- 57 -

Condición 1

Condición 2

Operación 2-1 Operación 2-2

V

F

V

F

F

Page 58: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Pseudocódigo.

Si condición 1 entonces

Si condición 2 entonces

hacer operación 2-1

sino

hacer operación 2-2

fin_si

fin_si

Se analizará este siguiente caso también:

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

- 58 -

Condición 1

Condición 2

Condición 3

V F

Operación 2-1 Operación 2-2

Operación 3-1

V

V

F F

Page 59: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Si al evaluar la condición 1, esta resulta verdadera entonces se tiene que evaluar la condición 2, (estructura selectiva si-entonces-sino). Por otra parte si la condición 1 resulta falsa, entonces se tiene que evaluar la condición 3 (estructura selectiva si-entonces)

Se estudiará por último, el siguiente caso:

Observe que dentro de la estructura selectiva si-entonces-sino, se encuentran otras dos estructuras selectivas: si-múltiple y si-entonces. A su vez, dentro de la estructura selectiva si múltiple se encuentran otras dos estructuras selectivas.

A continuación se muestra el pseudocódigo:

Si condición 1 entonces

Si selector 1 igual

valor 1 : hacer operación 2-1;

- 59 -

Condición 1

FV

SELECTOR

Operación 2-1

Condición 3

Operación 3-1

Condición 4

Operación 4-1 Operación 4-2

Valor 1

Valor 2

De otra forma

V

V

F

F

Condición 5

Operación 5-1

V

F

Page 60: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

valor 2 : Si condición3 entonces

hacer operación 3-1;

fin_si

De otra forma : Si condición 4 entonces

Hacer operación 4-1;

Sino

Hacer operación 4-2;

fin_si.

Fin_si /* selector*/

Sino

Si condición 5 entonces

Hacer operación 5-1

Fin_si.

Fin_si.

Ejemplo 7.

Construya el diagrama de flujo y pseudocódigo tal, que dado los datos A, B y C, que representan números enteros diferentes, escriba estos números en forma descendente, es decir, de mayor a menor.

Ejemplo 8.

Construya el diagrama de flujo y pseudocódigo 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 además, que si el número de días de estancia es superior a 7 y la distancia total (ida y vuelta) a recorrer es superior a 800 kms, el billete tiene una reducción del 30%. El precio por km es de $0.17.

Ejemplo 9.

Construya el diagrama de flujo y pseudocódigo tal, que dados como datos de entrada 3 números enteros, determine si los mismos están en orden creciente (A,B,C)

- 60 -

Page 61: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

ESTRUCTURAS REPETITIVAS.

Es muy común encontrar en los algoritmos operaciones que se deben ejecutar un número repetido de veces. Si bien las instrucciones son las mismas, los datos sobre los que se opera varían. El conjunto de instrucciones repetidamente se llama ciclo.

Todo ciclo debe terminar de ejecutarse luego de un número finito de veces, por lo que es necesario en cada iteración del mismo, evaluar las condiciones necesarias para decidir si debe seguir ejecutándose o debe deternerse. En todo ciclo, siempre debe existir una condición de parada o fin de ciclo.

Llamaremos repetir a la estructura algorítmica repetitiva que se ejecuta un número definido de veces.

Llamaremos mientras a la estructura algorítmica repetitiva que se ejecuta mientras la condición evaluada resulta verdadera.

LA ESTRUCTURA REPETIR

Es la estructura algorítmica adecuada para utilizar en un ciclo que se ejecutará un número definido de veces. Se sabe de antemano cuántas veces tenemos que repetir una determinada operación, acción o tarea. El número de repeticiones NO depende de las proposiciones dentro del ciclo.

El número de veces del planteamiento del problema o de una lectura que indica que el número de iteraciones se debe realizar para N ocurrencias.

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

- 61 -

V = Vi

V > Vf

V

F

Proceso

V=V + increm

Donde:

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

Page 62: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

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 iteración. Cuando V supera el valor de Vf entonces el ciclo se detiene.

El pseudocódigo 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 pseudocódigo tal, que dados como datos los sueldos de 5 trabajadores de una empresa, obtenga el total de nómina de la misma. Considere además que no puede utilizar estructuras algorítmicas repetitivas en la solución del problema.

Diagrama de flujo.

- 62 -

Inicio

SUE1, SUE2, SUE3, SUE4, SUE5

NOMINA=SUE1+SUE2+SUE3+SUE4+SUE5

NOMINA

Fin

Pseudocódigo:Inicio Leer (SUE1,SUE2,SUE3,SUE4,SUE5); Asignar NOMINA=SUE1+SUE2+SUE3+SUE4+SUE5;

Imprimir (NOMINA);Fin.

Page 63: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Considere que sucedería 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.

- 63 -

Inicio

i = 1, NOMINA=0

i > 5

sueldo

NOMINA=NOMINA + sueldo

i = i +1

NOMINA

Fin

Pseudocódigo: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: es una variable de tipo entero que representa la variable de control del ciclo. Contabiliza el número de veces que ha de repetirse una determinada acción. El contador toma un valor inicial (generalmente 0 o 1) y se incrementa en la mayoría de los casos en una unidad en cada vuelta del ciclo.NOMINA: Es una variable de tipo real que representa un “acumulador”. Este se utiliza cuando debemos obtener el total acumulado

V

F

Page 64: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Ejemplo 2.

Construya el diagrama de flujo y pseudocódigo tal, que dados como datos N números enteros, obtenga el número de ceros que hay entre estos números.

Diagrama de flujo.

- 64 -

Pseudocódigo: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 = 0i = 1

i <= N

SUMCERO =SUMCERO + Num

Num

SUMCERO

Fin

N

V

F

Num = 0

i = i + 1

V

F

Page 65: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

LA ESTRUCTURA MIENTRAS

Es la estructura adecuada para utilizarse en un ciclo cuando NO sabemos el número de veces que éste se ha de repetir. Dicho número depende de las preposiciones dentro del ciclo.

En la estructura mientras se distinguen dos partes:

Ciclo: Conjunto de instrucciones que se ejecutarán repetidamente.

Condición de terminación: La evaluación de esta condición permite decidir cuándo finalizará la ejecución del ciclo. La condición se evalúa al inicio del mismo.

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

Debe existir también un enunciado dentro del ciclo que afecte la condición, para evitar que el ciclo se ejecute indefinidamente.

En el lenguaje algorítmico la estructura mientras la expresamos de esta forma (pseudocódigo):

...

...

- 65 -

Pi = Proposición inicial

Evaluación de Pi

Pi = Modificación de Pi

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

Page 66: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Hacer Pi = Proposición inicial;

Mientras Pi es verdadero repetir

...

...

proceso u operaciones a realizar;

...

Hacer Pi = Modificación de Pi;

...

fin_mientras.

Ejemplo 3.

Construya el diagrama de flujo y pseudocódigo tal, que se deben obtener la suma de los gastos que se hicieron en un último viaje, pero no se sabe exactamente cuántos fueron.

Diagrama de flujo.

- 66 -

Pseudocódigo:Inicio Asignar SUMGAS = 0; Leer (Gasto); Mientras Gasto < > -1 repetir {

Asignar SUMGAS=SUMGAS + Gasto;

Leer (Gasto); } fin_while Imprimir (SUMGAS);Fin.

Inicio

SUMGAS = 0

Gasto

Gasto < > -1

SUMAGAS =SUMGAS + Gasto

Gasto

SUMGAS

Fin

NOTA: Observe que en este tipo de problemas se deberán realizar 2 lecturas, una antes de iniciar el ciclo y otra antes de finalizar el mismo.

V

F

Page 67: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Ejemplo 4.

Construya el diagrama de flujo y pseudocódigo tal, que calcule e imprima la suma de una serie de números naturales.

Diagrama de flujo.

- 67 -

Pseudocódigo:Inicio Asignar SUMANUM = 0; Leer (Num); Mientras Num < > -1 repetir {

Asignar SUMANUM=SUMANUM + Num;

Leer (Num); } fin_while Imprimir (SUMANUM);Fin.

Inicio

SUMANUM = 0

Num

Num < > -1

SUMANUM =SUMANUM + Num

Num

SUMANUM

Fin

V

F

Page 68: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

* * 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 pseudocódigo para resolver lo planteado.

Ejercicio 2.

Escriba un diagrama de flujo y pseudocódigo tal, que dados como datos 270 números enteros, obtenga la suma de los números impares y el promedio de los números impares.

Ejercicio 3.

Escriba un diagrama de flujo y pseudocódigo tal, que dados como datos N números enteros, determine cuántos de ellos son pares y cuántos son impares.

Ejercicio 4.

Escriba un diagrama de flujo y pseudocódigo tal, que dados como datos N números enteros, determine cuántos de ellos son pares y cuántos son impares.

Ejercicio 5.

Haga un diagrama de flujo y pseudocódigo para obtener la tabla de multiplicar de un número entero K, comenzando desde 1.

Ejercicio 6.

Haga un diagrama de flujo y pseudocódigo que obtenga la suma, e imprima los términos de la siguiente serie:

2,5,7,10,12,15,17, ... , 1800

Ejercicio 7.

Haga un diagrama de flujo y pseudocódigo que lea un número entero N y calcule el resultado de la siguiente serie:

- 68 -

Page 69: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

1 +

Ejercicio 8.

Haga un diagrama de flujo y pseudocódigo que lea un número entero N y calcule el resultado de la siguiente serie:

1 -

ESTRUCTURAS DE DATOS, ARREGLOS: LISTAS Y TABLAS.

Una estructura de datos es una colección o conjunto de datos que tienen el mismo nombre. Los medios por los cuales se relacionan unos elementos con otros determinan el tipo de estructura de datos.

El valor de la estructura de datos se determina por:

1. El valor de los elementos.

2. La composición de los elementos.

Las estructuras de datos se pueden clasificar de acuerdo a:

Estáticas Arreglos (Arrays – vectores y matrices)

Registros (Records)

Archivos o ficheros (File)

Dinámicas Lineales:

o Pilas

o Colas

o Listas enlazadas.

No lineales:

o Árboles

o Gráfos

- 69 -

Page 70: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

ARREGLOS

Un arreglo o array se define como una colección finita, homogénea y ordenada de elementos.

Finita: todo arreglo tiene un límite; es decir debe determinarse cuál será el número máximo de elementos que podrán formar parte del arreglo.

Homogénea: todos los elementos de una rreglo son del mismo tipo (todos enteros, todos reales, todos boléanos, etc., pero nunca una combinación de distintos tipos).

Ordenada: se puede determinar cuál es el primer elemento, el segundo, el tercero,... y el n-ésimo elemento.

Un array (arreglo, disposición, 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 válida.

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 subíndices 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 posición). Los elementos del array se pueden procesar individualmente todas las veces que se desee, o bien todo el array completo.

Los arreglos se clasifican en:

Unidimensionales (vectores o listas).

Bidimensionales (tablas o matrices).

Multidimensionales.

Para poder utilizar un array en un problema es necesario declararlos previamente al comienzo del programa indicando el número y tipo de elementos que puede contener.

- 70 -

Page 71: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

ARREGLOS UNIDIMENSIONALES (VECTORES / LISTAS)

Un array unidimensional o vector es una secuencia de elementos en la que todos sus elementos son del mismo y en los que el orden es significativo. El orden viene dado por le subíndice del vector. Los subíndices son números enteros o expresiones enteras que, normalmente, comienzan en 0.

Ejemplo:

Vector unidimensional.

25.4 32.0 54.3 14.2 ... 11.2 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 continuación.

k[0] 4

k[1] 12

k[2] 3

k[3] 0

k[4] 7

k[5] 14

a) Vector en columna

k[0] k[1] k[2] k[3] k[4] k[5]

4 12 3 0 7 14

b) Vector en fila.

DECLARACIONES DE VECTORES

La declaración del número y tipo de elementos se realiza de diferentes formas según el tipo de lenguajes:

- 71 -

A [0] A [1] A [2] A [3] A [24] A [25]...

Primer elemento

Segundoelemento

Tercerelemento

Cuartoelemento

Page 72: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Dim x(8) ---- en BASIC.

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

Int A[8] ---- en Turbo C.

En el lenguaje de pseudocódigo se utilizará:

Dimensión del array <nombre> [num_de_elems]: <tipo de dato>

Ejemplo:

Dimensión del array X[8]: real;

Nombre[30]: char;

OPERACIONES CON VECTORES.

Las operaciones con vectores se pueden realizar con elementos individuales o sobre los vectores completos mediante las instrucciones básicas y estructuras de control.

Las operaciones se aplican a los elementos o bien al vector completo, estas operaciones son:

Operaciones sobre los elementos:

Asignación.

Lectura.

Escritura.

Operaciones sobre el vector completo:

Recorrido.

Búsqueda.

Inserción.

Eliminación.

Ejemplos:

Sea el vector H de 10 elementos siguientes:

16.5 14.2 5.0 3.45 0 -1.0 2.45 32 -45.0 15.0

- 72 -

H[0] H[1] H[2] H[3] H[4] H[5] H[6] H[7] H[8] H[9]

Page 73: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Se analizarán ciertos casos de acuerdo a la instrucción que se indica en la columna de la izquierda para obtener el resultado que se muestra en la segunda columna:

- 73 -

Page 74: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Instrucción (acción) Efecto o resultado

Escribir H[4] Visualiza 0 valor de H[4]

Escribir H[I] donde I = 3 Visualiza 3.45 valor de H[3]

Escribir H[I]+3 donde I=3 Visualiza 6.45 valor de H[3] = 3.45+3=6.45

Escribir H[I+2] donde I=3 Visualiza –1 valor de H[3+2]=H[5]= -1

Escribir H[I-1] donde I=3 Visualiza 5 valor de H[3-1]=H[2]= 5

Escribir H[4+I] donde I=3 Visualiza 32 valor de H[4+3]=H[7]= 32

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

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

Asignar a H[I] = H[I+2] donde I=7 Asigna a H[7] = 15 valor de H[7]=H[9]= 15

Asignar a H[I] = H[12] donde I=5 Error ya que 12 > 9 y no es posible la asignación

- 74 -

Page 75: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

LECTURA / ESCRITURA DE VECTORES COMPLETOS (RECORRIDO)

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

Pseudocódigo:

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

Asignar H[i] = dato;

- 75 -

Inicio

i = 1

i <=10

dato

H[i] = dato

i = i + 1

V

F

Page 76: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

} fin_mientras

La impresión de los elementos del arreglo H, se puede realizar tanto con una estructura Repetir como para una estructura repetir Mientras.

Pseudocódigo:

Con la estructura repetir:

Repetir con i desde 1 hasta 10

{ Imprimir (H[i]);

} fin_repetir

Con la estructura mientras:

Mientras I<=10 repetir

{ Imprimir (H[i]);

} fin_mientras

- 76 -

Inicio

i = 1

i <=10

i = i + 1

V

F

H[i]

Page 77: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Ejercicio 9.

Haga un diagrama de flujo y pseudocódigo que lea los sueldos de un grupo de 70 empleados de una empresa, y se requiere saber cuántos de estos empleados tienen un sueldo superior al promedio del grupo.

Diagrama de flujo:

- 77 -

A

cont

Fin

Inicio

Sum = 0i = 0

i < 70

sueldo

SE[i] = sueldo

Sum=sum + SE[i]

i=i+1

V

F

Prom=Sum/70cont = 0

i = 0

i < 70

V

F

SE[i] > Prom <=70

V

F

cont=cont +1

i=i+1

A

Page 78: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Pseudocódigo:

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

- 78 -

Page 79: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

Búsqueda de elementos en un arreglo unidimensional

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

ARREGLOS UNIDIMENSIONALES (VECTORES / LISTAS)

Una matriz es un arreglo de dos dimensiones, y para especificar cualquier elemento, debemos hacer referencia a dos índices (que representan la posición como renglón y columna). Aunque no se justificará aquí, es conveniente mencionar que la representación matricial es puramente conceptual y con el único fin de facilitar al programador el manejo de los elementos, ya que la computadora almacena los datos en una forma totalmente diferente.

Pseudocódigo:

tipo nombre_de_variable [rango1][rango2]

donde tipo puede ser cualquier tipo de datos (entero, flotante, carácter, etc.)

Lenguaje C:

tipo nombre_de_variable [rango1][rango2];

donde:

tipo puede ser cualquier tipo de dato (int, float, char, etc.).

nombre_de_variable es el nombre del arreglo.

rango 1 corresponde al número de renglones que conforman el arreglo.

rango 2 corresponde al número de columnas.

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

Pseudocódigo:

X[3][5] 20 (asigna al elemento de la fila 4 y la columna 6 el valor de 20)

Lenguaje C:

X[3][5]  = 20;

- 79 -

Page 80: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

EJEMPLO:

El siguiente programa realiza la lectura de una matriz de 7 renglones y 15 columnas (de una matriz de orden [7x15]) renglón por renglón).

             /* programa que lee los elementos de una matriz de orden 7 x 15 */

constantes

REN 7COL 15

PRINCIPAL

inicio

               entero i, j, x [ren] [col];

               desde (i =0; i<ren ; i i+1)

                          desde (j =0; j< col ; j j+1)   

                           inicio

                                 imprime (“INTRODUCE EL ELEMENTO : “, i, j);

                                 leer (x [i] [j]);

                           fin

fin

Lenguaje C:

#include <stdio.h>

#define ren 7#define col 15

main ()

{

                  int i, j;

                  int x [ren][col];

                  for (i=0; i<ren; i++)

                        for(j=0; j<col ; j ++)

                  {

                                 printf (“INTRODUCE EL ELEMENTO A (%d, %d) “, I, j);

                                 scanf (“%d”, &x [i] [j]);

                  }

- 80 -

Page 81: Manual de Introduccion Algoritmos Computacionales

Algoritmos Computacionales MSI. Ricardo Alfaro Cuéllar.

}

- 81 -