# Piccolo manuale di LibreLogo/Decidere

Piccolo manuale di LibreLogo
Copertina Tutti i moduli · Sviluppo
    CopertinaPiccolo manuale di LibreLogo/Copertina
* PrefazionePiccolo manuale di LibreLogo/Prefazione
* LibreLogoPiccolo manuale di LibreLogo/LibreLogo
** La grafica di LibreLogo in WriterPiccolo manuale di LibreLogo/LibreLogo#La_grafica_di_LibreLogo_in_Writer
* Estratti da Mindstorm di S.PapertPiccolo manuale di LibreLogo/Estratti_Mindstorm
* Disegnare con LibreLogoPiccolo manuale di LibreLogo/Disegnare_con_LibreLogo
** Movimento e disegnoPiccolo manuale di LibreLogo/Disegnare_con_LibreLogo#Comandi_di_movimento_e_disegno
*** I comandi fondamentaliPiccolo manuale di LibreLogo/Disegnare_con_LibreLogo#I_comandi_fondamentali
*** Altri comandiPiccolo manuale di LibreLogo/Disegnare_con_LibreLogo#Altri_comandi
** Le variabiliPiccolo manuale di LibreLogo/Disegnare_con_LibreLogo#Le_variabili
** Lo spazio della paginaPiccolo manuale di LibreLogo/Disegnare_con_LibreLogo#Lo_spazio_della_pagina
** Altri comandi graficiPiccolo manuale di LibreLogo/Disegnare_con_LibreLogo#Altri_comandi_grafici
** Conclusione capitoloPiccolo manuale di LibreLogo/Disegnare_con_LibreLogo#Conclusione_capitolo
* Ripetere: cicli e loopsPiccolo manuale di LibreLogo/Ripetere_cicli_e_loops
** Cicli - LoopsPiccolo manuale di LibreLogo/Ripetere_cicli_e_loops##Cicli_-_Loops
** Operazioni aritmetichePiccolo manuale di LibreLogo/Ripetere_cicli_e_loops##Operazioni_aritmetiche
** Un accorgimento per trovare gli erroriPiccolo manuale di LibreLogo/Ripetere_cicli_e_loops##Un_accorgimento_per_trovare_gli_errori
** EserciziPiccolo manuale di LibreLogo/Ripetere_cicli_e_loops##Esercizi
* IncapsularePiccolo manuale di LibreLogo/Incapsulare
* DeciderePiccolo manuale di LibreLogo/Decidere
* AppendicePiccolo manuale di LibreLogo/Appendice
Modifica il sommario

## IF – AND, OR, NOT

In questa versione proponiamo questo capitolo in forma estremamente sintetica. Giusto per completezza, perché il costrutto che si descrive è uno di quelli fondamentali in qualsiasi linguaggio di programmazione, oltre alle variabili, le ripetizioni e le procedure. Si tratta di disporre del modo per interrompere il flusso normale delle istruzioni, passando eventualmente a eseguire sezioni di codice diverse in dipendenza dello stato di certe variabili. L'istruzione che realizza questo in LibreLogo è IF, che per essere eseguita richiede la definizione di una condizione logica. Vediamo un esempio, riprendendo il codice per disegnare un cerchio, così come introdotto da Papert nel capitolo 2:
* TO CERCHIO
* REPEAT [
* FORWARD 1
* RIGHT 1
* END
* CERCHIO
Se facciamo girare questo codice la Tartaruga disegna un cerchio ma non si ferma mai, ripassandolo infinite volte. Naturalmente noi possiamo fermarla con il tasto STOP , ma è possibile insegnarle a fermarsi da sola. Ecco come:
* TO CERCHIO
* REPEAT [
* FORWARD 1
* RIGHT 1
* IF REPCOUNT = 90 [ STOP ]
* END
* CERCHIO
Come si vede, abbiamo aggiunto una sola istruzione, IF REPCOUNT = 90 [ STOP ], che equivale a dire alla Tartaruga: se il contatore dei cicli ha raggiunto il valore di 90 allora fermati. Siccome ad ogni ciclo ruota di 1 grado, in questo modo ne interrompiamo il disegno quando in totale avrà ruotato di 90 gradi, ovvero quando avrà disegnato un quarto di cerchio. Provare e variare per vedere...
La condizione in questo esempio è espressa da REPCOUNT = 90. Si possono usare anche gli operatori “minore di”, <, e “maggiore di”, >, e le condizioni si possono combinare insieme con gli operatori logici AND, OR e NOT. L'AND posto fra due condizioni crea una condizione globale vera se sono ambedue vere. L'OR posto fra due condizioni crea una condizione globale vera se sono ambedue vere oppure anche una sola delle due. Il NOT posto prima di una condizione ne inverte l'esito: la rende falsa se è vera e viceversa. Inoltre si può costruire l'istruzione in maniera che se questa è vera esegue una prima sezione di codice, mentre se è falsa ne esegue un'altra. In questa versione del manuale ci limitiamo a riportare giusto un esempio riassuntivo:
IF A < 10 AND NOT A = 5 [ PRINT “Vero!” ] [ PRINT “Falso!” ]
Tradotto in parole:
se la variabile A è minore di 10 e allo stesso tempo (AND), è diversa da 5 (NOT), allora esegui PRINT “Vero!”, altrimenti esegui PRINT “Falso!”.