lunes, 11 de diciembre de 2017

Estructuras repetitivas

Selección múltiple
La secuencia de instrucciones ejecutada por una instrucción Segun depende del valor de una variable numérica.
      Segun <variable> Hacer 
            <número1>: <instrucciones> 
            <número2>,<número3>: <instrucciones> 
            <...> 
            De Otro Modo: <instrucciones> 
      FinSegun 

   Esta instrucción permite ejecutar opcionalmente varias acciones posibles, dependiendo del valor almacenado en una variable de tipo numérico. Al ejecutarse, se evalúa el contenido de la variable y se ejecuta la secuencia de instrucciones asociada con dicho valor. 
   Cada opción está formada por uno o más números separados por comas, dos puntos y una secuencia de instrucciones. Si una opción incluye varios números, la secuencia de instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos números.
   Opcionalmente, se puede agregar una opción final, denominada De Otro Modo, cuya secuencia de instrucciones asociada se ejecutará sólo si el valor almacenado en la variable no coincide con ninguna de las opciones anteriores.

Repetitivas

Lazos Mientras 

   La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea verdadera. 
      Mientras <condición> Hacer 
            <instrucciones> 
      FinMientras 
vAl ejecutarse esta instrucción, la condición es evaluada. Si la condición resulta verdadera, se ejecuta una vez la secuencia de instrucciones que forman el cuerpo del ciclo. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la condición y, si es verdadera, la ejecución se repite. Estos pasos se repiten mientras la condición sea verdadera. 
   Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca, si al evaluar por primera vez la condición resulta ser falsa. 
   Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo deben contener alguna instrucción que modifique la o las variables involucradas en la condición, de modo que ésta sea falsificada en algún momento y así finalice la ejecución del ciclo.
   El ejemplo AdivinaNumero le da al usuario 10 intentos para adivinar un número generado aleatoriamente, utilizando esta estructura para verificar si el usuario acierta el número o si se agotan los intentos.

Lazos Repetir 

   La instrucción Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta que la condición sea verdadera.
      Repetir 
            <instrucciones> 
      Hasta Que <condición> 
   Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo del ciclo se ejecuta una vez y luego se evalúa la condición. Si la condición es falsa, el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición. Esto se repite hasta que la condición sea verdadera. 
   Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo del ciclo serán ejecutadas al menos una vez. 
   Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna instrucción que modifique la o las variables involucradas en la condición de modo que en algún momento la condición sea verdadera y se finalice la ejecución del ciclo.
   Si se utiliza sintaxis flexible (ver Opciones del PSeudocódigo) se permite opcionalmente utilizar Mientras Que en lugar de Hasta Que, de modo que el conjunto de acciones contenidas en el bucle se ejecuta mientras que la condición sea verdadera. Notar que la palabra Que es la que diferencia el uso de la palabra Mientras en la estructura repetir de la estructura Mientras. Es decir, si se omite la palabra que se considera como el comienzo de un bucle Mientras en lugar de el final de un bucle Repetir.

Lazos Para 

   La instrucción Para ejecuta una secuencia de instrucciones un número determinado de veces. 
      Para <variable> <- <inicial> Hasta <final> Con Paso <paso> Hacer 
            <instrucciones> 
      FinPara 

   Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta la secuencia de instrucciones que forma el cuerpo del ciclo. Luego se incrementa la variable <variable> en <paso> unidades y se evalúa si el valor almacenado en <variable> superó al valor <final>. Si esto es falso se repite hasta que <variable> supere a <final>. Si se omite la cláusula Con Paso <paso>, la variable <variable> se incrementará en 1.
   Si se habilita la sintaxis flexible en las configuración del lenguaje se pueden utilizar dos alternativas. La primer variante consiste en reemplazar el operador de asignación por la palabra clave Desde:
      Para <variable> Desde <inicial> Hasta <final> Con Paso <paso> Hacer ... 
De esta forma, la lectura de la sentencia resulta más obvia. Además, con sintaxis flexible, si no se especifica el paso pero el valor final es menor al inicial, el bucle recorrerá los valores en orden inverso como si el paso fuera -1. La segunda variante solo sirve para recorrer arreglos de una o más dimensiones. Se introduce con la construcción Para Cada seguida de un identificador, la palabra clave De y otro identificador:
      Para Cada <elemento> De <Arreglo> Hacer ... 
El segundo identificador debe corresponder a un arreglo. El primero será el que irá variando en cada iteración. El ciclo realizará tantas iteraciones como elementos contenga el arreglo y en cada uno el primer identificador servirá para refererirse al elemento del arreglo en cuestión.
   El ejemplo Promedio utiliza un bucle de este tipo para leer N valores numéricos con los cuales calcula un promedio.
   El ejemplo Para utiliza las tres variantes de este tipo de bucles para recorrer un arreglo.

martes, 14 de noviembre de 2017

ESTRUCTURAS ALGORÍTMICAS CONDICIONALES

ESTRUCTURAS ALGORÍTMICAS 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:

Simples: Se ejecuta una determinada acción cuando se cumple determinanda  condición.



Si < Condición > entonces


    < Intrucción(es) >


Fin si

EJEMPLO: Ingresar el sueldo de una persona, si supera los 3000 dólares mostrar un mensaje en pantalla indicando que debe abonar impuestos.



Diagrama de flujo:

problema estructura condicional simple


Podemos observar lo siguiente: Siempre se hace la carga del sueldo, pero si el sueldo que ingresamos supera 3000 dólares se mostrará por pantalla el mensaje "Esta persona debe abonar impuestos", en caso contrario (Falso) que la persona cobre 3000 dólares o menos no aparece nada por pantalla.


Dobles: Son aquellos que permiten elegir entre dos opciones (alternativas) posibles.




Si < Condición > entonces
      < Instrucción(es) >
Sino
      < Instrucción(es) >
Fin si

EJEMPLO: Realizar un programa que solicite ingresar dos números distintos y muestre por pantalla el mayor de ellos.

Diagrama de flujo:

problema estructura condicional compuesta
Se hace la entrada de num1 y num2 por teclado. Para saber cual variable tiene un valor mayor preguntamos si el contenido de num1 es mayor (>) que el contenido de num2, si la respuesta es verdadera vamos por la rama de la derecha e imprimimos num1, en caso que la condición sea falsa vamos por la rama de la izquierda (Falso) e imprimimos num2. Como podemos observar nunca se imprimen num1 y num2 simultáneamente. 

Múltiples: son aquellos que permiten elegir cuando hay mas de dos elecciones o alternativas posibles.



Si < Condición 1 > entonces
     Si < Condición 2 >entonces 
             < instrucción(es) >
     Sino 
            < instrucción(es) > 
     Fin si
Sino
      < instrucción(es) > 
