Wirtschaftsinformatik Tutorium

Card Set Information

Author:
huatieulans
ID:
296715
Filename:
Wirtschaftsinformatik Tutorium
Updated:
2015-03-27 13:13:19
Tags:
WS
Folders:
BWL
Description:
Klasurvorbereitung
Show Answers:

Home > Flashcards > Print Preview

The flashcards below were created by user huatieulans on FreezingBlue Flashcards. What would you like to do?


  1. Excel
    Absolute und
    relative Adressierung
    „Durch das Dollarzeichen ($) kann festgelegt werden, dass die Position absolut gleich bleiben soll.

    „Bsp: Die aktuelle Zelle verweist auf Zelle A1. Sie wird kopiert und eins weiter rechts unten eingefügt.

    „Für das Gleichbleiben der Spalte -> A absolut adressieren  $A1

    • „Für das Gleichbleiben der Zeile -> 1 absolut
    • adressieren  A$1

    „
  2. Excel Grundlagen
    „Formatierung: Prozent vs. Zahl
    Eine Zelle ist nur dann in Prozent formatiert, wenn sie ein                                       Prozentzeichen enthält
  3. Excel
    =Min(Bereich)
    liefert den kleinsten Wert im Bereich
  4. Excel
    =Max(Bereich)
    liefert den größten Wert im Bereich
  5. Excel
    =Summe(Bereich)
    addiert alle Felder im Bereich
  6. Excel Funktion 
    =Mittelwert(Bereich)
    „liefert den Durchschnitt aller Felder im Bereich (leere Zellen werden ausgelassen)
  7. Excel Funktion 
    „= Anzahl(Bereich)
    „ergibt die Anzahl von Zahlen in einem Bereich. Leere Zellen und Text werden nicht mitgezählt.
  8. Excel  summeWenn-Funktion
    „Liefert die Summe der Zellen in einem Bereich, die ein Kriterium erfüllen

    „Syntax: summeWenn(Bereich;“Kriterien“; BereichSumme)

    • „Mögliche
    • Kriterien sind:

    „Zahl       : Zelle muss genau die Zahl enthalten

    „„Zahl“   : Zelle muss genau die Zahl enthalten

    „„>Zahl“ : Zelle muss größer als die Zahl sein

    „„Text“   : Zelle muss genau den Text enthalten

    „In „BereichSumme“ kann optional definiert werden, in welchem Bereich die Kriterien überprüft werden sollen

    „Beispiel:

    „summeWenn(A12:A21;“Nein“;B12:B21)
  9. Excel  Wenn-Funktion

    Fallunterscheiden
    Manchmal sind Fallunterscheidungen nötig. In solchen Fällen benötigt man die Wenn-Funktion.

    „Die Funktion benötigt drei Argumente: Wenn(Vergleich;Dann;Sonst)‏

    „Der Vergleich besteht aus zwei Seiten und einem mathematischen Vergleichsoperator. Die Seiten können Zellverweise, Zahlen oder Text in Anführungszeichen sein. Die Vergleichsoperatoren sind: = < >

    „Im Dann- und im Sonst-Teil steht, was jeweils passieren soll.

    • „Beispiel:
    • =wenn(A2>50;A2;50)‏

    „Funktionsweise

    Wenn(DieBedingung = WAHR;DannMachDies;SonstMachJenes)
  10. Excel Verschachtelte Wenn-Funktion
    • Falls bei einer Fallunterscheidung mehr als zwei Fälle zu berücksichtigen sind, muss die
    • Wenn-Funktion verschachtelt werden.

    „Wenn(Vergleich; Dann; Wenn(Vergleich; Dann; Sonst)‏‏)

    • „Beispiel:  
    • Fall 1 x < 0
    • Fall 2 0 <= x <= 10
    • Fall 3 x > 10

    =Wenn(x<0; „Fall 1“;Wenn(x<=10; „Fall 2“; „Fall 3“))
  11. Excel wVerweis-Funktion (1)

    Sinn&Zweck 
    Aufbau
    • „Sinn & Zweck:
    • wVerweis dient dazu Bereiche in Excel zu durchsuchen. Dabei kann nach einem genauen oder einem ungefähren Wert gesucht werden.

    • „Aufbau (Syntax):
    • wVerweis(Suchkriterium;Matrix;Zeile;Bereich_Verweis)

    • „Suchkriterium:
    • Nach diesem Begriff/Wert soll gesucht werden.

    • „Matrix: In der
    • 1.Spalte der Matrix(Zellbereich) sucht Excel nach dem Suchkriterium. Weiterhin muss die Matrix eine Spalte mit den gewünschten Rückgabewerten enthalten.
    • (Eigenschaften siehe nächste Folie)

    „Zeile: Hierbei handelt es sich um eine Zahl, die angibt, in der wievielten Zeile des Bereichs in „Matrix“ der Rückgabewert steht.

    „Bereich_Verweis: Wahrheitswert

    „Falsch: Es wird nach einem genauen Wert gesucht

    • „Wahr: Es wird von oben aus der erste größere Wert gesucht und der Rückgabewert aus der Zeile darüber gewählt. Die Werte müssen sortiert vorliegen und sind die Untergrenzen
    • der jeweiligen Zeile.

    „
  12. EUS Definition
    „Entscheidungsunterstützende Systeme (EUS)

    „beschreiben innerhalb der Wirtschaftsinformatik computergestützte Verfahren die darauf abzielen, Entscheidungsgrundlagen für Unternehmen zu schaffen bzw. diese zu verbessern

    „In der Regel quantitativ 

    Mathematische Optimierung

    „Ein Teil der Realität wird als (mathematisches) Modell abgebildet

    „Zu treffende Unterscheidungen können an diesem Modell dann untersucht werden

    „Modell

    „Eine Abstraktion der Realität

    „Enthält die wesentlichen Aspekte bezüglich des Entscheidungsproblems
  13. Von der Beschreibung eines Problems zu einem Modell
    Eine Maschine kann zwei unterschiedliche Produktarten herstellen, Produkt A und Produkt B.  Die Maschine kann pro Woche 40 Stunden im Einsatz sein und benötigt für die Produktion von einer Einheit A fünf Stunden sowie einer Einheit B zwei Stunden. Der Deckungsbeitrag von A beträgt 10 Geldeinheiten und von B 3 Geldeinheiten. Es soll der maximal mögliche Deckungsbeitrag erzielt werden.

    Die Produkte A und B werden nicht nur mit der Maschine 1 produziert sondern müssen von der Maschine 2 verpackt werden. Diese kann nur 20
    Stunden in der Woche laufen und benötigt jeweils 1 Stunde für ein Produkt.
    Vollständiges Modell:

    „a: gibt die Produktionsmenge von Produkt A an,

    „b: gibt die Produktionsmenge von Produkt B an

    „Zielfunktion:  Max 10 * a + 3 * b

    • „Restriktion 1:
    •   5 * a + 2 * b <= 40

    • „Restriktion 2:
    •   1 * a + 1 * b <= 20

    „NNB:  a, b >= 0
  14. Weitere wichtige Elemente in EUS
    Schattenpreise/reduzierte Kosten

    • „Schattenpreise
    • (einer Schlupfvariablen):  Gibt an, um
    • wieviel der Zielfunktionswert sich verändern würde, wenn die Kapazität der entsprechenden Restriktion steigt

    • „Reduzierte Kosten: Gibt an, um wieviel der
    • Zielfunktionswert sich verändern würde, wenn die Belegung der Entscheidungsvariable um eins
    • erhöht wird

    „Gehören beide immer zu einer Lösung eines Modells

    „Beide können nur sinnvolle Aussagen liefern wenn es keine ganzzahligen Entscheidungsvariablen gibt

    „Handlungsanweisung:

    „Eine Handlungsanweisung muss in natürlicher Sprache mindestens die Belegung aller Entscheidungsvariablen und den erwarteten Zielfunktionswert umfassen

    „
  15. Algorithmen  Variablen & Datentypen
    • „Variablen:
    • speichern Werte, die sich mehrfach ändern können

    • „Deklaration:
    • Vor der Wertzuweisung muss jede Variable einen Namen und einen Datentyp erhalten. Der Name darf kein VBA reservierter Ausdruck sein.

    • String„ >>> Erklärung: Zeichenkette >>> Bsp: ich&du
    • Integer, Long >>> Ganzzahl >>> 14
    • Single, Double >>> Gleitkommazahl >>> 2,34
    • Boolean >>> Wahrheitswert >>> True, False
    • Variant >>> Daten jedes Typs. Ist keine explizite Deklaration. Vermeiden, da langsame Verarbeitung.
  16. Algorithmen  Ein- und Ausgabebefehle
    • MsgBox (Ausgabe)
    • Ergebnisse aus dem Programm am Bildschirm anzeigen

    • „InputBox (Eingabe)
    • Eingegebene Werte eines Benutzers an das Programm übergeben
  17. Algorithmen Ein- und Ausgabebefehle

    Wertzuweisung an das Datenblatt
    • „ActiveSheet.Cells(Zeile,Spalte).Value=1
    • ActiveSheet.Range("A1") =2
    • Worksheets("Tabelle1").Cells(1,1).Value=1
    • Worksheets("Tabelle1").Range(“A1”).Value=1
  18. Algorithmen Ein- und Ausgabebefehle 

    „Zugriff an das Datenblatt
    • „a=ActiveSheet.Cells(1,1).Value
    • „eingabe = ActiveSheet.Range("A1")
    • b=Worksheets("Tabelle1").Cells(1,1).Value
    • c=Worksheets("Tabelle1").Range(“A1”).Value

    „
  19. Algorithmen  Entscheidungsstrukturen

    If-Then-Else
    Der Programmablauf kann durch Bedingungen verzweigt werden.

    „Ist die If-Bedingung WAHR, wird der Then-Anweisungsblock ausgeführt

    „Ist sie Falsch, der Else-Anweisungsblock.

    „

    „Beispiel:

         If variable <=18 Then

         MsgBox ("Ihre Wert : " & variable & " - zu dünn")

          ElseIf variable > 25 Then

          MsgBox ("Ihr Wert: " & variable & " - zu dick")

         Else

          MsgBox ("Ihr Wert: " & variable & " ideal")

        End If
  20. Algorithmen  Schleifen
    „Schleifen ermöglichen es, Anweisungen oder Anweisungsblöcke mehrfach ausführen zu lassen.

    „Wir behandeln folgende Schleifentypen:

    „For… Next: Schleife mit  feststehender Anzahl an Durchläufen.

    „While [Bedingung]… Wend: Schleife wird durchlaufen, solange die Abbruch-Bedingung wahr ist.

    For i = 1 to 5

    MsgBox (i)

    • Next
    • -----------------------------------------
    • i=1

    While i<=5

     MsgBox (i)

     i=i+1

    Wend

    • --------------------------------------------
    • a=Inputbox(„Bitte geben Sie eine positive Zahl ein !“)

    While a < 0

            a = InputBox(„Die Zahl war nicht positiv! Neuer Versuch:“)

    Wend
  21. Algorithmen  Arrays
    • „Ein Array ist eine Datenstruktur, die aus
    • einer Menge durchnummerierter Variablen besteht.

    • „Anders gesagt:
    • Ein Array ist eine Liste, deren Elemente sich über den Listennamen und die
    • Nummer des Elements  (Index) ansprechen lassen.

    „Ein Array definieren

    „Syntax: Dim [Arrayname]([MinNummer] to [MaxNummer]) as [Datentyp]

    „Beispiel: Dim umfrage (1 to 1000) as Integer

    „Auf ein Array-Element zugreifen

    „Syntax  [Arrayname]([Nummer des Elements])

    „Beispiel umfrage(2)=3

    Wichtig: Immer darauf achten, dass der Schleifenzähler innerhalb der Grenzen des Arrays bleibt, da es sonst einen "Index außerhalb des gültigen Bereichs"-Fehler gibt!
  22. Algorithmen  Geschachtelte Arrays
    Ein Anwendungsbeispiel für geschalteten Arrays ist z.B. die Kumulierung von Häufigkeiten. Man möchte die Werte eines Arrays durchgehen und die Anzahl von allen möglichen Werten in einem zweiten Array festhalten.

    „Beispiel:

    „Man hat eine Liste aller Noten der Studierenden array note.

    „Nun möchte man in dem array notenanzahl die Häufigkeit der einzelnen Noten ermitteln. 

    „Vorgehensweise: Man geht das Array note nach und nach durch. Wenn z.B. der 3.Student eine 3 hat, muss man im Array notenanzahl an der Stelle 3 den alten Wert um eins erhöhen:

                notenanzahl(note(3))=notenanzahl(note(3))+1
  23. Datenbanken  Syntax SQL-Abfrage
    „SELECT [DISTINCT] Attribut1, Attribut2, …

    „Auflistung aller auszuwählender Attribute durch Komma getrennt

    „FROM Tabelle1, Tabelle2, …

    „Auflistung aller Relationen, aus denen in irgendeinem Teil der Abfrage Attribute verwendet werden

    „WHERE Bedingung1 AND/OR Bedingung2 …

    „logisch verknüpfte Bedingungen (z.B. Ort = „Düsseldorf“)

    „ORDER BY Attribut1 [DESC], Attribut2 [DESC], …

    „Auflistung aller Attribute, nach denen das Ergebnis sortiert werden soll (Auflistung in der Reihenfolge, in der sortiert werden soll, z.B. erst nach Nachnamen und dann nach Vornamen

    „Zusatz DESC, wenn absteigend sortiert werden soll
  24. Datenbanken  Operatoren

    logische Operatoren
    Vergleichsoperatoren
    Logische Operatoren 

    • AND >>> beide Bedingungen müssen wahr sein 
    • OR >>> Eine oder beide Bedingungen müssen wahr sein 
    • XOR >>> nur eine Bedingung muss wahr sein 
    • NOT >>> Negation, Bedingung soll falsch sein 

    • Vergleichsoperatoren
    • =,<>, <, <=, >, >=  heißt  Attributwert gleich, ungleich, kleiner, kleiner gleich, größer oder größer gleich  einem anderem Attributwert oder einer Konstanten

    BETWEEN >>> Attributwert zwischen zwei Grenzen

    • LIKE >>> Suche nach Zeichenketten anhand von Ähnlichkeitsoperatoren:
    • * : Platzhalter für beliebige Zeichenkette
    • ? : Platzhalter für ein Zeichen


    IS NULL >>> 

    IS NULL zur Selektion nicht definierter Attributwerte

    oder IS NOT NULL zur Selektion definierter Attributwerte

    IN >>>  Prüft, ob ein Attributwert in einer Menge enthalten ist
  25. Datenbanken  Felddatentypen
    • „Text 
    • „Steht in Anführungszeichen (… =„Düsseldorf“)

    „Datum:

    „ #MM/DD/YYYY# (amerikanisch!)

    „  z.B.  #1/15/1970#

    „Zahl: Dezimalzahlen mit Punkt statt Komma

    „Ja/Nein: true und false

    „AutoWert:„ automatisch generierte Werte

    „Memo: „für längeren Text (>255 Zeichen)

    „
  26. Datenbanken  Funktionen
    Datumfunktion
    Aggregatfunktion
    Datumfunktion 

    • DAY() >>> Ermittelt den Tag eines Datumwerts
    • MONTH() >>> Ermittelt den Monat eines Datumwerts
    • YEAR() >>> Ermittelt den Jag eines Datumwerts
    • NOW >>> Liefert aktuelle Zeit und aktuelles Datum (z.B YEAR(NOW))

    • Aggregatfunktionen 
    • AVG() >>> Mittelwert einer Spalte
    • MAX() >>> Größter Wert der Spalte
    • MIN() >>> Kleinster Wert der Spalte
    • SUM() >>> Summer der Werte einer Spalte
    • COUNT(Attribut) >>> Anzahl aller Tutel der Ergebnisrelation ohne NULL - Werte
    • COUNT(*) >>> Anzahl der Ergebnisrelation ink NULL - Werte
  27. Aggregatfunktionen und GROUP BY
    Aggregatfunktionen dürfen in der Regel nicht mit weiteren Attributen im SELECT-Teil stehen

    • „Begründung:
    • Aggregatfunktionen verdichten mehrere Attributwerte zu einem Wert; die Auflistung weiterer Attribute macht dann keinen Sinn und ist auch nicht möglich

    • „Bsp.: SELECT
    • SUM(Betrag), Spielernr FROM Strafen

    • „FEHLER!
    • - Liefert die Summe aller Strafen (ein Wert), zu dieser Summe existiert aber keine Spielernummer

    • „Ausnahme:
    • Verwendung von GROUP BY

    „GROUP BY wird im Zusammenhang mit Aggregatfunktionen verwendet um das Ergebnis nach einer (oder mehreren) Spalte(n) zu gruppieren

    „GROUP BY steht in der SQL-Abfrage zwischen dem WHERE-Teil und dem ORDER BY-Teil
  28. Datenbanken  Verknüpfung mehrerer Relationen
    SELECT  Strafen.Spielernr, Name, Zahlungen, Datum

    FROM   Strafen, Spieler

    WHERE   Strafen.Spielernr = Spieler.Spielernr AND Name = „Kohl“;
  29. Weitere
    Lineare Restriktionen (LB – LowerBound, UB – UpperBound)
    • „Restriktionen,
    • die sich auf Grenzen bezüglich einer Variable beziehen benötigen in ClipMOPS keine eigenen Zeilen

    „LB – LowerBound: die untere Grenze, die mindestens erfüllt werden muss

    „UB – UpperBound: die obere Grenze, die maximal erfüllt sein darf

    „Inf steht für infinity also unendlich hoch
  30. Schattenpreise
    „Schattenpreis „gehört“ zu einer Restriktion innerhalb einer zulässigen Lösung

    • „Gibt an um wie viel sich der Zielfunktionswert ändert, wenn sich die entsprechende
    • Produktionskapazität um eine Einheit erhöht

    „Grenzpreis der Begrenzung des Lösungsraumes durch diese Restriktion

    • „Der Schattenpreis ist gleich null außer wenn die entsprechende Activity an die Grenze
    • der RHS stößt

    „ClipMOPS beschreibt die Schattenpreise mit reduced costs

    ClipMOPS berechnet in seltenen Fällen die Schattenpreise nicht
  31. Reduzierte Kosten
    „Reduzierte Kosten werden für eine Variable angegeben

    „Gibt an wie sich der Zielfunktionswert ändert, wenn der Wert der Variable erhöht wird.

    „Durch „Nicht-Produktion“ vermiedener Verlust; Grenzkosten

    „Nur bei kontinuierlichen Variablen beachten, reduzierte Kosten sind bei ganzzahligen Variablen nicht interpretierbar in ClipMOPS

    „ClipMOPS berechnet in seltenen Fällen die reduzierten Kosten nicht
  32. „Zusammenführung

    „Zielfunktion:  Min 0,3 * m + 0,2 * e

    „Restriktion kcal:  
    200 * m   + 90 * e  >= 500

    „Restriktion Eiweiß:  3 * m  + 9 * e  >= 35
    „Problemstellung:

    „Man sucht eine Zusammenstellung eines möglichst günstigen Essens, das 500 kcal und 35 Gramm Eiweiß hat. Es können Müsli, das pro 100 Gramm 200 kcal und 3 Gramm Eiweiß besitzt, sowie  Eier, die 9 Gramm Eiweiß und 90kcal pro Stück bringen, gemischt werden. Eier kosten pro Stück 20 Cent, Müsli kostet pro 100 Gramm 30 Cent.

    • Vorheriges Problem wird um folgende Anforderung ergänzt:
    • „Es sollen in dem Essen mindestens zwei Eier und maximal 250 g Müsli vorkommen.
    • „Die Anzahl an Eiern muss mindestens 2 oder größer sein
    • „Die Anzahl an Müslieinheiten darf maximal 2,5 oder weniger sein

    „
  33. a)     
    Geben Sie das alte und das neue aufgestellte
    Modell in ClipMOPS ein und analysieren Sie beide erweiterten Ergebnistableaus. In
    welche Richtung verändert sich der Zielfunktionswert wenn der Großkunde in
    jedem Fall 50 qm Tulpen bekommen soll? Woran kann man die Entwicklung im alten
    Tableau bereits ablesen?
    • Der Zielfunktionswert verändert sich negativ um 1040 (GE). Dies kann man im Vorfeld
    • durch die Schattenpreise der Entscheidungsvariablen erkennen. xT (Anzahl m2 Tulpen) hat reduzierte Kosten in Höhe von -2, das heißt für jeden m2
    • wird der Zielfunktionswert um 2 verringert. Diese Aussage gilt aber nur für die
    • jeweils nächste Einheit, das heißt man kann mit den reduzierten Kosten keine Aussage
    • darüber treffen, was passiert wenn man mehr als eine Einheit mehr oder weniger produziert. Es ist also eine Tendenz ablesbar, die hier vollkommen zutrifft, aber kein zuverlässiges Ergebnis darstellt.

    Analoges gilt für Schattenpreise von Restriktionen.
  34. c) Für den Blumenanbau werden weitere 2000 qm
    Anbaufläche bereitgestellt. Erweitern Sie das Modell aus a) um die Restriktion,
    dass nun 4000 qm Fläche vorhanden sind. Vergleichen Sie die Unterschiede vor
    und nach der Erhöhung der Fläche in den Ergebnistableaus.
    • Ein erstes Merkmal ist, dass, obwohl die zur Verfügung stehende Ressource Fläche verdoppelt wurde, sämtliche reduzierte Kosten sowie Schattenpreise gleich geblieben sind. Die Belegung der Entscheidungsvariablen sowie die Ausnutzung der Ressourcen haben sich jedoch verändert. Es werden nun 2400 m2 mehr Veilchen angebaut und 400 m2 weniger Tulpen. Dies liegt daran, dass Tulpen mehr Dünger
    • benötigen als Veilchen aber nur unwesentlich mehr Deckungsbeitrag bringen.
    • Steht nun also mehr Fläche zur Verfügung, lohnt es sich mehr Veilchen anzubauen. Der Zielfunktionsbetrag verbessert sich wie erwartet. Wenn man mehr Ressourcen einsetzt, wird man immer einen gleichen oder verbesserten Zielfunktionswert haben. Er hat sich tatsächlich auch um den Wert der
    • reduzierten Kosten (7,9) mal der Anzahl zusätzlicher Ressourcen (2.000) erhöht
    • (um 15.800).
  35. Beerenkuchen
    Paul sollte 200g Erdbeeren, 100 g Himbeeren und 200g Blaubeeren sammeln. Er wird hierfür 20 Minuten benötigen.
  36. Der Benutzer soll eine natürliche Zahl n größer gleich null eingeben. Ist dies nicht der Fall, soll er solange zur Eingabe einer Zahl aufgefordert werden bis diese größer gleich null ist. Im Anschluss soll für die eingegebene Zahl n die Summe 1 + … + n zurückgegeben werden!
    • Private Sub CommandButton1_Click()
    • Dim zahl As Integer
    • Dim summe As Integer
    • summe = 0
    • zahl = -1
    • ' Somit ist die Bedingung der ersten Schleife erfüllt.' Das ist ein "Trick", mit dem wir eine inputbox sparen

    • While zahl < 0
    • zahl = InputBox("Bitte geben Sie eine positive Zahl ein!")
    • Wend

    • For i = 1 To zahl
    • summe = summe + i
    • 'Beginnend bei dem Wert 0 wird die Summe immer um 1,2,....,n (n bezogen auf zahl) erhöht.
    • Next
    • MsgBox ("Die Summe 1+...+n der Zahl " & zahl & " lautet " & summe)
    • End Sub
  37. Verkaufserlöse
    = Anzahl x Verkaufspreis pro Stück
  38. Gewinnmarge in Prozent
    = (Verkauferlös - Gesamtkaufpreis) / Verkaufserlöse
  39. prozentuale Veränderung von einem Quartal ins Nächste (1. -> 2.)
    • (2.Quartal - 1.Quartal)
    • = ----------------------------------
    •                 1.Quartal
  40. Zinsertrag
    = Zinssatz x Kontostand
  41. Gewinn mit Aufschlag (für Aufschlagsatz 38%)
    Gewinn + 38% des Gewinns

    (Verkaufpreis - Einkaufpreis) x Anzahl x (1 + Aufschlagsatz/100)
  42. prozentualer Anteil am Gesamtgewinn
    • Gewinn mit Aufschlag
    • ------------------------------------
    • Gesamte Gewinn mit Aufschlag
  43. Betrag inländische Mehrwertsteuer
    = Nettopreis in € x Mwst Inland in %
  44. Bruttopreis in €
    Nettopreis in € +  Betrag inländische Mwst
  45. Steuer
    = Zinsertrag x Steuersatz
  46. Def Deckungsbetrag
    Der Deckungsbetrag ist die Differenz zwischen den erzielten Erlöse (Umsatz) und den variablen Kosten.Es handelt sich also um den Betrag, der zur Deckung der Fixkosten zur Verfügung steht
  47. Problemstellung: 
    Man sucht eine Zusammenstellung eines möglichst günstigen Essens, das 500kcal und 35 Gramm Eiweiß hat. Es können Müsli, das pro 100 Gramm 200 kcal und 3 Gramm Eiweiß besitzt, sowie Eier, die 9 Gramm Eiweiß und 90 kcal pro Stück bringen, gemischt werden. Eier kosten pro Stück 20 Cent, Müsli kostet pro 100 Gramm 30 Cent
    Zusammenführung: 

    • > Zielrestriktion       Min 0,3 m + 0,2 e
    •     Restriktion kcal    200m+ 90e >= 500
    •     Restriktion Eiweiß 3m + 9e >= 35

    • Vorheriges Problem wird um folgende Anforderung ergänzt
    •     > Es sollen in dem Essen mindestens 2 Eier und maximal 250g Müsli vorkommen 
    •     > Die Anzahl an Eiern muss mindestens 2 oder größer sein 
    •     > die Anzahl an Müslieinheiten darf maximal 2,5 oder weniger sein
  48. Umsatzrentabilität
    • Gewinn
    • ---------------
    •    Umsatz
  49. Gewinn
    = Umsatz- Kosten
  50. Gegeben sei folgendes Modell:

    xR:      Quadratmeter zu züchtender Rosen
    xT:       Quadratmeter zu züchtender Tulpen
    xV:      Quadratmeter zu züchtender Veilchen

    Zielfunktion:
      Maximiere:
    10* xR     + 8,5 * xT + 8 * xV

    Anbaufläche:
    1 * xR             + 1 * xT          + 1 * xV        
    <= 2000

    Düngemittel:   
    2,5* xR                       + 3 * xT         + 0,5 * xV      <= 2500

    NNB:               xR, xT, xV >= 0

    Ergänzen Sie Informationen (Einheiten der Zahlen), die Sie nicht ablesen können und formulieren Sie dieses Modell in verständlicher(!), natürlicher Sprache.
    Eine Blumenzucht baut Rosen, Tulpen und Veilchen an. Hierfür hat sie eine Anbaufläche von 2000 Quadratmetern(m2) zur Verfügung. Ein m2 Rosen erwirtschaftet einen Erlös abzüglich aller anderen Kosten von 10 GE, ein m2 Tulpen 8,5 GE und ein m2 Veilchen bringt 8 GE ein. Es sind 2500 kg Düngemittel vorhanden, um einen m2 Rosen anzubauen benötigt die Blumenzucht 2,5 kg, für ein m2 Tulpen 3kg und für ein m2 Veilchen 0,5 kg. Unter Beachtung aller Restriktionen soll ein möglichst hoher Erlös realisiert werden.
  51. Öffnen Sie die Datei Fehlercodes.xlsm und verwenden Sie die Tastenkombination Alt + F11!
    Eine Autofabrik produziert täglich 100 Automobile, denen Fehlercodes im Array Auto() von null bis zwei zugewiesen werden. Dabei bedeutet null, dass das Automobil fehlerfrei gefertigt wurde, während die anderen Codes über die Schwere des Fehlers Auskunft geben.Der bereits vollständig programmierte Teil übernimmt die Zuweisung des Fehlercodes an die produzierten Automobile nach folgenden Wahrscheinlichkeiten:
    Fehlercode 0 : 80%
    Fehlercode 1 : 10%
    Fehlercode 2: 10%

    Diesen Teil des Programms müssen Sie nicht bearbeiten. Beachten Sie jedoch die Kommentare in diesem Abschnitt.Im Anschluss werden die relativen Häufigkeiten der Fehlercodes berechnet. Auf Basis der ermittelten Zahlen wird ein Ergebnis mit Hilfe einer Messagebox ausgegeben. Am Ende des Programms werden alle Autos nummeriert und mit dazugehörigem Fehlercode in den Spalten A und B ausgegeben.Bitte vervollständigen Sie die fehlenden Stellen, welche mit den Zeichenfolgen AAA, BBB,… , EEE gekennzeichnet sind!
    • Private Sub CommandButton1_Click()
    • 'Die Anzahl der produzierten Autos wird als Konstante festgelegt
    • Const anzahlAutos = 100
    • Dim i As Integer
    • Dim zufallsZahl As Integer
    • 'Die Variable zufallsZahl dient der Zuweisung der Fehlercodes. Für die Bearbeitung der Aufgabe ist sie irrelevant.

    • ' Der Array Auto enthält einen Fehlercode für jedes der 100 produzierten Automobile.
    • Dim Auto(1 To anzahlAutos) As Integer

    • ' Der Array FehlerHäufigkeit gibt die ABSOLUTE Häufigkeit der Fehlercodes eines Produktionstags an.
    • ' Wie in der Aufgabenstellung erwähnt, existieren die Fehlercodes 0 bis 2
    • Dim FehlerHäufigkeit(0 To 2) As Integer

    • ' Der Array RelFehlerHäufigkeit gibt die RELATIVE Häufigkeit der Fehlercodes eines Produktionstags an.
    • Dim RelFehlerHäufigkeit(0 To 2) As Double

    • 'Der Abschnitt bis zum ersten Wend-Befehl weist den produzierten Autos Fehlercodes zu. Achten Sie auf das Kommentar.i = 1
    • While i <= anzahlAutos       
    •       zufallsZahl = Int(100 * Rnd + 1)   
    •       Select Case zufallsZahl     
    •           Case 1 To 80       
    •             a = 0     
    •           Case 81 To 90       
    •             a = 1     
    •           Case Else       
    •             a = 2   
    •          End Select   
    •        ' An dieser Stelle wird dem i. Auto der Fehlercode 0; 1 oder 2 zugewiesen.              'Beispielsweise wird dem 3. Auto der Fehlercode 0 zugewiesen.   
    •         Auto(i) = a           
    •          i = i + 1
    •       Wend
    •  

    • ' Bitte vervollständigen Sie den folgenden Code:
    •     i = 1While i <= anzahlAutos   
    •       'An dieser Stelle werden die absoluten Fehlerhäufigkeiten der einzelnen Fehlercodes ermittelt.   
    •       'Dazu werden alle Autos überprüft.     FehlerHäufigkeit(AAA) = FehlerHäufigkeit(AAA) + 1   

    • i = i + 1
    • Wend
    • i = 0
    • While i <= 2   
    • 'Nun werden die relativen Fehlerhäufigkeiten der einzelnen Fehlercodes ermittelt.    RelFehlerHäufigkeit(i) = BBB   
    • i = i + 1
    • Wend
    • 'Sollte der Fehlercode 2 in mehr als 12% der Autos beobachtet worden sein, handelt es sich um ein außerordentlich schlechtes Ergebnis. Beachten Sie die Messageboxes.

    • If CCC Then   
    • MsgBox ("Bei einer Fehlerhäufigkeit des Typs 2 von " & RelFehlerHäufigkeit(2) * 100 & "% handelt es sich um ein außerordentlich schlechtes Ergebnis.")

    • 'Sollten mehr als 22% der Automobile fehlerhaft sein, wurden zu viele fehlerhafte Automobile produziert.
    • ElseIf DDD Then


    • 'In der Messabox soll die  relative Häufigkeit aller fehlerhaften Automobile erscheinen.       
    • MsgBox ("Bei einer Fehlerhäufigkeit von " & (1 - RelFehlerHäufigkeit(0)) * 100 & "% wurden leider zu viele fehlerhafte Automobile produziert.")

    'Trifft keine dieser Bedingungen zu, ist das Ergebnis angemessen.

    • Else   
    • MsgBox ("Die Fehlerhäufigkeit ist angemessen.")
    • End If

    • 'Nun sollen die Nummern der produzierten Autos und deren Fehlercodes in den Spalten A und B aufgelistet werden.
    • For i = 1 To anzahlAutos    ActiveSheet.Cells(i, 1) = i    ActiveSheet.Cells(i, 2) = EEE
    • Next
    • End Sub

    • AAA Fehlerhäufigkeit(Auto(i)) =
    • Fehlerhäufigkeit(Auto(i)) +1
    • BBB
    • RelFehlerhäufigkeit(i) = Fehlerhäufigkeit(i)/ anzahlAutos
    • CCC If RelFehlerHäufigkeit(2) >
    • 0.12 Then
    • DDD RelFehlerhäufigkeit(0)<0.78
    • EEE Auto(i)


  52. Das vorliegende Programm wahlUmfrage() soll folgendes leisten: Es soll eine vorgegebene Anzahl von Bundesbürgern (anzahlBefragter) gefragt werden, welche Partei sie momentan wählen würden, wenn jetzt Bundestagswahl wäre. Die Entscheidung eines Befragten/einer Befragten kann über das Programm eingegeben werden (Inputbox) wobei z.B. für die Wahl der SPD die 1 eingeben werden muss, für die CDU die 2 usw. (siehe Menüausgabe der InputBox)Falsche Eingaben sollen dabei vom Programm abgefangen werden, indem eine Fehlermeldung ausgegeben wird und die Eingabe solange wiederholt wird, bis eine gültige Angabe erfolgt ist. Außerdem sollen die Befragten für die spätere Auswertung ihr Geschlecht angeben(für männlich eine 0, für weiblich eine 1). Hier gilt gleiches für ungültige Eingaben (Fehlermeldung und wiederholte Eingabeaufforderung). Waren beide Eingaben eines Befragten gültig, so können diese jetzt in den entsprechenden Arrays(waehlerstimmen und geschlecht) gespeichert werden, wobei z.B. für den 1. Befragten die Angaben an Position 1 der Arrays gespeichert wird, also in waehlerstimmen(1) und geschlecht(1).Zuletzt sollen die Stimmen für die jeweiligen Parteien ausgezählt werden. Hierbei soll jedoch nach Geschlecht unterschieden werden. Das Wahl-Ergebnis soll also für Frauen und Männer getrennt ausgewertet werden und in den entsprechenden Arrays frauenErgebnis ODER maennerErgebnis gespeichert werden. Die Anzahl der Stimmen für die SPD z.B. bei den Männern soll an Stelle
    • Sub wahlUmfrage()
    • Const anzahlBefragter = 100
    • Const anzahlParteien = 5

    • 'Zum Speichern von allen Eingaben der Befragten
    • Dim waehlerstimmen(1 To anzahlBefragter) As Integer
    • Dim geschlecht(1 To anzahlBefragter) As Integer

    • 'Zum Speichern der Stimmauszählungen
    • Dim frauenErgebnis(1 To anzahlParteien) As Integer
    • Dim maennerErgebnis(1 To anzahlParteien) As Integer

    • 'Hilfsvariablen
    • Dim i As Integer
    • Dim anzahlFrauen As Integer
    • Dim anzahlMaenner As Integer
    • Dim eingabePartei As Integer
    • Dim eingabeGeschlecht As Integer
    • anzahlFrauen = 0
    • anzahlMaenner = 0

    • ' Wähler befragen und Wahl sowie Geschlecht des Wählers in den
    • ' entsprechenden Arrays speichern
    • For i = 1 To AAA   

    • 'Die Eingabe der Partei wird verlangt    'Eingabe entsprechend des hierbei ausgegebenen Menüs   
    • eingabePartei = InputBox("Welche Partei würden " & Chr(13) & _   
    • "Sie wählen, wenn heute " & _    "Bundestagwahl wäre?" & Chr(13) & Chr(13) & _   
    • "(1) für SPD " & Chr(13) & _   
    • "(2) für CDU " & Chr(13) & _   
    • "(3) für Die Grünen" & Chr(13) & _   
    • "(4) für FDP " & Chr(13) & _   
    • "(5) für Die Linke ")   
    • ' Bei eventuellen Fehler die Eingabe nach einer Fehlermeldung   
    • ' erneut verlangen   
    • While BBB       
    • 'Die Schleifenbedingung ist bei allen Eingaben außer (1,2,3,4,5) erfüllt.   
    • 'Der Unterschied zu /While eingabePartei < 1 Or eingabePartei > anzahlParteien/ liegt darin, dass in der obigen Lösung nur ganzzahlige Eingaben akzeptiert werden.    'Die zweite Möglichkeit wurde als Lösung jedoch auch akzeptiert.

    • 'Fehlermeldung ausgeben       
    • MsgBox ("Fehler bei der Eingabe:" & Chr(13) _       
    • & "Sie müssen eine Zahl zwischen 1 und " & anzahlParteien _       
    • & " eingeben!")       
    • ' Eingabe entsprechend des hierbei ausgegebenen Menüs       
    • eingabePartei = InputBox("Welche Partei würden " & Chr(13) & _       
    • "Sie wählen, wenn heute " & _        "Bundestagwahl wäre?" & Chr(13) & Chr(13) & _       
    • "(1) für SPD " & Chr(13) & _       
    • "(2) für CDU " & Chr(13) & _       
    • "(3) für Die Grünen" & Chr(13) & _       
    • "(4) für FDP " & Chr(13) & _       
    • "(5) für Die Linke ")   
    • Wend   
    • 'Jetzt das Geschlecht des Wählers solange erfragen bis gültige Eingabe    eingabeGeschlecht = InputBox("Sind Sie weiblich" & Chr(13) & _   
    • "oder männlich?" & Chr(13) & _   
    • "(0) männlich" & Chr(13) & _   
    • "(1) weiblich")   
    • ' Bei eventuellen Fehler die Eingabe nach einer Fehlermeldung   
    • ' erneut verlangen   
    • While CCC     
    • ' Fehlermeldung ausgeben       
    • MsgBox ("Fehler bei der Eingabe:" & Chr(13) & _       
    • "Sie müssen eine Zahl zwischen 0 und 1 eingeben!")      
    •   ' erneute Eingabe verlangen        eingabeGeschlecht = InputBox("Sind Sie weiblich" & Chr(13) & _       
    • "oder männlich?" & Chr(13) & _       
    • "(0) männlich" & Chr(13) & _       
    • "(1) weiblich")   
    • Wend   
    • 'Wurden Eingaben für die Wahl und für das Geschlecht richtig gemacht,   
    • 'dann werden die beiden Eingaben nun in den entspr. Arrays gespeichert    waehlerstimmen(i) = eingabePartei    geschlecht(i) = eingabeGeschlecht
    • Next i
    • 'Jetzt das Ergebnis der Stimmabgaben auszählen und
    • 'unterscheiden nach männlichen und weiblichen Stimmen
    • i = 1
    • While i <= anzahlBefragter   
    •     If DDD
    •      anzahlMaenner = anzahlMaenner + 1       
    • 'An dieser Stelle soll das Männergebnis der vom i. Nutzer gewählten Partei hochgezählt werden. Verschachtelte Arrays!       
    • EEE
    •      Else       
    • anzahlFrauen = anzahlFrauen + 1        'Analog zu EEE       
    • FFF   
    • End If   
    • i = i + 1
    • Wend

    • ' ######## Ausgabe des Frauen-Ergebnisses ##########
    • If anzahlFrauen > 0 Then   
    • MsgBox ("###### Ergebnis der Frauen: ######" & Chr(13) & Chr(13) & _   
    • "Die SPD erreichte " & frauenErgebnis(1) / anzahlFrauen * 100 & _   
    • " Prozent" & Chr(13) & _   
    • "Die CDU erreichte " & frauenErgebnis(2) / anzahlFrauen * 100 & _   
    • " Prozent" & Chr(13) & _    "Die Grünen erreichten " & frauenErgebnis(3) / anzahlFrauen * 100 & _    " Prozent" & Chr(13) & _   
    • "Die FDP erreichte " & frauenErgebnis(4) / anzahlFrauen * 100 & _   
    • " Prozent" & Chr(13) & _   
    • "Die Linke erreichte " & frauenErgebnis(5) / anzahlFrauen * 100 & _   
    • " Prozent" & Chr(13))
    • End If
    • ' ######## Ausgabe des Männer-Ergebnisses ########
    • If anzahlMaenner > 0 Then   
    • MsgBox ("###### Ergebnis der Männer: ######" & Chr(13) & Chr(13) & _   
    • "Die SPD erreichte " & maennerErgebnis(1) / anzahlMaenner * 100 & _   
    • " Prozent" & Chr(13) & _   
    • "Die CDU erreichte " & maennerErgebnis(2) / anzahlMaenner * 100 & _   
    • " Prozent" & Chr(13) & _   
    • "Die Grünen erreichten " & maennerErgebnis(3) / anzahlMaenner * 100 & _   
    • " Prozent" & Chr(13) & _   
    • "Die FDP erreichte " & maennerErgebnis(4) / anzahlMaenner * 100 & _   
    • " Prozent" & Chr(13) & _   
    • "Die Linke erreichte " & maennerErgebnis(5) / anzahlMaenner * 100 & _   
    • " Prozent" & Chr(13))
    • End If
    • End Sub

    • AAA For i= 1 to anzahlBefragter
    • BBB While eingabePartei <> 1 And
    • eingabePartei <> 2 And eingabePartei <> 3 And eingabePartei
    • <> 4 And eingabePartei <> 5

    • CCC While eingabeGeschlecht <>
    • 0 And eingabe Geschlecht <> 1  
    • DDD geschlecht(i)=0 Then  
    • EEE
    • maennerErgebnis(waehlerstimme(i)= maennerErgebnis(waehlerstimmen(i)+1
    •  
    • FFF
    • frazebErgebnis(waehlerstimmen(i)) = frauenErgbenis(waehlerstimmen(i)) +1
  53. Die erste Normalform
    • Ein Relationstyp (RT) befindet sich
    • in der ersten Normalform, wenn alle Attributwerte elementar (atomar) sind.

    • „Atomarität von Wertebereichen bedeutet:
    • >„Zusammengesetzte Attribute sind nicht zugelassen.
    • >Wiederholungsgruppen und Auflistungen sind nicht zugelassen
  54. Funktionale Abhängigkeit

    Vollfunktionale Abhängigkeit
    „Funktionale Abhängigkeit

    „Ein(e) Attribut(gruppe) Y heißt funktional abhängig von Attribut(gruppe) X, wenn es zu jedem Wert von X nur  genau einen Wert von Y geben kann.

    • „Schreibweise:
    • „funktional abhängig:   X  → Y
    • „nicht funktional abhängig: X   Y

    • Volle funktionale Abhängigkeit
    • „X  → Y und es gibt keine Teilmenge von X, von der Y funktional abhängig
    • ist.
    • „Schreibweise:
    • wenn X eine Attributgruppe ist:    X  ⇒ Y
    • ansonsten reicht auch hier:  X → Y
  55. Die zweite Normalform (2.NF)
    • Ein Relationstyp befindet sich in der zweiten Normalform, wenn er sich in 1. Normalform befindet und jedes Nichtschlüsselattribut von jedem Kandidatenschlüssel voll funktional
    • abhängt.
    • „Anders ausgedrückt:
    • „Gibt es Nichtschlüsselattribute, die sich durch einen Teil eines Kandidatenschlüssels
    • eindeutig bestimmen lassen (partielle Abhängigkeiten)?

    „ > Wenn ja, befindet sich die Relation nicht in 2.NF!

    „Die 2.NF kann also niemals verletzt sein, wenn es keine zusammengesetzten Kandidatenschlüssel oder keine Nichtschlüsselattribute gibt (vorausgesetzt die 1.NF ist gegeben)
  56. Die dritte Normalform (3.NF)
    • Ein Relationstyp befindet sich in der dritten Normalform, wenn er sich in der 2.
    • Normalform befindet und kein Nichtschlüsselattribut transitiv von einem
    • beliebigen Kandidatenschlüssel abhängt.

    Anders ausgedrückt:

    „Gibt es Nichtschlüsselattribute, die sich durch ein anderes Nichtschlüsselattribut eindeutig bestimmen lassen?

    • „ > Wenn ja, befindet sich die Relation nicht in 3.NF!
    • „Die 3.NF kann also niemals verletzt sein, wenn es keine  oder nur ein Nichtschlüsselattribut gibt (vorausgesetzt die 2.NF ist gegeben)
  57. Kochrezept – Normalformen
    • 1.Prüfung auf 1.NF -> in der Klausur gegeben, sofern die konkreten Daten
    • nicht vorliegen
    • 2.(Voll) funktionale Abhängigkeiten bestimmen
    • 3.KS und NS bestimmen
    • 4.Prüfung auf 2.NF: partielle Abhängigkeiten eines NS von einem Schlüsselattribut? -> dann 2.NF verletzt
    • Existieren zusammengesetzte KS? -> wenn nein, dann 2.NF gegeben
    • Existieren NS?
    • -> wenn nein, dann 2.NF gegeben
    • 5.Prüfung auf 3.NF: transitive Abhängigkeiten eines NS von einem anderen NS? -> dann 3.NF verletzt
    • Existieren mindestens 2 NS? -> wenn nein,
    • dann 3.NF gegeben
  58. Beispiel zur Normalisierung
    „Es sei die Relation a, b, c, d, e, f gegeben
    „Folgende funktionale Abhängigkeiten seien gegeben:

    „(a, b) -> c
    „(a, b) -> d
    (a, b) -> f
    „b -> e
    „d -> f
    • „Kandidatenschlüssel: (a, b)
    • Nichtschlüsselattribute: c, d, e, f
    • „2. NF verletzt durch b -> e
    • Falls 2. NF nicht verletzt wäre:
    • 3. NF verletzt durch d -> f
  59. Kardinalitätenkürzel
    • „k : genau k-mal. z.B. 3
    • [n,m] : mindestens n, maximal m. z.B. [2,5]
    • „* : Null oder mehr
    • + : 1 oder mehr
    • c : Null oder 1
  60. a) Öffnen Sie ein leeres Excel-Datenblatt. Erstellen Sie ein Programm, welches die Umsatzrentabilität errechnet. Nutzen Sie dazu zwei Inputboxen, in welche der Benutzer sowohl den Umsatz als auch die gesamten Aufwendungen eingibt.
    Als Ergebnis sollte eine Messagebox erscheinen, welche die Umsatzrentabilität und eine Beurteilung beinhaltet:
    a. x<5% schlechtes Ergebnis
    b. 5%<=x<10% zufriedenstellendes Ergebnis
    c. x>=10% hervorragendes Ergebnis

    b) Bitte garantieren Sie durch die Einblendung einer Fehlermeldung, dass weder Gesamtaufwand noch Umsatz negativ sein dürfen.

    c) Beziehen Sie sich nun auf Tabelle 1 der Datei Berliner Motoren Werke AG.xlsm. Errechnen Sie die Umsatzrentabilität der Jahre 1 und 2 des 1. Modells und lassen Sie das Programm in H13 ein Kommentar schreiben, ob die Umsatzrentabilität gestiegen ist.Hinweis: Bitte referenzieren Sie die Zellen und verwenden Sie nicht die einzelnen Werte
    • Private Sub CommandButton1_Click()
    • Dim kosten As Double
    • Dim umsatz As Double
    • Dim gewinn As Double
    • Dim umsatzRent As Double
    • Dim text As String

    kosten = InputBox("Bitte geben Sie die Kosten an!")

    • umsatz = InputBox("Bitte geben Sie den Umsatz an!")
    • gewinn = umsatz - kosten

    • If kosten < 0 Or umsatz <= 0 Then
    • MsgBox ("Bitte geben Sie ausschließlich positive Werte an.")

    • Exit Sub ' dieser Befehl beendet das Makro sofort an dieser Stelle. Der Rest wird nicht ausgeführt' Es sind auch andere Strukturen denkbar, so wird aber die Division mit 0 im Fall der Fälle unterbunden' Der Befehl wurde nicht im Tut behandelt, er dient als Ergänzung.' Die Aufgabe kann auch mit ausschließlich bekannten Befehlen bearbeitet werden.
    • End If

    umsatzRent = gewinn / umsatz

    • If umsatzRent < 0.05 Then
    • text = "schlechtes"

    • ElseIf umsatzRent < 0.1 Then
    • text = "zufriedenstellendes"

    • Else
    • text = "hervorragendes"
    • End If
    • MsgBox ("Bei einer Umsatzrentabilität von " & umsatzRent * 100 & "% handelt es sich um ein " & text & " Ergebnis")

    End Sub
  61. Erstellen Sie ein Programm zur Verwaltung linearer Abschreibungen. Es müssen sowohl die Anschaffungs- oder Herstellungskosten, die Laufzeit und der Veräußerungswert am Ende der Nutzungsdauer mittels Inputboxen abgefragt werden.
    a)Bitte geben Sie die Restwerte der einzelnen Jahre an! Schreiben Sie dazu pro Periode einen Antwortsatz in die Zellen A1 ff.Verwenden Sie dazu den Befehl:

    ActiveSheet.Cells(i, 1).Value = "Am Ende der Periode " & i & " beträgt der Restbuchwert " & restwert & " Euro."
    Das i bezieht sich auf die Schleifeniteration. Bitte versuchen Sie den Befehl nachzuvollziehen!

    b)Verhindern Sie, dass für die Anschaffungskosten, den Veräußerungswert oder die Jahresanzahl negative Werte angenommen werden können.
    • Private Sub CommandButton1_Click()
    • Dim anschaffungskosten As Double, abschreibungsbetrag As Double, jahre As Integer, veräußer As Double, restwert As Double
    • anschaffungskosten = InputBox("Bitte geben Sie die AHK an!")
    • While anschaffungskosten < 0    anschaffungskosten = InputBox("Die eingegebene Zahl war negativ. Bitte korriegieren Sie Ihre Eingabe")
    • Wend
    • jahre = InputBox("Bitte geben Sie die Anzahl der Jahre ein, in denen abgeschrieben werden soll!")
    • While jahre < 0    jahre = InputBox("Die eingegebene Zahl war negativ. Bitte korriegieren Sie Ihre Eingabe")
    • Wend
    • veräußer = InputBox("Bitte geben Sie den Veräußerungs- oder Verschrottungswert am Ende der Laufzeit an!")
    • While veräußer < 0   
    • veräußer = InputBox("Die eingegebene Zahl war negativ. Bitte korriegieren Sie Ihre Eingabe")
    • Wend
    • abschreibungsbetrag = (anschaffungskosten - veräußer) / jahre
    • restwert = anschaffungskosten

    • 'Zum Anschaffungszeitpunkt entspricht der Restwert den Anschaffungs- oder Herstellungskosten.
    • For i = 1 To jahre
    • restwert = restwert - abschreibungsbetrag 'Restwert wird pro Periode berechnet.
    • ActiveSheet.Cells(i, 1).Value = "Am Ende der Periode " & i & " beträgt der Restbuchwert " & restwert & " Euro."
    • 'Es ist wichtig den Restwert vor der Ausgabe zu berechnen.
    • Next
    • End Sub
  62. Erstellen Sie nun ein Programm, welches die Wertentwicklung eines festverzinslichen Wertpapiers darstellt. Der Nutzer soll die Möglichkeit besitzen den Anfangsbetrag, die jährliche Verzinsung und die geplante Haltedauer anzugeben.
    Der Wert der Position am Ende eines jeden Jahres soll in die Zellen A1 ff. geschrieben werden. Verwenden Sie zur besseren Darstellung einen Satz, wie er in der vorigen Aufgabe angegeben wurde. Auch hier soll verhindert werden, dass negative Werte eingegeben werden können.
    • Private Sub CommandButton1_Click()
    • Dim restwert As Double, abschreibungsbetrag As Double, jahre As Integer, veräußer As Double
    • wert = InputBox("Bitte geben Sie die den Anfangsbetrag an!")
    • While wert < 0
    • 'Die Schleife wiederholt sich, bis die Bedingung nicht mehr erfüllt ist   
    • wert = InputBox("Die eingegebene Zahl war negativ. Bitte korriegieren Sie Ihre Eingabe")
    • Wend
    • zins = InputBox("Bitte geben Sie den Zinsatz in Prozent an!")
    • While zins < 0   
    • zins = InputBox("Die eingegebene Zahl war negativ. Bitte korriegieren Sie Ihre Eingabe")
    • Wend
    • haltedauer = InputBox("Bitte geben Sie Ihre geplate Haltedauer an!")
    • While jahre < 0    haltedauer = InputBox("Die eingegebene Zahl war negativ. Bitte korriegieren Sie Ihre Eingabe")
    • Wend
    • For i = 1 To haltedauer
    • wert = wert * (1 + zins / 100)
    • 'Die Variable wert besitzt auf der rechten Seite immer den Wert der vorigen Iteration
    • '(Bei der ersten Schleifeniteration besitzt die Variable den Anfangsbetrag)
    • ActiveSheet.Cells(i, 1).Value = "Am Ende des " & i & ". Jahres beträgt der Wert der Position " & wert & " Euro."
    • Next
    • End Sub
  63. Da sich die Popgruppe „Singapur Motel“ großer Beliebtheit erfreut, zählt der Fanklub mittlerweile 10.000 Mitglieder. Beim Eintritt in den Klub ist das Ausfüllen eines Formulars, in welchem das Lieblingsbandmitglied des Fans angegeben werden muss, obligatorisch. Dies wird im Array liebling gespeichert. Dabei ist die Codierung folgende:
    • Schnuffi = 1
    • Lalle = 2
    • Kotzi = 3
    • Wobbel = 4
    • Hans-Rüdiger-Konstantin = 5

    Nun möchte die Gruppe erörtern, welches das beliebteste Bandmitglied ist. Das Programm der Datei SingapurMotel.xlsm soll ihnen dabei behilflich sein.
    Hinweis: Sollten sich mehrere Musiker den ersten Platz teilen, muss nur einer dieser Musiker angegeben werden.
    • Sub algorithmus()   
    • ' die Anzahl der Fans   
    • Const n = 10000   
    • Dim liebling(1 To n) As Integer   
    •   ' in anzahl werden später die Fans gezählt    Dim anzahl(1 To 5) As Integer   
    • ' 'name' ist leider ein geschütztes Wort   
    • Dim namen(1 To 5) As String   
    • Dim k As Integer   
    • namen(1) = "Schnuffi"   
    • namen(2) = "Lalle"   
    • namen(3) = "Kotzi"   
    • namen(4) = "Wobbel"   
    • namen(5) = "Hans-Rüdiger-Konstantin"           
    • ' Da wir die Fanklubdaten leider nicht erhalten haben    denken wir uns welche aus.    An jede Stelle des Array liebling wird eine Zufallszahl zwischen 1 und 5 geschrieben.   

    • For k = 1 To n       
    •     liebling(k) = Int(5 * Rnd + 1)  

    •      Next           
    • ' Damit keiner betrügt und vorher noch schnell    ' ein paar Stimmen in den Array anzahl einträgt    ' wird jeder Speicherplatz des Arrays anzahl vor     dem Beginn des Zählens auf Null gesetzt.  
    • Dim i As Integer   
    • i = 1   
    • While ?AAA?       
    •         anzahl(i) = 0       
    •         i = i + 1  
    • Wend

    • ' die Anzahl der jeweiligen Fans wird zusammengerechnet   
    •       For m = 1 To n       
    •              ?BBB?  
    •       Next                
    • ' der Musiker mit den meisten Fans wird ermittelt
    • ' in max wird die Nummer des Musikers mit den    meisten Fans gespeichert   
    • Dim max As Integer  
    • max = 1   
    • k = 2   
    • While ?CCC?       
    •      If anzahl(k) ?DDD? Then        
    •            max = k       
    •      End If       
    •       k = k + 1   
    •     Wend       
    • MsgBox ("Die meisten Fans hat " ?EEE? & ".")

    End Sub

    • AAA  i <= 5
    • BBB  anzahl(liebling(m))=anzahl(liebling(m)) + 1
    • CCC   k<= 5
    • DDD  >= anzahl(max)
    • EEE    & namen(max)
  64. Öffnen Sie die Datei Personalrating.xlsm.Um den geeigneteren Kandidaten für die Stelle des CEOs in einem großen IT Unternehmen zu ermitteln, sollen die Mitarbeiter den beiden Kandidaten Noten verleihen. Diese Noten werden in den Arrays notenArbeitnehmerCEO1 und notenArbeitnehmerCEO2 gespeichert.
    Da ein Vergleich zwischen den Benotungen verschiedener Mitarbeiter nur eingeschränkt möglich ist, wird lediglich die Präferenz in den Arrays eines Mitarbeiters berücksichtigt. Im Array präferenzCEO1 wird bspw. gezählt, wie häufig der erste Kandidat von einem Mitarbeiter bevorzugt wurde.
    Darüber hinaus wird ein CEO-spezifischer Notenspiegel erstellt und im Tabellenblatt ausgegeben. Die Array notenSpiegelCEO2 gibt demnach an, wie häufig welche Note an den zweiten Kandidaten vergeben wurde.
    • Private Sub CommandButton1_Click()
    • Dim CEO(1 To 2) As String
    • CEO(1) = "Cook"
    • CEO(2) = "Ballmer"
    • Const anzahlArbeitnehmer = 1000
    • 'Ein Arbeitnehmer darf jedem CEO eine Note erteilen.
    • Dim notenArbeitnehmerCEO1(1 To anzahlArbeitnehmer) As Integer
    • Dim notenArbeitnehmerCEO2(1 To anzahlArbeitnehmer) As Integer

    • 'In diesen Arrays wird gezählt, wie häufig CEO1 bzw. CEO2 präferiert wurde
    • Dim präferenzCEO1 As Integer
    • Dim präferenzCEO2 As Integer
    • präferenzCEO1 = 0
    • präferenzCEO2 = 0

    • 'Diese Arrays beinhalten die Häufigkeit der vergebenen Noten
    • Dim notenSpiegelCEO1(1 To 5) As Integer
    • Dim notenSpiegelCEO2(1 To 5) As Integer

    • 'Da keine echten Daten zur Verfügung stehen, werden die Noten zwischen 1 und 5 lediglich per Zufall generiert.
    • For i = 1 To anzahlArbeitnehmer           notenArbeitnehmerCEO1(i) = Int(5 * Rnd + 1)   
    • notenArbeitnehmerCEO2(i) = Int(5 * Rnd + 1)
    • Nexti = 1
    • While i <= anzahlArbeitnehmer

    • 'Kleinere Zahlen bedeuten eine höhere Präferenz seitens des Mitarbeiters.
    • 'Hat ein Mitarbeiter beide Kandidaten gleich bewertet, fließt sein Urteil nicht in die Berechnung mit ein.

    • If notenArbeitnehmerCEO1(i) < notenArbeitnehmerCEO2(i) Then         präferenzCEO1 = präferenzCEO1 + 1
    • ElseIf notenArbeitnehmerCEO1(i) > notenArbeitnehmerCEO2(i) Then    präferenzCEO2 = präferenzCEO2 + 1
    • End If

    • 'Hierbei handelt es sich um einen geschachtelten Array. Der Array notenSpiegelCEO wird an der Stelle der Note aus notenArbeitnehmerCEO(i) hochgezählt.
    • notenSpiegelCEO1(notenArbeitnehmerCEO1(i)) = notenSpiegelCEO1(notenArbeitnehmerCEO1(i)) + 1
    • notenSpiegelCEO2(notenArbeitnehmerCEO2(i)) = notenSpiegelCEO2(notenArbeitnehmerCEO2(i)) + 1
    • i = i + 1
    • Wend
    • 'Wurde bspw. CEO1 in Summe besser bewertet als CEO2, wird dieser in Zelle A1 geschrieben.
    • If präferenzCEO1 > präferenzCEO2 Then   ActiveSheet.Cells(1, 1) = CEO(1) & " ist öfter besser bewertet worden"
    • ElseIf präferenzCEO1 < präferenzCEO2 Then     
    •    ActiveSheet.Cells(1, 1) = CEO(2) & " ist öfter besser bewertet worden"
    • Else   
    •   ActiveSheets.Cells(1, 1) = "Beide Kandidaten sind gleich beliebt."
    • End If
    • 'Die Strings werden in die entsprechenden Zellen geschrieben. Beachte, dass es sich bei CE0(1 bzw. 2) um einen String handelt.

    • ActiveSheet.Cells(2, 1) = "Notenspiegel"
    • ActiveSheet.Cells(3, 2) = CEO(1)
    • ActiveSheet.Cells(3, 3) = CEO(2)

    • 'Noten und Anzahl je CEO werden in die entsprechenden Zellen übergeben.
    • For i = 1 To 5   
    • ActiveSheet.Cells(i + 3, 1) = i 'Note übergeben   
    • ActiveSheet.Cells(i + 3, 2) = notenSpiegelCEO1(i)  'Häufigkeit an vergebener Note i für Cook    ActiveSheet.Cells(i + 3, 3) = notenSpiegelCEO2(i) 'Häufigkeit an vergebener Note i für Ballmer
    • Next
    • End Sub

What would you like to do?

Home > Flashcards > Print Preview