Literal de un numero algoritmo

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 39,83 KB

                                             UNIDAD 4                                

Algoritmos

¿Qué es un algoritmo?

Es el momento de realizar el algoritmo que resolverá el problema!

En esta unidad, vamos a explicarles qué es un algoritmo, sus carácterísticas y componentes.


Comenzamos con el siguiente algoritmo de ejemplo.
Te proponemos un desafío: leé detenidamente el siguiente algoritmo. ¿Podés darte cuenta qué es lo que hace? Seguramente que sí! Ponéte a prueba:

SEUDOCÓDIGO
VARIABLES
    NOTA1, NOTA2, NOTA3: ENTERO
    PROMEDIO: REAL
INICIO
    Mostrar ("Ingrese nota
1")
    Ingresar (NOTA1)
    Mostrar ("Ingrese nota 2")
    Ingresar (NOTA2)
    Mostrar ("Ingrese nota 3")
    Ingresar (NOTA3)
    PROMEDIO <- (nota1+nota2+nota3)="">->
    Mostrar ("El promedio de las notas es:", PROMEDIO)
FIN

¿Qué podés deducir de este algoritmo?


Seguramente te habrás dado cuenta de que el algoritmo solicita tres notas al usuario y luego informa el promedio de dichas notas. 

¿Cómo pudiste darte cuenta?


Porque el algoritmo está escrito en castellano, es bien claro y preciso con las instrucciones que describe, las variables tienen nombres que representan su valor y, además, no presenta ambigüedades. 

Pensá unos instantes en las carácterísticas de este ejemplo...

Habrás notado que el algoritmo está formado por una lista de acciones (como una receta de cocina) que van describiendo una tarea a realizar y una lista de ingredientes, que en nuestro caso son las Variables. También habrás notado que el algoritmo comienza y termina y que al finalizar, llegamos al resultado deseado.

Veamos entonces, cuáles son las carácterísticas de un algoritmo.

Carácterísticas de un algoritmo.

Te presentamos ahora las carácterísticas que tiene que tener todo algoritmo. 

Es Finito:

Todo algoritmo está compuesto por una lista finita de instrucciones. Es decir que la cantidad de acciones del algoritmo siempre está limitada, todo algoritmo tiene un Inicio y un Final..

Es Preciso:

La lista de acciones es bien clara y precisa, no debe haber ambigüedades ni dejar valores o instrucciones sobreentendidas o presupuestas. Para lograr esta precisión trabajaremos con un lenguaje especial para escribir nuestros algoritmos, definiendo las normas de sintaxis y semántica. Este lenguaje se llama seudocódigo, y comenzaremos a trabajar con él en esta misma unidad.

Tiene Comienzo y Fin:

Todo algoritmo comienza en un tiempo determinado y en algún momento finaliza su ejecución. Es decir que todo algoritmo siempre tiene que terminar, no puede haber algoritmos infinitos. Por ejemplo, pensemos en listar todos los números enteros, esto no sería un algoritmo, como seguramente estará pensando, porque como hay infinitos números enteros, este listado no finalizaría nunca.

Es Efectivo:

El algoritmo resuelve un problema que forma parte de un conjunto o familia de problemas. Todo algoritmo debe funcionar correctamente, generando las salidas esperables y dando solución al problema.

Definición de algoritmo

Ahora que ya vimos un algoritmo de ejemplo y conocemos sus carácterísticas, podemos llegar a una definición formal de lo que es un algoritmo.

Aunque existen varias definiciones de algoritmos en la bibliografía y también en Internet, nosotros te presentamos nuestra propia definición que consideramos que abarca las principales carácterísticas. 

Entonces...

¿Qué es un algoritmo?
Algoritmo

Antes de continuar, te proponemos unos ejercicios de repaso:

Etapas de un algoritmo

Como explicamos antes, una de las carácterísticas que tiene que cumplir un algoritmo es que se ejecute a lo largo de un tiempo finito. Es por eso que durante la ejecución podemos encontrarnos con distintas etapas, las cuales presentamos a continuación:

  • Entrada:


    Representa la información que necesitan los pasos del algoritmo para ejecutarse.
  • Proceso:


    Es el conjunto de acciones elementales, organizadas en el tiempo.
  • Salida:


     Es el resultado que se obtiene ejecutando los pasos del algoritmo con los datos de entrada.

También podemos definir el estado del algoritmo:
Corresponde a la instantánea que describe el valor de los indicadores (que son las variables y las constantes) en un determinado momento de la ejecución.


Seudocódigo, el lenguaje algorítmico.

Ahora te proponemos repasar las carácterísticas que presentamos de un algoritmo y luego continuamos con la lectura.

Volvamos a nuestro algoritmo de ejemplo:

SEUDOCÓDIGO
VARIABLES
    NOTA1, NOTA2, NOTA3: ENTERO
    PROMEDIO: REAL
INICIO
    Mostrar ("Ingrese nota 1")
    Ingresar (NOTA1)
    Mostrar ("Ingrese nota 2")
    Ingresar (NOTA2)
    Mostrar ("Ingrese nota 3")
    Ingresar (NOTA3)
    PROMEDIO <- (nota1+nota2+nota3)="">->
    Mostrar ("El promedio de las notas es:", PROMEDIO)
FIN
Ya pudimos determinar qué hace este algoritmo gracias a una de sus carácterísticas fundamentales: ser preciso, sin ambigüedades. 

¿Cómo podemos lograr esto?
Debemos tener un lenguaje en común.
Al igual que las personas, que nos comunicamos por medio de un lenguaje compartido que tiene sus reglas de sintaxis y semántica, para expresar los algoritmos utilizaremos un lenguaje que también tendrá su vocabulario y sus reglas sintácticas y semánticas.

Este lenguaje algorítmico se llama seudocódigo.
 A lo largo de las siguientes unidades te vamos a ir presentando las distintas palabras y reglas que te permitirán especificar un algoritmo de forma correcta y precisa.

En el ejemplo, podemos ver que el lenguaje utiliza palabras del idioma castellano y además es muy simple y claro.

Además de las reglas de sintaxis y semántica, existen buenas pautas de desarrollo de algoritmos , que vamos a ir comentando a medida que vayamos avanzando con la incorporación de nuevos conceptos.

Instrucciones básicas del seudocódigo.

Ahora vamos a comenzar a definir nuestro lenguaje algorítmico con las instrucciones básicas que utilizarás en la mayoría de tus programas. Repasando nuestro algoritmo de ejemplo, habrás notado que se solicitan datos al usuario por teclado, se modifican los valores de las variables y, finalmente, se muestran datos por pantalla. Es decir que trabajamos con instrucciones de entrada y de salida que ya hemos identificado. A continuación te las presentamos formalmente.

Esas son las primeras instrucciones que aprenderás y con las que podrás resolver una gran cantidad de problemas.

SEUDOCÓDIGO
  • Asignación
  • Ingresar
  • Mostrar
Veamos de qué se trata cada una...

1.Asignación

La asignación de un valor a una variable es la operación básica que se encuentra en la mayoría de los algoritmos. Con esta instrucción se modifica el valor de una variable. La forma de indicar una asignación en seudocódigo es la siguiente:

Siendo EDAD una variable de tipo ENTERO:

EDAD <->->

Esta asignación se lee como: “Edad toma el valor 20”. 

La operación de asignación está representada por una flecha de derecha a izquierda <-. En="" la="" parte="" izquierda="" debes="" escribir="" una="" variable,="" mientras="" que="" a="" la="" derecha="" de="" la="" flecha="" deberás="" escribir="" una="" expresión="" que="" devuelva="" un="" valor="" del="" mismo="" tipo="" de="" dato="" de="" la="" variable.="" ahora="">-.>

¿Qué es una Expresión?

Veamos algunos ejemplos de asignaciones:
SEUDOCÓDIGO
EDAD <>
SUMA <- a="" +="">->
ÉXITO <->->
COD <->->

1.1.Contadores y Acumuladores

Volvamos a nuestro primer algoritmo de ejemplo:
Para calcular el promedio tuvimos que sumar las tres notas y dividirlas por 3, ya que corresponde a la cantidad de notas del alumno. De forma genérica, un promedio se obtiene dividiendo el total acumulado por la cantidad de elementos. De esta manera, surge la necesidad de contar la cantidad de notas y, por otro lado, la de acumular la suma de esas notas. 

Hagamos una nueva versión de nuestro algoritmo original:

SEUDOCÓDIGO
VARIABLES
    NOTA1, NOTA2, NOTA3, TOTAL_NOTAS, CANT_NOTAS : ENTERO
    PROMEDIO : REAL
INICIO
    TOTAL_NOTAS <->->
    CANT_NOTAS <->->
    Mostrar (“Ingrese nota 1”)
    Ingresar (NOTA1)
    TOTAL_NOTAS <- total_notas="" +="">->
    CANT_NOTAS <- cant_notas="" +="">->
    Mostrar (“Ingrese nota 2”)
    Ingresar (NOTA2)
    TOTAL_NOTAS <- total_notas="" +="">->
    CANT_NOTAS <- cant_notas="" +="">->
    Mostrar (“Ingrese nota 3”)
    Ingresar (NOTA3)
    TOTAL_NOTAS <- total_notas="" +="">->
    CANT_NOTAS <- cant_notas="" +="">->
    PROMEDIO <- total_notas="">->
    Mostrar (“El promedio de las notas es:”, PROMEDIO)
FIN


Como habrás observado, agregamos dos variables:
TOTAL_NOTAS y CANT_NOTAS.

En TOTAL_NOTAS iremos acumulando la sumatoria de todas las notas.
Para acumular las notas comenzamos en 0 y luego, por cada nota que se ingresa, sumamos ese valor al total acumulado. 

Del mismo modo iremos contando la cantidad de notas en la variable CANT_NOTAS.
Para contar las notas comenzamos en 0 y luego, por cada nota que se ingresa, contamos esa nota sumándole 1 a CANT_NOTAS.



Los acumuladores y contadores son muy comunes en programación y seguramente los vas a utilizar en muchos de tus algoritmos.

Veamos otro ejemplo:

NUM <->->
    NUM <- num="" +="">->

Veamos qué sucede con estas instrucciones...
NUM toma el valor 1
NUM toma el valor NUM + 1. 


¿Qué valor tendrá NUM luego de la asignación? 
NUM tendrá el valor 1 + 1, es decir, 2.

Esta asignación que acabamos de realizar (sumarle un número más a una variable), es lo que en programación se conoce como Contado

¿Qué es un contador?


Veamos otro ejemplo más:
TOTAL <->->
        NUM <->->
               TOTAL <- total="" +="">->


Veamos qué sucede con estas instrucciones...
TOTAL toma el valor 1.
NUM toma el valor 2.
TOTAL toma el valor de TOTAL + el valor de NUM. Es decir 1 + 2. Por lo tanto, TOTAL tendrá el valor 3

En este caso, a una variable se le está acumulando su mismo valor con el valor de otra variable. 
Esta operación es lo que en programación se conoce como Acumulador. 

¿Qué es un acumulador?

2. Ingresar

Te proponemos que vuelvas a leer el ejemplo de nuestro primer algoritmo y observes que el programa necesita que el usuario ingrese datos. En ese ejemplo, el algoritmo solicita al usuario la primera nota en la siguiente instrucción:

Ingresar (NOTA1)

De esa manera nuestro seudocódigo nos brinda la acción para ingresar un dato desde el teclado, ya que, como recordarás, un programa debe trabajar con datos de entrada. 
De forma genérica, la instrucción para ingresar un dato por teclado es:

Ingresar (VARIABLE)

La instrucción Ingresar realiza una lectura de lo que el usuario ingresa por medio del teclado y guarda ese contenido en la variable que se encuentra entre paréntesis.
Por ejemplo, si tenemos la siguiente instrucción:
Ingresar (EDAD)

Cuando el algoritmo llegue a esta sentencia quedará a la espera de que el usuario ingrese un número, y luego de presionar la tecla ENTER, ese número escrito será almacenado como el valor de la variable de tipo entero EDAD.

Con una instrucción ingresar se pueden cargar datos desde el teclado para variables del tipo ENTERO, REAL, CARÁCTER y CADENA.

3.Mostrar

Siguiendo con nuestro primer algoritmo, podrás observar que en la última instrucción se informa al usuario cuál es el promedio; es decir que estamos mostrando por pantalla el resultado de una expresión.
Esa instrucción que informa al usuario es la siguiente:

Mostrar ("El promedio de las notas es:", PROMEDIO)


Seguramente recordarás que el objetivo de un programa es generar un resultado.
En los algoritmos que realicemos en nuestra materia, ese resultado será informado al usuario desde la pantalla. Entonces, surge la necesidad de que un algoritmo pueda mostrar un dato por pantalla. Para eso tenemos la siguiente acción


Mostrar (EXPRESIÓN)

Cuando el algoritmo llegue a esta sentencia se resolverá la expresión que está entre los paréntesis y su valor se mostrará por la pantalla.



Veamos algunos ejemplos.
Mostrar (EDAD)

Siendo EDAD una Variable de tipo ENTERO, mostrará por pantalla el valor de la variable.

Mostrar (10+5)

Muestra por pantalla el número 15

Mostrar (“El resultado es: ”, TOTAL)

Siendo TOTAL una Variable de tipo REAL, muestra por pantalla el texto encerrado entre las comillas y a continuación el valor de la variable TOTAL. Es decir que, si TOTAL tiene un valor 125.5, mostrará:
El resultado es 125,5.

4. Primer algoritmo

Repasemos nuestro primer ejemplo y supongamos el siguiente problema:

Ingresar por teclado las notas de 3 alumnos y luego calcular y mostrar el promedio de esas notas



Realicemos el Análisis Previo:



OBJETIVO
A partir de 3 notas de tipo ENTERO, calcular e informar el promedio de esas notas

DATOS DE ENTRADA
NOTA1, NOTA2, NOTA3 : Variables de tipo ENTERO.

PRECONDICIONES: 
NOTA1 >= 1
        NOTA1 <=>=>
NOTA2 >= 1
        NOTA2 <=>=>
NOTA3 >= 1
        NOTA3 <=>=>

DATOS DE SALIDA
PROMEDIO

LOTE DE DATOS DE PRUEBA.




Y ahora veamos nuestro primer algoritmo:



SEUDOCÓDIGO
VARIABLES NOTA1, NOTA2, NOTA3 : ENTERO PROMEDIO : REALINICIO Mostrar (“Ingrese nota 1”)        Ingresar (NOTA1) Mostrar (“Ingrese nota 2”)        Ingresar (NOTA2) Mostrar (“Ingrese nota 3”)        Ingresar (NOTA3) PROMEDIO <- (nota1+nota2+nota3)="">-> Mostrar (“El promedio de las notas es:”, PROMEDIO)FIN

Veamos algunos comentarios sobre este primer algoritmo:



  • Ya aprendimos que todo algoritmo comienza y, al ser una lista finita de instrucciones, tiene un final.
     Entonces tendremos dos palabras especiales en el seudocódigo que nos van a limitar las sentencias de ejecución del algoritmo, ellas son “INICIO” y “FIN”.

  • Todo algoritmo tiene una sección especial, separada de las acciones ejecutables, que se utiliza para definir las variables. 
     La sección se llama VARIABLES, y puede ir antes o después del algoritmo. En esta sección, en el ejemplo, definimos cuatro variables. Observe que las tres primeras están agrupadas en una misma definición, ya que son del mismo tipo de dato. Esta notación se suele usar para simplificar y hacer el algoritmo más claro, aunque también puede definir una variable por vez y en cada renglón.  En la siguiente línea definimos la variable PROMEDIO, ya que es REAL, un tipo de dato distinto que las variables agrupadas.
  • Ahora analicemos en el algoritmo: Lo primero que hace nuestro pseudocódigo es mostrar por pantalla el mensaje “Ingrese nota 1”.
    En la siguiente instrucción hay una acción Ingresar, por lo tanto, el algoritmo quedará esperando que el usuario escriba algo por teclado, y al presionar la tecla ENTER guardará ese valor en la variable NOTA1.
    Lo mismo sucede con las otras 4 instrucciones siguientes, se piden dos notas al usuario. Por lo tanto, hasta este momento lo que hicimos fue pedir al usuario los datos de Entrada (3 notas).
  • Ahora el algoritmo procede a calcular el promedio y almacenarlo en la variable. ¿Cómo se hace esto? En la asignación, primero se resuelve la expresión de la derecha, se sumarán las tres notas y se dividirán por 3.
    Observá el uso de los paréntesis para sumar primero las tres notas. Ese número real se asignará a la variable PROMEDIO, también definida como una variable de tipo REAL.

  • Luego se muestra por pantalla el resultado, es decir la leyenda “El promedio de las notas es” y al lado se mostrará el valor de la variable PROMEDIO.

  • Finaliza el algoritmo, ya que se llega a la instrucción FIN.

Manos a la obra con PSeInt

Luego de haber elaborado nuestro primer algoritmo, ¡es el momento de probarlo!

Para eso te proponemos PSeInt, un programa que trabaja con un lenguaje seudocódigo muy similar al que te estamos explicando, por lo tanto, te resultará muy simple su utilización. 

Además, esta herramienta tiene la posibilidad de “ejecutar” un algoritmo, poder ver los valores que van tomando las variables y hasta tiene una consola para poder ingresar y mostrar los datos.

Este software se distribuye bajo licencia GPL2, por lo tanto, podés descargarlo y usarlo de forma libre y gratuita.

Te presentaremos a continuación algunos ejemplos utilizando todo lo que vimos en esta Unidad.

Problema 1:


Realizar un algoritmo que permita calcular el volumen de un cilindro. Se ingresarán la altura del cuerpo y el radio de la base.

ALGORITMO

SEUDOCÓDIGO
VARIABLES
        ALTURA, RADIO, VOLUMEN: REAL
CONSTANTES
        PI = 3.14
INICIO
        Mostrar (“Ingrese la altura del cilindro”)
        Ingresar (ALTURA) Mostrar (“Ingrese el radio de la base del cilindro”)
        Ingresar (RADIO)

        VOLUMEN <- (pi="" *="" radio="" *="" radio="" *="">->
        Mostrar (“El volumen del cilindro es:”, VOLUMEN)
FIN

Observá que, como no se encuentra definida la operación potencia, para calcular RADIO al cuadrado debemos hacer RADIO*RADIO.

Problema 2:


A partir del peso inicial y final que registró una persona en un tratamiento para adelgazar, calcular e informar el porcentaje de variación de peso al finalizar el tratamiento.


ALGORITMO:

SEUDOCÓDIGO
VARIABLES
         PESONICIAL, PESOFINAL, Variación: REAL
INICIO
         Mostrar (“Ingrese el peso al iniciar el tratamiento”)
         Ingresar (PESOINICIAL)
         Mostrar (“Ingrese el peso al finalizar el tratamiento”)
         Ingresar (PESOFINAL)
         Variación <->->100+(PESOFINAL*100/PESOINICIAL) 
         Mostrar (“Al finalizar el tratamiento, el peso del paciente varíó en un ”, Variación,”%”)
FIN

Actividad

Análizá el siguiente problema y luego desarrollá el algoritmo.

Problema:


A partir del importe de una venta efectuada en un comercio y, teniendo en cuenta que se le debe aplicar el 21% del IVA,  informe cual sería el valor neto de la venta, cuál el correspondiente al impuesto y cuál el importe total a pagar.

A continuación, te presentamos nuestro algoritmo para que puedas comparar y realizar tus propias conclusiones.

Solución:


Análisis previo:


Objetivo:



A partir del valor neto de una venta, emitir el importe neto de la operación, el correspondiente al IVA y el total a abonar.

Datos de Entrada:



IMPORTE_NETO VARIABLE, Tipo de datos: REAL
IVA, Constante = 21

Precondiciones:



IMPORTE_NETO >0

Datos de Salida:


Importe neto, importe del IVA, importe total a pagar

Lote de datos:


ENTRADASALIDA
IMPORTE
NETO
IVA
%
IMPORTE
NETO
IMPORTE
IVA
IMPORTE
TOTAL
1002110021121
53021530111,30641,30
120,5021120,5025,30145,80

Algoritmo:
SEUDOCÓDIGO
Algoritmo Ventas
      Definir IMPORTE_NETO, IMPORTE_IVA, IMPORTE_TOTAL como Real
      IVA<>
      Escribir "Ingrese el importe neto"
      Leer IMPORTE_NETO
      IMPORTE_IVA<-importe_neto*iva>-importe_neto*iva>
      IMPORTE_TOTAL<>
      Escribir "El importe neto es:", IMPORTE_NETO
      Escribir "El importe del IVA es:", IMPORTE_IVA
      Escribir "El tota a pagar es:", IMPORTE_TOTALFinAlgoritmo

Ejecución:
        
        
        



Si pudiste resolver el ejercicio correctamente habrás logrado desarrollar tus primeros algoritmos. ¡Felicitaciones!

Entradas relacionadas: