Grundlagen Flashcards

1
Q

Warum gibt es so viele verschiedene Programmiersprachen?

A

Betrachtet man den Stammbaum der Programmiersprachen so erkennt man, dass viele der Sprachen zueinander verwandt sind und sich in ihrer Entwicklung gegenseitig beeinflusst haben.

Auf Grund der unterschiedlichen Anforderungen der Programmierer an die jeweilige Sprache entwickelten sich auch unterschiedliche Sprachen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Erklären Sie, warum sich C/ C++ in der Industrie als eine bevorzugte Entwicklungssprache durchgesetzt hat!

A

Weil “C” einen qualitativen Sprung hinsichtlich des Programmierkomforts liefert, da die Befehle der
Umgangssprache ähneln (“DO..WHILE”) –> gut wartender und übersichtlicher Code steht an erster Stelle,
da die Kosten für einen Programmierer überwiegen.
Die Sprache liefert zudem kleine, schnelle und portable Programme.
Die Werkzeuge von C++ machen die
Entwicklung von komplexen und leistungsfähigen Anwendungen möglich.
Das ANSI erarbeitet eine eindeutige und maschinenunabhängige Definition der Programmiersprache C, den
ANSI-C-Standard.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Erklären Sie die Unterschiede zwischen Maschinensprache, Assemblercode und anderen Programmiersprachen!

A

In der Gründerzeit arbeiteten die Programmierer mit den primitivsten Computeranweisungen der
Maschinensprache.
Sie kann vom Computer direkt ausgeführt werden und besteht aus einer Abfolge von
den Dualziffern 0/1.
Sie liefert kleine, schnelle Programme die jedoch sehr
fehleranfällig sind.
Sie ist an den Prozessortyp gebunden.
Die Assemblersprache ist etwas anschaulicher, da sie für den Menschen leichter verständliche
“mnemonische” Symbole verwendet. Vorteil hierbei ist der geringe Speicherbedarf und die schnelle
Ausführungszeit. Jedoch verlieren diese Vorteile an Bedeutung, da die Kosten eines Programmierers
überwiegen. Die Programme sind auf die jeweilige Hardware zugeschnitten, somit nur schwer übertragbar
auf andere Rechner.
Übersetzt wird mittels Assemblers in die Maschinensprache.
Die Befehle der Hochsprachen ähneln der Umgangssprache.
Der Code ist leicht zu warten und lässt sich mit
weniger (Kosten)-Aufwand erweitern und verbessern. Die Sprache ist an keine Hardware mehr gebunden,
sie orientiert sich am zu lösenden Problem.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Erläuter Sie Vor- und Nachteile von Maschinensprache, Assemblercode und anderen Programmiersprachen!

A
Maschinensprache 
\+ Kleine, schnelle Programme 
- Fehleranfällig 
- Funktionen für Menschen schwer ersichtlich 
- An Prozessortyp gebunden 

Assemblersprache
+ Geringer Speicherbedarf, schnelle Ausführungszeit
- Schwer an andere Computertypen übertragbar
- Kosten für Programmierer übersteigen die der Hardware

Hochsprachen 
\+ Hoher Programmierkomfort (Ähnlichkeit der Umgangssprache) 
\+ Qualitativer Sprung 
- Rechenleistung 
- Speicher
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Beschreiben Sie die verschiedenen Generationen von Programmiersprachen!

A
  1. Generation: Maschinensprache
  2. Generation: Assemblercode mit seinen leichter verständlichen mnemoischen Anweisungen.
  3. Generation: Systemunabhängige Hochsprachen, prozeduraler und problemorientierter Natur. Das zu
    lösende Problem steht im Mittelpunkt.
  4. Generation: Nonprozedurale Programmiersprachen, die Problembezogenheit tritt in den Hintergrund,
    dafür steht die Universalität in den Vordergrund. Es wird beschrieben was das Programm machen soll und
    nicht wie. Somit ist keine umfangreiche Programmierausbildung nötig (DELPI, SQL).
  5. Generation: Künstliche Intelligenz: Es wird versucht die natürliche Intelligenz des Menschen durch
    konstruierte Computer nachzuvollziehen. (PROLOG)
    OOP Generation: Objektorientierte Generation, Probleme werden mit verschiedenen Objekten gelöst, Ein Objekt enthält mit seinen Eigenschaften und Methoden immer alles, was für eine bestimmte Aufgabe
    notwendig ist.”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Beschreiben Sie die Unterschiede zwischen der prozeduralen und der strukturierten Programmierung!

A

Bei der prozeduralen Programmierung stellt man sich Programme als eine Abfolge auszuführender
Anweisungen auf einen Satz von Daten vor.

Mit Hilfe der strukturierten Programmierung bringt man eine Systematik in die Abfolge der Prozeduren und
teilt das Programm in Daten und Funktionen ein.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welche Vor- und Nachteile bietet die strukturierte Programmierung?

A

Vorteile

+ Die strukturierte Programmierung bietet einen erfolgreichen Lösungsansatz bei komplexeren Aufgabenstellungen

Nachteile

  • Bei zunehmender Datenmenge wird die Trennung zw. Daten und Prozeduren immer schwieriger
  • Die Wiederverwendbarkeit ist zu gering
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was versteht man unter einem Von - Neumann - Rechner?

A

Virtueller Universalrechner, der aus den 5 Funktionseinheiten besteht:

  • Steuerwerk,
  • Rechenwerk,
  • Ein- und Ausgabewerkspeicher

Informationen zw. diesen Einheiten werden über Daten, Steuer und Adressbus ausgetausch

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Erklären Sie das Konzept der imperativen Programmiersprachen mit Hilfe eines Von - Neumann - Rechners!

A

Imperative Programmiersprachen basieren auf Befehlen. Anpassung an diesen Universalrechner an das
zu lösende Problem, durch aufeinander folgende Befehle, dem Programm.
→ Programme, die auf einem Von-Neumann-Rechner laufen, laufen auf jedem beliebigen Rechner.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie werden Probleme in der funktionalen Programmierung gelöst?

A

Diese gehören auch zur Gruppe der imperativen Programmiersprachen.
Lösen der Probleme durch berechnen von Funktionen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Beschreiben Sie das Konzept der logischen Programmiersprachen!

A

Der Anwender gibt eine Menge von Fakten und Regeln vor, wie aus Fakten neue Fakten geschaffen
werden können.
Aufgabe des Rechners ist, mit richtig oder falsch zu antworten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Worauf basieren imperative/ deklarative Programmiersprachen?

A

→ Imperative basieren auf Befehlen,

→ deklarative orientieren sich an der Aussage.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Erläutern Sie den Begriff Kapselung aus der objektorientierten Programmierung!

A

Kapselung bedeutet, dass alle Eigenschaften und Funktionen die von dem Objekt ausgeführt
werden, in der Definition des Objekts enthalten sind (HDD).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Erläutern Sie den Begriff Verbergen von Daten aus der objektorientierten Programmierung!

A

In der objektorientierten Programmierung ist es nicht notwendig, dass der Benutzer eines Objekts die Funktionsweisen aller Daten und Methoden eines Objekts kennt.
Er muss sie nur anwenden können. Die Daten sind vor ihm verborgen.
In C++ muss der Benutzer nicht wissen wie eine Klasse funktioniert, er muss sie nur anwenden können.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Erläutern Sie den Begriff Vererbung aus der objektorientierten Programmierung!

A

Vererbung bedeutet, dass ein Objekt auf den Eigenschaften eines anderen Objekts aufbauen kann.
Es erbt die Eigenschaften und Methoden des Basisobjekts.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Erläutern Sie den Begriff Polymorphie aus der objektorientierten Programmierung!

A

Polymorphie bedeutet vielgestaltig, viele Objekte können dieselbe Methode verwenden und unternehmen genau dann die richtigen Schritte, um die Funktion auszuführen.
Sie interpretieren die Nachricht, abhängig von der Verwendung, unterschiedlich.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Bewerten Sie die Bedeutung der Wiederverwendbarkeit von Softwarebausteinen bei der Softwareproduktion!

A

Wiederverwendbarkeit ist wichtig, weil es Zeit und Geld spart, Stabilität bringt und eine Verbesserung/ Weiterentwicklung möglich macht.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Erklären Sie die Begriffe ‘‘Klasse”, “Objekt”, ‘‘Eigenschaft’’ und “Methode’’ aus der objektorientierten Programmierung!

A

→ Klasse = Bauplan
→ Objekt = Exemplar eines bestimmten Datentyps oder einer bestimmten Klasse
→ Eigenschaften = Attribute
→ Methode = Funktionen
Programme aus einzelnen Objekten mit bekannten Eigenschaften und Methoden können nach Bedarf zusammengestellt werden.
Die Klasse entspricht dabei dem Bauplan eines konkreten Objekts.
So muss man die einzelnen Komponenten nicht immer neu erfinden, sondern fügt sie entsprechend zusammen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Beschreiben Sie stichwortartig die Funktion und Arbeitsweise des Assembler!

A

Assemblercode ist manschinennah, mnemotechnisch aufgebaut und wird in Maschinensprache assembliert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Beschreiben Sie stichwortartig die Funktion und Arbeitsweise des Compiler!

A

Compilierte Sprachen werden am Stück in selbstständige, lauffähige Programme übersetzt (bezogen auf OS).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Beschreiben Sie stichwortartig die Funktion und Arbeitsweise des Interpreter!

A

Skriptsprachen werden zur Laufzeit übersetzt (Schritt für Schritt). Zur Ausführung wird ein Shell oder Wirtprogramm benötigt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Nennen Sie je drei compilierte Programmiersprachen!

A

→ C/C++
→ COBOLD
→ Smaltalk
→ Pascal

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Nennen Sie je drei interpretierte Programmiersprachen!

A

→ Javascript
→ Perl
→ VBA
→ PHP

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Weshalb kann man in Java Platform unabhängige Programme erstellen?

A

Programme werden unabhängig vom darunter liegendem Betriebssysteme ausgeführt = Maschinenunabhängig.
Der compilierte Bytecode benötigt zur Ausführung aber eine Java-Virtual Machine(JVM). Java-Virtual-Machine gibt es für verschiedene Plattformen.

25
Q

Erläutern Sie, weshalb im .NET Framework Module aus unterschiedlichen Programmiersprachen in einem Programm verwendet werden können!

A

Alle .NET Sprachen werden durch einen Sprachcompiler in die MSIL (MS Intermediate Language)
compiliert und benötigen zur Ausführung den JIT-Compiler des .NET Frameworks. Daher können beliebige
MSIL-Code Module („Assemblies“) unterschiedlicher .NET Programmiersprachen kombiniert werden.

26
Q

Was versteht man unter einem Algorithmus?

A

Ein Algorithmus ist eine Reihenfolge von Anweisungen zur Lösung eines Problems in einer bestimmten
Programmiersprache.

27
Q

Erläutern Sie das Konzept der Abstraktion beim Erstellen von Programmen?

A

Abstraktion ist eine Art Unterprogramm in einem Algorithmus.
Man „ruft“ das Programm nur mit seinem
Namen auf, meint damit aber eine ganze Reihe von konkreten Anweisungen.

28
Q

Was versteht man allgemein unter einem Programm?

A

Ein Programm ist ein Weg zum Lösen eines Problems.

Es besteht aus einer genauen Folge von Anweisungen.

29
Q

Was versteht man unter Software-Technik?

A

Unter Softwaretechnik versteht man, den Entwurf und die Entwicklung von Software-Systemen einschließlich Dokumentation und widerverwendbarenKomponenten.

30
Q

Erläutern Sie die Bedeutung einer Programmbibliothek bei der Software-Technik!

A

In einer Programmbibliothek werden wiederverwendbare Softwarekomponenten abgelegt. Es ist zu teuer das Rad jedes Mal neu zu erfinden, darum greift man auf die PB zurück.

31
Q

lnnerhalb der Software - Technik laufen verschiedene
Prozesse ab:
Welchem Zweck dient der ,,Top - Level - Entwurf”(kurz: TLE)?

A

Der TLE löst das Problem auf einer sehr allgemeinen Ebene. Hier werden die einzelnen Komponenten, aus denen sich das Programm zusammensetzt, aufgeschlüsselt(Teambildung, Teamarbeit).

32
Q

Beschreiben Sie die Vorgänge bei der “Software - Technik im Kleinen’’

A

Jede einzelne Komponente eines Softwaresystems durchläuft die
3 Phasen:
→ Entwurf,
→ Implementierung (das eigentliche Programm schreiben),
→ Test
Erst wenn der Komponententest erfolgreich abgeschlossen ist können die Komponenten zusammengefügt werden.

