Pages: 1 [2] 3   Go Down
Author Topic: contatore  (Read 2528 times)
0 Members and 1 Guest are viewing this topic.
Italy
Offline Offline
Full Member
***
Karma: 1
Posts: 145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sì :-) tutti gli if servono per vedere se il codice si comporta bene quando dovrà fare il suo vero lavoro.

Grazie per tutti i consigli.

Ci sentiamo presto :-)
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@tuxduino:
non essere troppo fiscale dai  smiley-wink
Logged


Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@tuxduino:
non essere troppo fiscale dai  smiley-wink

Ma no, cerco solo di essere d'aiuto. Un po' per evitare agli altri le ore che ho perso io per cavolate simili, un po' perché sto leggendo Code Complete 2 e sono un tantino invasato ;-)
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

sto leggendo Code Complete 2 e sono un tantino invasato ;-)
smiley-sweat
Logged


Italy
Offline Offline
Full Member
***
Karma: 6
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@tuxduino
Quote
Infine è "semanticamente" più corretto scrivere if (digitalRead(pin) == HIGH) invece di if (digitalRead(pin)).
perchè dici che è semanticamete più corretto? forse rende il codice più leggibile ma sia sintatticamente che semanticamente a me sembra corretissimo. L'if controlla se la clausola è vera o falsa. Nel primo modo si controlla che il valore di ritorno di una funzione (che in questo caso può essere o vero o falso), sia vero. Nel secondo faccio valutare all'if direttamente il valore di ritorno della funzione. Non credo sia vero che sia più o meno corretto...a meno che non mi linkate un qualcosa tipo "regole della buona programmazione di Ritchie" o qualcosa di simile e mi smentite alla grande! Penso anche alla forma contratta dell'if con l'utilizzo dell'operatore ternario "?". E' semplicemente un altro modo di scriverlo. Che ne dite?
N.
Logged

"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Concordo. Alla fine un if è un test per verificare se una condizione è vera o falsa. Un test di uguaglianza con un valore 1 o 0 altro non è che un test di verifica se la variabile o la risorsa è vera o falsa, è a 1 o è a 0.
HIGH è una define che viene sostituita con 1. Quindi digitalRead(pin)==HIGH equivale a chiedere se digitalRead(pin)==1 che non è altro che controllare se il bit rappresentante lo stato del pin è su alto o basso, cioè 1 o 0.
E' come quando si fanno confronti con i booleani, if(boolVariabile): anche in questo caso è un confronto implicito con 1, o true che dir si voglia: if(boolVariabile == true)
Logged


Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

(C'è stato recentemente un thread nel forum in inglese in cui gente molto più preparata di me ha letteralmente "spaccato il capello in 4" (o 8, 16, ecc.))

if (boolean) è semanticamente corretto perché if si chiede se la condizione è vera o falsa. Il fatto che true e false vengano o meno risolte in 1 o 0 è irrilevante.
if (digitalRead(pin)) è semanticamente scorretto perché è come chiedersi if (int). Un interno è vero o falso ? Non ha senso. E' una domanda che evidentemente non ha senso. Mentre ha senso chiedersi se un intero vale 1 oppure no.

All'atto pratica la mia osservazione era legata solamente ad una maggiore leggiblità del codice (IMHO, ovviamente).

Mi scuso per aver sollevato questo vespaio, chiudiamola qui prima di scannarci per un nonnulla :-D
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non è vero che non ha senso. Nel C++ solo lo 0 è considerato false, tutti i numeri con valore pari ad 1 o superiore, sono considerati true.
Quindi considerare e comparare il valore di un pin, che nel digitalRead viene restituito come byte con valore 0 o 1, come 0 o 1 è corretto.
Logged


Italy
Offline Offline
Full Member
***
Karma: 6
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

we we we we..nessuno vuole scannare nessuno! smiley-eek-blue era solo per discutere, ognuno ha espresso le proprie opinioni in maniera più che civile, mi sembra. Hai detto bene tu, è un nonnulla ed argomento di scarsissima rilevanza. Capisco la posizione che hai espressso e mi sembra coerente e solida. Solo che io sono di quelli che fa fatica a perdere le abitudini (sopratutto quelle cattive smiley-evil)  e mi sa che continuerò ad usare questa forma, che, non ci crederete a me sembra anche più elegante.  smiley-grin
Logged

"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma anche da parte mia c'è solo una discussione fra amici.  smiley-wink
Solo spiego alcune mie idee e dico la mia sulle idee degli altri.

Anch'io sono per la forma contratta, difatti ad esempio io una bool la testo falsa con if(!variabile), la preferisco a if(variabile == false).
Logged


Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ehi, c'era una faccina di fianco a "scannarci" smiley
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ehi, c'era una faccina di fianco a "scannarci" smiley
Ma difatti così dev'essere. A me piace discutere e confrontare le idee.  smiley-wink
Logged


Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Anch'io sono per la forma contratta, difatti ad esempio io una bool la testo falsa con if(!variabile), la preferisco a if(variabile == false).

 smiley-eek

Forse intendevi dire che preferisci if (!variable) ?
Logged

Italy
Offline Offline
Full Member
***
Karma: 1
Posts: 145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bene bene :-) vedo che questo topic vi ha dato lo spunto per scambiare due chiacchiere :-D top

mi è venuto un piccolo dubbio... è possibile che ogni volta che premo il bottono non c'è incremento o decremento finchè non lascio e non ripremo il pulsante?

penso si altamente fattibile ma devo aggiungere una variabile stato e old_stato per ogni pulsante??

grazie
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
devo aggiungere una variabile stato e old_stato per ogni pulsante?

Certamente.
Logged

Pages: 1 [2] 3   Go Up
Jump to: