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.
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.

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.

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)
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:

Datos de ENTRADA: Ingredientes
El PROCESO es el modo de elaboración, cómo hacerlo
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.
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:
Cargamos un número en la caja A, le damos valor a la variable.
Cargamos un número en el caja B, le damos valor a la variable.
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).
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.
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:

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.

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:

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).
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

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

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”
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.
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.

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

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.

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.


¿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:

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:

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

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.