Uploaded by Jaspreet Singh

Programmierung 1 - 01 - Wir starten

advertisement
Programmierung 1
- Wir starten -
Quelle: Kroneck (2013)
Prof. Dr.-Ing. Frank Neumann
HTW Berlin, Ingenieurinformatik
email: frank.neumann@htw-berlin.de
Wir starten
Ziele
• Verstehen des Begriffs Programmieren und von dessen Inhalten
• Erlernen des Erzeugens von einfachen Konsolen-Anwendungen
• Verstehen der Begriffe Compiler, Integrated Development Environment (IDE) und C#
• Kennenlernen des Aufbaus des Visual Studios (VS)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
2
Inhalt
1
Was ist Programmieren?
2
Compiler
3
Hallo.cs
4
IDE
5
C#
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
3
Was ist Programmieren?
Bestandsaufnahme
Programmiererfahrungen vorhanden?
– in welcher Sprache
– in welchem Umfang
Mit welchen Werkzeugen?
– Entwicklungsumgebungen
– Bibliotheken
Was wurde implementiert
– Anwendungsgebiet (Web, Tools, …)
– Welche bestehende Software wurde eingebunden/angepasst?
Wie wurde implementiert
– allein/im Team
– prozedural/objektorientiert
– mit/ohne vorausgehenden Konzeptüberlegungen
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
4
Was ist Programmieren?
Wir bringen die Gemeinsamkeiten auf den Punkt…
Ausgangspunkt:
Anforderungen
Setzt um in
long fakultaet(long n)
{
if (n == 0)
{
return 1;
}
else
{
return n *
fakultaet(n-1);
}
}
Programmiersprache
Quellcode
Texteditor
Kompilieren und
linken/binden
oder
interpretieren
Ziel:
Ausgeführter
Maschinencode
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
5
Was ist Programmieren?
Versuch einer Definition – dafür Einordnung in den Softwarelebenszyklus
Weitgehend
synonym für
“Programmieren”
Quelle: Balzert (2011)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
6
Was ist Programmieren?
Versuch einer Definition
Programmieren:
Der Begriff Programmieren wird weitgehend synonym für die eigentliche Implementierung
eines Softwareprodukts verstanden. Hierzu gehören u.a. folgende Einzelaktivitäten:
− Konzeption von Datenstrukturen und Algorithmen
− Strukturierung des Programms
− Umsetzung der Konzepte in die Konstrukte der verwendeten Programmiersprache
− Angaben zur Zeit- und Speicherkomplexität des Programms in Abhängigkeit von den
Eingabegrößen
− Test oder Verifikation des entwickelten Programms einschließlich Testplanung und
Testfallerstellung bei Anwendung einer Testmethode.
Quelle: Balzert (2011)
Im Fach Programmierung werden wir auch darüberhinausgehende Aktivitäten der
Softwareentwicklung betrachten, z.B. Spezifikation und Entwurf.
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
7
Was ist Programmieren?
Weitere Begriffe (1)
Softwaretechnik (software engineering):
– Software engineering (SWE) is the application of engineering to the development of software in
a systematic method. Quelle: Wikipedia
– Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und
Werkzeugen für die arbeitsteilige, ingenieurmäßige Herstellung, Anwendung und Pflege von
umfangreichen Softwaresystemen. Quelle: Balzert (2011)
Quelle: Balzert (2011)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
8
Was ist Programmieren?
Weitere Begriffe (2)
Softwareentwicklung (software development):
Umfasst die Planung, Definition, den Entwurf und die Implementierung eines
Softwareprodukts, das die geforderten Qualitätseigenschaften besitzt und die
Kundenwünsche erfüllt.
Nach der Softwareerstellung befindet sich das Softwareprodukt in der Anwendung und
muss gepflegt und gewartet werden.
Wartung bedeutet, ein nach der Inbetriebnahme auftretendes Fehlverhalten zu
beseitigen. Pflege bedeutet, ein Produkt an geänderte Bedingungen anzupassen oder
aufgrund neuer oder geänderter Anforderungen weiterzuentwickeln.
Quelle: Balzert (2011)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
9
Inhalt
1
Was ist Programmieren?
2
Compiler
3
Hallo.cs
4
IDE
5
C#
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
10
Compiler
Wozu brauchen ich denn den?
Das wichtigste Programm, um mit einem C#-Programm richtig loszulegen, ist der
Compiler. Dieser übersetzt den verhältnismäßig gut lesbaren Programmcode in eine
andere, für den Computer einfacher verständliche Sprache.
Fast noch schlimmer:
Es ist erstmal noch kein Maschinencode. Der Programmcode wird in die Intermediate
Language (IL-Code genannt) übersetzt. Erst beim Ausführen des Programms wird
nun der IL-Code in Maschinencode übersetzt. Dies übernimmt ein weiterer Compiler –
der sogenannte Just-in-time-Compiler (JIT-Compiler genannt).
Quelle: Wurm (2017)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
11
Compiler
Wie kann ich mir das vorstellen?
C#
C#
if (a > b) max = a; else max = b;
IL-Code
C#
Compiler
IL_0004:
IL_0005:
IL_0006:
IL_0008:
IL_0009:
IL_000a:
IL_000c:
IL_000d:
IL Code
(+ Metadaten)
Lader
ldloc.0
ldloc.1
ble.s IL_000c
ldloc.0
stloc.2
br.s
IL_000e
ldloc.1
stloc.2
Maschinencode
Verifizierer
mov ebx,[-4]
mov edx,[-8]
cmp ebx,edx
jle 17
mov ebx,[-4]
mov [-12],ebx
...
JIT Compiler
Maschinencode
Warum geht denn das nicht einfacher?
Quelle: Mössenböck (2015)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
12
Compiler
Begriffe
C#-Compiler:
Der C#-Compiler erzeugt aus C#-Quellcode (cs Datei) IL-Code.
IL-Code (IL für Intermediate Language):
IL-Code ist ein Zwischencode, der von den Compilern der unterschiedlichen .NET-Sprachen
erzeugt wird. Die Erzeugung von Zwischencode ermöglicht die Plattformunabhängigkeit und
wahlweise Optimierungen. Die Intermediate Language ist eine objektorientierte
Assemblersprache.
JIT-Compiler (JIT für Just-in-time):
Der JIT-Compiler erzeugt zur Laufzeit des Programms aus IL-Code den für die jeweilige
Prozessorarchitektur (x86, x64, ARM) benötigten Maschinencode.
Maschinencode:
Der Maschinencode enthält Anweisungen, die vom Prozessor direkt ausgeführt werden
können.
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
13
Compiler
Wo finde ich den Compiler?
Der C#-Compiler ist Teil des .NET Frameworks.
Das jeweils aktuelle .NET-Framework ist bei der Windows-Installation bereits
dabei.
• Windows 7 enthält das .NET Framework Version 4
• Windows 8 das .NET Framework 4.5
• Windows 10 ohne Updates das .NET-Framework 4.6, usw.
Natürlich kann man die neuen Versionen auch in ältere Windows-Versionen
installieren.
csc.exe
Der Compiler ist die
(csc steht für
C-Sharp-Compiler) und in dem Verzeichnis
C:\Windows\Microsoft.NET\Framework64\V***
zu finden.
Quelle: Wurm (2017)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
14
Inhalt
1
Was ist Programmieren?
2
Compiler
3
Hallo.cs
4
IDE
5
C#
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
15
Hallo.cs
Wie kann ich meinen C#-Quellcode schreiben?
• Das geht erstmal in jedem beliebigen Texteditor (Notepad  oder auch Notepad++
)…
• Wie gehe ich vor?
1.
2.
3.
4.
schreiben,
abspeichern,
durch den Compiler anschließend zu einem Programm übersetzen und
laufen lassen.
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
16
Hallo.cs
Jetzt geht’s im Texteditor wirklich los…
Damit der Compiler Console
ohne Namespace-Angabe
kennt, wird using System
angegeben. Ohne using
System müsste man sonst
System.Console schreiben.
using System;
public class Programm
{
public static void Main()
{
Console.WriteLine("Hallo Ingenieurinformatik");
Console.ReadKey();
}
}
Alle Programme starten mit
der Main-Methode. Alle
Befehle innerhalb der beiden
geschwungenen
Klammern in dieser Methode
werden Zeile für Zeile
ausgeführt. Die Main-Methode
gibt es immer.
Prof. Dr.-Ing. F. Neumann
Das Programm wartet durch die
ReadKey-Methode, bis der
Benutzer eine Taste drückt, und
geht erst dann zur nächsten Zeile
weiter. Dadurch wird es nicht
automatisch beendet, und man hat
nicht das Problem, dass das
Fenster nur kurz aufflackert.
Programmierung 1 - Nur für Lehrzwecke
Zeigt mithilfe der Methode
WriteLine den Text "Hallo
Ingenieurinformatik"
in der Konsole an.
Quelle: Wurm (2017)
17
Hallo.cs
Jetzt wird kompiliert und ausgeführt!
Annahmen:
1. Hallo.cs liegt im aktuellen Verzeichnis.
2. Hallo.exe soll ebenfalls dort erzeugt werden.
•
•
•
Eine Konsole öffnen: „cmd.exe“
Dort eingeben: „C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc
/out:Hallo.exe Hallo.cs“
Und „Hallo.exe“ starten
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
18
Inhalt
1
Was ist Programmieren?
2
Compiler
3
Hallo.cs
4
IDE
5
C#
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
19
IDE
Ein Texteditor ist gut …
…aber mit einer integrierte Entwicklungsumgebung macht das Programmieren deutlich
mehr Spaß.
Integrated Development Environment (IDE):
Eine integrierte Entwicklungsumgebung ist eine Anwendung für Softwareentwickler, die
die wesentlichen Werkzeuge (Quellcodeeditor, Compiler, Debugger, …) für die
Programmierung innerhalb einer einheitlichen Benutzeroberfläche zur Verfügung stellt.
Für C# stehen unter Windows folgende IDEs zur Verfügung:
• Visual Studio (VS) in verschiedenen Editionen
• SharpDevelop
• Visual Studio Code (nur .NET Core)
• Xamarin Studio
• Rider
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
20
IDE
Wir wählen Visual Studio Enterprise 2017
Warum?
Umfasst neben den Features für die Entwicklung von:
• Webanwendungen
• Desktopanwendungen
• Universal Windows Platform Apps
Enthält viele Tools, die das Programmieren erleichtern:
• Modellieren von Klassendiagrammen
• Visualisieren von Code mit Code Maps
• Automatische Syntaxprüfung und –ergänzung
• …
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
21
IDE
Jetzt geht’s im VS wirklich los… (1)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
22
IDE
Jetzt geht’s im VS wirklich los… (2)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
23
IDE
Jetzt geht’s im VS wirklich los… (3)
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
24
IDE
Jetzt geht’s im VS wirklich los… (4)
Prof. Dr.-Ing. F. Neumann
Was passiert
jetzt?
Programmierung 1 - Nur für Lehrzwecke
25
IDE
Jetzt geht’s im VS wirklich los… (5)
• Toolbareintrag „Starten“ steht für Befehl „Debugging
starten“, Shortcut: F5
Mehr dazu in der nächsten Vorlesung
• Alternative ist der Befehl „Starten ohne Debugging“,
Shortcut: Strg+F5
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
26
IDE
Überblick zur Benutzeroberfläche des VS
Quellcode-Editor mit
Codevervollständigung und
DropDowns für Navigation
Ausgabefenster zeigt Statusmeldungen
für verschiedene Funktionen (Erstellen,
Debuggen, …) an.
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
Eine Projektmappe besteht aus
Projekten.
Ein Projekt setzt sich aus
verschiedenen Quellcode- u.a.
Dateien zusammen.
Eigenschaftsfenster zeigt verschiedene
Eigenschaften und Ereignisse für
ausgewählte Dateien etc. an.
27
Inhalt
1
Was ist Programmieren?
2
Compiler
3
Hallo.cs
4
IDE
5
C#
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
28
C#
Einordnung von C#
• C# ist eine objektorientierte Sprache für die .NETPlattform.
• Die Sprache enthält Elemente von Java, C++, Visual
Basic, Delphi und funktionaler Programmiersprachen.
• Sie wurde durch folgende Organisationen
standardisiert: Ecma (ECMA-334) und ISO (ISO/IEC
23270:2006).
• C# wurde von einem kleinen Team unter der Leitung
von Anders Hejlsberg bei Microsoft entworfen (2002)
und wird laufend weiterentwickelt (VS2015 – C# 6.0,
VS2017 – C# 7.0).
• Mehr zur Person von A. Hejlsberg unter:
https://channel9.msdn.com/shows/Behind+The+Code/
Life-and-Times-of-Anders-Hejlsberg/
Quellen: Mössenböck (2015) und Wikipedia
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
29
C#
Andere .NET-Sprachen
C#
C#
Compiler
C#
C++
C++
Compiler
VB
...
VB
Compiler
…
Compiler
IL Code
(+ Metadaten)
Lader
Verifizierer
JIT Compiler
Maschinencode
if (a > b) max = a; else max = b;
IL-Code
IL_0004:
IL_0005:
IL_0006:
IL_0008:
IL_0009:
IL_000a:
IL_000c:
IL_000d:
ldloc.0
ldloc.1
ble.s IL_000c
ldloc.0
stloc.2
br.s
IL_000e
ldloc.1
stloc.2
Maschinencode
mov ebx,[-4]
mov edx,[-8]
cmp ebx,edx
jle 17
mov ebx,[-4]
mov [-12],ebx
...
Insgesamt gibt es mehr als 30 aktive .NET Sprachen
Siehe https://de.wikipedia.org/wiki/Liste_von_.NET-Sprachen
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
Quelle: Mössenböck (2015)
30
Was gelernt?!
Quiz zur Zusammenfassung (1)
 Was ist Programmieren und welche Einzelaktivitäten umfasst es?
 Unter Programmieren verstehen wir die eigentliche Implementierung eines Softwareproduktes.
Es umfasst u.a. das Strukturieren des Programms, das Schreiben des Quellcodes, das Debuggen
und Testen des Programms.
 Welche Art von Ausgaben und Eingaben ermöglicht eine Konsolenanwendung?
 Ein Nutzer kann mit einer Konsolenanwendung nur textbasiert kommunizieren.
 Welche Methode benötigt jedes ausführbare Programm (Executable = exe)?
 Die Main-Methode, die unmittelbar nach dem Laden des Programms ausgeführt wird.
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
31
Was gelernt?!
Quiz zur Zusammenfassung (2)
 Welche Aufgabe hat der C#-Compiler?
 Der C#-Compiler erzeugt aus C#-Quellcode (cs Datei) IL-Code..
 Welche Aufgabe hat der JIT-Compiler?
 Der JIT-Compiler erzeugt zur Laufzeit des Programms aus IL-Code den für die jeweilige
Prozessorarchitektur (x86, x64, ARM) benötigten Maschinencode.
 Was versteht man unter einer IDE?
 Unter einer IDE versteht man eine integrierte Entwicklungsumgebung für Softwareentwickler,
die die wesentlichen Werkzeuge (Quellcodeeditor, Compiler, Debugger, …) für die
Programmierung innerhalb einer einheitlichen Benutzeroberfläche zur Verfügung stellt
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
32
Danke für Ihre Aufmerksamkeit!
Gibt es Fragen?
Prof. Dr.-Ing. F. Neumann
Programmierung 1 - Nur für Lehrzwecke
33
Related documents
Download