DMarlon Studio

Lección 5 · 5 de 20

Leer del teclado · Pascal

Pida datos al usuario con ReadLn en Pascal: textos y números, uno por línea o varios en la misma, para calcular el precio de unas entradas de cine.

Pascal · Leer del teclado en DMarlon Studio: el código del ejemplo y su salida en la terminal

`ReadLn` espera a que el usuario escriba una línea y pulse Intro, y guarda lo escrito en la variable que le pase: ReadLn(name). Antes se usa Write, sin salto de línea, para que la pregunta y la respuesta queden en la misma línea.

En este ejemplo las respuestas salen del archivo input.txt, como si alguien las tecleara; por eso no aparecen en la salida y cada pregunta va seguida directamente de la contestación del programa. En la consola de DMarlon Studio (destino Consola, F9) puede escribirlas usted mismo.

A diferencia de otros lenguajes, ReadLn convierte el texto al tipo de la variable: con age: Integer lee un entero y con price: Double, un número con decimales. Si se teclea algo que no es un número, el programa se detiene con un error de ejecución (el 106).

`ReadLn(first, second)` lee varios números de una misma línea, separados por espacios, como 7 9. Con ellos se calcula la nota media, (first + second) / 2, que se escribe con un decimal.

Código · main.pas

program main;var  name: String;  age, tickets, first, second: Integer;  price: Double;begin  Write('What is your name? ');  ReadLn(name);  WriteLn('Nice to meet you, ', name, '!');  // ReadLn turns the text into the type of the variable.  Write('How old are you? ');  ReadLn(age);  WriteLn('In 10 years you will be ', age + 10, '.');  Write('Price of a cinema ticket? ');  ReadLn(price);  Write('How many tickets? ');  ReadLn(tickets);  WriteLn(tickets, ' tickets cost ', price * tickets:0:2, ' euros.');  // Several numbers on the same line, separated by spaces.  Write('Your two exam marks? ');  ReadLn(first, second);  WriteLn('Average mark: ', (first + second) / 2:0:1);end.

Entrada (lo que se teclea) · input.txt

Lucia
29
8.50
3
7 9

Salida · fpc main.pas && ./main

What is your name? Nice to meet you, Lucia!
How old are you? In 10 years you will be 39.
Price of a cinema ticket? How many tickets? 3 tickets cost 25.50 euros.
Your two exam marks? Average mark: 8.0

Para recordar

  • ReadLn(variable) lee una línea del teclado.
  • ReadLn convierte el texto al tipo de la variable.
  • Write antes de ReadLn deja la pregunta en la misma línea.
  • ReadLn(a, b) lee varios números separados por espacios.

Ejercicio

Pregunte también el título de la película y termine con una frase como «3 tickets for Dune cost 25.50 euros.». Añada la respuesta a input.txt en el lugar que le corresponda.