Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Notfall! Ruby für Idioten
BeitragVerfasst: 24 Nov 2016, 14:11 
Offline
Nuby

Registriert: 24 Nov 2016, 13:49
Beiträge: 1
Servus, ich habe ein Problem, bei dem ich dringend Hilfe brauche. Ich studiere zur Zeit Biologie, und eines der Pflichtfächer ist Informatik. Ich persönlich freue mich ja schon wenn ich den PC ankriege, ohne dass er mir um die Ohren fliegt, aber nun stellen die Dozenten ab letzten Freitag wöchentlich Aufgaben, welche es zu Lösen gilt. Doof ist nur, dass ich die letzte Vorlesung verpasst habe und keinen meiner Kommilitonen erreichen konnte. Ich habe erst gestern Abend von diesen Aufgaben erfahren und bin beim dem Versuch sie zu lösen an meine Schmerzgrenze gekommen. Der Abgabetermin ist morgen um 12 und ich habe noch nichts geschafft! Jede Hilfe die ich kriegen kann ist willkommen, und ich verspreche mehr bei Info aufzupassen und die zukünftigen Aufgaben alleine zu beantworten! Aber diesesmal brauche ich schnell Lösungen und Hilfe!!

Das sind die Aufgaben, welche mir Kopfschmerzen bereiten:

Aufgabe 01
In dieser Aufgabe wollen wir schrittweise ein Programm entwickeln, das gemessene Temperaturwerte von einem Server im Internet liest und sortiert nach Uhrzeiten den Temperaturverlauf ausgibt. Das Programm verhält sich also nach außen ganz anders als das in der Vorlesung entwickelte: Es sammelt die Temperaturwerte erst intern und gibt sie dann ganz zum Schluss (sortiert) aus.

Die Temperaturwerte werden zeilenweise in folgendem Format geliefert: 09:00 Uhr 14.1 °C.

1.
Vervollständigen Sie in einem ersten Schritt die Definition der Funktion get_temperatures() zum Erzeugen einer Liste aus einer entsprechenden Tastatureingabe:
# Liest Uhrzeiten (z. B. 09:15 Uhr) und Temperaturen
# (z.B. 16.0 °C bzw. 06.5 °C) zeilenweise von der Tastatur, bis eine Zeile "done\n"
# gelesen wird, und gibt die Daten als eine Liste von Listen mit jeweils zwei
# Elementen als Ergebnis zurück.
# Die Ergebnisse werden dabei nicht auf dem Bildschirm ausgegeben.
#
# Beispiel: Bei der Eingabe von
#
# 09:30 Uhr 09.0 °C
# 12:45 Uhr 18.5 °C
# 10:00 Uhr 13.0 °C
# done
#
# gibt die Funktion als Ergebnis die Liste [["09:30",9.0],["12:45",18.5],["10:00",13.0]] zurück.
def get_temperatures()
...
end


2.
Vervollständigen Sie die Definition der Funktion print_temperatures(list), die die Elemente einer Liste, wie sie get_temperatures() zurückgibt, zeilenweise auf dem Bildschirm ausgibt. Testen Sie print_temperatures(list) und get_temperatures() auch, indem Sie sie in einem Programm kombinieren.# Gibt den Inhalt von `list` zeilenweise auf dem Bildschirm aus.
#
# `list`: eine Liste von zweielementigen Listen, bei denen der erste Eintrag eine Uhrzeit
# in Form einer Zeichenkette und die zweite eine Fließkommazahl ist.
#
# Beispiel: print_temperatures([["09:30",9.0],["12:45",18.5],["10:00",13.0]]) führt zu
# der folgenden Bildschirmausgabe:
#
# 09:30 Uhr 09.0 °C
# 12:45 Uhr 18.5 °C
# 10:00 Uhr 13.0 °C
#
def print_temperatures(list)
...
end


3.
3.Das zu entwickelnde Programm, soll Werte in sortierter Reihenfolge (geordnet) ausgeben. Ein Ansatz, dies zu erreichen, ist: Jeder neue Wert wir in eine gegebene Liste so eingetragen, dass er an der richtigen Stelle steht. Wir realisieren dies zunächst in einer einfachen Form.

Vervollständigen Sie die Definition der Funktion insert_number(list, number):
# Gibt eine sortierte Liste zurück, die alle Elemente von `list` und zusätzlich `number` enthält.
#
# list: eine aufsteigend sortierte Liste von Gleitkommazahlen.
# number: eine Gleitkommazahl.
#
# Beispiele:
# - insert_number([2.0,3.5,4.8], 4.1) wird zu [2.0,3.5,4.1,4.8] ausgewertet.
# - insert_number([], 5.1) wird zu [5.1] ausgewertet.
def insert_number(list, number)
new_list = []
position = 0
number_has_been_inserted = false # Remember whether a new number
# has been inserted.
while position < list.length
...
end
...
new_list
end


4.
Nutzen Sie nun Ihre Überlegungen und den Quelltext aus der vorherigen Aufgabe, um die Definition der Funktion insert_record(list,record) zu vervollständigen, die nun eine zweielementige Liste mit einer Uhrzeit als ersten Wert in eine bereits nach der Uhrzeit sortierte Liste von zweielementigen Listen einfügt.
# Gibt eine sortierte Liste zurück, die alle Elemente von `list`und zusätzlich `number` enthält.
#
# list: eine aufsteigend sortierte Liste von zweielementigen Listen. Das erste Element der
# zweielementigen Listen ist eine Zeichenkette (Uhrzeit) und list ist nach diesen Zeichenketten
# sortiert, z.B., [["08:20", 3000.1], ["09:33", -500.0], ["23:59", 100000.0]].
# record: ein zweielementige Liste des obigen Formats, z.B. ["23:59", 100000.0]].
#
# Beispiele:
# - insert_record([["09:30",9.0],["12:45",18.5]], ["10:00",13.0])
# wird zu [["09:30",9.0],["10:00",13.0],["12:45",18.5]] ausgewertet.
# - insert_record([], ["10:00",13.0]) wird zu [["10:00",13.0]] ausgewertet.
def insert_record(list, record)
new_list = []
position = 0
record_has_been_inserted = false # variable to store if the new record has been inserted.
while position < list.length
...
end
...
new_list
end


5.
Vervollständigen Sie die Definition der Funktion get_temperatures_sorted(), indem Sie ihren Code aus der ersten Teilaufgabe nutzen und die Funktion insert_record(list,record) geschickt einbauen. Testen Sie die Funktion, indem Sie ihr Programm aus der zweiten Teilaufgabe anpassen.
# Liest Uhrzeiten (z. B. 09:15 Uhr) und Temperaturen (z.B. 16.0 °C bzw. 06.5 °C) zeilenweise von der Tastatur
# bis eine Zeile "done\n" gelesen wird und gibt die Daten als eine nach der Uhrzeit sortierte Liste von Listen mit jeweils
# zwei Elementen als Ergebnis zurück.
#
# Das Ergebnis wird dabei nicht auf dem Bildschirm ausgegeben.
#
# Beispiel: Bei der Eingabe von
#
# 09:30 Uhr 09.0 °C
# 12:45 Uhr 18.5 °C
# 10:00 Uhr 13.0 °C
# done
#
# liefert die Funktion als Ergebnis die Liste [["09:30",9.0],["10:00",13.0],["12:45",18.5]] (Vergleiche mit dem Beispiel oben)
# zurück.
def get_temperatures_sorted()
...
end


6.
Geben Sie nun ein vollständiges Programm an, das die Funktionen get_temperatures_sorted() und print_temperatures(list) nutzt, um zuerst die Uhrzeit und Temperaturdaten von der Tastatur einzulesen und nach done dann sortiert auf dem Bildschirm auszugeben.
7.
Erweitern Sie ihr Programm so, dass die Daten nicht von der Tastatur, sondern von einem Server eingelesen werden.
Hinweise
•Sie können Teilstrings "cde" aus einem größen String "abcdef" mit "abcdef"[2..4] extrahieren.
•Zum Vergleichen zweier Uhrzeiten in Form von Zeichenketten kann < verwendet werden, z.B. wird "10:15" < "12:45" zu true ausgewertet.

Aufgabe 02
Geben Sie in der grafischen Notation an, wie Ruby die drei folgenden Ausdrücke auswertet:

A) if x = 3 < 2 then 2 else x end

B) def dec(x)
if x >= 1 then
x -= 1
else
0
end
end
dec(4) + 2

C) x = 1.5
while x > 1
x = x/2
end


