Kurs:Programmierung in Ruby

Aus Wikiversity

Einführung[Bearbeiten]

Ruby[Bearbeiten]

Aufgabe 1: Sternchenmuster[Bearbeiten]

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: Listen[Bearbeiten]

  • 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: Sortierverfahren[Bearbeiten]

Aufgabe 3/2: Suchverfahren[Bearbeiten]

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

Aufgabe 4: Klassen[Bearbeiten]

Aufgabe 4.1: Objektorientierte Modellierung[Bearbeiten]

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 Calc[Bearbeiten]

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 Array[Bearbeiten]

Erweitern Sie die Klasse Array um die folgenden Methoden

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

Aufgabe 4.4: Klasse Bruchzahl[Bearbeiten]

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

Aufgabe 4.5: Klasse Vektor[Bearbeiten]

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 Figuren[Bearbeiten]

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 Arrays[Bearbeiten]

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 hinten[Bearbeiten]

Aufgabe 8: Quersumme[Bearbeiten]

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 rulez[Bearbeiten]

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 Dreieck[Bearbeiten]

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