ESERCITAZIONE SULL' IF - ASP/PHP
 
ESERCIZIO 1 (IF)

Costruire una breve applicazione che partendo da 5 numeri A, B, C, D, E (digitati in un form) calcola il valore minimo

Numeri: E

<form name=dati action=eser1.php/asp method=POST>
<input type=text name=A size=2 maxlength=2> A&nbsp;
<input type=text name=B size=2 maxlength=2> B&nbsp;
<input type=text name=C size=2 maxlength=2> C&nbsp;
<input type=text name=D size=2 maxlength=2> D&nbsp;
<input type=text name=E size=2 maxlength=2> E<br>
<input type=submit value="Calcola il minimo tra A, B, C, D ed E"></form>

Espandi/Nascondi Accessi Soluzione PHP Soluzione ASP
  <?php
$a=$_POST["A"];
$b=$_POST["B"];
$c=$_POST["C"];
$d=$_POST["D"];
$e=$_POST["E"];

// Algoritmo
$Minimo=$a;
if ($Minimo>$b)
   $Minimo=$b;
if ($Minimo>$c)
   $Minimo=$c;
if ($Minimo>$d)
   $Minimo=$d;
if ($Minimo>$e)
   $Minimo=$e;

// Output
echo "<H1>il minimo è: $Minimo</H1>"
?>

Una soluzione che gestisce l'assenza di alcuni valori potrebbe essere:

<?php
$NrValori=0;
$s="";
foreach ($_POST as $Parametro)
{
   if (is_numeric($Parametro))
      {
          $s=$s . ( ($s!='') ? ', ' : "") . $Parametro;
          $Valori[]=$Parametro;
          $NrValori++;
      }
}

if ($NrValori==0)
   echo "<H1>Minimo assente! Mancano valori numerici!</H1>";
else
   {
      $Minimo=$Valori[0];
      for ($i=1 ; $i< $NrValori ; $i++)
         if ($Minimo>$Valori[$i])
            $Minimo=$Valori[$i];
      echo "<H1>Il minimo tra $s è: $Minimo</h1>";
   }
?>

 

ESERCIZIO 2 (IF)

Costruire una breve applicazione che partendo da 5 numeri A, B, C, D, E (digitati in un form) determina se il valore in A risulta compreso in uno degli intervalli [B,C] oppure [D,E] ?

Numeri: E

<form name=dati action=eser2.php/asp method=POST>
<input type=text name=A size=3 maxlength=3> A&nbsp;
<input type=text name=B size=3 maxlength=3> B&nbsp;
<input type=text name=C size=3 maxlength=3> C&nbsp;
<input type=text name=D size=3 maxlength=3> D&nbsp;
<input type=text name=E size=3 maxlength=3> E<br>
<input type=submit value="A è in [B,C] oppure [D,E] ?"></form>

Espandi/Nascondi Accessi Soluzione PHP Soluzione ASP
  <?php
// Input
$Corretto=is_numeric($_POST["A"]);
$Corretto=$Corretto && is_numeric($_POST["B"]);
$Corretto=$Corretto && is_numeric($_POST["C"]);
$Corretto=$Corretto && is_numeric($_POST["D"]);
$Corretto=$Corretto && is_numeric($_POST["E"]);
if ($Corretto)
{
   $a=$_POST["A"];
   $b=$_POST["B"];
   $c=$_POST["C"];
   $d=$_POST["D"];
   $e=$_POST["E"];
}
else
   die("<H1>I dati non sono tutti numerici");

// Algoritmo
$Dentro=( ($a<=$c) && ($a>=$b) );
$Dentro=$Dentro || ( ($a<=$e) && ($a>=$d) );
$s=($Dentro ? '':'non');

// Output
echo "<H1>Il valore $a $s appartiene a [$b,$c] o [$d,$e]</H1>"
?>
 

ESERCIZIO 3 (IF)

Costruire una breve applicazione che riceve da un form due valori A e B e stabilisce se A è un multiplo di B

Numeri:

<form name=dati action=eser3.php method=GET>
<input type=text name=A size=3 maxlength=3> A&nbsp;
<input type=text name=B size=3 maxlength=3> B<br>
<input type=submit value="A è multiplo di B ?"></form>

Espandi/Nascondi Accessi Soluzione PHP Soluzione ASP
  <?php
// Input
$Corretto=is_numeric($_GET["A"]);
$Corretto=$Corretto && is_numeric($_GET["B"]);
if ($Corretto)
{
   $a=$_GET["A"];
   $b=$_GET["B"];
}
else
   die("<H1>I dati non sono tutti numerici</H1>");

// Algoritmo
$Risposta=(($a % $b)==0) ? 'è' : 'non è';

// Output
echo "<H1>Il valore $a $Risposta multiplo di $b</H1>"
?>
 

ESERCIZIO 4 (IF)

Costruire una breve applicazione che legge da un form 5 valori A, B, C, D, E e li visualizzi ordinati in modo crescente

Numeri: E

<form name=dati action=eser4.php/asp method=POST>
<input type=text name=A size=2 maxlength=2> A&nbsp;
<input type=text name=B size=2 maxlength=2> B&nbsp;
<input type=text name=C size=2 maxlength=2> C&nbsp;
<input type=text name=D size=2 maxlength=2> D&nbsp;
<input type=text name=E size=2 maxlength=2> E<br>
<input type=submit value="Ordina A,B,C,D,E in modo crescente ?"></form>

ESERCIZIO 5 (IF)

Costruire una breve applicazione che legge da un form un carattere A e stabilisce se si tratta di un numero, una lettera maiuscola, una lettera minuscola o altro.

Carattere:

<form name=dati action=eser5.php/asp method=POST>
<input type=text name=A size=1 maxlength=1> A<br>
<input type=submit value="A è una lettera minuscola/maiuscola/numerica/altro ?"></form>
 
Espandi/Nascondi Accessi Soluzione PHP Soluzione ASP
  <?php
// Input
$lettera=$_POST["A"];

// Output
if ($lettera=="")
   echo "Non hai scritto alcuna lettera!";
elseif ($lettera<="Z" && $lettera>="A")
   echo "<B><I>$lettera</B></I> è una lettera maiuscola!";
elseif ($lettera<="z" && $lettera>="a")
   echo "<B><I>$lettera</B></I> è una lettera minuscola!";
elseif ($lettera<="9" && $lettera>="0")
   echo "<B><I>$lettera</B></I> è un numero!";
else
   echo "$lettera non è minuscola, ne maiuscola ne un numero!";
?>
 

ESERCIZIO 6 (IF)

Costruire una breve applicazione che legge da un form 3 numeri interi A, B e C e determina se A è un multiplo sia di B che di C

Numeri: C

 

<form name=dati action=eser6.php/asp method=POST>
<input type=text name=A size=4 maxlength=4> A&nbsp;
<input type=text name=B size=2 maxlength=2> B&nbsp;
<input type=text name=C size=2 maxlength=2> C<br>
<input type=submit value="A è multiplo di B ed anche di C ?"></form>
 
Espandi/Nascondi Accessi Soluzione PHP Soluzione ASP
  <?php
// Input
$Corretto=MS_IsInt($_POST["A"]);
$Corretto=$Corretto && MS_IsInt($_POST["B"]);
$Corretto=$Corretto && MS_IsInt($_POST["C"]);
if ($Corretto)
{
   $a=$_POST["A"];
   $b=$_POST["B"];
   $c=$_POST["C"];
}
else
   die("<H1>I dati non sono tutti numeri interi</H1>");

// Output
if ( ($a % $b ==0) && ($a % $c ==0) )
   echo "$a è multiplo sia di $b che di $b";
elseif ($b % $a ==0)
   echo "$a è multiplo di $b";
elseif ($c % $a ==0)
   echo "$a è multiplo di $c";
else
   echo "$a non è multiplo di $b e $c";


function MS_IsInt($x)
{
   return ( is_numeric($x ) ? intval(0+$x )==$x : false );
}
?>
 

ESERCIZIO 7 (IF)

Costruire una breve applicazione che riceve da un form 2 date A e B, controlla la correttezza delle stesse e calcola, se possibile, il numero di giorni che intercorrono tra A e B

Date: B

<form name=dati action=eser7.asp method=post>
<input type=text name=A size=10 maxlength=10> A&nbsp;
<input type=text name=B size=10 maxlength=10> B<br>
<input type=submit value="Quanti giorni intercorrono tra A e B ?"></form>
 
Espandi/Nascondi Accessi Soluzione PHP Soluzione ASP
  <?php
// Input - Inizializzazione
$Corretto=MS_Is_ItalianDate($_POST["A"]);
$Corretto=$Corretto && MS_Is_ItalianDate($_POST["B"]);
if ($Corretto)
{
   $a=$_POST["A"];
   $b=$_POST["B"];
}
else
   die("<H1>I dati devono essere delle date</H1>");

// Output
echo "<H1>La differenza è di " . MS_DateDiff($a,$b) . " giorni</H1>";

// Funzioni di supporto
function MS_Is_ItalianDate($date)
{
   if (!isset($date) || $date=="")
      return false;

   list($dd,$mm,$yy)=explode("/",$date);
   if ($dd!="" && $mm!="" && $yy!="")
      return checkdate($mm,$dd,$yy);

   return false;
}

function MS_DateDiff($data1,$data2)
{

   // trasformo la 1° data nel suo timestamp
   // ovvero il nr. di secondi dal 1/1/1970
   list($dd,$mm,$yy)=explode("/",$data1);
   $d1= mktime(0, 0, 0, $mm-1, $dd, $yy);

   // trasformo la 2° data nel suo timestamp
   list($dd,$mm,$yy)=explode("/",$data2);
   $d2= mktime(0, 0, 0, $mm-1, $dd, $yy);

   if ($d1<$d2 )
      return ($d2-$d1)/(24*60*60);
   else
      return ($d1-$d2)/(24*60*60);
}
?>
 

ESERCIZIO 8 (IF)

Costruire una breve applicazione che  dato un punto (A,B) valuta se appartiene alla circonferenza con centro (Cx,Cy) e raggio R

Numeri: Cx   Cy  R

<form name=dati action=eser8.asp method=post>
<input type=text name=A size=3 maxlength=3> A&nbsp;
<input type=text name=B size=3 maxlength=3> B&nbsp;
<input type=text name=Cx size=3 maxlength=3> C<sub>x</sub>&nbsp;
<input type=text name=Cy size=3 maxlength=3> C<sub>y</sub>&nbsp;
<input type=text name=R size=3 maxlength=3> R<br>
<input type=submit value="(A,B) è nel cerchio con centro Cx,Cy e raggio R ?"></form>

ESERCIZIO 9 (IF)

Costruire una breve applicazione che calcoli le due radici X1 e X2 di un polinomio di 2° grado (Ax2+Bx+C=0) i cui coefficienti A,B ed C sono inseriti in un form. La soluzione dovrà gestire le radici presenti nel campo reale (ovvero con (B2-4AC)>=0) e il caso A=0.

Coefficienti : C

 

<form name=dati action=eser9.asp method=post>
<input type=text name=A size=2 maxlength=2> A&nbsp;
<input type=text name=B size=2 maxlength=2> B&nbsp;
<input type=text name=C size=2 maxlength=2> C&nbsp;<br>
<input type=submit value="Calcola le due radici di Ax^2+Bx+c=0"></form>

ESERCIZIO 10 (IF)

Costruire una breve applicazione che dato un carattere A e una stringa S determini se A è presente nella stringa S

Lettera: A
Stringa:
S

<form name=dati action=eser10.asp method=post>
<input type=text name=A size=1 maxlength=1> A&nbsp;<br>
<input type=text name=S size=30 maxlength=30> S<br>
<input type=submit value="Indicare se A è presente nella stringa S"></form>

ESERCIZIO 11 (IF)

Costruire una breve applicazione che visualizzi una delle seguenti frasi:

a) "Sei Maggiorenne" ==> se l'età è maggiore o uguale a 18 anni
b) "Non Sei Maggiorenne" ==> se l'età è compresa tra 14 e 18 anni
c) "Sei Minorenne" ==> se l'età è minore o uguale a 14 anni

a seconda dell'età A inserita nel form:

Età: A

<form name=dati action=eser11.asp method=post>
<input type=text name=A size=3 maxlength=3> A&nbsp;<br>
<input type=submit value="Specifica se è minorenne, maggiorenne o altro ?"></form>

ESERCIZIO 12 (IF)

Costruire una breve applicazione che a seconda dell'operatore scelto calcoli la somma (+), differenza (-), moltiplica (*), divisione (/), resto (%) tra i numeri A e B:

operazione:

 

<form name=dati action=eser6.asp method=POST>
<select name=Operatore><option>+<option>-<option>*<option>/<option>%</select>
<input type=text name=A size=3 maxlength=3> A&nbsp;
<input type=text name=B size=3 maxlength=3> B&nbsp;<BR>
<input type=submit value="Esegui l'operazione indicata tra A e B"></form>
 
Espandi/Nascondi Accessi Soluzione PHP Soluzione ASP
  <?php
$Corretto=is_numeric($_POST["A"]);
$Corretto=$Corretto && is_numeric($_POST["B"]);
if ($Corretto)
{
   $a=$_POST["A"];
   $b=$_POST["B"];
   $Operatore=$_POST["Operatore"];
}
else
   die("<H1>I dati non sono tutti numerici");

$old_error_handler = set_error_handler("error_function");
$risultato=eval("return ($a $Operatore $b);");
// in alternativa:
//eval("\$risultato=($a $Operatore $b);");
echo $risultato;

function error_function($errno, $errstr, $errfile, $errline, $errcontext)
{
    echo "Non mi è possibile effettuare il calcolo!";
}
?>
 

ESERCIZIO 13 (IF)

Costruire una breve applicazione che a descriva il risultato finale dello scrutinio per lo studente indicato. Nella stesura della soluzione si osservi che la risposta prodotta dovrà tener conto:
1) del sesso (pertanto si dovrà visualizzare la parola promosso/promossa a seconda)
2) del fatto che uno studente con 3 debiti è bocciato
3) che uno studente senza debiti è promosso
Alcuni esempi di output potrebbero essere:
Rossi Maria è stata promossa - Verdi Paolo è stato promosso con un debito in ITA - Gialli Giacomo è stato bocciato - Neri Chiara è stata promossa con debito in ITA ed INFO

Nominativo:  
Debiti:   ITA MATE FILO INFO
Sesso:Maschio Femmina

 

<form name=dati action=eser13.php/asp method=POST>
Nominativo: <input type=text name=NOMINATIVO size=30 maxlength=30> <BR>
Debiti:<INPUT TYPE=checkbox NAME=ITA VALUE=YES>ITA&nbsp;<INPUT TYPE=checkbox NAME=MATE VALUE=YES>MATE&nbsp;<INPUT TYPE=checkbox NAME=FILO VALUE=YES>FILO&nbsp;<INPUT TYPE=checkbox NAME=INFO VALUE=YES>INFO<BR>
<input type=radio name=Sesso Value=M CHECKED> Maschio&nbsp;
<input type=radio name=Sesso Value=F> Femmina<BR>
<input type=submit value="Esito scrutinio"></form>
 
Espandi/Nascondi Accessi Soluzione PHP Soluzione ASP
  <?php
if (trim($_POST["NOMINATIVO"])=="")
   die("<H1>Scrivi il nome dello studente modello</H1>");
else
   $Nominativo=$_POST["NOMINATIVO"];

$Sesso=$_POST["Sesso"];
$f=( ($Sesso=="M") ? "o" : "a");
$testo="";
$nr=0;
if($_POST["ITA"]=="YES")
{
   $nr++;
   $testo="Italiano";
}
if($_POST["INFO"]=="YES")
{
   $nr++;
   $testo=$testo . ($testo=="" ? "" : ", ") . "Informatica";
}
if($_POST["FILO"]=="YES")
{
   $nr++;
   $testo=$testo . ($testo=="" ? "" : ", ") . "Filosofia";
}
if($_POST["MATE"]=="YES")
{
   $nr++;
   $testo=$testo . ($testo=="" ? "" : ", ") . "Matematica";
}
if ($testo=="")
   $testo="stat$f promoss$f";
else
   $testo="stat$f promoss$f con debit" . ( ($nr>1) ? "i" : "o") . " in " . $testo;
if ($nr>2)
   echo "$Nominativo è stat$f bocciat$f";
else
   echo "$Nominativo è $testo";
?>
 

ESERCIZIO 14 (IF)

Costruire una breve applicazione che calcoli l'interesse maturato per un capitale C tenendo presente che il tasso varia a seconda del capitale come indicato nella tabella sottostante:

Capitale<=-1000.00 € allora interessi passivi al 20.00%
Capitale >-1000.00 € e <0.00 € allora interessi passivi al 15.00%
Capitale >= 0.00 € e < 1000.00 € allora interessi attivi al 3.25%
Capitale >= 1000.00 € e < 5000.00 € allora interessi attivi al 5.25%
Capitale >= 5000.00 € allora interessi attivi al 8.75%

Capitale: C

<form name=dati action=eser14.asp method=post>
Capitale: <input type=text name=C size=8 maxlength=8> C&nbsp;<br>
<input type=submit value="Calcola l'interesse ?"></form>