User Tools

Site Tools


inputs_param

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
inputs_param [2017/07/04 14:32] gginputs_param [2017/07/05 11:03] (current) gg
Line 374: Line 374:
 perl input.pl Werner 30 perl input.pl Werner 30
 </code> </code>
 +
 +==== PHP ====
 +=== Code ===
 +<code php>
 +<?php
 +
 +function checkName($name) {
 +  // Die Länge des Namens prüfen
 +  if(strlen($name) == 0) {
 +    return false;
 +  }
 +
 +  // prüfen, ob der erste Buchstabe eine Grossbuchstabe ist
 +  if($name[0] < 'A' || $name[0] > 'Z') {
 +    return false;
 +  }
 +  // Sind alle anderen Buchstaben Kleinbuchstaben?
 +  for($i = 1; $i < strlen($name); $i++) {
 +    if($name[$i] < 'a' || $name[$i] > 'z') {
 +      return false;
 +    }
 +  }
 +
 +  // Alle Bedingungen sind erfüllt
 +  return true;
 +}
 +
 +function checkAge($age) {
 +  // Die Länge des Alters prüfen
 +  if(strlen($age) == 0 || strlen($age) > 2) {
 +    return false;
 +  }
 +
 +  // prüfen, ob das Alter mit 1-9 beginnt
 +  if($age[0] < '1' || $age[0] > '9') {
 +    return false;
 +  }
 +  // prüfen, ob die zweite Zahl (falls vorhanden) zwischen 0 und 9 ist 
 +  if(strlen($age) == 2) {
 +    if($age[1] < '0' || $age[1] > '9') { 
 +      return false;
 +    }
 +  }
 +
 +  // Alle Bedingungen sind erfüllt
 +  return true;
 +}
 +
 +// prüfen, ob die Anzahl der Parameter stimmt
 +if(sizeof($argv) != 3) {
 +  echo "Usage: $argv[0] [Name] [Alter]\n";
 +  exit;
 +}
 +
 +// sprechendere Namen verwenden
 +$name = $argv[1];
 +$age  = $argv[2];
 +
 +// die beiden Variablen prüfen
 +if(!checkName($name)) {
 +  echo "Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Buchstaben enthalten\n";
 +  exit;
 +}
 +if(!checkAge($age)) {
 +  echo "Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein\n";
 +  exit;
 +}
 +
 +echo "Dein Name ist $name und du bist $age Jahre alt\n";
 +</code>
 +
 +=== Ausführen ===
 +Die Datei input.php mit obigen Code befüllen und auf folgendem Weg ausführen.
 +<code bash>
 +php input.php Werner 30
 +</code>
 +
 +==== Python ====
 +Python bietet mit **OptParse** oder **ArgParse** ziemlich gute Module für Programmparameter an. Hier soll aber gezeigt werden, wie es mit Bordmitteln funktioniert.
 +=== Code ===
 +<code python>
 +import sys
 +
 +# Funktion definieren
 +def checkName(name):
 +  # ist die Länge korrekt
 +  if len(name) == 0:
 +    return False
 +
 +  firstCharacter = True
 +  for c in name:
 +    if firstCharacter:
 +      # ist das erste Zeichen ein Grossbuchstabe?
 +      if c < 'A' or c > 'Z':
 +        return False
 +      firstCharacter = False
 +    else:
 +      # sind alle anderen Zeichen Kleinbuchstaben?
 +      if c < 'a' or c > 'z':
 +        return False
 +
 +  # Alle Bedingungen sind erfüllt
 +  return True
 +
 +def checkAge(age):
 +  # ist die Länge korrekt?
 +  if len(age) <= 0 or len(age) > 2:
 +    return False
 +
 +  # Fängt das erste Zeichen zwischen 1 und 9 an?
 +  if age[0] < '1' or age[0] > '9':
 +    return False
 +
 +  # Ist das zweite Zeichen (falls vorhanden) zwischen 0 und 9?
 +  if len(age) == 2:
 +    if age[1] < '0' or age[1] > '9':
 +      return False
 +
 +  # Alle Bedingungen sind erfüllt
 +  return True
 +
 +# Die Anzahl der Parameter prüfen
 +if len(sys.argv) != 3:
 +  print("Usage: "+sys.argv[0]+" [Name] [Alter]")
 +  sys.exit(1)
 +
 +# sprechendere Namen verwenden
 +name = sys.argv[1]
 +age  = sys.argv[2]
 +
 +# Die Parameter prüfen
 +if not checkName(name):
 +  print("Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Buchstaben enthalten")
 +  sys.exit()
 +if not checkAge(age):
 +  print("Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein")
 +  sys.exit()
 +
 +# Ausgabe
 +print("Dein Name ist "+name+" und du bist "+age+" Jahre alt")
 +</code>
 +=== Ausführen ===
 +Die Datei input.py mit obigen Quelltext füllen und so zum Laufen bringen:
 +<code bash>
 +python3 input.py
 +</code>
 +
 +===== Übungen =====
 +  * Lese eine ganze Zahl als Programmparameter ein und berechne die Fakultät dieser Zahl
 +  * Erweitere die obigen Beispiele um einen weiteren Parameter. Lese zusätzlich das Geburtsdatum ein (inklusive Prüfungen!) und gib es aus
 +  * Baue einen kleinen Taschenrechner, der addieren und subtrahieren kann
 +  * Erweitere den Taschenrechner um die Multiplikation und Division
inputs_param.1499171569.txt.gz · Last modified: 2017/07/04 14:32 by gg