User Tools

Site Tools


inputs_param

This is an old revision of the document!


Table of Contents

Programmparameter

Die einfachste Möglichkeit Benutzereingaben zu bekommen sind Programmparameter. Das geschriebene Programm wird direkt mit Parametern gestartet. Wichtig ist die korrekte Anzahl an Parametern und dass jeder Parameter separat geprüft wird.

Beispiele

Die folgenden Beispiele lesen einen Namen und Alter als Kommandozeilenparameter ein, prüfen die Parameter auf Korrektheit und geben Sie dann wieder aus.

Bash

#!/bin/bash
 
# definieren der beiden benötigten Funktionen
function checkString {
  case $1 in # ersten Parameter der Funktion prüfen
    [[:upper:]] | [[:upper:]][[:lower:]]* ) echo "$1" ;;
                                         *) echo "" ;;
  esac
}
function checkNumber {
  case $1 in # ersten Parameter der Funktion prüfen
    [1-9] | [1-9][0-9] ) echo "$1" ;;
                      *) echo "" ;;
  esac
}
 
# Prüfen, ob Anzahl der Parameter korrekt ist
if [ $# -ne 2 ]; then
  echo "usage: $0 [name] [age]"
  exit
fi
 
name=$(checkString $1) # ersten Parameter des Programms als Parameter für checkString verwenden
age=$(checkNumber $2)  # zweiten Parameter des Programms als Parameter für checkNumber verwenden
 
if [ -z $name ]; then # Prüfen, ob Name leer ist
  echo "Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Buchstaben enthalten"
  exit 1
fi
if [ -z $age ]; then # Prüfen, ob Alter leer ist
  echo "Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein"
  exit 1
fi
 
# Ausgabe
echo "Dein Name ist $name und du bist $age Jahre alt"

C++

#include <iostream>
 
bool checkName(char* name) {
  int len = 0;
 
  // die Länge des nullterminierten Strings herausfinden
  while(name[len] != 0)
    len++;
 
  // ist der String lang genug?
  if(len == 0)
    return false;
  // ist das erste Zeichen ein Grossbuchstabe?
  if(name[0] < 'A' || name[0] > 'Z')
    return false;
  // sind alle anderen Zeichen Kleinbuchstaben?
  for(int i = 1; i < len; i++) {
    if(name[i] < 'a' || name[i] > 'z')
      return false;
  }
 
  // sind alle Bedingungen erfüllt?
  return true;
}
 
bool checkAge(char* age) {
  int len = 0;
 
  // die Länge des nullterminierten Strings herausfinden
  while(age[len] != 0)
    len++;
 
  // prüfen der Länge des Parameters
  if(len == 0 || len > 2)
    return false;
  // prüfen, ob mit 1-9 begonnen wird
  if(age[0] < '1' || age[0] > '9')
    return false;
  // prüfen, ob alle anderen Zeichen zahlen sind
  for(int i = 1; i < len; i++) {
    if(age[i] < '0' || age[i] > '9')
      return false;
  }
 
  // sind alle Bedingungen erfüllt?
  return true;
}
 
int main(int argc, char* argv[]) {
  // prüfen, ob die Anzahl der Parameter stimmt.
  if(argc != 3) { // programmname zählt dazu
    printf("%s%s%s", "Usage: ", argv[0], " [name] [age]\n");
    return 1;
  }
 
  // sprechendere Namen verwenden
  char* name = argv[1];
  char* age = argv[2];
 
  // den ersten Parameter prüfen
  if(!checkName(name)) {
    printf("%s", "Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Buchstaben enthalten\n");
    return 1;
  }
  // den zweiten Parameter prüfen
  if(!checkAge(age)) {
    printf("%s", "Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein\n");
    return 1;
  } 
 
  // Ausgabe
  printf("%s%s%s%s%s", "Dein Name ist ", name, " und du bist ", age, " Jahre alt\n");
}
inputs_param.1499081562.txt.gz · Last modified: 2017/07/03 13:32 by gg