Operatori logici Parte 3
Fa parte della sezione Fondamenti del percorso Rust di Coddy. Lezione 23 di 75.
Quando verifica più condizioni, il computer smette di controllarle non appena conosce la risposta finale (questa operazione si chiama valutazione con cortocircuito).
Per esempio:
let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2;Qui x è uguale a 0, quindi non valuterà y / x > 2. Se invertissimo l’ordine:
let result: bool = y / x > 2 && x != 0;Questo causerà un errore perché y sarà diviso per 0, un'operazione non consentita in matematica.
Questa tecnica viene utilizzata per ottimizzare la valutazione delle espressioni logiche. Per esempio:
let a: i32 = 0;
let b: i32 = 2;
let c: i32 = 3;
let d: i32 = 5;
let result: bool = (a > 0 && b < 2) || (c < -5 && d < 10);In questo esempio, b < 2 e d < 10 non verranno valutati perché a > 0 e c < -5 sono entrambi falsi.
Sfida
PrincipianteCreiamo un programma per decidere se è una buona giornata per la produzione di energia con i pannelli solari
Inizializza queste variabili:
is_sunnycon il valore truewind_speedcon il valore 5.4temperaturecon il valore 23solar_panel_outputcon il valore 9is_cloudycon il valore false
Crea un'unica espressione logica che verifica TUTTE queste condizioni:
- C'è il sole
- La velocità del vento è inferiore a 10
- La produzione dei pannelli solari è inferiore a 15
- La temperatura è superiore a 20 OPPURE non ci sono nuvole
Provalo tu
fn main() {
// Inizializza le variabili
// Sostituisci i valori segnaposto qui sotto con quelli indicati nell'esercizio
let is_sunny: bool = false;
let wind_speed: f64 = 99.0;
let temperature: i32 = 0;
let solar_panel_output: i32 = 99;
let is_cloudy: bool = true;
// L'espressione logica completa
// Sostituisci il segnaposto qui sotto con la condizione completa
let result: bool = false;
// Non eliminare le righe qui sotto
println!("Checking conditions for solar energy production...");
println!("1. Is it sunny? {}", is_sunny);
println!("2. Is wind speed safe? {}", (wind_speed < 10.0));
println!("3. Can panels produce more? {}", (solar_panel_output < 15));
println!("4. Is temperature good OR no clouds? {}", (temperature > 20 || !is_cloudy));
println!("Final result - Good day for solar energy production: {}", result);
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 1
Operatori aritmeticiOperatore moduloAbbreviazioni aritmeticheOperatori di confrontoConfronto tra stringhe7Input/output di base
Stampare sulla consoleLeggere l'input dell'utenteRiepilogo - Fino a 120Riepilogo - Vero o falso5Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Ripasso - Logica sempliceOperatori logici Parte 311Funzioni
Dichiarare le funzioniParametri e argomentiValori restituitiValori restituiti multipliRiepilogo - funzione SigmaRiepilogo - funzione di validazione14Iterare sugli array
Guida ai rangeCiclo for avanzatoPrestito nel cicloOperazioni comuni sugli array3Variabili Parte 2
Dichiarazione del tipoConvenzioni di denominazioneInferenza del tipoRipasso - Inizializzare le variabiliConversione di tipo9Cicli
Ciclo for su sequenzeCiclo whileBreakContinueCiclo annidatoEtichette dei cicliCiclo infinitoRiepilogo - Input dinamico12Fondamenti degli array
Dichiarare gli arrayArray come parametroAccedere agli elementiModificare gli arrayRiepilogo - Stampare un array in modo leggibile15Operazioni sulle stringhe
Metodi delle stringheMacro format!Conversione delle stringheRipasso - FormattazioneEsercitati da solo: Compilatore Rust online