| |
|
Kerninformatik |
Angewandte
Informatik |
|
Theoretische
Informatik |
Praktische
Informatik |
Technische
Informatik |
|
|
Software Engineering - |
Kern-, Unterstützungsprozesse |
|
- |
Komplexität von Software Projekten |
|
- |
Vergleich von Vorgehensmodellen zur
Softwareentwicklung |
|
- |
Qualitätsmanagement |
|
Theoretische
Informatik |
|
|
- |
Entwicklung |
|
- |
Turing Awards |
|
Kombinatorik - |
Schrankenfunktionen |
|
Formale Sprachen - |
Chomsky-Hierarchie |
|
- |
Aussagenlogik |
|
Mathematische Grundlagen - |
Disziplinen und Anwendungen |
|
Informationstheorie - |
Elemente |
|
Heuristik -
|
Basisheuristiken |
|
Algorithmik - |
Algorithmenarten - Programmierfunktionen |
|
Praktische
Informatik |
|
|
- |
Programmierkonzepte |
|
- |
Sprachelemente & Fehlerarten |
|
- |
Kompilierprozesse |
|
- |
Maschinensprache/Assembler |
|
- |
Evolution |
|
- |
Programmierparadigmen |
|
- |
Typisierung |
|
- |
Vergleich |
|
Lexik - |
Standardbibliotheken, Namespaces |
|
Syntax & Semnatik - |
Einrückungsstil |
|
- |
Programmstrukturen |
|
- |
Kontrollstrukturen |
|
- |
Operatoren |
|
Datentypen & -strukturen - |
Variablen |
|
- |
Datentypen |
|
- |
Arrays |
|
- |
Zeiger, Referenzen, Zeiger Arithmetik |
|
- |
Dynamische Datenstrukturen |
|
- |
Benutzerdefinierte Datentypen |
|
- |
Typenumwandlungen |
|
Anwendungen - |
Stringbehandlung |
|
- |
File IO |
|
- |
Sortierverfahren |
|
- |
Suchverfahren |
|
- |
Verschlüsselungsverfahren |
|
Funktionen -
|
Funktionsaufrufe by ref - by val |
|
-
|
verschiedene by ref Arten |
|
- |
Vor- & Nachteile call by ref, call by value
|
|
- |
Rekursive Funktionen |
|
- |
Überladen von Funktionen |
|
Objektorientierte Programmierung -
|
Konzepte der OOP |
|
-
|
Standard Methoden |
|
-
|
Beispiel Klasse Vektor |
|
-
|
Design Patterns |
|
-
|
Templates |
|
Datenbanken -
|
Datenbankmodelle |
|
-
|
Datenbanken, DBM-Systeme |
|
-
|
Begriffe verschiedener Datenbankmodelle |
|
-
|
ER-Modelle |
|
-
|
Kardinalitäten, Optionalität |
|
-
|
Tabellentransformation |
|
-
|
Normalformen |
|
-
|
Database IO |
|
SQL -
|
Relationale Algebra |
|
-
|
Data Definition, Data Manipulation |
|
Technische Informatik |
|
|
Hardwareaufbau -
|
Computer generations |
|
- |
CPU clock-speeds |
|
- |
Mikroarchitektur |
|
- |
von Neumann Architektur |
|
- |
Digitaltechnik |
|
- |
Zahlendarstellungen |
|
-
|
Motherboard Komponenten |
|
- |
Peripherie |
|
- |
Speicherbausteine |
|
- |
Festplattensubsysteme |
|
-
|
Informationseinheiten |
|
- |
Zahlengrößenordnungen |
|
Elektrotechnik - |
Elektrotechnische Einheiten |
|
- |
Elektromagnetisches Wellenspektrum |
|
- |
Modulationsverfahren |
|
Netzwerktechnik - |
Geschichte der Netzentwicklung |
|
- |
Verteilte Systeme |
|
- |
Server-Arten und -Dienste |
|
- |
Übertragungsverfahren |
|
- |
Breitbandanforderungen und Übertragungsraten |
|
- |
WAN-(Breitband)techniken |
|
- |
Datennetze |
|
- |
Struktur des Internets |
|
- |
Root Nameserver |
|
- |
Netzwerk Topologien |
|
- |
Strukturierte Verkabelung &
Netzwerkkomponenten |
|
- |
Routing |
|
- |
ISO-OSI/ TCP-IP Refernzmodell |
|
- |
Ports und Dienste |
|
- |
Linux-, Dos-Shell Befehle |
|
- |
IT-Sicherheit |
|
- |
Top Level Domains |
|
Betriebssysteme - |
Aufgabenblöcke |
|
- |
OS Architekturmodelle |
|
Unix - |
Unix kernels |
|
- |
Linux Distributions |
|
- |
Linux Verzeichnisbaum |
|
- |
Dateiberechtigungen |
|
- |
Linux Shell Befehle |
|
Windows - |
Version history |
|
- |
File Types |
|
- |
Programmierschnittstellen |
|
- |
Utilities |
|
Angewandte Informatik |
|
|
Mensch-Computer Interaktion - |
five
decades of computing |
|
- |
Interaction Style Categories |
|
- |
The Evolution of Graphical User Interfaces |
|
- |
Softwaresysteme |
|
- |
Informationssysteme |
|
-
|
HCI Disziplinen |
|
-
|
Vergleich Mensch-Maschine |
|
-
|
Steuerelemente |
|
IDEs -
|
Visual Studio |
|
-
|
Eclipse |
|
Künstliche Intelligenz - |
Disziplinen |
|
Computergrafik - |
Arten
|
|
- |
Farbräume |
|
- |
Farbpsychologie |
|
- |
Begriffe |
|
- |
Methoden |
|
- |
Computerbildschirm Auflösungen |
|
Webdesign - |
Innovationsstufen
|
|
-
|
Web-Technologien |
|
-
|
Sprachen |
|
- |
Gestaltungsaspekte |
|
Wirtschafts- und Geschäftsprozesse
|
|
|
Volkswirtschaft -
|
Wirtschaftssektoren |
|
-
|
Modell der wirtschaftlichen Entwicklung |
|
-
|
G20 major economies |
|
-
|
Wirtschaftsordnungen |
|
-
|
der erweiterte Wirtschaftskreislauf |
|
-
|
Nationale und Internationale Regulierungsbehörden |
|
Betriebswirtschaft -
|
Rechnungswesen |
|
-
|
Gesellschaftsformen |
|
-
|
Grundformen der Leitungssyteme |
|
-
|
Führungsstile |
|
-
|
Nutzwertanalyse |
|
-
|
Task-Management |
|
-
|
Marketing Mix |
|
-
|
Soziale Milieus |
|
Quellen |
|
Software Engineering
1
|
Kernprozesse |
Unterstützungsprozesse |
|
1. Planung |
6. Anforderungsmanagement |
|
Lastenheft |
|
|
Pflichtenheft |
7. Projektmanagement |
|
Aufwandsschätzung |
Risikomanagement |
|
Vorgehensmodell |
Projektplanung |
| |
Projektverfolgung und -steuerung |
|
2. Analyse |
Management von
Lieferantenvereinbarungen |
|
Anforderungsanalyse |
|
|
Auswertung |
8. Qualitätsmanagement |
|
Prozessanalyse / Prozessmodell |
Capability Maturity Model |
|
Systemanalyse |
Spice (Norm) |
|
Strukturierte Analyse |
Incident Management |
|
Objektorientierte Analyse |
Problem Management |
| |
Softwaremetrik |
|
3. Entwurf |
statische Analyse |
|
Softwarearchitektur |
Softwareergonomie |
|
Strukturiertes Design |
|
|
Objektorientiertes Design |
9. Konfigurationsmanagement |
|
Unified
Modeling Language |
Versionsverwaltung |
|
Fundamental
Modeling Concepts |
Änderungsmanagement /
Veränderungsmanagement |
| |
Release Management |
|
4.
Programmierung |
Application Management (ITIL) |
|
Normierte
Programmierung |
|
|
Strukturierte Programmierung |
10. Dokumentation |
|
Objektorientierte Programmierung |
Software-Dokumentationswerkzeug |
|
Funktionale
Programmierung |
Systemdokumentation |
| |
Betriebsdokumentation |
|
5.
Validierung und Verifikation |
Bedienungsanleitung |
|
Modultests
(Low-Level-Test) |
Geschäftsprozesse |
|
Integrationstests (Low-Level-Test) |
Verfahrensdokumentation |
|
Systemtests
(High-Level-Test) |
|
|
Akzeptanztests (High-Level-Test) |
|
Komplexität von Software Projekten
| Projektklasse |
Quelltext-Zeilen (LOC) |
Bearbeiterjahre (BJ) |
| sehr klein |
1-
1000 |
0 -
0,2 |
| klein |
1000
- 10.000 |
0,2
- 2 |
| mittel |
10.000 - 100.000 |
2 -
20 |
| groß |
100.000 - 1 Mio |
20 -
200 |
| sehr groß |
1
Mio - ... |
200
- ... |
Time versus number of workers
2
|
m
o
n
t
h
s |
 |
m
o
n
t
h
s |
 |
|
|
men |
|
men |
|
|
perfectly partitionable
tasks
(e.g. picking cotton) |
|
task with complex
interrelationships
& high communications overhead |
Dimensions of software complexity
3
|
|
|
Higher technical complexity
- embedded, real-time,
distributed, fault tolerant
- custom, unprecedented,
architecture reengineering
- high performance |
|
|
Lower
management
complexity
- small scale
- informal
- single stakeholder
- "products" |
 |
Higher
management
complexity
- large scale
- contractural
- many stakeholders
- "projects" |
|
|
|
Lower technical complexity
- mostly 4GL, or component-based
- application reengineering
- interactive performance |
|
Comparison of Software Development Methodologies
| |
|
Eigenschaften |
|
Vorteile |
|
Nachteile |
|
sequentielle Vorgehensweisen |
 |
•
|
Phasen müssen vollständig |
+ |
übersichtlich, da
klar strukturiert |
- |
Änderungen der Anforderungen sind die |
| |
durchlaufen werden. |
+ |
klare zeitliche
Abfolge |
|
Realität |
|
• |
neue Phase wird erst |
+ |
geringer
Leitungsaufwand |
- |
Schwerpunkt auf Dokumenten, nicht |
| |
begonnen, wenn vorige Phase |
+ |
leicht
kontrollierbar |
|
auf Produkt |
| |
abgeschlossen ist |
|
|
- |
für Software-Projekte ungeeignet! |
| |
|
|
|
|
|
|
Wasserfall |
|
|
|
|
|
|
 |
•
|
Wasserfallmodell +
|
+ |
Einbeziehung der |
- |
Schwächen der
strikten
Phaseneinteilung |
| |
Qualitätssicherung |
|
Qualitätssicherung |
- |
Software-Bürokratie |
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
|
V-Modell |
|
|
|
|
inkrementelle Vorgehensweisen |
 |
•
|
Pflegeaktivitäten
als neue |
+ |
frühzeitiger Einsatz des
|
- |
wenn die Nullversion nicht weit
genug verändert |
| |
Version |
|
einschränkten Produkts erlaubt |
|
werden kann, so das
die Folgeversionen den |
| |
|
|
Rückkopplung mit den |
|
gewünschten
Anforderungen nicht gerecht |
| |
|
|
Arbeitsabläufen |
|
wird, muss von Vorne begonnen werden. |
| |
|
+ |
Richtung der Entwicklung kann
|
- |
eine Dokumentation
ist schwierig, da schon |
| |
|
|
Schritt für Schritt korrigiert |
|
abgeschlossene
Produkte in neuen Versionen |
| |
|
|
und neu
definiert werden. |
|
verändert werden.
Somit muss zu jeder Version |
| |
|
|
|
|
eine eigene Dokumentation geschrieben |
| |
|
|
|
|
werden. |
|
Evolutionäres Modell |
|
 |
•
|
Metamodell |
+ |
flexibles Modell, Anpassung |
- |
sehr hoher
Steuerungsaufwand |
|
•
|
Ziel: Risikominimierung |
|
nach jedem Zyklus möglich |
- |
schlechte für kleine und mittlere Projekte |
| |
|
|
|
|
geeignet |
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
|
Spiralmodell |
|
|
|
|
extreme Vorgehensweisen |
|
 |
•
|
agile Methode |
+ |
stellt die Programmierung in den |
- |
ungeeignet für Festpreisprojekte |
| |
|
|
Mittelpunkt |
- |
unvollständiges Modell |
| |
|
+ |
unterstützt die Paarprogrammierung |
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
|
Extreme Programming |
|
Qualität von Software im Netzdiagramm
| Qualität
+ |
|
+
Umfang |
| |
 |
|
| Kosten
- |
|
-
Zeit |
Qualitätseigenschaften von Software
| 1. Zuverlässigkeit |
Flexibilität |
Korrektheit |
Verständlichkeit |
Robustheit |
3. Portabilität |
Ausfallsicherheit |
4. Benutzerfreundlichkeit |
| 2. Wartbarkeit |
5. Effizienz |
Validierbarkeit |
|
Theoretische Informatik
Entwicklung
|
1997 |
Unified Modelling Langauge |
UML Specification v. 1.0 |
Booch,
Jacobson, Rumbaugh |
|
1995 |
Objektorientierte Programmierung |
Design Patterns: Elements of
Reusable Object-Oriented Software |
Gang of Four |
|
1990 |
Algorithmen |
Introduction to Algorithms |
Corman,
Leiserson, Rivest |
|
1973 |
Nassi-Shneiderman Diagramme |
Flowchart techniques for structured programming |
Nassi,
Shneiderman |
|
1971 |
NP-Vollständigkeit |
The Complexity of Theorem Proving
Procedures |
Cook |
|
1968 |
Algorithmen |
The Art of Computer Programming |
Knuth |
|
1968 |
Formale Sprachen |
Regular Expression Search
Algorithm |
Thompson |
|
1968 |
Strukturierte Programmierung |
Goto Statements Considered
Harmful |
Dijkstra |
|
1968 |
Software Engineering |
Software Krise, Nato Konferenz |
Bauer |
|
1965 |
Komplexitätstheorie |
On the Computational Complexity of Algorithms |
Hartmanis &
Stearns |
|
1956 |
Automatentheorie |
Representation of Events in Nerve Sets and Finite Automata |
Kleene |
|
1956 |
Formale Sprachen |
Three Models for the Description of Language |
Chomsky |
| 1952 |
Hick's
law |
On the rate
of gain of information |
Hick |
|
1948 |
Informationstheorie |
A Mathematical Theory of Communication |
Shannon |
|
1941 |
Lambda- Kalkül |
The Calculi of Lambda-Conversion |
Church |
|
1937 |
Berechenbarkeitstheorie |
On Computable Numnbers with an Application to the
Entscheidungsproblem |
Turing |
|
1936 |
Berechenbarkeitstheorie |
An Unsolvable Problem of Elementary Number Theory |
Church |
|
1931 |
Berechenbarkeitstheorie |
Über formal unentscheidbare Sätze der Principia Mathematica und
verwandter Systeme I |
Gödel |
|
1914 |
Informationstheorie |
Probleme über Veränderungen von Zeichenreihen nach gegebenen
Regeln |
Thue |
|
1900 |
Berechenbarkeitstheorie |
Hilbert'sches Programm |
Hilbert |
|
1893 |
Formale Logik |
Grundgesetze der Arithmetik |
Frege |
|
1854 |
Boolsche Algebra |
An Investigation of the Laws of Thoughts |
Boole |
|
1842 |
Algorithmen |
Notes on the Analytical Engine |
Lovelace |
| 1670 |
Dualsystem |
Explication de l'Arithmétique Binaire |
Leibniz |
|
1820 |
Algorithmen |
Liber Algorithmus |
Al-Chwarismi |
Turing Awards
|
2008 |
Barbara Liskov |
praktische und
theoretische Grundlagen der Programmierung |
|
2007 |
Edmund M. Clarke, E. Allen Emerson and
Joseph Sifakis |
Modellprüfung |
|
2006 |
Frances E. Allen |
Parallele Programmierung |
|
2005 |
Peter Naur |
Design von Programmiersprachen (Algol 60), Compilerdesign |
|
2004 |
Vinton G. Cerf and Robert E. Kahn |
Vernetzung, TCP/IP |
|
2003 |
Alan Kay |
Objektorientierte Programmierung, Smalltalk |
|
2002 |
Ronald L. Rivest, Adi Shamir and Leonard M.
Adleman |
Public Key Kryptographie, RSA-Algorithmus |
|
2001 |
Ole-Johan Dahl and Kristen Nygaard |
Simula, OOP |
|
2000 |
Andrew Chi-Chih Yao |
Zufallszahlen, Kryptographie |
|
1999 |
Frederick P. Brooks, Jr. |
Rechnerarchitektur, IBM 360 |
|
1998 |
Jim Gray |
Datenbanktechniken |
|
1997 |
Douglas Engelbart |
Maus, Fenster |
|
1996 |
Amir Pnueli |
Temporallogik, Programmverifikation |
|
1995 |
Manuel Blum |
Komplexitätstheorie, Kryptographie |
|
1994 |
Edward Feigenbaum and Raj Reddy |
Künstliche Intelligenz, prakt. Umsetzung |
|
1993 |
Juris Hartmanis and Richard E. Stearns |
Komplexitätstheorie |
|
1992 |
Butler W. Lampson |
PC-Entwicklung (Microsoft) |
|
1991 |
Robin Milner |
Logik, funktionale Programmierung: ML |
|
1990 |
Fernando J. Corbató |
Time sharing |
|
1989 |
William (Velvel) Kahan |
Numerik, Floating Point Arithmetik |
|
1988 |
Ivan Sutherland |
Computergraphik |
|
1987 |
John Cocke |
Compilerbau, RISC-Computer |
|
1986 |
John Hopcroft and Robert Tarjan |
Algorithmen und Datenstrukturen (Lehrbuch) |
|
1985 |
Richard M. Karp |
NP-Vollständigkeit |
|
1984 |
Niklaus Wirth |
MODULA, PASCAL, Oberon |
|
1983 |
Ken Thompson and Dennis M. Ritchie |
Betriebssystem UNIX |
|
1982 |
Stephen A. Cook |
Komplexität, NP-Vollständigkeit |
|
1981 |
Edgar F. Codd |
Relationale Datenbanken |
|
1980 |
C. Antony R. Hoare |
Programmiersprachen |
|
1979 |
Kenneth E. Iverson |
Programmiersprachen, APL |
|
1978 |
Robert W. Floyd |
formale methoden zur Software-Entwicklung |
|
1977 |
John Backus |
FORTRAN, Backus-Naur-Form Grammatik |
|
1976 |
Michael O. Rabin and Dana S. Scott |
Automaten, |
|
1975 |
Allen Newell and Herbert A. Simon |
Künstliche Intelligenz, general Problem Solver |
|
1974 |
Donald E. Knuth |
Algorithmen, "The Art of Computer Programming" |
|
1973 |
Charles W. Bachman |
Datenbanken |
|
1972 |
Edsger W. Dijkstra |
Graphenalgorithmen, ALGOL |
|
1971 |
John McCarthy |
Künstliche Intelligenz, LISP |
|
1970 |
James H. Wilkinson |
Numerik |
|
1969 |
Marvin Minsky |
Perzeptron, Neuronale Netze |
|
1968 |
Richard Hamming |
Kodierung, Hamming-Distanz |
|
1967 |
Maurice V. Wilkes |
EDSA, erster Computer mit internem Programmspeicher |
|
1966 |
Alan J. Perlis |
Compilerbau |
Kombinatorik
Schrankenfunktionen
|
konstant |
 |
 |
1 µs |
using a constant-size lookup table or hash table |
|
inverse
Ackermannfunktion |
 |
 |
|
Chazelles Algorithmus für minimale Spannbäume |
|
wiederholt logaritmisch |
 |
 |
|
the find algorithm of Hopcroft and Ullman on a
disjoint set |
|
doppelt logaritmisch |
 |
 |
1,45 ms |
amortized time per operation using a bounded priority
queue |
|
logarithmisch |
 |
 |
13,97 ms |
Binäre Suche in einem sortierten Feld |
|
polylogarithmisch |
für
 |
 |
19,5 ms |
AKS-Primzahltest |
|
radix |
 |
 |
50 ms |
|
|
fraktionell |
 |
 |
0,11 sec |
Searching in a kd-tree |
|
linear |
 |
 |
0,25 sec |
Suche in einem unsortierten Feld |
|
n-log-n |
 |
 |
0,251 sec |
Mergesort, Heapsort |
|
quadratisch |
 |
 |
6,25 sec |
Bubblesort |
|
kubisch |
 |
 |
2,6 sec |
Gaußscher Algorithmus |
|
polynomial |
für
 |
 |
1,08 min |
Innere-Punkte-Verfahren |
|
exponentiell |
für d > 1 |
 |
357.020 yrs |
Simplex-Verfahren |
|
faktoriell |
 |
 |
4.918.572.438.905.056 yrs |
Brute-Force-Methode |
|
unentscheidbar |
 |
 |
|
Fleißiger-Biber-Funktion |
Formale Sprachen
4

Chomsky-Hierarchie
Menge aller Grammatiken/
Sprachen

|
Grammatik
|
Produktion
|
Produktionstyp
|
Metasprache
|
Beispiel
|
Automaten
|
Entscheid-
barkeit |
Abge-
schlossenheit |
|
Typ 0 |
 |
rekursiv aufzählbar |
|
pattern matching
Sprachen |
 |
 |
KSV* |
|
Typ 1 |
 |
kontextsensitiv |
Van Wijngaarden |
simple
Programmiersprachen |
 |
 |
CKSV* |
|
Typ 2 |
 |
kontextfrei |
Backus-Naur Form |
die meisten
Programmiersprachen |
 |
 |
KV* |
|
Typ 3 |
und
 |
regulär |
Reguläre Ausdrücke |
natürliche Sprachen |
 |
 |
CKSV* |
Regular Expressions
| metacharacter |
name |
matches |
| . |
dot |
any one character |
| [...] |
character class |
any character
listed |
| [^...] |
negated character class |
any character not
listed |
| ^ |
caret |
the position at
the start of the line |
| $ |
dollar |
the position at
the end of the line |
| \< |
backslash less-than |
the position at
the start of a word |
| \> |
backslash grater-than |
the position at
the end of a word |
| | |
or, bar |
matches either
expression it separates |
| (...) |
parentheses |
used to limit
scope of | |
Aussagenlogik
|
|
Einige Schlussregeln |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(PP) |
Modus Ponendo Ponens (der durch Setzen setzende Modus) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A → B |
|
Wenn
ich den Apfel, den ich halte, loslasse, so fällt er runter |
|
|
|
A
|
|
Ich
lasse den Apfel los |
|
|
|
B |
|
Also
fällt der Apfel runter (es sei denn, ich befinde mich in Schwerelosigkeit) |
|
|
|
|
|
|
|
|
|
|
|
|
|
(TT) |
Modus Tollendo Tollens (der durch Aufheben aufhebende Modus) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A → B |
|
Wenn es
regnet, wird die Straße nass |
|
|
|
|
|
|
¬B
|
|
Die
Straße ist nicht nass |
|
|
|
¬A |
|
Also
hat es nicht geregnet (es sei denn, die Straße ist wärmer als 100°C) |
|
|
|
|
|
|
|
|
|
|
|
|
|
(TP) |
Modus Tollendo Ponens (Disjunktiver Syllogimus) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A
v B |
|
Der
Computer ist entweder an oder er ist aus |
|
|
|
|
|
¬A
|
|
Der
Computer ist nicht an |
|
|
|
|
|
|
B |
|
Also ist der Computer aus (es sei
denn, er befindet sich in sleep mode) |
|
|
|
|
|
|
|
|
(PT) |
Modus Ponendo Tollens (dritter (stoischer) unbeweisbarer Schlussmodus) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¬ (A
B) |
|
Sokrates ist nicht gleichzeitig auf dem Isthmus und in Athen |
|
|
|
|
A
|
|
Sokrates ist in Athen |
|
|
|
|
|
|
|
¬ B |
|
Sokrates ist nicht auf dem Isthmus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(HS) |
Hypothetischer Syllogismus (Modus Barbara) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A → B |
|
Sokrates is aus Athen |
|
|
|
|
|
|
|
B → C |
|
Athen
ist aus Stein |
|
|
|
|
|
|
|
A → C |
|
Sokrates ist aus Stein
(equivocation, Ambiguiät) |
|
|
|
|
|
|
|
|
|
|
|
|
|
(DE) |
Disjunction elimination |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A → C |
Wenn es Pizza gibt, trinke ich Mineralwasser |
|
|
|
|
B → C |
Wenn es Fisch gibt, trinke ich Mineralwasser |
|
|
|
|
A
v B |
Es gibt Pizza oder Fisch |
|
|
|
|
C |
Also trinke ich Minearlwasser (es sei denn, es
ist keins mehr im Haus) |
| |
Wahrheitstafel |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
| |
|
P |
Q |
P
P |
P
Q |
P
Q |
P
Q |
P
|
Q |
P
Q |
|
| |
|
T |
T |
T |
T |
T |
T |
F |
T |
|
| |
|
T |
F |
T |
T |
T |
F |
T |
F |
|
| |
|
F |
T |
T |
T |
F |
T |
T |
F |
|
| |
|
F |
F |
T |
F |
T |
T |
T |
T |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
|
¬P |
¬Q |
P
¬P |
P
Q |
P
¬Q |
¬P
Q |
P ↓ Q |
P
Q |
|
| |
|
F |
F |
F |
T |
F |
F |
F |
F |
|
| |
|
F |
T |
F |
F |
T |
F |
F |
T |
|
| |
|
T |
F |
F |
F |
F |
T |
F |
T |
|
| |
|
T |
T |
F |
F |
F |
F |
T |
F |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Junktoren der Grundverknüpfungen |
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
| |
¬ -
Negation |
¬P |
nicht |
|
|
kehrt die Werte
um |
| |
- Konjunktion |
P
Q |
und (sowohl ... als auch ...) |
|
w
beide Werte w
sind |
| |
-
Disjunktion |
P
Q |
... oder auch
... |
|
|
w
minderstens ein
Wert w ist |
| |
- Implikation |
P
Q |
wenn ... dann
... |
|
|
f
der VS w ist
und der NS f ist |
| |
- Replikation |
P
Q |
|
|
|
f
der VS f ist
und der NS w ist |
| |
- Äquivalenz |
P
Q |
genau dann ... wenn ... |
|
w beide Werte w
oder beide f sind |
| |
- Definition |
|
|
|
|
| |
- Kontravalenz |
¬(P
Q) |
entweder ... oder ... |
|
w
ein Wert w und
der andere f ist |
| |
| - Sheffer Funktor |
¬(P
Q) |
nicht gleichzeitig |
|
f
wenn beide
Werte w sind |
| |
↓ - Nicod Funktor |
¬(P
Q) |
weder noch |
|
|
|
|
| |
-
Postsektion |
P
¬Q |
das eine ohne das andere |
|
|
|
|
| |
- Präsektion |
¬P
Q |
das andere ohne das eine |
|
|
|
|
| |
Kontradiktion |
P
¬P |
|
|
|
|
|
| |
|
|
¬P
Q |
es sei denn, dass |
|
|
|
|
Mathematische Grundlagen
| Disziplin |
Anwendung in der Informatik |
| Algebra |
Effizienz von Algorithmen, Komplexitätstheorie |
| Numerik |
Optimierung, Approximation |
| Zahlentheorie |
Kryptographie |
| Graphentheorie |
Komplexitätstheorie, Netzwerktheorie |
| Typentheorie |
type checking Algorithmen,
Semantik Natürlicher Sprachen |
| Kategorientheorie |
Funktionale Programmierung,
Domaintheorie, Graphgrammatiken |
| Spieltheorie |
Entscheidbarkeit |
Informationstheorie
Übertragungsmodell nach Shannon

Erweitertes Kommunikationsmodell

|
Leitungskodierung |
stellt sicher |
Anpassung an den Kanal |
durch |
Modulation der Zeichen in ein Signal |
|
Kanalkodierung |
stellt sicher |
Schutz vor Übertragungsfehlern |
durch |
Hinzufügen von Redundanz zum Signal |
|
Chiffrierung/ Dechiffrierung |
stellt sicher |
Ver-/Entschlüsselung |
durch |
Kryptographie /-analyse |
|
Quellenkodierung |
stellt sicher |
Datenkompression |
durch |
Entfernen von Redundanz im Signal |
Informationsgehalt
5
|
bit = die Datenmenge, die mit der
Antwort auf eine Elementarentscheidung
(Ja-Nein-Frage) übertragen wird |
|
|
|
|
|
bit |
|
|
Speicherkapazität des Gehirns |
1012 |
| |
Informationen, die
ein Mensch in 60 Jahre aufnimmt |
3 * 1010 |
|
|
Erbinformation |
1010 |
|
mittlerer
Informationsgehalt |
|
|
russisch |
4,36 |
|
|
deutsch |
4,11 |
|
|
englisch |
4,04 |
|
|
französisch |
3,97 |
|
|
Buchstabe e |
0,147004 |
|
|
Buchstabe x |
0,000129 |
|
Informationsfluss |
|
|
|
bit/s |
|
|
Seheindruck aus der Umwelt |
109 |
|
|
Höreindruck aus der Umwelt (max) |
107 |
|
|
Nervenleitung |
800 |
|
|
Sprechen |
300 |
|
|
Nachdenken in Worten |
100 |
|
|
Lesen (25
Buchstaben/sec) |
50 |
|
|
Übernahme ins Kurzzeitgedächtnis |
10 |
Heuristik
6
|
Basisheuristik |
|
Kann ich in der Liste der Heuristiken eine finden, die mir
weiterhilft? |
| |
|
Analogie |
|
Habe ich ein ähnliches Problem schon einmal bearbeitet? |
|
Kenne ich ein verwandtes Problem? |
| |
|
Verallgemeinerung |
|
Hilft mir der Übergang von einem Objekt zu einer Klasse von
Objekten weiter? |
| |
|
Spezialisierung |
|
Bringt es mich weiter, wenn ich zunächst einen leicht
zugänglichen Spezialfall löse? |
| |
| |
|
Variation |
|
Komme ich durch eine Veränderung der Problemstrellung der Lösung
näher? |
| Kann ich die Problemstellung anders ausdrücken? |
| |
|
Rückwärtssuche |
|
Ich betrachte das gewünschte Ergebnis. welche Operationen können
mich zu |
|
diesem Ergebnis führen? |
| |
|
Teile und herrsche |
|
Läßt sich das Problem in leichter lösbare Teilprobleme zerlegen? |
| |
|
Vollständige Enumeration |
|
Ich lasse einen Teil der Bedingungen weg. Kann ich mir Lösungen
verschaffen, |
| die wenigstens einen Teil der Zielbedingungen erfüllen? |
|
Kann ich mir alle Lösungen verschaffen, die diese Bedingungen erfüllen? |
Algorithmik
Klassifikation von Algorithmen nach Zweck

Klassifikation nach Umsetzung
Klassifikation nach Paradigma
|
Divide-and-conquer |
divides the problem into smaller
subproblems of the same type, and solve these subproblems
recursively |
|
Dynamic
programming |
remembers past results and uses
them to find new results |
|
Greedy |
always takes the best immediate,
or local, solution while finding an answer |
|
Linear
programming |
expresses a problem as a set of
linear inequalities and then attempts to maximize or minimize the
inputs |
|
Reduction |
transforms the problem |
|
Graph
exploration |
models problems on graphs |
|
Randomized |
uses a random number at least once during the computation to make a
decision |
|
Heuristic |
uses rules of thumb |
|
Genetic |
numerical optimization procedure
that is based on evolutionary principles such as mutation, deletion
and selection |
Praktische Informatik
Programmierkonzepte
Sprachelemente & Fehlerarten
|
|
|
Element |
Fehler |
werden gefunden von |
Beispiel, Erklärung |
|
Grundelemente der Sprache |
- |
Lexik |
|
|
|
|
Form der erlaubten Zeichenfolgen |
- |
Syntax |
syntaktische |
dem Compiler |
Tippfehler |
|
Bedeutung der erlaubten Zeichenfolgen |
- |
Sematik |
semantische |
der Laufzeitumgebung |
Feldgrenzverletzungen |
|
zweckmäßige Anwendung der Sprachelemente |
- |
Pragmatik |
logische |
dem Benutzer |
das Programm tut nicht das, was es sollte |
Kompilierprozesse
1. in der
interpretierten Sprache Lisp

|
|
2. in der kompilierten Sprache
C++ |
3. in der hybriden Sprache
Java (Bytecode) |
| Phase
1 |
 |
program is created in the
editor and stored on disk |
 |
program is created in the
editor and stored on disk |
| Phase
2 |
preprocessor program
processes the code |
compiler creates bytecodes
and stores them on disk |
| Phase
3.1 |
Compiler creates objects
code and stores it on disk |
class loader puts bytecodes
in memory |
|
Phase
3.2
|
Linker links the object code
with the libraries, creates
a.out and stores it in disk |
|
Phase 4
|
Loader puts program in
memory
|
Bytecode verifier confirms
that all bytecodes are valid
and do not violate Java's
security restrictions |
|
Phase
5
|
CPU takes each insstruction
and executes it, possibly
storing new data values as
the program executes |
Interpreter reads bytecode
and translates them into a
language that the computer
can understand possibly
storing data values as the
program executes |
Maschinensprachen/ Assembler
7
Transportbefehle
LOAD, STORE
Arithmetische und logische Befehle
ADD, SUB, AND, OR, CMP
Schiebebefehle
SH, ROT
Sprungbefehle
JMP, JGT
Sonderbefehle
Darstellung in Maschinensprache
|
0100 LOAD 0118 |
|
|
0102 STORE 0116 |
|
|
0104 LOAD 0114 |
|
|
0106 JUMPZERO 011a |
|
|
0108 SUB 0118 |
|
|
010a
STORE 0114 |
|
|
010c
LOAD 0116 |
|
|
010e
ADD 0116 |
|
|
0110
STORE 0116 |
|
|
0112
JUMP 0104 |
|
|
0114
#2 |
|
|
0116
#0 |
|
|
0118
#1 |
|
|
011a
STOP |
|
Darstellung in Hochsprache
y = 1;
while (x !=0){
x = x - 1;
y = y + y;
}
d.h. y = 2 ^x
Evolution

|
6th generation |
future |
neural networks |
|
5th generation |
1990 |
constraint-based and logic programming languages |
|
4th generation |
1970-1990 |
non-procedural, high-level specification
languages |
|
3rd generation |
1962-1970 |
procedural languages |
|
2nd generation |
1959-1961 |
assembly languages |
|
1st generation |
1954-1958 |
machine-level programming languages |
Typisierung
|
Wie streng unterscheidet die Sprache die Datentypen? |
| |
strong |
weak |
|
Wann werden die Datentypen festgelegt, zur Lauf- oder zur
Übersetzungszeit? |
| |
dynamic |
static |
|
Werden die Datentypen explizit genannt oder per Typableitung
ermittelt? |
| |
explicit |
implicit |
Vergleich
Lexik
Standardbibliotheken
|
Standardbibliotheken (C) |
|
assert.h |
Fehlerdiagnose |
|
ctype.h |
Test- und
Umwandlungsfunktionen für zeichen (Charakterbehandlung) |
|
erno.h |
Funktionen zur
Fehlerbehandlung |
|
float.h |
Grenzwerte der
Fließkommadarstellung |
|
limits.h |
Grenzwerte für Ganzzahltypen |
|
likale.h |
Funktionen für lokale
Besonderheiten |
|
math.h
|
Mathematische Funktionen
(double) |
|
setjmp.h
|
Nichtlokale Sprünge über
Funktionen |
|
signal.h
|
Signalbehandlung |
|
stdarg.h |
Funktionen mit variablen
Listen |
|
stddef.h |
Allgemeine Typendefinitionen
und Makros |
|
stdio.h |
Ein-/Ausgabe- und
Dateioperationen |
|
stdlib.h |
Hilfefunktion |
|
string.h |
Zeichenfolge |
|
time.h |
Zeitbestimmungsfunktionen |
|
Mathematische Funktionen (C) |
|
sin(x) |
Sinus (in Bogenmaß) |
|
cos(x) |
Cosinus |
|
tan(x) |
Tangens |
|
asin(x) |
arcsin(x) im Definitionsbereich
[] |
|
acos(x) |
arcsin(x) im Definitionsbereich [] |
|
atan(x) |
arcsin(x) im Definitionsbereich [] |
|
atan2(x,y) |
arcsin(x) im Definitionsbereich [] |
|
sinh(x) |
Sinus Hyperbolicus von x |
|
cosh(x) |
Cosinus Hyperbolicus von x |
|
tanh(x) |
Tangens Hyperbolicus von x |
|
exp(x) |
Exponentialfunktion (ex) von
x |
|
log(x) |
Logarithmus naturalis |
|
log(10) |
Logarithmus zur Basis |
|
pow(x,y) |
x hoch y |
|
sqrt(x) |
2te Wurzel von x |
|
ldep(x, int n) |
x mal 2 hoch n |
|
fabs(x) |
absoluter Betrag von x |
|
floor(x) |
rundet positive Zahlen ab |
|
cell(x) |
rundet positive Zahlen auf |
|
.net Namespaces |
|
Windows Presentation Foundation |
|
|
Windows Forms |
|
|
Communications |
|
|
Data |
|
|
Workflow |
|
|
Web |
|
Syntax
& Semantik
Einrückungsstil
| |
Original K&R
for(i=0; i < 10;
i++){
/* Anweisungen */
}
|
|
Allman
for(i=0; i < 10;
i++)
{
/* Anweisungen */
}
|
| |
K&R Variant
for(i=0; i < 10;
i++){
/* Anweisungen */
}
|
|
Whitesmiths
for(i=0; i < 10; i++)
{
/* Anweisungen */
}
|
| |
|
|
Horstmann
for(i=0; i < 10; i++)
{ /*
Anweisungen */
}
|
Programmstrukturen
|
Ausdrücke |
werden ausgewertet |
und liefern einen Wert |
(ggf. mit
Seiteneffekten) |
|
Anweisungen
|
werden ausgeführt |
und haben eine Wirkung |
(ggf. mit
Wert) |

