Costituisce uno dei pilastri fondamentali dell’informatica ed è probabilmente uno dei primi concetti che uno studente incontra quando si approcciano a questa disciplina. Il costrutto IF-THEN-ELSE è talmente conosciuto da essere diventato d’ispirazione per il titolo di un romanzo.😊
Indipendentemente dal linguaggio di programmazione utilizzato, la possibilità di porre delle condizioni che, se verificate, eseguono una o più istruzioni o, al contrario, ne eseguono altre, amplia enormemente le possibilità del programmatore di “incanalare” il flusso nella “direzione” desiderata.
Ovviamente, anche il linguaggio SAS consente di esprimere azioni condizionate per mezzo delle istruzioni: IF, THEN, ELSE e ELSE IF.
Lo statement IF serve a gestire test condizionali da cui dipende l’esecuzione di successive istruzioni. Esistono 4 possibili tipi sintassi per l’utilizzo dell’istruzione IF.
La prima e la seconda forma gestiscono condizioni di tipo dicotomico.
1. IF condizione THEN istruzione;
Ad esempio:
if risposta = ' ' then delete;
In questo caso saranno eliminate tutte le osservazioni per le quali la variabile risposta è missing.
2. IF condizione THEN istruzione; ELSE istruzione;
Ad esempio:
if HbA1c < 6.5 then flag_diabete = '0'; else flag_diabete = '1';
In questo secondo ipotetico caso, tutte le osservazioni per le quali il valore dell’emoglobina glicata (registrata tramite la variabile denominata HbA1c) è inferiore a 6.5, avranno la variabile flag_diabete valorizzata a ‘0’. Per tutte le altre, il flag sarà valorizzato a ‘1’ ad indicare la diagnosi di diabete.
3. La terza “modalità”gestisce condizioni di tipo non dicotomico (scelta a n rami) e può essere quindi considerata come un’estensione della seconda.
IF condizione(1) THEN istruzione(1); ELSE IF condizione(2) THEN istruzione(2); ELSE IF condizione(n-1) THEN istruzione(n-1); ELSE istruzione(n);
Ad esempio:
if BMI < 16.5 then BMI_CLASS = "GRAVE MAGREZZA" ; else if BMI < 18.5 then BMI_CLASS = "SOTTOPESO" ; else if BMI < 25 then BMI_CLASS = "NORMOPESO" ; else if BMI < 30 then BMI_CLASS = "SOVRAPPESO" ; else if BMI < 40 then BMI_CLASS = "OBESITA'" ; else BMI_CLASS = "GRAVE OBESITA'" ;
Per ciascuna osservazione del dataset, SAS valuta le “condizioni IF” sull’indice di massa corporea (BMI – Body Mass Index) in ordine dalla prima all’ultima. Le dichiarazioni ELSE seguono immediatamente le istruzioni IF/THEN per specificare l’istruzione che deve essere eseguita se la condizione IF precedente non è soddisfatta. Ciò rende molto efficiente tutto il processo di valutazione delle condizioni, in quanto ciascuna di esse è valutata solo se le precedenti non sono soddisfatte. Infine, l’ultima istruzione ELSE individua una classe “residuale” che raccoglie tutte le osservazioni che non soddisfano le condizioni precedenti.
La quarta forma, infine, rappresenta una condizione di selezione delle righe del dataset (cosiddetto IF Subsetting).
4. IF condizione;
Ad esempio:
if eta < 18;
selezionerà solo le osservazioni relativa ai minorenni (per i quali la variabile eta è inferiore a 18).
Da notare che in questo caso l’istruzione IF non è seguita da alcuna istruzione THEN. Infatti, è some se l’istruzione THEN sia, in questo caso, sottintesa. Di fatto, il codice precedente è del tutto equivalente a:
if eta < 18 then OUTPUT;
….volendo, allora, potremmo riprendere la riga di codice vista nel primo esempio e riscriverla in questo modo:
if risposta <> ' ';
SAS e tutti gli altri nomi di prodotti e servizi di SAS Institute Inc. sono marchi registrati di SAS Institute Inc. negli USA e in altri paesi. ® indica la registrazione negli USA.
Un commento