Guida Pascal
Capitolo 5° - La struttura If...Then...Else
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
C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...
|