[Erledigt] Anfängerfrage - OOBasic

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

OONewb
*
Beiträge: 11
Registriert: Fr, 26.11.2010 16:43

[Erledigt] Anfängerfrage - OOBasic

Beitrag von OONewb »

Hallo OpenOfficler!

Ich stehe vor einem Problem, das sich (vermutlich) nicht so einfach mit den vorgegebenen Werkzeugen in Calc lösen lässt.
Da es algorithmisch eigentlich recht simpel sein sollte, wollte ich das Problem mit einem Makro angehen. Leider scheitere ich schon an den einfachsten Dingen... :oops:
Ein Beispiel sagt ja mehr als 1000 Worte, daher bitte ich um Vervollständigung/Berichtigung des nachfolgenden (Pseudo-)Codes. Mir ist bewusst, dass es für dieses Problem eine fertige Vorlage gibt, mich interessiert jedoch der Basic Code dazu, weil er alles beinhalten solle, was ich brauchen könnte (ohne dass ich umständlich/missverständlich beschreiben muss, was das eigentlich ist).

REM Summenprodukt: Kreuzprodukt zweier Vektoren
REM arg1 zeile1/spalte1
REM arg2 zeile2/spalte2
function Summenprodukt(arg1, arg2) as Integer
sum = 0
for each cell in arg1
sum += cell*arg2.cell++
next cell
Summenprodukt() = sum
end function

Aufruf dazu: Summenprodukt(A1:A10, B1:B10) {oder auch Summenprodukt(A1:E1, A2:E2)}
Idealerweise steht dann in der aufrufenden Zeile die Summe und kann für weitere Berechnungen verwendet werden.

Vielen Dank schon mal!

PS: Mir fällt (etwas verspätet) auf, dass das missverständlich ist: Mein Problem hatte nichts mit dem Summenprodukt zu tun, das sollte nur ein anschauliches Beispiel werden (wenig Code, einfach zu verstehen).
Zuletzt geändert von OONewb am Mo, 29.11.2010 01:34, insgesamt 2-mal geändert.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Anfängerfrage - OOBasic

Beitrag von Stephan »

Ich stehe vor einem Problem, das sich (vermutlich) nicht so einfach mit den vorgegebenen Werkzeugen in Calc lösen lässt.
Hast Du auch nur 1 Minute ernsthaft gesucht?

Das Ganze ist mit den 'gegebenen Werkzeugen von Calc' lösbar, benutze die entsprechende Tabellenfunktion:

=SUMMENPRODUKT(A1:E1;A2:E2)



Gruß
Stephan
OONewb
*
Beiträge: 11
Registriert: Fr, 26.11.2010 16:43

Re: Anfängerfrage - OOBasic

Beitrag von OONewb »

Mir ist bewusst, dass es für dieses Problem eine fertige Vorlage gibt, mich interessiert jedoch der Basic Code dazu, weil er alles beinhalten solle, was ich brauchen könnte (ohne dass ich umständlich/missverständlich beschreiben muss, was das eigentlich ist).
Wenn damit gemeint war, dass man sich den Basic-Source zum Summenprodukt irgendwie ansehen kann, dann bitte ich um eine Anleitung. Ansonsten bitte das Quote lesen.

mfg, Newb
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Anfängerfrage - OOBasic

Beitrag von balu »

Hallo Newb,

ich versteh nur Bahnhof.

Aber Halt, da kam eben eine Lautsprecherdurchsage:
OONewb hat geschrieben: dass man sich den Basic-Source zum Summenprodukt irgendwie ansehen kann
Da musst Du
1.
die Programmierer fragen, die die einzelnen Funktionen (WENN, SUMME, SUMMENPRODUKT ...)programmiert haben

2.
dich in mindestens C++ Programmierung auskennen, oder ähnliche Maschinensprachen.

Calc interne Funktionen (siehe oben) sind nämlich nicht in einer Basic/Makro-Sprache programmiert, sondern in Maschinensprache und direkt in Calc integriert. Es sei denn, es werden Funktionen selber programmiert und als Add-On nachträglich installiert, dann kann man seine eigenen Funktionen einbinden. Aber dieser Weg ist nicht grad einfach, weil man mindestens Punkt 2. beherschen muss und Ahnung vom Compilieren haben.


Auch wenn ich wenig (keine )Ahnung von Makros habe, so sollte man es wohl tunlichst vermeiden selbst erstellte Functions Namen zu vergeben die schon intern für Funktionen reserviert sind. Also in deinem Falle ist "Summenprodukt" absolut Tabu!


Falls ich irgendwo falsch liege, so möge man mich berichtigen.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Anfängerfrage - OOBasic

Beitrag von Stephan »

Wenn damit gemeint war, dass man sich den Basic-Source zum Summenprodukt irgendwie ansehen kann
Nein, denn sowas existiert nicht, die Calc-Tabellenfunktionen sind in C++ geschrieben. Der Quellcode von OOo, und somit auch der der Tabellenfunktionen, ist z.B. ausgehend vón hier erhältlch:
http://wiki.services.openoffice.org/wiki/Getting_It
Ansonsten bitte das Quote lesen.
Und was soll da stehen? Weder geht es hier um eine Vorlage noch um Basic-Code. Oder was verstehe ich miß?

Sicherlich würde es dem allgemeinen Verständnis sehr helfen wenn Du eine Aussage dazu treffen würdest warum Du eine vorhandene Funktion in Basic nachprogrammieren willst, denn niemand versteht sonst den Sinn des Ganzen, zumal ja selbst der Rückgriff auf die fertige Funktion mittels Basic möglich wäre, siehe:
http://www.starbasicfaq.de/WiekannmanFu ... l#Zweig229
ohne die Funktion nachprogrammieren zu müssen.

dich in mindestens C++ Programmierung auskennen, oder ähnliche Maschinensprachen
C++ ist natürlich keine Maschinensprache, da kein Prozessor der Welt C++-Code direkt ausführen kann (=Mindestbedingung für Maschinensprache) sondern bei C++ ein Kompilieren des Codes nötig ist.


Gruß
Stephan
OONewb
*
Beiträge: 11
Registriert: Fr, 26.11.2010 16:43

Re: Anfängerfrage - OOBasic

Beitrag von OONewb »

Also zunächst muss ich mich entschuldigen, es gibt da tatsächlich ein Programmierforum in dem das besser aufgehoben gewesen wäre... :oops:

Zur Anfrage selbst: Ich wollte ein Beispiel für ein Calc-Skript, das in Basic-Code geschrieben ist, das den Zugriff auf ein Formular handhabt, Output in der Zelle in der es eingesetzt wird und das in übersichtlicher Form. Da ich nicht wirklich weiß worauf es bei Basic ankommt, wollte ich nicht spezifisch werden - dann hätte ich bestimmt was Essentielles übersehen und der Thread wäre unnötig gewachsen. Leider habe ich das durch meine falsche Forumswahl schon erreicht...
Warum Summenprodukt? Weil es ein simples Beispiel ist, das alle relevanten Konzepte einsetzt ohne irgendwelche Schnörkel zu benötigen. Genauso hätte ich den Mittelwert einer Spalte nehmen können, oder ...

Mittlerweile habe ich übrigens mein Problem in Java (ohne OpenOffice) gelöst. Zwar nicht so elegant und auch nichts dabei gelernt, aber immerhin funktioniert's schon. :D

Danke für die (meisten) Antworten und ich bitte nochmal um Verzeihung!
Antworten