Vielen, vielen Dank an alle, welche sich die Zeit genommen haben um mir zu Helfen!!!


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Notfall! Ruby für Idioten
BeitragVerfasst: 24 Nov 2016, 15:17 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
RainerZufall hat geschrieben:
Servus, ich habe ein Problem, bei dem ich dringend Hilfe brauche. Ich studiere zur Zeit Biologie, und eines der Pflichtfächer ist Informatik. Ich persönlich freue mich ja schon wenn ich den PC ankriege, ohne dass ei mir um die Ohren fliegt, aber nun stellen die Dozenten ab letzten Freitag wöchentlich Aufgaben, welche es zu Lösen gilt. Doof ist nur, dass ich die letzte Vorlesung verpasst habe und keinen meiner Kommilitonen erreichen konnte. Ich habe erst gestern Abend von diesen Aufgaben erfahren und bin beim dem Versuch sie zu lösen an meine Schmerzgrenze gekommen. Der Abgabetermin ist morgen um 12 und ich habe noch nichts geschafft! Jede Hilfe die ich kriegen kann ist willkommen, und ich verspreche mehr bei Info aufzupassen und die zukünftigen Aufgaben alleine zu beantworten! Aber diesesmal brauche ich schnell Lösungen und Hilfe!!


Grundsätzlich lösen wir hier keine Hausaufgaben. Bitte stelle konkrete Fragen. Ich muss hier davon ausgehen, dass alle Grundlagen in der Vorlesung gelegt wurden, gerade da ihr Fachfremd seit. Ist dies nicht der Fall wende dich bitte an deinen Prüfungsausschus und ggf an die zuständige Akreditierungsstelle.

Ansonsten möchte ich dir dringend ans Herzu legen, keine Vorlesungen zu verpassen, gerade in den Seiten-Fächern die scheinbar kein Mensch braucht. Es ist schade wenn diese einem das Studium versauen. Bei mir wäre es wärend meines Informatikstudiums fast wegen BWL zum Ende gekommen... Auch solltest du möglicherweise dein Kommilitonen-Netzwerk vergrößern. Gegebenenfalls suche dir eine Partnerschaft für diese Aufgaben.

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Notfall! Ruby für Idioten
BeitragVerfasst: 25 Nov 2016, 14:04 
Offline
Meister

Registriert: 02 Jan 2010, 16:42
Beiträge: 204
Wohnort: Schweiz
Zitat:
Vielen, vielen Dank an alle, welche sich die Zeit genommen haben um mir zu Helfen!!!


Mit Hilfe hat das doch nichts zu tun, sondern vielmehr möchtest Du eigene Anstrengungen auf andere abwälzen. Wie würdest Du dich verhalten, wenn ich dich um Folgendes bitten würde:

Zitat:
HILFE! Weiss nicht wie ich meine Wohnung putzen soll. Wer hat Zeit und putzt meine Wohnung? Vielen, vielen Dank an alle, die sich die Zeit nehmen werden, um mir diesbezüglich zu helfen!!!"


Wenn Du jemanden willst, der deine Hausaufgaben macht, denke ich, dass es genügend Programmierer hier gibt, die das entgeltlich machen werden.

Oder wir beide machen einen Deal: Du putzt meine Wohnung und ich löse deine Hausaufgaben. ;-)

_________________


1
2
Betriebssysteme: Windows 10, Linux Mint 17.3
Rubyversion : 2.2.4-p230


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Notfall! Ruby für Idioten
BeitragVerfasst: 28 Nov 2016, 14:54 
Offline
Schüler

Registriert: 06 Mai 2008, 12:42
Beiträge: 22
Wohnort: München
Gegen Kopfschmerzen hilft manchmal ein Aspirin, aber ich glaube nicht, dass Du *das* wissen wolltest.

Wenn Du in einem Forum Hilfe haben möchtest, musst Du eine konkrete Frage stellen, sonst kannst Du keine Antwort bekommen. Aus Deinem Posting kann ich nicht erkennen, was Du jetzt eigentlich wissen willst.

Ansonsten ein Tip: Wenn Dir mehrere *verschiedene* Sachen unklar ist, mache aus jeder eine eigene Frage, d.h. einen eigenen Thread.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Notfall! Ruby für Idioten
BeitragVerfasst: 28 Nov 2016, 15:07 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Wir brauchen hier keine Beiträge mehr die bereits gesagtes mit neuen Metaphern wiederholen, ich werde daher einfach mal abschliessen, falls wirklich konkrete Fragen auftreten bitte ich einfach einen neuen Thread aufzumachen.

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: