#005: Kontrollstrukturen (28:09 Minuten)

#005: Kontrollstrukturen
Das erste Jubiläum - Folge 5! Wenn eine so schöne unrunde Zahl erreicht ist, muss man entscheiden wie es weiter gehen soll. Und so eine Entscheidung lässt sich auch programmatisch treffen - mit einer Kontrollstruktur: Wenn das und das Ereignis eintrifft, tu das und das.
Und darum gehts auch in dieser Ausgabe. Die simpelste aller Kontrollstrukturen ist das if, also die Wenn-Bedingung. Da sich diese mit unserem Hello World schlecht erklären ließ, erstellen wir ein neues Projekt und sorgen so auch für Wiederholung bekannten Wissens - im Schnelldurchgang damit es euch nicht langweilig wird ;).
Trackbacks:
http://www.mac-talk.eu/entwickler/70-videotutorials-zu-objective-c.html
http://www.mac-talk.eu/entwickler/71-videotutorials-zu-objective-c.html
23 Kommentare | Permalink | Trackback-Info | Film in HD ansehen!

Anzeige / Partnerlink

Kommentar hinzufügen

 
Name:
Email (optional):
Text:
Sicherheitscode:
Bitte geben Sie hier die unten abgebildete 5-stellige Zahl aus dem Bild ein!
Um die 1 besser von der 7 unterscheiden zu können, hat die 1 unten immer einen waagerechten Strich.

23. Peter Balati am 21. Mar 2010, 21:00 Uhr

Hallo Ihr Alle!

NSString Ich schreibe aus Ungarn //hab viele Feler im Gramatik

Ich bin begaister won diesen Podcasts einfach SUPER!
Sogar mein Freundin schaut sie mir mit an!:)
So.
Als ich die 11 / 0 gemacht habe kam beim mit als Lösung aus wen ich mich gut erinere "inf" raus.Stat int habe ich float benuzt(gleitpuntzahlen)
;) bin immer ein bischen ein Schrit vorraus:)
Das ist die beste PodcastShow die ich kenne :)
Wan kommt Apple Script? ist naemlich auch sehr interesant!


22. Cr3dos am 14. Oct 2009, 23:45 Uhr

Ich bin noch nicht so erfahren mit Xcode und bin erst bei dieser Folge.

Jetzt habe ich 2 Fragen dazu. Ist es möglich, dass man anstatt 0 einfach error ausgibt?

Und kann man auch mit Kommazahlen arbeiten und wie kann ich diese ausgeben. Sicher nicht mit intValue gibt es floatValue??

Vielen Dank für das beantworten der Fragen.

P.S. Könnt ihr das Buch empfehlen:

Einstieg in Objective-C 2.0 und Cocoa
inkl. iPhone-Programmierung mit dem SDK 3.0
(Galileo Verlag)

21. Felix am 15. Sep 2009, 12:29 Uhr

Hi ihr Zwei!

Erstmal danke für euren Podcast der wirklich wunderbar verständlich gehalten ist!

Eine kleine Anmerkung zu "switch" habe ich jedoch. Als ehemaliger C/C++ Programmierer möchte ich darauf hinweissen, dass auch nach Buchstaben "geswitcht" werden kann. Wenn nämlich der Parameter für "switch" ein "char" ist.

Viel Spass beim weitermachen und nochmals danke für den Podcast!!

20. Yasin am 11. Sep 2009, 15:16 Uhr

Tut mir Leid wegen meinen Doppe-Posts aber eine Edit funktion wäre wirklich super. Naja zu meiner anderen Frage dann. Ich habe versucht das selbe auch für das iPhone zu schreiben. Wenn ich allerdings beim Interface Builder Etwas zum "iphone" ziehe kommt es automatisch in die Mitte. Es lässt sich nicht bewegen. Wenn ich dann ein anderes Objekt dahin ziehe verschwindet das alte.
Woran könnte es liegen ?

19. peter am 11. Sep 2009, 15:16 Uhr

@Yasin:
Wir hoffen das auch von uns ;) Aber momentan haben wir wahnsinnig viel Spaß an der Sache und Lust auf neue Folgen. Kommentare und Mails motivieren!

Peter

18. Yasin am 11. Sep 2009, 15:13 Uhr

So schnell schon zurückgeschrieben :) Das Ist einfach Klasse! Ich könnt euch ja nur noch loben hier! Wirklich super. Ich hoffe, dass ihr nicht auch dann nach ner weile die Lust verliert und dann auf einmal aufhört.

17. ingo am 11. Sep 2009, 14:50 Uhr

@Yasin:
Kein Problem. Bitte schön! :-)
Liebe Grüße, Ingo
(der gerade die ausführliche Antwort löscht)

