04 // Forschungssoftware entwickeln

Trockenübungen

  1. Was ist eine Programmiersprache?
  2. Zählen Sie mindestens drei auf.
  3. Wozu werden ein Compiler oder Interpreter benötigt?
  4. Wenn x = 3, welche Ausgabe erzeugt dann folgender Pseudocode?
    if x > 3 then
      print "a"
    else
      print "b"
    end if
    
  5. Und was ist mit folgendem Pseudocode (x = 3)?
    while x >= 0
      print x
      decrease x by 1
    end while
    
  6. Beschreiben Sie die zentralen Unterschiede zwischen unit, integration und acceptance tests.
  7. Was ist im Kontext von Forschungssoftware eine “pipeline”?

Praxisübungen

Übenübenüben Sie. Dazu eignen sich zahlreiche Kurse online, von denen einige hier verlinkt sind. Anschließend können Sie sich den untenstehenden weiteren Praxisübungen zuwenden.

Die Schaltjahr-Beispiele sind im Lehrbuch als Pseudocode umgesetzt. Suchen Sie sich eine Programmiersprache Ihrer Wahl und implementieren Sie die Pseudocodes entlang der folgenden Aufgaben:

  1. Schreiben Sie eine Funktion (are_you_a_leap_year), die einen Parameter (jahr) erhält und entweder true oder false zurückgibt.
  2. Rufen Sie die Funktion mit ein paar Jahreszahlen auf (z.B. 2023, 2000, 2038).
  3. Schreiben Sie eine for-Schleife, die die Funktion für die Jahre 1900 bis 1950 aufruft und dabei nur jene Jahreszahlen ausgibt, die auch wirklich ein Schaltjahr darstellen.
  4. Schreiben Sie eine while-Schleife, die die Jahre ab 2023 aufsteigend durchläuft, bis es ein Schaltjahr findet, das es auch ausgibt.

Lösungsansätze

Ab hier folgen nun verschiedene Lösungswege zu den oben vorgestellten Übungen. Damit Sie die nicht “versehentlich” überscrollen und so Ihrer Übungsmöglichkeiten beraubt werden, folgt hier zunächst ein visueller Bruch.

Winkende weiße Katze als GIF

Trockenübungen

  1. Sprache, in der für einen bestimmten Anwendungsfall Anweisungen geschrieben sind, die ein Computer benötigt, um für den Anwendungsfall nötige Aufgaben zu bewältigen.
  2. Python, R, C, C++, C#, Java, JavaScript, PHP … (die Liste ist schier endlos, HTML gehört aber nicht dazu)
  3. Um für Menschen lesbaren Code in Maschinencode zu übersetzen.
  4. b
  5. 3210
  6. “unit” prüft spezifische Funktionen, “integration” das Zusammenspiel von verschiedenen Teilen/Modulen der Forschungssoftware und “acceptance” fokussiert auf die Anwendung bei Nutzenden.
  7. Eine konfigurierte Liste an Aufgaben, die bei neuen Versionen (im Rahmen des Deployments) automatisch durchlaufen werden (sollen).

Praxisübungen

Hier die Lösungen mit Python:

def are_you_a_leap_year(jahr):
    if jahr % 4 == 0:
        if jahr % 100 == 0:
            if jahr % 400 == 0:
                return True
        else:
            return True
    return False

print(are_you_a_leap_year(2023))
print(are_you_a_leap_year(2000))
print(are_you_a_leap_year(2038))

for jahr in range(1900, 1950):
    if are_you_a_leap_year(jahr):
        print(jahr)

jahr = 2023
while not are_you_a_leap_year(jahr):
    jahr = jahr + 1

print(jahr)

Und hier mit R:

are_you_a_leap_year <- function (jahr) {
  if (jahr %% 4 == 0) {
    if (jahr %% 100 == 0) {
      if (jahr %% 400 == 0) {
        return(TRUE)
      }
    } else {
      return(TRUE)
    }
  }
  return(FALSE)
}

are_you_a_leap_year(2023)
are_you_a_leap_year(2000)
are_you_a_leap_year(2038)

for (jahr in 1900:1950) {
  if (are_you_a_leap_year(jahr)) {
    print(jahr)
  }
}

jahr <- 2023
while (!are_you_a_leap_year(jahr)) {
  jahr <- jahr + 1
}
print(jahr)