Pascal

Program caesar;
uses crt;
const
z=3;
var
n1,n2:array [0..10] of char;
a,b:integer;
begin
writeln('introduzca nombre');
readln(n1);
b:=1;
while [a:=ord(n)]>0 do
begin
b:=b+1;
write (chr(a+z));
end;
end.
Este programa supuestamente se le introduce
una cadena de caracteres y devuelve otro con
los caracteres situados 3 sitios adelante.
Pero el compilador me da error en la línea
de while. ¿Cómo debería ser?
¿Alguna web donde se enseñe pascal?
1

1 respuesta

Respuesta
1
En primer lugar, puedes encontrar tutoriales de Pascal en:
http://www.monografias.com
http://lawebdelprogramador.com
En la página de Stratos (http://www.stratos-ad.com) tienes también una gran cantidad de enlaces sobre programación.
Por otra parte, el programa sería algo así:
PROGRAM caesar;
CONST
z = 3;
VAR
s: String;
i: Integer;
BEGIN
READLN("Introduc un nombre: ", s);
for i:=1 to length(s) do
write(chr(ord(s)+z));
writeln;
END.
El problema que tienes en el while es:
1.- No puedes hacer una asignación y comparar el resultado con otro valos: eso no funciona en Pascal. Necesitas una expresión booleana pura y dura.
2.- La expresión booleana completa debería, al menos en teoría, ir entre paréntesis.
Notas sobre el programa que te he mandado:
1.- Si se define una variable de tipo string sin más (sin decirle una longitud máxima), se coge como tamaño máximo por defecto 255 caracteres.
2.- Un String es prácticamente equivalente a un ARRAY`0..255] OF CHAR; donde:
a.- El carácter que ocupa la posición 0 es tal que su código ASCII (ord) es igual al número de caracteres que forman la cadena. De esta forma, podríamos haber sustituido length(s) por ord(s[0])
b.- El resto de los caracteres, de la posición 1 en adelante, son los que forman la cadena propiamente dicha, siendo representativos únicamente los ord(s[0]) primeros. La cadena no acaba el el carácter '/0' como en C.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas