Prüfungsvorbereitung: Software

Software im Überblick

In den frühen Tagen der Computertechnik wurde die physische Ausrüstung eines Computersystems als Hardware bezeichnet. Oft war das Programm des Computersystems direkt mit dieser Hardware verbunden (fest verdrahtet). Erst später entstand der Begriff Software als Gegenstück zur Hardware und umfasste sowohl die Programme als auch die Daten, die auf einem Computersystem arbeiten oder verarbeitet werden. Neue Definitionen von Software beziehen auch Dokumentationen in den Begriff ein.

Grundsätzlich kann Software in Systemsoftware (zum Beispiel Betriebssysteme wie Windows) und Anwendungssoftware (zum Beispiel Textverarbeitungsprogramme wie Word) unterteilt werden. Zusätzlich gibt es Software, die die Entwicklung von Software ermöglicht (wie Entwicklungsumgebungen à la Eclipse). Darüber hinaus kann Software entweder installiert (fest im Betriebssystem verankert) oder als portable Version vorliegen. Das Nutzungsrecht von Software ist ebenfalls wichtig: Im Gegensatz zu käuflich zu erwerbenden Vollversionen werden einige Softwareprodukte als Freeware oder Shareware angeboten, während andere Softwareversionen mit Werbung (Adware) arbeiten.

Alle Arten von Software haben gemeinsam, dass sie letztlich in Form von Maschinencode vorliegen, was nichts anderes als eine Folge von Nullen und Einsen ist. Der Computer oder die Hardware kann diesen Maschinencode ausführen und damit ein Betriebssystem oder eine Anwendung starten. Die Entwicklungsumgebung übernimmt in der Regel die Aufgabe, diesen Maschinencode zu erzeugen. Dazu wird ein Programm in einer höheren Programmiersprache verfasst, wie beispielsweise in C++, und anschließend durch die Entwicklungsumgebung in den entsprechenden Maschinencode übersetzt. Das Erstellen von Software besteht also im Wesentlichen aus dem Verfassen von Code in einer Programmiersprache und der Übersetzung dieses Codes in Maschinencode durch die Entwicklungsumgebung.

Die Entwicklung der Programmiersprachen ist ein kontinuierlicher Prozess. In den Anfängen dominierten strukturierte Sprachen, die später durch objektorientierte Sprachen ergänzt und teilweise ersetzt wurden. Darüber hinaus wurden deklarative Sprachen wie SQL oder funktionale Sprachen wie Haskell entwickelt. Von besonderem Interesse ist die Entwicklung von künstlicher Intelligenz (KI). Eine der ersten Programmiersprachen für KI war beispielsweise LISP (List-Processing). Heutzutage sind wir bereits von KI umgeben, sei es durch virtuelle Assistenten wie Alexa, Siri, Cortana, Google und andere oder im Bereich der Robotik. Moderne KI ist keine herkömmliche Software, die einfach einen vordefinierten Algorithmus ausführt, sondern ein lernendes System. Dazu sammelt und verarbeitet die KI große Datenmengen und lernt daraus. Der Begriff "Big Data" steht daher in direktem Zusammenhang mit KI.

Einordnung von Programmiersprachen

Ordne die folgenden Begriffe in eine Mindmap ein.

  • Strukturierte Programmierung
  • SQL
  • Mit Kontrollstrukturen den Ablauf gestalten
  • C#
  • Das "Was" steht im Vordergrund
  • Grundsätzliches Konzept zur Beschreibung einer Programmiersprache
  • Deklarative Programmierung
  • Aufteilen eines Programmes in kleine Einheiten
  • Mengen-orientierte Programmierung
  • Das "Wie" steht im Vordergrund
  • LISP
  • Funktionale Programmierung
  • Java
  • Objektorientierte Programmierung
  • Imperative Programmierung
  • C++
  • Prozedurale Programmierung
  • Objekte und Klassen stehen im Vordergrund
  • Programmierparadigma





Pseudo-Code

Entwickle einen Pseudo-Code zu folgenden C-Befehlen.



C-Befehl: main








C-Befehl: Variable zuweisen








C-Befehl: if und else








C-Befehl: while








C-Befehl: do while








C-Befehl: for






Übersetze das folgende C-Programm in Pseudo-Code



Programm in C






Algorithmus

Die Bilddaten sollen mit einer Lauflängenkodierung komprimiert werden. Das bedeutet, dass sich wiederholende Zeichen zusammengefasst werden und nur die Anzahl und das entsprechende eichen gespeichert werden. Zur Erkennung einer Lauflängenkodierung wird ein spezielles Sonderzeichen eingesetzt, welches nicht in den Bilddaten enthalten ist. Eine Zusammenfassung erfolgt erst ab 4 Zeichen.
In einem ersten Schritt ist davon auszugehen, dass die Daten nur aus Großbuchstaben bestehen.

Das folgende Beispiel zeigt eine Komprimierung auf 44% der Originalgröße:

Beispiel: Rohdaten

QQQQRRRRRRTTTTTTTTTTLLLLLLLLLLLMNNNVVVVVVVVVVVAAAAAAAAAAAAA
(59 Zeichen)

Nach der Komprimierung ("§" ist das Sonderzeichen, welches die Wiederholung einleitet):

§4Q§6R§10T§11LMNNN§11V§13A
(26 Zeichen)

Die folgenden Funktionen und Variablen können für den Algorithmus genutzt werden:

