sabio23
Goto Top

3 C plus plus Anfängerfragen

Ich hoffe mal, das mein Thema nicht zu sinnlos ist, und noch nirgends beantwortet sind. Allerdings habe ich in google noch nichts gesehen.

Ich lerne schon seit ein paar Tagen C++, und habe schon einige Kapitel durch. Allerdings stellen sich mit schon lang 3 Fragen. Diese sind:

1. Was hat es eig. mit diesen .dll Datein auf sich, wann und für was werden sie benötigt? Sind sie überhaupt für C++ da?

2. Wie kann ich in C++ einen permanenten Befehl schreiben. Was ich damit meine ist. Das man z.B. wenn man das Wort "help" eingibt, das man dann immer diesen Text bekommt, egal, in welcher Zeile das Programm gerade ist. So viel ich erfahren habe, geht C++ ja nur Zeile für Zeile ab und führt es aus. muss ich diesen Befehl in jede Zeile schreiben, oder gibt es so etwas wie einen permanenten Befehl?

3. Wenn ich so eine Art Datenbank machen will (will keine haben, nur als Beispiel, bevor wieder jemmand mit "nimm doch sql oder so kommt^^") und eine Bneutzereingabe soll wo gespeichert werden, wie mache ich das? Schreibt man diese Daten in eine gewöhnliche Textdatei, oder kommen vllt die .dll Datein zum vorschein, wo wird alles hingespeichert? Und besonders mit welchen Befehlen kann man dies anstellen?

In den meisten Tutorials die ich bis jetzt durchgenommen habe, wurd bis jetzt nur mit Zahlen gearbeiten und hauptsächlich Befehle erklärt. Aber leider kann ich die 3 Fragen zu meinem jetzigen Wissen nicht zuordnen.


Danke für jede Tipps, Hilfen und Antworten

P.s.: Wie soll man im Titel C++ schreiben? :D

Content-Key: 84291

Url: https://administrator.de/contentid/84291

Printed on: April 20, 2024 at 02:04 o'clock

Member: filippg
filippg Mar 30, 2008 at 18:47:17 (UTC)
Goto Top
Hallo,

1. Wenn du deine Programme bisher compilierst wirst du wohl eine .exe-Datei erzeugen. Genausogut kann man auch eine .dll-Datei daraus machen. Die kann man dann zwar nicht einfach wie ein .exe ausführen, aber man kann sie in anderen Programmen nutzen. Also: DLLs sind Sammlungen von Funktionen, die man in anderen Programmen nutzen kann.

2. Hm... kam in den Tutorials, die du nutzt noch nie etwas von Funktionen, Methoden oder Prozeduren vor? Das sind alles drei Begriffe für fast das gleiche, und zwar das, was du meinem Verständnis nach willst.
Das mit dem Zeilenweise abarbeiten ist zwar nicht ganz falsch. Aber mit Prozeduren kann man (vereinfacht gesagt) das Programm dazu bringen in einer andere Zeile zu springen, die Prozedur auszuführen, und danach wieder an der ursprünglichen Stelle weitermachen.

3. Das muss man dann sehen. Man kann Textdateien verwenden, aber eher bei einfachen Textdaten. Daneben hast du vielleicht schonmal etwas von Objektorientierte Programmierung gehört (solltest du). Objekte kann man (mehr oder weniger einfach) als Binärdateien speichern. Oder man kann auch Datenbanken anbinden. Letzteres unterstützt C++ gar nicht von Haus aus, dazu muss man dann vorgefertige Funktionen zur Erweiterung (ja: dlls) nehmen.


Eine Programmiersprache nur mit Tutorials zu erlernen halte ich (wenn man nicht bereits andere Sprachen kann) für unmöglich. Die Tutorials sind gehen selten genug auf Grundlagen ein und betrachten immer nur Teilaspekte. Besorg dir ein Buch! Und ich persönlich würde als Einsteigersprache auch nicht C++ empfehlen. Lieber C# oder Java, da tut man sich um einiges leichter.

Gruß

Filipp
Member: sabio23
sabio23 Mar 30, 2008 at 19:18:24 (UTC)
Goto Top
1. Frage ist damit beantwortet, vielen Dank.

2. Doch, über alles drei, habe ich einiges erfahren. Aber heist das jetzt ich muss in jede Zeile die Funktion schreiben? Also nicht die ganze Funktion, sondern halt nur die Verbindung zu Funktion? Oder kann meine Funktion einmal schreiben, und ständig verwenden?

3. auch beantwortet danke.

Und zum Anhang kann ich nur sagen, es stimmt schon. Ich wollte nur C++ lernen, da ich erstens php, sql, und html kann (wird vllt nicht ganz als richtige Sprache genommen) und hauptsächlich, weil ich sehr zielstrebig sein kann^^

Das mit Tutorials ist auch so eine Sache, in allen Tutorials steht manchmal etwas anderes drin. Deshalb les ich mir erst von alles Turorials den jenigen Punkt durch, und suche das beste, Allerdings ein Buch werde ich mir auch mal zulegen.

Wäre schön, wenn zu Frage 2 noch ein par Hilfen kämen.

Danke schon mal.
Member: filippg
filippg Mar 30, 2008 at 19:31:09 (UTC)
Goto Top
Hallo,

2. wenn du PHP kannst solltest du wissen, was eine Funktion ist (das mit den "(..)", z.B. define, isset, explode...), und wie man diese benutzt. Was du mit "in jede Zeile schreiben" meinst weiß ich nicht. Aber Funktionen sind dazu gedacht einmal geschrieben und mehrmals verwendet zu werden. Und in C++ verhalten sie sich ziemlich ähnlich wie in PHP.

Filipp
Member: sabio23
sabio23 Mar 30, 2008 at 19:41:30 (UTC)
Goto Top
Nein das mein ich nicht so ganz.
z.B. ich habe folgenden Programm ablauf:

Bitte geben sie eine Zahl ein
2
Bitte noch eine
3
usw...
usw...
usw...


Und man soll jetzt bei jedem satz, also bei jeder Aufforderung, z.B.: "help" eingeben können, und jedesmal, soll ein Text erscheinen. Aber danach soll es gleich weiter gehen. Also schon eine Funktion, das ist richtig. Nur muss ich in jeder Aufforderung, auch die Funktion reinschreiben? Oder kann ich es irgendwie so machen, das egal, in welcher Aufforderung oder welchem Prozess er ist, man help eingeben kann?
Member: filippg
filippg Mar 30, 2008 at 20:01:47 (UTC)
Goto Top
Hallo,

nein, so dass die Hilfe kommt, egal wo man gerade ist, kann man nicht mit einem Befehl machen.
Was geht:
Du liest ja jetzt die Eingabe auch mit.... stdin.Readln? Oder welcher Funktion ein (keine Ahnung mehr, wie die in C++ heißt).
Erstelle eine Funktion "LeseEingabe". Diese liest die Eingabe ein, prüft, ob sie gleich "help" ist. Wenn ja wird die Hilfe ausgegeben, ansonsten der eingegebene Wert zurückgegeben. Überall, wo du bisher die Funktion zum Einlesen verwendest, verwendest du nun LeseEingabe.

Filipp
Member: sabio23
sabio23 Mar 30, 2008 at 20:05:44 (UTC)
Goto Top
achso, das heist in den Programmen, wo man help eingeben kann, wird zu jeeedem Zeitpunkt und Befehl in dem Programm die Funktion einbezogen?
Member: sabio23
sabio23 Mar 31, 2008 at 10:36:00 (UTC)
Goto Top
Ich hätte da dann vllt gleich noch eine Frage, und zwar wird in allen Tutorials die ich bis jetzt gefunden habe, Funktionen nur anhand von Zahlen erläutert.

Könnte mir vllt jemmand bei diesem Versuch helfen?

#include<iostream>
#include<fstream>

using namespace std;

char area (char);

int main()
{
cout<<"Bitte help eingeben\n";
char usertype[20];
cin.get(usertype,20);
char result;
result=area(usertype);
}

char area(char rhs)
{
if ( strcmp (rhs,"help") == 0)
{
return "du hast help eingegeben\n";
}
return "du hast nicht help eingegeben\n";
}


Was ist denn daran falsch? Könnte das nicht so gehen?

Und warum macht er daraus eine Endlosschleife?

#include<iostream>
#include<fstream>

using namespace std;

int main()
{
anfang:;
cout<<"Bitte geben sie etwas ein!\n";
char usertype[20];
cin.get(usertype,20);
cout<<"Sie haben "<<usertype<<" eingegeben\n";
goto anfang;
}


Müsste er nicht, nachdem er wieder an den Anfang ist, warten bis eine Benutzereingabe erfolgt?

Langsam komm ich durcheinander^^


Und um noch mal auf das Thema mit dem Buch zurück zukommen. Ich benutze zwar mehr Linux als Windows, allerdings, wird man wohl öfters was für windows programmieren, als für Linux. Wäre es ejtzt besser ein C++ Buch für Linux oder für Windows zu besorgen. Also gibt es von den Befehlen her, sehr viele Unterschiede in Linux und Windows?
Member: filippg
filippg Mar 31, 2008 at 18:36:14 (UTC)
Goto Top
Was ist denn daran falsch? Könnte das nicht so gehen?
Was bemängelt er denn, bzw was funktioniert nicht?
Ach ja, die Typen stimmen nicht. Eigentlich müsste der Compiler meckern, weil area vom Typ char ist. Zurückzugeben versuchst du aber offensichtlich einen String.

Müsste er nicht, nachdem er wieder an den Anfang ist, warten bis eine Benutzereingabe erfolgt?
Ja, das denke ich schon (bin mir aber über cin.get()) nicht sicher, evtl. muss man das flushen). Aber eine Endlosschleife ist es.

Also gibt es von den Befehlen her, sehr viele Unterschiede in Linux und Windows?
Ja. Eigentlich nein. Von den eigentlichen c++-Befehlen gibt es eher wenig Unterschiede. Nur kann C++ sehr wenig. Z.B. kann C++ keine Fensterln machen (und ich vermute 92% deines Codes wird sich um das GUI drehen). Deswegen braucht man noch Bibliotheken, die den Funktionsumfang erweitern (z.B. dlls). Und diese sind meist plattformspezifisch.
Bei Java hast du dieses Problem nicht, bei C# nicht unbedingt.

goto anfang;
"goto" ist übrigens Teufelszeug.

Filipp
Member: sabio23
sabio23 Mar 31, 2008 at 18:51:05 (UTC)
Goto Top
Ach ja, die Typen stimmen nicht. Eigentlich
müsste der Compiler meckern, weil area
vom Typ char ist. Zurückzugeben
versuchst du aber offensichtlich einen
String.

Wie kann ich das ändern? gibt es einen Typ der String heist?

"goto" ist übrigens
Teufelszeug.

Aber wie machen es Programmier dann, das ein Programm immer durchläuft. Wenn ein Programmierer ein Programm macht, in dem man mehreres machen kann. Dann beendet sich das Programm nach einem Prozess nicht gleich. Sondern der Benuter kann ja meist mehr als nur eine Aktion durchführen. Wie bleibt ein Programm ständig am laufen? Also wie würde man das mit dem goto von mir anders machen, aber trotzdem den gleichen Sinn erreichen?

Schon ma vielen Dank für die Zeitinvestierung :P
Member: filippg
filippg Mar 31, 2008 at 19:38:24 (UTC)
Goto Top
KAUF DIR EIN BUCH! (Leihen ist fast genauso gut. In Universitätsbibliotheken kann jeder kostenlos leihen, und auch Stadtbüchereien können über Fernleihe jedes Buch besorgen)

Da lernst du Dinge über
- Datentypen (string)
- Ablaufsteuerung (while-Schleifen, damit der Benutzer mehrere Aktionen durchführen kann)
- Funktionen und Rückgabetypen
- Objektorientierung

Und ich würde dir raten eins über Java oder evtl C# zu besorgen.

Gruß

Filipp