Algoritmos 1: Estructuras Secuenciales

En este articulo empezamos con la base de la programación: los algoritmos, la lógica de la programación. Intentaré explicarlo de una forma fácil y simple para que se entienda de manera clara, con ejemplos prácticos del día a día. Aquí partiremos de las estructuras secuenciales, las más simples.

¿Qué son los algoritmos?

Programar consiste en resolver problemas. Así que, de alguna forma debemos encontrar y escribir la solución de estos problemas.

Un algoritmo es un método para resolver un problema..

Escribir un algoritmo es equivalente a escribir la solución del problema.

Al programar es importante conocer esta metodología ya que el algoritmo se va transformar en nuestro programa de computadora.

estructuras secuenciales

Yendo a lo concreto, vamos a definir al algoritmo como un conjunto de pasos o instrucciones que se siguen para lograr un objetivo.

Estas instrucciones pueden ser secuenciales o no secuenciales.

estructuras secuenciales

Características

  • Estos pasos los tenemos que hacer en orden

  • No podemos dejar algo ambiguo ni al azar

  • Si lo ejecutamos dos veces tenemos que obtener el mismo resultado

  • Tiene que terminar

  • Puede tener elementos de entrada

  • Genera un resultado, cumple un objetivo

Todas estas características se suelen resumir de la siguiente manera, un algoritmo debe ser:

  • Preciso (indica el orden de realización en cada paso)

  • Definido (si se sigue dos veces, obtiene el mismo resultado cada vez)

  • Finito (tiene fin, un número determinado de pasos)

¿Cuándo usamos o creamos algoritmos?

Si lo vemos fuera del ámbito computacional, usamos algoritmos más de lo que creemos, por ejemplo:

  • Al explicar cómo llegar a un lugar: “para llegar doblá a la izquierda, seguí derecho una cuadra, doblá a la derecha, y seguí 3 cuadras para adelante”

  • Al crear o usar una receta de cocina. Acá tenemos una receta para crear bolitas de coco:

estructuras secuenciales
  1. Datos de ENTRADA: Ingredientes

  2. El PROCESO es el modo de elaboración, cómo hacerlo

  3. Datos de SALIDA o RESULTADOS: Bolitas de coco

Notemos que estos tres puntos están en todo proceso computacional, entrada, proceso, salida, incluso en los algoritmos.

Si sacamos un paso, si no lo hacemos en orden, no vamos a lograr el resultado deseado, por lo tanto, el algoritmo va a responder mal. Si escribimos bien el algoritmo, el programa va a lograr su objetivo.

La computadora siempre ejecuta de la misma manera (en principio), por lo que si hay un problema, tenemos que revisar nuestro algoritmo.

Esto es lo mas importante, poder pensar de forma algorítmica la solución de un problema, paso a paso, línea a línea. Cada uno lo piensa o lo escribe con sus palabras, y a la hora de programar lo traduce al lenguaje que usa (java, php, python), pero lo importante es poder pensarlo.

Al lenguaje que usamos para armar el algoritmo se lo llama pseudocódigo, no es un código definido por un estándar, es un código que cada uno tiene y puede entender, y lo ideal es que si lo ve otra persona, también pueda entenderlo.

Ejemplo

Vamos a aplicar algoritmos a un ejemplo más abstracto, más orientado a lo que hacemos al programar.

Creemos un algoritmo para sumar dos números, por ejemplo: 4 + 8 = 12

Lo vamos a pensar paso a paso, para esto considero algunos casos:

4+5 = 9; 3+2=5; 8+1=9

Son dos números que se suman y retornan un tercero.

Un algoritmo debe ser genérico, funcionar para todos los casos, así que para hacerlo genérico vamos a usar una cajitas.

Dentro de cada caja guardamos un numero, que no sabemos cuál va a ser, ni tampoco es importante. Para identificarlas, las vamos a llamar Caja A, Caja B y Caja C.

  • La caja A representa el primer número.

  • La caja B representa el segundo número.

  • La caja C representa el resultado de la suma.

Estas cajitas son VARIABLES, almacenan un valor que puede cambiar. A y B son datos de entrada, y C de salida, resultado.

También vamos a necesitar dos elementos, que nos van a ayudar a hacer la suma, el más (+) y el igual (=). Estos elementos son OPERADORES, permiten realizar operaciones sobre las variables.

El algoritmo o proceso completo podría ser:

  1. Cargamos un número en la caja A, le damos valor a la variable.

  2. Cargamos un número en el caja B, le damos valor a la variable.

  3. Con el operador igual guardamos el resultado en la caja C de la operación “C = A + B”, usando el más (Notemos que no está escrito como A + B = C, sino como C = A + B, porque el igual, asignación, va de derecha a izquierda).

  4. Sacamos de la caja C el numero guardado para ver su valor, vemos el valor de la variable.

Cada uno de estos pasos representa una instrucción, un paso del algoritmo.

Este es el proceso que debemos hacer para la suma, ya lo pensamos, ahora lo tenemos que escribir.

Lo primero, vimos que teníamos 3 cajitas, asi que vamos a declarar estas 3 cajas, variables, indicamos al algoritmo que existen y que las puede usar.

VARIABLES

A, B, C

Ahora empieza el proceso, abrimos un bloque indicando que vamos a escribir.

INICIO

Debemos cargar el valor en la variable A, el primer número, ¿Sabemos cuál es, cuánto vale?

NO, no sabemos cuál es, así que el primer paso es obtenerlo. Debemos pedirle al usuario que está frente a la pantalla que ingrese el primer número, a esto lo vamos a llamar LEER (LEO) A (le damos valor a la variable A con lo que ingresa el usuario)

1º PASO ) LEO A

¿Sabemos cuál es el segundo número? No, tampoco, entonces tenemos que obtenerlo, igual que en A pedimos al usuario que lo ingrese, en este caso B

2º PASO ) LEO B

Tengo que sumar los dos números y guardarlos en algún lado, para esto usamos los operadores suma, asignación, y guardamos en la variable C lo que da la suma

3º PASO) C = A + B

Finalmente hacemos que el resultado se vea en pantalla, llamamos a esto IMPRIMIR, y la variable que queremos mostrar

4º PASO) IMPRIMO C

Y finalmente indicamos que llegamos al final del bloque

FIN

Así quedaría escrito de forma más prolija:

estructuras secuenciales

Variables

Como vimos, esas cajitas que se usan para guardar datos se llaman VARIABLES, y las usamos para mantener los datos que vamos a usar

Se llama VARIABLE porque el valor no es fijo. Siempre va a tener el último valor que se le haya cargado.

A una variable la podemos ver de dos formas, acá la vimos como una caja, ese es el punto de vista algorítmico.

Desde un punto de vista computacional, la variable corresponde a una posición de memoria en la cual se almacena el valor.

estructuras secuenciales

Así como tenemos variables también tenemos constantes cajitas cuyo valor no puede cambiar durante toda la ejecución

Usamos la palabra constante para declararlas y cuando las declaramos decimos cuál va a ser su valor por ejemplo:

estructuras secuenciales

La constante D va a tener siempre el valor 10 pero como si fuera una variable

La ventaja de las constantes es que son mucho menos costosas que las variables y además resulta más legible el algoritmo (cuando hablo del costo me refiero a tiempo, cuánto menos tarde mejor).

TIPOS DE VARIABLES

Las variables y las constantes también tienen tipos (lenguajes tipados) para el valor que pueden almacenar. No todos los lenguajes son tipados, pero considero que es mejor aprenderlo de esta manera:

  • entero: la variable solo puede almacenar números enteros

  • decimal: números decimales o con coma

  • carácter: para una letra o un número de un dígito

  • palabra, string: para una palabra un conjunto de caracteres, se suelen asignar entre comillas

  • booleano: tiene un valor de verdad: es verdadero o falso

estructuras secuenciales

Lo que se suele hacer es definir la variable y la constante con el tipo que tiene, así es más claro el algoritmo.

estructuras secuenciales
Nombres representativos (variables y constantes)

Una buena práctica es poner a las variables nombres que tengan relación con lo que representan.

En el ejemplo anterior, variable “c” (que contenía el resultado de la suma de A y B), no dice mucho. En cambio, si a la variable se le hubiera puesto el nombre “resultado”, al leer el código se entiende que está guardando el resultado de una operación.

Lo mismo para las constantes, por ejemplo, puedo definir la constante:

palabra COLOR_DEL_CIELO = “celeste”

Instrucciones

Tenemos varios tipos de instrucciones:

  • de inicio/fin,

  • de asignación,

  • de lectura → cargo la variable

  • de escritura → imprimo mensaje/variable

  • de control → vamos a ver mas adelante

Cada instrucción representa una o más acciones en nuestro algoritmo.

Operadores

Un operador es un carácter o grupo de caracteres que actúa sobre una, dos o más variables y/o constantes para realizar una determinada operación con un determinado resultado. Existen operadores de distintos tipos:

  • Operadores Aritméticos: Permiten realizar operaciones aritméticas.

estructuras secuenciales
  • Operador de Asignación: Se usa para dar valor a una variable.

estructuras secuenciales
  • Operadores Relacionales: Se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es verdadera, en caso contrario es falsa. Se habla de valor de verdad de la operación.

estructuras secuenciales
  • Operadores Lógicos. Se usan para trabajar con varias expresiones, no variables. Tenemos el AND (Y) y el OR (O), que en base a los valores de las dos expresiones que une, tiene un valor. Hay tablas de valores para cada uno de ellos. Acá los nombro pero los vamos a ver en detalle más adelante.

estructuras secuenciales

¡Vamos a hacer un ejercicio!

estructuras secuenciales

¿Qué variables vamos a tener?

  • las notas (3 notas, 3 variables)

  • y el resultado, el promedio todas

Importante: las notas suponemos que son de tipo decimal.

¿Qué vamos a hacer?

  • Cargamos todas las notas en las variables, mediante la instrucción leer

  • Hacemos la operación matemática (sumo las 3 variables y las divido por 3) y la guardamos, la asignamos a la variable promedio

  • Finalmente vamos a mostrar o imprimir la variable promedio

Así es como va a quedar nuestro algoritmo:

estructuras secuenciales

Lo podemos hacer más completo al mostrar un mensaje al usuario pidiéndole que ingrese los valores:

Así es como va a quedar nuestro algoritmo:

estructuras secuenciales

También podríamos usar una variable intermedia para guardar la suma.

estructuras secuenciales

Este es el comienzo, vimos algoritmos con estructura secuencial.


Pero antes, como la única manera de aprender es practicando, aca te dejo unos ejercicios para que practiques y puedas poner en práctica lo que viste:


  VARIABLES
    ENTERO cantidadGanados
    ENTERO cantidadEmpatados
    ENTERO cantidadPerdidos
    ENTERO puntosTotales
  
  
  INICIO
    IMPRIMIR 'Ingrese la cantidad de partidos ganados'
    LEER cantidadGanados
    IMPRIMIR 'Ingrese la cantidad de partidos empatados'
    LEER cantidadEmpatados
    IMPRIMIR 'Ingrese la cantidad de partidos perdidos'
    LEER cantidadPerdidos
    puntosTotales = (cantidadGanados) * 3 + (cantidadEmpatados) * 1 + (cantidadPerdidos) * 0 
    IMPRIMIR 'El equipo obtuvo: ' + puntosTotales + ' puntos'
  FIN

        

  VARIABLES
    DECIMAL millasMarinas
    DECIMAL metros
  CONSTANTES
    ENTERO MILLA_EN_METROS = 1852
  INICIO
    IMPRIMIR 'Ingrese la distancia en Millas Marinas'
    LEER millasMarinas
    metros = millasMarinas * MILLA_EN_METROS
    IMPRIMIR 'La distancia en metros es: ' + metros
  FIN
        

  VARIABLES
    DECIMAL precioOriginal
    DECIMAL precioPagado
    DECIMAL porcentajeDescuento
  INICIO
    IMPRIMIR 'Ingrese el precio original del producto'
    LEER precioOriginal
    IMPRIMIR 'Ingrese el precio pagado por el producto'
    LEER precioPagado
    porcentajeDescuento = ((precioOriginal - precioPagado) / precioOriginal) * 100
    IMPRIMIR 'El porcentaje de descuento aplicado es: ' + porcentajeDescuento + '%'
  FIN
        

  VARIABLES
    DECIMAL tarifaPorHora
    ENTERO horasTrabajadas
    DECIMAL sueldoTotal
  INICIO
    IMPRIMIR 'Ingrese la tarifa por hora del empleado'
    LEER tarifaPorHora
    IMPRIMIR 'Ingrese la cantidad de horas trabajadas'
    LEER horasTrabajadas
    sueldoTotal = tarifaPorHora * horasTrabajadas
    IMPRIMIR 'El sueldo total del empleado es: ' + sueldoTotal
  FIN
        

En el siguiente articulo vamos a ver estructuras selectivas o condicionales que nos van a permitir alterar la secuencia, pudiendo ir por uno u otros caminos.

Recursos utilizados