Kurs:Programmierung in Ruby

EinführungBearbeiten

RubyBearbeiten

Aufgabe 1: SternchenmusterBearbeiten

Erzeugen Sie die folgenden Sternchenmuster unter Verwendung von Schleifen.

*****
*****
*****
*****
*****

*
**
***
****
*****
******
*******
********
*********
**********

         *
        **
       ***
      ****
     *****
    ******
   *******
  ********
 *********
**********

          *
         ***
        *****
       *******
      *********
     ***********
    *************
   ***************
  *****************
 *******************


          *
 *******************
         ***       
  *****************
        *****
   ***************
       *******
    *************
      *********
     ***********
     ***********
      *********
    ************* 
       *******
   ***************
        *****
  *****************
         *** 
 *******************
          *


  *
******************
   **
*****************
    ***
****************
     ****
***************
      *****
**************
       ******
*************
        *******
************
         ********
***********
          *********
**********
           *********
*********


*
**
***
***
***
**
*

*
**
***
***
***
**
*

*
**
***
***
***
**
*


Kopfnuss:
*
**
***
****
 ***
** **
*** *
*** *
** * *
* * * *
** * * *
*** * *
**** *
****
***
**
*
*
**
***
****
 ***
** **
*** *
*** *
** * *
* * * *
** * * *
*** * *
**** *
****
***
**
*

Wenn Sie fertig sind, dann denken Sie sich selbst Sternchenmuster aus. Programmieren Sie diese und stellen Sie sie hier ins Wiki ein. Die anderen Kursteilnehmer müssen dann versuchen, diese nachzuprogrammieren!

Aufgabe 2: ListenBearbeiten

  • Schreiben Sie ein Programm, das alle Zahlen in einer Liste addiert und anschließend die Summe ausgibt.
  • Schreiben Sie ein Programm, das den Inhalt einer Liste rumdreht.
  • Schreiben Sie ein Programm, das die Zahlen zweier Listen komponentenweise addiert.
  • Überlegen Sie sich selbst Programmieraufgaben, in denen Listen eine wesentliche Rolle spielen. Stellen Sie die Aufgaben hier ein, nachdem Sie sie selbst gelöst haben.

Aufgabe 3: SortierverfahrenBearbeiten

Aufgabe 3/2: SuchverfahrenBearbeiten

  • Implementieren Sie die Lineare Suche
  • Implementieren Sie die Binäre Suche. (Was ist die Voraussetzung, damit der Algorithmus funktioniert?)

Aufgabe 4: KlassenBearbeiten

Aufgabe 4.1: Objektorientierte ModellierungBearbeiten

Modellieren Sie eine der folgenden Klassen und setzen sie diese in Ruby um:

  • Auto
  • Katze
  • Tamagotchi
  • Radio
  • Kaffeeautomat
  • ...

Überlegen Sie sich dabei, welche Attribute und welche Methoden sinnvoll sind, und implementieren Sie diese entsprechend. Testen Sie Ihre Klasse, indem Sie mehrere Objekte erzeugen und damit spielen.

Aufgabe 4.2: Klasse CalcBearbeiten

Schreiben Sie die Klasse Calc, die einen "Akkumulator-Taschenrechner" darstellen soll. Beispielhafte Methoden sind

  • set(x)
  • add(x)
  • sub(x)
  • abs
  • getvalue

Folgende Aufrufreihenfolge soll damit z.B. möglich sein:

  • C = new Calc(3)
  • c.add(6)
  • c.add(2)
  • c.sub(3)
  • puts c.getValue

In diesem Beispielprogramm soll der Wert 8 ausgegeben werden.

Erweitern Sie anschließend Ihren Taschenrechner um zusätzliche Funktionen. Welche sind sinnvoll?

Aufgabe 4.3: Klasse ArrayBearbeiten

Erweitern Sie die Klasse Array um die folgenden Methoden

  • bubblesort
  • swap(m,n)
  • mean
  • sum
  • min
  • max

Aufgabe 4.4: Klasse BruchzahlBearbeiten

Schreiben Sie eine Klasse, mit deren Hilfe Bruchzahlen repräsentiert und Bruchzahloperationen durchgeführt werden können.

Aufgabe 4.5: Klasse VektorBearbeiten

Schreiben Sie eine Klasse, die Vektorrechnung im dreidimensionalen Raum umsetzt. Implementieren Sie die Vektoraddition, die Vektormultiplikation, die Multiplikation mit einem Skalar und das Skalarprodukt.

Aufgabe 4.6: Klassen für geometrische FigurenBearbeiten

Schreiben Sie Klassen für geometrische Figuren wie beispielsweise KREIS, QUADRAT, RECHTECK, DREIECK, ..., die Methoden z.B. zur Berechung der Umfangs und des Flächeninhalts anbieten.

Aufgabe 5: Zweidimensionale ArraysBearbeiten

Analysieren Sie das Kopfrechengitter.

  1. Können alle Zahlen von 0 bis 100 gebildet werden?
  2. Können alle Zahlen von 0 bis 100 "gleich oft" gebildet werden? Oder gibt es Zahlen, die "häufiger vorkommen"?

Aufgabe 7: A-N-N-A, von vorne wie von hintenBearbeiten

Aufgabe 8: QuersummeBearbeiten

Schreiben Sie eine Prozedur, welche die Quersumme einer gegebenen Zahl berechnet. Eventuell hilft Ihnen hier auch die Dokumentation der Klasse Fixnum weiter

Aufgabe 9: Übersichtlichkeit rulezBearbeiten

Schreiben Sie eine Prozedur, die eine gegebene Zahl strukturiert darstellt, indem sie von rechts jeweils drei Ziffern zusammenfasst und durch einen Punkt abtrennt. Also: 4546743 wird dargestellt als 4.546.743

Aufgabe 10: Pascalsches DreieckBearbeiten

Schreiben Sie ein Programm, dass das Pascalsche Dreieck ausgibt. Die Höhe des Dreiecks soll über die Kommandozeile übergeben werden.