





Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Il documento contiene: Gli Algoritmi; Diagramma di flusso degli algoritmi; Istruzioni condizionali e Istruzioni iterative (cicli); Operatori relazionali e Operatori logici.
Tipologia: Appunti
1 / 9
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!






Un altro esempio o Prodotto tra due numeri x e y per somme ripetute
semplicemente delle zone della memoria del nostro dispositivo in cui è conservato o scritto il valore di un certo numero. Quindi X e Y sono delle etichette che fanno riferimento a dei numeri che sono da qualche parte la nostra memoria. In questo senso leggiamo seguendo le etichette andiamo a recuperare i valori
valutazioni e fare alcune azioni in base allo stato in cui si trova il nostro problema. Però abbiamo visto che questo blocco decisionale ha avuto due funzioni diverse nei due esempi cioè in uno semplicemente vai a sinistra e vai a destra e poi succedeva delle cose da una parte o dall’altra e infine si andava comunque avanti diretti verso il termine della procedura. Invece in questo esempio abbiamo visto qualcosa che lo stesso blocco decisionale faceva qualcosa diverso cioè da una parte ci mandava verso il termine della procedura mentre se avevamo un si faceva una serie di cose e di operazioni e poi ci diceva ok adesso ritornate al passo precedente. Questi due modi di sfruttare questo strumento di valutare lo stato di qualcosa come ad esempio il valore di una variabile ed interrogarla può avere due usi:
s Permettono di controllare il flusso di un algoritmo s Si basano sulla valutazione di una ‘condizione’ t La valutazione della condizione deve risultare in un valore di tipo ‘logic’ (vero o falso) t Per avere una condizione di questo tipo si formulano delle ‘espressioni logiche’. t Per formulare tali espressioni vediamo due tipi di operatori (i più comuni): u Operatori relazionali u Operatori logici Le istruzioni condizionali permettono di controllare il flusso di un algoritmo tramite il diagramma di flusso, uno strumento di controllo perché fa da controllore che dice dove andare a destra o a sinistra esamina la situazione. La situazione è una condizione che deve verificarsi cioè ad esempio nel primo esempio X - Y > di 0. A fronte di questa condizione distruzione che è una valutazione vede qualcosa è diverso in base al fatto che la condizione sia vera o falsa. Il tipo di valutazione che si fa, ed è per questo che quando avevamo visto la versione corretta dell’algoritmo non abbiamo fatto un blocco decisionale a tre vie perché ogni volta che si fa una valutazione la risposta deve essere ovvero o falsa, se noi vogliamo fare una cosa a tre vie e dire una è la via che porta a fare quella cosa e l’altra via porta a fare ulteriori valutazioni e quindi si creano tre vie o di più a seconda di quanto vogliamo considerarne nell’algoritmo però singolarmente un’istruzione condizionale deve fare una valutazione sulla condizione che o è vera o è falsa. Per avere una condizione di questo tipo si crea l’espressione logica ovvero una formula di cui non ci si preoccupa di che cosa ci si butta dentro dei numeri, dei valori vero o falso ma quello che ci interessa è che l’espressione logica è valutabile sempre in termini di vero o falso quindi o è vera o è falsa. Questa è la descrizione di cos’è un’espressione logica. È un’espressione di che abbiamo la certezza che per come è costruita sarà sempre valutabile in termini di vero o falso e che quindi usata all’interno di un’istruzione condizionale, nel momento in cui l’algoritmo usa un’espressione logica per decidere se andare a destra o a
sinistra nei gradi di esecuzione può farlo perché l’espressione logica può essere valutata solo come vero o falso e quindi c’è un parallelismo tra il numero di via il nostro algoritmo può seguire in quel blocco decisionale e il numero di risposte che la valutazione dell’espressione logica ci può dare. X - Y > di 0 cioè il fatto di aver usato il > al posto di una condizione sul valore di X e Y cioè X
w Sono operatori binari (utilizzano due operandi) w I due operandi devono essere di tipo comparabile (e.g. due numeri) Gli operatori relazionali sono operatori binari cioè che utilizzano due operandi, ovvero cioè l’operatore qualcosa sinistra e qualcosa a destra e le due cose a sinistra e a destra degli operatori sono gli operandi cioè degli elementi sui quali ci si interrogherà in base al quale l’operatore. Nel caso il primo esempio avevamo X - Y che è un operando, 0 era l’altro operando cosa ci si chiedeva se il primo era maggiore del secondo. Ce ne sono altri. La simbologia utilizzata è una convenzione ma non è la convenzione assoluta nel senso che è una convenzione molto usata in tanti linguaggi di programmazione si usa questa scrittura ma non è l’unica. Questa è la convenzione largamente utilizzata. Operatori relazionali
entrambe gli operandi sono a loro volta espressioni logiche che vengono valutate come vere
Valutare se un numero x è maggiore di un numero y e minore di un numero z ú (x > y) AND (x < z) Valutare se due numeri x e y sono uguali o se il numero x è diverso da un numero z ú (x == y) OR (x != z) Valutare se non si verifica che l’espressione P e l’espressione Q sono vere ú NOT(P AND Q) Vediamo degli esempi e cerchiamo di tradurre delle condizioni. Diciamo a parole con linguaggio comune quello che vorremmo verificare/far fare al nostro algoritmo e poi lo riscriviamo sottoforma di espressione logica che è quello che capisce la macchina. ù Ipotizziamo di aver bisogno di valutare se un numero X, che vuol dire un numero associato all’etichetta, X > Y e allo stesso tempo verificare se questo numero X < Z. Qui la cosa fondamentale è l’idea di volerlo fare nello stesso tempo, perché durante l’esecuzione di un algoritmo i valori a fronte di operazioni eseguite nei passi dell’algoritmo, i valori e le variabili possono mutare ed evolvere ma noi vogliamo in un certo punto nel nostro algoritmo verificare che tutte e due le condizioni si verificano. Dunque ci viene in aiuto l’operatore AND. Perché and AND da l’idea traducendo dall’inglese di questa cosa e anche quest’altra cosa, dove questa cosa è la condizione X
Y (operando 1) e X < Z (operando 2). L’espressione logica è tutto appunto questo suggerisce in un certo modo che un’espressione logica può essere composta da altre espressioni logiche e a loro volta possono essere composte da altre espressioni logiche di fatto non c’è un limite imposto, o meglio l’unico limite dovesse esserci è perché magari lo impone a un certo linguaggio di programmazione che non ammette di andare troppo o di avere espressione troppo complicate per qualche motivo, però dal punto di vista logico non c’è un limite. Noi possiamo prendere le espressioni logiche e usare un operatore logico per connetterle e creare una nuova espressione logica. Questa nuova espressione logica possiamo prendere di nuovo un altro operatore logico o lo stesso e aggiungere un altro operando quindi un’altra espressione logica ed avere un’espressione logica che completa. Questo è uno strumento molto potente perché permette di descrivere delle condizioni molto raffinate. Se ne vogliamo eseguire un certo passo dell’algoritmo a fronte di una condizione molto particolare lo possiamo fare utilizzando un mix necessario di questi operatori. ù Valutare se numeri X e Y sono uguali o se il numero X è diverso da un numero Z. Quindi o X e Y sono uguali oppure X è diverso da Z. È
proprio questo o, oppure dovrebbe suggerirci l’utilizzo dell’operatore logico OR. Da una parte abbiamo la prima espressione logica che c’è da verificare che sia vera in alternativa dopo verificheremo l’altra tramite l’OR. E la cosa che vorremmo verificare è che X e Y siano uguali perché questo è l’esempio valutare se due numeri X e Y sono uguali. Oppure ci va altrettanto bene se l’altra espressione, il secondo operando dell’OR è vero. Seguendo il nostro esempio questo si traduce da X è diverso da un numero Z in X operatore relazionale di negazione Z. Quindi X diverso da Z con l’OR in mezzo significa che se è vero quello che c’è a sinistra l’espressione logica operando uno oppure vera quella che c’è nell’operatore due questo include il caso in cui queste espressioni siano entrambe vere entrambe le espressioni logica diano risultato, cioè si risolvono, in un valore logico vero entrambe allora tutta l’espressione logica contenuta nell’OR è vera. Se invece entrambe le espressioni e logica/entrambi gli operandi dell’OR si risolvono in valori falso allora tutta l’espressione OR si risolve in un valore falso. ù Valutare se non si verifica che l’espressione P (è un etichetta in questo esempio per dire che è un’espressione logica di qualsiasi tipo che potrebbe essere X > Y ma potrebbe essere tutte l’espressione precedente quindi X == Y OR X!= Z, o tutte e due le precedenti messe in AND) e l’espressione Q sono vere. E quello che c’è gli interessa sapere è che ti è valutabile e una volta valutato diventa o vero o falso. Quello che ci interessa è valutare se non si verifica che l’espressione P e Q sono vere. Ovvero che l’espressione P e Q si risolvono in un risultato vero quindi costruiamo questa espressione logica andando all’inverso cioè valutare se non si verifica. Intanto scriviamo la condizione come se si verificasse ed è questa cioè noi vogliamo verificare una cosa che non si verifica. Quindi noi vogliamo vedere se non qualcosa quindi prima scriviamo qualcosa e poi ci attacchiamo il NOT operatore logico unaria che ci attacchiamo davanti e abbiamo la nostra espressione logica. Quindi la cosa che vogliamo che non si verifichi è che l’espressione P e Q siano vere. Allora P e Q le mettiamo in AND questo è esattamente quello che vogliamo che non si verifichi allora ci mettiamo il NOT d’avanti. Il NOT si esplicita o scrivendolo a parole oppure mettendo il “!” che è diverso da disuguaglianza perché non ce l’ho uguale a seguito. Il significato dall’espressione logica non cambia. Qui l’operatore NOT in questo caso è spesso con il “!” è un operatore unario perché usa un solo operando cioè applicato solo una sola espressione logica in questo caso P AND Q. Le parentesi contano perché se si tolgono sì posso mettere delle convenzioni perché magari funzionano permettono di scrivere espressioni logiche, almeno in