martes, 8 de agosto de 2017

OPERADORES ARITMÉTICOS, LÓGICOS Y DE COMPARACIÓN

Estos son los operadores que se pueden aplicar a las variables y constantes numéricas 
 
Aritméticos
OperadorNombreEjemploDescripción
+Suma5 + 6Suma dos números
-Resta7 - 9Resta dos números
*Multiplicación6 * 3Multiplica dos números
/División4 / 8Divide dos números
%Módulo7 % 2Devuelve el resto de dividir ambos números, en este ejemplo el resultado es 1
++Suma 1$a++Suma 1 al contenido de una variable.
--Resta 1$a--Resta 1 al contenido de una variable.
 
Comparación
OperadorNombreEjemploDevuelve cierto cuando:
==Igual$a == $b$a es igual $b
!=Distinto$a != $b$a es distinto $b
<Menor que$a < $b$a es menor que $b
>Mayor que$a > $b$a es mayor que $b
<=Menor o igual$a <= $b$a es menor o igual que $b
>=Mayor o igual$a >= $b$a es mayor o igual que $b
 
Lógicos
OperadorNombreEjemploDevuelve cierto cuando:
&&Y(7>2) && (2<4)Devuelve verdadero cuando ambas condiciones son verdaderas.
andY(7>2) and (2<4)Devuelve verdadero cuando ambas condiciones son verdaderas.
||O(7>2) || (2<4)Devuelve verdadero cuando al menos una de las dos es verdadera.
orO(7>2) or (2<4)Devuelve verdadero cuando al menos una de las dos es verdadera.
!No! (7>2)Niega el valor de la expresión.
 
Ejemplo con operadores aritméticos:
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>

<body>
<?php
   $a = 8;
   $b = 3;

   echo $a + $b,"<br>";
   echo $a - $b,"<br>";

   echo $a * $b,"<br>";
   echo $a / $b,"<br>";

   $a++;
   echo $a,"<br>";

   $b--;
   echo $b,"<br>";

?>
</body>
</html> 
Salida:
11
5
24
2.66666666667
9
2
 
Ejemplo con operadores de comparación:
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>

<body>
<?php
   $a = 8;
   $b = 3;

   $c = 3;
   echo ($a == $b) && ($c > $b),"<br>";

   echo ($a == $b) || ($b == $c),"<br>";

   echo !($b <= $c),"<br>";

?>
</body>
</html> 
Salida:

1
 
Problemas de ejemplo:
Problema 1. Tomar 2 números fraccionarios (numerador y denominador) y mostrar (usando tablas) su suma, resta, división y multiplicación. No mostrar los resultados en decimales. También deberán reducir la fracción a su mínima expresión, por ejemplo 100/50 se puede reducir a 2 ó 2/1
 
function reduce_fraccion($num,$den)
{ $num=(int)$num;

 $den=(int)$den;

   for($i=2; $i<=$num && $i<=$den;)

   { 
 if($num %$i==0 && $den %$i==0 )

 { $num=$num/$i;
  $den=$den/$i;

 }
 else
 $i++; 
   } 
   $arreglo[0]=$num;

   $arreglo[1]=$den;
   return $arreglo;

}

echo "Los datos originales son: $n1/$d1 y $n2 / $d2 <br><br>";

if($d1==0 || $d2==0 || $n2==0)

{
 echo "Se está tratando de hacer una división por cero<br><br>"; 
 die("<a href=\"prob1.html\">Introducir datos otra vez</a>" );

}

$sn=$d2*$n1+$d1*$n2;

$sd=$d1*$d2;
$arreglo=reduce_fraccion($sn,$sd);

echo "La suma es: $sn / $sd = $arreglo[0]/$arreglo[1]<br><br>";
 
Problema 2. Tomar cualquier cantidad de números números y mostrar el mayor, el menor y su promedio. Sugerencia: usar un TEXTAREA para adquirir los números.
 
$nums=split("\n",$numeros);
for($i=0; $i<count($nums); $i++)

{ $nums[$i]=chop($nums[$i]);

}
$numeros=join(",",$nums);
echo "Datos originales: ".$numeros."<br>";

$suma=$min=$max=$nums[0];

for($i=1;$i<count($nums); $i++)

{ if($nums[$i]>$max)
        $max=$nums[$i];

     if($nums[$i]<$min)
            $min=$nums[$i];

     $suma+=$nums[$i];   
}
$suma=$suma/count($nums);

echo "<br>El máximo es $max <br><br>";
echo "El minimo es $min <br><br>";

echo "El promedio es $suma <br><br>"; 
 
Problema 3. Tomar un número y mostrarlo y junto con sus factores primos en una tabla. Por ejemplo: de 15, sus factores primos son: 3 y 5. De 12 son 2, 2 y 3.
 
echo "El número que me diste fue $num. <br> <br> Sus factores primos son:<br><br>";

echo "<table bgcolor=dddddd align=center>";
echo "<tr><td><font color=black> Número </td><td><font color=black>Factor</td><tr>";   

for($i=2; $i<=$num;)
{ if($num%$i==0)

   { echo "<tr><td><font color=black> $num </td><td><font color=black><b>$i</b>";

       $num=$num/$i;
       echo "</td><tr>";    
   }else

     $i++;   
}
echo "</table>";
 
Problema 4. Obtener el factorial de un número n y mostrar el proceso de obtención en una tabla
 echo "El número que me diste fue $num. <br> <br> El factorial es<br><br>";

echo "<table bgcolor=dddddd align=center>";
echo "<tr><td><font color=black> Fact(x)</td><td><font color=black>Valor</td><tr>";  

for($i=1,$prod=1; $i<=$num;$i++)

{  echo "<tr><td><font color=black>f($i)</td><td><font color=black><b>f(".($i-1).") * $i";     
 $prod*=$i;

 echo "=$prod</b>";
 echo "</td><tr>";    

}
echo "</table>";
echo "<br><br>El factorial de $num es: $prod " ; 
Problema 5. Mostrar la tabla de multiplicar de un número en una tabla
echo "El número que me diste fue $num. <br> <br> Su tabla de multiplicar es<br><br>";

echo "<table bgcolor=dddddd align=center>";

for($i=1,$prod=$num; $i<=10;$i++, $prod+=$num)

{ echo "<tr><td align=right><font color=black>$i x </td>";
 echo "    <td align=center><font color=black>$num = </td>";

 echo "    <td align=center><font color=black>$prod </td>";}
echo "</table>"; 
Problema 6. Mostrar n y el resultado de la siguiente suma: 1+2+3+...+n usando ciclos. Así como su proceso de obtención en una tabla (análogo al problema 4). Mostrar el resultado usando también la formula de Gauss
 echo "El número que me diste fue $num. <br> <br> La sumatoria es<br><br>";

echo "<table bgcolor=dddddd align=center>";
echo "<tr><td><font color=black> Suma(x)</td><td><font color=black>Valor</td><tr>";   

echo "S(0)=0<br>";
for($i=1,$prod=0; $i<=$num;$i++)

{  echo "<tr><td><font color=black>S($i)</td><td><font color=black><b>S(".($i-1).") + $i";     
 $prod+=$i;

 echo "=$prod</b>";
 echo "</td><tr>";    

}
echo "</table>";
echo "<br><br>La sumatoria de 1 + 2 + ... + $num = $prod " ;

echo "<br><br>Usando la formula de Gauss: ($num)*($num+1)/2=($num*".($num+1).")/2=".($num*($num+1)/2);
Problema 7. Hacer una función que sirva para determinar si un número es o no primo y usarla en el siguiente problema:
Pedir dos números m y n y mostrar los números que están entre dichos valores diciendo si el número es o no primo (mostrar la información en una tabla).
function primo($num)
{ for($i=2, $es=1; $i<=$num/2; $i++)

   { if($num%$i==0)
      $es=0;

   }
   return $es;
}
$num=(int)$num;

echo "Los números que me diste fueron $num1 y $num2. <br> <br> Los números primos son:<br><br>";

echo "<table bgcolor=dddddd align=center>";
echo "<tr><td><font color=black> Valor</td><td><font color=black>Tipo</td><tr>";

for($i=$num1; $i<=$num2;$i++)

{  
 if(primo($i)==1)
 { echo "<tr><td><font color=black>$i</td><td><font color=black><b>"; 
  echo "primo</b>";

  echo "</td><tr>";    
 }
 else 
 { if(strcmp($soloPrimos,"on")!=0)

  { echo "<tr><td><font color=black>$i</td><td><font color=black><b>";     
   echo "compuesto</b>";

   echo "</td><tr>";         
  } 
 }
}
echo "</table>"; 
Problema 8. Hacer una función para obtener los primeros n elementos de la serie de fibonacci, donde n es adquirido desde un formulario.
echo "El número que me diste fue $num. <br> <br> Su serie de Fibonacci es<br><br>";

echo "<table bgcolor=dddddd align=center>";
echo "<tr><td><font color=black> Fib (x)</td><td><font color=black>Valor</td><tr>";   

$val1=0;
$val2=1;
if($num>=1)

{
    echo "<tr><td><font color=black>f(0)</td>";
    echo "    <td><font color=black>0";     
    echo "    </td><tr>"; 

}
if($num>=2)
{
    echo "<tr><td><font color=black>f(1)</td>";

    echo "    <td><font color=black>1";     
    echo "    </td><tr>"; 

}

for($i=2; $i<$num;$i++)

{ echo "<tr><td><font color=black>f($i)</td>";
 echo "    <td><font color=black>f(".($i-1).") + f(".($i-2).")=".($val1+$val2);     
 echo "    </td><tr>";   
 $temp=$val1+$val2;

 $val1=$val2;
 $val2=$temp;
}

echo "</table>";
Problema 9. Tomar un número en base 10 y convertirlo a base b (considerar siempre 1<b<16). Mostrar el número y los residuos obtenidos, es decir el número en la nueva base (hay que tomar en cuenta que dichos residuos son obtenidos al reves en el proceso, deberán mostrar el resultado en el orden correcto). Mostrar también los residuos que se van obteniendo
Ejemplo: 1510 = 11112
$tnum=$num=(int)$num;
$base=(int)$base;   


echo "El número que me diste fue $num. <br> <br> Su equivalente en base $base es: <br><br>";

echo "<table bgcolor=dddddd align=center>";
echo "<tr><td><font color=black> Número </td><td><font color=black>Residuo <br>entre $base</td><tr>";   

$resultado="<sub>$base</sub>";
for( ;$num>0;)

{  $residuo=$num%$base;     
 echo "<tr><td><font color=black>$num</td><td><font color=black><b>".($residuo);

 echo " </b>";
 echo "</td><tr>";    
 $num=(int)(floor($num/$base));

 if($residuo>9)
  switch($residuo)
  { case 10: $residuo="A";

     break;
   case 11: $residuo="B";

     break;         
   case 12: $residuo="C";

     break;         
   case 13: $residuo="D";

     break;         
   case 14: $residuo="E";

     break;         
   case 15: $residuo="F";

     break;         
  }
  $resultado=$residuo.$resultado;

}
echo "</table>";
echo "<br><br> $tnum<sub>10</sub> = $resultado" ;
Problema 10. Tomar un número cualquiera (de preferencia pequeño para que converga más rápido) la siguiente serie converge a uno siempre (criterio de paro) si se siguen las siguientes reglas:
- Si el número n es par, reemplazarlo por n/2 (es decir hacer n=n/2)
- Si el número es impar, reemplazarlo por 3*n+1
Mostrar el número inicial y todos los que le siguen hasta que la serie converja a 1.
<?php
$num = $_POST['numero'];

echo "numero que me diste es $num <br>";
$num=(int)$num;

$lim=400;
echo "El número que me diste fue $num. <br> <br> La serie es <br>(configurada a un máximo de $lim elementos)<br><br>";

echo "<table bgcolor=dddddd align=center>";
echo "<tr><td><font color=black> Valor </td><td><font color=black> Siguiente <br>Valor</td><td><font color=black> Barra</td><tr>";   

$i=0;
$temp=$num;
$max=$num;

while($num!=1 && $i<$lim)   
{  if($num%2==0)

  $num=$num/2;   
 else
  $num=$num*3+1;   
 $i++;

 if($num>$max)
  $max=$num;

}
$num=$temp;
$i=0;   
while($num!=1 && $i<$lim)   

{  echo "<tr><td><font color=black>$num</td>";
 if($num%2==0)

  $num=$num/2;   
 else
  $num=$num*3+1;   
 echo "<td><font color=black> $num";

 echo "</td>";  
 echo "<td><img src=\"./img/barra.PNG\" height=10 width=".((int)($num*400/$max)).">";

 echo "</td><tr>";     
 $i++;
}

echo "</table>"; 
?>
Problema 11. Dibujar un tablero de ajedrez de N x N 
$n=5;
 for($i=1; $i<=$n; $i++)

 { echo "\n  <tr>";
    for($j=1; $j<=$n; $j++)

    { if(($i+$j)%2==0 && $i>=$j)

            echo "\n     <td bgcolor=white align=center><font color=black>$i+$j=".($j+$i)."</td>";

        else
            echo "\n     <td bgcolor=black align=center><font color=white>$i+$j=".($j+$i)."</td>";

    }
 } 
