Hallo Gast » Login oder Registrierung
NETZWERK
TOP-THEMEN: STARFIELDCOD: MODERN WARFARE 3FC 24FORZA MOTORSPORTDIABLO IVXBOX SERIES XXBOX MINI FRIDGE


Programmieren Allgemein
#1

Ich hab nur wenig zeit, deshalb fasse ich mich kruz:
Kennt sich jemand von euch mit C++ aus, ich moechte es umbedingt lernen! Also, wer mir sagt was man dazu braucht, und wo es Tuts gibt.....

- Ɖα Ƥσϰϰϰϰ ƨι∂ɛ σғ ˩ιғɛ -
Zitieren
#2

Zitat:Original von Poxxxx
Ich hab nur wenig zeit, deshalb fasse ich mich kruz:
Kennt sich jemand von euch mit C++ aus, ich moechte es umbedingt lernen! Also, wer mir sagt was man dazu braucht, und wo es Tuts giebt.....

Für alle die so wie ich nicht wissen was das ist: (wikipedia)

Zitat:C++ C++ ist eine der verbreitesten und industriell bedeutendsten Programmiersprachen. Sie ist als Mehrzwecksprache konzipiert und unterstützt insbesondere effiziente und maschinennahe Programmierung, Datenabstraktion sowie objektorientierte und generische Programmierung. C++ basiert auf der Programmiersprache C wie in ISO/IEC 9899:1990 beschrieben. Zusätzlich zu den in C vorhandenen Möglichkeiten bietet C++ weitere Datentypen, Klassen mit Vererbung und virtuellen Funktionen, Ausnahmebehandlung, Templates (Schablonen), Namensräume, Inline-Funktionen, Überladen von Operatoren und Funktionsnamen, Referenzen, Operatoren zur Freispeicherverwaltung und mit der C++-Standardbibliothek eine erweiterte Bibliothek.


Und um mich auch kurz zu fassen: Ich habe keinen Plan... Stoned
vllt hilft dir dieser Link weiter: http://www.parashift.com/c++-faq-lite/
Zitieren
#3

Hm, hab mal angefangen die Sprache zu lernen, ich schreib mal n bisschen was ich noch so weiß:

Also, erstmal ist C bzw. C++ eine Compiler-Sprache, das heißt, dass das geschriebene (programmierte) durch eine Art Entschlüsselungsprogramm (Compiler) läuft. In der ersten Zeile kann man den Namen des Projektes angeben:

/* Name des Programmes */

Dann wird die Programmiersprachenbibliothek gewählt, das ist die Datenbank, die dem Compiler sagt was ein Befehl bedeutet, man könnte sagen, das die Bibliothek der Grundbaustein einer Programmiersprache ist.

Üblicherweise wird die Bibliothek stdio.h verwendet. Um eine Bibliothek anzugeben wird das so eingegeben:

#include <stdio.h>

Include heißt soviel wie einfügen...

Dannach kommt der Befehl dafür, dass C/C++ erkennt, dass das geschriebene Programm tatsächlich aus programmiersprache besteht, dieser Befehl ist nicht weiter wichtig, er muss ganz einfach jedesmal dazugeschrieben werden, wenn man ein Programm erstellt:

main() {

Main steht wie schon gesagt für das nachfolgende Programm, die Klammern daneben sind für Parameter die man noch einfügen könnte, was bei main allerdings unnötig ist, zu jedem Vorbefehl muss ganz einfach dahinter Klammern sein, sonnst läuft das ganze nicht. Man könnte z.B. in die Klammern /a reinschreiben, dann würde der Speaker im PC einen Ton von sich geben wenn man das Programm startet, die "{" Klammer hier bezeichnet den Abschnitt in dem Programmiert wird, hier fängt die richtige Arbeit erst an. Diese Klammer ist übrigens die die man mit "STRG+ALT+7" auslöst.

Sehr viel mehr weiß ich auch nicht darüber, ich schreib allerdings nochmal eine Funktion hin und geb später nocht n paar Tipps.

Z.B.:

printf("/n Blablablablabla Ladidablabla/n");

Der Befehl "printf" steht dafür, dass jetzt ein Satz folgt, den der Benutzer des Programmes auf dem Bildschirm/Display etc. lesen kann. Mit anderen Worten, wenn du alles was ich bisher gesagt habe in einer Reihenfolge programmiert haben solltest, dann würde der Benutzer des Programmes ausschließlich den Text zwischen den /n sehen. /n steht übrigens für "new line" also "neue Zeile", der Kommapunkt am Ende ist nach jedem Befehl nötig.

Wenn dus wirklich lernen willst solltest du dir das Kostenlose Programm "Dev C++" besorgen, da gibt es auch eine Fehlerkorrekturfunktion und einige spassige Gimmiks. Außderdem empfehle ich dieses Buch:

http://images-eu.amazon.com/images/P/349...ZZZZZZ.jpg

Falls du es noch nicht wissen solltest, C++ basiert auf der Programmiersprache C, mit anderen Worten C++ ist die selbe Sprache, nur mit ein paar Zusatzfunktionen/Befehlen etc., daher macht es Sinn zuerst mit C anzufangen bevor du dir den Nachfolger des Buches mit C++ kaufst.

Bei weiteren Fragen... der Threat bleibt ja wohl noch ne weile offen...

Hier nochmal ein Beispiel für eine typische Befehlskette:

/* Mein erstes Programm oder so */
#include <stdio.h>
main() {
printf("/n Hier steht irgendein Text /n");
}

Es gibt in C übrigens keine erkennung für Zeilen und abstände, wenns die Spass macht könntest du alles auch so schreiben:

/* Mein erstes Programm oder so */ #include <stdio.h> main() { printf("/n Hier steht irgendein Text /n");

aber ich und der Rest der Menschheit finden die normale Methode wohl am Sinnvollsten... D
Zitieren
#4

Hi Leute.

Da es etwas umständlich (und auch unübersichtlich) ist, wenn man seine Posts rund ums Programmieren in den "Computer Allgemein" Topic reinpostet, habe ich mir erlaubt, kurzer Hand dieses Topic zu eröffnen.

Hier können alle Fragen/Ratschläge/Antworten/Erkenntnisse/Neuerungen reingeschrieben werden.

Der Übersicht zu Liebe, versehen wir die Quellcodes mit einem "SPOILER" Tag.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Ich mache mal den Anfang:


Vollgendes Problem im C:

Ich will einen char Datentyp mit einem int ausrechnen.
Es wäre ja kein Problem, wenn der Wert der Variable des Chars schon gegeben wäre, aber wenn man einen numerischen Wert scanf oder gets eingibt, kann C nicht richtig damit umgehen.

Mein Code:
Spoiler:
#include <stdio.h>
#include <conio.h>
#include <string.h>

int main()
{
char c;
int i=5;
int e;

scanf("%s", &c);
e=(int)c-i;
printf("%i", e);
}

Ich gebe für die Variable "c" den Wert 15 ein.
Das Programm soll dann also 15-5 rechnen.
Wir haben in der 1. Klasse gut aufgepasst, also müsste das Ergebnis=10 sein.
Das Programm jedoch, gibt mir den Wert 44 zurück Stoned

Weiss irgend jemand, wie man einen char mit einem int verrechent, oder wie man einen char zu einem int umwandelt?

Thou shalt not follow the NULL pointer; for chaos and madness await thee at its end...
Zitieren
#5

Iiiirgend wie beschleicht mich das Gefühl, dass da keine Programmierer im Forum rumstöbern, aber ich will die Hoffnung mal nicht ganz aufgeben ^^

Ich habe wieder einmal ein Problem mit C:

Funktionalität: Ich habe eine simple Funktion geschrieben, die einen ping Befehl ausführt.
Problem: Wenn ich eine ungültige oder nicht erreichbare Adresse eingebe, kackt das Programm ab und es kommt eine Fehlermeldung.

Code:
Spoiler:
char ping()
{
char ping[]="ping ";
char adresse[55];
int wahl;

while(wahl)
{
system("cls");

printf("1 google.de\n");
printf("2 Eine neue Adresse\n\n");

scanf("%i", &wahl);
getchar();

switch(wahl)
{
case 1:
system("cls");
return PING_D;
break;

case 2:
system("cls");
printf("Die zu pingende Adresse: ");
gets(adresse);
strcat(ping, adresse);
return PING;
break;

default:
system("cls");
printf("Ungueltige Eingabe!");
getch();
break;
}
}
}

Thou shalt not follow the NULL pointer; for chaos and madness await thee at its end...
Zitieren
#6

Mit C selbst kenne ich mich wenig aus, da ich nur mit Java und C++ arbeite.

Ist das der gesamte Quellcode oder nur ein Fragment?

Beim 1. Programm hast du einen Fehler:
1. Datentyp char speichert nur 1(!) Zeichen, das ist dann nicht 15 sondern nur die 1. Die 5 dahinter fällt weg.
2. 1 als char ist nicht gleich 1. Der Datentyp char wandelt deine 1 mit Hilfe von Ascii in 49 um (siehe hier: Ascii-Tabelle ). D.h. deine 1 als char ist 49 als int ; )
3. Rechnung dürfte dann richtig sein, da 49 - 5 = 44 ist xD

Kann es sein, dass du beim 2. Programm nicht in dein "Hauptmenü" zurückkommst, wenn du ne falsche Adresse eingibst?

Ich würde gerne was schreiben, aber 100 Zeichen sind nicht viel und nicht jeder versteht germanische Keilschrift.
Zitieren
#7

Omg D wenn es hier im Action Script 3 gehen würde, könnte ich weiterhelfen D aber alles andere ist für mich total Fremnd^^

- Ɖα Ƥσϰϰϰϰ ƨι∂ɛ σғ ˩ιғɛ -
Zitieren
#8

Ja das Problem vom 1. Post ist schon ne Weile nicht mehr ^^

Genau, ich komme nicht in mein Hauptprogramm/Menü zurück (main).
Nachdem mir die Funktion, bzw. das Ping-Programm die Statistik zurückgibt (Zeitüberschreitung, empfangen=0, verloren=4, etc.), stürzt mein Programm ab, ohne die Funktion abzuschliessen. Begleitet von einer Windows-Fehlermeldung "... hat ein Problem festgestellt und muss beendet werden". -.-

Thou shalt not follow the NULL pointer; for chaos and madness await thee at its end...
Zitieren
#9

Aber wenn du die Statistik bekommst, dann sollte dein Programm eigentlich abgeschlossen sein. Du müsstest eben dann bei jeder Case-Anweisung eine Zurückführung zur Main oder zu einer anderen Funktion hinzufügen. Ich verstehe einige Teile aus deinem Quellcode sowieso kaum, das fängt schon bei while(wahl) an... .

Normalerweise solltest du nämlich schreiben while ( Bedingung ). Deine Variable wahl ist keine Bedingung.

Code:
system("cls");
printf("Die zu pingende Adresse: ");
gets(adresse);
strcat(ping, adresse);
return PING;
break;

Ich verstehe deinen Code so:
Textausgabe "Die zu pingende Adresse:", dann per Get die Adresse hergeholt, den Ping samt Adresse anzeigen und dann den Ping zurückgeben. Mit Break wird die Switch-Case-Anweisung verlassen und dann passiert gar nichts mehr. Im Falle einer fehlerhaften Adresse stoppt das Programm schon vorher und stürzt ab, weil du keine Anweisung oder Methode geschrieben hast, die erstmal prüft, ob die Adresse existiert bzw. die Eingabe korrekt ist.

Ich denke du solltest erstmal ein paar Dinge in Subprogramme bzw. Methoden packen, da das Ganze unübersichtlich ist. Hier rattert das Programm Zeile für Zeile gnadenlos durch ohne Struktur. Wenigstens der Block ab der While-Schleife wäre besser in einem seperaten Methoden-Block aufgehoben.

Dein Code ist etwas schwer zu verstehen, vor allem weil deine Methode char ping() offenbar einmal PING_D und PING ausgeben soll. Wäre es nicht einfacher schlichtweg EINE Variable mit dem Ping zu füllen und ganz am Ende NACH dem Switch-Case-Block zurückzugeben?

Ich würde gerne was schreiben, aber 100 Zeichen sind nicht viel und nicht jeder versteht germanische Keilschrift.
Zitieren
#10

Zitat: Ich verstehe einige Teile aus deinem Quellcode sowieso kaum, das fängt schon bei while(wahl) an...
Bei der While Bedingung habe ich einfach der Einfachheit entsprechend eine Variable angegeben. Im C wird das also zu einer Endlosschleife (bis zum return).
Zitat:dann per Get die Adresse hergeholt, den Ping samt Adresse anzeigen und dann den Ping zurückgeben
- Beim gets gibt der Benutzer die anzupingende Adresse als einen String ein.
- strcat(ping, adresse) = der String "adresse" wird hinten am String "ping" angehängt. Der neue String von ping lautet also bspw. "ping bungie.de".
- PING ist eine Definition. PING = Variable "ping"

Zitat:Mit Break wird die Switch-Case-Anweisung verlassen und dann passiert gar nichts mehr.
Jepp, man verlässt den Switch-Case, doch vorher gab man ja bereits Rückgabewert zurück.
Dieser Rückgabewert geht an das Hauptprogramm main().
Zitat:Im Falle einer fehlerhaften Adresse stoppt das Programm schon vorher und stürzt ab, weil du keine Anweisung oder Methode geschrieben hast, die erstmal prüft, ob die Adresse existiert bzw. die Eingabe korrekt ist.
Aber wieso stürzt es denn ab?
Am Programm kann es ja eigentlich egal sein, da er schlussendlich nur einen String erhält und diesen ausgibt.

Zitat:Dein Code ist etwas schwer zu verstehen, vor allem weil deine Methode char ping() offenbar einmal PING_D und PING ausgeben soll.
PING_D ist auch wieder eine Definition. PING_D = "ping google.de"
Falls man keine spezifische Adresse angeben möchte.
Zitat:Wäre es nicht viel einfacher ... ganz am Ende NACH dem Switch-Case-Block zurückzugeben?
Wieso sollte das denn einfacher sein?

Falls es dich noch interessiert, hier ist der GANZE Code:
Spoiler:
Erstmal main.c
Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include "chopf.h"

int main()
{
    system("title Das kleine Supportprogramm für den Supporter");

    int option=9;
    char antwort;
    int counter=0;

    printf("--------------------------------------------------------------\n");
    printf("| Herzlich willkommen zum Supportprogramm fuer den Supporter |\n");
    printf("--------------------------------------------------------------\n");
    printf("\n");

    while(option!=0)
    {
        if(counter>0)
        system("cls");

        printf("Was soll das Programm denn tun?\nTreffen Sie doch bitte eine Wahl\n\n");
        printf("1 ping\n");
        printf("2 tracert\n");
        printf("3 ipconfig /all\n");
        printf("4 tasklist\n");
        printf("5 systeminfo\n");
        printf("6 Defragmentierung ueberpruefen und starten\n");
        printf("0 Beenden des Programms\n\n\t");

        scanf("%i", &option);
        getchar();

        switch(option)
        {
            case 1: system("cls");
                    printf("%s", ping());
                    getchar();
                    break;
            case 2: system("cls");
                    printf("%s", tracert());
                    getchar();
                    break;
            case 3: system("cls");
                    printf("%s", ipconfig());
                    getchar();
                    break;
            case 4: system("cls");
                    printf("%s", tasklist());
                    getch();
                    getchar;
                    break;
            case 5: system("cls");
                    printf("%s", systeminfo());
                    getchar();
                    break;
            case 6: system("cls");
                    printf("%s", defrag_ue());
                    while(antwort!='j' && antwort!='n')
                    {
                        printf("\n\nDefragmentierung starten? j/n\n\t");
                        scanf("%c", &antwort);
                        getchar();
                        switch(antwort)
                        {
                            case 'j': printf("%s", defrag_st());
                                      getchar();
                                      break;
                            case 'n': break;
                            default:  printf("\n\nUngueltige Eingabe...");
                                      getchar();
                                      break;
                        }
                    }
                    break;
            case 0: system("cls");
                    printf("Vielen Dank fuer die Nutzung dieses funktionell sehr fragwuerdigen Programms\n");
                    printf("----------------------------------------------------------------------------\n");
                    printf("                       Program made by Michel Wepfer                        \n\n");
                    getchar();
                    break;
            default: system("cls");
                     printf("Ungueltige Eingabe, mein Junge. Versuch es doch nochmals...");
                     getchar();
                     break;
        }
    counter++;
    }

    return 0;
}

Und das Modul module.c
Code:
#include "chopf.h"

#define PING system(ping);
#define PING_D system("ping google.de");
#define TRACE system(trace);
#define TRACE_D system("tracert google.de");
#define IP system("ipconfig /all")
#define TASKS system("tasklist")
#define SYSTEMINFO system("systeminfo");
#define DefragUe system("defrag c: -a");
#define DefragSt system("defrag c: -f");

char ping()
{
    char ping[]="ping ";
    char adresse[55];
    int wahl;

    while(wahl)
    {
        system("cls");

        printf("1 google.de\n");
        printf("2 Eine neue Adresse\n\n");

        scanf("%i", &wahl);
        getchar();

        switch(wahl)
        {
            case 1: system("cls");
                    return PING_D;
                    break;
            case 2: system("cls");
                    printf("Die zu pingende Adresse: ");
                    gets(adresse);
                    strcat(ping, adresse);
                    return PING;
                    break;
            default: system("cls");
                     printf("Ungueltige Eingabe!");
                     getch();
                     break;
        }
    }
}

char tracert()
{
    char trace[]="tracert ";
    char adresse[55];
    int wahl;

    while(wahl)
    {
        system("cls");

        printf("1 google.de\n");
        printf("2 Eine neue Adresse\n\n");

        scanf("%i", &wahl);
        getchar();

        switch(wahl)
        {
            case 1: system("cls");
                    return TRACE_D;
                    break;
            case 2: system("cls");
                    printf("Die zu tracende Adresse: ");
                    gets(adresse);
                    strcat(trace, adresse);
                    return TRACE;
                    break;
            default: system("cls");
                     printf("Ungueltige Eingabe!");
                     getch();
                     break;
        }
    }
}

char ipconfig()
{
    return IP;
}

char tasklist()
{
    return TASKS;
}

char systeminfo()
{
    return SYSTEMINFO;
}

char defrag_ue()
{
    return DefragUe;
}

char defrag_st()
{
    return DefragSt;
}

Den Header geb ich jetzt aber nicht auch noch an D

Thou shalt not follow the NULL pointer; for chaos and madness await thee at its end...
Zitieren


Möglicherweise verwandte Themen…
Thema / Verfasser Antworten Ansichten Letzter Beitrag
Letzter Beitrag von Marc
04.02.2019, 03:11

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste

Realisiert von Visual Invents -
Design & Kommunikation aus Berlin