









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
Appunti parziali di programmazione, primo anno Informatica
Tipologia: Appunti
1 / 17
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!










Orario : senza pausa. Mattina: 11:00 - 12: Pomeriggio: 13:00 – 14: Le due lezioni saltate si terranno a gennaio. Si studierà il linguaggio Go, molto popolare e recente. Esame :
Un computer è un device che permette di elaborare informazioni in maniera automatica. La memoria è basata su una serie di 0 e 1.
Bit = unità fondamentale dell’informazione. Può assumere i valori 0 o 1. Byte = ottetto = ocbet = 8 bit = 2^8 bit I moltiplicatori delle unità base (byte) esistono nel S.I. e come notazione storica. Moltiplicatori nel S.I. : lavorano per multipli di 10 e sono dette misure del venditore di hard disk.
DECODE : decodifica l’istruzione da eseguire. EXECUTE : la ALU esegue l’istruzione. CICLO DELLA VITA DI UN SOFTWARE In parole:
fmt.Print(“Quante volte? ”) fmt.Scan(&n) for i = 0; i < n; i++ { fmt.Println(“Ciao”) } } Usare “go fmt” per formattare un po’ il codice e renderlo più ordinato e leggibile. Per mettere le variabili scrivere “var” seguito dalle variabili che si vogliono e dal tipo di variabile (es. int = intero). Println = stampa e va a capo Print = stampa e basta Per ripetere una cosa a ciclo ripetuto n volte si scrive: Es. for i = 0; i < n; i++{ fmt.Println(“Ciao”, i) } Che significa: parti da 0, per ogni i < n (valore di n impostato prima), ripeti il ciclo aumentando sempre i di 1 (i++). Quando il valore di i = n interrompi il ciclo. Tutti i linguaggi di programmazione moderni iniziano a contrare da 1, non da 0. I ; possiamo non metterli perché il compilatore li mette per noi. Una volta compilato il programma bisogna vedere che la semantica del programma sia corretta. Es. se voglio che una cosa sia ripetuta 3 volte devo scrivere < n. se invece scrivo <= n la cosa mi verrà ripetuta 4 volte, non 3. Il programma funziona comunque, ma il problema è che non fa quello che volevamo noi, c’è un errore di semantica. Esempio di loop infinito: for i = 0; i = i; i++ { fmt.Print(“Ciao mamma” ) } Per bloccare un programma bisogna usare Control+C Le istruzioni vengono eseguite in ordine sequenziale. Con lo Scan il processo si interrompe e aspetta che si inserisca un dato. Es.
package main import “fmt” func main () { var n, m int fmt.Print(“Primo numero? ”) fmt.Scan(&n) fmt.Print(“Secondo numero? ”) fmt.Scan(&m) fmt.Println (n*m) } Questo serve per far inserire all’utente due numeri e poi dare come risultato il prodotto dei due numeri. Sulla schermata compare l’istruzione, poi il programma si blocca e aspetta che venga inserito il dato. Una volta inserito riparte con la seconda istruzione e richiede di inserire il secondo dato. Una volta fatto il tutto compare il prodotto dei due dati inseriti.
o {}: singolarmente sono due token, ma vanno messe insieme per una regola di sintassi: ad ogni { deve corrispondere una }. o Var: dopo un var vanno scritte le variabili, seguite da un tipo (es. int = intero). È una locazione di memoria. In ogni istante ha un valore, che in principio è 0 e poi va assegnato. Non si può dichiarare due volte la stessa variabile in uno stesso blocco (cioè all’interno delle {} in cui è stata definita). Di regola una variabile va dichiarata e lasciata “attiva” per il minimo possibile di righe, questo vuol dire minimizzare la visibilità lessicale di una variabile, cioè il lexical scoping. In generale i nomi delle variabili devono essere esplicativi, ma usare nomi di variabili molto lunghi può essere scomodo, per questo la lunghezza di una variabile deve essere proporzionale alla sua visibilità lessicale, tuttavia più questa è grande più il nome deve essere lungo e significativo. Quando in un blocco più interno si dichiara una variabile che è già stata dichiarata in un blocco più esterno avviene lo shadowing (“oscuramento”) e la variabile alla quale ci si riferisce quando si usa la variabile denunciata due volte è quella scritta per ultima in quanto ha minor visibilità lessicale rispetto all’altra. Questa cosa è comunque sbagliata da fare perché sotto intende che ci si è scordati di aver già usato quella data variabile. Questi eventuali errori possono essere trovati tramite il comando “go vet”, che cerca nel programma eventuali errori non visualizzati in precedenza. Se lo si usa da solo non fa nulla, ma se lo si mette insieme a, ad esempio: “go vet -shadowstrict – shadow=true hello.go”
Per importare più cose non serve tutte le volte mettere import, ma basta scriverlo una sola volta e mettere una sotto l’altra le voci da importare tra “”. Es. import ( “fmt” “math” ) Per togliere un elemento importato, senza toglierlo davvero (cioè continuando ad avere i controlli del linguaggio) si mette davanti al pacchetto importato _ Es. _“math” var x, y, z int x = 1 y = 4 z = x + y Il := dice di prendere l’espressione messa a destra e di indovinare qual è il tipo di variabile che c’è a sinistra Es. X := 3 Il compilatore indovina che tipo di variabile è, in questo caso si tratta di una variabile int. Printf è un modo di stampare in cui, con una stringa di codice, si definisce il formato. Es. fmt.Printf(“%T\n”, x) Stampa il tipo di variabile di x, non il valore. Es. fmt.Printf(“%d\n”, x) Stampa il decimale di x. Se scriviamo, ad esempio: Es. import ( “fmt”
Istruzioni che possono alterare la locazione di memoria, nel linguaggio macchina. Sono istruzioni strutturate che dividono il programma in blocchi logici. Casi:
func main() { var x, r int if COND { … } else { … } } Es. func main() { var x int Scan (&x) if x % 2 == 0{ Println (“Pari”) } else { Println (“Dispari”) } } Es. func main() { var a, b, c, d int Scan (&a, &b, &c, &d) if da < cb{ Println (“a/b è minore di c/d”) } else { Println (“a/b è maggiore o uguale di c/d ”) } } Si può anche scrivere “else if” come condizione blocco, basta che l’ultimo “else” non ha “if”. Es. func main() { var a, b, c, d int Scan (&a, &b, &c, &d) if da < cb{ Println (“a/b è minore di c/d”) } else if da == cb { Println (“a/b è uguale a c/d ”) } else { Println (“a/b è maggiore di c/d”) } }
Scan (&x) !(a && b) == !a || !b !(a || b) == !a && !b if x < 0 || x > 2 { Println (“Compreso tra 0 e 2”) } else if x < 0 { Println (“x minore di 0 ”) } else { Println (“x maggiore di 2”) } } Es. func main() { var x int Print (“Inserisci due date di nascita:”) Scan (&a, &b) if a < b { Println (“Il primo è più vecchio”) } else if a == b { Println (“Stessa età ”) } else { Println (“Il primo è più giovane”) } } Es. import ( “fmt” “math” ) func main() { var a, b, c float Print (“Inserisci I tre coefficenti:“) Scan (&a, &b, &c) Δ := bb – 4ac if Δ > 0 { Println (“Due soluzioni reali:”) (-b + math.Sqrt(Δ))/(2a), (-b – math.Sqrt(Δ))/(2a) } else if Δ == 0 { Println (“Una soluzione reale: ”) (-b/(2a)) } else { Println (“Due coluzioni complesse”)
Es. import ( “fmt” “math” ) func main() { var n int = 5 var x int Print (“Tenta“) Scan (&x) if x == n { Println (“Azzeccato!”) } else { Print (“Tenta di nuovo“) Scan (&x) if x == n { Println (“Ci hai messo un po’, ma Ok!”) } else { Print (“Ultima speranza“) Scan (&x) if x == n { Println (“Fiuuu”) } else { Println (“Capra”) } }