Code Zweck
Bilddaten[ ]
enthält die Daten in Form eines Arrays (Typ Zeichen)
BildDaten.GetLength()
liefert die Größe des Arrays
BildDaten[index]
liefert das Zeichen an der Stelle index (nullbasiert)
KomprimierteDaten[ ]
Array für Speicherung der komprimierten Daten
KomprimierteDaten.Add(Zeichen)
Fügt dem Array ein Zeichen hinzu





HTML und XML

Ordne die folgenden Elemente entsprechen zu:

  1. XML-Datei "kunden.xml"
  2. DTD-Datei "kunden.dtd"
  3. Elementtyp mit Text als Inhalt
  4. Elementtyp mit Element-Inhalt
  5. Elementtyp mit beliebiger Wiederholung (mindestens 1x)
  6. Elementtyp mit Daten
  7. Wiederholungselement
  8. Kommentar
  9. Kennzeichnung der Datei als XML-Datei
  10. Verweis auf eine externe DTD-Datei

XML
ElementWähle
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)

<!DOCTYPE html>






<html>






<head>






<meta charset="utf-8" />






<meta name="keywords" content="IT" />






<meta name="description" content="PV-Vorbereitung" />






<title>PV-Vorbereitung</title>






<body>






Erläutere kurz die folgenden HTML5-Elemente






















UML-Klassendiagramm

Analysiere die Rechnung und erstelle ein Klassendiagramm mit den entsprechenden Attributen und Beziehungen.



Klassendiagramm






UML-Use-Case-Diagramm

Analysiere die Kundenforderung und erstelle ein Use-Case-Diagramm:

Anforderung des Kunden (Pizzeria):
Nach dem Anruf eines Kunden soll geprüft werden, ob der Kunde neu ist. Falls ja, so sollen die Kundendaten erfasst werden. Dann werden die Bestelldaten aufgenommen. Der Kunde kann entscheiden, ob er die Bestellung selbst abholen will, oder eine Auslieferung erfolgen soll. Im zweiten Fall liefert der Auslieferungsfahrer die Pizza aus. Die Auslieferung der Bestellung beinhaltet, dass der Auslieferungsfahrer nach der Zustellung eine SMS mit der Bestellnummer der erfolgten Lieferung an die Pizzeria sendet.







Programmablaufplan - Refactoring

Analysiere den Programmablaufplan und prüfe, ob er im Sinne des Refactorings verbessert oder vereinfacht werden kann. Für die Ablauf-Optimierung sollen nur drei Verzweigungen (Selektionen) benutzt werden - weitere Variablen dürfen aber eingeführt werden:



PAP






Einordnung Datenbankaspekte

Vergleich relationales und objektorientiertes Datenbanksystem

Relationales Datenbanksystem










Objektorientiertes Datenbanksystem










Ordne die Kategorien zu

BefehleSQL-KategorieWähle
SELECT, INSERT, UPDATE, DELETE
CREATE, TRUNCATE, ALTER, DROP
GRANT, REVOKE
ROLLBACK, COMMIT

Entity-Relationship-Diagramm

Entwurf eines ER-Diagramms

Anforderungen des Kunden:

Das Unternehmen hat feste und freie Mitarbeiter, deren Daten verwaltet werden müssen. Sowohl feste als auch freie Mitarbeiter sind Projekten zugeordnet. Die festen Mitarbeiter sind in einer Lohntabelle eingruppiert. Die freien Mitarbeiter werden nach festen Tagessätzen bezahlt. Die Anzahl der Tage wird durch die Dauer der Projektzugehörigkeit bestimmt.






SQL-Abfragen

Erstelle eine Abfrage, die alle Kundendaten anzeigt, deren Nachname alphabetisch vor 'M' steht.



Ausgangstabellen





Erstelle eine Abfrage, die alle Kundennamen sowie die Anzahl er zugehörigen Konten auflistet.






Erstelle eine Anweisung, um das Konto von Frau 'Kaiser' zu ändern. Sie hat geheiratet und heißt nun 'Lüdenscheid-Kaiser'






Der Kunde 'Maisen' möchte ein neues Premiumkonto (Kontonummer: 238238) eröffnen. Erstelle alle nötigen Anweisungen (eventuell mehrere SQL-Anweisungen). Beachte, dass die Konto_ID dabei fortlaufend sein soll.






Softwareentwicklungsprozess

Es soll der Prozess vom Quellcode zum ausführbaren Programm dargestellt werden. Bringe die gegebenen Symbole in die korrekte Abfolge.



Programmierung Symbole






Anhand eines Java-Quellcode-Beispiels sollen wesentliche Bezeichnungen aus der Programmierung dargestellt werden. Ordne die Begriffe zu.

Java Quellcode
BezeichnungWähle
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
j)

Fehlersuche (Debugging)

Woher stammt der Name Debugger?






Was ist ein Haltepunkt allgemein und ein konditionaler Haltepunkt?










Was versteht man unter just-in-time-Debugging?






Der folgende Ausschnitt zeigt den Einsatz eines Debuggers in einem einfachen PHP-Programm. Es wurde ein Haltepunkt gesetzt und das Programm im Debugging-Modus gestartet.
Das Programm stoppt: Welche Bedingung könnte für den Haltepunkt angegeben worden sein? (3 richtige Antworten)



Debugging

























© 2024 Netzwerk-Barbaren - AP1

E-Mail