martes, 26 de enero de 2010

Historias de la informática (¿1?)

... una entrada que nadie va a entender.

Bueno, pues voy a contar una historia que me sucedió hace unos añitos, en la residencia de estudiantes que estaba, primero de carrera y había otros que al igual como comenzaban ese año. Una de las asignaturas era programación, en Pascal.

Estaba yo haciendo a saber qué, cuando me llaman a la puerta. Un compañero de curso. Teníamos que hacer una práctica para dicha asignatura (algo de mostrar la información de un array de registros con datos)

- Chix, ¿Puedo hacerte una pregunta? - Si la hubiera hecho directamente ye te la hubiera respondido - Ehmmm, uh... ¿Como se hace para imprimir un el contenido de una matriz? - Pues tienes 3 formas For, While y Until... y porque no nos dejan usar Goto que sino... Así que depende como lo quieras hacer - Sí, ya tengo un For - ¿Entonces? - Solo me lista una. La última para ser exactos, lo he intentado de varias formas pero cascaba y de esta forma no pero pasa eso - Las cosas comienzan en cero y term... - Sí, y terminan en length(array) - 1 - Que raro, a ver...

Bueno pues vamos para allá felices... abre Turbo Pascal... miro... y me encuentro

program Practica2
[...]
procedure NoSeCual(var TempArray: array of LoQueFuera);
[...]
begin
  [...]
  for i := 0 to length(TempArray) - 1 do
  begin
    [...] /* Habia que hacer otras cosillas */
    Temp := TempArray[i].Nombre + ' ' + TempArray[i].loquesea + [...]
  end;
  WriteLn(Temp);
  [...]
end;
[...]
end.
- ¡Cacho trozo!, mete ese WriteLn dentro del For - Pero no quiero - ¿Cómo que no quieres? - Si, quiero que lo escriba al final - Pero que más da, si ese procedimiento solo muestra por pantalla un listado. - Que no, quiero que sea después

Resultado

program Practica2
[...]
procedure NoSeCual(var TempArray: array of LoQueFuera)
var
  [...]
  Temp: Array[0..NoSeCuantoEntra] of String[255];
begin
  [...]
  for j := 0 to (length(TempArray) - 1) div 24 do
  begin
    if (length(TempArray) - 1) < (j * 24) then
      h = (length(TempArray) - 1) mod 24
    else
      h = 23
    for i = 0 to h do
    begin
      [...]
      Temp[j * 24 + i] = TempArray[j * 24 + i].Nombre + ' ' + TempArray[j * 24 + i].loquesea + [...]
    end;
    for i = 0 to h do
    begin
      WriteLn(Temp[j * 24 + i]);
    end;
    ReadLn;
  end;
end;
[...]
end.

face palm

No hay comentarios:

Publicar un comentario