Como te han dicho, una bandera o Flag es una variable que, por lo general, se la usa como variable de control.
Dependiendo del valor de ésta se realizan una u otras acciones. Puede ser booleana, de tipo entera o incluso de tipo cadena (string, char); aunque lo más habitual es que sea booleana o entera.
Como toda variable de control, se la emplea para tomar decisiones.
Veamos algunos ejemplos:
mientras SeaVacio AND (i <= N) hacer:
....
fin_mientras
si SeaVacio
entonces: ...
sino: ...
En este caso SeaVacio es una bandera (Flag), observa que es un caso de variable booleana. Si toma el valor TRUE se hace una cosa, y si es FALSE otra.
O algo más complejo como:
EsPosible = EvaluarLanzamiento(Cohete, Estado)
si NOT EsPosible
entonces:
en caso de Estado:
1: Mostrar("Fallo en el fuselaje")
2: ...
...
fin_caso
En este ejemplo, Estado es un Flag que se pasa como parámetro en la función EvaluarLanzamiento. Luego se analiza el valor de Estado para determinar que ha fallado.
No sólo un Flag se puede emplea como parámetros de salida. Pueden ser de entrada para regular el "flujo" de un algoritmo. Nada impide tener un procedimiento Reparar(Cohete, Estado). En este caso Estado si bien es un Flag, se emplea para controlar que partes del algoritmo se ejecutará.
Es posible que su implementación esté basada en estructuras IFs o CASEs.
En términos de acoplamiento no es deseable llegar a módulos que estén vinculados por variables de control. En un acoplamiento medianamente alto ya que posibles alteraciones en el módulo que genera la variable de control llevará a que se altere, posiblemente, significativamente la lógica del módulo que examina dicha variable.
La bandera puede incluso tener un significado a nivel de bits, como lo ha expuesto el primer compañero. Digamos que tenemos un flag de 4 bits (nibble). Podemos asociar a cada bit un significado o uso.
Por ejemplo, en el ejemplo del cohete podríamos decir que:
1er bit: representa si hay error o no en el fuselaje.
2do bit: un error en el tablero de comando.
3er bit: error de cerrado de escotilla.
4to bit: error en el cálculo de lanzamiento.
De este modo si se puede esperar una combinación de hasta esto 4 errores entonces podríamos "prender" y/o "apagar" estos bits a conveniencia y tener en una misma variable representado todas las combinaciones.
La respuesta simple es que una bandera es una simple variable, generalmente booleana, que sirve para poder tomar una decisión en un momento dado.
Por ejemplo, una que yo uso muy comúnmente es cuando tengo una pantalla de edición donde se capturan datos de cualquier tipo de registro. Tengo una bandera que me dice si es un nuevo registro o es un registro que ya existÃa, pero que se está editando. La bandera que tengo es "nuevo", donde si es true, en la base de datos tengo que insertar un nuevo registro (Insert Into Tabla....), pero si es falso, entonces el registro no se tiene que agregar, sino que es actualizar el que ya existe (Update Tabla Set...)
Asà puedo utilizar la misma pantalla de captura para registros nuevos o actualizaciones y tener un único botón "Salvar", el cual ya se encarga de ver si el salvado es por registro nuevo o actualizado.
En programación, bandera (flag) se refiere a uno o más bits que son usados para almacenar un valor binario o código que tiene un significado asignado.
Las banderas son generalmente encontradas como miembros de una estructura de datos definida (como una entrada en una base de datos) y el significado del valor contenido en una bandera generalmente será definido en relación a la estructura de datos a la que pertenece. En muchos casos, el valor binario de una bandera será para representar uno de varios posibles estados o categorÃas. En otros casos, los valores binarios podrÃan representar uno o más atributos en un campo de bit, generalmente relacionado a habilidades o permisos, como "puede ser escrito" o "puede ser eliminado". De todas maneras hay muchos otros posibles significados que pueden ser asignados a los valores en las banderas. Un uso común de banderas es para marcar o designar estructuras de datos para el procesamiento futuro.
Answers & Comments
Verified answer
Hola Vale,
Como te han dicho, una bandera o Flag es una variable que, por lo general, se la usa como variable de control.
Dependiendo del valor de ésta se realizan una u otras acciones. Puede ser booleana, de tipo entera o incluso de tipo cadena (string, char); aunque lo más habitual es que sea booleana o entera.
Como toda variable de control, se la emplea para tomar decisiones.
Veamos algunos ejemplos:
mientras SeaVacio AND (i <= N) hacer:
....
fin_mientras
si SeaVacio
entonces: ...
sino: ...
En este caso SeaVacio es una bandera (Flag), observa que es un caso de variable booleana. Si toma el valor TRUE se hace una cosa, y si es FALSE otra.
O algo más complejo como:
EsPosible = EvaluarLanzamiento(Cohete, Estado)
si NOT EsPosible
entonces:
en caso de Estado:
1: Mostrar("Fallo en el fuselaje")
2: ...
...
fin_caso
En este ejemplo, Estado es un Flag que se pasa como parámetro en la función EvaluarLanzamiento. Luego se analiza el valor de Estado para determinar que ha fallado.
No sólo un Flag se puede emplea como parámetros de salida. Pueden ser de entrada para regular el "flujo" de un algoritmo. Nada impide tener un procedimiento Reparar(Cohete, Estado). En este caso Estado si bien es un Flag, se emplea para controlar que partes del algoritmo se ejecutará.
Es posible que su implementación esté basada en estructuras IFs o CASEs.
En términos de acoplamiento no es deseable llegar a módulos que estén vinculados por variables de control. En un acoplamiento medianamente alto ya que posibles alteraciones en el módulo que genera la variable de control llevará a que se altere, posiblemente, significativamente la lógica del módulo que examina dicha variable.
La bandera puede incluso tener un significado a nivel de bits, como lo ha expuesto el primer compañero. Digamos que tenemos un flag de 4 bits (nibble). Podemos asociar a cada bit un significado o uso.
Por ejemplo, en el ejemplo del cohete podríamos decir que:
1er bit: representa si hay error o no en el fuselaje.
2do bit: un error en el tablero de comando.
3er bit: error de cerrado de escotilla.
4to bit: error en el cálculo de lanzamiento.
De este modo si se puede esperar una combinación de hasta esto 4 errores entonces podríamos "prender" y/o "apagar" estos bits a conveniencia y tener en una misma variable representado todas las combinaciones.
Espero que se entienda mejor el concepto.
Saludos,
La respuesta simple es que una bandera es una simple variable, generalmente booleana, que sirve para poder tomar una decisión en un momento dado.
Por ejemplo, una que yo uso muy comúnmente es cuando tengo una pantalla de edición donde se capturan datos de cualquier tipo de registro. Tengo una bandera que me dice si es un nuevo registro o es un registro que ya existÃa, pero que se está editando. La bandera que tengo es "nuevo", donde si es true, en la base de datos tengo que insertar un nuevo registro (Insert Into Tabla....), pero si es falso, entonces el registro no se tiene que agregar, sino que es actualizar el que ya existe (Update Tabla Set...)
Asà puedo utilizar la misma pantalla de captura para registros nuevos o actualizaciones y tener un único botón "Salvar", el cual ya se encarga de ver si el salvado es por registro nuevo o actualizado.
En programación, bandera (flag) se refiere a uno o más bits que son usados para almacenar un valor binario o código que tiene un significado asignado.
Las banderas son generalmente encontradas como miembros de una estructura de datos definida (como una entrada en una base de datos) y el significado del valor contenido en una bandera generalmente será definido en relación a la estructura de datos a la que pertenece. En muchos casos, el valor binario de una bandera será para representar uno de varios posibles estados o categorÃas. En otros casos, los valores binarios podrÃan representar uno o más atributos en un campo de bit, generalmente relacionado a habilidades o permisos, como "puede ser escrito" o "puede ser eliminado". De todas maneras hay muchos otros posibles significados que pueden ser asignados a los valores en las banderas. Un uso común de banderas es para marcar o designar estructuras de datos para el procesamiento futuro.
Dentro de los microprocesadores y otros dispositivos lógicos, las banderas son generalmente usadas para controlar o indicar el estado intermedio o final o resultado de diferentes operaciones. Generalmente los microprocesadores tienen, por ejemplo, un registro de estados que está compuesto de banderas y las banderas son usadas para indicar varias condiciones postoperación, como cuando hay un desbordamiento aritmético. Las banderas pueden ser utilizadas en operaciones subsiguientes, como en instrucciones de salto de procesamiento condicional.