|
|
einfache Anweisungen |
|
Deklaration |
Festlegung von Dimension,
Bezeichner, Datentyp und weiteren Aspekten einer Variablen oder
eines Unterprogramms |
|
Definition |
einer Variablen wird ein
bestimmter Speicherbereich zugerodnet (meistens durch Deklaration) |
|
Initialisierung |
eine Variable wird auf einen initialen
Anfangswert gesetzt (Deklaration und Zuweisung in einem, bzw. die
erste Zuweisung an eine Variable) |
|
Zuweisung |
eine Varibale wird auf einen neuen Wert
gesetzt:
(Bezeichner = Literal) oder (Bezeichner = Bezeichner) |
|
Funktionsaufruf |
ruft eine Funktion auf |
|
Rückgabeanweisung |
spezifiziert den
Rückgabewert einer Funktion |
|
Instanzerzeugung |
erzeugt ein neues
Objekt einer Klasse |
|
Zusicherung |
Aussage über den
Programmzustand (d.h. die Belegung der Variablen) wenn der
Kontrollfluss eine bestimmte Stelle erreicht hat |
|
Kommentar |
Anmerkung/ Hinweis vom
Programmierer, der vom Compiler nicht ausgeführt wird |
|
|
zusammengesetzte Anweisungen |
|
Dreieckstausch |
ein Verfahren zum
Austausch der Werte zweier Variablen |
|
Ein-/ Ausgaben |
Daten IO, Datei IO, Datenbank
IO, Netzwerk IO, Hardware Control |
Kontrollstrukturen

|
if ... then |
|
 |
|
Überprüfung
einer Zahl auf "kleiner als 50" |
|
VB6 |
C++ |
|
If iZahl < 50 Then
Label.Caption = "Die Zahl ist kleiner als 50."
End If
|
if(zahl
< 50) {
cout<<"Die
Zahl "<<zahl;
cout<<" ist kleiner als 50."<<endl;
}
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
if ... then ...
else |
|
 |
|
Überprüfung
einer Zahl auf "gerade oder ungerade" |
|
VB6 |
C++ |
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
if(zahl
% 2 == 0) {
cout<<"Die
Zahl "<<zahl<<" ist
gerade."<<endl;
}
else {
cout<<"Die
Zahl "<<zahl<<" ist
ungerade."<<endl;
}
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
Mehrfach-Verzweigung 1 |
|
 |
|
Überprüfung
einer Zahl auf "kleiner, größer oder gleich 50" |
|
VB6 |
C++ |
|
If iZahl < 50 Then
Label.Caption = "Die Zahl ist kleiner als 50."
ElseIf iZahl = 50 Then
Label.Caption = "Die Zahl ist gleich 50."
Else
Label.Caption = "Die Zahl ist größer als 50."
End If
|
if(zahl
< 50) {
cout<<"Die
Zahl "<<zahl;
cout<<" ist kleiner als 50."<<endl;
}
else
if(zahl == 50) {
cout<<"Die
Zahl "<<zahl<<" ist gleich 50."<<endl;
}
else {
cout<<"Die
Zahl "<<zahl;
cout<<" ist groesser als 50."<<endl;
}
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
Mehrfach-Verzweigung 2 |
|
 |
|
Überprüfung
einer Zahl auf die Bereiche 1000-2000, 0-1000, bzw. <0 & >2000 |
|
VB6 |
C++ |
|
If iMesswert > 0 And iMesswert < 2000 Then
If iMesswert > 1000 Then
Lbl.Caption = "Hochdruck"
Else
Lbl.Caption = "Normal oder Tiefdruck"
End If 'iMesswert > 1000
Else
Lbl.Caption = "Der Messwert ist ungültig."
End If 'iMesswert > 0 And iMesswert < 2000
|
if (messwert > 0
&& messwert < 2000) {
if (messwert > 1000)
cout << "Hochdruck"
else
cout << "Normal oder Tiefdruck"
}
else
cout << "Der Messwert ist
ungueltig";
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
Select Case |
|
 |
|
Anwendung der vier
Grundrechenarten auf zwei natürliche Zahlen |
|
VB6 |
C++ |
|
Select Case cmb_rechenarten.ListIndex
Case "0"
lbl.Caption = zahl1 + zahl2
Case "1"
lbl.Caption = zahl1 - zahl2
Case "2"
lbl.Caption = zahl1 * zahl2
Case "3"
lbl.Caption = zahl1 / zahl2
'Case Else
'lbl.Caption "Auswahl nötig"
End Select
|
switch(operation) {
case 1:
cout<<zahl1+zahl2<<endl;
break;
case 2:
cout<<zahl1-zahl2<<endl;
break;
case 3:
cout<<zahl1*zahl2<<endl;
break;
case 4:
cout<<zahl1/zahl2<<endl;
break;
}
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
While Schleife |
|
 |
|
Ausgabe der Zahlen 1-10 |
|
VB6 |
C++ |
|
Dim iZaehler As Integer
iZaehler = 1
While iZaehler <= 10
Text1.Text = Text1.Text & iZaehler & vbNewLine
iZaehler = iZaehler + 1
Wend
|
int
i=1;
while (i<=10) {
cout << i <<
"\n" ;
i++;
}
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
Do ... Loop |
|
 |
|
Ausgabe der
Zahlen 10-1 |
|
VB6 |
C++ |
|
Dim iZaehler As Integer
iZaehler = 10
Do
Text1.Text = Text1.Text & iZaehler & vbNewLine
iZaehler = iZaehler - 1
Loop Until iZaehler = 0
|
int
i=10;
do {
cout << i <<
"\n" ;
i--;
} while (i>0); |
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
For ... Next |
|
 |
|
Ausgabe eines
Textes rückwärts |
|
VB6 |
C++ |
|
sText = tbx_Eingabe.Text
iLaenge = Len(tbx_Eingabe)
For i = iLaenge To 1 Step -1
sInverText = sInverText & Mid(sText, i, 1)
Next
lbl_Ausgabe.Caption = sInverText
|
cin>>name;
const int max = strlen(name);
int i=max;
for(i=max-1; i>=0; i--) {
cout<<name[i];
}
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
Try ... Catch...Finally |
|
 |
|
Pseudocode |
|
VB.net |
C# |
|
try
{
gefaehrlicheFunktion();
}
catch
(OutOfMemory) {
Console.WriteLine( "catch");
}
catch
(FileNotFound) {
Console.WriteLine( "catch");
}
finally
{
Console.WriteLine("finally");
} |
try
{
gefaehrlicheFunktion();
}
catch
(OutOfMemory) {
Console.WriteLine( "catch");
}
catch
(FileNotFound) {
Console.WriteLine( "catch");
}
finally
{
Console.WriteLine("finally");
} |
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
|
Continue |
|
 |
|
Vermeidung der Division durch 0 |
|
VB.net |
C# |
|
For i = -10
To 10
If
i = 0 Then
Continue
For
End
If
TextBox1.Text
= TextBox1.Text & i & vbNewLine
Next i |
for (i=-10;
i<=10; i++) {
if(i==0)
continue;
document.write(1/i);
}
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
If iZahl Mod 2 = 0 Then
Label.Caption = "Die Zahl ist gerade."
Else
Label.Caption = "Die Zahl ist ungerade."
End If
|
|
Operatoren
|
logische Operatoren |
|
Symbol |
bezeichnet |
Beispiel
(x=50,
y= 100) |
Rückgabewert |
| |
|
|
|
|
! |
nicht |
|
|
|
&& |
und |
(x == 50 && y == 100) |
true |
|
|| |
oder |
(x == 10 || y == 100) |
true |
|
^ |
bitweises exkl. oder |
|
|
|
& |
bitweises und |
|
|
|
| |
bitweises inkl. oder |
|
|
|
Vergleichsoperatoren |
|
== |
gleich |
x == y; |
false |
|
!= |
ungleich |
x != y; |
true |
|
< |
kleiner |
y < x; |
false |
|
> |
größer |
y > x; |
true |
|
<= |
kleiner
gleich |
x <= 50; |
true |
|
>= |
größer
gleich |
y >= 50; |
true |
arithmetische Operatoren
in C/C++
|
Normal |
Zusammengefasst |
Postfix |
| |
|
|
|
counter = counter + 1; |
counter += 1; |
counter ++; |
|
counter = counter - 1; |
counter -= 1; |
counter --; |
|
counter = counter * 1; |
counter *= 1; |
|
|
counter = counter / 1; |
counter /= 1; |
|
|
counter = counter & 1; |
counter %= 1; |
|
Präfix und
Postfix
|
x = counter ++; //x = 0, counter = 1 |
Übertrage den Wert zuerst und
inkrementiere ihn dann |
|
x = ++ counter; //x = 1, counter = 1 |
Inkrementiere den Wert zuerst und
übertrage ihn dann |
Datentypen & -strukturen
|
x |
= |
50; |
| l-Wert |
|
|
r-Wert |
|
Bezeichner/ |
|
Literal/ |
|
Speicherzelle |
|
Speicherinhalt |
|
einfache
Variablen
|
|
lokale Varaiblen |
dienen zum Speichern wechselnder
Werte innerhalb einer Funktion |
|
globale Varaiblen
|
dienen zum Speichern wechselnder Werte innerhalb
eines ganzen Programms
|
|
Konstanten
|
werden definiert um konkrete,
konstante Werte zu
repräsentieren
|
|
statische Variablen
|
behalten nach Beendigung der
Funktion ihren Wert
|
|
Hilfsvariablen
|
|
Flag (Dummy)
|
eine binäre Variable, welche als
Hilfsmittel zur Kennzeichnung bestimmter Zustände benutzt werden
kann
|
|
Laufvariable
|
wird in einer Zählschleife als
Zähler benutzt
|
Datentypen
|
Prg |
Bezeichner |
Typ |
Größe (32 bit |
Wertebereich |
|
Sprache |
Präfix
|
|
Architektur) |
|
|
|
gänige Datentypen |
|
signed |
unsigned |
| |
|
|
|
Ganze Zahlen |
| |
|
short int |
2 byte |
-32.768 |
-> |
32.767 |
0 -> 65.535 |
|
|
i |
int |
4 byte |
-2.147.483.648 |
-> |
2.147.483.647 |
0 ->
4.294.967.295 |
|
|
lg |
long int |
4 byte |
-2.147.483.648 |
-> |
2.147.483.647 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Gleitkommazahlen |
|
|
|
float |
4 byte |
- 3,4 * 10-38 |
-> |
3,4 * 1038 |
6-Nachkommastellen |
|
|
d |
double |
8 byte |
- 1,7 * 10-308 |
-> |
1,7 * 10308 |
15-Nachkommastellen |
|
|
|
long double |
12 byte |
- 1,2 * 10-4932 |
-> |
1,2 * 104932 |
18-Nachkommastellen |
|
|
|
long |
|
|
|
|
|
|
|
|
|
Alphanumerische Zeichen |
|
|
|
char |
1 byte |
128 |
-> |
127 |
256 Ascii Zeichen |
|
|
s |
string |
|
|
|
|
|
|
|
|
|
Andere |
| |
|
bool |
|
Wahrheitswerte true or false
|
| |
|
void |
|
|
|
programmiersprachenspezifische
Datentypen |
|
VB6 |
v |
variant |
|
|
|
VB6 |
|
| |