Fundamentos de programación II

Codeando Pues - Season 0 Episode 2


Como lo prometí, en este nuevo episodio terminamos con los fundamentos de programación. Es un video mas extenso pero espero que les guste. La verdad es que fue muy difícil para mi grabarlo y editarlo, mis semanas están muy atareadas pero ya había prometido el video así que me puse la meta de terminarlo. Ahora entiendo el trabajo de las personas que están subiendo videos con mejores efectos y con una extensión mucho mayor a los de Codeando Pues. Así que si alguna vez deciden generar contenido en video, tengan en mente eso.

Por cierto, quiero agradecer a todas las personas que han dejado comentario y me han hecho críticas con respecto a los videos. He estado tomando todo ello y siento que estoy mejorando poco a poco :)

Operadores Lógicos.

Los operadores lógicos nos proporcionan un resultado a partir de que se cumpla o no una cierta condición, producen un resultado booleano y sus operandos son también valores lógicos. Los principales operadores lógicos son:

  • ANDY lógico—, representado generalmente por dos Ampersands. Su resultado es verdadero si ambas expresiones son verdaderas.
  • ORO lógico-, representado generalmente por dos líneas verticales. Su resultado es verdadero si alguna expresión es verdadera.
  • NOT —Negación lógica–, representado generalmente por el símbolo de admiración. Su resultado invierte la condición de la expresión.

Tablas de verdad

Flujo de datos

Para controlar el flujo de datos de un programa, utilizaremos condicionales. if se encarga de cambiar el flujo de nuestro programa a una dirección si la condición es verdadera. Opcionalmente, si tenemos otro camino por recorrer en caso de ser falso, utilizaremos else. Si contamos con múltiples caminos que recorrer, podemos evaluarlos usando else if. Cabe mencionar que podemos escribir comentarios en nuestro código, el cual no será evaluado. En algunos lenguajes es muy común utilizar dos diagonales o un símbolo de gato.

// En JavaScript, esto es un comentario
// y podremos escribir cualquier cosa

/*
 Mientras que en los comentarios anteriores
 debemos de agregar las dobles diagonales en
 cada salto de página. Con este tipo de 
 comentarios multi-línea no es necesario :)
*/

var example = true;

if(example){
    // Realizar pasos.
}
else {
    // si 'example' fuera false
    // entonces ejecutaríamos este 
    // bloque de código.
}

var number = 42;

if(number == "something"){
    // Ejecutar código.
}
else if(number == "else"){
    // Ejecutar código.
}
else {
    // Este código se ejecuta si
    // ninguna de las condiciones
    // anteriores ha sido evaluada a true.
}

Ciclos o Bucles

En computación es muy habitual ejecutar varias veces una acción, a esto se le conoce como ciclos y por lo general utilizaremos un contador que será incrementado o decrementado hasta cumplir una condición.

For

for (Inicialización; Condición; Incremento/Decremento)

for(var i=0; i<10; i++){
  // 'i' valdrá 0 por la inicialización
}
  1. La Inicialización puede servir para declarar variables e iniciar el, o los contadores.
  2. La condición es evaluada. Si el resultado es verdadero, ejecutamos el ciclo. De caso contrario, éste terminará.
  3. El siguiente paso es ejecutar las instrucciones del bloque agrupado por las llaves.
  4. Al término de las instrucciones, se ejecutará el Incremento/Decremento.
  5. Los pasos vuelven a repetirse desde el segundo punto.

En el ejemplo anterior, se ejecutará nuestro bloque de código 10 veces, siendo nuestro contador i con valores desde el 0 hasta el 9.

Cabe mencionar que las tres partes que conforman un ciclo for son opcionales. Podríamos dejarlos vacíos y esto nos crearía un ciclo infinito. El cual podremos romper con un break dentro de nuestras instrucciones.

for(;;){
    break; // si no tuvieramos un break, nuestro ciclo nunca acabaría.
}

while

Este ciclo ejecuta nuestras instrucciones siempre y cuando la condición sea evaluada a verdadero. El ciclo terminará una vez la condición sea falsa.

var i = 0;

while(i<10){
    // Incrementar una variable puede variar
    // entre lenguajes. Pero la mas común es:
    i++;
    // Otra forma de hacerlo es:
    // i += 1 
    // que es una forma corta de representar:
    // i = i + 1
}

Existe otra versión que utiliza la palabra reservada do

Otra definición muy común dentro de los ciclos aparte del incrementador, son los acumuladores, quienes suelen utilizarse para acumular resultados sin tener que ser fijos. Por ejemplo, un incrementador nos servirá para imprimir los valores del 1 al 5, mientras que un acumulador nos servirá para sumar los valores del 1 al 5.

var i = 1;
var acc = 0;

while(i <= 5){
    i++; // valores del 1 al 5
    acc = acc + i; // Al finalizar el ciclo obtendremos 15 en la variable acc
}

Functions

Una función es un conjunto de líneas de código que realizan una tarea específica y puede, o no, retornar un valor.

function a(){
    return 'soy una función';
}

function duh(){
    var text = 'soy un texto, pero nunca me utilizan :(';
}

Las funciones están compuestas por un identificador pero en algunos lenguajes como javascript, podemos definir funciones anónimas sin necesidad de un identificador —function (){}—.

Las functiones también cuentan con parámetros, que son valores externos a nuestra función para el uso interno de la misma.

function suma(a, b){
    // dentro del cuerpo de la función podremos
    // utilizar las variables a y/o b.
}

Llamar una función es sencillo, sólo basta con escribir su nombre y agregar un par de paréntesis, aquí es podemos utilizar argumentos, que son los valores que son enviados a los parámetros de nuestra función.

function suma(a, b){
    return a + b;
}

// Esto ejecutará el bloque dentro de la función suma.
var resultado = suma(40,2);

// Dentro nuestra función suma, los argumentos le darán
// el valor a nuestros parámetros 'a' y 'b' respectivamente.
// por lo que se traduce como 'return 40 + 2'.

resultado; // Esta variable tendrá un valor de 42

Existe un concepto llamado Caja Negra, el cual está ligado con las funciones. Se refiere a funciones que reciben entradas, realizan magia y nos devuelven un valor. Por ejemplo, si utilizamos una función llamada max y le mandamos dos valores, ésta nos devolverá el máximo de ambos valores.

max(3,4); // El resultado de esta función nos devolverá el número 4 por ser mayor que 3

Cada lenguaje tiene ciertas funciones creadas que puedes utilizar y no tener que reinventar la rueda. Así que te recomiendo que leas un poco mas de las utilerías que el lenguaje puede ofrecerte en su documentación.

Y así terminamos…

Sinceramente no tenía pensado en realizar este par de videos, y es por eso que decidí hacerlos de una manera distinta. Bien pude haber creado diapositivas e ir exponiendo todo de una manera mas sencilla para mi… pero eso sería tedioso y aburrido. ¿Por que decidí al final realizar estos videos? Bueno, en los siguientes episodios ya tocaremos código y descubriremos diferentes tipos de lenguajes de programación. No me gustaría estar explicando ¿qué es una función? ¿qué es una variable? ¿qué es un ciclo? en cada uno de los videos, así que opté por poder indicar este par de videos/posts a todos los que tengan duda.

Nos leemos