Autor Tema: PASCAL diferencia entre comparaciones de variables numéricas y Strings  (Leído 5619 veces)

zadok

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Buenas, estoy haciendo un programa para el trabajo, el cual al introducir el número del camión, te devuelva todos los demás datos. Hasta este paso lo tengo bien y consigo lo que quiero con este código.

Código: [Seleccionar]
program portas;

var
numporta: real;

begin

writeln('Escribe el numero del porta');
readln(numporta);
writeln;
writeln;
writeln ('=============================');

//Portavehiculos 000
if (numporta = 000)
   then
   begin
        writeln('Nombre conductor');
        writeln('Portavehiculos 000');
        writeln('Matricula: 000-XYZ');
        writeln('EXT:00000');
        writeln('Movil: 000000000');
        writeln ('=============================');
   end

//Portavehiculos 001
if (numporta = 001)
   then
   begin
        writeln('Nombre conductor');
        writeln('Portavehiculos 001');
        writeln('Matricula: 000-XYZ');
        writeln('EXT:00000');
        writeln('Movil: 000000000');
        writeln ('=============================');
   end

else writeln('No es un numero de porta valido');

   writeln;
   writeln;
   writeln('Pulsa ENTER para salir');
   readln


end.



De ese modo tengo metidos todos los camiones y me devuelve justo lo que necesito, ahorrando mucho tiempo y siendo mucho más cómodo que tener que buscar en un papelito.

El problema es cuando quiero dar una vuelta más y quiero poder buscar esos mismos vehículos por matrícula. Lo primero que pensé es que tendría que modificar el tipo de variable y hice esto:

Código: [Seleccionar]
[code]
program portas;

var
numporta: string;

begin

writeln('Escribe el numero del porta');
readln(numporta);
writeln;
writeln;
writeln ('=============================');

//Portavehiculos 000
if (numporta = 000 or 000XYZ)
   then
   begin
        writeln('Nombre conductor');
        writeln('Portavehiculos 000');
        writeln('Matricula: 000-XYZ');
        writeln('EXT:00000');
        writeln('Movil: 000000000');
        writeln ('=============================');
   end

//Portavehiculos 001
if (numporta = 001 or 000XYZ)
   then
   begin
        writeln('Nombre conductor');
        writeln('Portavehiculos 001');
        writeln('Matricula: 000-XYZ');
        writeln('EXT:00000');
        writeln('Movil: 000000000');
        writeln ('=============================');
   end

else writeln('No es un numero de porta valido');

   writeln;
   writeln;
   writeln('Pulsa ENTER para salir');
   readln


end.



Pero no estará bien definida la variable porque me saltan errores por todos lados. A ver si alguien me puede ayudar.

Un saludo
« Última modificación: 02 de Marzo 2015, 17:25 por Alex Rodríguez »

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:PASCAL problema con la variable
« Respuesta #1 en: 02 de Marzo 2015, 17:20 »
Hola tienes que tener en cuenta las diferencias entre tipos numéricos como real y tipos alfanuméricos como String. Un tipo numérico toma valor sin necesidad de comillas, por ejemplo vehiculos = 33;

Sin embargo un tipo alfanumérico hay que envolverlo en comillas: por ejemplo veciculos ='33 modelo hht';

Puedes realizar comparaciones con Strings, pero siempre tendrás que envolverlos en comillas


Código: [Seleccionar]
program String1;
 
var
    saludo: string;
 
begin
    saludo := 'Bienvenidos';
    writeLn( saludo );
end.

Ejemplos de comparaciones entre Strings:

     'A' < 'B'           TRUE
     'Z' < 'a'           TRUE
     'a' < 'B'           FALSE
     'TURBO' ='TURBO'    TRUE
     'TURBO' = 'Turbo'   FALSE
     'turbo ' = 'turbo'  FALSE
     'turbo ' > 'turbo'  TRUE

Saludos

zadok

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:PASCAL problema con la variable
« Respuesta #2 en: 02 de Marzo 2015, 17:21 »
Gracias por responder, voy a tratar de integrarlo en el programa a ver que tal.

Un saludo


edit:  el comando 'or' no sirve para las variables string?

ejemplo:
Código: [Seleccionar]
var ejemplo:string;

begin
     writeln (introduce un vehiculo);
     readln (ejemplo);

if (ejemplo= ('056') or ('2589JHZ'))
     then begin
     writeln ('esta viendo el vehiculo 056 con matricula 258JHZ');

else
     writeln ('ese vehiculo no esta en nuestra base de datos');

end.


Me autorespondo por si a alguien le pasa jeje

Código: [Seleccionar]
if (ejemplo=('056')) or (ejemplo = ('2589JHZ'))
« Última modificación: 02 de Marzo 2015, 18:58 por zadok »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".