Tips till programmeringsolympiaden

I uppgifterna till programmeringsolympiaden kan det vara smidigt att kunna läsa in värden under programmets gång istället för att göra en massa formulär. Här finns ett exempel på hur man kan göra detta då man kör php i terminalen.

För att köra programmet som i detta exempel heter ex_cli.php gör du så här:

  • Gör följande inställningar i PhpStorm: File → Settings → Tools → SSH-terminal.
    Välj rätt server under deployment server samt ställ in teckenkodning på UTF-8.
  • Tools → Start SSH-session
  • Skriv sedan i terminalen.
  • Kommandona cd mappnamn (change directory, “mappnamn” är namn på mappen du vill in i) och ls -la (list directory contents) är bra för att hitta var programmet ligger bland dina mappar på servern.
  • När du kommit till rätt mapp kör du programmet i terminalen med: php ex_cli.php
<?php
/**
 * Detta är ett litet exempel på CLI-php.
 */
// Ställa in så att man ser alla fel utom NOTICE.
error_reporting(E_ALL ^ E_NOTICE);
// Rensa skärmen.
system('clear');
// Utskrift från PHP. OBS! \n för att byta rad.
echo "Välkommen till denna testfil\n";
?>
 
    Här är inte PHP igång så detta kommer att skrivas ut ;-)
 
<?php
echo "Ange ett tal: ";
// Läsa in från tangetbordet.
$handle = fopen("php://stdin", "r");
$tal = (int) fgets($handle); // Tvingar till heltal.
 
// Exempel på en styrande sats.
if ($tal > 10) {
  echo "Du skrev in ett tal större än 10...\n\n";
}
else {
  echo "Du skrev in ett tal mindre än eller lika med 10...\n\n";
}
 
// Exempel på en loop.
$i = 0;
while ($i < $tal) {
  echo "\nNr. " . $i;
  $i++;
}
echo "\nSkriv något: ";
 
// För att läsa in en sträng. trim() tar bort radbrytning på slutet.
$str = trim(fgets($handle));
echo $str . $str . $str . "\n";  // Skriver ut strängen 3 gånger utan radbrytning emellan.