Fin si


    miércoles, 18 de octubre de 2017

    ESTRUCTURAS ALGORITMICAS

    ESTRUCTURAS ALGORÍTMICAS

    Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realización de procesos específicos que nos lleven a la solución de problemas. 

    Estas estructuras se clasifican de acuerdo con su complejidad en:

    Resultado de imagen para estructuras algoritmicas

    ALGORITMOS CON ESTRUCTURAS 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. 

    Asignación:

    La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:

    ·   Simples: Consiste en pasar un valor constate a una variable (a=10)
    ·  Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a=a+1)
    ·   Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b)
    ·  De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a=c+b*5/2).

    Lectura (Entrada):

    La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se representa en un pseudocodigo como sigue:

                Leer a, b

                Donde “a” y “b” son las variables que recibirán los valores

    Escritura (Salida):

    Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue:

                Escribe “El resultado es:”, R

                Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que contiene un valor.

    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 Diagrama de flujos: 

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


    El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra de una estructura secuencial. 

    martes, 10 de octubre de 2017

    DIAGRAMAS DE FLUJO

    TÉCNICAS DE REPRESENTACIÓN DE ALGORITMOS


    Para la representación de un algoritmo, antes de ser convertido a lenguaje de programación, se utilizan algunos métodos de representación escrita, gráfica o matemática. 

    Los métodos más conocidos son:

    · Diagramas de flujo.
    · Pseudocódigo.


    DIAGRAMAS DE FLUJO

    Los diagramas de flujo o flujogramas son una manera de representar gráficamente el flujo de datos que ilustra la secuencia de las operaciones que se realizarán para conseguir la solución de un problema. 
    Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el código frente a la computadora. Estos diagramas de flujo desempeñan un papel vital en la programación de un problema y facilitan la comprensión de problemas complicados y sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fácil escribir el programa en cualquier lenguaje de programación. 
    Simbología gráfica para dibujar un diagramas de flujo.
    Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares para diagramar programas de computadora y que se muestran a continuación:
    Inicio o fin del programa
    Pasos, procesos o líneas de instrucción de programa de computo
    Operaciones de entrada y salida
    Toma de decisión y Ramificación
    Conector para unir el flujo a otra parte del diagrama
    Cinta magnética
    Disco magnético
    Conector de pagina
    Líneas de flujo
    Anotación
    Salida, para mostrar datos en pantalla
    Display, envía datos a la impresora
    Reglas para la creación de Diagramas de Flujo
    1. Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.
    2. Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo horizontal o verticales (nunca diagonales).
    3. Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se van a utilizar conectores cuando sea estrictamente necesario.
    4. No deben quedar líneas de flujo sin conectar
    5. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras.
    6. Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final.
    7. Solo los símbolos de decisión pueden y deben tener mas de una línea de flujo de salida.

    Ejemplo de Diagrama de Flujo

    Desarrollar un programa que sume dos números y el resultado en impresora.

    ejemplos de diagramas de flujo

    En el ejercicio tenemos el inicio y el fin, una entrada de datos, para ingresar los 2 números, una operación a realizar, la suma, y un resultado a mostrar. Cada uno de esos pasos con su símbolo correspondiente en el diagrama.




    PSEUDOCÓDIGO

    El pseudocódigo (o falso lenguaje) es comúnmente utilizado por los programadores para omitir secciones de código o para dar una explicación del paradigma que tomó el mismo programador para hacer sus códigos, esto quiere decir que el pseudocódigo no es programable sino que facilita la programación.

    El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizará para la codificación del mismo.


    Características del Pseudocódigo


    Las principales características de este lenguaje son: 
    • Se puede ejecutar en un ordenador
    • Es una forma de representación sencilla de utilizar y de manipular.
    • Facilita el paso del programa al lenguaje de programación.
    • Es independiente del lenguaje de programación que se vaya a utilizar.
    • Es un método que facilita la programación y solución al algoritmo del programa.
    Estructura de un programa en Pseudocódigo: 

    Cabecera: 
    • Programa:
    • Tipos de datos:
    • Constantes:
    • Variables:
    Cuerpo: 
    • Inicio
    • Instrucciones
    • Fin
    LISTA DE PALABRAS RESERVADAS Y SU SIGNIFICADO:

    Instrucción
    Significado
    algoritmo nombre          
    Marca el comienzo de un algoritmo y le adjudica un nombre
    Inicio      
    Marca el comienzo de un bloque de instrucciones
    Fin          
    Marca el final de un bloque de instrucciones
    Variables

    nombre_var es tipo_de_datos 
    Declaración de variables. Indica el identificador y el tipo de las variables que se van a usar en el algoritmo
    constantes

    nombre_const = expresión        
    Declaración de constantes. La expresión se evalúa y su resultado se asigna a la constante. Este valor no puede modificarse a lo largo del programa.
    Leer (variable)
    Entrada de datos. El programa lee un dato desde un dispositivo de entrada (si no se indica otra cosa, el teclado), asignando ese dato a la variable

    Escribir (variable)
    Salida de datos. Sirve para que el programa escriba un dato en un dispositivo de salida (si no se indica otra cosa, la pantalla).
    variable <-  expresión
    Asignación. La expresión se evalúa y su resultado es asignado a la variable
    si (condición) entonces
    inicio
          acciones-1
    fin
    si_no
    inicio
          acciones-2
    fin
    Instrucción condicional doble. El ordenador evaluará la condición, que debe ser una expresión lógica. Si es verdadera, realiza las acciones-1, y, si es falsa, las acciones-2.Instrucción condicional simple. Es igual pero carece de la rama “si_no”, de modo que, si la expresión de falsa, no se realiza ninguna acción y la ejecución continúa por la siguiente instrucción
    según (expresión) hacer
    inicio
        valor1: acciones-1
        valor2: acciones-2
        …
        valor3: acciones-N
        si_no: acciones-si_no
    fin
    Instrucción condicional múltiple. Se utiliza cuando hay más de dos condiciones posibles (verdadero o falso) . Se evalúa la expresión, que suele ser de tipo entero, y se busca un valor en la lista valor1, valor2,… valorN que coincida con ella, realizándose las acciones asociadas al valor coincidente.Si ningún valor de la lista coincide con la expresión del “según”, se realizan las acciones de la parte “si_no”.
    mientras (condición) hacer
    inicio
        acciones
    fin
    Bucle mientras. Las acciones se repiten en tanto la condición, que debe ser una expresión lógica, sea verdadera. La condición se evalúa antes de entrar al bloque de acciones, de modo que pueden no ejecutarse ninguna vez.
    repetir
    inicio
       acciones
    fin
    mientras que (condición)
    Bucle repetir. Las acciones se repiten en tanto que la condición, que debe ser una expresión lógica, sea verdadera. Se parece mucho al anterior, pero la condición se evalúa al final del bucle, por lo que éste se ejecuta, como mínimo una vez.
    para variable desde expr-ini hasta expr-fin hacer
     inicio
         acciones
     fin
    Bucle para. Se evalúa la expresión expr-ini, que debe ser de tipo entero, y se asigna ese valor a la variable. Dicha variable se incrementa en una unidad en cada repetición de las acciones. Las acciones se repiten hasta que la variable alcanza el valor expr-fin.

    Ejemplo de Pseudocódigo

    Desarrollar un programa que sume dos números y el resultado en impresora.

    Programa: suma_dos_números 
    Variables: 
       a: entero 
       b: entero
       suma: entero
    Inicio 
       Escribir "Leer un nuemro: " 
       Leer a
       Escribir "Leer otro numero: " 
       Leer b
       suma <- a + b 
       Escribir "Resultado: ", suma 
    Fin


    FASES PARA LA RESOLUCIÓN DE UN PROBLEMA


    1. Definición del Problema

    Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.

    2. Análisis del Problema

    Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
    • Los datos de entrada.
    • Los métodos y fórmulas que se necesitan para procesar los datos.
    • Cual es la información que se desea producir (salida).
    3. Diseño del Algoritmo (Diagrama de flujo o Pseudocódigo)

    Las características de un buen algoritmo son:
    • Debe tener un punto particular de inicio.
    • Debe ser definido, no debe permitir dobles interpretaciones.
    • Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.
    • Debe ser finito en tamaño y tiempo de ejecución.
    4. Codificación

    La codificación es la operación de escribir la solución del problema en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación.

    5. Prueba y Depuración

    Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.

    La prueba consiste en la captura de datos hasta que el programa no presente errores (los más comunes son los sintácticos y lógicos).

    Bloque Control

                   nnnn                                                      nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn...