domingo, 17 de abril de 2016

INTRODUCCION DE ALGORITMOS

En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.

Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular el producto, el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema de ecuaciones lineales.

sábado, 16 de abril de 2016

ALGORITMOS SECUENCIALES

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso.

En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma:




Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocódigo y en diagramas de flujos:

• Tengo un teléfono y necesito llamar a alguien pero no sé como hacerlo.

ALGORITMOS DE SELECCION MULTIPLE

Escribir un programa que seleccione la operación aritmética a ejecutar entre dos números dependiendo del valor de una variable denominada seleccionOp.

inicio

entero: valor1, valor2, seleccionop
imprimir (‘escriba valor 1’)
leer valor1
imprimir (‘escriba valor 2’)
leer valor2
imprimir (‘escriba la operación a ejecutar, 1 para +, 2 para -  para *, 4 para /’)
leer selecciónop
si (seleccionop = 1)entonces
imprimir ( ‘la suma es’, valor1 + valor2)
fin si
si (seleccionop = 2)entonces
imprimir ( ‘la resta es’, valor1 - valor2)
fin si
si (seleccionop = 3)entonces
imprimir ( ‘la multiplicación es’, valor1 *valor2)
fin si
si (seleccionop = 4)entonces
imprimir ( ‘la división  es’, valor1 / valor2)
fin si
fin

ALGORITMOS DE SELECCION MULTIPLE

Las estructuras de selección son estructuras de control utilizadas para la toma decisiones dentro de un programa. A estas estructuras se conocen también como estructuras selectivas o estructuras de decisión y son las siguientes:
  • La estructura de selección simple (SI).
  • La estructura de selección doble (SI-SINO).
  • La estructura de selección múltiple (SEGUN)
3.2 Estructura de Selección Simple SI
La estructura de selección simple permite ejecutar una acción o un grupo de acciones sólo si se cumple una determinada condición. Así, en el gráfico 3.1, si la condición es verdadera se ejecuta la acción acciona; en caso contrario, no se hace nada.
      Diagrama de Flujo

Pseudocódigo (acción simple)
SI( condicion )
   acciona

Pseudocódigo (acción compuesta)

SI( condicion ){
   acciona1
   acciona2
   .
   .
   .
   accionan
}
Figura 3.1 Estructura de Selección Simple
Por ejemplo, si se desea cambiar el signo de un número únicamente en caso que sea negativo, podemos escribir:
SI( numero < 0 )
    numero = -1 * numero
Si el número no es negativo, simplemente esta estructura se pasaría por alto y se continuaría en la siguiente instrucción después del SI.
3.3 Estructura de Selección Doble SI - SINO
La estructura de selección doble permite seleccionar una ruta de dos rutas posibles en base a la verdad o falsedad de una condición. Así, en la Figura 3.2, si la condición es verdadera, se ejecuta la acción A; en caso contrario, se ejecuta la acción B.
En la Figura 3.2 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección doble.


                             Diagrama de Flujo Pseudocódigo (acción simple)
SI( condicion )
   acciona
SINO
   accionb

Pseudocódigo (acción compuesta)

SI( condicion ){
   acciona1
   acciona2
   .
   .
   .
   accionan
}
SINO{
   accionb1
   accionb2
   .
   .
   .
   accionbn
}
Figura 3.2 Estructura de Selección Doble
Por ejemplo, la siguiente estructura de selección doble determina si una persona es mayor o menor de edad:
SI( edad >= 18 )
    estado = "Mayor de edad"
SINO
   
estado = "Menor de edad"
Esto imprime "Mayor de edad" si la persona tiene 18 años ó más e imprime "Menor de edad" si la persona tiene menos de 18 años. En cualquiera de los casos, después de efectuar la impresión, se ejecutará la primera instrucción que sigue a la estructura SI...SINO.
Estructura de Selección Doble en Cascada SI-SINO-SI
La estructura de selección doble en cascada esta formada por varias estructuras de selección doble SI-SINO puestas una a continuación de otra de forma que a un SI-SINO le sigue otro SI-SINO.
En la estructura de selección doble en cascada, las condiciones se evalúan en orden descendente, pasando de una condición a otra si la condición anterior resulta falsa. En el momento que se encuentra una condición verdadera, se efectúa la acción correspondiente a dicha condición y se corta el resto de la estructura. Si todas las condiciones resultan falsas, se efectúa la acción correspondiente al último SINO, que se considera como la acción por defecto.
En la Figura 3.3 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección doble en cascada.


                    Diagrama de Flujo Pseudocódigo ( Forma 1 )
SI( condicion1 )
    accion1
SINO
    SI( condicion2 )
        accion2
    SINO 
        SI( condicion3 )
            accion3
        .
        .      
        .
        SINO
            acciondefecto
Pseudocódigo ( Forma 2 )
SI( condicion1 )
    accion1
SINO SI( condicion2 )
    accion2
SINO SI( condicion3 )
    accion3
    .
    .      
    .
SINO
    acciondefecto
Figura 3.3 Estructura de Selección Doble en Cascada
Por ejemplo, la siguiente estructura de selección doble en cascada determina el signo de un número entre positivo, negativo o cero:
SI( n > 0 ) 
    signo = "Positivo"
SINO
   