Problema 12. Calcular la serie de ex 
 function fact($num)
 {if($num>1)

   return $num*fact($num-1);
  else

   return 1;
 }
function expo($num, $nter)

 { if($nter>1)
   return potencia($num,$nter-1)/fact($nter-1)+expo($num,$nter-1);

  else
   return 1;
 }
 $n=10;

 echo fact($n)."<br>";
 for($i=1; $i<=$n; $i++)

  echo "<b>".expo(1,$i)." - $i</b> <br>";
Ejemplos muy básicos
En este ejemplo se capturan 3 números y se usan para mostrar una tabla que contiene los 3 valores con el color de fondo a partir de los 3 valores.
Archivo: ejemplo1.php
<html>
<body>
<form action="ejemplo1.php" method ="post">
        <input type="text" name ="num">: <input type="text" name ="num2">: <input type="text" name ="num3">
        <input type="submit">
</form>

<?php
 $v1=$_POST['num'];
 $v2=$_POST['num2']; 
 $v3=$_POST['num3'];
   echo "<table bgcolor=\"#$v1$v2$v3\">";
   echo "<tr><td>$v1 </td>";
   echo "</table>";
?>

</body>
</html>

Comparacion de variables:
Archivo: compara.php
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>

<body>
<?php
   $a = 8;
   $b = 3;

   $c = 3;
   if (($a == $b) && ($c > $b))
    echo "cierto","<br>";
 else
  echo "falso","<br>"; 
   if(($a == $b) || ($b == $c))
      echo "cierto","<br>";
 else
  echo "falso","<br>"; 
   if(  !($b <= $c))
      echo "cierto","<br>";
 else
  echo "falso","<br>"; 
   
?>
</body>
</html>
En este ejemplo se piden 2 valores y se realizan operaciones aritméticas básicas con ellos
<!--bas03.php-->
<html>
<body>
<form action="bas03.php" method ="post">

        <input type="text" name ="num">: <input type="text" name ="num2">: 
        <input type="submit">

</form>

<?php
 $v1=$_POST['num'];

 $v2=$_POST['num2']; 

 //muestra los valores de las variables que llegan
 echo "v1= $v1 <br>";
echo "v2= $v2 <br>";
 
 // compara las variables

 if( $v1 == $v2 )
  echo " $v1 es igual a $v2  <br>";
else
  echo " $v1 no es igual a $v2  <br>";

 // verifica el residuo
if( $v1 % $v2 == 0  )
   echo " $v2 divide exactamente a $v1  <br>";
else
   echo " $v2  no divide exactamente a $v1  <br>";

echo "la suma de $v1 + $v2 = ". ($v1 + $v2)."<br>";
echo "la diferencia de $v1 - $v2 = ". ($v1 - $v2)."<br>";
echo "la multiplicación de $v1 * $v2 = ". ($v1 * $v2)."<br>";
echo "la division de $v1 / $v2 = ". ($v1 / $v2)."<br>";

 
?>

</body>
</html>

Una mejora al ejemplo anterior.
  • Se muestran en la forma el número que se introdujo o llegó para cada variable .
  • Se valida la división por cero.
<!--bas04.php -->
<html>
<body>
<form action="bas04.php" method ="post">

        <input type="text" name ="num" value=<?php  echo $_POST['num']; ?>>: <input type="text" name ="num2" value=<?php  echo $_POST['num2']; ?>>

        <input type="submit">
</form>

<?php
 $v1=$_POST['num'];

 $v2=$_POST['num2']; 

 //muestra los valores de las variables que llegan
 echo "v1= $v1 <br>";

 echo "v2= $v2 <br>";
 
 // compara las variables

 if( $v1 == $v2 )
  echo " $v1 es igual a $v2  <br>";

 else
  echo " $v1 no es igual a $v2  <br>";

 // verifica el residuo
if( $v1 % $v2 == 0  )

  echo " $v2 divide exactamente a $v1 <br>";
 else

  echo " $v2  no divide exactamente a $v1  <br>";
 
 echo "la suma de $v1 + $v2 = ". ($v1 + $v2)."<br>";

 echo "la diferencia de $v1 - $v2 = ". ($v1 - $v2)."<br>";

 echo "la multiplicación de $v1 * $v2 = ". ($v1 * $v2)."<br>";

 if($v2 !=0)
  echo "la division de $v1 / $v2 = ". ($v1 / $v2)."<br>";

 else
  echo "la division de $v1 / $v2  no puede efectuarse, por que da división por cero <br>";

 
?>

</body>
</html>