33
Q

Wozu benötigt man Systemintegration und Systemtest?

A

Bei der Systemintegration werden die getesteten Einzelkomponenten des Softwaresystems zusammengefügt, hier wird geprüft ob die einzelnen Komponenten auch zusammen funktionieren.

34
Q

Nennen Sie Beispiele für Fehler, die bei Systemintegration und Systemtest aufgedeckt werden können!

A

Beispielsweise zwei Datenbanken, die als einzelne funktionieren müssen nicht unbedingt zusammen funktionieren. Dabei können Fehler beim laden der Daten oder beim Speichern auftauchen

35
Q

Erklären Sie, warum es wichtig ist, erst einen korrekten Entwurf zu erstellen, bevor man sich auf die Implementierungsphase einlässt!

A

Ein konkreter Entwurf spart Zeit und Entwicklungskosten, da eine Änderung am Entwurf einfach durchzuführen ist, als Änderungen nach dem Komponententest oder Systemtest.

36
Q

Erläutern Sie den Grund für die Einfuhrung von Struktogrammen!

A

Es ist sehr umständlich Vorgehensweisen vollständig schriftlich festzuhalten, darum werden die Algorithmen in einer bestimmten Art und Weise notiert. Kein „go to“, Dokumentation, klarer Ablauf

37
Q

Begründen Sie, ob Struktogramme für jedes Programm odor Makro erstellt werden müssen!

A

Der Bedarf nach einem Struktorgramm richtet sich nach der Größe des Projekts und aus der Aufgabenstellung.

38
Q

Erläutern Sie den Unterschied zwischen kopf- und fußgesteuerten Schleifen!

A

→ Kopfgesteuerte Schleife:
Abfrage der Bedingung erfolgt vor der Durchführung der Verarbeitung. Ist die Bedingung bei der ersten
Abfrage schon nicht erfüllt, erfolgt keine Durchführung der Verarbeitung (While-Schleife).

→ Fußgesteuerte Schleife:
Abfrage der Bedingung nach dem Durchlauf der Verabeitung (Repeat-Schleife). Die Schleife läuft also
mindestens einmal durch. ( DO … WHILE)

39
Q

Erklären Sie den Unterschied zwischen Kompilieren und Linken!

A

Compiler liest Quelltextdateien (.cpp; .h) und erzeugt einen Zwischencode (.obj; .lib).
Der Linker verbindet diese Komponenten und erstellt *.exe.

40
Q

Beschreiben Sie den Aufbau eines VISUAL C++ Projekts!

A

Aufbau besteht aus einer hierarchischen Struktur von Knoten(wie Explorer). Oberster Knoten ist die Solution (Projektmappe), untergeordnet sind mehrere Projektknoten, wobei mehrere Projekte immer innerhalb einer Projektmappe verwaltet werden können.

41
Q

Welchen Vorteil bietet die Verwaltung von Quelldateien in einem Projekt?

A

Alle Quelldateien eines Projektes werden auf einmal in der richtigen Reihenfolge kompiliert und gelinkt.
Einfacher für den Compiler/Linker, da nur eine „main“.

42
Q

Was bewirkt die C++ Anweisung “#include”?

A

include (engl: einbinden) ist eine Präprozessor-Anweisung und bedeutet: Suche die Datei in den spitzen Klammern und setzte sie genau an der Stelle im Programm ein. („Suchen/Ersetzten-Maschine“)

43
Q

Erläutern Sie die Bedeutung der Hauptfunktion main() in einem C++ Programm!

A

Jedes C++ Programm enthält genau eine „main“ Funktion, die beim Programmstart automatisch
aufgerufen wird. Alles zw. {} ist die Hauptfunktion bzw. das eigentliche Programm.

44
Q

Auf welche Weise kennzeichnet man in C++ Kommentare?

A
// = Bis zum Zeilenende 
/* */ = Über mehrere Zeilen
45
Q

Welchen Zweck erfüllen gute Kommentare in Programmen?

A

Zur eigenen (bzw. für andere) Orientierung/Verständnis bzw. Notizen zu hinterlegen.

46
Q

Beschreiben Sie die Deklaration und lnitialisierung von Variablen und Konstanten!

A

