Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ciclo for personalizzato
Forum - C/C++ - Ciclo for personalizzato

Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 16:34
Lunedì, 04/03/2013
Vorrei creare un ciclo for personalizzato.
Mi spiego meglio. Supponiamo di avere un codice di questo tipo:

Codice sorgente - presumibilmente Plain Text

  1. for(int i=0; i<i_max; i++)
  2. {
  3.       funzione_1(i, i_max);
  4.       funzione_2(....);
  5. }



Dal momento che avrò bisogno di utilizzare molte volte cicli di questo tipo (ovvero che chiamano sempre la stessa funzione_1 ma diverse funzione_2), mi sarebbe comodo poter definire una struttura di controllo, che qui chiamerò CUSTOM_FOR, per poter riscrivere il codice precedente come:

Codice sorgente - presumibilmente Plain Text

  1. CUSTOM_FOR(int i=0; i<i_max; i++)
  2. {
  3.        funzione_2(....);
  4. }


Come si può fare? Devo usare le macro del preprocessore o c'è un altro modo?

Ultima modifica effettuata da Matthew il 04/03/2013 alle 16:35
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 18:12
Lunedì, 04/03/2013
Da quello che ho capito, non è possibile prevedere l' ordine delle chiamate alle funzioni in fase di programmazione.

Prova ad utilizzare i puntatori a funzione (http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/L ...;

PM Quote
Avatar
crybot (Member)
Pro


Messaggi: 115
Iscritto: 13/09/2011

Segnala al moderatore
Postato alle 18:12
Lunedì, 04/03/2013
potresti semplicemente definire una funzione che riceve come parametro un puntatore a funzione (funzione_2 per intenderci) all'interno della quale esegui il ciclo che richiama funzione_1 e la funzione che gli hai passato.

Edit:
sembra mi abbiano preceduto ^^

Ultima modifica effettuata da crybot il 04/03/2013 alle 18:14
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 18:33
Lunedì, 04/03/2013
I puntatori a funzione vanno bene solo se programmi in C liscio.
In C++ devi sfruttare le funzioni virtuali e una corretta gerarchia di classi per risolvere il problema.

Ma nel concreto, qual è il problema che stai cercando di risolvere?
Detta così mi sembra una soluzione buttata a caso per risolvere un problema di architettura.

PM Quote
Avatar
crybot (Member)
Pro


Messaggi: 115
Iscritto: 13/09/2011

Segnala al moderatore
Postato alle 19:06
Lunedì, 04/03/2013
Testo quotato

Postato originariamente da TheKaneB:

I puntatori a funzione vanno bene solo se programmi in C liscio.
In C++ devi sfruttare le funzioni virtuali e una corretta gerarchia di classi per risolvere il problema.

Ma nel concreto, qual è il problema che stai cercando di risolvere?
Detta così mi sembra una soluzione buttata a caso per risolvere un problema di architettura.



non so... per come l'ha descritta lui non sembrerebbe molto un problema risolvibile tramite la programmazione ad oggetti. e se le funzioni fossero soltanto procedure globali e non appartenessero a nessun contesto di classe?
penso che dovrebbe descrivere un po' meglio il problema.

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 12:59
Mercoledì, 06/03/2013
In realta' non c'e' un vero problema da risolvere, stavo semplicemente cercando un modo compatto (da un punto di vista puramente estetico e di velocita' di scrittura) per scrivere un pezzo di codice che si ripete spesso nel mio progetto.
Le soluzioni proposte sono funzionali ma non vanno nella direzione giusta. Infatti esse non porterebbero ad una semplificazione del codice, semmai al contrario.
E' per questo che pensavo ad una macro del preprocessore, il problema e' che non so se e come si possa applicare a questo esempio.

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 13:41
Mercoledì, 06/03/2013
Ricerchi un modo compatto per gestire il problema, ai individuato delle funzioni che si ripetono nel codice...
Progetta una classe!

PM Quote