Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

31

22.10.2003, 17:28

hmm... C mit C++ zu vergleichen... hrhrhr...
ich sag das mal so,
lerne professionell und Objektorientiert zu Programmieren!
Oder besser, geh Informatik studieren (da lernt man sowas).
Dann wirst auch DU wissen, worin der GEWALTIGE Unterschied von C und C++ ist.

Nebenbei, C++ ist rein theoretisch gesehen schon eine Art Addon für C. Sagt ja alleine schon das "++" nach dem "C", dass es eine Version höher ist, als C ;)
Sicherlich sind die neuen Compiler, wie ihr sie kennt nicht mehr dazu gemacht, um C zu compelieren, aber als die Sprache C++ noch neu war, waren es früher C Compiler, die den Syntaxstandard von C++ in Maschinencode umgesetzt haben.

Aber wer brauch denn schon C oder C++, beide Sprachen sind letzten endes nicht viel mehr, als ein angenehmeres Schreiben von Assemblercode.

Und wo wir schon dabei sind, wer brauch denn schon Assembler?Schliesslich macht der aus deinem Code nur 0 und 1!
Wir können uns auch alle hinsetzen und die Maschinenbefehle als Hexadezimalezahlen hinschreiben... ist auch kein Problem (hab ich auch schon machen müßen...)

Aber die Hacker möcht ich sehen, die ein Lagerverwaltungssystem mit Netzwerkfähigkeit, Globaltracking, DBanbindung, etc. auf einem Windowsrechner mit Hexadezimalen Zahlen oder meinetwegen in Assembler schreiben ;D

32

22.10.2003, 17:37

Wie soll ein reiner C Compiler C++ übersetzen? Er kennt ja nett einmal Schlüsselwörter wie "class", ganz zu schweigen von der Übersetzung von z.B. Templates. Aber egal.

Zitat

Aber die Hacker möcht ich sehen, die ein Lagerverwaltungssystem mit Netzwerkfähigkeit, Globaltracking, DBanbindung, etc. auf einem Windowsrechner mit Hexadezimalen Zahlen oder meinetwegen in Assembler schreiben ;D
Machbar? Ja :roll: Aber ich will nicht derjenige sein der das machen muss ;D ;D

So nun aber back to the topic theme!
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

33

23.10.2003, 10:23

Zitat von »"DragonMaster"«

Wie soll ein reiner C Compiler C++ übersetzen? Er kennt ja nett einmal Schlüsselwörter wie "class", ganz zu schweigen von der Übersetzung von z.B. Templates. Aber egal.


ganz einfach, irgendwer muss ja die Compiler bauen.
Und es gab erst den C Compiler.
Dann hat sich irgendwer die Spezifikationen für C++ ausgedacht und wieder jemand anderes hat diese dann in seinem C Compiler umgesetzt und einfliessen lassen.
Ich denke zumindest nicht, dass man einen Compiler (zumindest die ersten C++ Compiler) komplett neu schreibt um ihn dann die "alten" C Funktionalitäten wieder zu verleihen.
Das wäre wohl unnütze Programmierarbeit.

Und wie ein C Compiler "class", "new" etc lernt, sowas lernt man, wenn man studiert :P

Zum eigentlichen Thema:
Find ich garnicht schlecht,
an eurem Beispiel kann man wirklich eine Menge lernen.
Nur noch besser könnte man da was lernen, wenn der Code ordentlich Dokumentiert währe und für einen Laien verständlich gemacht wird.
Ich hab da zumindest einige Problemchen, warum das so und nicht anders gemacht wird. Aber ich kenne mich in C++ noch nicht wirklich gut aus.

In Deinem Beitrag befinden sich noch Fehler.
Bitte bearbeite die rot markierten Stellen und lösche diesen Text.

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

34

23.10.2003, 10:58

@Desert Hawk
Dann frag doch, in diesem Thema ist Diskusionsstoff gerne gesehen ;D Fragen kostet nix und Dich wird auch keiner für Blöde verkaufen :)

Bei Fragen, fragen ;D;D;D

DarthB

Treue Seele

Beiträge: 265

Beruf: Schüler

  • Private Nachricht senden

35

23.10.2003, 11:24

Auch wenn ich keiner bin möchte ich gerne mal die mahnende Rolle eines Moderators übernehmen.

Desert Hawk und Dragon Master ihr "meint" und "glaubt" sehr viel aber wie es wirklich war. Ob der erste C++ Compiler nun eine Erweiterung eines C Compilers war oder ein komplett neugeschrieben, wird wohl keiner von euch so genau wissen.

Mein Senf dazu, von Stroustrup belegt:
C wurde als Basissprache von C++ gewählt. C wurde anfangs aufgrund folgender Eigenschaften gewählt:
- vielseitig, kurz und bünding sowie verhältnismässig low-level ist
- für die meisten Systemprogrammieraufgaben angemessen.
- überall und auf jeder Hardware läuft
- in UNIX-Programmierumgebung passt

Also wurde erst eine Sprache gemacht die auf C basiert, dann wurde, nachdem die neuen Sprachelemente immer wichtiger wurden, die Frage aufgeworfen ob man die Kompatibilität zu C wahren soll. Man hat sich dafür entschieden weil...
- Viele Hilfsbibiotheken in C bestehen von dennen C++ profitieren kann.
- Viele Programmierer C können und so ein Umstieg auf C++ leichter fällt.
...

Naja wer Stroustrup hat sollte mal in Kapitel 1.6 nachlesen.

@Patrick.
Wieso schreibst du eigentlich:

Quellcode

1
int main(int argc, char* argv[])

anstatt:

Quellcode

1
int main(void)

?
Du benötigst die Parameter doch ey nicht. Schreibarbeit sparen. ;)

Ciao DarthB

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

36

23.10.2003, 11:32

@DarthB
Ist gewohnheitssache, habs mir so angewohnt, weil ich hab oft Tools gecodet mit Parametereingabe, naja und da ich vorher immer void geschrieben habe, habe ich mir oft die Haare dran ausgerissen bis ich merkte, das die Parameter bei main fehlten ;D So hab ich mir das dann schnell angewöhnt :)

Ist gewohnheitssache, außerdem siehts etwas "Professioneller" aus ;D;D;D

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

37

23.10.2003, 12:28

Hi,

ich hab mir mal grade 10 min Zeit genommen und eure Gesamten Verbesserungen/Vorschläge/Anregungen und co. umgesetzt und ein schöneres Projekt draus gemacht :)

Hier ist der neue Quellcode von BitWriter. (4 Dateien)

Types.h

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Datei:           Types.h
// //////////////////////////////////////////////////////////////////////////////////
// Autor:           Patrick Ullmann                              © Xarent Interactive
// Erstellt:        23.10.03
// Änderungen:      23.10.03    (Patrick)   Datei erstellt
// //////////////////////////////////////////////////////////////////////////////////
// Beschreibung:    Globaler Header für Typ definitionen, Makros und co.

#ifndef _TYPES_H_
#define _TYPES_H_

// I N C L U D E S //////////////////////////////////////////////////////////////////
    // Standardheader (_ohne_ *.h)
#include <iostream>
#include <sstream>
#include <algorithm>    // für std::reverse

    // Wird für Farbe benutzt 
#ifdef _WIN32 
#define WIN32_LEAN_AND_MEAN 
#include <windows.h> 
#endif 

// D E F I N I T I O N E N //////////////////////////////////////////////////////////
    // Deutsche Umlaute definieren
namespace UMLAUTS 
{ 
    const unsigned char AE = static_cast < unsigned char > ( 142 ); 
    const unsigned char ae = static_cast < unsigned char > ( 132 ); 
    const unsigned char OE = static_cast < unsigned char > ( 153 ); 
    const unsigned char oe = static_cast < unsigned char > ( 148 ); 
    const unsigned char UE = static_cast < unsigned char > ( 154 ); 
    const unsigned char ue = static_cast < unsigned char > ( 129 ); 
    const unsigned char ss = static_cast < unsigned char > ( 225 ); 
}

    // Bestimmte ASCII Zeichen definieren
namespace SIGNS
{
    const unsigned char SMILE1 = static_cast < unsigned char > ( 001 ); 
    const unsigned char SMILE2 = static_cast < unsigned char > ( 002 ); 
    const unsigned char BORDERLINE = static_cast < unsigned char > ( 196 ); 
}

// M A K R O S //////////////////////////////////////////////////////////////////////
    // Noch keine

// I N L I N E  -  F U N K T I O N E N //////////////////////////////////////////////
    // Noch keine

#endif


CTextToBinary.h

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Datei:           CTextToBinary.h
// //////////////////////////////////////////////////////////////////////////////////
// Autor:           Patrick Ullmann                              © Xarent Interactive
// Erstellt:        23.10.03
// Änderungen:      23.10.03    (Patrick)   Datei erstellt
// //////////////////////////////////////////////////////////////////////////////////
// Beschreibung:    Konverterklasse um Text in Binär (01000010) umzuwandeln.

#ifndef _CTEXTTOBINARY_H_
#define _CTEXTTOBINARY_H_

// I N C L U D E S //////////////////////////////////////////////////////////////////
#include "Types.h"

// D E F I N I T I O N E N //////////////////////////////////////////////////////////
    // Noch keine
    
// S T R U K T U R E N //////////////////////////////////////////////////////////////
class TextToBinary 
{ 
public: 
    TextToBinary    (void) {} 
    TextToBinary    (const TextToBinary& ttb) : m_StreamBuffer(ttb.m_StreamBuffer.str()) {} 
    TextToBinary    (const std::string& strText) 
    { 
        TextToBinare(strText); 
    } 
    ~TextToBinary    (void) {} 

    TextToBinary& operator << (const std::string& strText) 
    { 
        TextToBinare(strText); 
        return (*this); 
    } 

    friend std::string& operator << (std::string& out, const TextToBinary& ttb) 
    { 
        out << ttb.m_StreamBuffer.str(); 
        return (out); 
    } 
    friend std::ostream& operator << (std::ostream& out, const TextToBinary& ttb) 
    { 
        out << ttb.m_StreamBuffer.str(); 
        return (out); 
    } 
    friend std::istream& operator >> (std::istream& in, TextToBinary& ttb) 
    { 
        std::string buf; 
        std::cin >> buf; 
        ttb.TextToBinare(buf); 
        return (in); 
    } 
    friend std::string& operator >> (std::string& in, TextToBinary& ttb) 
    { 
        ttb.TextToBinare(in); 
        return (in); 
    } 

protected: 
    void TextToBinare (const std::string& Text); 

private:
    std::stringstream   m_StreamBuffer; 
}; 

#endif


CTextToBinary.cpp

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Datei:           CTextToBinary.cpp
// //////////////////////////////////////////////////////////////////////////////////
// Autor:           Patrick Ullmann                              © Xarent Interactive
// Erstellt:        23.10.03
// Änderungen:      23.10.03    (Patrick)   Datei erstellt
// //////////////////////////////////////////////////////////////////////////////////
// Beschreibung:    Konverterklasse um Text in Binär (01000010) umzuwandeln.

// I N C L U D E S //////////////////////////////////////////////////////////////////
#include "CTextToBinary.h"

