Lektion zur Einführung in den bedingten Ausdruck in Java im Rahmen der Lehre der Programmiersprache Java. [] (bedingte Auswertung, Alternative), Lektion, Seite 720765
http://www.purl.org/stefan_ram/pub/java_bedingter_ausdruck_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Der bedingte Ausdruck in Java

Der bedingte Ausdruck ist ein ternärer Operator. Zwischen dem ersten und dem zweiten Operanden wird ein Fragezeichen "?" geschrieben, zwischen dem zweiten und dem dritten Operanden wird ein Doppelpunkt ":" geschrieben.

ConditionalExpression 〉 ::=
ConditionalOrExpression 〉 |
ConditionalOrExpression 〉 "?" 〈Expression 〉 ":" 〈ConditionalExpression 〉.

Die Priorität dieses Operators wird gelegentlich als schwächer als die aller anderen Operatoren bis auf Zuweisungsoperatoren beschrieben, er wird auch manchmal als „rechtsassoziativ“ bezeichnet. Allerdings sind diese Begriffe zunächst nur für binäre Operatoren definiert und können auf ternäre Operatoren nicht direkt übertragen werden. In Zweifelsfällen kann die obenstehende Produktion die syntaktische Rolle des Alternativoperators genau beschreiben.

Der erste Operand muß vom Datentyp "boolean" sein. Die anderen beiden Operanden können beide vom Datentyp "boolean" oder beide numerisch sein. Der Typ des bedingten Ausdrucks  ist der Typ der beiden letzten Operanden oder der umfangreichere der beiden, falls sie nicht den gleichen Typ haben. (Dies gilt für die in dieser Lektion als bekannt vorausgesetzten numerischen Typen, für andere Typen gibt es einige Sonderregelungen.)

Falls der Wert des ersten Operanden der Wert "true" ist, ist der vorläufige Wert des ganzen Ausdrucks der Wert des Operanden vor dem Doppelpunkt, sonst ist es der Wert des Operanden nach dem Doppelpunkt. Um den Wert des Ausdrucks zu ermitteln, wird der im vorherigen Satz beschriebene vorläufige Wert noch in den Typ des Ausdrucks gewandelt.

Übungsfrage Was ist der Wert und Typ von "true ? 8 : 2."? Was ist der Wert und Typ von "false ? 12 : 9"?

In dem Programm "Alternative.java" ergibt sich als Wert des ersten bedingten Ausdrucks der Wert "1.", denn da der Wert des Operanden vor dem Fragezeichen der Wert "true" ist, ist der Wert des gesamten Ausdrucks der Wert des Operanden vor dem Doppelpunkt ":". Der Typ dieses Ausdrucks ist allerdings der umfassendere der Typen der beiden letzten Operanden, so daß das Ergebnis eine Mischung aus dem Wert des ersten Operanden und dem Typ des zweiten Operanden ist—gewissermaßen eine merkwürdige Form der Typwandlung.

Der Wert des zweiten bedingten Ausdrucks ist der Wert "4", denn da der Wert des ersten Operanden der Wert "false" ist, ist der Wert des ganzen Ausdrucks der Wert des Operanden nach dem Doppelpunkt.

Alternative.java
public class Alternative 
{ public static void main( String[] args ) 
{ System.out.println( true ? 1 : 2. );  
System.out.println( false ? 3 : 4 ); }}

System.out
1.0 
4

Die beiden letzten Stellen dieses Operators sind träge, sie werden also nur bei Bedarf ausgewertet.

Das folgende Beispiel zeigt, wie die Trägheit des letzten Arguments verwendet werden kann, um nichtzulässige Operationen zu verhindern. (Die Festlegung des Ergebnisses "0.", falls der Wert "k" den Wert "0." hat und der Vergleich mit "0." sind allerdings oft nicht sinnvoll. Daher soll dieses Beispiel nicht unbedingt ein Vorbild für eine „sichere Kehrwertmethode“ sein.)

k [Methodendeklaration]
public static double k( final int k ) 
{ return k == 0 ? 0 : 1 / k; }

/    Betrag
Schreiben Sie die Deklaration einer Methode »betrag«, so daß der Wert des Ausdrucks »betrag( x )« der Betrag des Wertes des Ausdrucks »x« ist.
Die Betragsfunktion ist in der klassischen mathematischen Schreibweise folgendermaßen definiert: „|x | ≔ (x, wenn x  ≥ 0; −x, sonst).“

Die Fakultät *

Die Fakultät ist für nichtnegative ganze Zahlen definiert. Die Fakultät einer Zahl n  wird mit einem nachgestellten Ausrufezeichen als n ! geschrieben. Diese Schreibweise ist die mathematische Schreibweise, die aber in Java  so nicht direkt geschrieben werden kann, weil der Ausrufezeichenoperator in Java  eine andere Bedeutung hat.

Die Fakultät des Werts 0 ist der Wert 1, für jeden anderen Wert n  ist die Fakultät von n  der Wert n ·(n −1)!

Übungsfrage Was ist nach der obigen Definition der Fakultät die Fakultät von 0? Was ist die Fakultät von 1? Was ist die Fakultät von 2?

f [Methodendeklaration]
public static int f( final int n ) 
{ return n == 0 ? 1 : n * f( n - 1 ); }

Übungsfrage Beschreiben Sie das Verhalten der Methode "f" für den Argumentwert "0", für den Argumentwert "1" und für den Argumentwert "2".

Übungsfrage Inwieweit wird in der Methodendeklaration von der Trägheit des Operators "?:" Gebrauch gemacht?.

Übungsfrage Die Methode "f" prüft ihr Argument nicht auf Gültigkeit. Mit welchen Werten darf die Methode nicht aufgerufen werden? Sollte die Methode den Wert ihres Parameters irgendwie auf Gültigkeit prüfen?

Für die folgenden Übungen kann die leicht abgewandelte Deklaration der Methode "fakultät" verwendet werden. Der Name dieser Methode enthält einen Umlaut, das ist in Java  möglich, kann aber unter bestimmten Umgebungen Schwierigkeiten geben, wenn die Datei mit einer anderen Kodierung erzeugt wird als der Java -Übersetzer sie erwartet. Dann kann der Umlaut auch durch das Zeichenpaar "ae" ersetzt werden.

fakultät [Methodendeklaration]
public static int fakultät( final int n ) 
{ final int ergebnis = n == 0 ? 1 : n * fakultät( n - 1 ); 
return ergebnis; }

Übungsaufgabe Bauen Sie die Definition der Methode "fakultät" zur Berechnung der Fakultät in eine Java-Übersetzungseinheit ein und rufen Sie diese zum Ausprobieren mit einigen verschiedenen Argumenten auf. Verwenden Sie einen Debugger, um den Ablauf der Aufrufe dieser Methode zu verfolgen.

Übungsaufgabe Bauen Sie in die Methode "fakultät" zwei Ausgabeanweisungen ein: Die erste soll am Anfang der Methode den Wert des Parameters ausgeben, die zweite am Ende der Methode (direkt vor der Rückgabeanweisung) das Ergebnis der Methode. (Die Ausgabeanweisungen dürfen einen zusätzlichen Erklärungstext und zusätzliche Zeilenenden ausgeben.) Entnehmen Sie der Ausgabe, wieviele verschiedene Inkarnationen der Methode "fakultät" von dem Prozeß erzeugt werden. Entfernen Sie die Ausgabeanweisungen schließlich wieder.

Übungsaufgabe Bauen Sie die Ausgabe eines Sternchens "*" in die Methode "fakultät" ein. Beobachten Sie, wie viele Sternchen für einen bestimmten Argumentwert ausgegeben werden. Verändern Sie die Methode dann nötigenfalls, um zu erreichen, daß genau so viele Sternchen ausgegeben werden, wie der Wert des Arguments angibt. Entfernen Sie schließlich alles, das benötigt wurde, um die Fakultät zu berechnen, aber für die Ausgabe von Sternchen "*" jetzt nicht mehr benötigt wird. So entsteht eine Methode, die eine durch ihren Parameterwert bestimmte Zahl von Sternchen "*" ausgibt.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram720765 stefan_ram:720765 bedingte Auswertung, Alternative bedingte Ausführung, Verzweigug, source, source code,sourcecode, Programmier sprache C++ Sprache, C++, CXX, C+, Programm, Programme, C++-Programm C++ Sprache C++ Programmiersprache C++ c++-Programme, Standard C++, Programmieren in C++, Programmieren in CXX, Programmieren in CPP, Programmieren in Cplusplus, Die Programmiersprache C++, Die Programmiersprache CXX, Die Programmiersprache CPP, Die Programmiersprache Cplusplus, Die Programmier sprache C++, Die Programmier sprache CXX, Die Programmier sprache CPP, Die Programmier sprache Cplusplus, CXX-Programmierung, C++-Programmierung, CPP-Programmierung, c-plus-plus, cpluplus-Programmierung, ANSI-C++, ANSI-CXX, ANSI-CPP, ANSI C++, ANSI CXX, ANSI-cpluscplus ISO-C++, ISO-CXX, ISO CPP, ISO C++, ISO CXX, ISO/IEC-C++, ISO/IEC-CXX, ISO/IEC CPP, ISO/IEC C++, ISO/IEC CXX, IEC-C++, IEC-CXX, IEC CPP, IEC C++, IEC CXX, International Standard ISO/IEC 14882 First edition 1998-09-01, ISO/IEC 14882:1998(E), ISO/IEC 14882:2003(E), ASC X3, 7/27/98, c plus plus, C ++, cplusplus, c plus plus, Standard C+ programmieren, Stamdard C++ programmieren, Standart C+ programmieren, Stamdart C++ programmieren, INCITS/ISO/IEC 14882-1998, Information Technology - Programming Languages - C++ (formerly ISO/IEC 14882-1998), Programmieren in C++,Programmiersprache C++ CPP CXX Cplusplus c plus plus International Standard ISO/IEC 14882 First edition 1998-09-01, Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd720765, slrprddef720765, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten.
http://www.purl.org/stefan_ram/pub/java_bedingter_ausdruck_de