Frage zu einer Aufgabe

Cpt.H4rl0ck

Ensign
Registriert
Apr. 2010
Beiträge
163
Hallo Forum,

Während eines Bewerbungsprozesses zum Fachinformatiker für Systemintegration, bin ich über eine Testfrage gestolpert.

Es ist ein kleiner Ausschnitt aus einem Java-Code. Bei Java stehe ich gerade ganz am Anfang, hab aber schon vor der Ausbildung ein bisschen damit angefangen. Denke eigentlich nicht, dass diese Skills für die Fachrichtung Systemintegration gebraucht werden – schaden kann es jedoch nicht.

Aufgabe:

Code:
if (a1==true)
    if (a2==true)
        System.out.println("Test1")
    else
        System.out.println("Test2")


Was ich bisher draus verstehe, ist folgendes: hier sind zwei Schleifen dargestellt, die hintereinander laufen und diese bei Erfüllung einer Bedingung den Text „Test1“ oder „Test2“ ausgeben.

Es wird gefragt, welcher Wert die Variablen a1/a2 annehmen müssen, so dass der Text ausgegeben wird. Kann ich das mit einer einfachen Aussagenlogik beantworten – also if true/true then print… oder ist die Variable eine Zahl 0/1 ?

Wieso wird das nicht so dargestellt:
Code:
if (a1==true)
        System.out.println("Test1")
    else
if (a2==true)
    System.out.println("Test2")

Anmerkung: Ich werde in die Antwort reinschreiben, dass ich nicht alleine darauf gekommen bin. Bringt mir nichts wenn ich später im Gespräch dazu befragt werde und dann doof schaue.

Danke für die Hilfe!
 
Cpt.H4rl0ck schrieb:
hier sind zwei Schleifen
if ist keine Schleife

Cpt.H4rl0ck schrieb:
Wieso wird das nicht so dargestellt:
Weil das nicht das gleiche ist. Erster Code:
a1a2Ausgabe
falsefalsekeine
falsetruekeine
truefalseTest2
truetrueTest1
Zweiter Code
a1a2Ausgabe
falsefalsekeine
falsetrueTest2
truefalseTest1
truetrueTest1
 
  • Gefällt mir
Reaktionen: Hayda Ministral, Raijin, proserpinus und 2 andere
Cpt.H4rl0ck schrieb:
hier sind zwei Schleifen dargestellt
Nein, zwei IF-Anweisungen oder auch IF-Bedingungen. Eine Schleife ist etwas vollkommen anderes.

Cpt.H4rl0ck schrieb:
Es wird gefragt, welcher Wert die Variablen a1/a2 annehmen müssen, so dass der Text ausgegeben wird.
Wenn die Aufgabe lautet: a+3=8 und man wird gefragt welchen Wert a annehmen muss damit die Rechnung stimmt, lautet die Antwort einfach a=5 und kein in Prosa formulierter Quelltext.

Cpt.H4rl0ck schrieb:
Wieso wird das nicht so dargestellt:
Weil das einfach nicht dasselbe ist. Vollkommen anderes Verhalten/Ausgabe.


*edit
Na toll, warum hat mir das Forum die Antworten nicht angezeigt während ich getippt habe ;)
 
  • Gefällt mir
Reaktionen: Cpt.H4rl0ck
Um es in Worten auszudrücken:

Beim ersten Beispielcode wird zuerst gefragt ob der Wert von a1 "true" entspricht. Wenn nicht, wird alles innerhalb der if-Bedinung ignoriert. Nur wenn a1 "true" ist, dann wird überprüft ob a2 "true" oder "false" ist und die entsprechende Ausgabe ausgegeben.

Bei Beispiel 2 wird zuerst der Wert von a1 überprüft, wenn dieser "true" ist wird "Test 1" ausgegeben. Wenn a1 "false" ist, greift die "else"-Bedinung und es wird Variable a2 überprüft und entsprechend ausgegeben.

------------
Unabhänig davon ob du die Aufgabe (selber) gelöst hast, geht es hier meiner Meinung nach darum 1) ggf. Vorwissen abzuprüfen und 2) zu schauen ob du mit deinem Logikwissen die Aufgabe bewältigen kannst. Das Programmieren lernst du dann in der Berufsschule und im Betrieb während der Ausbildung.
Also keine allzugroßen Sorgen deswegen :)
 
Zuletzt bearbeitet: (if-schleife geschrieben...)
  • Gefällt mir
Reaktionen: Raijin, Emanon und Cpt.H4rl0ck
0x8100 schrieb:
ah, die gute alte if-schleife - das solltest du in der bewerbung besser nicht bringen :p
Sehr sehr gut - habe ich mir für immer gemerkt! :D
Nilson schrieb:
if ist keine Schleife


Weil das nicht das gleiche ist. Erster Code:
a1a2Ausgabe
falsefalsekeine
falsetruekeine
truefalseTest2
truetrueTest1
Zweiter Code
a1a2Ausgabe
falsefalsekeine
falsetrueTest2
truefalseTest1
truetrueTest1
Danke für die Erklärung ..

Pako1997 schrieb:
Das ist nicht Java-spezifisch, das ist Grundwissen Informatik, quasi die Zahlen von 1 bis 10.
Die erste if-Abfrage ist verschachtelt, die zweite nicht. Also Grundverschieden.

Mathe: Aussagenlogik

Weiterhin zu 1==true:
https://stackoverflow.com/questions/12236271/is-true-1-and-false-0-in-javascript

Danke auch an dich - schau ich mir gleich an ..
 
Das was @Nilson dir da freundlicherweise aufgezeichnet hat nennt man im übrigen Wahrheitstabelle. So kann man übersichtlich alle Fälle durchspielen und vergisst keine Kombination.
 
  • Gefällt mir
Reaktionen: Hayda Ministral, Cpt.H4rl0ck, error und eine weitere Person
Raijin schrieb:
Nein, zwei IF-Anweisungen oder auch IF-Bedingungen. Eine Schleife ist etwas vollkommen anderes.


Wenn die Aufgabe lautet: a+3=8 und man wird gefragt welchen Wert a annehmen muss damit die Rechnung stimmt, lautet die Antwort einfach a=5 und kein in Prosa formulierter Quelltext.


Weil das einfach nicht dasselbe ist. Vollkommen anderes Verhalten/Ausgabe.


*edit
Na toll, warum hat mir das Forum die Antworten nicht angezeigt während ich getippt habe ;)
Dennoch - danke für deine Erklärung!
error schrieb:
Um es in Worten auszudrücken:

Beim ersten Beispielcode wird zuerst gefragt ob der Wert von a1 "true" entspricht. Wenn nicht, wird alles innerhalb der if-Schleife ignoriert. Nur wenn a1 "true" ist, dann wird überprüft ob a2 "true" oder "false" ist und die entsprechende Ausgabe ausgegeben.

Bei Beispiel 2 wird zuerst der Wert von a1 überprüft, wenn dieser "true" ist wird "Test 1" ausgegeben. Wenn a1 "false" ist, greift die "else"-Bedinung und es wird Variable a2 überprüft und entsprechend ausgegeben.

------------
Unabhänig davon ob du die Aufgabe (selber) gelöst hast, geht es hier meiner Meinung nach darum 1) ggf. Vorwissen abzuprüfen und 2) zu schauen ob du mit deinem Logikwissen die Aufgabe bewältigen kannst. Das Programmieren lernst du dann in der Berufsschule und im Betrieb während der Ausbildung.
Also keine allzugroßen Sorgen deswegen :)
Ok - sollte mich nochmal kräftig mit Aussagelogik beschäftigen. Ist im Fachabi nicht vorgekommen ..
 
Pako1997 schrieb:
das ist aber hier java und kein javascript. == ist in beiden sprachen was anderes:
Javascript:
"1" == true  // true
"0" == false  // true
1 == true  // true
0 == false  // true
1 === true  // false
in java geht das so nicht. da müssen die zu vergleichenden ausdrücke vom selben typ sein. für die aufgabe des te bedeutet das z.b. dass a1 und a2 nur booleans sein können.
 
  • Gefällt mir
Reaktionen: Arc Angeling und KitKat::new()
Nachdem hier ja schon jede Menge Fachwissen geteilt wurde - wünsche ich Dir einfach mal viel Glück auf Deinem Weg und error hat das mit seinem Fazit ja sehr schön "abgeschlossen"....
 
  • Gefällt mir
Reaktionen: Cpt.H4rl0ck
Danke @Emanon, für die netten Worte und das Glück nehme ich gerne mit!
 
Cpt.H4rl0ck schrieb:
Während eines Bewerbungsprozesses zum Fachinformatiker für Systemintegration, bin ich über eine Testfrage gestolpert.
Ich möchte dir jetzt nicht zu nahe treten....
Aber sowas weiß man als Fachinformatiker nicht? Oder handelt es sich hier um einen Ausbildungsplatz?
Das wurde bei mir damals in der 8ten Klasse im Informatikunterricht schon bei gebracht. Und das ist schon Ewigkeiten her.
Zwar kein Java aber VB oder C war das damals.
If Abfragen funktionieren in jeder Sprache gleich.
 
  • Gefällt mir
Reaktionen: proserpinus
R O G E R schrieb:
Ich möchte dir jetzt nicht zu nahe treten....
Aber sowas weiß man als Fachinformatiker nicht?
Das wurde bei mir damals in der 8ten Klasse im Informatikunterricht schon bei gebracht. Und das ist schon Ewigkeiten her.
Zwar kein Java aber VB oder C war das damals.
If Abfragen funktionieren in jeder Sprache gleich.
Machst du nicht..
ich habe damlas einen Hauptschulabschluss gemacht und sehr spät mein Fachabi und If Abfragen wurden einfach nicht behandelt. Hab noch einige Wissenslücken zu schließen - deswegen stelle ich Fragen und lerne einfach dazu.

Edit: Ich bewerbe mich um einen Ausbildungsplatz - bin kein FiSy.
 
R O G E R schrieb:
Das wurde bei mir damals in der 8ten Klasse im Informatikunterricht schon bei gebracht.
Naja, bei uns an der Oberstufe wird Java eigentlich nur im Leistungskurs gemacht daher (abgesehen von diesem Progamm HaSe was aber eher für die 8te Klasse erstellt wurde 😂), finde ich deine Aussage nicht ganz so passend. Aber ja, man sollte (falls es keine Lehre ist) sich etwas mehr mit den Themengebieten (egal bei welchem Berufszweig) befassen. Sogesehen mach der TE das ja mit seinem Post hier, finde es daher doof ihn mit der Aussage zu fronten. 😁
 
  • Gefällt mir
Reaktionen: Cpt.H4rl0ck
Achso.
Okay dann wünsche ich dir viel Erfolg.
Wenn am die Grundkenntnisse kann, dann kommt man fast in allen Sprachen zurecht.
Niemals aufgeben.
Es gibt gute Youtube Tutorials für sowas. Die Erklären es oft besser als die Lehrer. Zumindest als meine damals. Aber da gab es noch kein Youtube 🙈

Das gute ist, du befasst dich mit dem Zeugs. Und lässt es nicht von anderen vorarbeiten und schreibst es einfach nur dahin.
 
  • Gefällt mir
Reaktionen: proserpinus und Cpt.H4rl0ck
Dann möchte ich dir ans Herz legen, dir einfach mal ein ganz banales Einsteigerbuch zum Programmieren zu besorgen. Unterm Strich ist es bei den Basics vollkommen egal um welche Sprache es sich handelt, weil if, for, while und dergleichen überall gleich funktionieren, aber eben von der Syntax einfach nur etwas anders geschrieben werden. Mal sind es geschweifte Klammern, mal begin und end und manchmal auf if und fi oder sowas. Allen gemein ist, dass du damit die eigentliche Funktionsweise dieser Strukturen lernen kannst. Dann kann dich so eine simple Frage im Bewerbungsgespräch auch nicht mehr schocken.

Es ist übrigens auch gar kein Problem, wenn man bei solchen Gesprächen zB Java-Code vorgesetzt bekommt und dann angibt, dass man ja gar kein Java kann (sofern man es nicht in der Bewerbung zuvor behauptet hat) und die Aufgabe stattdessen zB in C lösen würde - selbst wenn man die Lösung gänzlich ohne Quellcode nur beschreiben würde, wäre das kein Beinbruch.

Wie @error es in #7 schon geschrieben hat, geht es dabei nicht darum ob du schon das Java-Ass bist, weil das durch so einen Test sowieso witzlos wäre. Stattdessen wird dadurch nur rudimentär festgestellt ob du die Fähigkeit hast, grundsätzlich logische Zusammenhänge zu erkennen. Natürlich wäre es aber doof, wenn du in der Bewerbung schreibst "Java: Fortgeschritten" und dann an so einer Aufgabe scheiterst. Das erinnert mich an einen ehemaligen Kollegen, der laut Bewerbung "fortgeschrittene Linuxkenntnisse" hatte und als ich ihn dann an den Server setzte - natürlich terminal-only - fragte er mich entgeistert: "Und wo ist die Maus?"
 
  • Gefällt mir
Reaktionen: proserpinus
R O G E R schrieb:
Achso.
Okay dann wünsche ich dir viel Erfolg.
Wenn am die Grundkenntnisse kann, dann kommt man fast in allen Sprachen zurecht.
Niemals aufgeben.
Es gibt gute Youtube Tutorials für sowas. Die Erklären es oft besser als die Lehrer. Zumindest als meine damals. Aber da gab es noch kein Youtube 🙈

Das gute ist, du befasst dich mit dem Zeugs. Und lässt es nicht von anderen vorarbeiten und schreibst es einfach nur dahin.
Vielen Dank für deinen guten Zuspruch - tut gut so was zu lesen!
 
Das ist einfach ein bisschen eine “Frechfrage” wo man genau drauf achten muss was da verlangt wird, wie überall bei der Programmierung; denn die ist exakt und nicht “könnte in etwa”.
Konkret Java will für Konstrukte Blöcke haben. Blöcke sind begrenzt durch { }. Optional, wenn es nur einen Befehl aka Statement im Block gibt, kann man den delimiter weglassen (für später: sollte man nicht, wie das Beispiel hier schon zeigt).

“Ausgeschrieben” sieht das code fragment so aus:

Java:
if (a1==true)
{
    if (a2==true)
  {
    System.out.println("Test1");
  }
}
else
{
   System.out.println("Test2");
}

Die Einrückung ist uninteressant- das ist Java, nicht Python, dh diese ist counterintuitive. Daher die Blockklammern. Die sind fester Bestandteil der Syntax und damit eindeutig.
So wird auch für den Programmierer selber deutlich, daß hier “wenn A1 und B1, dann Test1; ansonsten Test2” implementiert ist.

Im Zweifel kann man das auch flink selbst nachbauen, in jeder Sprache der C Familie. Nicht in Python oä.
 
  • Gefällt mir
Reaktionen: Raijin
Zurück
Oben