Cálculo de la siguiente suma ax2 + bx + c
<!--bas05.php -->
<html>
<body>
<form action="bas05.php" method ="post">

        a= <input type="text" name ="a" value=<?php  echo $_POST['a']; ?>> <br>

   b= <input type="text" name ="b" value=<?php  echo $_POST['b']; ?>> <br>

  c= <input type="text" name ="c" value=<?php  echo $_POST['c']; ?>> <br>

  x= <input type="text" name ="x" value=<?php  echo $_POST['x']; ?>> <br>  
        <input type="submit">

</form>

<?php
 $a= $_POST['a'];

 $b= $_POST['b'];
 $c= $_POST['c'];

 $x= $_POST['x'];

 echo " a= $a <br>";

 echo " b= $b <br>";
 echo " c= $c <br>";

 echo " x= $x <br>";

 $s1= $a*$x*$x;

 echo "El producto de  ax<sup>2</sup> es = $a * $x * $x = ".$s1. "<br>";

 $s2= $b*$x;
 echo "El producto de  bx es = $b * $x  = ".$s2."<br>";

 $s3= $c;
 echo "y c= $c  = ".$s3."<br>";

 
 $suma= $s1 + $s2+ $s3;

 echo " <br> Por lo tanto $s1 + $s2 + $s3 = $suma <br> ";

?>

</body>
</html>
una mejora al programa anterior:
  • Se introduce al inicio la instrucción empty() que permite saber si una variable tiene datos.
  • Los datos son mostrados en una tabla
  • Se insertan saltos de línea al archivo de salida para que el codigo HTML generado sea leíble más fácilmente
<!--bas06.php -->
<html>
<body>
<form action="bas06.php" method ="post">

<?php 
 //se asignan valores iniciales
 if(empty($_POST['a']) || empty($_POST['c']) || empty($_POST['c']) || empty($_POST['x']) )

 { $_POST['a']=2;
  $_POST['b']=2;

  $_POST['c']=2;
  $_POST['x']=1;

 }
?>

        a= <input type="text" name ="a" value=<?php  echo $_POST['a']; ?>> <br>

   b= <input type="text" name ="b" value=<?php  echo $_POST['b']; ?>> <br>

  c= <input type="text" name ="c" value=<?php  echo $_POST['c']; ?>> <br>

  x= <input type="text" name ="x" value=<?php  echo $_POST['x']; ?>> <br>  
        <input type="submit">

</form>

<table align="center" border="1">

<?php
 $a= $_POST['a'];

 $b= $_POST['b'];
 $c= $_POST['c'];

 $x= $_POST['x'];

 echo "\n  <tr><td> a= </td><td>$a </td>";

 echo "\n  <tr><td> b= </td><td>$b </td>";

 echo "\n  <tr><td> c= </td><td>$c </td>";

 echo "\n  <tr><td> x= </td><td>$x </td>";

 $s1= $a*$x*$x;
 echo "\n  <tr><td>El producto de  ax<sup>2</sup> es  $a * $x * $x = </td><td> ".$s1;

 $s2= $b*$x;
 echo "\n  <tr><td>El producto de  bx es = $b * $x  =</td><td> ".$s2;

 $s3= $c;
 echo "\n  <tr><td>c= </td><td> ".$s3;

 
 $suma= $s1 + $s2+ $s3;

 echo "\n  <tr><td>Por lo tanto $s1 + $s2 + $s3 = </td><td>$suma <br> ";

?>
</table>
</body>
</html>
Este ejemplo pide en un textarea un conjunto de datos separados por retornos de carro y los muestra en pantalla
<!--bas08.php -->
<html>
<body>
<form action="bas08.php" method ="post">

<?php 
 //se asignan valores iniciales
 if(empty($_POST['datos']) )

 { $_POST['datos']="2\n25\n32\n12\n5";

 }
?>
        <textarea name="datos" rows="10" cols="10"><?php  echo $_POST['datos']; ?></textarea><br>

        <input type="submit">
</form>

<table align="center" border="1">

<?php
 $datos= $_POST['datos'];

 //se reemplazan los saltos de línea por espacios en blanco
 $cadena= str_replace("\n", " ", $datos);

 $cadena= str_replace("  ", " ", $cadena);

 //genera un arreglo a partir de una cadena, donde el separador son los espacios en blanco
 $arreglo = split(' ', $cadena);

 
 for($i=0; $i<count($arreglo); $i++)

  echo "num $i= ".$arreglo[$i]. "<br>" ;

?>
</table>
</body>
</html>

No hay comentarios:

Publicar un comentario