• Keine Ergebnisse gefunden

Hochschule RheinMain - Fachbereich DCSM

N/A
N/A
Protected

Academic year: 2022

Aktie "Hochschule RheinMain - Fachbereich DCSM"

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Hochschule RheinMain - Fachbereich DCSM

Algorithmen und Datenstrukturen Praktikum

Angewandte Informatik: LV 2122

Wirtschaftsinformatik: LV 2122

(2)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 2

Hochschule RheinMain - Fachbereich DCSM

Organisatorisches

(3)

Organisatorisches

ADS-Vorlesung

– Gemeinsam für AI und WI

– Verwendet Pseudo-Code (sprach-neutral, an „C“ angelehnt) – Erwartet Einführung einer zweiten Computersprache für

Praktikumsaufgaben

• Praktikumsgruppen Angewandte Informatik

– Konkrete Implementierungssprache: „C“

– Bereitet u.a. auf LV „Betriebssysteme“, „Computergrafik“ u.a.

hardware-nahe Einsatzgebiete vor

Praktikumsgruppen Wirtschaftsinformatik

– Konkrete Implementierungssprache: „Ruby“

– Bereitet auf LV „Webbasierte Anwendungen“ und einige Wahlpflicht-

Fächer vor

(4)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4

Organisatorisches

Die Sprache Ruby

– Eigenwerbung: „A programmer‘s best friend“

– Eine der ca. 10 am meisten verbreiteten Computersprachen

– Konzeptionell besonders „sauber“, daher zum Lernen besonders geeignet

– Grundlage des bekannten Frameworks „Rails“ zur Erzeugung Web- basierter Anwendungen LV „WBA“ im kommenden Semester!

– Eine Skriptsprache

• Keine Compilerläufe notwendig, besonders kurzer Entwicklungs-Zyklus

• Auf Entwickler-Effizienz, nicht Hardware-Effizienz optimiert:

Programme laufen nicht so schnell wie C- oder Java-Programme, aber sie lassen sich erheblich leichter schreiben!

– Eine Hochsprache

• Viele komfortable Features bereits eingebaut

• Aufgaben-orientierte, nicht maschinen-orientierte Arbeitsweise

– Eine „multi-paradigm“-Sprache: Im Kern objekt-orientiert, aber mit

imperativen, funktionalen und deklarativen Möglichkeiten!

(5)

Organisatorisches

Spielregeln zum Praktikum

– Eigene Studienleistung, geht zu 30% in die Modulnote ein – Ca. 12 Termine (Vorsicht – Feiertage)

– 75%-Regel: Wer mehr als 25% der Termine verpasst, kann das Praktikum nicht bestehen – unabhängig vom Grund.

• Auch Atteste nützen deshalb nichts

Versäumen Sie daher nicht mehr als 2 Termine!

– Es wird 10 Übungsblätter geben

• Einzeln bearbeiten (keine Gruppenarbeit)

• Abnahmen erfolgen durch Tutoren & Dozenten

– Lösungen werden vorgeführt

Jede(r) kommt ca. 3 x an die Reihe

• Das Los entscheidet, wer welche Aufgabe erhält

• (n+1)-tes Vorrechnen erst wenn alle n-mal an der Reihe waren

• Die Leistungen werden bepunktet Grundlage der Pr.-Note!

(6)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 6

Hochschule RheinMain - Fachbereich DCSM

Ruby

(7)

Ruby

• Aktuelle Version:

– Ruby 2.1

– Für den Kurs ausreichend: Ruby 2.0

• Auf allen Plattformen verfügbar

– Auf i/OS standardmäßig installiert

– Unter Linux bei Bedarf leicht als Paket nachinstallierbar – Auch unter Windows, aber dort nicht empfohlen

• Empfehlung für Windows-Anwender

– Virtuelle Maschine mit Linux installieren

– Beispiel: Ihr Dozent verwendet Oracle VirtualBox unter Windows 7/64

(8)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 8

Ruby

• Hilfreiche Werkzeuge (Teile der Ruby-Installation)

– irb Interactive Ruby Shell – ri Online Manual

– gem Rubys Paketverwaltung

– rdoc Zur Erzeugung von Online-Dokumentation (vgl. javadoc)

(9)

Ruby

Zum Selbststudium

– https://www.ruby-lang.org/de/documentation/ruby-from-other-languages/

– https://www.ruby-lang.org/de/documentation/ruby-from-other-languages/to- ruby-from-java

– https://www.ruby-lang.org/de/documentation/quickstart

Sprach-Referenz

– https://www.ruby-lang.org/de/documentation/

Standard-Lehrbuch

– „Programming Ruby 1.9 & 2.0“, Dave Thomas, Andy Hunt, Chad Fowler, Pragmatic Bookshelf, 2013. ISBN 978-1-93778-549-9

(10)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 10

Ruby vs. Pseudo-Code

• Sequenz

Anweisung1;

Anweisung2;

Anweisung3;

• Verzweigung if (B) {

ja-Teilalgorithmus;

} else {

nein-Teilalgorithmus;

}

• Sequenz

Anweisung1; Anweisung2 Anweisung3

(Mehrere Anweisungen pro Zeile erlaubt, Komma darf am

Zeilenende fehlen)

• Verzweigung if B

ja-Teilalgorithmus else

nein-Teilalgorithmus end

(Runde Klammern um B optional, geschweifte Klammern entfallen, Schlüsselwort „end“ am Block- Ende)

(11)

Ruby vs. Pseudo-Code

• Fallunterscheidung switch (A) {

case1:

{Teilalgorithmus1;}

break;

case2:

{Teilalgorithmus2;}

break;

default:

{Default-Teil- algorithmus;}

}

• Fallunterscheidung case A

when cond1

Teilalgorithmus1

when cond2, cond2a, cond2b Teilalgorithmus2

else

Default-Teilalgorithmus end

(Runde Klammern um B optional,

„case“ statt „switch“, „when“ statt

„case“, KEIN „break“ (implizit!), Aufzählungen von Bedingungen möglich, „else“ statt „default“, geschweifte Klammern entfallen, Schlüsselwort „end“ am Block- Ende)

(12)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 12

Ruby vs. Pseudo-Code

• Abweisende Schleife while (B) {

TeilalgorithmusS;

}

• Nicht abweisende Schleife do {

TeilalgorithmusS;

} while (B);

• Abweisende Schleife while B do

TeilalgorithmusS end

(Runde Klammern um B optional, do…end statt geschweifte

Klammern)

• Nicht abweisende Schleife begin

TeilalgorithmusS end while B

(Runde Klammern um B optional, begin…end statt geschweifte Klammern)

• Bem.:

– Ruby kennt auch „until“

(13)

Ruby vs. Pseudo-Code

• Zählschleife

for (i = Start to Ende) { TeilalgorithmusS;

}

• Zählschleife

for i in Start..Ende TeilalgorithmusS end

(„Start..Ende“ ist ein „Bereich“ engl.

„Range“. „Range“ ist in Ruby eine eigene Klasse)

• Zählschleife (Iterator)

(Start..Ende).each do |i|

TeilalgorithmusS end

(Start..Ende).each { |i|

TeilalgorithmusS }

(14)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 14

Ruby vs. Pseudo-Code

Vorlesungsbeispiel „merge-Op.“, Pseudo-Code

F = leere Folge;

while ((F1 nicht leer) && (F2 nicht leer)) { if (Anfangselement von F1 ist kleiner als

Anfangselement von F2) { t = Anfangselement von F1;

lösche Anfangselement von F1;

}

else {

t = Anfangselement von F2;

lösche Anfangselement von F2;

}

hänge t an F an;

}

hänge eine evtl. verbliebene Restfolge an F an;

return F;

(15)

Ruby vs. Pseudo-Code

Vorlesungsbeispiel „merge-Op.“, Ruby-Code

# Eingabe: Zwei sortierte Folgen f1 und f2

# Ergebnis: Sortierte Folge f, bestehend aus den Elementen von f1 u. f2

f = [] # Variablen in Kleinbuchstaben, []=Array

while !f1.empty? && !f2.empty? # Hilfreiche Array-Methode „empty?“

if f1.first < f2.first # auch: if f1[0] < f2[0]

t = f1.shift # „shift“ liefert und entfernt erstes Element von f1 else

t = f2.shift end

f << t # Hängt Element t an Array f hinten an end

f += f1 + f2 # „+“ von Klasse „Array“ verkettet Arrays return f # optional

(16)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 16

Ruby vs. Pseudo-Code

Vorlesungsbeispiel „merge-Op.“, Ruby-Code (Variante)

# Eingabe: Zwei sortierte Folgen f1 und f2

# Ergebnis: Sortierte Folge f, bestehend aus den Elementen von f1 u. f2

f = []

while !f1.empty? && !f2.empty?

f << (f1.first < f2.first) ? f1.shift : f2.shift end

f += f1 + f2

Freiwillige Übung

Implementieren Sie „merge“ in Java

(17)

Aufgabe

• Ziel

– Prozedurales, zahlenorientiertes Arbeiten mit Ruby und der Kommandozeile lernen

– Hier: Ermittlung von Einkommensteuer-Werten

• Material, Hinweise:

– Angaben aus der Kommandozeile erhalten Sie im Programm über die Array-artige Konstante ARGV

– Berechnungsgrundlagen zum Einkommensteuertarif finden Sie z.B.

hier:

http://de.wikipedia.org/wiki/Einkommensteuertarif

– Formal erhalten Sie die Einkommensteuer-Funktion durch Integration

des Grenzsteuersatzes. In der Praxis läuft das auf Addition von ein

paar Trapez- und Rechteckflächen hinaus.

(18)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 18

Aufgabe

• Implementieren Sie folgende Methoden/Funktionen:

def grenzsteuersatz(zve) --> aFloat

# Berechnet den Grenzsteuersatz aus dem gegebenen

# zu versteuernden Einkommen

# Beispiele:

# grenzsteuersatz(8354.0) # --> 0.14

# grenzsteuersatz(10000.0) # --> 0.1722 end

def ek_steuer(zve) --> aFloat

# Berechnet die zu zahlende Einkommensteuer aus dem

# gegebenen zu versteuernden Einkommen

# Beispiele:

# ek_steuer(8354.0) # --> 0.0

# ek_steuer(10000.0) # --> 256.92 end

(19)

Aufgabe

Testen Sie nun diese Funktionen

• Ergänzen Sie Code, der ein, zwei oder drei Zahlen von der Kommandozeile entgegen nimmt und deutet als

– zvE bzw.

– zvE1, zvE2 bzw.

– zvE1, zvE2, zvE_increment

$ ./01-eksteuer.rb 10000

(Ausgabe von EK-Steuer und Grenzsteuersatz)

$ ./01-eksteuer.rb 10000 20000

(Ausgabe von zvE, EK-Steuer und Grenzsteuersatz in Tabellenform, hier:

zwei Zeilen)

$ ./01-eksteuer.rb 10000 30000 2000

(Ausgabe von zvE, EK-Steuer und Grenzsteuersatz in Tabellenform, hier:

11 Zeilen)

(20)

21.03.2014 © 2014 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 20

Aufgabe

Abschlussteil

• Jemand weist 2000 € Werbungskosten (über Pauschale) nach, z.B. für diverse Ausgaben für Fahrtkosten, Fachbücher und Rechner-Hardware.

• Berechnen Sie, wie viel Einkommensteuer er spart bzw. wie viel er

„netto“ (also unter Berücksichtigung der eingesparten EK-Steuer) bezahlt

– bei 5000, 10000, 20000, und 50000 EUR zu versteuerndem Einkommen

• Hinweis:

– Ihr Programm soll diese Angaben in einer each-Schleife ausgeben, die eine Liste der o.g. zvE-Werte iteriert.

Organisatorisches

• Die Aufgabe dient Ihnen als Ziel während Ihrer Einarbeitung in Ruby

• Sie wird nicht bepunktet, aber es wird eine kurze Abnahme geben

– Sie sollten also nach einer Woche (mehr oder weniger) lauffähigen Code vorzeigen können

Referenzen

ÄHNLICHE DOKUMENTE

Mörfelden Walldorf

Zum Einen las- sen sich die SQL-Abfragen auch bei ähnlichen Problemstellungen meist nicht wie- der verwenden, weil sie für die eine bestimmte Problemlösung optimiert wurden, zum

Für die Vorwärtsverkettung von Regeln entscheidet man sich dann, „wenn viele Fakten sehr wenigen Regeln gegenüber stehen, oder alle möglichen Fakten vorgegeben sind und man alle

Das Institut Weiterbildung im Beruf (iwib) der Hochschule ist für die kontinuierliche Weiter- bildung der Beschäftigten zuständig sowie für die Weiterbildung, die sich an

Der von der Hochschule Fulda (Fachbereich Sozialwesen) gemeinsam mit den Verbundpartnern Hochschule RheinMain (Fachbereich Sozialwesen), Fach- hochschule Münster

Die viele Büros arbeiten bei Freiforment- würfen mit dem Programm Rhino welches mit Grasshopper eine sehr gute Oberfläche für das parametrische Entwerfen bietet.. Für Grasshopper

kann auf der Grundlage dieser Anerkennungen bei Arbeitgebern in den Ländern Berlin, Nordrhein- Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein und Thüringen ein

Befindet sich zwar der Hauptsitz nicht innerhalb des Geltungsbereiches dieser Vereinbarung jedoch eine Niederlassung, können Anträge bei der für den Sitz der Niederlassung