¿Qué es un lenguaje de programación?
Un lenguaje de programación es un conjunto de instrucciones y reglas, que le permiten a los programadores, interactuar con las computadoras (hardware) “diciéndoles qué hacer”. Al conjunto de órdenes que se les da a la computadora, se le conoce como “algoritmo” o “programa”. Sin un programa o programas (software), las computadoras por sí mismas no podrían hacer nada.
¿Qué lenguajes existen?
Existen una gran variedad de lenguajes de programación, pensados para fines específicos. Por ejemplo JavaScript es un lenguaje que surgió para ser trabajado en páginas web (aunque en los últimos tiempos se utiliza en el lado del servidor mediante NodeJS). Otra cosa que debes saber es que los lenguajes se clasifican según su nivel de abstracción (mayor nivel de abstracción significa que es más cercano al lenguaje humano), por ejemplo, lenguaje ensamblador y el código de máquina (lenguajes que entiende directamente el hardware de la PC), se los conoce como lenguajes de Bajo Nivel. Luego en un nivel intermedio nos encontramos el lenguaje C, ampliamente utilizado en la programación de sistemas operativos, drivers, microcontroladores, entre otras aplicaciones; se le suele clasificar como un lenguaje de nivel intermedio, ya que permite controlar ciertas funcionalidades a bajo nivel, al igual que con lenguaje ensamblador. Los lenguajes que normalmente acostumbramos trabajar, son de alto nivel, en este grupo puedes encontrarte con JavaScript, Java, C#, VisualBasic, Ruby, Python, Perl, Swift, PHP, etc. En conclusión, muy rara vez trabajarás con un lenguaje de bajo nivel o nivel intermedio, pero es importante que conozcas que existen, además debes saber que las computadoras, al ser un dispositivo electrónico, todo se reduce a 1 y 0 (código binario) en su funcionamiento.
¿Qué es una instrucción (línea) de código?
Una línea de código es lo que escribimos para ejecutar una acción en la computadora. Las líneas de código conforman en su conjunto el código fuente de algún programa. Ejemplo: console.log(“hola mundo”); // => Esta línea le dirá a la computadora que ponga en pantalla hola mundo
¿Qué es una variable?
Una variable, como su nombre lo indica, es algo que varía, técnicamente es un espacio de memoria reservado en la computadora para guardar allí datos que necesitemos. Hablando de una forma más sencilla, es como una “caja”, donde almacenaremos datos de manera temporal, a los cuales accederemos en diferentes partes del programa. Algunos ejemplos de datos a almacenar son palabras, números, objetos (que luego veremos qué son esos objetos), funciones y más. Para declarar una variable en JS utilizaremos la palabra let y el nombre de la variable, por ejemplo: let ejemploVariable; => Esta variable aún no tiene un valor asignado ejemploVariable = “Hola mundo”; => Aquí se ha asigna Hola mundo, a esto se le conoce como inicializar una variable Podemos inicializar las variables directamente en el momento de su declaración: let otraVariable = 1234; => Aquí se ha asignado el valor numérico 1234
Existen dos tipos de variables según si se pueden acceder en todo el programa, o en un bloque de código específico: globales o locales. Variable global: nos permitirá acceder a ella en cualquier parte del programa. Variable local: solo podrá ser utilizada en un entorno especifico.
Ejemplo:
let variableGlobal = “hola”;
function funcionEjemplo() { // => Declaración de una función
let variableLocal = “ mundo”;
console.log(variableGlobal); // => Mostrará hola
console.log(variableLocal); // => Mostrará mundo
}
console.log(variableGlobal); // => Mostrará hola
console.log(variableLocal); // => Mostrará undefined ya que esa variable solo está declarada en el ámbito de la función functionEjemplo
¿Qué es una constante?
Una constante, al igual que las variables, son un espacio de memoria en la computadora que se utiliza para almacenar algo allí, pero a diferencia de ellas, las constantes no cambian nunca, se mantienen inmutables durante la ejecución del programa o sub-programa (procedimiento). Ejemplo de cómo declarar una constante: const constante = “nunca cambia”; // => Si tratamos de reasignar un valor a constante, el programa dará un error y terminará la ejecución
Operadores (lógicos, aritméticos y relacionales)
Los operadores nos permitirán realizar operaciones y comparaciones a valores de los programas que desarrollemos, al igual que hacemos con la matemática y la lógica.
Lógicos:
Nos permiten operar con valores de verdad (true) o de falsedad (false). Los más comunes son la conjunción o AND (&&), disyunción u OR (||) y la negación o NOT (!).
Aritméticos:
Los que se utilizarán normalmente serán suma (+), resta (-), negación aritmética (-), multiplicación (*), división (/), módulo (%). Para operaciones más complejas, en JavaScript se utilizará el objecto Math, por ejemplo Math.sqrt(25) calculará la raíz cuadrada de 25 (5).
Relacionales:
Son operadores que nos van a permitir comparar valores, si el valor de una variable es mayor que otra, por ejemplo: variable > otraVariable Los que se utilizarán normalmente en JavaScript son la igualdad (===), mayor que (>), menor que (<), diferente de (!==), menor o igual (<=) y mayor o igual (>=).
¿Qué es una función? ¿Y un procedimiento?
Una función y/o un procedimiento, son bloques de códigos que pueden ser “llamados” en cualquier parte del programa. Una función no es lo mismo que un procedimiento (aunque en JavaScript se declaran de la misma manera), se diferencian en que el primero devuelve un valor, mientras que el último solo se ejecuta sin devolver nada. Veamos en código cómo declarar funciones y procedimientos.
Ejemplo de función:
function saludo(){
return “hola”; // => Retorna el valor “hola”
}
Ejemplo de procedimiento:
function saludar(){
console.log(“hola”); // => No retorna un valor, solo imprimirá en consola hola
}
Para utilizar las funciones y los procedimientos debemos escribir su nombre y a continuación paréntesis.
Ejemplo de utilización de una función:
let unaVariable = saludo(); // => unaVariable toma el valor devuelto por saludo
Ejemplo de utilización de un procedimiento;
saludar(); // => Ejecutará el código sin devolver un valor
Algo a tener en cuenta en JavaScript, es que las funciones (y/o procedimientos) también pueden ser asignados a variables o constantes, además en estos casos se suele utilizar otra sintaxis para declarar dichas funciones, utilizando lo que se llama la función flecha (arrow functions), que son el estándar para declarar funciones desde hace algunos años. Ahora sabiendo esto, veamos cómo quedan las declaraciones que hicimos anteriormente.
Otras formas de hacer la función saludo utilizando la sintaxis de arrow functions:
const saludo = () => “hola”; // => Retorna directamente hola (no es necesario usar return)
ó
const saludo = () => { // => Se encierra el bloque de código con {}
return “hola”; // => Retorna hola en el return
};
Para el procedimiento saludar:
const saludar = () => {
console.log(“hola”);
};
¿Cuáles son los parámetros de las funciones y/o procedimientos?
Los parámetros son valores que les podemos “pasar” a las funciones (o a los procedimientos), para que hagan operaciones con ellos. Para que las funciones tengan parámetros, estos se declaran en los paréntesis, y luego para “pasarlos”, al momento de llamar la función, se ponen los valores en los paréntesis.
Algunos ejemplos de funciones y sus usos:
const suma = (valor1, valor2) => valor1 + valor2;
console.log(suma(1,1)); // =>Imprimirá 2 en pantalla
const saludo = (nombre) => {
return “hola “ + nombre;
};
console.log(saludo(“kiki”)); // => Imprimirá hola kiki en pantalla
const cuadrado = (numero) => numero * numero;
console.log(cuadrado(5)); // => Imprimirá 25 que es el cuadrado de 5
Un ejemplo de procedimiento:
const saludar = (nombre) => {
console.log(“hola “ + nombre);
};
saludar(“kiki”); // => Imprimirá hola kiki
Estructuras de control
Las estructuras de control, nos permitirán controlar el flujo de ejecución de las líneas de código en el programa, dicho en otras palabras, podremos condicionar si un determinado código se ejecuta, o no, también la cantidad de veces que debe ejecutarse, entre otras cosas. Las estructuras de control de JavaScript que veremos aquí son: IF, WHILE, DO … WHILE, FOR y SWITCH.
IF, IF ... ELSE, IF ... ELSE IF ... ELSE
En cuanto al IF, mediante una condición, indica si un bloque de código debe ejecutarse o no.
Veamos un ejemplo en código:
let nombre = “PEPE”;
if(nombre === “KIKI”){
console.log(“Eres el profe”);
}
En el código anterior nunca se imprimirá en pantalla “Eres el profe”, porque PEPE no es igual a KIKI. En caso de que queramos que se ejecute código, cuando nuestra condición es falsa, debemos agregar una estructura asociada a un ELSE (sería un equivalente a decir “sino”).
Ejemplo:
if(nombre === “KIKI”){
console.log(“Eres el profe”);
} else {
console.log(“Eres alumno”);
}
Y si queremos que cuando nombre es PEPE nos diga “Eres un auxiliar administrativo”, debemos usar un ELSE IF (sino si).
Ejemplo:
if(nombre === “KIKI”){
console.log(“Eres el profe”);
} else if(nombre === “PEPE”){
console.log(“Eres un auxiliar administrativo”);
} else {
console.log(“Eres alumno”);
}
Si quisiéramos tener más opciones como en el caso de PEPE, podríamos agregar tantos ELSE IF que sean necesarios. Esta solución es válida, pero sería bastante engorroso escribir todas esas líneas por cada opción, para ello utilizaremos otra estructura de control.
SWITCH
Es la estructura de control que nos permitirá resolver el problema de generar muchos ELSE IF en nuestro código, evitando escribir la misma condición una y otra vez.
Veamos un ejemplo de cómo funciona:
let nombre = “PEPE”;
switch(nombre) {
case “KIKI”:
console.log(“Eres el profe”);
break; // => Indica el final del código CASE
case “PEPE”:
console.log(“Eres un auxiliar administrativo”); // => Ejecutará esta línea, ya que nombre = PEPE
break;
case “JUAN”: // => Se evita escribir innecesariamente la condición una y otra vez
console.log(“Alumno aplicado”);
break;
default: // => Cumple la función del ELSE en una estructura de if
console.log(“Eres alumno”);
break;
}
WHILE
Esta estructura nos permitirá ejecutar un determinado código, repetitivamente mientras una condición sea verdadera. A esta ejecución reiterativa se le llama bucle.
Veamos un ejemplo en código:
let suma = 0;
while(suma < 10){ // => Mientras suma sea menor a 10, el bucle se ejecutará
console.log(suma); // Imprimirá 0 1 2 3 4 5 6 7 8 9 en pantalla (una vez por cada iteración)
suma = suma + 1; // => Se incrementa en 1 el valor en cada iteración
}
El código anterior se ejecutará tantas veces, mientras suma sea menor a 10 (se ejecuta 10 veces en total). ¿Qué pasa si la variable suma hubiese sido inicializada en 10? La respuesta es que nunca habría entrado al bucle.
DO … WHILE
Este bucle trabaja de forma similar a WHILE, pero con la diferencia en que al menos el código del bucle se ejecutará una vez.
Ejemplo:
let variable = “PROGRAMANDO”;
do{
console.log(variable);
}while(variable !== “PROGRAMANDO”) // => la condición no se cumple, pero el código se llega a ejecutar una vez
FOR
Esta estructura de control nos permite controlar el número de veces que un código se repite (bucle), a diferencia de while, tenemos el control del bucle directamente en la creación del mismo.
A continuación se muestra un código de ejemplo que enseñando su funcionamiento:
for( let i = 0; i < 10; i++){
console.log(i); // => Imprimirá en pantalla 0 1 2 3 4 5 6 7 8 9 (las veces que el bucle se ejecuta)
}
Vamos a ver un poco más en profundidad las secciones del bucle for, ya que no cuenta sólo con una condición, sino que posee tres secciones separadas por punto y coma (;), que son una expresión inicial, una condición y una expresión de incremento.
for([expresión Inicial]; [condición]; [expresiónIncremento]) {
....//=>Código
}
La expresión inicial es utilizada para inicializar el contador del bucle (tal como se hizo en el ejemplo).
La condición indica si el bucle debe seguir ejecutándose o ya ha llegado a su final (como pasa con el bucle while).
La expresión de incremento nos permitirá controlar la cantidad de unidades que debe incrementarse el contador, en el ejemplo se incrementaba una por vez.
Expresiones equivalentes a i++:
i = i + 1
i += 1
¿Si en lugar de incrementar de a uno incrementamos de a 2 unidades? Las expresiones deberían ser como las siguientes:
i = i + 2
i += 2
Arreglos o vectores (arrays)
La forma más sencilla de definir un array es decir que es una colección de variables indexadas, esto significa que se tiene un índice que nos permite acceder a cada uno de estos elementos, comenzando desde el 0 en adelante.
Veamos un ejemplo de cómo funciona:
let nombres = [“Pepe”, “Eli”, “Roberto”, “Kiki”];
console.log(nombres[0]); // => Imprime Pepe
console.log(nombres[1]); // => Imprime Eli
console.log(nombres[2]); // => Imprime Roberto
console.log(nombres[3]); // => Imprime Kiki
console.log(nombre[4]); // => Imprime undefined ya que no hay nada definido en esa posición
De la forma anterior accedimos a todos los elementos almacenados en el array nombres, ¿pero qué deberíamos hacer si no conocemos la cantidad exacta de elementos, o al menos queremos optimizar poco el código? Para ello tenemos un procedimiento que nos proporciona el propio array, que nos permite recorrer todos sus elementos sin necesidad de conocerlos todos. El método en cuestión se llama forEach.
Por ejemplo:
let nombres = [“Pepe”, “Eli”, “Roberto”, “Kiki”];
nombres.forEach( (elemento) => {
console.log(elemento);
} ); // => Imprimirá todos los nombres contenidos en el array de nombres
Como se aprecia en el ejemplo anterior, se debe “pasar” como parámetro, a la función forEach, otra función que le diga qué hacer con cada elemento del array (en el ejemplo imprime uno por uno en pantalla).
Objetos
Los objetos en un lenguaje de programación almacenan datos y comportamientos, por ejemplo, si estamos creando un software que trabaje con recursos humanos de una empresa, vamos a tener un objeto “Persona”, en el cual almacenaremos nombre, apellido, fecha de nacimiento, cargo, y algún otro dato relevante. Además este objeto “Persona” contaría con funciones y/o procedimientos que detallen comportamientos del mismo. En JavaScript, los datos de un objeto se almacenan en una lista clave-valor, conocida como JSON.
Ejemplo de objeto en JavaScript:
const pepe = { nombre: “Pepe”,
apellido: “Gomez”,
fec_nac: “13/06/1980”,
caminar: () => { console.log(“Caminar”); } // => Ejemplo de función almacenada en objeto
};
console.log(pepe.nombre); // => Muestra en pantalla “Pepe”
pepe.caminar(); // => Invoca el método “caminar” que imprime en pantalla “Caminar”
Nota: En JavaScript se accede a los registros de un objeto mediante el nombre del objeto (en este caso pepe) y luego un punto, seguido del nombre del registro (clave), como por ejemplo pepe.nombre.