ganz einfache frage
-
Simon2 schrieb:
bla
könntest du denn eine verkettete liste bauen? wenn ja, nimm meistens std::list.
aber wenn nein, dann tu es, um zu lernen, zu beispiel, daß zeiger nicht weh tun und kein gefrickele sind, sondern nur dann gefrickel werden, wenn der zeigerbenutzer von seinen listen nix gelernt hat.außerdem wirste hier keinen gral der c-programmierung finden. falsches forum.
-
Simon2 schrieb:
taja schrieb:
Simon2 schrieb:
P.S.: Ich habe wohl noch nie eine verkettete Liste selbst programmiert
Das ist wohl dein Problem, hättest du es gemacht, dann würdest du jetzt wissen, dass es nicht um "Rad neuerfinden" geht, ...
Ah! Ich wusste, dass ich damit in ein Wespennest steche. Ich habe den heiligen Gral der C-Programmierung befleckt! :p

Du hast es eindeutig kappiert...

Simon2 schrieb:
Eigentlich ist mir ziemlich egal, ob Ihr mich für eine Flasche haltet oder nicht. Ich werde ganz gut bezahlt für das, was ich kann und seltsamerweise hat sich meine Abneigung gegen Selbstgestrickte Pointerfrickelei noch nie negativ auf meine Arbeit ausgewirkt (auch nicht bei der Analyse und Weiterentwicklung von fremdem Code).
Du bist doch der in dessen Firma plötzlich Objekte in Listen auftauchen die da garnicht rein gehören und daran ist natürlich Java schuld und die Leute die damit arbeiten...
-
@Simon2:
Beantworte dir selber bitte nur folgende Frage:sagen wir einmal die naechste aufgabe die der OP bekommt lautet: zaehle alle buchstaben die in der zeichenkette. natuerlich kannst du jetzt ganz lustig sum() empfehlen, aber dann kommt die aufgabe die 3 am haeufigst vorkommenden buchstaben auszugeben. was jetzt?
alle anderen mitschueler koennen diese aufgabe problemlos loesen, denn sie haben die beiden vorhergehenden verstanden. sie koennen solche probleme loesen und die loesungen auf andere probleme umlegen. waehrend unser armer OP wieder zu dir rennen muss und fragen welche fertige funktion es hierfuer gibt.Wer hat nach diesen 3 Aufgaben die besseren Programmier Kenntnisse.
Der OP der sich die fertigen Funktionen von dir geholt hat oder seine Kollegen die Schleifen verstanden haben.Der Punkt ist:
der OP kann mit Schleifen nicht korrekt umgehen, er kann Probleme nicht loesen.
Das ist der aktuelle Stand.Wie genau hilft ihm nun std::count() zu verwenden dabei probleme zu loesen und schleifen zu verstehen?
Oder noch trivialer gesagt:
wie genau hilft mir std::list zu verwenden mit zeigern umzugehen?es geht hierbei ja nicht darum das gestellte problem zu loesen, sondern dabei etwas zu lernen. wenn jemand die aufgabe falsch loest, aber zeigt dass er zB schleifen verstanden hat - dann ist das deutlich mehr wert als jemand der eine fertige loesung kopiert.
das ist etwa so wie in der schule frueher: hausaufgaben machen. hausaufgaben sind sinnlos, es bringt einem nichts die loesung herauszubekommen. denn die loesung ist langweilig und wurde im unterricht vermutlich eh schon besprochen.
aber warum sind hausaufgaben dennoch wichtig? weil du lernst das praktisch anzuwenden was du nur theoretisch gelernt hast.
wenn man es nicht mehr noetig hat, weil man es bereits praktisch anwenden kann - dann muss man die aufgaben auch nicht machen. wenn man es aber nicht praktisch anwenden kann, dann verliert man einen grossen lerneffekt wenn man sie nicht macht.
aber eigentlich ist das grundlagen wissen... wie man lernt, lernt man bereits in der volksschule

@drakon:
ob man nun eine verkettete liste, eine skip list oder einen bestimmten baum baut - der ansatz ist ziemlich der gleiche. es geht ja nicht um konkrete loesungen (die loesungen sind beim lernen komplett uninteressant) es geht um den loesungsweg.die loesung selber ist beim lernen immer zweitrangig.
PS:
ich stell mir mathematik unterricht gerade vor wie er von euch abgehalten werden wuerde:
so, nun machen wir eine kurven diskussion: nehmt euren taschenrechner, waehlt kurvendiskussion aus, gebt diese funktion hier ein und drueckt berechnen.ok, das wars, als naechstes lernen wir matrizen rechnung: nehmt euren taschenrechner und waehlt matrix rechnung aus, gebt diese beiden matrizen ein und drueckt multiplizieren.
gut, nun lernen wir ...
sicher sehr sinnvoll

-
@Kritiker
Ha! Ich sagte zwar es macht mir nichts aus, aber dann dieser Smiley an unpassender Stelle. Tz tz ... Das würde ich NIEMALS tun.

Bin daher, wie von Nexus vorgeschlagen, dem Clup beigetreten.
@Simon2
Ich halte dich sicherlich nicht für eine Flasche.In den frühen 80ern Informatikunterricht?!? Dann auch noch verkettete Listen in der 9. Klasse?!? Das muss ja eine Schule für Hochbegabte gewesen sein.

Welche Programmiersprache hattet ihr damals zur Verfügung? Ich kann mich an meinen ersten - ja - Computer-Unterricht (von Informatik sprach man damals bei uns noch nicht) erinnern, da war es ein BASIC-Dialekt auf einem Schneider-PC. Das war aber bereits in den späten 80ern. Von verketteten Listen waren wir aber sicherlich weit entfernt.
-
Sagt mal, könnte es nicht sein, dass ihr ein wenig aneinander vorbeiredet?
Simon2 schrieb:
P.S. Ich muss zugeben, dass ich damals in der 9. Klasse (also vor äh ... 25 Jahren) im Imfounterricht mal eine verkettete Liste programmiert habe (auch eine doppelte und diverse Baumstrukturen). Spaß gemacht hat's nicht ...
Und genau darum geht es ja aktuell. Es geht darum, dass man die Grundlagen lernt, wenn man anfängt zu programmieren. Man implementiert eine verkettete Liste, um die Zeiger und den Aufbau von Strukturen und Klassen, allenfalls Templates, Speicherverwaltung und noch anderes zu üben. Es geht bei der Übung allerdings nicht darum zu lernen, wie eine verkette Liste aussieht, bzw. das ist dann mehr ein Nebenprodukt.
Diese Übung macht man in einem Stadium, wo man noch nicht all zu viel über C++ weiss, damit man sich in der Sprache festigt. Die Übung ist auch nicht all zu schwer, perfekt für einen Anfänger. Und wenn er die Arbeit abgeschlossen hat, kann man ihn aufstd::listhinweisen.Oder das implementieren von
std::count, empfindet ich als eine sehr gute Übung, wenn man Schleifen erlernt. Wenn man die Schleifen lernt, hat man womöglich noch nicht mal etwas von Funktionen gehört. Es soll ja auch eine triviale Übung sein, nur fürs Schleifen lernen. Es geht gar nicht darum, dass man lernt, wie man etwas zählt. Die Handhabung von Schleifen soll man lernen. Es ist eben eine Übung.@Shade Of Mine,
Pauschalisierst du nicht ein wenig zu sehr? Ich interessiere mich auch für die Basics und will oft auch so viel wie möglich über diese Wissen, bevor ich sie einsetze, aber manchmal ist das einfach auch zu unproduktiv und ich schiebe es weiter nach hinten. Ich verwende zum Beispiel eine Bibliothek für 2D/3D Ausgabe, welche auf OpenGL aufbaut. Ich persönlich habe aber so gut wie keine Ahnung, wie man OpenGL verwendet. Es wäre eine riesige Arbeit, wenn ich zuerst OpenGL lernen müsste, der Nutzen wäre aber äusserst gering. Ich werde es noch tun, aber nur weil es mich interessiert.Ich denke es ist wichtig zu sehen, worum es bei dieser Aufgabe des Threaderstellers (wahrscheinlich) geht. Es geht nicht darum, wie man etwas zählt, sondern wie man mit Schleifen umgeht. Ich muss nicht wissen, wie man etwas zählt, bevor ich
std::counteinsetze, aber ich sollte wissen, wie man mit Schleifen umgeht.Ich hoffe es ist klar, auf was ich hinaus will.
Grüssli
-
Dravere schrieb:
Pauschalisierst du nicht ein wenig zu sehr? Ich interessiere mich auch für die Basics und will oft auch so viel wie möglich über diese Wissen, bevor ich sie einsetze, aber manchmal ist das einfach auch zu unproduktiv und ich schiebe es weiter nach hinten. Ich verwende zum Beispiel eine Bibliothek für 2D/3D Ausgabe, welche auf OpenGL aufbaut. Ich persönlich habe aber so gut wie keine Ahnung, wie man OpenGL verwendet. Es wäre eine riesige Arbeit, wenn ich zuerst OpenGL lernen müsste, der Nutzen wäre aber äusserst gering. Ich werde es noch tun, aber nur weil es mich interessiert.
Und wo genau sage ich, dass das schlecht ist?
-
Shade Of Mine schrieb:
Und wo genau sage ich, dass das schlecht ist?
Ich habe dich im grossen und ganzen so verstanden und glaube Simon2 auch. Aber das zeigt wohl auf, dass man dich missversteht, dass du eben was anderes meinst, deshalb sagte ich ja, dass ihr euch womöglich aneinander vorbei redet.
Shade Of Mine schrieb:
du fängst beim lernen immer klein an. das macht ja auch sinn. du musst count() implementieren können bevor du es verwenden darfst. denn wenn nicht, dann führt das zu furchtbarem.
Ich könnte die 2D/3D Bibliothek nicht implementieren, mir fehlt das Wissen über OpenGL.
Grüssli
-
Leute is doch ganz einfach... Was wäre denn jetzt, wenn sein Lehrer fragt "was macht count genau?"? Er könnte es nicht erklären, weil er kein schimmer hat wie es funktioniert. Ist mir klar das Programmierer von Natur aus faul sind, aber es bringt mir nix etwas zu programmieren, wovon ich selbst mal nicht den Plan hab, oder sehe ich das falsch? Ist schön das ihr kurz und bündig und blub coden wollt, aber bevor man einem Anfänger die chinesische Grammatik beibringt, sollte man ihm erstmal die Wörter beibringen.
-
FreakY<3Cpp schrieb:
Ist schön das ihr kurz und bündig und blub coden wollt, aber bevor man einem Anfänger die chinesische Grammatik beibringt, sollte man ihm erstmal die Wörter beibringen.
Dazu verwendet man einen Dolmetscher und schon hat man chinesisch gelernt.

-
Und wie sähe dein Dolmetscher in C++ aus ? std::count() ist die Grammatik und darin die Wörter und Rechtschreibung. Wie willste ihm jetzt die Grammatik beibringen ohne den Inhalt erklärt zu haben?

-
Ich verstehe eure Disskusion kein bisschen, nach dem sich der Threadsteller nicht die mühe gemacht hat, eine meiner Meinung nach recht simple Aufgabe selbst zu lösen, wird er sich mit Sicherheit auch nicht mit den Lösungen beschäftigen die er hier bekommen hat. Er wird warscheinlich per Copy & Paste die Lösung verwendet haben, da sie ja funktioniert braucht man sich ja keine gedanken mehr darüber zu machen.
Somit ist IMHO der Lerneffekt==0 wenn man ihm gleich die Lösung hin klatscht.
-
Dravere schrieb:
Ich könnte die 2D/3D Bibliothek nicht implementieren, mir fehlt das Wissen über OpenGL.
Ne ne ne.
OpenGL hat nichts mit einer Schleife zu tun.Was du verstehen musst um eine 2D/3D Bibliothek vernuenftig nutzen zu koennen ist 2D/3D programmierung (was sind sprites, culling,...) und dazu muss man keine API auswendig lernen.
lerneffekt==0 schrieb:
Somit ist IMHO der Lerneffekt==0 wenn man ihm gleich die Lösung hin klatscht.
Sowieso. Deshalb ist ja eigentlich auch die policy im forum dass wir keine hausaufgaben machen... daran haelt sich nur halt meistens einer nicht.
-
Shade Of Mine schrieb:
Ne ne ne.
OpenGL hat nichts mit einer Schleife zu tun.Was du verstehen musst um eine 2D/3D Bibliothek vernuenftig nutzen zu koennen ist 2D/3D programmierung (was sind sprites, culling,...) und dazu muss man keine API auswendig lernen.
Genau so denke ich auch. Aber diese Unterscheidung kam bei dir bisher zu wenig rüber, deshalb sprach ich eben davon, dass du womöglich die Sache zu sehr pauschalisierst.
Bin gespannt, ob Simon2 jetzt nicht auch auf diesen Dampfer aufspringen wird

Grüssli
-
Dravere schrieb:
....Es geht darum, dass man die Grundlagen lernt, wenn man anfängt zu programmieren. ...
Ich denke, nicht ganz.
Es geht IMHO um die Frage, was die heute notwendig zu lernenden Grundlagen sind.... und ich wage zu bezweifeln, dass es heute immer noch dieselben sind wie vor 25 Jahren.
Aber anscheinend bin ich der Einzige hier, der an die Weiterenwicklung von Lernstoff (und -methoden) in einer sich verändernden Welt glaubt. Macht ja nix ...
Wie sagte schon Tyler Durden:
*
"Und ? Fahren Sie gut damit ? [...] Dann bleiben Sie dabei! Bleiben Sie dabei!"
*Gruß,
Simon2.
-
Simon2 schrieb:
... und ich wage zu bezweifeln, dass es heute immer noch dieselben sind wie vor 25 Jahren.
natürlich ändern sich die gewichte. heute lernt man schaltbrettstecken nicht mehr. auch wenig asm. aber es werden nicht alle grundlagen weggeworfen.
und was sind schon lächerliche 25 jahre. in der mathematik lernte ich unmengen sachen, wie den satz des pythagoras, die über 2000 jahre alt sind. die werden doch nicht schlecht.Simon2 schrieb:
Aber anscheinend bin ich der Einzige hier, der an die Weiterenwicklung von Lernstoff (und -methoden) in einer sich verändernden Welt glaubt. Macht ja nix ...
nein, du bist nur der einzige, der kein maß findet.
-
volkard schrieb:
...
Simon2 schrieb:
Aber anscheinend bin ich der Einzige hier, der an die Weiterenwicklung von Lernstoff (und -methoden) in einer sich verändernden Welt glaubt. Macht ja nix ...
nein, du bist nur der einzige, ....
Stimmt, Dravere hat das auch schon betont ... allerdings vermisse ich auch nur den kleinsten Hinweis on den "std::count()-Hassern"
in diesem Thread.
Obwohl der Hinweis auf "Schaltbrett" ist ja schonmal eine zaghafter Ansatz, der in diese Richtung gehen könnte.Falls es (wie Dravere vermutet) hilfreich ist, nochmal den Ausgang der (Sub-)Diskussion (,an der ich mich beteiligt habe):
Simon2 schrieb:
Shade Of Mine schrieb:
Aeh...
Ihr wisst schon wie man etwas lernt, oder?
Indem man es anwendet.Ein Funktionsaufruf lehrt garnix. Ausser wie man eine Funktion aufruft....
Eben.
...Die Aussage "Ein Funktionsaufruf lehrt garnix" lehne ich ebenso ab wie Shades Alleinanspruch auf didaktisches Verständnis.
Weiterhin verschärft durch:Shade Of Mine schrieb:
...
du fängst beim lernen immer klein an. das macht ja auch sinn. du musst count() implementieren können bevor du es verwenden darfst. denn wenn nicht, dann führt das zu furchtbarem....(An dem Punkt ging es bei der Diskussion schon lange nicht mehr nur um std::count)
In dieser Allgemeinheit ("alles, was man anwendet muss man zuvor selbst implementiert haben, sonst Furchtbares..."
halte ich für absolut an der Realität (und auch an der von Shade) vorbei.und:
volkard schrieb:
Simon2 schrieb:
Wer sagt denn, dass das Lernen von std::count() (und insgesamt vom lösungsgerechten Umgang mit dem vollständigen Umfang der Sprachmittel) soviel weniger wert ist als das Lernen vom "Raderfinden" ?
ich.
...Vielleicht ist das Entscheidende diese (jetzt) fettgedruckte Wort.
Gruß,
Simon2.
BTW: Mit welcher Aussage habe ich Deiner Meinung nach welches "Maß" überschritten?