8 hämmästyttävää temppua loogisten operaattoreiden käyttämisessä ohjelmoinnissa

Viimeisin päivitys: 27 kesäkuu 2025
Kirjoittaja: TecnoDigital
  • Loogiset operaattorit ovat olennaisia ​​ohjelmoinnissa päätöksenteossa ja suoritusvirran hallinnassa.
  • JA- ja TAI-operaattoreiden oikosulkeminen optimoi tehokkuutta välttämällä tarpeettomia arviointeja.
  • Ne helpottavat monimutkaisten kyselyiden luomista tietokantoihin ehtojen yhdistelmien avulla.
  • Ne ovat perustavanlaatuisia funktionaalisessa ohjelmoinnissa, koska ne mahdollistavat funktioiden kokoamisen deklaratiivisella tavalla.
loogiset operaattorit ohjelmoinnissa

1. Loogiset operaattorit ohjelmoinnissa

  1. JA (&&): Palauttaa tosi, jos molemmat operandit ovat tosi.
  2. TAI (||): Palauttaa tosi, jos ainakin yksi operandeista on tosi.
  3. EI (!): Kääntää operandin totuusarvon.
Ohjelmoinnin perusteet
Aiheeseen liittyvä artikkeli:
Ohjelmoinnin perusteet: peruskäsitteet

2. Oikosulun voima logiikkaoperaattoreissa


function esAdulto(edad) {
    return edad && edad >= 18;
}

console.log(esAdulto(0));  // false
console.log(esAdulto(20)); // true

function saludar(nombre) {
    nombre = nombre || "invitado";
    console.log("Hola, " + nombre + "!");
}

saludar(); // Hola, invitado!
saludar("María"); // Hola, María!
Tehtäväoperaattorit
Aiheeseen liittyvä artikkeli:
Tärkeimmät tehtäväoperaattorit

3. Loogiset operaattorit ohjausrakenteissa

Monimutkaisten ehtojen yksinkertaistaminen


def puede_conducir(edad, tiene_licencia, esta_sobrio):
    return edad >= 18 and tiene_licencia and esta_sobrio

# Uso
if puede_conducir(25, True, True):
    print("Puedes conducir")
else:
    print("No puedes conducir")

Loogisten operaattoreiden käyttäminen silmukoissa


def buscar_elemento(lista, elemento):
    i = 0
    while i < len(lista) and lista != elemento:
        i += 1
    return i if i < len(lista) else -1

# Uso
mi_lista = 
print(buscar_elemento(mi_lista, 5))  # 2
print(buscar_elemento(mi_lista, 6))  # -1

4. Bittiloogiset operaattorit

XOR-temppu muuttujien vaihtamiseen


void intercambiar(int *a, int *b) {
    *a = *a ^ *b;
    *b = *a ^ *b;
    *a = *a ^ *b;
}

// Uso
int x = 5, y = 10;
intercambiar(&x, &y);
printf("x = %d, y = %d\n", x, y);  // x = 10, y = 5

Pariteetin tarkistus loogisten operaattoreiden kanssa


bool es_par(int n) {
    return !(n & 1);
}

// Uso
printf("%d es %s\n", 4, es_par(4) ? "par" : "impar");  // 4 es par
printf("%d es %s\n", 7, es_par(7) ? "par" : "impar");  // 7 es impar

5. Loogiset operaattorit toiminnallisessa ohjelmoinnissa

Funktioiden kokoonpano loogisilla operaattoreilla


const esMayorDeEdad = edad => edad >= 18;
const tienePermiso = usuario => usuario.tienePermiso;

const puedeAcceder = usuario => esMayorDeEdad(usuario.edad) && tienePermiso(usuario);

// Uso
const usuario1 = { edad: 20, tienePermiso: true };
const usuario2 = { edad: 17, tienePermiso: true };

console.log(puedeAcceder(usuario1));  // true
console.log(puedeAcceder(usuario2));  // false

Loogiset operaattorit reaktiivisessa ohjelmoinnissa


import { fromEvent, merge } from 'rxjs';
import { map, filter } from 'rxjs/operators';

const clicks = fromEvent(document, 'click');
const moves = fromEvent(document, 'mousemove');

const clicksOrMoves = merge(
  clicks.pipe(map(() => 'click')),
  moves.pipe(map(() => 'move'))
);

clicksOrMoves.pipe(
  filter(event => event === 'click' || (event === 'move' && Math.random() < 0.1))
).subscribe(console.log);
mikä on pseudokoodi
Aiheeseen liittyvä artikkeli:
Mikä on PSeInt ja kuinka se voi auttaa sinua ohjelmoinnin oppimisessa?

6. Suorituskyvyn optimointi loogisilla operaattoreilla

Laiska arviointi loogisten operaattoreiden kanssa


def operacion_costosa():
    print("Ejecutando operación costosa...")
    return True

def operacion_rapida():
    print("Ejecutando operación rápida...")
    return False

# Sin evaluación perezosa
if operacion_rapida() and operacion_costosa():
    print("Ambas operaciones son verdaderas")

# Con evaluación perezosa
if operacion_costosa() and operacion_rapida():
    print("Ambas operaciones son verdaderas")
ohjelmointialgoritmin osia
Aiheeseen liittyvä artikkeli:
5 osaa ohjelmointialgoritmista

Boolen lausekkeiden yksinkertaistaminen


# Antes de la optimización
if (a and b) or (a and c) or (b and c):
    print("Condición cumplida")

# Después de la optimización
if a or b or c:
    print("Condición cumplida")
Kuinka laittaa kaavoja Exceliin
Aiheeseen liittyvä artikkeli:
Kuinka laittaa kaavoja Exceliin

7. Loogiset operaattorit tietokannoissa

Monimutkaiset kyselyt loogisilla operaattoreilla


SELECT nombre, edad, salario
FROM empleados
WHERE (edad > 30 AND salario > 50000) OR (experiencia > 5 AND departamento = 'IT');

Kyselyjen optimointi loogisilla operaattoreilla


-- Consulta potencialmente lenta
SELECT *
FROM productos
WHERE categoria = 'electrónica' OR precio > 1000;

-- Consulta optimizada
SELECT *
FROM productos
WHERE categoria = 'electrónica'
UNION
SELECT *
FROM productos
WHERE precio > 1000 AND categoria != 'electrónica&#';
von Neumann -arkkitehtuuri
Aiheeseen liittyvä artikkeli:
8 Von Neumann -arkkitehtuurin näkökulmaa

8. Loogiset operaattorit rinnakkais- ja rinnakkaisohjelmoinnissa

Synkronointi atomilogiikkaoperaattoreiden kanssa


#include <stdatomic.h>

atomic_bool recurso_disponible = ATOMIC_VAR_INIT(true);

void usar_recurso() {
    while (!atomic_compare_exchange_weak(&recurso_disponible, &(bool){true}, false)) {
        // Esperar
    }
    // Usar el recurso
    atomic_store(&recurso_disponible, true);
}
Charles Babbage
Aiheeseen liittyvä artikkeli:
Charles Babbage: 7 julkaisua tietojenkäsittelytieteeseen

Loogiset operaattorit konsensusalgoritmeissa


def es_lider(nodo):
    return nodo.termino_actual >= max(otros_nodos.termino_actual) y \
           nodo.log_actualizado and \
           nodo.votos_recibidos > len(otros_nodos) / 2

Johtopäätös

  1. Yksinkertaistaa ohjausrakenteita
  2. Optimoi suorituskyky käyttämällä tekniikoita, kuten laiska arviointi
  3. Luo monimutkaisia ​​kyselyitä tietokantoihin
  4. Helpottaa toiminnallista ja reaktiivista ohjelmointia
  5. Koordinoi suoritus rinnakkaisissa ja rinnakkaisissa järjestelmissä
  Mikä on JavaScript: kaikki mitä sinun tarvitsee tietää

Yleisimmät kysymykset

  • JA (&&): Palauttaa tosi, jos molemmat operandit ovat tosi.
  • TAI (||): Palauttaa tosi, jos ainakin yksi operandeista on tosi.
  • EI (!): Kääntää operandin totuusarvon.
  1. Käytä oikosulkua tarpeettomien arvioiden välttämiseksi.
  2. Yksinkertaistaa monimutkaisia ​​loogisia lausekkeita.
  3. Laiskan arvioinnin toteuttaminen kalliiden laskelmien viivyttämiseksi.

SELECT * FROM productos WHERE (precio > 100 AND categoria = 'electrónica') OR (descuento > 0.5)
  1. Kokoa monimutkaisempia toimintoja yksinkertaisemmista funktioista.
  2. Toteuta virtauksen ohjausrakenteet deklaratiivisella tavalla.
  3. Suodata ja muunna tietokokoelmia.

const numeros = ;
const pares = numeros.filter(n => n % 2 === 0);