Beruflich Dokumente
Kultur Dokumente
Aqu hay varios detalles que merece la pena comentar, algunos de ellos
nuevos:
var
numero1, numero2: integer;
begin
(* Cuerpo del
programa *)
writeLn('Potencia de un numero entero');
writeLn;
writeLn('Introduce el primer numero');
readLn( numero1 );
writeLn('Introduce el segundo numero');
readLn( numero2 );
writeLn( numero1 ,' elevado a ', numero2 ,' vale
',
potencia (numero1, numero2) )
end.
Ejercicio propuesto 6.3.2: Prepara una funcin llamada "media", que reciba
dos nmeros reales como parmetros, y devuelva como resultado su media
aritmtica.
Ejercicio propuesto 6.3.3: Crear una funcin "potenciaReal", que trabaje con
nmeros reales, y permita clculos como 3.2 elevado a 1.7 (pista; hay que usar
exponenciales y logaritmos, como vimos en el apartado 1.6.3
Ejercicio propuesto 6.3.4: Haz una funcin que halle la raz cbica del
nmero que se le indique (pista: hallar una raz cbica es lo mismo que elevar a
1/3).
Ejercicio propuesto 6.3.5: Define las funciones Suma3 y Producto3, que
calculen suma y producto de tres nmeros enteros, y crea un programa que
haga una operacin u otra segn escoja el usuario (empleando "case").
Por supuesto, una funcin puede devolver valores de otros tipos, no solo
numricos. As, una funcin que nos devolviera la inicial de una palabra podra
ser:
program FuncionInicial;
function inicial( texto: string): char;
begin
inicial := texto[1];
end;
(* Cuerpo del programa *)
var
frase: string;
begin
write('Introduce una frase: ');
readLn( frase );
writeLn('Su primera letra es: ', inicial(frase) );
end.
(*
Ejemplo de ejecucion:
Introduce una frase: hola, que tal
Su primera letra es: h
*)
O bien podramos recorrer una frase formada por varias palabras, para as
construir y devolver una cadena que contenga las iniciales de todas ellas:
i: byte;
begin
temporal := '';
temporal := temporal + texto[1];
for i := 2 to length(texto) do
if texto[i-1] = ' ' then
temporal := temporal + texto[i];
iniciales := temporal;
end;
(* Cuerpo del programa *)
var
frase: string;
begin
write('Introduce una frase con varias palabras:
');
readLn( frase );
writeLn('Sus iniciales son: ', iniciales(frase) );
end.
(*
Ejemplo de ejecucion:
Introduce una frase con varias palabras: hola, que tal
Sus iniciales son: hqt
*)
*)
*)
program if5;
var
numero: integer;
esPositivo: boolean;
begin
writeLn('Escriba un numero');
readLn(numero);
esPositivo := numero>0;
if esPositivo then writeLn('El numero es
positivo');
end.
(* Ejemplo de ejecucion:
Escriba un numero
2
El numero es positivo
*)
Ejercicio propuesto 2.2.1: Crea un programa que cree una variable de tipo
boolean, le asigne el valor TRUE y luego muestre dicho valor en pantalla.
Ejercicio propuesto 2.2.2: Crea un programa que pida al usuario un nmero
real y diga si es cero o no, usando una variable boolean.
Ejercicio propuesto 2.2.3: Crea un programa que pida al usuario un nmero
entero y diga si es positivo, negativo o cero, usando dos variables boolean
(esPositivo y esNegativo).
Ejercicio propuesto 2.2.4: Crea un programa que pida al usuario un nmero
entero y diga si es positivo, negativo o cero, usando tres variables boolean
(esPositivo, esNegativo y esCero).
pesado y hacer que el programa sea poco legible. Hay una alternativa
que resulta mucho ms cmoda en esas ocasiones: la orden case. Su
sintaxis es
case expresion of
caso1: sentencia1;
caso2: sentencia2;
...
casoN: sentenciaN;
end;
o bien, si queremos indicar tambin lo que se debe hacer si no
coincide con ninguno de los valores que hemos enumerado, aadimos
la clusula opcional else:
case expresion of
caso1: sentencia1;
caso2: sentencia2;
...
casoN: sentenciaN;
else
otraSentencia;
end;
(Nota: Esta es la sintaxis empleada por Turbo Pascal y Free Pascal.
En Pascal estndar, esta construccin se empleaba
conotherwise en lugar de "else" para expresar "en caso contrario".
Veamos un ejemplo:
begin
WriteLn('Escriba un simbolo');
ReadLn(letra);
case letra of
' ':
WriteLn('Un espacio');
'A'..'Z', 'a'..'z': WriteLn('Una letra');
'0'..'9':
WriteLn('Un digito');
'+', '-', '*', '/': WriteLn('Un operador');
else { otherwise en SURPAS y otros compiladores }
WriteLn('No es espacio, ni letra, ni digito,
ni operador');
end;
end.
(* Ejemplo de ejecucion:
Escriba un simbolo
a
Una letra
*)