SI( n < 0 )
        signo = "Negativo"
    SINO        
        signo = "Cero"

Usando el otro formato tendríamos:
SI( n > 0 ) 
    signo = "Positivo"
SINO SI( n < 0 )
    signo = "Negativo"
SINO        
    signo = "Cero"
3.5 Estructura de Selección Múltiple SEGUN
La estructura de selección múltiple SEGUN permite elegir una ruta de entre varias rutas posibles, en base al valor de una variable que actúa como selector. La estructura compara el valor del selector con las constantes c1, c2, ..., cn en orden descendente. En el momento en que se encuentre una coincidencia, se ejecuta la acción correspondiente a dicha constante y se abandona la estructura.
En la Figura 3.4 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección múltiple.


                              Diagrama de Flujo Pseudocódigo
SEGUN( selector ){
     CASO c1 : accion1
     CASO c2 : accion2
     CASO c3 : accion3
               .
               .
               .

     CASO cn : accionn
     DEFECTO : acciondefecto
}
Figura 3.4 Estructura de Selección Múltiple
Por ejemplo, la siguiente estructura de selección múltiple determina el nombre de la estación del año conociendo el número de la estación (1 para Primavera, 2 para Verano, 3 para Otoño y 4 para Invierno) :
SEGUN(numeroEstacion){
    CASO
1  : nombreEstacion = "Primavera"
    CASO 2  : nombreEstacion = "Verano"
    CASO 3  : nombreEstacion = "Otoño"
    DEFECTO : nombreEstacion = "Invierno"

ALGORITMOS CONDICIONALES

Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen tres tipos básicos, las simples, las dobles y las múltiples.

Simples:

Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma:


Pseudocódigo: Diagrama de flujo:
Dobles:

Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma:

Pseudocódigo: Diagrama de flujo:
Donde:
Si:Indica el comando de comparación
Condición : Indica la condición a evaluar
Entonces : Precede a las acciones a realizar cuando se cumple la condición
Instrucción(es):Son las acciones a realizar cuando se cumple o no la condición
si no :Precede a las acciones a realizar cuando no se cumple la condición
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o más acciones.

ALGORITMOS REPETITIVOS

Estructuras Repetitivas (Bucles)

Un bucle o lazo (Loop)  es un segmento de un algoritmo o programa, cuya instrucciones se repiten un número determinado de veces mientras se cumple una determinada condición (existe o es verdadera la condición). SE debe establecer un mecanismo para determinar las tareas repetitivas. Este mecanismo es una condición que puede ser verdadera o falsa y que se comprueba una vez a cada paso o iteración del bucle (total de instrucciones que se repiten en el bucle).
Un bucle consta de tres partes:
  •  decisión,
  •  cuerpo del bucle,
  •  salida del bucle.
El bucle de la siguiente figura  es infinito, ya que las instrucciones (1), (2) y (3) se ejecutan indefinidamente, pues no existe salida del bucle, al no cumplirse una determinada condición.



Si tras la lectura de la variable N se coloca una condición, el bucle dejará de ser infinito y tendrá fin cuando la condición sea verdadera.

El diagrama de flujo escrito en pseudo código es aproximadamente el siguiente:
Inicio
    SUMA 0
    1: leer N
    Si N = 0 entonces
        Escribir SUMA
        Ir_a fin
    Si_no
        Suma suma + N
    FIN_SI
    IR_A 1
FIN

BUCLES ANIDADOS
Un bucle puede anidarse dentro de otro como se vio en clase con los condicionales anidados (un si fin_si dentro de otro si Fin_si)

Contadores

Un contador es una variable cuyo valor se incrementa o decremento en una cantidad constante en cada vuelta.
La siguiente figura 
contar del 1 al 50

presenta un diagrama de flujo para un algoritmo que se desea repetir 50 veces; el contador se representa en este ejemplo con la variable CONT. La instrucción que representa a un contador es la asignación CONT = CONT + 1.
La siguiente figura


es otro ejemplo de un diagrama de flujo con contador; es este caso, negativo. Se dice también descontar.
El contador puede ser positivo (incrementos, uno en uno) o negativo (decrementos, uno en uno).

Importante acerca de incrementos y decrementos:
En la primera Figura el contador cuenta desde 1 al 50 y deja de contar cuando la variable CONT toma el valor 51 y se termina el bucle.

En la segunda Figura el contador cuenta negativamente, o lo que es lo mismo, descuenta o decrementa; comienza a contar en n y se decrementando hasta llegar a cero, en cuyo caso se termina el bucle y se realiza la acción escribir.

Como se vio anteriormente la condición permite terminar el bucle cuando ésta es verdadera (si) 
ahora veremos las estructuras repetitivas que se usarán en el curso de algoritmos:

ALGORITMOS CONDICIONALES

Múltiples:

Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente:


Pseudocódigo: Diagrama de flujo:
Múltiples (En caso de):

Las estructuras de comparación múltiples, es una toma de decisión especializada que permiten evaluar una variable con distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma es la siguiente:

Pseudocódigo: Diagrama de flujo:
Veamos algunos ejemplos donde se aplique todo lo anterior:

Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe aparecer un mensaje indicándolo. Expresarlo en Pseudocódigo y Diagrama de flujos.

Pseudocódigo: Diagrama de flujo: