Pagina 8 di 8

Re: Puntatori a Funzione[C]

Inviato: sabato 26 aprile 2014, 10:10
da matteovid
@ ixamit

naturalmente che si può fare in modo leggibile e molto migliore, volevo solo postare un esempio per Gila, se intravedeva qualcosa su come affrontare la pointer function compare della qsort in modo da superare con le operazioni di shift il problema della variabile costante come contatore dei cicli che si scambia della qsort sudetta...
la tua prova della funzione è ottima, ma se ci si pensa si può fare tutto con una linea di codice, poi che sia leggibile ho i miei dubbi, comunque la tua funzione è leggibilissima per me... ok che ho a che fare con shift e lettura bit ogni giorno...

@ Gila

nella libreria GNU, qsort_r e Link1

[OT]
Per quanto riguarda il Thererim e l'antenna con cui posizioni le mani per suonare ti metto dei link:
Link1
per il VCA
Link2

poi puoi dirmi nei MP le tue impressioni... Attenzione io negli MP non dò assistenza sulla programmazione, perchè prima di tutto non sono un programmatore esperto, conosco il C per quanto riguarda programmare a medio livello ...
Certamente negli MP si può parlare di elettronica o quello che vuoi... sarebbe un piacere :shy:
[/OT]

grazie per l'erede, tra 12/18 giorni, siamo in attesa...

Matteo

Re: Puntatori a Funzione[C]

Inviato: sabato 26 aprile 2014, 13:11
da ixamit
@Matteo
si puo' anche su una singola riga, ma senza "strafare" si puo' togliere il ternario. Credo continui ad essere leggibile:

Codice: Seleziona tutto

...
    for (pu_str[lb]=0;lb;c>>=1)
        pu_str[--lb] = (c&1)+'0';
...

Re: Puntatori a Funzione[C]

Inviato: domenica 27 aprile 2014, 10:22
da gila75
@Matteovid

Stavo provando la qsort_r, teoricamente inclusa in <stdlib.h>, ma in fase di compilazione, non viene trovata.
Facendo ricerche in rete, dice ce viene aggiunta dalla versione 2.8 di glibc e io ho la 2.15, quindi dovrebbe essere ok.
Ma non compila lo stesso.
Ho letto anche però, che molti consigliano di fare variabili globali...era in inglese e io non sono un drago, ma il senso
sembrava di chi ti dice che il gioco non vale la candela.

Ti ringrazio molto per il link, ma credo a sto punto che sarebbe meglio lasciare stare per ora.

Quello che davvero conta è che non si può passare un altro argomento a cmp, perchè si va contro il prototipo di qsort.
Forse ci siamo intesi male, ma mi sembrava di capire che ero io a non riuscirci, non che no si poteva.

Per quello che m'impuntavo per esempio a fare il puntatore a funzione di un funzione di libreria (il famoso sin).
Aggiungevo un parametro in più rispetto al prototipo e subito arrivava il warning.
Lo stesso ragionamento facevo con qsort... e infatti usciva il warning.
Poi...leggendo che invece si poteva fare, sono ammattito...ora lo so.
E spiegato tutto il giro dell'oca di sin e quant'altro :)

Re: Puntatori a Funzione[C]

Inviato: domenica 27 aprile 2014, 18:47
da gila75
Per concludere il discorso del passaggio di un terzo parametro alla funzione di cmp.

Stavo riflettendo, e credo (non vorrei spararla grossa), che su queste cose s'inizia a vedere i limiti dei linguaggi ad alto livello.
Anche se, a detta degli esperti, è quello più vicino alla macchina rispetto ad altri linguaggi. ripeto solo pari pari.

Comunque, credo che in assembler, il discorso sarebbe fattibile e "molto" più semplice no?
Basterebbe contare i salti che si fanno, o monitorare lo stcack.
Facendo un paragono un po' forzato, l'asm dei pic c'era l'istruzione CALL, e mi pare (ora non ricordo bene) si potesse monitorare lo stack.
Credo che sia un discorso analogo anche qui.
Non passi nulla in più a cmp, monitori solo lo stack.
Ho iniziato a studiare un po' il debugger (gdb), a grandi linee.
Pensavo fosse solo un piccolo tool, ma mi sa che mi sbagliavo alla grande...disassembla pure da C a ASM.
Mi sono divertito un po' a guardare il listato ASM :D Ma i tempi non sono ancora maturi.
Però resto dell'idea che se si ha voglia, tempo, pazienza andrebbe studiato prima l'asm, e poi il c.
Ti si apre un mondo a mio modo di vedere.
Comunque davvero interessante gdb.

Re: Puntatori a Funzione[C]

Inviato: lunedì 28 aprile 2014, 14:56
da matteovid
Ciao Gila

per compilare con qsort_r
devi abilitare il gcc con qsort_r(): _GNU_SOURCE, usare le convenzioni GNU, non ti consiglerei di farlo per ora...
che ti mettono sì di progredire, ma allo stato attuale non ti servono...

che il gdb sia favoloso è classico, ma bisogna scontrarsi per usarlo, per questo i prof. ci hanno dato come imperativo di usarlo ancor prima di imparare il C, in pratica loro ci hanno messo a disposizione dei listati in C con errori e dovevamo trovarli...
siccome sapevamo l'assembler dei processori Intel, era molto interressante, capire i vari passaggi...

per quanto riguarda il C, non è un linguaggio che puoi fare tutto, se si vuole interagire con l'hardware, ma mette a disposizione molto, poi con l'assembler lo completi, ma solo se vuoi interagire con l'hardware, altrimenti l'assembler serve per migliorare certi passaggi del C, o gli inevitabili colli di bottiglia....

Per la programmazione diciamo normale, e con normale intendo tutto (tranne che interfacciamento con hardware) il C è
Ottimo, non facile ma si può fare tutto... anche farsi del male delle volte, intendo che a volte il C dimostra un limite assurdo e per saltarci fuori bisogna andare di debbuger e a volte fermarsi, a pensare su un foglio bianco, farsi i vari passaggi con la matita e tak ecco la soluzione, come dice il mio Prof. usare la matita a PC spento è la migliore medicina se si vuole avere il lusso di passare con la famiglia il tempo, altrimenti solo PC e tastiera la si sfascia la famiglia...

Matteo

Re: Puntatori a Funzione[C]

Inviato: lunedì 28 aprile 2014, 21:48
da gila75
Si, per ora qsort_r(), la lascio perdere.
Importante è aver capito che non è possibile passare un terzo parametro a cmp, se non magari con giri assurdi...che vanno oltre il mio stato attuale.

Re: Puntatori a Funzione[C]

Inviato: domenica 4 maggio 2014, 14:20
da vbextreme
Importante è aver capito che non è possibile passare un terzo parametro a cmp
E secondo te perchè avrei usato una variabile globale?

Re: Puntatori a Funzione[C]

Inviato: lunedì 5 maggio 2014, 18:05
da gila75
vbextreme [url=http://forum.ubuntu-it.org/viewtopic.php?p=4576773#p4576773][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Importante è aver capito che non è possibile passare un terzo parametro a cmp
E secondo te perchè avrei usato una variabile globale?
Certo, ora ho capito.
Mi spiego: tu mi avevi consigliato di lasciar stare per il momento, e che, in fondo, le variabili globali non sono proibite in "toto".
Assimilato questo, pensavo però fosse un buon esercizio per i puntatori a funzione, inserire un parametro in più a cmp.
Ero ignaro del fatto non si potesse farlo, infatti avevo portato l'esempio di sin, aggiungendo un parametro il compilatore dava warning.
Perchè logicamente si andava contro il prototipo di sin. Stesso ragionamento avevo fatto con cmp.
Solo dopo molti tentativi ho scoperto che non si può fare.
Però, tutta sta perdita di tempo, mi ha fatto capire un po' di cose.
Se avessi saputo fin dall'inizio che era impossibile, non ci avrei tentato, ma nessuno esplicitamente me lo ha detto, o forse è sfuggito a me :)

Re: Puntatori a Funzione[C]

Inviato: martedì 6 maggio 2014, 18:21
da gila75
Ultima cosa sulla funzione di cmp di qsort.
Forse, ma non provo, non ne vale la pena, un modo per poter aggirare il problema potrebbe essere:
Passo l'array a cmp con un elemento in più , ma a qsort, ordino di comparare l'array, meno un elemento.
Questo elemento lo uso solo per incrementare i passaggi a cmp.
In questo modo non devo passare nulla a cmp, e contemporaneamente (forse) non avrei bisogno di una variabile globale.
Ripeto, è solo un'idea che mi è venuta in mente, ma non ci perdo tempo a provare...volevo solo il vostro parere.

Re: Puntatori a Funzione[C]

Inviato: mercoledì 7 maggio 2014, 8:30
da vbextreme
ottima idea gila.

Re: Puntatori a Funzione[C]

Inviato: mercoledì 7 maggio 2014, 18:44
da gila75
Dici sul serio o sei ironico? :D
Non ho provato, perchè non voglio perdere tempo, ma penso sia fattibile la cosa...diciamo che sarebbe uno stratagemma....
Magari a tempo perso e per divertimento ci proverò....vediamo.

Re: Puntatori a Funzione[C]

Inviato: mercoledì 7 maggio 2014, 19:11
da vbextreme
serio serio......bravo...

Re: Puntatori a Funzione[C]

Inviato: mercoledì 7 maggio 2014, 20:06
da gila75
Grazie :)