// F U N K T I O N E N //////////////////////////////////////////////////////////////
void TextToBinary::TextToBinare (const std::string& Text) 
{  
    std::string StringBuffer; 
        
    for (std::string::const_iterator i = Text.begin(); i != Text.end(); ++i) 
    { 
        StringBuffer = ""; 
        int a = static_cast<int>(*i);  
            
        for (int j=0; j<8; ++j)    
        {      
            if (a & 0x01) 
                StringBuffer += "1"; 
            else 
                StringBuffer += "0"; 

            a >>= 1;    
        };  

        // String umdrehen 
        std::reverse (StringBuffer.begin(), StringBuffer.end()); 
        StringBuffer += " "; 

        // String in den StreamBuffer reinschreiben 
        this->m_StreamBuffer << StringBuffer; 
    };  
} 


main.cpp

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Datei:           main.cpp
// //////////////////////////////////////////////////////////////////////////////////
// Autor:           Patrick Ullmann                              © Xarent Interactive
// Erstellt:        21.10.03
// Änderungen:      21.10.03    (Patrick)   Datei erstellt
//                  23.10.03    (Patrick)   Änderungen der Forummember vorgenommen
//                                          Dank dafür geht an:
//                                          - deadlus (Farbe)
//                                          - Desert Hawk (Besseres Konvertierverfahren)
//                                          - DragonMaster (Für die super Klasse)
//                                          - David Scherfgen für den Erlaub des Projekts ;D
// //////////////////////////////////////////////////////////////////////////////////
// Beschreibung:    Hauptdatei

// I N C L U D E S //////////////////////////////////////////////////////////////////
#include "CTextToBinary.h"

// D E F I N I T I O N E N //////////////////////////////////////////////////////////
    // Noch keine

// F U N K T I O N E N //////////////////////////////////////////////////////////////
int main (int argc, char *argv[])
{
    // Bei einer Win32 Console können wir die Farbe etwas ändern
#ifdef _WIN32
        // Consolen Handle abfragen
    HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE);
   
        // Farbe setzen
    SetConsoleTextAttribute(Handle, FOREGROUND_RED  | 
                                    FOREGROUND_BLUE  |
                                    FOREGROUND_GREEN  |
                                    FOREGROUND_INTENSITY |                                  
                                    BACKGROUND_BLUE); 
#endif

    std::cout << "Willkommen zum BitWriter! Dem Workshop des Scherfgen-Forums" << std::endl;

#ifdef _WIN32   
        // Farbe setzen
    SetConsoleTextAttribute(Handle, FOREGROUND_RED  | 
                                    FOREGROUND_BLUE  |
                                    FOREGROUND_GREEN  |
                                    FOREGROUND_INTENSITY); 
#endif

    TextToBinary ttb; 

        // Einlesen von Strings 
    std::cout << std::endl << "Bitte Wort eingeben: ";
    std::cin >> ttb;

    std::cout << std::endl << "Dein Text in Bin" << UMLAUTS::ae << "r:" << std::endl;
    std::cout << std::endl << ttb << std::endl; 

        // Damit sich die Console nicht so schnell
        // schließt unter Windows.
#ifdef _WIN32
    int x;
    std::cin >> x;
#endif

    return 0;
}


Vielen Dank an alle die so fleißig mithelfen :) Weitere Verbesserungen, Kritik, Anregungen, Lob, Kochrezepte und co. sind hier in diesem Thread gerne gesehen :) Man kann noch viel verbessern ;)

In diesem Sinne,
Happy coding und auf Wiedersehen ;D

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

38

23.10.2003, 13:50

Was haltet ihr davon, wenn wir häufiger so einen Workshop machen würden?

Ich meine, man lernt halt viel und es macht Spass ;)
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

39

23.10.2003, 14:01

Zitat von »"unsigned int"«

Was haltet ihr davon, wenn wir häufiger so einen Workshop machen würden?

Ich meine, man lernt halt viel und es macht Spass ;)


Der Chef hatte vorgeschlagen dafür 'n Forum zu machen :) Vielleicht wird es ja was ;D Abwarten :)

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

40

23.10.2003, 15:09

wäre ja geil :) :)
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Werbeanzeige