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.
Geprüft wird, ob der Vorname mit einem Grossbuchstaben startet und sonst nur Kleinbuchstaben enthält und ob das Alter zwischen 1 und 99 ist.
Bash
Der Code
#!/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"
Ausführen
Die Datei input.sh mit dem obigen Code erstellen und folgendes ausführen:
chmod +x input.sh # als ausführbar markieren ./input.sh # ausführen
C++
Der Code
#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"); }
Kompilieren und Ausführen
g++ -Wall -g -std=c++14 input.cpp -o input # kompilieren ./input # ausführen
Golang
Der Code
package main import "os" import "fmt" func checkName(name string) bool { // Länge prüfen if(name == "") { return false } // Prüfen, ob erstes Zeichen ein Grossbuchstabe ist if(name[0] < 'A' || name[0] > 'Z') { return false } // Prüfen, ob alle anderen Zeichen Kleinbuchstaben sind for i := 1; i < len(name); i++ { if(name[i] < 'a' || name[i] > 'z') { return false } } // Sind alle Bedingungen erfüllt? return true } func checkAge(age string) bool { // Länge prüfen if(age == "" || len(age) > 2) { return false } // Prüfen ob erstes Zeichen zwischen 1 und 9 ist if(age[0] < '1' || age[0] > '9') { return false } // Prüfen, ob zweites Zeichen zwischen 0 und 9 ist if(len(age) == 2) { if(age[1] < '0' || age[1] > '9') { return false } } // Sind alle Bedingungen erfüllt? return true } func main() { if(len(os.Args[1:]) != 2) { fmt.Println("Usage: "+os.Args[0]+" [Name] [Alter]") return } // sprechendere Namen verwenden name := os.Args[1] age := os.Args[2] // den Namen prüfen if(!checkName(name)) { fmt.Println("Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Kleinbuchstaben enthalten") return } // das Alter prüfen if(!checkAge(age)) { fmt.Println("Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein") return } // Ausgabe fmt.Println("Dein Name ist "+name+" und du bist "+age+" Jahre alt") }
Kompilieren und ausführen
Die Datei input.go mit obigen Code füllen und folgendes ausführen
go build input.go # kompilieren ./input # ausführen
Java
Der Code
public class Input { private boolean checkName(String name) { // kürzere Schreibweise diesesmal if(name.isEmpty()) return false; // Länge prüfen if(name.charAt(0) < 'A' || name.charAt(0) > 'Z') return false; // Grossbuchstabe an erster Stelle? for(int i = 1; i < name.length(); i++) // Kleinbuchstaben an allen anderen Stellen if(name.charAt(i) < 'a' || name.charAt(i) > 'z') return false; // Sind alle Bedingungen erfüllt? return true; } private boolean checkAge (String age) { // Länge prüfen if(age.isEmpty() || age.length() > 2) return false; // 1-9 an erster Stelle? if(age.charAt(0) < '1' || age.charAt(0) > '9') return false; // 0-9 an zweiter Stelle? if(age.length() == 2) if(age.charAt(1) < '0' || age.charAt(1) > '9') return false; // Sind alle Bedingungen erfüllt? return false; } public static void main(String[] args) { // Vorgriff Objektorientiertes Programmieren Input in = new Input(); for(int i = 0; i < args.length; i++) System.out.println(args[i]); // Anzahl der Parameter prüfen if(args.length != 2) { System.out.println("Usage: "+args[0]+" [Name] [Alter]"); return; } // Sprechendere Namen verwenden String name = args[0]; String age = args[1]; // Prüfen der einzelnen Parameter if(!in.checkName(name)) { System.out.println("Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Kleinbuchstaben enthalten"); return; } if(!in.checkAge(age)) { System.out.println("Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein"); return; } // Ausgabe System.out.println("Dein Name ist "+name+" und du bist "+age+" Jahre alt"); } } === Kompilieren und ausführen === Die Datei Input.java mit obigen Inhalt erstellen und folgendes Ausführen: <code bash> javac Input.java java Input
JavaScript
Das ist nur über die Browserkonsole möglich. Wird das angefragt, so wird ein Programm nachgereicht.