Chat del 14 Dicembre 2023 dalle 17:30:09 alle 18:05:29
- Stefano SALVI
- Farlo su una riga è una bella sfida. Ci provo.
- Zakaria BOUNAFA
- grazie
- Stefano SALVI
- Fatevi più possibile pratica scrivendovi degli esempietti semplici in C, mattendoci dei valoti e stampando i risultati.
- Andrea CAMMALLERI
- può farci un esempio perfavore?
- Stefano SALVI
- Buona sera a tutti.
- Michele SGARBI
- buona sera
- Stefano SALVI
- Hai qualche dubbio da chiarirti?
- Dopo tutta la discuzzione sull\'porario, ora hanno tutti da fare?
- Michele SGARBI
- si, mi può rispiegare i numeri pseudocasuali? non ho capito bene la funzione "long time"
- non riescono a connettersi gli altri tra poco entrano
- Andrea CAMMALLERI
- buonasera prof scusi per il ritardo non riuscivo a collegarmi
- Stefano SALVI
- Sgarbi: i numeri \'pseudocasuali\' non sono veramente casuali. Considera che sia una serie lunghissima di numeri che \'sembrano \'casuali. Se però parto dal primo, la serie è sempre uguale. Per avere tutte le volte una serie diversa devo partire da un punto in mezzo, sempre diverso. Allora si usa la srand, che imposta il puinto iniziale. Si passa, come inizio caluale il tempo (il numero di secondi dal 1^ gennaio 1970 - data \'magica\', non chiedermi perché). Questo nuero di secondi veien restituito dalla funzoone \'time\'.
- Michele SGARBI
- ok, grazie prof
- Stefano SALVI
- Spero che gli altri non siano bloccati. Potrei se necessario, far ripartire la chat. Che dite?
- No, vedo che stanno arrivando. Aventi con le domande, che tanto che entra adesso le può leggere sul sito della chat anche dopo.
- (oggi sto scrivendo peggio del solito...)
- Zakaria BOUNAFA
- buongiorno prof scusi per il ritardo è che non riuscivo a collegarmi
- Andrea CAMMALLERI
- prof mi potrebbe rispiegare gli array come parametro perfavore?
- Stefano SALVI
- Cammalleri: 1) non è possibile copiare tutti gli elementi dell\'array in una variabile equivalete (in un parametro di tipo array) della funzione chiamata, perché il C non è in grado di controllare il numero di questoi elementi; 2) in alternativa si passa l\'indirizzo del primo elemento. Avendo questo e conoscendo il tipo, quindi la dimensione di ogni elemento (1, 2, 4, 8 ... byte) si piuò individuare ogni elemento successivo. Bisogna perl ricordarsi che, metre i parametri \'scalari\' (variabili semplici) vengono COPIATI (passati per valore) nei parametiri delle funzioni, per gli array la funzione conosce l\'indirizzo dell\'array originale e lo può modificare (passaggio epr riferimento).
- Cammalleri: può bastare?
- O ti interessava qualche altro aspetto.
- Andrea CAMMALLERI
- nono capito grazie mille prof
- può farci un esempio prof?
- Matteo ZANINI
- prof potrebbe rispiegarmi i puntatori perfavore?
- Stefano SALVI
- void cambiaElemento(int indice, int valore, int array[]) { valore += array[indice]; array[0] = valore; } main() { int arr[] = { 1,2,3,4,5,6 }, val = 5, idx = 3; cambiaElemento(idx, val,arr); printf("Val = %d, arr[%d] = %d\n", cal, idx, arr[idx]); }
- Tutto questo stamperà "Val 5, arr[3] = 9"
- O meglio, "Val = 5, arr[3] = 9
- Zakaria BOUNAFA
- pprof potrebbe rispiegare i puntatori per favore?
- Stefano SALVI
- Zanini: partiamo dalla scanf che li usa. Alla scanf devo passare come parametri non dei valori, ma delle posizioni (un po\' come per gli array). La posizione di una variabile la ottengo con l\'operatore \'&\'. Quindi, dato \'int i\', \'&i\' è l\' "indirizzo della variabile intera i". Come posso scrivere allora il parametro in cui deve andare a finire questo \'indirizzo di..."? Uso il modificatore \'*\' che vuole dire \'variabile che contiene l\'indirizzo di un\'altra variabile di tiipo ...". Potremmo avere allor aun parametro (ma anche una variabile, se ci serve) di tipo \'int *\' per accogliere l\'indirizoz della variabile i, qd esempio "int *ptr". A questo piunto, se vogliamo dare un valore alla i del chiamente bsta che scriviamo "*pte = valore;".
- Pazienza, ragazzi, mi avete chiesto un argomento completo e ci vuole tempo a scriverlo. Non sono un dattilografo da 300 battite al minito...
- E faccio tanto errori, ad esempio "*pte = valore" era "*ptr = valore" visto che prima l\'avevo chiamato ptr.
- È tutto chiaro, a questo punto?
- Michele SGARBI
- si, grazie prof
- Andrea CAMMALLERI
- per me tutto chiaro prof grazie mille
- Matteo ZANINI
- si prof grazie mille
- Zakaria BOUNAFA
- si grazie prof
- Stefano SALVI
- Mi pare che questi fossero gli argomenti nuovi da chiarire. Spero che abbiate fatto la pace con le esressioni matematiche e logiche ecc..
- Allora per oggi ci possiamo salutare?
- A proposito, l\'esempio (non semplice, ma meglio non mi vveniva) sugli array per parametro, è chiaro? O avete dubbi?
- Speriamo sia chiaro.
- Buona cena, buon ripoo ed in bocca a lupo.
|