Appunti della terza lezione di Fondamenti di Informatica Fabio Fassetti a.a. 2013/2014 1 Operatori Aritmetici Gli operatori aritmetici restituiscono un valore numerico e sono: + operatore di somma − operatore di differenza ∗ operatore di moltiplicazione / operatore di divisione % operatore di modulo (restituisce il resto della divisione intera) Le regole di precedenza prevedono che vengano prima eseguite le operazioni di moltiplicazione, divisione e modulo (nell’ordine in cui compaiono, procedendo da sinistra a destra) e successivamente le operazioni di somma e sottrazione (nell’ordine in cui compaiono, procedendo da sinistra a destra). 2 Operatori Relazionali Gli operatori relazionali (o di confronto) permettono di verificare determinate relazioni che intercorrono tra due termini, li mettono cioè “a confronto” e restituiscono un valore di verità, ossia vero o falso, a seconda del verificarsi o meno delle condizioni associate. Questi operatori sono: == operatore di uguaglianza, verifica se il termine a sinistra è uguale al termine a destra; ∼= operatore di disuguaglianza, verifica se il termine a sinistra è diverso dal termine a destra; < operatore di minoranza, verifica se il termine a sinistra è strettamente minore del termine a destra; <= operatore di non-maggioranza, verifica se il termine a sinistra è minore o uguale al termine a destra; > operatore di maggioranza, verifica se il termine a sinistra è strettamente maggiore del termine a destra; 1 >= operatore di uguaglianza, verifica se il termine a sinistra è maggiore o uguale al termine a destra. Ad esempio A == 3 restituisce vero se il valore associato alla variabile A è proprio il numero 3, oppure (A + 5) > (B ∗ 2) restituisce vero se sommando 5 al valore associato alla variabile A si ottiene un numero strettamente maggiore del doppio del valore associato alla variabile B. NOTA: Affinché le espressioni siano valide, è necessario che a tutte le variabili coinvolte (vedi A e B nell’ultimo esempio) sia stato precedentemente assegnato un valore. 3 Operatori logici e Algebra di Boole Le espressioni logiche si basano sull’Algebra di Boole, un’algebra che opera sui valori di verità (vero e falso). Codifica in maniera formale quello che nel linguaggio corrente esprimiamo attraverso congiunzioni e, disgiunzioni o e negazioni non. Ad esempio, si considerino le seguenti frasi. 1. Stasera vado al cinema e in pizzeria. 2. Stasera vado al cinema o in pizzeria. 3. Stasera non vado al cinema. Ad ognuna di queste frasi è possibile associare un valore di verità, ossia stabilire se chi le ha pronunciate è stato sincero (la frase è vera) oppure se ha mentito (la frase è falsa). È abbastanza evidente che il valore di verità attribuito a queste frasi è quello di seguito riportato. 1. Chi ha pronunciato la frase è sincero (cioè la frase è vera) solo se stasera va sia al cinema sia in pizzera. Chi ha pronunciato la frase mente (cioè la frase è falsa) se stasera non va in almeno un posto tra cinema e pizzeria. 2. Chi ha pronunciato la frase è sincero (cioè la frase è vera) se stasera va al cinema ed è sincero anche se stasera va in pizzeria. Domanda: è sincero se stasera va sia al cinema sia in pizzeria? Risposta: Sı̀, la “o” non è esclusiva. Chi ha pronunciato la frase mente (cioè la frase è falsa) se stasera non va né al cinema né in pizzeria. 3. Chi ha pronunciato la frase è sincero (cioè la frase è vera) se stasera non va al cinema. Chi ha pronunciato la frase mente (cioè la frase è falsa) se stasera va al cinema. 3.1 Operatori booleani L’Algebra booleana attraverso la definizione degli operatori logici AND (∧), OR (∨) e NOT (∼) permette di esprimere qualsiasi espressione logica e di valutarla, ossia di restituire il valore di verità associato all’espressione. 2 A ∧ B : Il valore dell’espressione è vero se A è vera e B è vera. Il valore dell’espressione è falso se almeno una tra A e B e falsa. A ∨ B : Il valore dell’espressione è vero se A è vera o B è vera. Il valore dell’espressione è falso se sia A che B sono false. ∼ A : Il valore dell’espressione è vero se A è falsa. Il valore dell’espressione è falso se A è vera. 3.2 Ordine di precedenza L’ordine di precedenza è ∼, ∧, ∨. 3.3 Elementi Neutri Gli elementi neutri sono vero per l’operazione AND e falso per l’operazione OR. Infatti, A ∧ vero = A e A ∨ falso = A. 3.4 Proprietà Di seguito sono elencate le diverse proprietà dell’algebra. Proprietà Commutativa: A∨B =B∨A ♦ A∧B =B∧A Proprietà Associativa: A ∨ (B ∨ C) = (A ∨ B) ∨ C ♦ A ∧ (B ∧ C) = (A ∧ B) ∧ C Proprietà Distributiva: A∧(B∨C) = (A∧B)∨(A∧C) ♦ A∨(B∧C) = (A∨B)∧(A∨C) Proprietà di Idempotenza: A∨A=A ♦ A∧A=A Proprietà di Involuzione: ∼ (∼ A) = A Leggi di De Morgan: ∼ (B ∨ C) = ∼ B ∧ ∼ C 4 ♦ ∼ (B ∧ C) = ∼ B ∨ ∼ C Operatore di Assegnamento L’assegnamento è una delle istruzioni fondamentali e consiste nell’assegnare un valore ad una variabile. Il valore assegnato ad una variabile può anche essere il risultato di un’espressione. L’assegnamento può essere rappresentato attraverso diversi simboli, noi useremo =. Si noti come questo simbolo abbia una semantica completamente diversa dal simbolo = utilizzato nelle equazioni matematiche. 3 Il termine a sinistra dell’operatore deve essere solo il nome di una variabile; il termine a destra dell’operatore deve essere un valore immediato o un’espressione valutabile, ossia il cui valore deve poter essere calcolabile. Esempi di assegnamento: X = 3 assegna il valore 3 alla variabile X; X = 3 ∗ (5 + 7) assegna il valore 36 alla variabile X; X + 1 = 3 operazione scorretta, la parte sinistra non contiene solo il nome di una variabile; X = 3 ∗ Y assegna alla variabile X il valore ottenuto moltiplicando per 3 il valore della variabile Y se questo è stato definito, altrimenti l’operazione è scorretta; X = vero assegna il valore vero alla variabile X; X = (A > 3) ∧ (B < 4) se A e B sono due variabili a cui è stato assegnato un valore numerico, assegna alla variabile X il valore vero se il valore di A è maggiore di 3 e il valore di B è minore di 4 mentre assegna ad X il valore falso se A è minore o uguale a 3 oppure B è maggiore o uguale a 4. Se A o B non sono definite, l’operazione è scorretta. X = ((A ∗ 3) > 27) se A è una variabile a cui è stato assegnato un valore numerico, assegna alla variabile X il valore vero se il valore di A moltiplicato 3 è maggiore di 27 mentre assegna ad X il valore falso se il valore di A moltiplicato 3 è minore o uguale a 27. Se A non ha un valore precedentemente definito, l’operazione è scorretta. 4