Software de Sistemas – E/S Estándar (Streams y el Transcript)

Hola! Vamos a intentar smalltalkizar las clases presentes en la wiki de software de sistemas (https://wiki.dcc.uchile.cl/cc3301/).

Comencemos!

1. Entrada y Salida Estándar

Al menos con lo poco que conozco de Smalltalk, no hay una salida ni entrada estándar. Sin embargo, existen los “caudales” (streams), que permiten transmitir información. La manera más fácil de copiar un archivo en otro es usar:
|in out|
in:=FileStream fileNamed:'test.txt'.
out:=FileStream newFileNamed:'test2.txt'.
[in atEnd] whileFalse:[out nextPut: in next].

Si quisiéramos solo observar el elemento presente al inicio del stream utilizaríamos en vez del mensaje next el mensaje peek. Por otra parte, a la última línea le falta abstracción aún. Se puede simplificar como:

in do:[:a | out nextPutAll:a].
Podemos ver que la salida es caracter a caracter, copiando la entrada de la Closure (a) a lo más cercano a la “salida estándar”: un transcript. Basta hacer clic en el fondo de la imagen para que aparezca el menú World, luego Tools>> Transcript.


luego cambiamos la última línea por lo siguiente:
in do:[:a |
out nextPut:a.
Transcript show:a ;
cr.].

show:a muestra el caracter y el mensaje cr introduce un salto de línea (carriage return). El punto y coma se utiliza para enviar un conjunto de mensajes al mismo objeto.

Smalltalk tiene un editor por default con el mensaje edit. Para editar/ver el archivo, basta evaluar

(FileStream fileNamed:'test2.txt') edit
Los paréntesis son necesarios por el orden de evaluación de los mensajes en smalltalk:

  1. Mensajes Unarios
  2. Mensajes Binarios (ej: a+b)
  3. Mensajes Keyword (Palabra Clave): aquellos que reciben su parámetro a posteriori: (ejemplos: “fileNamed:” “ifTrue: ifFalse:”)
Anuncios

Acerca de fbanados
CS Student at University of Chile.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: