Autor |
Mensaje |
vamos_acade
Nivel 3
Edad: 36
Registrado: 15 Sep 2008
Mensajes: 24
Carrera: Sistemas
|
|
que tal, este jueves tengo el parcial de algoritmos 1 y por ahora entiendo la mayoria de los comandos pero el que no entiendo como se usa es el boolean, ¿alguien me podria dar un ejemple simple de algun programa usando boolean?
muchas gracias.
|
|
|
|
|
|
|
|
|
Moises
Nivel 8
Edad: 35
Registrado: 26 Sep 2007
Mensajes: 727
Carrera: No especificada
|
|
Si
A ver, boolean es un tipo de dato, que puede tomar dos valores... verdadero y falso.
¿Y para que se ocupa?
Bueno, en general para tomar decisiones y ver hacia donde bifurcar.
Un ejemplito?
No me acuerdo de la sintaxis de pascal, pero... a ver..
Es medio tonto, pero viene bien
Cita:
|
numero:integer;
variable:boolean; (no estoy seguro si se declaraba asi...)
readl(numero)
if (numero > 10) then
variable:=true;
else
variable:=false;
if variable = true then
writeln ¡El numero es mayor que diez!
else
writeln El numero no es mayor que 10.
|
Okey, veamos, eso podría hacerse directamente con el if.. numero > 10 entonces.. es mayor que diez...
pero era para que lo veas aplicado...
¿Y cuando lo usas?
Depende de tu programa.... me parece que no haz hecho la guía de ejercicios
_______
Otro ejemplo
Supón que tienes que recorrer un vector, y parar cuando exista un elemento mayor que diez.....
Cita:
|
salir_del_ciclo:boolean;
salir_del_ciclo:=false; //la inicializamos
i=0;
while ((salir_del_ciclo = false) OR( i= 100))
inc(i)
if vector[i] > 10 then salir_del_ciclo:= true;
end
if salir_del_ciclo = true then
writeln ¡Salimos antes del ciclo!
else
writeln ¡Llegamos a 100 y no salio del ciclo!
|
Si no sale del ciclo, eso se ejecutaría hasta que la condición de la i se cumpla
__
Otro ejemplo, seguro lo haz visto.. es una búsqueda secuencial, probablemente la implementaron con boolean
|
|
|
|
|
|
|
|
|
vamos_acade
Nivel 3
Edad: 36
Registrado: 15 Sep 2008
Mensajes: 24
Carrera: Sistemas
|
|
ok, gracias por el ejemplo.
y la guia la hice en su mayoria pero sin usar boolean.
|
|
|
|
|
|
|
|
|
todoseapormi
Nivel 9
Edad: 36
Registrado: 18 Mar 2006
Mensajes: 2135
Carrera: Sistemas
|
|
no hace falta comparar un boolean, osea si haces if variable lo toma...
|
|
|
|
_________________ MLI
|
|
|
|
|
Ni7ram
Nivel 6
Edad: 34
Registrado: 03 Mar 2007
Mensajes: 271
Ubicación: Buenos Aires, Cap Fed
Carrera: Informática
|
|
El boolean es útil porque ocupa un solo byte. Antes de conocer el if, yo usaba un integer y lo switcheaba de 1 a 0, cosa que esta mal porque ocupa muchísimo mas espacio que un booleano.
Mirá, no se como será en Pascal, pero en C++ es asi:
entonces le podes asignar verdadero (Variable = true;) o falso (Variable = false;)
Cuando lo evaluas no hace falta poner if (Variable == true), directamente podes hacer:
Y tambien lo podes negar para entrar al if si es falso
Código:
|
if (!Variable){
}
|
Bueno ya que tengo tiempo te dejo un programa:
Código:
|
//VARIABLES
bool ingeniero;
char respuesta;
//PROGRAMA
cout << "Sos ingeniero? (S) (N)";
cin >> respuesta;
if (respuesta == 'S'){
ingeniero = true;
}else{
ingeniero = false;
}
if (ingeniero){
cout << "Sip, sos ingeniero";
}else{
cout << "Mm no, todavia te falta";
}
|
Como verás hay un paso de mas, porque tranquilamente podría haber tirado el mensaje por consola cuando evaluaba la respuesta del usuario en el primer if, pero no sería un ejemplo del uso de boolean. Perdon, no se me ocurrio un ejemplo mejor .
Ja!, deje un programa igual al que dejaron antes XD .. que poca imaginación che.
EDIT: correcciones varias
|
|
|
|
Última edición por Ni7ram el Mar Oct 14, 2008 8:25 pm, editado 5 veces
|
|
|
|
|
Moises
Nivel 8
Edad: 35
Registrado: 26 Sep 2007
Mensajes: 727
Carrera: No especificada
|
|
¿Un solo bit?
Un byte te creo.
|
|
|
|
|
|
|
|
|
Ni7ram
Nivel 6
Edad: 34
Registrado: 03 Mar 2007
Mensajes: 271
Ubicación: Buenos Aires, Cap Fed
Carrera: Informática
|
|
Si, tenes un razon, ocupa un byte. Ahora lo corrijo.
|
|
|
|
|
|
|
|
|
4WD
Administrador
Edad: 39
Registrado: 07 Sep 2006
Mensajes: 2430
Ubicación: Ingeniero
Carrera: Mecánica
|
|
Suele usarse como "bandera", es decir, para marcar un estado (verdadero o falso) y pasarlo entre distintas partes del programa.
Ocupa un bit (sólo dos valores posibles, 1 ó 0 = verdadero o falso) y no un byte (8 bits)!!!... Muchachos, a repasar estructuras de datos...
Boolean: http://en.wikipedia.org/wiki/Boolean_datatype
|
|
|
|
_________________
|
|
|
|
|
Moises
Nivel 8
Edad: 35
Registrado: 26 Sep 2007
Mensajes: 727
Carrera: No especificada
|
|
4WD escribió:
|
Suele usarse como "bandera", es decir, para marcar un estado (verdadero o falso) y pasarlo entre distintas partes del programa.
Ocupa un bit (sólo dos valores posibles, 1 ó 0 = verdadero o falso) y no un byte (8 bits)!!!... Muchachos, a repasar estructuras de datos...
Boolean: http://en.wikipedia.org/wiki/Boolean_datatype
|
Si, pero el tamaño en memoria es 1 byte. Los 7 bits se pierden.
(Siempre me referí al tamaño en memoria, aclaro)
Cita:
|
m ~/sdata_web $ cat a.cpp
#include <iostream>
int main () {
bool a;
std::cout << sizeof(a) << std::endl;
return 0;
}
m ~/sdata_web $ c++ a.cpp
m ~/sdata_web $ ./a.out
1
|
|
|
|
|
|
|
|
|
|
EpidemiaN
Nivel 7
Edad: 35
Registrado: 28 Ago 2007
Mensajes: 402
Carrera: Informática
|
|
[OT]
Bueno, igual, creo que el estandard de C++ no impone qué tamaño debe ocupar en memoria un bool.
(de hecho, que el programa te diga que ocupa "1" byte no significa que se estén perdiendo 7 bits tampoco (1 byte puede no ser de 8 bits ))
Cada implementación de cada lenguaje lo puede implementar como se le canta.
[/OT]
Lo que importa es que tenga sólo dos valores posibles (por eso 4DW dijo que se ocupa un bit): true y false, y que con eso se puede cambiar el flujo de un programa dependiendo del valor de un boolean.
Código:
|
var malaSuerte: boolean;
malaSuerte := random(1000) = 666;
if (malaSuerte) formatearDisco();
|
Un cacho de código (en algun lenguaje improvisado que se parece a pascal) que te formatea el disco si tenes mala suerte. Asi de grosos son los booleans!
|
|
|
|
|
|
|
|
|
4WD
Administrador
Edad: 39
Registrado: 07 Sep 2006
Mensajes: 2430
Ubicación: Ingeniero
Carrera: Mecánica
|
|
Ese es oooootro tema. De hecho, el tamaño que ocupa depende de la implementación, como reza la Wikipedia.
A modo de ejemplo (burdo y bien para putear a MS... ):
Wikipedia escribió:
|
In Visual Basic Boolean values from comparisons can be stored in variables with the Boolean data type, which is stored as a 16-bit signed integer, but should only have the values True(-1) and False(0).
|
|
|
|
|
_________________
|
|
|
|
|
Moises
Nivel 8
Edad: 35
Registrado: 26 Sep 2007
Mensajes: 727
Carrera: No especificada
|
|
Ajá, tienes razón.
Es simpático que se den estas discusiones de corte filosófico por una pregunta
|
|
|
|
|
|
|
|
|
Ni7ram
Nivel 6
Edad: 34
Registrado: 03 Mar 2007
Mensajes: 271
Ubicación: Buenos Aires, Cap Fed
Carrera: Informática
|
|
Si, por eso habia dicho que ocupada un bit, pero moises me hizo dudar y es cierto lo que dice, ocupa un byte (no siempre, pero bueno). Encontre info que dice que algunos S.O. directamente no pueden escribir en un solo bit.
|
|
|
|
|
|
|
|
|
|