16. Yasin am 11. Sep 2009, 14:47 Uhr

Ohh tut mir Leid. Seh mir jetz die andere Folge an. Da wirds dann doch einfacher gemacht :D

15. Yasin am 11. Sep 2009, 14:37 Uhr

Ich weis ich stelle hier eine dumme Frage, aber dennoch hoffe ich dass sei helfen können.
Ich habe ihre Tutorials erst jetzt gefunden und bin wirklich begeistert. Die Stimmung ist auch nicht wie andere Videos so langweilig. Es macht wirklich Spaß zuzuhören. Da bei der Division mit "0" ein Fehler kommt habe ich versucht es zu umgehen. Aber leider hat es nicht ganz geklappt. Wie kann ich das verbessern:
if ([buttonTitle isEqualToString:@"/"]) {
if (v2 == 0){
[result setStringValue:@"Lösungsmenge Leer!" ];
}
if (v2 != 0){
r = v1 / v2;
}
}
[result setIntValue:r];

Eine Lösung wäre die [result setIntValue:r]; hinter jeder if zeile zu stecken was zwar möglich aber bei längeren codes unübersichtlich machen würde. Könnte man es einfacher machen?

14. Michael am 8. Sep 2009, 18:18 Uhr

Hat sich erledigt.
Hab den Fehler gefunden und korregiert.
Ich hatte im GUI ein großes "X" benutzt um im Code dann ein kleines "x" eingefügt. Das geht wohl nicht. Erst als ich aus dem kleinen "x" ein großes gemacht habe, rechnete er auch richtig das "ein mal eins".

Was die Groß- und Kleinschreibung ausmacht, interessant!

13. Michael am 8. Sep 2009, 17:31 Uhr

Hi ihr zwei,

das Ihr Eure Sache super macht muss ich ja nicht nochmal erwähnen. Das sollte ja inzwischen klar sein :) Weiter so...

Nun aber zum Problem:
Ich bin ein totaler Anfänger was das Programmieren angeht, bis auf das "zusammenklicken" von GUI Sachen. Das kenne ich schon von Filemaker, was ja so ähnlich ist mit dem "Baukastenprinzip". Aber was so "int", "strng" u.s.w. angeht ist alles Neuland.
Bin geade bei der Folge #005 angekommen und habe nun ein Problem mit dem "X". Immer wenn ich den Button "X" drücke, spuckt der Calc immer dieser Zahl aus: -1073746056
Egal was ich als Zahlen eingebe. Ist immer das selbe Ergebnis.
Könnt Ihr mir sagen was ich falsch gemacht habe?

Gruß
Michael

P.S.: Würd Euch ja gern ein Screenshot anhängen, aber ich kann hier leider keine Datei einfügen, bzw. Bilder verlinken. :(

12. Carsten am 6. Sep 2009, 14:27 Uhr

OK, super. Dann Vielen Dank.

11. peter am 6. Sep 2009, 14:17 Uhr

Letzte Fragen wollen wir nicht ;)

Du kannst beide Versionen nehmen, sie sind identisch. Auch
NSString * result;
wird funktionieren.

Wenn ich mich festlegen müsste, würde ich NSString *result; schreiben, da dies verdeutlicht, dass result ein Zeiger ist.

Peter

10. Carsten am 6. Sep 2009, 14:06 Uhr

Hallo Peter.

Ahh OK. Ich glaub ich hab's verstanden. Vielen Dank!
Trotzdem noch eine kleine Frage.

Was ist der Unterschied zwischen folgenden 2 Zeilen, insofern es denn einen gibt:

NSString* result;
NSString *result;

Noch einmal vielen Dank. Das war dann auch wirklich die letzte Frage! :-)

9. peter am 6. Sep 2009, 13:07 Uhr

Hallo Carsten,

nun, der Grund ist recht simpel. Während int, float und double (und noch ein paar weitere) einfache Datentypen sind, ist ein NSString ein Objekt; das NS vor dem String deutet es an. Ein NSString ist nicht einfach nur ein Text an einer Speicheradresse, auch alle Eigenschaften wie Zeichenformat, Stringlänge usw. sind in diesem Objekt abgelegt und stehen via Methodenaufruf direkt zur Verfügung.

In Folge #007 gibts eine Theoriestunde, die auf die Unterschiede etwas umfassender eingeht (Zusammenfassung etwa bei Minute 17). In den 'Grundlagen' kannst Du auch mal unter 'Datentypen' und 'Objekte erstellen' schauen.

Kurz zusammengefasst:
int ist eine Variable
NSString ist ein Objekt

Peter

8. Carsten am 6. Sep 2009, 12:42 Uhr

Hallo Ihr Zwei!

