4AHEL FSST Test (Group B)

2022-03-15

Max. 30 points

Name:

Task Max. Achieved
1 6
2 10
3 8
4 6
Sum 30
Benotung: >=27: 1, >=24: 2, >=20: 3, >15: 4, <=15: 5
  1. Agile Software Development
    1. Answer the following statements indicating whether they are True or False.
      0-2 correct: 0 points, 3 correct: 1 point, 4 correct: 2 points.
      Agile practitioners have come to value:
      Statement True False
      Processes and tools over individuals and interactions
      Comprehensive documentation over working software
      Customer collaboration over contract negotiation
      Following a plan over responding to change
    2. Answer the following statements indicating whether they are True or False.
      0-4 correct: 0 points, 5 correct: 1 point, 6 correct: 2 points, 7 correct: 3 points, 8 correct: 4 points.
      Agile practitioners follow these principles:
      Statement True False
      Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
      Deliver working software occasionally, from a couple of months to a couple of years, with a preference to the longer timescale.
      Reject changing requirements, particularly late in development. Agile processes harness a strict plan for the customer's competitive advantage.
      The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
      Working software is the primary measure of progress.
      At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
      The best architectures, requirements, and designs emerge from self-organizing teams.
      Complexity – the art of maximizing complicated solutions – is essential.
  2. Linux
    1. Eine Linux Anwenderin befindet sich derzeit im Verzeichnis /etc/apache2/conf-available. Welche Befehle muss sie eingeben, damit der folgende Verzeichnisbaum in Ihrem Home Verzeichnis angelegt wird? (4 Punkte)
      └── repos
          ├── code
          ├── configuration
          └── github
      
      mkdir -p ~/repos/code ~/repos/configuration ~/repos/github
      Alternatively, switch to home via `cd` first and skip the `~/`. It is also possible to create each directory on a separate line. If ~/repos is created separately first, the -p flag can be omitted.
    2. Die Benutzerin möchte, dass ihr Verzeichnis ~/public_html von allen Benutzern gelesen, aber nur von ihrem Benutzer verändert werden kann. Kein anderer Benutzer auf dem System, egal in welcher Benutzergruppe, darf Schreibzugriff darauf haben, aber jeder muss Lesezugriff haben. Schreibe einen Befehl, mit dem diese Änderung durchgeführt wird. (2 Punkte)
      chmod 755 ~/public_html
    3. Abschließend will die Benutzerin in das Verzeichnis ~/code/c++ wechseln, um dort die C++ Datei 4ahel.cpp zu kompilieren. Die ausführbare Datei soll den Namen 4ahel haben und nach dem kompilieren gestartet werden. Welche Befehle muss sie eingeben? (4 Punkte)
      cd ~/code/c++
      g++ 4ahel.cpp -o 4ahel
      ./4ahel
  3. Implementiere eine Funktion void swap(int *a, int *b) in C++ welche die Werte der beiden Variablen a und b austauscht.
    1 Punkt den korrekten Funktionsnamen und die korrekte Signatur
    1 Punkt für die notwendige Variable
    2 Punkt für das korrekte Austauschen der Werte
    void swap(int *a, int *b) {
      int c = *a;
      *a = *b;
      *b = c;
    }
  4. Implementiere eine Funktion int max_of_four(int a, int b, int c, int d) in C++ welche das Maximum der vier Parameter retourniert.
    1 Punkt den korrekten Funktionsnamen und die korrekte Signatur
    2 Punkt für ev. verwendete Hilfsfunktion, Abfragen etc.
    1 Punkt für korrekten Rückgabewert
    int max(int a, int b) {
      if (a > b) { return a; }
      return b;
    }
    
    int max_of_four(int a, int b, int c, int d) {
      return max(a, max(b, max(c, d)));
    }
  5. Welcher Text wird durch die folgenden Miniprogramme in der C++-Programmiersprache auf Standard Output (Terminal) geschrieben? Schreibe den genauen Output des Snippets. Wenn das Snippet nicht kompilierbar ist oder zu einem Absturz führen würde, so ist das Wort “ERROR” als Antwort zu geben. Erzeugt das Snippet keinen Output (wenn beispielsweise kein printf oder cout oder dergleichen aufgerufen wird), so ist "-" als richtige Antwort zu verwenden.
    1. #include <iostream>
      #include <vector>
      
      int main() {
        std::vector<int> numbers = {3, 9, 1, 12};
        std::cout << numbers[1] << std::endl;
        return 0;
      }
      9
    2. #include <iostream>
      #include <vector>
      
      void print_vector(std::vector<std::string> v);
      
      int main() {
        std::vector<std::string> names = {"Pat", "Chris", "Sue"};
        print_vector(names);
        return 0;
      }
      
      void print_vector(std::vector<std::string> v) {
        for (auto it = v.begin(); it != v.end(); ++it) {
          std::cout << *it << std::endl;
        }
      }
      Pat
      Chris
      Sue
    3. #include <iostream>
      #include <vector>
      
      int main() {
        std::vector<int> numbers = {6, 3, 1};
        print_vector(numbers);
        return 0;
      }
      
      void print_vector(std::vector<int> v) {
        for (auto &elem : v) {
          std::cout << elem << std::endl;
        }
      }
      ERROR