Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ciclo while o for?

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

1
voti

[11] Re: Ciclo while o for?

Messaggioda Foto UtenteTardoFreak » 2 ott 2016, 12:40

Parlando di micro ho fatto un po' di verifiche. avr gcc ed il compilatore keil supportano C99, mentre i compilatori per i PIC (XC8,XC16 e XC32) no, o solo in parte.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

6
voti

[12] Re: Ciclo while o for?

Messaggioda Foto UtenteDirtyDeeds » 2 ott 2016, 13:05

Wikipedia ha una pagina che riporta i compilatori con supporto C99, ma non dice nulla su quelli per micro. GCC e CLang hanno anche un esteso supporto per il C11 (GCC C11 Status).

Devo dire che tra le features che ho trovato più utili del C99 e del C11 ci sono i designated initializers che permettono di inizializzare struct, union e array con i nomi dei campi e senza ricordarsi l'ordine, p.es.

Codice: Seleziona tutto
typedef struct {
   unsigned int nvServer;
   int channels;
   double clkFrequency;
   unsigned int samples;
   int activeChannel;
   ChannelSettings channelSettings[CHANNELS_MAX];   
} SourceSettings;

static const SourceSettings sourceSettingsDefaults = {
   .nvServer = 1,
   .channels = DADSS_CHANNELS,
   .clkFrequency = 20.0,
   .samples = 500,
   .activeChannel = 0,
};


Poi anche il supporto per i numeri complessi, e i compound literals.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

1
voti

[13] Re: Ciclo while o for?

Messaggioda Foto UtenteMax2433BO » 2 ott 2016, 15:19

... il solito esagerato!!!

In fin dei conti io chiedevo solo un'umile informazione... (:OOO:)

O_/ Max
Disapprovo quello che dite, ma difenderò fino alla morte il vostro diritto di dirlo [attribuita a Voltaire]

La gentilezza dovrebbe diventare lo stile naturale della vita, non l'eccezione [Siddhārtha Gautama]
Avatar utente
Foto UtenteMax2433BO
18,6k 4 11 13
G.Master EY
G.Master EY
 
Messaggi: 4724
Iscritto il: 25 set 2013, 16:29
Località: Universo - Via Lattea - Sistema Solare - Terzo pianeta...

1
voti

[14] Re: Ciclo while o for?

Messaggioda Foto UtenteTardoFreak » 2 ott 2016, 19:59

Codice: Seleziona tutto
int i = 0;
for(;;) {
  if (i >= 10) break;
  // Place your code here
}


e di questo? :mrgreen:
Codice: Seleziona tutto
for(;;) {
  if (isSegnaleAttivo() != true) break;
  // Place your code here
}
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[15] Re: Ciclo while o for?

Messaggioda Foto UtenteMassimoB » 2 ott 2016, 22:44

Mi trovo d'accordo con Foto UtenteTardoFreak
E' sempre possibile trasformare un ciclo for in un ciclo while e con i dovuti accorgimenti anche in un ciclo if,do,while.
MCSA Windows Server 2012 R2
Cisco CCNA R&S - Cisco CCNA Security - Cisco CCNA Cyber Ops
CompTia A+ - CompTia Linux+ - CompTIA Systems Support Specialist CSSS
CompTia Pentest+ LPIC-1 - VCP VMware - Cisco CCNP Enterprise
Avatar utente
Foto UtenteMassimoB
14,2k 6 12 13
Expert free
 
Messaggi: 3163
Iscritto il: 28 ott 2012, 9:56
Località: Milano

0
voti

[16] Re: Ciclo while o for?

Messaggioda Foto UtenteWALTERmwp » 2 ott 2016, 22:54

(...) nella struttura WHILE il domino della situazione è il processo, non la programmazione (...) spero di essere stato chiaro nella mia esposizione, mi interessa molto confrontarmi su questi argomenti
credo di avere compreso ma, se la priorità (come immagino debba essere) viene attribuita al processo, questo presupposto dirime la questione forse sino a fare perdere rilevanza al tipo di costrutto.

Allora diventa fondamentale la conoscenza del tempo che quel loop richiede, senza appunto uscire dallo stesso, partendo dalla condizione iniziale per soddisfare quella finale.
Se, nell'insieme della gestione del processo/impianto, questo tempo è tollerabile, non c'è problema.

Ad esempio, immagino, va bene se devo riempire una tabella di valori (magari azzerarli): ho il processore "concentrato" su quello per enne nanosecondi, e mi può andare bene perché so quanto ci impiega, tempo sottratto a tutto il resto.

Se invece, enfatizzando, si tratta di aggiornare(modificare) un valore impiegato in un processo di regolazione e tale azione deve essere ripetuta sino al raggiungimento dell'obiettivo, per quanto l'esecuzione la possa considerare rapida, forse, non posso azzardare l'impiego di un costrutto del genere.

Sia nel caso della tabella che in questo della regolazione ipotizzo sia sempre un solo processore ad occuparsene

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

2
voti

[17] Re: Ciclo while o for?

Messaggioda Foto Utentepaofanello » 2 ott 2016, 23:06

Nel costrutto for esistono tre diversi "comandi":
-il primo viene eseguito all'inizio del costrutto
-il secondo viene verificato ad ogni iterazione
-il terzo viene eseguito ad ogni iterazione
poi che questi tre comandi vengano utilizzati per fare un contatore è una scelta buona e sana, ma non significa che non ci siano alternative...
Ad esempio:
Codice: Seleziona tutto
for( Accendi il led;  ; Inverti il led){
delay(tempo);
}

Un ciclo senza condizione di uscita che fa lampeggiare un led secondo la costante tempo.
La cosa bella (e che forse rende questa soluzione poco "leggibile") è che i "parametri" del for in questo caso non hanno nulla a che vedere con il numero delle iterazioni
Piuttosto che chiedere qualcosa a me, chiedila a Mara Maionchi. E' più competente.
Avatar utente
Foto Utentepaofanello
2.280 8 13
Expert
Expert
 
Messaggi: 532
Iscritto il: 7 lug 2015, 21:01

0
voti

[18] Re: Ciclo while o for?

Messaggioda Foto UtenteCarloCoriolano » 2 ott 2016, 23:38

Più che altro il buon senso sta nell'impiegare gli statement per scrivere un codice leggibile. Per il resto, sapendo quel che si fa, il loop è il medesimo, indipendentemente dalla frase scritta per ottenerlo.
Avatar utente
Foto UtenteCarloCoriolano
1.446 3 4 7
---
 
Messaggi: 1023
Iscritto il: 24 mag 2016, 13:08

Precedente

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti