




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
Questa lezione fornisce una dettagliata spiegazione su come utilizzare puntatori e definire nuovi tipi in un linguaggio di programmazione. Viene illustrato come dichiarare variabili con puntatori, come ottenere la posizione di una variabile in memoria e come accedere al valore di una variabile puntata. Inoltre, viene introdotto il concetto di strutture e come definire e utilizzarle per aggregare variabili eterogenee.
Tipologia: Sintesi del corso
1 / 8
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





quattordicesima lezione: puntatori, di descrivono mettendo una * davanti al puntatore, esempio var p *int ossia variabile p che contiene un puntatore a int. Possiamo scirvere p=nil. l’operatore & seguto da una variabile mi da la posizione del puntatore in memoria di una variabile. Es: p=&x mi da la posizione di x. Quando facciamo scan(&x) gli stiamo passando un puntatore a x.
esempio: x:= p:= &x(*int) var q *int=&p q diventa 3000 che l’indirizzo di p q=nil vuol dire che il puntatore a cui punta q diventa nil creazione di un incrementazione attraverso i puntatori: func più1(p * int) { (p)++ } func main () { x:= più1(&x) // & mi dà l’indirizzo della variabile Prinltn(x) } esempio: func più1(p * int) { (p)++ } func main () { var p int p= new(int) // new prende un insieme di byte in memoria e li azzera p=5 // gli sto dicendo di mettere nell’indirizzo a cui fa riferimento p il valore 5 Println(p, p) più1(p) Printlnl(p, p) } esempio altro: func piùuno(p *int) {
Println(x) posso scrivere: type anno int var x anno var y int ma NON posso fare x=y si può anche scrivere: type anno= int // rende anno identico ad int var x anno var y int posso fare x=y nuova parola struct: rappresenta un costrutto elementare, che può aggregare variabili eterogenee var x struct { // sto dichiarando una struttura x che contiene valori che ci sono nella scatola o struttura var nome string var cognome string var eta int } x.nome = “sebastiano” // mi va a modificare nome che è presente in x anche: var x, y struct { // sto dichiarando una struttura x che contiene valori che ci sono nella scatola o struttura var nome string var cognome string var eta int } x.nome = “sebastiano” // mi va a modificare nome che è presente in x y.nome= “Giovanni” Println(x, y) Println(x.nome, y.nome) // sono due scatole differenti // non è necessario metterci tutti i valori all’interno
con x=y // tutti i campi vengono copiati esempio: type persona struct { nome string cognome string eta } func main () { var x,y persona x.nome=”Sebastiano” x.cognome= “Vigna” x.eta= 10 y.nome= “gigio” y.cognome= “Florenzo” y.eta= 20 } altro esempio: type persona struct { nome string cognome string eta int } func invecchia (p persona) { (p).eta++ // meglio scrivere p.eta++ } func main () { var x persona // vale anche scrivere: x= persona {“Sebastiano”, “Vigna”, 10} // vale anche scrivere: x= persona {nome:“Sebastiano”, cognome: “Vigna”, eta:10}
esempio con le date: type data struct { g, m, a int } func natale (anno int) data { var nat data nat= data {25, 12, anno} return nat // oppure func natale (anno int) data { p:=new(data) *p= data {25, 12, anno} return *p // secondo tipo func type data struct { g,m,a int } type nascitamorte struct { nascita, morte data } type persona struct { nome string nm nascitamorte } } func main () { var p persona p.nm.nascita.g = var anno int Scan(&anno) Println(natale(anno)) }
altro programma: type data struct { g, m, a int } func bisestile (anno int) bool { return anno %4 ==0 && anno %100 !=0 || a%100== } func giorni (data data) int { c:= for i:=1; i<data.m; i++ { switch { case 11, 4, 6, 9: c += 30 case 2: if bisestile(data.a){ c+= } else { c+= } default : c+= } } return c + data.g } func main() { data data Scan(&data.g, &data.m, &data.a) Println(giorni(data)) }