martes, 13 de noviembre de 2018

ALGORITMOS EN PSEINT

¿Qué es PSeInt? 


  • PSeInt es una herramienta para asistir a un estudiante en sus primeros pasos en programación. Mediante un simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo), le permite centrar su atención en los conceptos fundamentales de la algoritmia computacional, minimizando las dificultades propias de un lenguaje y proporcionando un entorno de trabajo con numerosas ayudas y recursos didácticos.

El Pseudo-código

  • Sintaxis sencilla
  • Manejo de las estructuras básicas de control
  • Solo 3 tipos de datos básicos: numérico, caracter /cadenas de caracteres y lógico (verdadero-falso).
  • Estructuras de datos: arreglos


  • Todo algoritmo en pseudocógido tiene la siguiente estructura general:

  •      Proceso SinTitulo
  •           accion 1;
  •           accion 1;
  •                .
  •                .
  •                .
  •           accion n;
  •      FinProceso

  • Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue una secuencia de instrucciones y finaliza con la palabra FinProceso. Una secuencia de instrucciones es una lista de una o más instrucciones, cada una terminada en punto y coma.

  • Las acciones incluyen operaciones de entrada y salida, asignaciones de variables, condicionales si-entonces o de selección múltiple y/o lazos mientras, repetir o para.


  • Asignación

  • La instrucción de asignación permite almacenar una valor en una variable.

  •       <variable> <- <expresión> ; 

  • Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego se asigna el resultado a la variable de la izquierda. El tipo de la variable y el de la expresión deben coincidir.
  • Entradas

  • La instrucción Leer permite ingresar información desde el ambiente.

  •       Leer <variablel> , <variable2> , ... ,
  • <variableN> ; 

  • Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los asigna a las N variables mencionadas. Pueden incluirse una o más variables, por lo tanto el comando leerá uno o más valores.
  • Salidas

  • La instrucción Escribir permite mostrar valores al ambiente.

  •       Escribir <exprl> , <expr2> , ... , <exprN> ; 

  • Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores obtenidos de evaluar N expresiones. Dado que puede incluir una o más expresiones, mostrará uno o más valores.
  • Dimensionamiento
  • La instrucción Dimension permite definir un arreglo, indicando sus dimensiones.

  •       Dimesion <identificador> (<maxl>,...,<maxN>); 

  • Esta instrucción define un arreglo con el nombre indicado en <indentificador> y N dimensiones. Los N parámetros indican la cantidad de dimensiones y el valor máximo de cada una de ellas. La cantidad de dimensiones puede ser una o más, y la máxima cantidad de elementos debe ser una expresión numérica positiva.
  • Se pueden definir más de un arreglo en una misma instrucción, separándolos con una coma (,).

  •       Dimension <ident1> (<max11>,...,<max1N>),..., <identM> (<maxM1>,...,<maxMN>) 

  • Es importante notar que es necesario definir un arreglo antes de utilizarlo.
  • Selección Multiple
  • 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.
  • Lazos Mientras
  • La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea verdadera.

  •       Mientras <condición> Hacer
  •             <instrucciones>
  •       FinMientras 

  • Al 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.
  • 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.
  • 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.
  • Operadores y Funciones
  • Este pseudolenguaje dispone de un conjunto básico de operadores y funciones que pueden ser utilizados para la construcción de expresiones más o menos complejas.

  • Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:

  •           
    Operador
    Significado
    Ejemplo
    Relacionales
    >
      Mayor que  3>2
    <
      Menor que  'ABC'<'abc'
    =
      Igual que  4=3
    <=
      Menor o igual que  'a'<='b'
    >=
      Mayor o igual que  4>=5
    Logicos
    & ó Y
      Conjunción (y).  (7>4) & (2=1) //falso
    | ó O
      Disyunción (o).  (1=1 | 2=1) //verdadero
    ~ ó NO
      Negación (no).  ~(2<5) //falso
    Algebraicos
    +
      Suma  total <- cant1 + cant2
    -
      Resta  stock <- disp - venta
    *
      Multiplicación  area <- base * altura
    /
      División  porc <- 100 * parte / total  
    ^
      Potenciación  sup <- 3.41 * radio ^ 2
    % ó MOD
      Módulo (resto de la división entera)    resto <- num MOD div

  • La jerarquía de los operadores matemáticos es igual a la del álgebra, aunque puede alterarse mediante el uso de paréntesis.

  • A continuación se listan las funciones integradas disponibles:

  •           
    FunciónSignificado
    RC(X)Raíz Cuadrada de X
    ABS(X)Valor Absoluto de X
    LN(X)Logaritmo Natural de X
    EXP(X)Función Exponencial de X
    SEN(X)Seno de X
    COS(X)Coseno de X
    ATAN(X)Arcotangente de X
    TRUNC(X)Parte entera de X
    REDON(X)Entero más cercano a X
    AZAR(X)Entero aleatorio entre 0 y X-1

  • Algunas Observaciones
  • Se pueden introducir comentarios luego de una instrucción, o en líneas separadas, mediante el uso de la doble barra ( // ). Todo lo que precede a //, hasta el fin de la línea, no será tomado en cuenta al interpretar el algoritmo.
  • Notese que no puede haber instrucciones fuera del programa, aunque si comentarios.
  • Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener otras adentro, pero la estructura contenida debe comenzar y finalizar dentro de la contenedora.
  • Los identificadores, o nombres de variables, deben constar sólo de letras y números, comenzando siempre con una letra, y no pueden ser palabras reservadas (como para, mientras, y, no, etc...)
  • Las constantes de tipo carácter se escriben entre comillas ( " ).
  • En las constantes numéricas, el punto ( . ) es el separador decimal.
  • Las constantes lógicas son Verdadero y Falso.

  • Recuperado dehttp://pseint.sourceforge.net/index.php?page=pseudocodigo.php el 13/11/18


    TIPOS DE DATOS EN PSEINT

    Tipo Real: Una variable de tipo real admite datos numéricos, que pueden ser enteros y/o con punto decimal.
    Tipo Entero: Es una especialización que sólo permite almacenar valores enteros; cualquier valor no entero que se lea o asigne en una variable de este tipo será truncado.
    Tipo Carácter: Las variables de caracteres se usan para almacenar valores alfabéticos, en particular letras solas.Tipo LógicoUna variable de tipo LOGICO sólo puede tomar los valores VERDADERO y FALSO, pero cuando se lee una variable ya definida como lógica, el usuario puede ingresar también las abreviaciones V y F, o 0 y 1.
    DIAGRAMA DE FLUJO
    Tipo de dato
    Descripción
    Ejemplo
    entero
    Tipo de dato asociado a cantidades enteras. No poseen parte decimal. Ejemplo: 5, 6, -15, 199,…
    Numero de vacas, edad.
    real
    Tipo de dato asociado a cantidades con parte decimal. Por ejemplo: 0.06, -3.4, 2.16, 1000.345,…
    Estatura, peso, volumen.
    lógicos
    Se refiere a aquellos datos que pueden tomar solo dos posibles valores falso (F) o verdadero (T)
    alfanuméricos
    Asociado a aquellos datos que contienen caracteres alfanuméricos (letras, número, signos de puntuación, etc).
    Nombre, cedula, telefono
    Operador
    Significado
    ^
    Potenciación
    +
    Suma
    -
    Resta
    *
    Multiplicación
    /
    División
    Condicional Si-Entonces
    La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sino depende del valor de una condición lógica.
          Si <condición>
                Entonces
                     <instrucciones> 
                Sino 
                      <instrucciones>
          FinSi 
    Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones que correspondan: las instrucciones que le siguen al Entonces si la condición es verdadera, o las instrucciones que le siguen al Sino si la condición es falsa. La condición debe ser una expresión lógica, que al ser evaluada retorna Verdadero o Falso.
    La cláusula Entonces debe aparecer siempre, pero la cláusla Sino puede no estar. En ese caso, si la condición es falsa no se ejecuta ninguna instrucción y la ejecución del programa continúa con la instrucción siguiente.
    Comprobando condiciones (2: Segun)
    Segun variable Hacer
    valor1: pasos_a_dar_si_es_el_valor1
    valor2: pasos_a_dar_si_es_el_valor2
    valor3: pasos_a_dar_si_es_el_valor3
    De Otro Modo:
    pasos_a_dar_si_es_otro_valor
    FinSegun
    Algoritmo EjemploCasos
    Escribir "Introduzca la nota";
    Leer nota;
    Segun nota Hacer
    10:
    Escribir "Ha obtenido un sobresaliente alto";
    9:
    Escribir "Ha obtenido un sobresaliente bajo";
    8:
    Escribir "Ha obtenido un notable alto";
    7:
    Escribir "Ha obtenido un notable bajo";
    6:
    Escribir "Ha obtenido un aprobado alto";
    5:
    Escribir "Ha obtenido un aprobado";
    De Otro Modo:
    Escribir "Ha suspendido";
    FinSegun
    FinAlgoritmo
     

    Recuperado de: http://pseint.sourceforge.net/ el 13/11/18

    Las características de este pseudolenguaje fueron propuestas en 2001 por el responsable de la asignatura Fundamentos de Programación de la carrera de Ingeniería Informática de la FICH-UNL. Las premisas son: 

    RECUPERADO DE https://ulisesorea.wordpress.com/2016/10/02/tipos-de-datos-en-pseint/ EL 13/11!8


    Cadena: Es una secuencia ordenada (de longitud arbitraria, aunque finita) de elementos que pertenecen a un cierto lenguaje formal o alfabeto análogas a una fórmula o a una oración.
    Cuando se formula un algoritmo el objetivo es ejecutar este en un computador, sin embargo, para que este entienda los pasos para llevar a cabo nuestro algoritmo debemos indicárselo siguiendo un conjunto de instrucciones y reglas que este entienda, y estas instrucciones son abstraídas en lo que conocemos como lenguaje de programación.
    Un algoritmo codificado siguiendo un lenguaje de programación es conocido como programa. Antes de aprender un lenguaje de programación es necesario aprender la metodología de programación, es decir la estrategia necesaria para resolver problemas mediante programas.
    Como punto de partida se aborda la manera como es representado un algoritmo. Basicamente analizamos dos formas, la representación usandopseudocódigo y la representación usando diagramas de flujo.
    Un diagrama de flujo es un diagrama que utiliza símbolos (cajas) estándar y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican las secuencia que debe ejecutar el algoritmo
    Monografias.com
    Por otro lado, el pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal lenguaje hace el paso de codificación final (traducción al lenguaje de programacion) relativamente fácil, por lo que este es considerado un primer borrador de la solución del programa.
    Monografias.com
    Pseudocódigo en pocas palabras
    Como habíamos dicho antes, el pseudocódigo es un lenguaje de descripción de algoritmos por lo que un primer paso consiste en familiarizarnos con este lenguaje. Como punto de partida tenemos que tener en cuenta lo siguiente:
    · Anatomía de un algoritmo: Un algoritmo es finito por lo que tiene un principio y un fin. La siguiente plantilla muestra la forma básica de un algoritmo:
    Monografias.com
    · Las variables: Cuando nos referimos a variables nos referimos a lugares de memoria en los cuales se almacena algún tipo de información, por ejemplo el numero de gallinas, la altura, la edad, el nombre y el peso. Existen diferentes tipos de datos tal y como se muestra en la siguiente tabla:
    Cuando se trabaja con variables un aspecto de vital importancia (además del tipo) es el nombre que estas van a tener, se recomiendan nombres relacionados con la información que van a manejar, por ejemplo, si se va a manejar un salario, un nombre apropiado para una variable puede ser sal.
    · Instrucción de asignación: Escribe sobre una variable el valor de una expresión. Asi:
    variable = expresión
    Donde, una expresión es una combinación de valores, variables y operadores, los siguientes son algunos ejemplos de expresiones:
    a = 5
    b =c*d+(c-f)*m z=(x+y)/(w+s) s=(a/b)^3
    Existen diferentes tipos de operadores. La siguiente tabla muestra los operadores aritméticos.
    · Instrucciones de entrada y salida: Para que un programa pueda interactuar con el usuario deben haber un conjunto de instrucciones que permitan especificar tal interacción, y estas son las instrucciones de entrada y salida.
    ü Instrucciones de entrada: Permite tomar uno o mas datos de un medio externo
    (comúnmente el teclado) y asignarlos a una o mas variables, su representación en pseudocódigo es:
    LEA(var1, var2, …, varN)
    ü Instrucciones de salida: Permite mostrar de variables y constante en un medio externo (comúnmente la pantalla). En pseudocódigo la instrucción asociada a la salida tiene la siguiente forma:
    ESCRIBA(var1,var2, …, varN)
    Ejemplo 1:
    Codifique un algoritmo que solicite el nombre y devuelva como salida el mensaje: Hola nombre_ingresado. Por ejemplo, si el usuario digita ramón, el mensaje desplegado será: Hola ramón.
    Solución:
    La codificación en Pseudocódigo del algoritmo se muestra a continuación:
    Monografias.com
    RECUPERADO DE https://www.monografias.com/trabajos-pdf5/tutorial-pseint/tutorial-pseint.shtml


    Es frecuente tener que comprobar más de una condición a la vez, o bien varias condiciones consecutivas. En concreto, un caso especialmente habitual es el de que una variable pueda un valor de entre varios. Por ejemplo, en el sistema de notas escolares español clásico, ciertas notas numéricas tienen "nombres" asociados: un 5 es un aprobado, un 9 y un 10 son sobresaliente, etc. Si queremos hacer un programa que convierta de la nota numérica a su equivalente escrito, podríamos emplear varias órdenes IF, una tras la otra. Pero en muchos lenguajes de programación (y por tanto, también en muchas variantes de pseudocódigo) existe una alternativa más compacta y más legible: la orden "SEGUN". Esta órden permite hacer unas cosas u otras según el valor que tome una variable. Su uso sería así:
    El bloque "De Otro Modo" es opcional: si detallamos todos los valores posibles, no sería necesario utilizarlo.
    El número de valores que podemos probar es indefinido: no tiene por qué ser 3, sino que pueden ser menos casos o muchos más.
    Según la variante de pseudocódigo (o el lenguaje de programación) que empleemos, puede haber restricciones en el tipo de datos que es aceptable. Por ejemplo, en el caso de PseInt, la variable tiene que tener un valor numérico, no puede ser un texto.
    Al igual que ocurría con la orden SI, existe un símbolo que podemos usar en los diagramas de flujo para ayudarmos a planificar nuestro programa (aunque este símbolo está menos extendido que el de SI):
    Así, si en PseInt hacemos clic en el icono del panel derecho que representa la condición SEGUN, aparece un esqueleto de programa casi completo, para que hagamos los cambios que nos interesen:
    Sólo tenemos que escribir la condición que realmente nos interesa, y la serie de pasos a dar si se cumple y si no se cumple, de modo que nuestro programa podría quedar así:
    Su resultado sería éste:
    Pero no siempre habrá que comprobar condiciones una única vez. Es muy frecuente que haya que hacerlo de forma repetitiva. Por ejemplo, "pedir una contraseña al usuario hasta que sea la correcta", o aún más cercano al mundo real, "pedir una contraseña al usuario hasta que sea la correcta o agote sus intentos". De eso hablaremos en la próxima entrega.
    Ejercicio de repaso propuesto 5.1: Haz un programa que pida un número al usuario un número de día de la semana (del 1 al 7) y escriba el nombre de ese día (por ejemplo, "martes" para el día 2). Debes emplear la orden SEGUN.
    Ejercicio de repaso propuesto 5.2: Crea una variante del ejercicio 5.1, en la que emplees varios SI-ENTONCES en vez de SEGUN.
    Ejercicio de repaso propuesto 5.3: Crea un programa que pida un número al usuario un número de mes (por ejemplo, el 4) y escriba el nombre del mes correspondiente (por ejemplo, "abril"). Debes usar la orden SEGUN.
    Ejercicio de repaso propuesto 5.4: Crea una variante del ejercicio 5.3, en la que emplees varios SI-ENTONCES en vez de SEGUN.
    RECUPERADO DE:http://www.aprendeaprogramar.com/mod/resource/view.php?id=403