Ir al contenido
wannacode

Tu primer programa

En resumen: Un programa es una serie de órdenes que se ejecutan de arriba abajo: en JavaScript console.log imprime texto, // empieza un comentario y el archivo se ejecuta con node.

Problema

La computadora hace exactamente lo que dice

La computadora no adivina lo que quieres. Ejecuta órdenes, una tras otra, exactamente como están escritas. Una secuencia de órdenes así es un programa.

Aquí tienes un programa entero. Imprime dos líneas en la pantalla:

hello.js
console.log("¡Bienvenido!");
console.log("Este es tu primer programa.");
Salida
¡Bienvenido!
Este es tu primer programa.

Este es el programa entero: dos líneas, una orden por línea. No hay ningún envoltorio alrededor. Las guardas en un archivo llamado hello.js y lo ejecutas.

La idea

Qué hay en el programa

  • El programa es el propio archivo. Lo ejecuta Node.js: el programa que ejecuta JavaScript fuera del navegador. Recorre las líneas de arriba abajo, de la primera a la última.
  • console.log(...) imprime el texto que está entre los paréntesis y pasa a una línea nueva.
  • El texto va entre comillas dobles: "¡Bienvenido!". Las comillas no se imprimen.
  • Cada orden termina en ;. JavaScript a menudo se las arregla sin él, pero nosotros lo escribimos siempre: así se ve dónde termina una orden.

El programa se ejecuta desde el terminal, en la carpeta del archivo:

Terminal
node hello.js

Node.js lee el archivo y ejecuta las órdenes que contiene. No hay un paso aparte en el que el código se traduzca antes: escribes y ejecutas.

Más precisamente, para curiosos
  • Las mayúsculas y las minúsculas importan. Console.log no es lo mismo que console.log, y el programa se detiene con un error cuando llega a esa línea.
  • El texto también puede ir entre comillas simples: console.log('¡Bienvenido!'); imprime lo mismo. En este curso escribimos comillas dobles.
  • JavaScript también funciona en el navegador. Allí console.log imprime en la consola de las herramientas para desarrolladores (F12). En este curso ejecutamos los programas con Node.js.

La idea

Imprimir con y sin salto de línea

A veces quieres varios trozos de texto en una misma línea. console.log siempre pasa a una línea nueva, así que para eso hay otra orden: process.stdout.write. Imprime el texto y se queda en la misma línea.

process.stdout.write("Pedido ");
process.stdout.write("n.º 1024");
console.log(" está confirmado.");
console.log("Envío: mañana");
Salida
Pedido n.º 1024 está confirmado.
Envío: mañana

Las dos primeras líneas del código usan process.stdout.write, por eso «Pedido», «n.º 1024» y «está confirmado.» salen juntos. Después de console.log el texto siguiente empieza en una línea nueva.

Fíjate en los espacios. Están dentro de las comillas, porque la computadora no pone un espacio por su cuenta.

Sigue el cursor: el texto sale siempre donde está él.

process.stdout.write("Pedido ");
process.stdout.write("n.º 1024");
console.log(" está confirmado.");
console.log("Envío: mañana");
Paso a paso, en palabras
  1. process.stdout.write imprime «Pedido » y el cursor se queda en la misma línea.
  2. process.stdout.write imprime «n.º 1024» y el cursor se queda en la misma línea.
  3. console.log imprime « está confirmado.» y el cursor pasa a una línea nueva.
  4. console.log imprime «Envío: mañana» y el cursor pasa a una línea nueva.
  5. Los espacios están dentro de las comillas: la computadora no pone un espacio por su cuenta.
Más precisamente, para curiosos

process.stdout es la salida del programa en Node.js. El navegador no la tiene: allí el texto de una línea se junta y se imprime de una vez con console.log.

Pruébalo

¿En cuántas líneas?

¿Qué imprimirá el programa?

process.stdout.write("Tren ");
console.log("8:15");
process.stdout.write("Andén ");
process.stdout.write("3");
console.log();
Respuesta

La idea

Comentarios: notas para las personas

A veces quieres dejar una nota en el código: por qué está así o qué viene después. La escribes como un comentario. La computadora se salta los comentarios.

  • // empieza un comentario que llega hasta el final de la línea.
  • /* y */ rodean un comentario de varias líneas.
/* El recibo de la cafetería.
Los precios están en euros. */
console.log("Café 2,50 €");
// console.log("Cruasán 1,80 €");
console.log("Total 2,50 €"); // no quedan cruasanes
Salida
Café 2,50 €
Total 2,50 €

La línea del cruasán es código, pero está detrás de //, así que no se ejecuta. Así desactivas una línea por un tiempo sin borrarla.

