R


Bash Programme Bevölkerungswachstum


Quellcode


Basiswissen


Das Programm simuliert das Wachstum einer Bevölkerung.

Quellcode


#!/bin/bash
#
# bevoelkerungswachstum.sh
# Stand 12. Februar 2017
# Teststatus: ungetestet
#
# Dieses interaktive Programm simuliert das Wachstum einer Bevölkerung.
# Ein Wachstumsschritt entspricht einem Jahr (keine unterjährige Simulation).
# Der Benutzer gibt zunächst die Anzahl der Personen in der Startbevölkerung ein.
# Anschließend wird der Benutzer in Jahresabschnitten nach dem gewünschten Wachstumsmodell gefragt.
#
# In Abhängigkeit vom gewählten Wachstumsmodell wird die Bevölkerungszahl für das Folgejahr berechnet.

# Exisitert die Ausgabedatei out.txt, wird sie zunächst gelöscht:
if [ -f out.txt ]; then rm out.txt;fi

# Initialisierungen


choice=1
jahr=0

# Startdialog


clear
echo "Bitte gib an, wie viele Leute es am Anfang sein sollen."
read a;clear;

echo "Unsere Bevölkerung startet also mit "$a" Leuten."
startbevoelkerung=$a
echo ""
echo "Gleich beginnt die Simulation."
echo "Es gibt verschiedene Wachstumsmodelle."
echo "Wähle das Modell mit der angegebenen Zahl."
echo "Weiter mit der Taste Enter ..."
echo

while [ $choice != "Beenden" ];do
clear

# Es folgt die Anzeige der aktuellen Entwicklung.
# Die Bevölkerungszahl wird mit vielen Nachkommastellen berechnet.
# Die Bevölkerungszahl wird aber nur mit ganzen Zahlen angezeigt.

bevoelkerungszahl=$(echo "scale=0;$a/1" | bc -l)

echo "Letztes Jahr: "$jahr
echo "Anstehendes Jahr: "$(($jahr+1))
echo "Bevölkerungszahl am Jahresanfang: "$bevoelkerungszahl
echo ""
echo "Modelle für das anstehende Jahr:"
echo ""

select choice in {Auslöschung,Explosion,Linear,Siechtum,Epidemie,Beenden};do

if [ $choice == "Auslöschung" ]; then
a=0
echo $jahr " " $a >> out.txt
fi

if [ $choice == "Explosion" ]; then
a=$(echo "$a*1.5" | bc -l)
echo $jahr " " $a >> out.txt
fi

if [ $choice == "Linear" ]; then
a=$(echo "$a+$startbevoelkerung/20" | bc -l)
echo $jahr " " $a >> out.txt
fi

if [ $choice == "Siechtum" ]; then
a=$(echo "$a*0.9" | bc -l)
echo $jahr " " $a >> out.txt
fi

if [ $choice == "Epidemie" ]; then
a=$(echo "$a*0.2" | bc -l)
echo $jahr " " $a >> out.txt
fi

if [ $choice == "Beenden" ]; then
break
fi
break
done
jahr=$(($jahr+1))
done

# Abschied


clear
echo "Du hast die Simulation verlassen."
echo "Drücke nur Enter und alles ist vorbei."
echo "Drücke c und Enter für die Chronologie."
echo ""
read abschied
if [ $abschied == "c" ]; then cat out.txt | less;fi
# Ende des Programmes