Also erstmal ein ganz großes Lob an Euren Podcast. Wirklich hervorragend. Ich hab aber eine kleine Frage:
Wieso deklariert Ihr denn die NSString Variablen immer als NSString* (also als Pointer) und (zumindest in diesem Beispiel) die ints nicht? Hat das einen bestimmten Grund?

Eine Variable als Pointer zu deklarieren hat doch den Sinn, dass der Compiler(oder doch das Programm??) weiß, dass eine Variable zwar kommt, es aber noch keinen Speicher dafür reserviert und das Programm somit weniger (RAM)Speicher braucht, oder?

7. Norman am 22. Aug 2009, 19:08 Uhr

Hallo Ingo,

danke für die schnelle Antwort und Sorry für die schreckliche Grammatik von meiner Seite. Deine Erläuterung verdeutlicht mir den Ansatz etwas besser und ich kann jetzt dieses Vorgehen besser einordnen. Das Beispiel mit den Tasten macht für mich auch Sinn.

Gruß Norman

6. silfire am 22. Aug 2009, 15:58 Uhr

Hi Norman!

Besten Dank fürs Lob! Keine Sorge, wir hören noch nicht auf...im Gegenteil. In den kommenden Folgen (so ab Folge 7 oder 8) wirds erst richtig spannend. Weil nach den ganzen Einführungen und "Learning by doing" gehts so langsam ans Eingemachte. ;)

Bei der Sache mit Actions ist es normalerweise tatsächlich so, dass man pro Action eine Methode macht. Wir wollten in diesem Fall hauptsächlich mal auf den Einsatz von Kontrollstrukturen eingehen.
Des weiteren gibt es einige wenige Fälle, wo es durchaus Sinn macht, dass man nur eine Methode für mehrere Actions schreibt. Nimm zum Beispiel mal einen Taschenrechner mit einzelnen Tasten für die Ziffern. Man könnte die NSButton-Property "Tag" dazu verwenden, um die gedrückte Ziffer zu bekommen.

Liebe Grüße, Ingo

5. Norman Sutorius am 22. Aug 2009, 14:58 Uhr

Hallo Jungs,

ich bin heute auf euren Podcast gestoßen und habe mir gleich alle 5 Folgen auf einmal reingezogen. Wie schon erwähnt bitte hört nicht auf. Ich bin selber gerade dabei ein erste Anwendung für den Mac zu entwickeln und das passt eurer Podcast super dazu. Noch mal vielen Dank echt super eure Erklärung. Zur Folge 5 habe ich gleich noch eine Frage hat es noch weiter Vorteile nur eine Action zu verwenden. Ich habe es mal so gelernt pro Action (in Java z.B. Button Click) eine eigene Methode zu erstellen. Wenn es nur eine Designsache ist dann vergesst meine Frage.

Gruß Norman

4. Dirk am 18. Aug 2009, 13:30 Uhr

Hallo Peter,

ich hoffe, es war ok, dass ich hier ganz frech eine Aufgabe reingestellt habe?!

Nachbauen kann ich leider nix - bin die Woche über ohne Mac unterwegs und am Wochenende bleibt keine Zeit.
Aber noch kann ich es nachvollziehen, was ihr beschreibt.

Gruß
Dirk

3. peter am 17. Aug 2009, 22:43 Uhr

Hallo Dirk,

vielen Dank für die Blumen und das fleißige Zuschauen & Nachbauen.

Ingo hat im Wahn die Dauer der Folge zur Abwechslung mal unter 30 Minuten zu drücken, den Teil raus geschnippelt. Er schwört, es sei ein Versehen gewesen und würde nie wieder vorkommen. Aber Deine Idee, die Division durch 0 abzufangen, wäre auch unsere Aufgabe gewesen! Und das schwöre ich.
Und: mir kann man glauben.

Peter

2. Dirk am 17. Aug 2009, 21:11 Uhr

Hallo Peter, hallo Ingo,

auch das wieder ein kurzweilige Sendung.
An die Syntax mass man sich als ABAP-Entwickler echt gewöhnen, aber das wird schon.
Schön sind die Wiederholungen im Schnelldurchlauf. Da wird das Wissen nochmal eben aufgefrischt.

Hausaufgabe gab es keine?
Dann an alle Kommentarleser: Verhindert, dass das Programm bei "division durch 0" abstürzt.

...ich bleib am Ball - versprochen ;-)

Gruß
Dirk

1. FrankH am 16. Aug 2009, 17:28 Uhr

Super Jungs,
macht bloß weiter so.
Mir ist aufgefallen das bei Euerm RSS Feed den ich in meinem iPhone abonniert habe, der neueste Beitrag immer am Ende steht. Bei allen anderen Beiträgen steht der neueste Beitrag immer oben, nicht schlimm ist aber ungewöhnlich.
Gruss
Frank