Costrutti fondamentali della programmazione in JS

Prerequisiti

  •  Costrutti fondamentali della programmazione strutturata.
  •   Variabili strutturate di tipo array.

Obiettivi

  • Abituarsi alla codifica di algoritmi strutturati in linguaggio JavaScript.

Competenze da acquisire

  •  Conoscere la sintassi dei vari costrutti di selezione e iterazione.
  •  Conoscere la differenza fra tecnica di programmazione con uso intensivo di variabili globali e tecnica con uso intensivo di passaggio di parametri.
  • Conoscere come dichiarare e accedere agli elementi degli array.
  • Saper impostare i costrutti di selezione e iterazione.
  • Saper impostare programmi con il minor uso possibile di variabili globali.
  • Saper utilizzare le variabili array per risolvere esercizi.


Le istruzioni che controllano il flusso di elaborazione del codice possono: 

  • Eseguire decisioni condizionate.
  • Realizzare iterazioni.
  • Interrompere l’esecuzione dei blocchi di istruzioni.
  • Richiamare funzioni.

 Una delle strutture di controllo più importanti è JavaScript.

JavaScript, è il linguaggio di programmazione web interpretato dai browser e già dalla prima versione dispone di tutte le istruzioni tipiche della programmazione strutturata.

Le due istruzioni rese disponibili più recenti sono:

  •  l’istruzione switch.
  •  l’istruzione do while

Istruzioni condizionali

Queste consentono di scegliere tra due o più alternative. Per fare questo usano espressioni booleane o condizionali.

Un esempio di espressione condizionale è:

(valore<10 && valore>O) 

Questa espressione è true  (vero) se il numero é compreso tra 1 e 9 ed è false (falso) per tutti gli altri numeri.

L’operatore di uguaglianza usato nelle istruzioni condizionali é “==“; mentre l’operatore di assegnamento é “=“. 

leggi l’articolo sugli operatori del linguaggio

Il costrutto if… else

L’istruzione condizionale più importante è il costrutto if…. else, la cui sintassi è:

if(EspressioneCondizionale)
    BloccolstruzioniRamoAllora
[else
    BloccolstruzioniRamoAltrimenti]

In cui:

  • Espressione Condizionale può assumere solo i valori true (veri) o false (falsi).
  •  BloccolstruzioniRamoAllora è un blocco di istruzioni che viene eseguito quando Espressione Condizionale è vera.
  • BloccolstruzioniRamoAltrimenti è un blocco di istruzioni che viene eseguito quando Espress-ione Condizionale è falsa.

Osserva l’esempio riportato qui sotto:

<html>
    <head>
          <script language = “JavaScript”>
function Max()    

 N1 = parseInt(prompt(“Inserisci il primo numero”))
  N2 = parseInt(prompt(“Inserisci il secondo numero”))
  
if(N1 > N2)
   Max = N1
else
   Max = N2
alert(“Il massimo è” + Max)
}


         </script>
  </head>
  
 <body>

 <form name = “f1”>
<input type = “button”  name = “confronta”
value =“CONFRONTA”  onClick = “Max()”>

    </form>
  </body>
</html>

Viene utilizzato l’operatore + per concatenare due stringhe:

alert("Il massimo è " + Max) 

In questo caso Max, infatti, viene convertito in stringa.

Se si vogliono controllare più condizioni in successione si può iterare l’uso di else; ti spieghiamo come.

if (EspressioneCondizionale)     
  BloccoIstruzioni
   [else if (EspressioneCondizionale)   
 Bloccolstruzioni] else Bloccolstruzioni


In questo caso viene valutata l’espressione condizionale iniziale, se risulta vera, viene eseguito il relativo Bloccolstruzioni e termina l’esecuzione.

Altrimenti, si valuta l’espressione condizionale posta accanto a ogni else if, e si continua con la valutazione dell’espressione relativa in cascata.

In questo caso si termina l’esecuzione, altrimenti si esegue il Bloccolstruzioni dell’else finale.

Leggi l’esempio per aver ben chiaro il concetto:

<html>
   <head>
     <script language = “JavaScript”>

     var X = prompt(“Inserisci il valore di X: “);
     if (X == 10)

     document.write(“Hai inserito un valore di X pari a 10”)
     else if(X == 20)

     document.write(“Hai inserito un valore di X pari a 20”)
      else if(X == 30)

      document.write(“Hai inserito un valore di X pari a 30”)
      else
document.write(“Hai inserito un valore di X diverso da 10, 20, 30”)
       
 </script>
    </head>
</html>

Il costrutto switch 

Come abbiamo visto prima, un’altra istruzione condizionale è l’istruzione switch, la cui forma sintattica è:

switch (EspressioneCondizionale)
{
case Costante: BloccoIstruzioni
           [break]
case Costante: BloccoIstruzioni
           [break]
defaultBloccoIstruzioni]
}