Un buen comentario dice por qué, no qué. El propio código muestra lo que hace.

Pruébalo

¿Qué saldrá?

¿Qué imprimirá el programa?

console.log("9:00 Matemáticas");
// console.log("10:00 Física");
console.log("11:00 Historia"); // luego, el almuerzo
Respuesta

Problema

El programa no arranca

Has escrito el programa, lo ejecutas y ni siquiera empieza. No sale ni una sola línea. En lugar de la salida recibes un mensaje:

welcome.js
console.log("¡Bienvenido al curso!"
console.log("Empezamos.");
Mensaje de Node.js
/home/student/welcome.js:1
console.log("¡Bienvenido al curso!"
^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: missing ) after argument list

Aquí falta el paréntesis de cierre en la primera línea. Antes de ejecutar la primera línea, Node.js lee todo el archivo y comprueba que esté escrito según las reglas del lenguaje. Si no lo está, se detiene y no ejecuta nada, ni siquiera las líneas que van antes del error. Esto se llama error de sintaxis (SyntaxError).

La idea

Cómo leer el mensaje

El mensaje te dice tres cosas: el archivo, la línea y qué está mal.

/home/student/welcome.js:1 significa el archivo welcome.js (con la ruta completa), línea 1. Debajo está la propia línea, y las marcas ^ subrayan el lugar donde Node.js notó el problema. Después vienen el tipo de error y qué está mal: missing ) after argument list significa «falta un ) después de lo que hay entre los paréntesis».

Debajo del mensaje Node.js imprime más líneas que empiezan por at. Dicen en qué punto del propio Node.js se notó el error. Por ahora sáltalas.

También hay un segundo tipo de error. El programa arranca, ejecuta las líneas una tras otra y se detiene solo en la línea que no puede ejecutar:

welcome.js
console.log("¡Bienvenido al curso!");
Console.log("Empezamos.");
Salida y mensaje
¡Bienvenido al curso!
/home/student/welcome.js:2
Console.log("Empezamos.");
^
ReferenceError: Console is not defined
Console con mayúscula es un nombre que Node.js no conoce (ReferenceError). Solo se entera cuando llega a esa línea, por eso la primera línea ya se ha impreso. Otra vez indica el archivo y la línea, y después el tipo de error.

Los errores más comunes al principio:

  • una comilla o un paréntesis se abre, pero no se cierra (SyntaxError);
  • una mayúscula en lugar de una minúscula: Console.log (ReferenceError, cuando el programa llega a la línea).

Node.js muestra solo un error de sintaxis cada vez. Lo corriges, ejecutas otra vez y solo entonces ves el siguiente, si lo hay.

Más precisamente, para curiosos
  • Node.js te dice dónde notó el problema. A veces el error está un poco más arriba.
  • También hay errores que nadie detecta: el programa arranca, pero hace otra cosa distinta de la que quieres. Los cazaremos en casi todas las lecciones.

Pruébalo

Encuentra el error

El programa debe imprimir el horario del examen. No arranca: ni siquiera sale la primera línea. ¿En qué línea está el error?

Elige la línea con el error.

Ejercicio

Tus primeros programas

Resuelve las tareas en tu editor. Cada una es un programa aparte. Compara tu salida con la del ejemplo, carácter por carácter.

1. Hello World. El primer programa tradicional. Imprime:

Salida
Hello, World!

2. Tarjeta de visita. Imprime una tarjeta de visita de tres líneas: nombre, profesión y correo electrónico. Puedes usar los tuyos.

Salida de ejemplo
María López
desarrolladora web
maria@example.com

3. Marco. Imprime el menú de hoy del comedor dentro de un marco de asteriscos. Cuida los espacios para que el lado derecho salga recto.

Salida
*************
* Hoy: sopa *
* 5,40 € *
*************

Más tareas

  • Una frase en tres partes. Con tres órdenes process.stdout.write y una console.log, imprime en una sola línea «La tienda abre de 9:00 a 19:00.»
  • Un horario con un comentario. Imprime un horario de cuatro clases. Después desactiva la tercera línea con //, sin borrarla, y añade un comentario que diga por qué.
  • Un error a propósito. Quita el ; de una línea de la tarea 1: el programa sigue funcionando. Luego quita un paréntesis, luego una comilla y luego escribe Console.log con mayúscula. Lee lo que dice Node.js cada vez.

Test

Ponte a prueba

1. ¿Dónde empieza a ejecutarse el programa?
2. ¿Qué diferencia hay entre process.stdout.write("a") y console.log("a")?
3. ¿Qué hace la computadora con un comentario?
4. Node.js informa de un SyntaxError en la línea 3. ¿Qué significa?
5. ¿Qué línea imprimirá Hola?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·