Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    14

    if..then..else e and..or

    Un saluto a tutti!

    Avrei gentilmente bisogno di 2 chiarimenti di VB...

    Il primo riguarda l'if then else...

    Se io volessi tradurre l'istruzione Pascal:

    if x=5 then
    begin
    __istruzione 1
    __istruzione 2
    __if x=3 then
    __begin
    ____istruzione a
    ____istruzione b
    ____istruzione c
    __end else
    __begin
    ____istruzione d
    ____istruzione e
    ____istruzione f
    __end
    __istruzione 3
    end else
    begin
    __istruzione 1
    __istruzione 2
    __istruzione 3
    end

    Come dovrei fare? Nella fattispecie so ovviamente come si usa l'if del VB, il mio problema è che se io voglio eseguire un certo numero di istruzioni prima di passare all'else come devo fare? Qual'è il corrispettivo (se c'è) del begin end?

    La seconda domanda invece è più breve: qual'è l'operatore tra AND e OR che ha la priorità maggiore? Tipo: 5 and 4 or 6 and 8 a cosa corrisponde tra le 2 seguenti?

    1) (5 and 4) or (6 and 8)
    2) 5 and (4 or 6) and 8

    Grazie in anticipo per l'aiuto, un saluto

    Giuseppe Matteo Amenta

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Sulla guida è spiegato tutto sull'istruzione If...Then...Else.
    Cos'è che non capisci?

    Tra l'altro il tuo esempio non mi sembra molto corretto.

    codice:
    if x=5 then    <--   se qui x=5, allora
    begin
    __istruzione 1
    __istruzione 2         
    __if x=3 then  <--   qui NON può essere x=3
    __begin
    .../..
    end
    Ciao

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: if..then..else e and..or

    Originariamente inviato da gmagma
    Qual'è il corrispettivo (se c'è) del begin end?
    Non c'e'. Viene eseguito il blocco compreso tra If ed Else o tra Else ed End If

    La seconda domanda invece è più breve: qual'è l'operatore tra AND e OR che ha la priorità maggiore?
    L'AND e OR hanno la stessa priorita'. L'espressione viene eseguita da sinistra verso destra. Le parentesi modificano la priorita'.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    14
    Caro Gibra, l'esempio è un esempio "ipotetico" non codice reale... Mi serviva solo sapere il corrispettivo del begin end...

    Oregon, quindi il correspettivo c'è, ed è lo stesso if else, e else end if... Però mi pare che così ho provato e non mi funzionava, perchè c'è un if annidato dentro il primo blocco if else... Ora riprovo, ma mi sembra non si possa fare l'if annidato... Ti faccio sapere

    Grazie per l'and e or e il discorso delle parentesi (tonde no? ), ho verificato tutto ok!!!

    Ciao

    Giuseppe

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Certo che puoi annidare le If ... ci mancherebbe ...

    Mostra quello che hai scritto e che non ti convince ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    21
    mi sembra molto strano che ti dia errore una cosa così sai?

    if a=b then
    if b=c then
    a=1;
    end if
    else
    a=2
    end if

    non è che scordavi l'end if in grassetto?
    Everything happens for a reason...

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    14
    In che senso in grassetto? E' una battuta?

  8. #8
    Intende dire il corrispettivo nel tuo codice dell'End If evidenziato da lui.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    21
    non è una battuta
    ma se non metti quell'end if lì (evidenziato in grassetto per far capire di quale end if parlo) il blocco else sottostante viene eseguito se a=b!=c invece che essere eseguito se a!=b

    codice:
    if a=b then
          if b=c then
             a=1;
          end if 
    else
          a=2
    end if
    se nn metti l'end if invece

    codice:
    if a=b then
        if b=c then
           a=1
        else
           a=2
        end if
    end if
    Everything happens for a reason...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    La seconda domanda invece è più breve: qual'è l'operatore tra AND e OR che ha la priorità maggiore?
    L'operatore And ha la precedenza rispetto all'operatore Or. Se provi a valutare l'espressione
    5 And 4 Or 6 And 10 vedrai che equivale a (5 And 4) Or (6 And 10) e dà come risultato 6.

    Se invece venisse valutata semplicemente da sinistra a destra equivarrebbe a ((5 And 4) Or 6) And 10 e darebbe come risultato 2.

    In caso di dubbio comunque, una coppia di parentesi in più non costa niente e aumenta la leggibilità.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.