En boolsk datatype er en datatype, der kun kan have en af to værdier: sand eller falsk. Den boolske datatype blev oprindeligt tilføjet til C++-sproget af ISO/ANSI-udvalget (International Standards Organization/American National Standards Organization) i 1998. Udtrykkene af typen bool er opkaldt efter den engelske matematiker George Boole, som formulerede regler for matematisk logik. Boolske udtryk ender også med en værdi på enten sand eller falsk. Boolske udtryk anvendes i forgrenings- og looping-angivelser. I programmering kan et boolsk udtryk bruges med betingede udsagn (udsagn, der kun sker, når den rigtige betingelse er opfyldt).
Hvad betyder "sand" og "falsk" i praksis?
Sand (true) og falsk (false) repræsenterer to logiske tilstande. De bruges til at træffe beslutninger i kode: hvis en betingelse er sand, udføres én handling; hvis den er falsk, udføres en anden eller slet ingen. Boolske værdier kan komme direkte fra sammenligninger (f.eks. 5 > 3) eller fra funktioner og udtryk, der returnerer et sandt eller falsk resultat.
Grundlæggende logiske operatorer
- AND (ofte skrevet && eller and): sand kun hvis begge operander er sande.
- OR (ofte skrevet || eller or): sand hvis mindst én operand er sand.
- NOT (ofte skrevet ! eller not): inverterer en boolsk værdi (sand → falsk, falsk → sand).
- XOR (eksklusiv eller): sand hvis præcis én af operanderne er sand.
Hvordan boolsk datatype opfører sig i forskellige sprog
- C++: Har typen bool siden standarden i 1998; værdierne er true og false. Størrelsen (sizeof(bool)) er implementeringsafhængig, men ofte 1 byte.
- C: Introducerede _Bool i C99. Før C99 blev heltal brugt til at repræsentere sand/falsk (0 = falsk, ikke-0 = sand).
- Java: Har den primitive type boolean med værdierne true/false; bruges bl.a. i kontrolstrukturer og betingelser.
- Python: Har typen bool, hvor True og False er underklasser af int (True==1, False==0). Mange objekter har "truthy" eller "falsy" værdi ved betingelseskontrol.
- JavaScript: Har en boolsk type, men også begrebet "truthy" og "falsy", dvs. forskellige værdier konverteres implicit til true eller false (f.eks. 0, "", null, undefined er falsy).
- SQL: Understøttelse af BOOLEAN varierer; nogle databaser bruger treværdilogik (TRUE, FALSE, UNKNOWN/NULL).
Kortfattede kodeeksempler
Eksempler i forskellige sprog (forklaring i kommentarerne):
// C++ bool a = true; bool b = (5 > 3); // b == true if (a && b) { // udfør kode hvis begge er sande } // Python a = True b = (5 > 3) # True if a and b: pass # udfør kode // JavaScript let a = true; let b = (5 > 3); // true if (a && b) { // udfør kode } Sammenligninger og hvordan de giver booleanske resultater
Sammenligningsoperatorer som ==, !=, >, <, >=, <= returnerer typisk boolske værdier. Disse bruges hyppigt i kontrolstrukturer (if, while, for) og ved filtrering af data.
Typiske anvendelser
- Kontrolflow: styring af if/else, loops
- Flags: gemme tilstande (fx er en bruger logget ind?)
- Validering: tjekke brugerinput eller forudsætninger
- Filtrering og søgning: returnere elementer der opfylder en betingelse
- Optimeringer: kortslutning af beregninger ved logiske operatorer
Faldgruber og gode råd
- Assignment vs. sammenligning: I mange sprog er = tildeling, == (eller === i JavaScript) er sammenligning. Brug korrekt operator for at undgå logiske fejl.
- Floating point-sammenligninger: Undgå direkte sammenligning af floating-point værdier for nøjagtighed; brug tolerancer (epsilon).
- Truthy/falsy: Vær opmærksom på sprog som JavaScript og Python, hvor ikke-boolske værdier implicit kan opfattes som true eller false.
- Null/undefined/NULL: I databaser og nogle sprog kan værdier være "ukendte" eller null, hvilket kan skabe treværdilogik; håndter disse eksplicit.
- Pladskrav: En boolsk variabel optager ofte mere end ét bit i hukommelsen (typisk mindst en byte), men kan pakkes i bitfelter eller arrays af bits, hvis plads er kritisk.
Boolean algebra og logisk tænkning
Den boolske logik giver regelsæt til at forenkle og kombinere betingelser (De Morgan's regler, distributivitet mv.). Den er grundlaget for betingelseslogik i programmering, digitale kredsløb og søgealgoritmer.
Opsummering
Den boolske datatype er central for beslutningslogik i programmering. Den repræsenterer to tilstande (sand/falsk) og bruges i kontrolstrukturer, sammenligninger og som tilstandsflag. Kendskab til hvordan forskellige sprog håndterer booleanske værdier, samt almindelige faldgruber som truthy/falsy og null-værdier, hjælper med at skrive korrekt og robust kode.