Dove il valore dell’espressione condizionale viene confrontato con un valore diverso costante del ramo case: quando viene trovata una corrispondenza, si esegue il blocco correlato. 

Il blocco delle istruzioni dopo la parola chiave default facoltativo e può essere eseguito solo se non è stata trovata alcuna corrispondenza con tutti i precedenti valori costanti.

L’istruzione break è facoltativa perché consente al programma di uscire dal ciclo di switch: se manca, il programma continuerà a confrontare il valore dell’espressione con il valore costante successivo.

Esempio con costrutto switch:

<html>
   <head>
     <script language = "JavaScript">
      var X = parseInt (prompt("Inserisci il valore di X:")
                 switch (X)
  {
  case 10:
  {
     document. write("Hai inserito un valore di X pari a 10")
     break
  }
      case 20:
  {
     document.write("Hai inserito un valore di X pari a 20")
     break
 }
 case 30:
  {
   document. write("Hai inserito un valore di X pari a 30")
   break
   }
       default
  document. write ("Hai inserito un valore di X diverso da 10, 20 e 30")
     }
        </script>
     </head>
</html>

Istruzioni iterative

Le istruzioni iterative permettono di ripetere una porzione di istruzione in relazione al verificarsi di una condizione.

In generale controllano se una espressione è vera o falsa, nel primo caso eseguono le istruzioni seguenti racchiuse in un blocco { }.

Il costrutto while

Il costrutto iterativo di base è il while, la cui sintassi è:

while (Espressione Condizionale)
{
  BloccoIstruzioni 
}

Esempio con costrutto while

<html>
 <head>
<title> Usiamo il while </title>
</head>
<body>
     <script>
        function Leggi( )
           {
while (I = 0; I <10; I ++;)
                {
                X = parseInt(prompt("Inserisci un numero"))
                 }
            }
       </script>
<form>
<input type = "button" name = "leggi" value = "premimi" onClick = "Leggi( )">
 </form>
 </body>
</html>

Il costrutto do…while

Se occorre eseguire il blocco di istruzioni almeno una volta, ci viene in aiuto l’istruzione iterativa: do… while, la cui sintassi è:

do
    { 
      BloccoIstruzioni 
     }
while (EspressioneCondizionale).

Viene eseguito il Bloccolstruzioni finché l’EspressioneCondizionale è vera.

Per meglio comprendere, vediamo questo esempio del costrutto do…while.

function Leggi2()
 {
    let I = 0
      do
        {
           X = parseInt(prompt(“Inserisci un numero”))
           I ++
         }
      while (I < 10)
 }

Il costrutto for

Un’altra istruzione iterativa molto usata è il costrutto for, la cui sintassi è:

for(EspressioneIniziale; EspressioneCondizionale; Passo)
   {
   BloccoIstruzioni
   }

In questo caso Espressionelniziale e Passo sono due espressioni non condizionali.

Chiariamo il funzionamento:

Si imposta l’Espressionelniziale e si controlla l’EspressioneCondizionale.
Se quest’ultima è vera, viene eseguito il blocco di istruzioni.
Ogni ciclo si esegue il Passo e si verifica nuovamente l’EspressioneCondizionale. Quando quest’ultima è falsa, l’esecuzione termina.

Ti aiutiamo a capire meglio con questo esempio.

<html>
   <head>
      <title> Leggi 10 numeri da input </title>
    </head>


 <body>
    <script>
      function Leggi()
      { 
       for(I = 0; I < 10; I ++)
       {
        X = parseInt(prompt(“Inserisci un numero”))
        }
      }
 </script>


   <form>
  <input type = “button” name = “leggi” value =  “premimi” onClick = “Leggi ()”>
  </form>
 </body>
</html>

Le istruzioni break e continue

Le istruzioni break e continue vengono utilizzate per ottimizzare cicli e istruzioni for, while e if…else.

L’istruzione break, infatti, consiste nell’interrompere un blocco di istruzioni e passare alla prima istruzione che segue il blocco contenente break.

Quindi, se l’istruzione break è incluso in un blocco di istruzioni in loop, l’effetto è interromperlo e passare il controllo alla prima istruzione dopo il ciclo.

D’altra parte, un comando continue inserito in un ciclo interromperà l’esecuzione blocco istruzioni e riprenderà l’esecuzione del ciclo all’iterazione successiva.

Entrambe queste istruzioni sono utili e sono preferite dai programmatori (esperti e no), anche se violano le rigide regole della programmazione strutturata. 

Esempio istruzione break e continue:

Calcolare il divisore più grande di un numero intero N

function MaxDivisore(N)
         {
                   let I= N-1
                   while(I>=1)
                   {
                        if (N%I == 0) break
                        I--
                    }
                       return(I)
          }




Dalla stessa categoria