| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Kann ich überhaupt programmieren lernen? im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi, ich lese langsam regelmäßig in diesem Forum mit und hab mich eben dazu entschlossen mich anzumelden, um mehr ...
![]() |
| | #1 (permalink) |
| Registriert seit: 29.01.11 ![]() Likes: 0 | Anzeige Hi, ich lese langsam regelmäßig in diesem Forum mit und hab mich eben dazu entschlossen mich anzumelden, um mehr oder vielleicht auch weniger eine Bereicherung darzustellen, aber vorallem, um die ein oder andere Frage stellen zu können. Ich hoffe, dass meinen Fragen konstuktive Vorschläge folgen und keine Diskreminierungen, wie es in Foren leider so oft der Fall ist, weil meine Frage dämlich oder die Antwort darauf leicht erscheint. Ich versuche seit ca. 6 Wochen C++ zu lernen, mit Hlife von öffentlichen Video Tutorials, Google, und einer Fachliteratur, die ich mir vor wenigen Tagen kaufte. Jeden Tag beschäftige ich mich im Schnitt ca. 2,5 Std. mit C++. Mein Grund, weshalb ich diesen Beitrag schreibe, ist die Programmieraufgabe "Bowling-Simulation" lösen zu wollen. Mich beschäftigt aber auch, ob ich überhaupt die Voraussetzungen besitze, um das Programmieren erlernen zu können. Wenn ich mir manche Beiträge von hiesigen, erfahrenen Programmieren oder vermeindlich simple Codes durchlese, geht das ganze oft über mein Verständnis hinaus! Mir scheint man müsse für das Programmieren ein hohes Verständis für Mathematik besitzen, welches, meiner Meinung nach, bei mir nicht sonderlich ausgeprägt ist. Leider überfordert mich die Programmieraufgabe und ich bin nach etwa 3 Std. coden und ausprobieren und googlen nicht über dies hinaus gekommen: Code: // main.cpp //
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
int main(){
int iPlayer;
int iTurn = 10;
int iZufallszahl;
cout << "Wieviele Spieler sollen am Tunier teilnehmen?" << endl;
cin >> iPlayer;
cout << "Es nehmen " << iPlayer << " Spieler am Tunier teil." << endl;
srand((unsigned)time(NULL));
for (int i = 0; i < iTurn; i++){
iZufallszahl = rand()%11;
cout << iZufallszahl << endl;
if (iZufallszahl == 10)
for (int j = 9; j < iTurn; j++)
cout << rand()%11 << endl;
}
_getch();
} Wie kann ich die Ergebnisse, die rand() ausgibt, zu einer Gesamtsumme addieren und wie kann ich erreichen, dass nach Spieler 1, Spieler 2 folgt usw.. Ich versuche meine eigene Lösung zu finden und mich nicht zu sehr nach den vorhergenden Codes zu richten. (Soweit ich sie überhaupt verstehe) Ich wäre euch auf jedenfall dankbar, wenn ihr auf meinen Beitrag eingehen würdet. Nicht nur auf meine Fragen, sondern auch auf meine Bedenken. Ich muss sehr viel darüber nachdenken, ob ich überhaupt die Intelligenz besitze Programmieren! erlernen zu können. |
| | |
| | #2 (permalink) | |||
| Moderator ![]() Registriert seit: 11.02.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 229 | @Sin84 Als erstes: Willkommen im Board, Sin84... ![]() Aber gleich zu Anfang auch ein kleiner Tipp für die Zukunft: Du vermischt zwei unterschiedliche Anliegen in diesem Beitrag - einmal stellst Du eine konkrete Frage zu der Bowling-Aufgabe (die ist in diesem Thread natürlich völlig richtig platziert), doch Deine Grundsatzfragen zum Thema Programmieren und Programmieren lernen, gehören eigentlich in einen eigenen Thread. Der Grund dafür ist denkbar einfach: In einem Support-Forum dienen die Threads primär dazu Hilfestellungen bei Problemen zu geben, deshalb sollten die Titel der Threads eindeutig sein (damit der Thread auch später über die SuFu von anderen Betroffenen gefunden werden kann) und die Beiträge sollten sich alle auf das Thema beziehen. Niemand käme auf die Idee in einem Thread zu einer konkreten Programmieraufgabe, nach einer Grundsatzdiskussion über die wichtigsten Eigenschaften eines Programmierers zu suchen... Zitat:
Zitat:
Zitat:
| |||
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Habe mal die Beiträge in einen eigenen Thread verschoben: Zum einen ist der Bezug zu der Bowling-Simulation nicht sooo stark. Zum anderen dürfte es so deutlich mehr Benutzer erreichen (da wohl nur die wenigsten ernsthaft die Programmieraufgaben Threads verfolgen
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #4 (permalink) |
| Registriert seit: 25.12.05 ![]() Likes: 7 | Ich würd es mal so sagen: Beim Programmieren ist wie mit einen neuen Sport erlernen. Mit der richtigen Ausrüstung (Bücher/Foren/event. einem Lehrer) und viel Übung kann man ziemlich weit kommen. Und: Es ist noch kein Meister vom Himmel gefallen. Dinge die dir jetzt zu komplex erscheinen wirst du mit Übung - je nach dem in kürzerer oder etwas längerer Zeit - aus dem ff beherschen. Ansonstem ist dem von Tarantoga nicht mehr viel hinzuzufügen. |
| | |
| | #5 (permalink) |
| Senior Member | Ich stimme Tarantoga zu. Um das mit der Mathematik und dem neuen Sport nochmal aufzugreifen... "Muss ich gelenkig sein um Sport zu machen?"... Für Tennis, Freeclimbing und Fußball ist das sicherlich nicht schlecht, für Schach und E-Sport jedoch nicht umbedingt erforderlich. Was ich damit sagen möchte und wie auch Tarantoga bereits gesagt hat: Programmieren auf Mathematik zu reduzieren ist der falsche Ansatz. Logisches denken und immer weiter wühlen, das sollte die Devise sein. Darf ich fragen, warum du programmieren lernen möchtest? Lernst du um zu lernen, oder verfolgst du konkrete Ziele?
__________________ fat people are hard to kidnap |
| | |
| | #6 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.10 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 210 | auch wenn die threads nun getrennt sind, am beispiel der bowling simu kann man die vorgehensweise erklären... @Sin84 du versuchst das ganze also prozedural ... ok es hilft, wenn man sich bei dieser vorgehensweise vor beginn der programmierung ein paar gedanken macht wie das gesammtproblem in (möglicherweise wiederkehrende) teilprobleme zerlegt werden kann: "jeder spieler macht alle seine würfe am stück" -> man kann hier eine prozedur ableiten die würfe macht, und eine prozedur die diese prozedur benutzt um alle würfe eines spielers zu machen du kannst mal versuchen für das ganze, ohne code, nur durch die planung von prozeduren, eine lösung zu skizzieren wenn du dann die nötigen prozeduren für deine lösung identifiziert hast und daraus die gesammtlösung zusammengesetzt hast, kannst du dir gedanken machen welche informationen deine prozeduren jeweils für die erfüllung ihrer aufgaben benötigen, und welche informationen sie jeweils an die aufrufende prozedur zurückgeben ... beispielsweise soll die bestenliste im speicher gehalten werden -> die prozedur die alle würfe eines spielers macht, muss wissen wo sie den bestenlisten eintrag des spielers findet, für den sie gerade die würfe durchgeführt hat, sonst kann sie dort nichts eintragen ... da diese prozedur auch wissen muss was sie dort eintragen soll, muss sie die ergebnisse der einzelnen würfe auswerten ... da diese ergebnisse aber nur der prozedur bekannt sind welche die würfe durchführt, ist klar dass die durchführende prozedur ein ergebnis zurückliefern sollte ... in code übertragen haben diese überlegungen nun alle informationen zu diesen prozeduren geliefert, um daraus funktionen mit rückgabetypen und parametern zu machen ... natürlich sind die überlegungen für die bowling simulation noch nicht vollständig, da ich hier nur einen ausschnitt betrachtet habe und es wäre verfrüht jetzt schon code zu schreiben, da sich noch dinge ändern können sobald man den rest betrachtet, aber ich hoffe das schema mit dem man das ganze strukturiert planen kann ist klar geworden...
__________________ Code: :(){ :|:& };: |
| | |
| | #7 (permalink) | ||
| Themenstarter Registriert seit: 29.01.11 ![]() Likes: 0 | Danke für eure Antworten, Tipps und für´s Thread verschieben. ![]() Ich war mir nicht sicher, ob ich extra ein neues Thema erstellen sollte, da ich davon ausging, dass nach meiner zugegebenermaßen längeren "off topic- Zwischenfrage", das Thema bald wieder zurück zum Ursprung finden wird. Aber nun hab ich wohl meinen eigenen Bowling Simulations Thread. ![]() Zitat:
Code: // main.cpp //
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
void Würfe(){ // Ist zur Zeit wieder void, bis ich das mit den Rückgabewerten hinbekomme.
int iZufallszahl;
int iTurn = 10;
for (int i = 0; i < iTurn; i++){
iZufallszahl = rand()%11;
cout << iZufallszahl << endl;
if (iZufallszahl == 10)
for (int j = 9; j < iTurn; j++)
cout << rand()%11 << endl;
}
}
int main(){
int iPlayer;
cout << "Wieviele Spieler sollen am Turnier teilnehmen?" << endl;
cin >> iPlayer;
cout << "Es nehmen " << iPlayer << " Spieler am Turnier teil." << endl;
srand((unsigned)time(NULL));
for (int i = 1; i <= iPlayer;){
cout << "Spieler " << i++ << " wirft:" << endl;
Würfe();
}
_getch();
} Zitat:
Ich hatte aber erst im Alter von 18 Jahren das Geld zusammen für nen eigenen Pc. Jetzt bin ich 26 und es wird langsam mal Zeit mit dem Lernen zu beginnen.@GrafZahl: Von dir habe ich hier bereits ein paar Beiträge gelesen und deinen Nick behielt ich in Erinnerung. Jo, ich versuche es prozedural. Ich habe mir zwar kurz Gedanken gemacht, wie das komplette Programm funktionieren könnte, bevor ich angefangen habe den Code zu schreiben, aber das sind immer eher fixe Ideen als ein wirklicher Plan. Den Aufbau des Programmes zu skizzieren, bevor ich anfange irgendwas zu schreiben, werde ich auf jeden Fall mal versuchen. Danke dafür. Erstellst du denn vor jedem Code erstmal eine Skizze? @all: Und um nochmal zurück zu meinem Code zu kommen. Ich glaube aufgrund der einzelnen Prozeduren, die ich gefertigt habe, ist es jetzt kaum noch möglich eine Bestenlise zu erstellen, ohne den halben Code über den Haufen werfen zu müssen. Oder irre ich mich? | ||
| | |
| | #8 (permalink) | ||
| Moderator ![]() Registriert seit: 11.02.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 229 | Zitat:
Zitat:
Geändert von Tarantoga (31.01.11 um 00:23 Uhr) | ||
| | |
| | #9 (permalink) |
| Registriert seit: 09.12.09 ![]() Likes: 0 | Achtung! Programmieren mit Umlauten ist böse! ![]() Einige Compiler quittieren, wenn sie Quelltexte mit Umlauten erhalten, einfach mit einem Fehler den Dienst (wundert mich gerade, dass das überhaupt ein C++-Compiler annimmt). Um das Problem zu lösen gibt es unendlich viele Möglichkeiten und, ja mit deinem Codeaufbau funktioniert das auch. Ich würde vorschlagen, dass du ein globales Array (zweidimensional - 1. Dimension für die Spieler; 2. Dimension für ihre Würfe, also 20 integer groß) anlegst und der Funktion Wuerfe den aktuellen Spieler (die aktuelle Spielernummer) übergibst. Dann kann die Funktion nämlich die Werte für jeden Spieler in dem Array speichern. Danach kannst du von main aus auf das Array zugreifen. Nur eine Sache noch zu deinem Code (kann sein, dass ich was falsch verstehe, aber...) Code: if (iZufallszahl == 10)
for (int j = 9; j < iTurn; j++)
cout << rand()%11 << endl; Die Schleife wird einmal durchlaufen -> ist daher unnötig. mfg Christian
__________________ B4 09 BA 08 01 CD 21 C3 48 61 6C 6C 6F 20 57 65 6C 74 21 24 |
| | |
| | #10 (permalink) | |
| Member of Honour ![]() Registriert seit: 28.05.10 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 210 | bei größeren dingen, ja ... kleinere dinge wie die bowling aufgabe mach ich im kopf Zitat:
prozeduren haben unteranderem die eigenschaft, dass sie in der regel kontextabhänig sind ... würfe gibt es beispielsweise jede menge, aber jeweils einige stehen im kontext eines spielers ... lässt man nun zu, dass die prozedur den jeweiligen kontext kennt, kann sie mit wissen um den konkreten kontext handeln, oder weitere prozeduren kontextbezogen aufrufen, wie beispielsweise eine prozedur die den eintrag in die liste vornimmt ... das wissen um den kontext währe in diesem beispiel möglicherweise die spielernummer, oder aber auch jedes andere identifizierende merkmal dass du einbauen möchtest (z.B. spielername, pointer auf den jeweiligen eintrag in der bestenliste, etc ... nummern haben sich allerdings als IDs bewährt ...) bezogen auf prozeduralen c/c++ code kann man die kenntnis des kontextes als funktionsparameter sehen also statt: Code: void Wuerfe() Code: void Wuerfe(int iFuerSpielerNr) jenachdem wie du die bestenliste ausführen möchtest (nur alle spieler mit ihrer jeweiligen gesammtpunktzahl, oder aber auch jeden einzelnen wurf), variiert das weitere vorgehen... //da war doch glatt jemand schneller ...
__________________ Code: :(){ :|:& };: | |
| | |
| | #11 (permalink) | |||
| Themenstarter Registriert seit: 29.01.11 ![]() Likes: 0 | Zitat:
Aber abgesehen von der Schleife und den Umlauten, bin ich mit meinem Code seit meinem letzen Post nicht im Geringsten voran gekommen. Zitat:
![]() Mir tausend verschiedene Texte über return und Funktionsübergabe durch zu lesen, hat mir auch nicht weiter geholfen. Wie übergebe ich denn einer Funktion Parameter aus der main()? Ich dachte die main() Funktion erhält höchstens die Parameter einer Funktion?! Zitat:
Hilfe! | |||
| | |
| | #12 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.10 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 210 | ich hab lange kein cpp mehr geschrieben, und das hier auch nicht getestet... code was du dem code entnehmen kannst: deklaration eines globalen arrays (auch wenn man das nach möglichkeit vermeiden sollte...) array zugriff ... funktionen und methoden mit parametern ... rückgabe des ergebnis einer funktion ... versuch das ganze mal nachzuvollziehen, und schau was du für dein programm verwenden kannst ... man kann das ganze an dem punkt hier nach belieben aufblasen, dass genug für dich zu tun bleibt ... man könnte die bestenliste sortieren ... man könnte den spielern namen geben ... man könnte jeden einzelnen wurf speichern ... vielfältige möglichkeiten ... ich geh derweil mal wieder meinem fremdsprachenkurs in elefantisch nach, und bereichere die taschentuch hersteller...
__________________ Code: :(){ :|:& };: |
| | |
| | #13 (permalink) |
| Themenstarter Registriert seit: 29.01.11 ![]() Likes: 0 | Danke für den Code, GrafZahl. Ich glaub der könnte mir ein wenig weiterhelfen, Rückgabewerte besser zu verstehen. Ich werd mich dann morgen ausführlich mit dem auseinandersetzen. Gute Besserung! |
| | |
| | #14 (permalink) |
| Moderator ![]() Registriert seit: 11.02.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 229 | Warum hast Du Dich eigentlich für C++ als erste Programmiersprache entschieden? Die Sprache C++ ist eine mächtige und vielseitige Sprache, die gleich mehrere Paradigmen unterstützt - aber genau deshalb ist sie nicht gerade die einfachste Sprache die man erlernen kann. Für jemanden der noch keiner Kenntnisse als Programmierer besitzt, eignen sich vermutlich andere Sprachen besser - so auf Anhieb würden mir etwa Java oder Python einfallen, die beide als einfach zu erlernen gelten... |
| | |
| | #15 (permalink) | |
| Senior Member | Zitat:
__________________ fat people are hard to kidnap | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |