Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Protocollo

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[71] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 12:21

daniele1996 ha scritto:Ho rivisto il codice, spero di non aver fatto di nuovo confusione... (quello che avevo postato io) la funzione modifica() servirebbe a?

Non ci siamo ancora. Ricontrolla attentamente quello che hai scritto. Se ho fatto delle modifiche avrò avuto dei buoni motivi perché continuare su quella strada? Le hai guardate almeno?
Modifica serve per poter cambiare in un secondo momento l'oggetto dopo averlo messo sulla coda. Serve per non creare copie temporanee dell'oggetto in memoria che in un micro non è mai troppa. Sai come funziona il passaggio per copia ed il passaggio per indirizzo nelle funzioni?
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

1
voti

[72] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 12:26

Foto Utentedaniele1996 io lascio. Secondo il mio parere non hai le conoscenze per affrontare una realizzazione del genere dal punto di vista software. Non ha senso continuare in questo modo perché arenarsi sulla coda delle richieste significa che manca davvero dimestichezza col C++ di base e con i concetti di strutture dati.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

-1
voti

[73] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 12:35

se ho capito bene quello che c'è scritto nel libro:

Codice: Seleziona tutto
int *a;

a //-> corrisponde all'indirizzo di memoria
*a // -> corrisponde al valore della cella puntata
&a //-> restituisce l'indirizzo di memoria


Vado dimenticando le cose... non vedo la mia ragazza da due giorni e non saprei ricostruire un identikit, pur conoscendola da piu di due anni...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[74] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 12:43

Codice: Seleziona tutto
int *a, b c;
int &d=c;


Dimmi cosa succede (sempre che sia possibile dirlo e in quel caso motivalo) ai valori delle variabili a,b,c,d con le seguenti configurazioni di codice. Non fare assunzioni sul posizionamento in memoria delle variabili dimmi solo se le istruzioni sono legali o meno e il risultato al termine di ogni blocco valutato individualmente se compilabile. Quando riuscirai a rispondere correttamente vorrà dire che i puntatori e le references ti sono chiari

Codice: Seleziona tutto
a[0]=b;
b=5;
c=7;
d=8;


Codice: Seleziona tutto
a=&c;
d=8;


Codice: Seleziona tutto
a=b;
a[1]=5;


Codice: Seleziona tutto
a=&b;
a[1]=5;


Codice: Seleziona tutto
a=&b;
a[0]=5;
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

1
voti

[75] Re: Protocollo

Messaggioda Foto UtenteWALTERmwp » 19 giu 2014, 14:47

daniele1996 ha scritto:perdonami, non pensavo fosse cosi differente il 232 e il 485
... non c'è alcun problema.
Il fatto è che se la "distanza" tra le proprie conoscenze e quelle che sono richieste o necessiterebbero per la realizzazione di un progetto (grande o piccolo che sia, ed anche questo è tutto relativo) è significativa, diventa difficile anche dare una mano (per quello che si può e si sa, beninteso).
Il fatto di non sapere, di per sé, non è un problema ma, se si inseguono concetti o parole ad effetto quando poi mancano i riferimenti a sostegno di ciò che si propone e si vuole discutere poi, diventa tutto molto dispersivo.
Se non stavi scherzando e quindi, per esempio, ti sfugge la differenza tra la "232" e la "485" forse prima, o contestualmente, ti dovresti informare e approfondire queste conoscenze per poterle "usare" con un minimo di consapevolezza.
Non mi fraintendere per favore, da parte mia non c'è la benché minima presunzione che mi porti a scrivere queste righe ma quello che ho riportato nei Post precedenti (in termini propositivi, credo) suggeriva, nell'intenzione, di "partire" con un approccio il più semplice per quanto possibile.
L'entusiasmo, mi sembra, non ti manca ma, ogni tanto, soffermati un momentino di più per valutare quello che viene discusso.
Buon studio.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[76] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 20 giu 2014, 0:46

a[0] = b;
non si puo fare perché non potrei assegnale la locazione di memoria a cui puntare.
d e c avranno lo stesso valore ( 8 )
b avrà il valore 5

------------------------------------------------------------------------------------
a avrà il valore di c, d quindi avrà 8
------------------------------------------------------------------------------------
a = b
non si puo fare perché a è una variabile puntatore e b no
a[1] = 5;
non si puo fare perché non si puo assegnare una cella di memoria
------------------------------------------------------------------------------------
a=&b;
Questo è possibile, assegno ad a la cella di memoria di b, quindi a avrà lo stesso valore di b
a[1]=5;
non si puo fare, non si puo assegnare una cella di memoria ad una variabile puntatore
------------------------------------------------------------------------------------
a=&b;
a[0]=5;
stessa cosa analoga del penultimo esempio
-----------------------------------------------------------------------------------

Ho fatto le prove con Dev-C++ non so se l'assegnazione di una cella è fattibile nell'ambito dei micro. il codice lo compila, ma quando lo eseguo si blocca, perché appunto non posso assegnare il numero di cella
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[77] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 20 giu 2014, 2:28

Non ci siamo... non affidarti al fatto che compili o meno a volte i problemi sono più infidi e si nascondono.
Ti consiglio di dare un'occhiata di nuovo alle tue risposte, dopo posto la soluzione.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[78] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 20 giu 2014, 2:39

Codice: Seleziona tutto
int *a, b c;
int &d=c;


Codice: Seleziona tutto
a[0]=b;
b=5;
c=7;
d=8;


a[0]=b non è propriamente illegale, ma non avendo mai inizializzato a vuol dire scrivi alla locazione 0 di un array con base casuale. Se il tuo scopo non è quello di mandare in crash il programma casualmente non va mai fatto. Non solo, anche b non ha un valore noto quindi si sta scrivendo chissà cosa chissà dove. Male.
Al termine del codice si ha quindi (se qualcosa non crasha prima):
a: indirizzo a qualche cella di memoria non noto
b: 5
c: 8
d: 8 (reference a c)

Codice: Seleziona tutto
a=&c;
d=8;

a: indirizzo di memoria di c
b: indefinito
c: 8
d: 8 (reference a c)

Codice: Seleziona tutto
a=b;
a[1]=5;

La prima istruzione avviene fra tipi diversi: int* e int. Non c'è cast implicito.
Non compilabile. Dire il valore delle variabili non ha senso.

Codice: Seleziona tutto
a=&b;
a[1]=5;

L'operazione a[1] è legale per quanto non accettabile se non in contesti particolarissimi (cioè nessuno che mi venga in mente al momento). In molte architetture andrà a cambiare il valore di c, portandolo a 5 e di conseguenza d. Tuttavia queste assunzioni NON VANNO MAI FATTE!

a: indirizzo di memoria di b
b: indefinito
c: quasi-indefinito
d: quasi-indefinito (reference a c)

Codice: Seleziona tutto
a=&b;
a[0]=5;

a: indirizzo di memoria di b
b: 5 (per effetto di a[0]=5 che è valido e utilizzabile!)
c: indefinito
d: indefinito (reference a c)

Non credo che ci siano errori ma nel caso segnalateli please ;-)
Foto Utentedaniele1996 questo era un set di esempi quasi elementari perché non ho volutamente affrontare i puntatori a puntatori, array multidimensionali e altre cosette che sono più rognosi. Spero che ti possa aiutare in qualche modo.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

Precedente

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti