Newbie - Fragen
-
hi, ich habe 2 Jahre lang in Excel eine extrem umfangreiche Flugplanungssoftware programmiert (kann man ohne VBA da schon von Software und Programmierung reden), die auch gut funktioniert hat aber irgendwann an irdische Grenzen stieß: nämlich die Spalte 256 (IV) ganz rechts in Excel 03 (will mir net 07 zulegen).
Einige Freunde die sich gut mit Pcs auskennen meinten du musst programmieren lernen. Also habe ich mir ein Buch über C++ zugelegt.
Mein Hintergrund: Ich hatte 2003 mal in einer Uni einen Delphi -Programmierkurs mit hypermotivierten Hiwis, habe nichts geblickt und habe quasi traumatisiert Programmierung für mich persönlich ad actas gelegt; doch jetzt "juckt" es doch wieder mal.
Ich habe mir - da ich mir auf Grund meiner Schichtarbeitsstruktur keinen VHS - Kurs etc. leisten kann - ein Buch gekauft samt CD, das wäre:
Markt + Technik Verlag: C++ Das komplette Starterkit für den einfachen Einstieg in die Programmierung.
CD: Borland C++ BuilderX.
mir fielen gleich im Buch Schwächen auf: Ein beschriebener Button war im Menü von Borland net zu finden und die Anleitung im integrierten Editor einen Text einzugeben war im Buch komplett anders. Da ich mich (habe aus Delphi ALLES vergessen) als totalen Newbie (kann auch keine andere Progsprache) bezeichnen würde ist es für mich als Zwangsautodidakt sehr nervig komplett ohne Hilfestellung das Buch durchzuarbeiten. es hat übrigens isbn 3-8272-6830-3. ist das ein gutes buch für einsteiger (von jesse liberty und david horvath).
ist borland c++ builderx ein guter compiler incl. linker?
ist c++ geeignet um - unter der annahme dass ich irgendwann mal richtig gut bin - eine flugplanungssoftware zu erstellen mit gui, die:
weight + balance machen kann
spirtberechnung
optimale höhenberechnung
datenbanken mit steigleistungsdaten verwalten und auswerten kann
eine tabelle mit einer zusammenfassung über ground speed und höhenfehler im format a4 ausdrucken kann.
die leicht anpassbar ist auf andere flieger??sorry falls ich fragen stelle, die in den faq - tutorials stehen, schreibt als antwort einfach faq. aber ich arbeite hauptberuflich 10.5 hrs / d und habe nicht die musse mir vor jeder frage die faqs durchzulesen.
so, in diesem buch das ich da durchackere gibt es mehrere übungen, die soll man sukzessive durcharbeiten. die übung listing 2.4 func.cpp habe ich fast 100 % verstanden. dann habe ich sie nach gusto aus neugier überall mal modifiziert um zu gucken was so alles bei rauskommt. hier ist die modifizierte version:
*******************
#include <iostream>
int Komisch (int x, int y)
{
std::cout << "In Komisch(), erhalten " << x << " und " << y << "\n";
return (x^y);
}int Komischer (int x, int y)
{
std::cout << "In Komischer(), erhalten " << x << " und " << y << "\n";
return (x*y);
}int main()
{
std::cout << "Ich bin in main()!\n";
std::cout << "\nAufruf von Komisch()\n";
std::cout << "Der Rueckgabewert ist: " << Komisch(5,20);
std::cout << "Der Rueckgabewert ist: " << Komischer(5,20);
std::cout << "\nZurueck in main().\n";
std::cout << "\nBeenden...\n\n";
return 0;
}***************
frage 1) das buch geht net gut drauf ein was iostream ist. habt ihr gute links zu tuts?
frage 2) eigentlich hieß int Komisch (int x, int y) mal int Add (int x, int y)- die übung func.cpp im buch ist nämlich ne addier prog übung. jetzt habe ich (wie kopiert man für bessere referenz eigentlich diese hilfreichen zeilennummern mit??) in zeile 6 mal + durch ^ ersetzt. aus excel kenne ich das als hoch = potenzzeichen. daher dachte ich naja weil integer hoch integer ja integer liefert schmeisst er dir als wert
frage 3) warum werden die exes die borland macht so riesengroß (256 kb e.g.) obwohl fast nix drin ist (s.o.)????
frage 3a) warum kann ich das programm nur im standardausgabemedium laufen lassen aber wenn ich auf die exe in E:\Dokumente und Einstellungen\MEINNAMEINECHT\cbproject\func\windows\Debug_Build gehe, dann geht für einen moment n schwarzes fenster auf und wieder zu aber man kann nicht den text + addition sehen?frage 3b) so sieht das programmergebnis aus:
Ich bin in main()!
Aufruf von Komisch()
In Komisch(), erhalten 5 und 20
Der Rueckgabewert ist: 17In Komischer(), erhalten 5 und 20Der Rueckgabewert ist: 100
Zurueck in main().Beenden...
in der 5. zeile steht: Der Rueckgabewert ist: 17In Komischer(), erhalten 5 und 20... ich habe im code schon hinter std::cout << "Der Rueckgabewert ist: " << Komisch(5,20); ein \n gesetzt weil ich will dass er 17 Zeilensprung In Komischer() usw. schreibt und net 17In ... aber c++ hat immer rumgemeckert dass ich syntaxmäßig mit dem setzen von \n (z. B. std::cout << "Der Rueckgabewert ist: " << Komischer(5,20)\n; einen fehler gemacht habe. Was ist zu tun?
Frage 3c) Wofür ist diese main() fkt. da? es sei die einzige funktion die irgendwie immer kein return braucht blabla aber kapiert habe ich nicht was das überhaupt alles soll.frage 4) wieviel schneller ist c++ (gut programmiert) als excel, wenn die excel tabelle 12 mb groß war und viele fallunterscheidungsformeln enthielt und große datenbanken?
frage 5) annahme: guter programmierer: wie fehleranfällig ist c++ ggü. excel?? Excel wird ab 10 Mb (1.4 GHZ Centrino XP SP2 Pro OEM OS) so buggy dass eine Flugdurchführung ernsthaft sicherheitsgefährdet ist (nachweiselich echte Rechenfehler bei der Grosskreisdistanzbestimmung etc.)so ... das waren viele fragen hoffentlcih werden´s bald weniger... wenn ihr was wissen wollt ... sorry, da könnte ich nur was zum thema pilot und flugzeug beisteuern

gruss kasimirle
-
Hallo
ist borland c++ builderx ein guter compiler incl. linker?
Compiler und Linker sind in Ordnung, es gibt zwar mittlerweile bessere und standard-konformere, aber für deine Zwecke werden die auf jedenfall vollkommen ausreichen.
ist c++ geeignet um - unter der annahme dass ich irgendwann mal richtig gut bin - eine flugplanungssoftware zu erstellen mit gui, die:
Mit C++ kannst du grundsätzlich alles machen, was ein Computer überhaupt kann. Alles was im C++ Standard nicht enthalten ist, muß zwar über externe Librarys eingeholt werden, aber davon gibt es viele und der Builder hat bereits die VCL, die recht gut ist.
frage 1) das buch geht net gut drauf ein was iostream ist. habt ihr gute links zu tuts?
Für einen Überblick : siehe den Link Tutorials im Menü auf dieser Seite oben rechts. Da findest du zum Beispiel dieses.
frage 2) eigentlich hieß int Komisch (int x, int y) mal int Add (int x, int y)
Das sind Funktionsdefinitionen.
daher dachte ich naja weil integer hoch integer ja integer liefert schmeisst er dir als wert
Nein, in C++ ist ^ der Adressoperator (u.a.). Zum Potentieren brauchst du pow
warum werden die exes die borland macht so riesengroß (256 kb e.g.) obwohl fast nix drin ist (s.o.)????
Vermutlich hast du noch die ganzen DEBUG-Symbole drin. Auch das Verwendung der STL (iostream) vergrößert das Programm. Das sollte aber zweitrangig sein, denn alle Funktionen/Klassen die einmal eingebunden werden, werden nur einmal eingebunden, egal wie oft es benutzt wird.
warum kann ich das programm nur im standardausgabemedium laufen lassen aber wenn ich auf die exe in E:\Dokumente und Einstellungen\MEINNAMEINECHT\cbproject\func\windows\Debug_Build gehe, dann geht für einen moment n schwarzes fenster auf und wieder zu aber man kann nicht den text + addition sehen?
Schau in die FAQ des Konsolen-Forums. Dort gibt es ganz oben einen Thread "Automatisches Schließen verhindern"
in der 5. zeile steht: Der Rueckgabewert ist: 17In Komischer(), erhalten 5 und 20... ich habe im code schon hinter std::cout << "Der Rueckgabewert ist: " << Komisch(5,20); ein \n gesetzt weil ich will dass er 17 Zeilensprung In Komischer() usw. schreibt und net 17In ... aber c++ hat immer rumgemeckert dass ich syntaxmäßig mit dem setzen von \n (z. B. std::cout << "Der Rueckgabewert ist: " << Komischer(5,20)\n; einen fehler gemacht habe. Was ist zu tun?
Frage 3c) Wofür ist diese main() fkt. da? es sei die einzige funktion die irgendwie immer kein return braucht blabla aber kapiert habe ich nicht was das überhaupt alles soll.std::cout << "Der Rueckgabewert ist: " << Komisch(5,20) << std::endl;Frage 3c) Wofür ist diese main() fkt. da? es sei die einzige funktion die irgendwie immer kein return braucht blabla aber kapiert habe ich nicht was das überhaupt alles soll.
Das ist die Hauptfunktion deines Programmes. Dort beginnt und endet es. Ohne die (bzw. WinMain... ) ist es kein gültiges C++ Programm.
frage 4) wieviel schneller ist c++ (gut programmiert) als excel, wenn die excel tabelle 12 mb groß war und viele fallunterscheidungsformeln enthielt und große datenbanken?
Das ist in C++ nicht nur von der Sprache, sondern auch vom Compiler, Zusatzbibliotheken, der Datenbank/Dateianbindung und natürlich vom Programmiergeschick abhängig. C++ ist potentiell schneller als Excel.
frage 5) annahme: guter programmierer: wie fehleranfällig ist c++ ggü. excel?? Excel wird ab 10 Mb (1.4 GHZ Centrino XP SP2 Pro OEM OS) so buggy dass eine Flugdurchführung ernsthaft sicherheitsgefährdet ist (nachweiselich echte Rechenfehler bei der Grosskreisdistanzbestimmung etc.)
C++ ist als Sprache an sich fehlerfrei
. Auch der Borland-Compiler ist als quasi fehlerfrei anzusehen. In C++ bist nur du für die Programmfehler verantwortlich. Na und noch Windows selber...wie kopiert man für bessere referenz eigentlich diese hilfreichen zeilennummern mit??
Das wird im Forum einfach durch das Syntax-Highlithning erledigt. Bitte benutze das auch beim nächsten Mal hier.
bis bald
akari
-
1.) iostream(Inbut Output Stream) ist für alle ein und ausgabe vond er Tastatur ins Programm bzw vom Programm auf den Bildschirm zuständig. Im wesentlichen bestehts aus dem cout<< das du schon kennst zusätlich gibts noch cin>>Variable; das fordert eine Eingabe der Variable ab. Es gibt auch noch endl damit kann man nen Zeilenumbruch erzwichen ist das selbe wie /n, nur das mans als cout<<...<<endl; schreibt. Nen Link der komplett alles zeigt hab ich grad nicht zur Hand.
2.) Was das ^ macht weis ich leider nicht. Die für die zeilennumemrn gibts beim eingeben unten den C/C++ Button alles wa sinnerhalb steht bekomtm Zeilennummern.
3.) Ich denke mal du hast sie im Debugmodus Compiliert da haben sie einige extras die auftretende Fehler besser fidnen lassen, man kanns auf Release umstellen dann werden sie kleiner.
3a.) Weil das Programm keine weiteren Ausgaben am Ende hat dadurch Beendet es sich automatisch. Das kann man unterbinden indem man ans ende(vor return 0;) cin.get(); schreibt dann muß man ne Taste drücken zum beenden.
3b. ) Schreibs einfach über 2 Zeilen, alsocout << "Der Rueckgabewert ist: " <<endl; cout<< Komisch(5,20)<<endl;3c.) int main(); bztw, dafür werden mich einige steinigen, void main() ist das eigentliche Programm. wenn man void main() nimt dann braucht man ihn nicht. Mit int main() kann man Fehler deffinieren und Zahlen ausgeben die dann für Fehler stehen.
4. ) Da muß jemand mit mehr Erfahrung ran als ich hab ich ka.
5. ) Kommt drauf an wie gut dus Programmierst es gibt da ne ungenauigkeit der berechnung von Kommazahlen, die liegt aber am CPU die kann man ausgleichen wenn man gut Programmiert.Achja und eh ichs vergesse, du schreibst imemr so schön std:: vor dein cout, das muß eig auch vor endl und cin, aber das kannste ausmisten indem du unter den iostream include
using namespace std;schreibst.
Hoffe ich konnte helfen.
-
akari schrieb:
daher dachte ich naja weil integer hoch integer ja integer liefert schmeisst er dir als wert
Nein, in C++ ist ^ der Adressoperator (u.a.). Zum Potentieren brauchst du pow
^ ist der Operator für eine bitweise xor-Verknüpfung von integeralen Datentypen. potenzieren -> pow, wie bereits erwähnt.
frage 4) wieviel schneller ist c++ (gut programmiert) als excel, wenn die excel tabelle 12 mb groß war und viele fallunterscheidungsformeln enthielt und große datenbanken?
Das ist in C++ nicht nur von der Sprache, sondern auch vom Compiler, Zusatzbibliotheken, der Datenbank/Dateianbindung und natürlich vom Programmiergeschick abhängig. C++ ist potentiell schneller als Excel.
Selbst ohne viel Können des Programmierers dürften C++-Programme _wesentlich_ schneller sein, als entsprechende "Excelprogramme".
Das liegt daran, das C++ wesentlich maschinennäher ist.
Können erfordert es allerdings, das ganze überhaupt hinzukriegen.frage 5) annahme: guter programmierer: wie fehleranfällig ist c++ ggü. excel?? Excel wird ab 10 Mb (1.4 GHZ Centrino XP SP2 Pro OEM OS) so buggy dass eine Flugdurchführung ernsthaft sicherheitsgefährdet ist (nachweiselich echte Rechenfehler bei der Grosskreisdistanzbestimmung etc.)
C++ ist als Sprache an sich fehlerfrei
. Auch der Borland-Compiler ist als quasi fehlerfrei anzusehen. In C++ bist nur du für die Programmfehler verantwortlich. Na und noch Windows selber...Großkreisdistanzbestimmung sagt mir jetzt nichts, allerdings können Rechenfehler(bzw. Rundungsfehler durch Fließkommaarithmetik) in C++ genauso auftreten, insbesondere bei den Standarddatentypen. In C++ ist aber im Prinzip die Möglichkeit gegeben beliebig genaue Datentypen zu entwerfen, in wie weit du das benötigst weiß ich jetzt nicht.
Mit C++ kannst du im Prinzip alles machen, was Computer überhaupt machen können. Zum Beispiel eine Tabellenkalkulation, wie Excel programmieren. Umgekehrt ist das in der Regel nicht der Fall.MfG
DDR-RAM
-
Auch wenn das viele sicher anders sehen... Ich bin selber ein eingefleischter C++-progger (10+ Jahre auf dem Buckel) aber für das, was du machen willst würde ich Dir C# empfehlen.
Das .Net-Framework nimmt dir enorm viel Low-Level Arbeit ab und in C# mußt Du dich nciht mit technischen banalitäten wie Speichervewaltung Zeiger, Referenz usw auseinandersetzen.
Hol Dir Visual Studio Express, gibts kostenlos bei Microsoft. da hast Du eine vollwertige Entwicklungsumgebung mit einem sehr guten Oberflächengestalter (WIndows Forms).
-
cpp3 schrieb:
Auch wenn das viele sicher anders sehen... Ich bin selber ein eingefleischter C++-progger (10+ Jahre auf dem Buckel) aber für das, was du machen willst würde ich Dir C# empfehlen.
Oder VB .NET (!).
-
Also ich würde C++ für den Kern der Anwendung benutzen, und LUA für die Formel-Definitionen. Aber um diese Kombination sinnvoll hinzubekommen, ist schon etwas Programmiererfahrung nötig.
-
Hat das schon einer genannt oder hab ichs übersehen?
Dein Konsolenfenster schließt sich automatisch nach der Abarbeitung des Programms, d.h. es geht so schnell, dass du das Fenster nur aufblitzen siehst.
Eine Möglichkeit wäre:
system("Pause");ans Ende deines Quellcodes zu schreiben.
Da das aber plattformabhängig ist kannst du auch noch mit:
cin.peek(); getchar();arbeiten.
Bei beiden Möglichkeiten müsste das Konsolenfenster geöffnet bleiben bis du eine Taste drückst.
-
Ich will erreichen, dass im Debugmodus das DOS-fenster nicht mehr sofort bei Fehler geschlossen wird, geht das irgendwie?