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
Guida Pascal - La struttura If...Then...Else

Guida Pascal

Capitolo 5° - La struttura If...Then...Else

<< Precedente Prossimo >>
Program password;
Uses Crt;
Var parola:string[40];
begin
    clrscr;
    writeln(Immettere la password: );
    readln(parola);
    if parola=Pascal Then (*Se parola=Pascal, allora...*)
      writeln(Bravo!)
    else                    (*Altrimenti, esegui questo:*)
      begin
      TextColor(5);
      TextBackGround(15);
      writeln(Sbagliato!);
      end;
    readln
end.


Come si vede, il costrutto ifthenelse, corrisponde allitaliano sealloraaltrimenti. Serve per far eseguire al programma un 'controllo': in questo caso, il programma deve 'controllare' se la parola immessa è uguale è 'Pascal' ed in quel caso, eseguire un blocco di istruzioni.
Il costrutto If è tipico di tutti i linguaggi di programmazione ed è molto utile: è quasi impossibile trovare un programma senza almeno un If. E' la struttura di controllo per eccellenza.
In questo caso, dopo if va messa una espressione di comparazione. Le più frequenti sono:
= uguale   >= maggiore o uguale   <= minore o uguale     <> diverso.
Dopo Then viene un ciclo di istruzioni, che, se composto da una solo funzione, non necessita di un beginend (ossia la dichiarazione di un blocco di istruzioni). Prima di else, che si può anche tralasciare, non ci vuole mai il punto e virgola. Il ciclo di istruzioni dopo else ha la stessa composizione di quello che succede al Then, ma alla fine è di dovere un ;.
In questo esempio ho usato anche le istruzioni TextColor() e TextBackGround(), che servono, rispettivamente, per cambiare il colore al testo o allo sfondo del testo (5=rosso, 15=bianco).


If nidificati

Program password;
Uses Crt;
Var parola:string[40];
begin
    clrscr;
    writeln(Immettere una parola: );
    readln(parola);
    if parola<>Pascal Then
      if parola=Ciao Then
        writeln(Ciao pure a te!)
      else
        writeln(Non saluti?)
    else
      begin
      TextColor(5);
      TextBackGround(15);
      writeln(Giusto!);
      end;
    readln
end.


Piccola osservazione prima di iniziare: il numero indicato fra parentesi quadre accanto alla parola string indica che le variabili stringa dichiarate con quel tipo non possono avere più di 40 caratteri. In genere, si usa questo procedimento per restringere il numero di bytes occupati per un programma, dato una stringa normale contiene fino a 255 caratteri.
Gli if cosiddetti nidificati sono solo delle strutture if dentro alter strutture if. Una struttura iterativa non ha bisogno della dichiarazione di un blocco di istruzioni (beginend) e mantiene le stesse regole del punto e virgola. Nonostante ciò, non è assolutamente sbagliato scrivere:

if parola<>Pascal Then
  begin
  if parola=Ciao Then
    writeln(Ciao pure a te!)
  else
    writeln(Non saluti?);
  end
else
  begin
  TextColor(5);
  TextBackGround(15);
  writeln(Giusto!);
  end;


Connettivi logici

Con la struttura ifthenelse, eì possibile usare i connettivi logici e, o inclusivo e o esclusivo. Ogni condizione deve essere racchiusa tra parantesi. Se, per esempio, scriviamo:

if (a=b) and (b<c) then
  ...  (*Blocco di istruzioni numero 1*)
else
  begin
  if (a<b) or (c>a) then
    ...  (*Blocco di istruzioni numero 2*)
  if (c>a) xor (b=c) Then
    ...  (*Blocco di istruzioni numero 3*)
  end;


Il blocco di istruzioni 1 viene eseguito se e solo se a è uguale a b e  b è minore di c, ossia quando entrambe le espressioni sono vere.
Il blocco di istruzioni 2 viene eseguito se a è minore di b o c è maggiore di a, ossia quando almeno una delle espressioni è vera.
Il blocco di istruzioni 3 viene eseguito quando una e una soltanto delle espressioni è vera: se entrambe sono vere, il ciclo di istruzioni non viene eseguito.


Altri operatori e connettivi logici

Esistono altri operatori rispetto a quelli visti prima, qui ce nè un breve elenco:
not : preposto ad un valore booleano o ad unespressione, restituisce come valore il contrario dellespressione designata.

var t:boolean;
...
t:=not true; (*t=false*)
if not (a>b) then (*if (a<b)=false then*)(*if a=>b then*)
  ...
if (a>b) and not (b=c) (*if (a>b) and (b<>c) then*)


shr e shl: sono chiamati shift. Operano, cioè uno spostamento verso destra o verso sinistra di x bit (vedi appendice 1).

2 shr 1 = 4
2 shl 1 = 1
8 shl 2 = 2
<< Precedente Prossimo >>
A proposito dell'autore

C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...