MSI101, Tarea 2

Resumen

Variables1

Una variable es una posición en la memoria de la computadora en la que se pueden almacenar valores conocidos o desconocidos y que pueden cambiar durante la ejecución de un programa. Dependiendo del tipo de lenguaje los valores que pueden almacenar las variables pueden ser de diversos tipos (números, valores booleanos, cadenas de texto, referencias a otras variables, funciones, etc.) o de un solo tipo definido al momento de definir dicha variable.

Constantes

Una constante, como su nombre lo indica, es un valor predefinido y que no puede ser modificado durante la ejecución del programa. Las constantes son de gran utilidad, generalmente empleadas con los límites de determinados tipos de dato (número más grande o más chico que se puede usar) o constantes matemáticas (Pi), y también son especialmente útiles al definir valores que se utilizan en grandes bases de código, o para configurar determinados comportamientos de un programa al compilarlo.

Operadores2

Los operadores son los que nos permiten realizar diferentes tipos de operaciones con los valores (variables, constantes) de nuestro programa. Sin los operadores un programa seria de muy poco uso. Existen diferentes tipos de operadores y la forma de usarlos es generalmente constante entre diferentes lenguajes de programación. Algunos tipos de operadores que existen son: aritméticos (+, -, *, /), de comparación (>, <, ==, >=, <=), lógicos (AND o &&, OR o ||), binarios ( &, |, <<, >>), de asignación (=, +=, -=, *=, etc.)

Los operadores ademas de su tipo también pueden ser clasificados por la cantidad de parámetros que necesitan para ser utilizados. Los operadores unitarios (unary) solo requieren un parámetro y pueden colocarse antes o después del mismo (-x, y++). Los operadores binarios, requieren dos elementos, son los más comúnmente utilizados (a + b, x = y), y finalmente el operador ternario (?:), solo disponible en algunos lenguajes, que requiere de tres elementos (a ? b : c).

Condicionales3

Un condicional es una estructura de los lenguajes de programación que nos permite realizar (o no) determinadas acciones dependiendo de alguna condición, como puede ser el valor en una variable (o la falta del mismo), el resultado de la ejecución de una función, etc.

La forma más común de condicional es if la cual es seguida de una expresión cuyo resultado debe evaluarse como verdadero o falso. En muchos casos la ejecución de un if puede ser seguida de else la cual permite ejecutar instrucciones en caso que el resultado de la expresión haya sido falso. Es posible usar otro if dentro de un else para crear condiciones más elaboradas, pero la mayoría de los lenguajes proporcionan una estructura adicional, else if, la cual permite crear una bifurcación de varias ramas (if, else if, else if, ..., else).

Ciclos4

Un ciclo o bucle permite la ejecución repetida de un bloque de código mientras se cumplan (o no) determinadas condiciones. Los bucles más comunes en los lenguajes de programación son for y while; dependiendo del lenguaje de programación pueden existir otros ciclos relativamente comunes como do while y foreach, pero estos son generalmente atajos de sintaxis de los ciclos básicos.

La diferencia principal entre for y while es que el primero se usa generalmente cuando se conoce el numero de veces que se debe ejecutar el bloque de código; en el caso del segundo es más comúnmente usado cuando no conocemos el numero de veces que se debe repetir el bloque, pero conocemos la condición que nos va a decir cuando parar.

Funciones5

Una función es un grupo de instrucciones agrupadas de tal forma que permiten ser reutilizadas multiples veces dentro del mismo programa. La funciones pueden servir para generalizar ciertos bloques de código al permitir pasarles diferentes valores. Una función puede ser tan corta o tan larga como sea necesario pero generalmente se considera una buena practica el hacer funciones pequeñas y que realicen una sola tarea. Una función puede usarse para simplificar otros bloques de código y puede o no regresar el resultado de su ejecución.

Algoritmo

Solicitar primer numero
Si el valor recibido no es un numero, solicitar nuevamente
Solicitar segundo numero
Si el valor recibido no es un numero, solicitar nuevamente
Imprimir resultado de sumar los numeros recibidos

Pseudocódigo

REPETIR
    LEE n1
MIENTRAS n1 no sea numero
REPETIR
    LEE n2
MIENTRAS n2 no sea numero
IMPRIME n1 + n2

Diagrama

Programa

const readline = require("readline");
const numbers = 2;

function reader(prompt) {
  return new Promise((resolve, reject) => {
    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    });

    rl.question(`${prompt}: `, input => {
      rl.close();
      const value = Number(input);
      input.trim() && Number.isFinite(value) ? resolve(value) : reject();
    });
  });
}

async function main() {
  const values = [];

  for (let i = 0; i < numbers; i++) {
    do {
      try {
        values[i] = await reader(`Give me a number [${i + 1}]`);
      } catch (error) {
        console.log("Invalid input, please try again");
      }
    } while (values[i] === undefined);
  }

  console.log(
    `The result is: ${values.reduce((result, current) => result + current, 0)}`
  );
}

main();

  1. https://en.wikipedia.org/wiki/Variable_(computer_science) 
  2. https://en.wikipedia.org/wiki/Operator_(computer_programming) 
  3. https://en.wikipedia.org/wiki/Conditional_(computer_programming) 
  4. https://en.wikipedia.org/wiki/Control_flow#Loops 
  5. https://en.wikipedia.org/wiki/Subroutine