Deklaration: Speicherplatz wird reserviert
double radius Name = radius, Typ = double

Initialisierung: Wert wird zugewiesen
radius = 20 = ist der Zuweisungsoperator

47
Q

Nennen Sie verschiedene elementare Datentypen von C++ Variablen!

A

→ short GANZZAHL mindestens 16 Bit, also 65536 mögliche Werte
→ int GANZZAHL indestens 16 Bit, also 65536 mögliche Werte
→ long GANZZAHL mindestens 32 Bit, also 4294967296 mögliche Werte
→ float KOMMAZAHL 6-stellige Genauigkeit
→ double KOMMAZAHL 15-stellige Genauigkeit
→ char GANZZAHL mindestens 8 Bit, also 256 mögliche Werte

48
Q

Beschreiben Sie den Unterschied zwischen der Deklaration und der Definition von Funktionen!

A

Funktionskopf (Prototyp) – Deklaration → in die Headerdatei
Rückgabetyp Bezeichner (Parametertyp Parameter)
Beispiel:
double Quadrat (double seite);

Funktionsrumpf – Definition → in die Quelltextdatei 
Beispiel: 
double Quadrat (double seite) 
{ 
return seite * seite ; 
}
49
Q

Wie werden Funktionen im C++ Programm aufgerufen?

A

Im Hauptprogramm ruft man Funktionen mit dem Namen und den Übergabeparametern auf.
Addiere(4,35);
4 und 35 werden an die Funktion Addiere übergeben, die Programmausführung springt in den
Funktionsrumpf von Addiere.

50
Q

Erklären Sie, an welcher Stelle im Programm der Funktionsprototyp bzw. die Funktionsdefinition stehen müssen!

A

→ Prototyp vor dem ersten Gebrauch – normal Headerdatei

→ Definition, egal – nur nicht in eine andere Definition

51
Q

Wie nennt man die Veränderung einer (oder mehrerer) physikalischer Größen (zum
Beispiel Schalldruck) um etwas mitzuteilen?

A

Signal

52
Q

Erklären Sie in Stichpunkten das Harvard-Modell!

A

→ Gleichzeitiges Lesen von Anweisungen und Daten (durch getrennte Speicher)
→ höhere Verarbeitungsgeschwindigkeit
→ einfacherer Schutz von Speicher/Zugriffsrechten
→ Problem durch Parallelität

53
Q

Was ist die vollständige Form der Kurzform ‘OOPS’?

A

Object Oriented Programming System.

54
Q

Was ist ein enum?

A

Enum ist ein Aufzählungstyp. Die Konstanten aus der Enum kann man im Programm verwenden.

Beispielcode:

enum farbe {ROT, BLAU, GELB};

farbe f = ROT;

if(f != BLAU) { };

55
Q

Wer und wieso hat C/C++ entwickelt?

A

C++ entstand wie C an den AT&T Bell Laboratories. Mitte der achtziger Jahre wurde es von B. Stroustrup entwickelt. Es erweitert C um Möglichkeiten zur objektorientierten Programmierung und nimmt in Bezug auf den C-Sprachumfang einige Verbesserungen vor. C ist im wesentlichen - jedoch nicht exakt - eine Teilmenge von C++.

56
Q

Erklären Sie Funktionen und deren Aufbau.

A

Ermöglichen Aufspaltung des Programms in Unterprogramme.
Aufbau: ‘rückgabewert’ ‘funktionsname’ (argument) {funktionskörper}

Der Rückgabewert ist immer nur 1 Element und kann von beliebigem Typ sein. Falls die Funktion keine Rückgabe hat, schreibt man void.

Beachte:
→ Der Funktionsname darf nicht mit einer Zahl beginnen
→ Nur ein Wert als Rückgabewert

57
Q

Was ist bei Variablennamen zu beachten?

A

→ Keine Leerzeichen
→ Keine Satzzeichen oder Symbole
→ Keine Zahl
→ Kein Unterstrich ( _ ) am Anfang

58
Q

Wie nennt man die Änderung einer Variable in einen anderen Typen?

A

→ Casting (Cast)

Beispiel:

double a = 1.5;
b = int (a);
b = (int) a;
7/2 = 3 , 7/(double)2 = 7/2.0 = 3.5 double(7/2) = 3.0 , int(19/10.0) = 1