Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Ganz allgemein kann man sagen: Wenn man etwas zum ersten Mal tut, stellt man sich immer ziemlich blöd an. 6 Wochen sind zwar schon relativ viel, aber zum Programmieren Lernen ist es ziemlich wenig.
Es dauert lange. Wirklich.
Du schlägst vor eine Sprache zu lernen. Aber nicht programmieren.
<?php
$erg = floor((0.1+0.7) * 10);
?>
Ein guter Programmierstil zeichnet sich meiner Meinung nach vor allem dadurch aus, dass man effizienten* Code schreibt, der trotzdem lesbar ist. Und das ist selbst mit python/scheme oder bash machbar.nein, er schlägt vor, grundsätzliche und überaus wichtige Grundlagen sich von Anfang an anzueignen und sich nicht durch Sprachen, die einem alles abnehmen, dreckigen Programmier-Stil anzueignen...
Ich habe für ieee754 in MIPS-Asm sämtliche Algorithmen, die man in zum Rechnen normalerweise in Hardware implementiert, als asm geschrieben. Ich würde im nach hinein nicht behaupten, dass das meinen Programmierstil geprägt hat. Ich habe auch schon Bitboards implementiert - das lief zwar ziemlich fix allerdings, war es für 3te kaum nachvollziehbar und Fehler waren ziemlich schwierig zu finden.Wer Anfangs mit C / C++ "gequält" wurde oder wer zudem sich vielleicht sogar damit herum schlagen musste, wie Variablen im Speicher abgelegt werden (also wir mussten im 1. Semester in Info z.B. in der schriftlichen Prüfung auf Papier erklären, wie eine gegebene Float-Zahl im Speicher liegt...), kapiert wesentlich schneller, warum eben z.B. in PHP7 ergibt statt der eigentlich erwarteten 8...PHP:<?php $erg = floor((0.1+0.7) * 10); ?>
(Stichwort Ungenauigkeit von Fließkommazahlen)
*abhark*das endet in einer grundsatz diskusion ...
da setze ich die prioritäten etwas anders ... wer nicht präzise ausdrücken kann, was ein programm oder algorithmus tun soll, verliert sich in oberflächlichem denken... ich denke dass man durch eine präzise ausdrucksweise viel schneller bemerkt wo sich ein fehler eingeschlichen hat ... natürlich gehts auch ohne, aber die effektivität/produktivität wird darunter leiden ...Wenn man mit dem Programmieren anfängt geht es vor allem darum, dass man ein Gefühl für Strukturen, Muster und Konzepte entwickelt.
bei der speicherverwaltung gebe ich dir recht, das ist ein thema das nicht wirklich viel bringt am anfang...Speicherverwaltung ist ein Thema was man sich später angucken kann und sollte. Aber es bringt anfänglich weniger, wenn man nach Fehlern im Algorithmus und in der Sprache suchen muss.
Ganz allgemein kann man sagen: Wenn man etwas zum ersten Mal tut, stellt man sich immer ziemlich blöd an. 6 Wochen sind zwar schon relativ viel, aber zum Programmieren Lernen ist es ziemlich wenig.
Es dauert lange. Wirklich.
Hab deinen Beitrag gerade erst gelesen.. Stimmt, dagegen spricht eigentlich nichts..:L:
Ich wiederhole mich gerne nochmal: C# ist einfach zu lernen, bietet viele Funktionen und ist vor nicht besonders Komplex, zumindest nicht für Anfänger. C++ Kenntnisse hast du ja, also...
Probier alles aus was dich interessiert, es kostet ja nichts.
Hatte ich nicht vor, jedenfalls nicht mit dem Programmieren. Höchstens vorerst mit dieser beschissenen Bowling Simulation.wlaner:
Bitte gib nicht auf Sin.
hmm.. Leider benutze ich bereits "Visual C++ 2010 Express".wlaner:
Um zu verstehn, wie Syntax funktioniert, besorg dir eine gute C++ Entwicklungsumgebung wie das Visual Studio. Benutze den Debugger und lösche einfach mal einzelne Zeichen in den Code-Bespielen, die du nicht verstehst. Fehlermeldungen können sehr Hilfreich sein.
Ich poste den "neuen" Code hier jetzt nochmal, inklusive meiner "Mut zur Lücke" Lücke. Ich hab den Code kommentiert. Vielleicht wird euch dann schlüssiger, wo es hapert und was mir Schwierigkeiten bereitet.GrafZahl:
(mut zur lücke, was fehlt wird später ergänzt)
// main.cpp //
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
int iWurf(){
int iPunkte = 0;
iPunkte = rand()%11; //Ein Wurf eines Spielers.
cout << iPunkte << endl;
if (iPunkte == 10) cout << iPunkte << endl; //Im Fall eines Strikes.
return iPunkte;
}
int iDurchgang1Spieler(int iDuchgangSpieler){
for (int i = 0; i < 10;i++){ //Alle Würfe EINES Spielers.
iWurf();
}
return iDuchgangSpieler;
}
int main(){
int iWuerfeAllerSpieler = 0;
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; // i++ zählt in dieser Zeile einfach nur die Zahlen hinter "Spieler " hoch.
iDurchgang1Spieler(iWuerfeAllerSpieler); // Alle Würfe aller Spieler.
}
// Mut zur Lücke // Hier folgt jetzt "Code", der einfach nur verdeutlichen soll, wie ich mir das Programm weiter vorstelle:
int GesamtPunkte1Spieler = 0;
int GesamtPunkteAlleSpieler = 0;
GesamtPunkte1Spieler = iDurchgang1Spieler(iWuerfeAllerSpieler);
string sBestenliste[100][100] = { {"Spieler1","Spieler2","Spieler3",}, //usw. Daten sollen natürlich automatisch ins 2D. Array eingetragen werden. Wie das auch immer gehen soll.
{"60","80","45"} }; //usw. Gesamtpunktzahl, die jeweiliger Spieler erreicht hat.
_getch();
}
Kennt jeder Anfänger. Glaube ich.Mit der Bowling Simulation habe ich, seit meinem letzten Code-Post, leider immer noch keinen Fortschritt erreicht. Ich probier die ganze Zeit alles Mögliche aus, um mit der Programmaufgabe wenigstens einen Schritt voran zu kommen, aber nichts funktioniert, was mich langsam etwas frustriert
Beiß' dich nicht nicht so fest.//usw. Daten sollen natürlich automatisch ins 2D. Array eingetragen werden. Wie das auch immer gehen soll.
+-----------------------+---------------------+
| 1. Dimension | 2. Dimension |
+-----------------------+---------------------+
+-----------------------+---------------------+
| | Spieler 1 |
| 1 +---------------------+
| | punktzahl Spieler 1 |
+-----------------------+---------------------+
| | Spieler 2 |
| 2 +---------------------+
| | punktzahl Spieler 2 |
+-----------------------+---------------------+
| | Spieler 3 |
| 3 +---------------------+
| | punktzahl Spieler 3 |
+-----------------------+---------------------+
int multiply(int a, int b)
{
int ergebnis = a * b;
return ergebnis;
}
int zahl = multiply(2,21);
Das beruhigt mich.Chris_XY:
Kennt jeder Anfänger. Glaube ich.
Hab jetzt mal kurz Werte einfüllen geübt. Hat funktioniert.Chris_XY:
Meine Empfehlung wäre ein neues kleines Programm, das ein 2x4 Array oder so deklariert, mit verschiedenen Methoden ein paar Werte einfüllt also "array[1][2] = 4", "for (i=0; i<3; i++) { array[1] = i }", etc.
Ne, will ich gar nicht. Frag mich auch gerade, warum ich das wollte?!GrafZahl:
du möchtest ferner die gesammtpunktzahl ALLER spieler (?)
"iDurchgang1Spieler" soll die Ergebnisse von "iWurf" speichern und zurückgeben. Hab den Code jetzt dementsprechend angepasst, glaube ich.GrafZahl:
iDurchgang1Spieler hingegen scheint noch nicht so ganz das zu tun was davon erwartet wird ... zum beispiel wird zwar iWurf aufgerufen, aber das ergebnis wird ignoriert ... iWurf gibt zwar die punkte an den benutzer aus (cout), aber iDurchgang1Spieler benutzt die von iWurft zurückgegebene zahl nicht. (der iWurf aufruf ist nicht bestandteil einer zuweisung)
was soll damit geschehen?
Jetzt wird doch, nach der Anpassung meines Codes, der letzte Wurf von "iWurf" in dem Parameter "iDuchgangSpieler" gespeichert?GrafZahl:
iDurchgang1Spieler bekommt zudem einen parameter, der unverändert zurückgegeben wird ... wofür genau steht dieser parameter?
// main.cpp //
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
int iWurf(){
int iPunkte = 0;
iPunkte = rand()%11; //Ein Wurf eines Spielers.
cout << iPunkte << endl;
if (iPunkte == 10) cout << iPunkte << endl; //Im Fall eines Strikes.
return iPunkte;
}
int iDurchgang1Spieler(int iDuchgangSpieler){
for (int i = 0; i < 10;i++){ //Alle Würfe EINES Spielers.
iDuchgangSpieler = iWurf();
}
return iDuchgangSpieler; // Soll alle Würfe übergeben, übergibt aber nur den letzten.
}
int main(){
int iUebergabe;
int iWuerfeAllerSpieler = 0;
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; // i++ zählt in dieser Zeile einfach nur die Zahlen hinter "Spieler " hoch.
iUebergabe = iDurchgang1Spieler(iWuerfeAllerSpieler); // Alle Würfe aller Spieler.
}
// Mut zur Lücke // Hier folgt jetzt "Code", der einfach nur verdeutlichen soll, wie ich mir das Programm weiter vorstelle:
/*
int GesamtPunkte1Spieler = 0;
GesamtPunkte1Spieler = iDurchgang1Spieler(iWuerfeAllerSpieler);
string sBestenliste[100][1] = { {"Spieler1","Spieler2","Spieler3",}, //usw. Daten sollen natürlich automatisch ins 2D. Array eingetragen werden. Wie das auch immer gehen soll.
{"60","80","45"} }; //usw. Gesamtpunktzahl, die jeweiliger Spieler erreicht hat.
*/
_getch();
}
int iDurchgang1Spieler(int iDuchgangSpieler){
for (int i = 0; i < 10;i++){ //Alle Würfe EINES Spielers.
iDuchgangSpieler = iWurf();
}
return iDuchgangSpieler; // Soll alle Würfe übergeben, übergibt aber nur den letzten.
}
iDuchgangSpieler = iWurf();
x = 1; // x beinhaltet nun die 1
x = 2; // x beinhaltet nun die 2 ... die 1 ist verloren
x = 1; //hier kommt die 1
x = x + 2; // hier wird zunächst x ausgewertet, was 1 ergibt, dann wird 2 addiert, und zu guter letzt wird das ergebnis in x gespeichert ...
x += 2; // sieht komisch aus, ist aber völlig gleichbedeutend mit x = x + 2;
int iDurchgang1Spieler(){
int iDurchgangSpieler = 0;
for (int i = 0; i < 10;i++){
iDurchgangSpieler = iWurf();
}
iDurchgangSpieler = iDurchgangSpieler + iDurchgangSpieler; // Hier sollen die einzelnen Würfe addiert werden.
return iDurchgangSpieler;
}
Oder wäre an gerade behandelter Stelle jetzt etwa schon ein Array angebracht?GrafZahl:
... wenn du alle einzelnen würfe mitnehmen willst, wäre hier ein array angebracht ...
willst du aber sowieso nur das gesammtergebnis wissen, hindert dich aber auch niemand daran alle punkte einfach aufzusummieren, und mit der summe weiter zu machen ...
nehmen wir mal an letzteres ist die gewünschte vorgehensweise ...
// main.cpp //
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
int iWurf(){
int iPunkte = 0;
iPunkte = rand()%11; //Ein Wurf eines Spielers.
cout << iPunkte << endl;
if (iPunkte == 10) cout << iPunkte << endl; //Im Fall eines Strikes.
return iPunkte;
}
int iDurchgang1Spieler(){
int iDurchgangSpieler = 0;
for (int i = 0; i < 10;i++){ //Alle Würfe EINES Spielers.
iDurchgangSpieler = iDurchgangSpieler + iWurf();
}
return iDurchgangSpieler; // Soll alle Würfe übergeben, übergibt aber nur den letzten.
}
int main(){
int iUebergabe;
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; // i++ zählt in dieser Zeile einfach nur die Zahlen hinter "Spieler " hoch.
iUebergabe = iDurchgang1Spieler(); // Alle Würfe aller Spieler.
}
cout << iUebergabe;
_getch();
}
iDurchgangSpieler=iDurchgangSpieler+iWurf();
// oder als Kurzschreibweise (üblicher):
iDurchgangSpieler+=iWurf();
for (int i = 1; i <= iPlayer;){
cout << "Spieler " << i++ << " wirft:" << endl; // i++ zählt in dieser Zeile einfach nur die Zahlen hinter "Spieler " hoch.
iUebergabe = iDurchgang1Spieler(); // Alle Würfe aller Spieler.
}
cout << iUebergabe;
Ich weiß zwar nicht worauf du hinaus willst, aber gut.GrafZahl:
Code:
for (int i = 1; i <= iPlayer{
cout << "Spieler " << i++ << " wirft:" << endl; // i++ zählt in dieser Zeile einfach nur die Zahlen hinter "Spieler " hoch.
iUebergabe = iDurchgang1Spieler(); // Alle Würfe aller Spieler.
}
cout << iUebergabe;
schreib mal schritt für schritt auf was beim ausführen dieses codes passiert