Webdesign neben C++ machen

Prüfe, ob der Benutzer ein bestimmtes Zeichen (z.B. /) eingegeben hat und wenn ja, interpretiere es als "weggelassen"
 
Kurz nochmal JS
Code:
var isEven = function(number)
{
    if (isNaN(number) === false);
    {
        
        if ((number % 2) === 0)
        {
            return(true);
        }
        else
        {
            return(false);
        }
    }
    else if (isNaN(number) === true);
    {
        return("Keine Zahl!");
    } 
};

isEven("x");

Wo ist der Fehler? -.-
 
Ich würde dir JSHint empfehlen, um solche Fehler zu vermeiden. Diverse Editoren bieten per Plugin eine direkte Validerung an. Als Online Version ist http://jsbin.com/ einen Blick Wert.
 
Danke, hat das Problem behoben.
 
Neben dem technischen Fehler mit dem Komma ist es ziemlich unsinnig, bei so einer Funktion 2 verschiedene Datentypen (Bool & String) als Rückgabe abzuliefern.
 
Von allem abgesehen ist die Funktion unnötig aufgeblasen, was du du hast ist verkürzt zunächst mal nichts anderes als

Code:
var isEven = function(number)
{
    if (!isNaN(number))
    {
        return number % 2 == 0;
    }
    else
    {
        return ... // was auch immer
    } 
}

Desweiteren ist das mit isNaN zwar gut gemeint, funktioniert aber leider nur teilweise so, wie du dir das vorstellst. Für die Zahl 5 beispielsweise liefert isNaN zwar false, genau so sieht es aber auch aus für 5.55, "5", "5.55", true, false, null und "" (leerer String). Wenn dir unter diesen Umständen ein simples var isEven = number % 2 == 0 nicht ausreicht und du wirklich auf eine Ganzzahl prüfen willst, dann musst du das irgendwie anders sicherstellen, evt. so:

Code:
function isEven(number) 
{
   return (number == parseInt(number)) && (number % 2 == 0);
}

auch nicht perfekt, aber dabei werden wenigstens true, false, null, nicht-ganze Zahlen und "" aussortiert. Wenn du Nummern in Strings ausschließen möchtest, ist ein "===" von Nöten beim parseInt-Aufruf.
 
Zuletzt bearbeitet:
War jetzt eigentlich nur für das interaktive Tutorial ^_^
Zu dem Zeitpunkt kannte ich auch keine logischen Operatoren.
 
Liest das hier eig. noch jemand?
Kurzes Update:
HTML, CSS und JS laufen super.
C++ kratzt ab.
Nach dem Buch zu arbeiten, ist unglaublich öde und es gibt viel zu wenige Aufgaben am Ende der Kapitel.
Das ganze Buch ist einfach übertrieben akademisch geschrieben. Ziemlich unvollständig, und eher was für Leute, die darüber eine Arbeit schreiben und es im Detail erklären müssen.
Der Frustfaktor ist unglaublich hoch und ich komme einfach nicht mehr voran. Kontrollstrukturen etc... habe ich mir alle in JS beibringen lassen, auf C++ lassen diese sich zwar fast 1 zu 1 übertragen, aber ohne JS wäre ich aufgeschmissen. Da ist deutlich mehr Wiederholung, einfachere Formulierung (trotz englisch!) und einfach motivierender.

Einziges Problem bei der Sache ist (warum ich noch nicht abgesprungen bin!!), dass ich die Programmiersprache für mein Praktikum brauche.
 
Trocken geschriebene Lektüre gibt es immer. Da kommt man nie drumherum. Aber sei doch froh, dass du ein Buch hast, das auch in die Tiefe geht.

Programmieren bedeutet ja nicht, dass man einfach irgendwas hinschreibt und sagt: "Passt schon!"
Programmieren bedeutet, dass man
a) effizient ein Programm schreibt,
b) die Eigenheiten (die meist nicht ohne Grund so existieren) der Programmiersprache ausnutzt und
c) möglichst optimale Algorithmen entwickelt und verwendet (= dass das Programm effizient arbeitet).

Der Punkt c) ist übrigens das Kernthema der Informatik.



Ich habe schon viel Programmcode gesehen, bei dem man sich fragt, ob sich der Entwickler überhaupt etwas dabei gedacht hat. Da werden naive Such- und Sortieralgorithmen umgesetzt, obwohl schon hochoptimierte im Framework vorhanden sind. Statt Listen werden Arrays verwendet, die bei Größenänderung neu erstellt und die Inhalte kopiert werden müssen. Usw. Die Leute sind dann immer erstaunt, wenn man dann zwei Seiten Quelltext durch drei Zeilen ersetzt, die zudem noch schneller und fehlertoleranter sind und mehr Möglichkeiten für besondere Anwendungen bieten.
 
Zuletzt bearbeitet:
Mal ein paar kurze Fragen:

1. Muss ich alle Escape-Sequenzen kennen?
2. Kann mir einer nochmal kurz die Formatierung mit <iomanip> erklären?
3. Wie funktioniert dieses z.B. string (75, '-')
cout << "bla bla" ... gedöns?
 
1337hAx' schrieb:
Mal ein paar kurze Fragen:

1. Muss ich alle Escape-Sequenzen kennen?
Du musst immer das kennen, was du gerade brauchst. Ist doch klar oder?

3. Wie funktioniert dieses z.B. string (75, '-')
cout << "bla bla" ... gedöns?
Verstehe die Frage nicht, aber die iostreams sind eine furchtbare Sache. Benutze lieber andere Mechanismen zur Ein- und Ausgabe.
 
asdfman schrieb:
Verstehe die Frage nicht, aber die iostreams sind eine furchtbare Sache. Benutze lieber andere Mechanismen zur Ein- und Ausgabe.

iostreams sind vielleicht nicht ideal, aber "furchtbar"?? Auf jeden Fall sind sie zweifelsfrei tausend mal besser als printf & co, allein schon wegen der automatischen Tysicherheit.
 
Zuletzt bearbeitet:
Ich meinte diese String Funktion. irgendwie string (zahl, zeichen)
... irgendetwas ...;
Ist eigentlich die Formatierung in einem Konsolenfenster wichtig, oder ist später mit GUI das ganze eh irrelevant?
 
Wie verhält sich eig. JS zu C++? Wieviel einfacher/schwerer ist es im Vergleich? Weil bisher lerne ich programmieren in Js und das versuche ich dann auf Cpp zu übertragen :/ Das Buch lese ich mir zwar durch, aber es sagt mir nicht zu.. viel zu viel Erklärungen am Anfang, ich versteh nur Bahnhof....
 
JavaScript ist nicht leichter oder schwerer als C++, es ist einfach nur anders. Direkt vergleichen kann man die Sprachen nicht. Die eine ist eine Skript- und Websprache, die andere wird kompiliert und für alles andere verwendet.

Was aber der Fall ist: C++ ist mächtig. Damit meine ich, dass man in dieser Sprache Konzepte umsetzen kann, die so einige andere C-artige Sprachen nicht können. Einerseits ist das eine gute Sache, immerhin schränkt einen die Sprache dann weniger ein, lässt einen also viele Dinge auf einfache und elegante Weise tun. Andererseits muss man dann mehr aufpassen, was man da schreibt.

Und wenn du nur Bahnhof verstehst, dann gehe einen Schritt zurück. Schau dir die Grundlagen noch mal an. Machen wir alle auch.
 
Die größten Unterschiede liegen wirklich in dem, wofür es praktisch verwendet wird. Natürlich muss man z.B. immer daran denken, dass JS nur schwach typisiert ist, aber das ist eher ne Sache der Gewöhnung. Außerdem gibt es natürlich deutliche Performance-Unterschiede.

Aber spätestens, wenn man sich aus der reinen Dekoration&Interaktion von Webseiten löst und z.B. Richtung Node.JS guckt, kann JS ähnlich komplexe Probleme angehen, wie man es sonst von den "üblichen" Sprachen kennt.
 
e-Laurin schrieb:
JavaScript ist nicht leichter oder schwerer als C++, es ist einfach nur anders. [...]
Was aber der Fall ist: C++ ist mächtig.

Ich würde aufgrund der zweiten Aussage die erste zu "C++ ist schwieriger" korrigieren. Die Lernkurve ist nicht umbedingt steiler aber sehr viel länger. Wo sonst hat man schon das Vergnügen, Variablen per Wert, L-Referenz, R-Referenz und Pointer, optional in Kombination mit const zu übergeben? ;-) Ich würde schon sagen, C++ ist schwieriger aufgrund seines ernormen Umfangs.

Ansonsten: Was nicht so relevant erscheint, flott drüber hinweglesen! Wissen wo es steht, reicht erstmal. Auf gar keinen Fall sowas versuchen auswendig zu lernen, wenn man später mal was formatiert auf der Konsole ausgeben will, dann lieber auf einer Referenzseite wie http://en.cppreference.com/ nachschauen. Du musst nur wissen, das es sowas wie iomanip gibt, dann navigierst du auf die Seite und klickst dich da durch und landest dann auf http://en.cppreference.com/w/cpp/io/manip, wo man dann eine entsprechende Auflistung findet.
 
Auch wenn C++ insgesamt komplexer ist, so hat auch JS seine Fallstricke, die man nicht erwartet (z.B. der Kram mit "undefined" statt NULL) und auch ein paar überraschende Optionen, von denen einem kaum einer erzählt...
 
Zurück
Oben