Kurs:Programmierung in Ruby

Einführung

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.