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
Delphi - (Delphi7) Gli operatori relazionali
Forum - Delphi - (Delphi7) Gli operatori relazionali

Avatar
camaleonteplus (Normal User)
Pro


Messaggi: 95
Iscritto: 05/03/2009

Segnala al moderatore
Postato alle 17:24
Martedì, 27/04/2010
Codice sorgente - presumibilmente Delphi

  1. //controlla da 0 a 30
  2.   numero_da_Controllare := StrToInt(Ren.Caption);
  3.   numero := 30;
  4. if numero_da_Controllare <= numero then
  5. ALed1.Value := True;
  6. //controlla da 31 a 60
  7. numero_da_Controllare := StrToInt(Ren.Caption);
  8.   numero := 31;
  9. if numero_da_Controllare >= numero then
  10. ALed2.Value := True;
  11. //controlla da 61 a 100
  12. numero_da_Controllare := StrToInt(Ren.Caption);
  13.   numero := 61;
  14. if numero_da_Controllare > numero then
  15. ALed3.Value := True;
  16. end;



il codice qui sopra:
da 0 a 30 mi accende un led verde che si spegne al valore 31.
da 31 a 60 un led giallo che dovrebbe spegnere al valore 61 (Ma non lo fa).
da 61 in poi uno rosso.
Adesso il problema è che quello giallo che dovrebbe avere un campo tra 31 a 60 non riesco a controllarlo perché anche quando supera il valore 60 resta acceso come devo impostare l'operazione?
Spero di essermi spiegato bene.

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 18:19
Martedì, 27/04/2010
Ciao! Ho letto il tuo spezzone di progaamma.

Devo dire che è difficile contestualizzare il problema; ho i seguenti dubbi:

-> Il codice fa parte di una procedura di controllo? Se si postala per intero.

-> Quando attivi il controllo?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:47
Martedì, 27/04/2010
Perchè utilizzare la variabile numero (e in quel modo) dato che puoi scrivere i valori costanti nella if senza problemi?

In pseudocodice

Codice sorgente - presumibilmente Delphi

  1. if numero_da_controllare > 60 allora
  2.    accendi ALed3
  3. else
  4.    if numero_da_controllare > 30 allora
  5.       accendi ALed2
  6.    else
  7.       accendi ALed1
  8.    end
  9. end



Però con True accendi i Led, ma quando li spegni? Se non ho capito male, devi spegnere gli altri quando ne accendi uno ... quindi

Codice sorgente - presumibilmente Delphi

  1. if numero_da_controllare > 60 allora
  2.     spegni ALed1  
  3.     spegni ALed2
  4.     accendi ALed3
  5. else
  6.    if numero_da_controllare > 30 allora
  7.       spegni ALed1  
  8.       accendi ALed2
  9.       spegni ALed3
  10.    else
  11.       accendi ALed1
  12.       spegni ALed2
  13.       spegni ALed3
  14.    end
  15. end





Ultima modifica effettuata da nessuno il 27/04/2010 alle 18:49


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
camaleonteplus (Normal User)
Pro


Messaggi: 95
Iscritto: 05/03/2009

Segnala al moderatore
Postato alle 20:16
Martedì, 27/04/2010
Codice sorgente - presumibilmente Delphi

  1. ALed1.Value := False;
  2.   ALed2.Value := False;
  3.   ALed3.Value := False;
  4.   numero_da_Controllare := StrToInt(Ren.Caption);
  5. //controlla da 0 a 30
  6. if numero_da_Controllare <= 30 then
  7.   ALed1.Value := True;
  8. //controlla da 31 a 60
  9. if numero_da_Controllare >= 31 then
  10.   ALed2.Value := True;
  11. //controlla da 61 a 100
  12. if numero_da_Controllare > 61 then
  13.   ALed2.Value := False;
  14. if numero_da_Controllare > 61 then
  15.   ALed3.Value := True;
  16. end;



ho risolto in questo modo prendendo spunto dal tuo suggerimento.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:06
Martedì, 27/04/2010
Le ultime due if sono ripetute ... ottimizza il codice ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote