Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: zadok en 02 de Marzo 2015, 15:26

Título: PASCAL diferencia entre comparaciones de variables numéricas y Strings
Publicado por: zadok en 02 de Marzo 2015, 15:26
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
Título: Re:PASCAL problema con la variable
Publicado por: javi in the sky 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
Título: Re:PASCAL problema con la variable
Publicado por: zadok 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'))