Fondamenti di informatica + Javascript

CC-BY-NC-SA

Gabriele Ferri

Lezione 1: 16 Settembre

Algoritmo: procedura rigorosa di passi per risolvere un problema.

Strutture dei dati: dati organizzati, cioè indicizzati. Strutture dati più utilizzate: pila, coda, albero.

+ **Pila**: *last in, first out* (LIFO). L'ultimo a entrare è il primo ad uscire.
+ **Coda**: *first in, first out*.
+ **Albero**: dati gerarchizzati.

Lezione 2: 17 Settembre

Si è sentita male e la lezione è saltata

Quando è l’appello dell’esame di novembre? In che forma è l’esame?

Lezione 6: venerdì 27 Settembre (recupero mercoledì 18 settembre) - Logica

Parliamo di logica proposizionale, “cioè di espressioni che hanno valore vero o falso”.

Def. proposizione: una proposizione è un sintagma che può essere vero o falso, cioè a cui possiamo dare un valore di verità.

Le proposizioni possono essere composte utilizzando congiunzione, negazione, disgiunzione.

I connettivi (o operatori) e, oppure, se…allora, non possono essere descritti semanticamente, cioè essere descritti come funzioni di verità dei loro componenti.

Simboli dei connettivi in javascript

espressione     conn. logico    javascript 
"e"             ^               &, &&      
"oppure"        v               I, II      
"se...allora"   $\rightarrow$              
"~"             -               !          

Priorità nella logica proposizionale

es. A OR B OR C AND D

Procedo da sinistra a destra perché hanno tutti la stessa priorità.

Come 1 + 2 + 3 - 4 = 2. + e - hanno stessa priorità.

1 + 2 * 3 = 7 (* ha priorità su +) (1 + 2) * 3 = 9 (in questo modo do la priorità alla parentesi)

NOT A OR B: prima applichiamo il NOT e poi al risultato di NOT applichiamo OR con B

Se ci fosse scritto NOT(A OR B) allora si applicherebbe l’OR.

Calcoliamo NOT A OR B

A     B       (NOT A)    (NOT A) OR B
f     f       t          t
f     t       t          t
t     f       f          f
t     t       f          t

Calcoliamo A B

A     B  | A $\rightarrow$ B
f     f           t
f     t           t
t     f           f
t     t           t

Le due tavole di verità, quella di NOT (A OR B), e quella dell’implicazione, si equivalgono. Per questo, diciamo che L’implicazione è un connettivo derivato. Il connettivo ‘implicazione’, non è presente in Javascript, ma noi all’occorrenza possiamo esprimerlo come NOT A OR B

Esercizi (utilizzando la notazione dei connettivi javascript)

  1. !(true || false) -> false

  2. !true && !false -> false

  3. !(5 >= 2 || 3 > 5) -> false

  4. !(3 == 2 + 1) -> false

  5. !(3 > 5) || 1 > 6 -> true

  6. Calcoliamo con una tavola di verità l’espressione $!(!A && !B)$

    A B !A !B !A && !B $!(!A && !B)$ f f t t t f f t t f f t t f f t f t t t f f f t

L’espressione al punto 6 prende il nome di Legge di De Morgan

$!(!A && !B)$ = A && B Legge di De Morgan (per la congiunzione)

  1. Calcoliamo con una tavola di verità l’espressione !(!A||!B)

    A B !A !B !A || !B !(!A || !B) f f t t t f f t t f t f t f f t t f t t f f f t

Frontend

Il frontend di un sito web ha 3 componenti:

  1. HTML
  2. CSS
  3. Javascript