Talk:Input/Output for lines of text

From Rosetta Code

Perl 6

Do we have to be explicit about $*IN and $*OUT? What about just:

<lang perl6>say get() xx get;</lang>

?--Grondilu (talk) 06:51, 9 January 2014 (UTC)

But it was saying that you have to call an intermediate method, so I took it very literally as "method" rather than function. I also took it very literally that it didn't specify that you call a user-defined method. So I called a helper method already predefined on the handle. :-) --TimToady (talk) 05:36, 10 January 2014 (UTC)

Task needs clarification

What is "passing it to a method as an intermediate step" supposed to mean?
(See also the discussion section above this one, which demonstrates how that sentence can be ambiguous/confusing.) --Smls (talk) 21:53, 13 August 2016 (UTC)

This is an old one, but I agree. Maybe the task should be read an integer, read that many lines, then output those lines? That way it is just an simple task to show IO.Garbanzo (talk) 06:11, 29 August 2021 (UTC)

Quizá se trate de algo trivial

Cuando el enunciado señala que la entrada se realiza a través del STDIN, y la salida, por el STDOUT, debería ocurrir algo como esto?:

$ echo 3 | my_program
$ echo "Hello" | my_program
Hello
$ echo "hello world" | my_program
hello world
$ echo "Pack my Box with 5 dozen liquor jugs" | my_program
Pack my Box with 5 dozen liquor jugs
$ echo "otra cosa" | my_program
warning: I need the number of lines to enter!

Se me ocurren, al menos, 3 métodos para realizar esta tarea:

1) Usando un archivo (¿creado con atributo "hidden"?), donde la primera línea sea el número ingresado: el resto de las líneas del archivo, son las ingresadas a través del STDIN (con eco en la pantalla). Si el archivo existe, se puede comprobar el número, y contar las líneas ya registradas, para determinar si existe "overflow"; si no existe "overflow", guardar la línea en el archivo, e imprimir la línea en la pantalla. Cuando se alcanzó el total de líneas, se borra el archivo, y se pide que ingrese un número.
2) Se puede usar el sistema de mensajería, en SO Linux, y hacer algo semejante a lo indicado en el punto 1.
3) Este método sirve para aquellos programas que son interpretados por alguna máquina virtual. Todos los programas "ejecutables" de esta clase, tienen una estructura conocida: 
  a) Se puede abrir el programa en modo "BINARIO".
  b) Localizar la dirección donde se guarda el valor que inicializa el contador de líneas.
  c) si dicho valor es "0" (ASCII 48), guardar, en el lugar del "0", el número que entró a través del STDIN, en formato ASCII. Por supuesto, hay que verificar que lo ingresado sea un número.
  d) si dicho valor no es "0", se asumirá que lo ingresado, sea lo que sea, es una de las líneas esperadas:
     d.1) imprimir la línea.
     d.2) decrementar el valor del contador, y guardarlo en la posición exacta, dentro del programa.
     d.3) cerrar el archivo de tu programa, y terminar la ejecución del programa. 
  e) si el contador es "0", y se ingresó algo distinto de un número, o bien mandar un mensaje warning, o no hacer nada.
  f) si el contador es "0", y se ingresó un número, volver al paso a).
  

Cordialmente: Mr_Dalien (Amazing Hopper) 24/11/2021, 22:17