#009: Das Taschenrechner-Projekt (Teil 2) (61:22 Minuten)

#009: Das Taschenrechner-Projekt (Teil 2)
Jetzt testen wir euer Durchhaltevermögen! Auf vielfachen Wunsch in den Kommentaren und per Mail geben wir es euch diesmal so richtig ... statt zwei Folgen draus zu schnippeln gibt es den zweiten Teil des Taschenrechners als 60-minütige "all-in-one"-Doppelfolge - ohne Werbepause!

Nachdem wir im ersten Teil das Projekt vorbereitet haben, bewegen wir uns diesmal ausschließlich im Xcode-Editor. Ihr lernt sehr viele neue Kommandos und Standard-Methoden kennen: typedef, enum, alloc, init, release, dealloc, ... damit nehmen wir unter anderem Bezug auf die Theorie aus Folge #007. Und weil das alles so viel ist, verweisen wir zusätzlich nochmals auf folgende, begleitende Blogartikel:
  • #007: Speicher, Zeiger und Objekte
  • Objekte erstellen
  • Retain, Release und Autorelease
    Das ist nun wirklich sehr viel Input auf einmal. Gebt uns bitte Feedback, wie euch die Doppelfolge gefallen hat, ob ihr zwischendurch doch eingeschlafen seid oder euer Gehirn abgeschaltet hat!
    Wer aber immer noch gelangweilt ist und sich schonmal auf die kommende Folge vorbereiten will, der kann ja unseren Artikel Operatoren, Teil 2 lesen!

    Und hier gibts nun noch das komplette und kommentierte Xcode-Projekt unseres Taschenrechners: Taschenrechner.zip
    Trackbacks:
    http://www.mac-talk.eu/entwickler/71-videotutorials-zu-objective-c.html
    27 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.

    27. Maximilian am 13. Aug 2010, 19:09 Uhr

    Hallo,
    Ihr erklärt das wirklich echt gut :) immer weiter so ;)
    aber letztendlich hab ich doch ein Problem:
    Ich hab euch alles schön brav nachgetippt.. aber mein Taschenrechner rechnet nicht :(
    woran könnte das denn liegen?
    LG Maxi

    26. Matthias am 6. Jul 2010, 21:46 Uhr

    Hallo,
    erstmal ein grosses Lob für den Podcast!
    Zwei Punkte hab ich nicht verstanden:
    Warum muss ich die ganzen Strings, die wir in den diversen Methoden nutzen, ich allocieren und deallocieren, die NSNumber aber schon?
    Und warum kann ich den Wert auf den Zeiger auf z.B. lastResult nicht ändern? OK, das Objekt ansich ist immutable, aber kann ich nicht an der gleichen Stelle im Speicher eine neue NSNumber erzeugen lassen?

    Viele Grüße
    Matthias

    25. Andy am 4. Jul 2010, 18:55 Uhr

    Also zu Allererst: mal wieder ein dickes Lob (von denen ihr schon genug geerntet habt) - aber es ist nunmal unbeschreiblich genial, wie ihr das acht!

    Wobei gerade diese Folge etwas zu "spanisch" vorkam!
    Mittendrin hatte ich dann doch den Faden verloren!
    Werde wohl auch einige Anläufe brauchen!

    Dennoch super Sache!

    24. Werner am 4. May 2010, 19:38 Uhr

    hi!
    toller podcast, aaaber bzgl. MVC: Zumindest in meinen ehemaligen Informatikunterricht lernte ich, dass der Controlle rnur delegieren soll. Heißt, dass er eigentlich(!) nicht den aktuellen Stand des Displays wissen dürfte, sondern jeder Buttonklick eigentlich die Ziffer ans Model liefern müsste, das dort den String verwaltet.
    Daher die Frage: Fasst das jeder anders auf oder irrt mein ehemaliger lieber Lehrer?

    23. d am 14. Apr 2010, 10:15 Uhr

    Great, great podcast! I follow along, can understand German but my writing is a little less, so in English it is (sorry). In your controller code, you say:

    [code]
    - (id)init {
    [super init];
    model = [[CalcModel alloc] init];
    return self;
    }
    [/code]

    But isn't is safer (generally speaking) to write the following for cases like this in which an object inits and 'owns' another object better to write:

    [code]
    - (id)init {
    self = [super init];
    if (self) {
    model = [[CalcModel alloc] init];
    }
    return self;
    }
    [/code]
    Please comment (in German is OK) as I started to question myself, actually ;)

    Thanks!

    22. robert am 28. Feb 2010, 19:19 Uhr

    @Manuel und Ingo

    Ich bin zwar spät dran, aber mit

    hypothenuse = sqrt(kathete1 * kathete1 + kathete2 * kathete2);

    kriegt man ohne selbstgeschriebene Methoden eine double Zahl als Ergebnis...also mit mehr als 2 Nachkommastellen.

    21. Daniela am 12. Feb 2010, 17:09 Uhr

    ich bin total erledigt.
    Ich habe alles nachgetippt und er läuft auch ohne zu mucken. Nicht wie sonst. Hab sogar schon eine Modifikation eingebaut. :D
    Aber selber bauen könnte ich das ohn Hilfe nicht noch mal. (Überforderung, Überforderung, ...)
    Aber ich hoffe noch, dass es sich mit der Zeit einprägt.

    Könnt ihr bitte die Fenster benennen, wenn ihr immer so wild hin und her springt? Weil manchmal hör ich nur zu, wenn ich gleich mit tippe. Da bin ich dann verwirrt, wo ihr gerade seid.

    liebe Grüße

    20. Phipz am 5. Oct 2009, 16:43 Uhr

    WOW!
    Ich hatte mir - wie auch einer meiner Vorredner - letztes Jahr das Buch von Negm-Awad gekauft.
    Sehr viel unnötig kompliziert beschriebene Theorie und wenig Praxisbezug machten das Verstehen des des logischem Lernstoffes mit diesem Buch schwer.

    Nachdem ich mir heute - mit Erkältung im Bett - 10 Ausgaben eures Podcasts angeschaut habe, habe muss ich euch wirklich meinen allergrößten Respekt aussprechen.
    Durch die geniale Konstellation aus einem "Fachbegriffler", der alles korrekt nach Doku erklärt und einem "Mensch" wird komplexer Lernstoff korrekt, aber genauso auch einfach vermittelt.

    Dank eurer super Arbeit und der Art und Weise, wie ihr den Inhalt vermittelt, konnte ich die einzelnen Puzzleteile, die ich bereits im Negm-Awad Buch gelernt hatte, zu einem logischem, vollständigem Bild zusammensetzen.

    Vielen Dank für diesen großartigen Podcast und ich wünsche euch von kollegialer Seite von viel Erfolg!

    19. ingo am 4. Oct 2009, 22:54 Uhr

    @Manuel:
    Also, das ist der Moment, wo Du eine eigene Klassen schreiben musst bzw. solltest.
    Prozessoren haben nicht die gewünschte Funktionalität oder Genauigkeit.
    Du brauchst einmal eine Klasse, die beliebig lange Zahlen speichern kann, sowie eine Klasse, die nach den Regeln der Mathematik Wurzeln berechnet. Beides musst Du komplett selbst realisieren, da hierfür sämtliche Standardtypen und -mathefunktionen nicht ausreichen.
    Schau Dir also an, wie man mathematisch Wurzeln zieht (z.B. Wikipedia). Am besten Ziffer für Ziffer, und dann gehts los! ;)

    18. Manuel am 4. Oct 2009, 17:39 Uhr

    Ich programmiere mir gerade einen Wurzelrechner. Bei Wurzel von 2 gibt er mir jedoch nur ein paar Kommastellen aus, aber ich will Kommastellen bis sagen wir mal zur 10000. Stelle hinter dem Komma.

    Manuel

    17. ingo am 4. Oct 2009, 12:19 Uhr

    @Manuel:
    Was meinst Du mit länger? double-Zahlen sind doch schon irrsinnig genau?

    16. Manuel am 2. Oct 2009, 22:44 Uhr

    Okay, ich hab die Lösung gefunden, das d im unteren Code durch ein f ersetzen, und es läuft.

    Aber jetzt hab ich ein anderes Problem: Wie kann ich eine Zahl berechnen, die länger als eine double ist?

    Manuel

    15. Manuel am 2. Oct 2009, 21:07 Uhr

    Wir haben ja mal die stringWithFormat Methode benutzt, ich will diese mit einer double Zahl nutzen, aber wenn ich

    resultString = [NSString stringWithFormat:@"%d", result];

    schreibe, wird mir Null, und nicht mein Testwert 1 ausgegeben.

    Manuel

    14. peter am 27. Sep 2009, 17:56 Uhr

    Hallo Florian,

    Herzlich Willkommen bei 0x02100! Auswendig können auch wir nur einen Teil. Die Documentation wird Dein größter Freund. Wenn Du mit der gut umgehen kannst, dann kann Dir eigentlich auch in Zukunft nichts passieren. Angenehm ist, dass viele Methoden selbstsprechende Namen haben. Wenn Du Dir beispielsweise die Zeile
    NSString *newString = [oldString substringFromIndex:1];
    näher ansiehst, dann kannst Du Dir auch ohne Blick in die Doku vorstellen, was sie bewirkt.

    Und wenn Du einer Folge nicht folgen konntest (war das jetzt ein Kalauer?) dann schau sie einfach nochmals an ... irgendwann machts klick.

    Peter

    13. Florian am 27. Sep 2009, 17:44 Uhr

    Hallöchen!
    Also erstmal großen Respekt, dass ihr Xcode so gut erklären könnt.
    Ich bin gerade dabei eure Videocasts durchzuarbeiten, aber ich frage mich, ob ich jetzt schon alle diese Befehle auswendig können muss, bzw. ob man jetzt schon Alles verstehen muss und mit Alles meine ich auch wirklich Alles.

    Gruß Flo.

    12. Mathias (Speedy) am 15. Sep 2009, 22:38 Uhr

    Habe mir gerade die Folge reingezogen und merke erst jetzt wie verwöhnt ich von Java werde (kaum ein Gedanke an Speicherverwaltung zu verschwenden).
    Schön dass man eine Woche Zeit hat, sich den "Stoff" reinzuziehen. Da habt ihr schön was vorgelegt mit dieser Doppelfolge ;)

    Also weiter so, ich werde euern Podcast & Blog natürlich weiterhin interessiert besuchen.

    Gruß aus Österreich,
    Speedy

    11. Christian am 15. Sep 2009, 16:40 Uhr

    @ Mario:
    Ja, sehr richtig :-) Mitte Kapitel 3. Hatte zwar bereits durch den Info-Unterricht in der Schule vor 3 Jahren viel mit Java gemacht und mir in meiner Freizeit selbst PHP mit mySQL beigebracht, aber an dem Object-Orientiertem Programmieren bin ich erstmal gescheitert. Das Buch setzt einfach zu viel Vorwissen vorraus und erklärt auch viele Sachverhalte einfach nicht genau genug bzw nicht Einsteiger-freundlich genug.
    Hab jetzt mal wieder reingeguckt ins Buch nachdem ich das mit dem Taschenrechner alles hinbekomemn habe und siehe da: man liest es ganz anders, weil man stellenweise dann denkt "achso war das gemeint" ...

    Aber ich freu mich jetzt auf die weiteren Folgen hier mit Ingo und Peter, denn da bin ich guter Dinge dass wir alle hier demnächst auch mal kleinere Projekte verwirklichen können. Vielleicht nichts innovatives, aber darum gehts ja auch erstmal garnet.
    ---------

    @ Ingo und Peter:
    Wann kommt das Forum? Wäre denke ich wichtig es frühstmöglich an den Start zu bringen, um Fragen der User für die Öffentlichkeit gut sichtbar zu beantworten. Ist sicherlich besser als über die Kommentare, einfach weil es schwer wiederzufinden ist.

    10. dado am 15. Sep 2009, 16:31 Uhr

    Hallo Peter und Ingo,

    vielen Dank für euren tollen Podcast!
    Ich bin Informatik-Student und muss mich in die xcode-Programmierung insbesondere fürs iPhone einarbeiten. Auch für jemanden, der schon weiß wie die Speicherverwaltung funktioniert und der alle Fachbegriffe kennt und versteht ist die Programmierung mit xcode in objectiv-C und dem IB doch speziell. Ohne euren klasse Podcast würde mir der Einstieg wohl sicher nicht so leicht fallen -> Herzlichen Dank!

    Macht weiter so! :)
    dado

    9. Mario am 15. Sep 2009, 13:57 Uhr

    Hallo Ingo, hallo Peter,
    ich habe am Montag auch sofort eure neue Folge angesehen und war sehr begeistert. Da ich nicht alles auf anhieb verstanden habe werde ich sie mir heute noch einmal ansehen, mal sehen ob dann der Groschen fällt. ;-)
    Mal wieder mein Kompliment!
    Ich finde es auch gut das ihr die Folge nicht noch einmal gesplittet und euch für die komplette Veröffentlichung entschieden habt.

    Zu eurer Buchempfehlung:
    Ich habe mir jetzt das von euch empfohlene Buch gekauft, nachdem ich bei Amazon kurz reingelesen habe. Ich komme mit dem Buch besser zurecht als mit dem von Negm-Awad, finde allerdings ihr solltet der Fairness halber erwähnen das dieses Buch NICHT für absolute Anfänger geeignet ist. Es wird vom Autor vorausgesetzt das man schon Erfahrungen mit C oder Java Programmierung hat, leider konnte ich das durch die "Blick ins Buch"- Funktion von Amazon nicht erkennen. Ich habe jetzt durch euch, das Buch „BecomeAnXcoder und durch das Buch von Negm-Awad, ein Glück, schon ein wenig Vorwissen und konnte so die ersten Kapitel verstehen, sonst wäre ich bei dem Buch komplett aufgeschmissen gewesen. Ich muss aber dazu sagen das es trotzdem nicht reicht.
    Außerdem wird in dem Buch erwähnt das wenn man noch keine Kenntnisse im Bereich der Programmierung hat ein Dokument von Apple mit dem Namen "The Objective- C Language" lesen soll. Hier ist auch ein Link im Buch angegeben, der allerdings nicht mehr funktioniert. Wenn ich das richtig gesehen habe heißt das Dokument jetzt "The Objective-C 2.0 Programming Language" und ist unter folgender Adresse zu finden: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf
    Gleich auf der ersten Seite dieses Dokuments wird man allerdings wieder darauf hingewiesen, dass wenn man keine Erfahrung mit Programmieren hat, noch folgendes Dokument gelesen werden soll: "Object- Oriented Programming with Objective- C" hier zu finden: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/OOP_ObjC/OOP_ObjC.pdf
    Vielleicht könnt ihr diese Links auch auf eurer Seite mit angeben, damit nicht jeder suchen muss.
    Ich werde mich jetzt an diese Dokumente setzen, da ich denke das ein weiterlesen in dem Buch sonst keinen Sinn macht. Ich hoffe das die Dokumente einigermaßen verständlich sind. Beide Dokumente sind ja nochmal ca. 170 DIN A4 Seiten in Englisch extra. :-(

    Danke euch für eure Mühen und eure super Folgen, macht weiter so!
    Ich hoffe es wird noch 100te von Folgen geben. :-)

    @Christian
    Lass mich raten ab Mitte Kapitel 3? Hab genau das gleiche Problem gehabt, am Anfang ein super Buch und ab Mitte Kapitel 3 nicht mehr zu verstehen für mich als blutiger Programmieranfänger.


    Schöne Grüße aus Bielefeld
    Mario!


    8. ingo am 15. Sep 2009, 10:57 Uhr

    @Christian:
    Super, dass Du das alleine umgesetzt hast! Richtig cool! Peter und ich haben uns sehr über Deinen Kommentar gefreut, sowohl für Dich, als auch für uns! ;)
    Weiter so! ...und natürlich vielen, vielen Dank fürs Lob!

    7. Christian am 14. Sep 2009, 22:56 Uhr

    Ich muss euch jetzt wirklich auch mal ein fettes Lob aussprechen. Hab mir letztes Jahr das Buch von Negm-Awad gekauft und muss sagen, damit kam ich auf keinen grünen Zweig, hab dann per Zufall euren Blog gefunden und hab gedacht: WOW, das musste mal alles ansehen, was die Jungs da schon produziert haben.
    Hab mir alle 9 Folgen jetzt bereits angeschaut und muss sagen: ich hab mehr verstanden in der kurzen Zeit, als in den X Stunden, die ich mit dem Buch verbracht hab. Danke euch zweien. Macht weiter so!

    Zur Folge 9: Klar, es ist wirklich etwas theoretisch durch die ganzen neuen Befehle und arbeitsweisen, gerade was Speicherverwaltung angeht, aber es ist nunmal ein wirklich wichtiges Thema ... aber muss sagen: wenn mans einmal verstanden hat, dann ist es net mehr schwer.

    Hab das Problem mit dem Komma ebenfalls gelöst mit der beschriebenen "rangeOfString"-Methode. Über google findet man da recht schnell das was man braucht.
    Das ganze hat mich so in seinen Bann gezogen, da hab ich direkt mal noch nen Speicher hinzuprogrammiert, in dem man eine Zahl ablegen kann und sie in der Rechnung später wieder einfügen kann. Zwar bisher nur eine Zahl, aber immerhin konnte ich das selbst realisieren, was ich gerne wollte :-) und dadurch lernt man dann...

    Nochmal: Ganz großes Kino von euch zweien! Weiter so...

    6. Alex am 14. Sep 2009, 11:21 Uhr

    Jungs, wieder eine Hammerfolge. Vielen Dank. Nach der "langen" Wartezeit hab ich die Folge gestern morgen endlich hören & sehen können. Zuerst 1x nur sehen ohne Mac in der Nähe (aufm iPhone ;) ) und dann noch Mal zu Haus ein zweites Mal, diesmal mit Mac und gleich mit programmiert. Jetzt freu ich mich auf die nächste Folge :)

    Weiter so, wie meine Vorredner schon sagten: Ihr vermittelt das auf eine Art, wie es kein Buch schafft. Vielen Dank.

    Gruß

    Alex

    5. peter am 14. Sep 2009, 00:06 Uhr

    @Macavity:
    Ein Buch kann niemals die direkte Erklärung ersetzen, soweit geb ich Dir gern Recht. Das PublicDomain Buch "Become An Xcoder" (vgl. Linkliste unter Tipps) erscheint mir ganz tauglich, nur steht man da quasi vor dem selben Dilemma: Wenn man es nicht auf Anhieb versteht, hat man niemanden zum Fragen ;)
    Die alternativen Bücher zum Thema können und wollen wir aber ruhigen Gewissens nicht empfehlen.

    @Yasin & Basti & Andreas:
    Wir haben uns schon schwer mit der Entscheidung zugunsten einer Doppelfolge getan, aber das Thema nicht am Stück zu behandeln, wäre fahrlässig gewesen.

    Peter

    4. Andreas am 13. Sep 2009, 23:53 Uhr

    Sehr gut gemacht!!! Das war wirklich nicht ohne, aber genau das, was ich gebraucht habe. Lange habe ich auf eine solch gute Einführung in Cocoa gewartet. Ich bin sehr froh, dass ihr einem besonders das Werkzeug zum selbstständigen arbeiten in die Hand gebt. Das Buch habe ich mir vor ein paar Monaten auch gekauft. Leider bin ich damit nicht annähernd soweit gekommen wir mit eurer Einführung. Bitte macht unbedingt weiter so !

    Für solch gute Arbeit spende ich gern mal !

    Vielen Dank !
    Andreas

    3. Basti am 13. Sep 2009, 23:46 Uhr

    Wow, das war jetzt wirklich viel neues! Aber ich werde die Folge einfach nochmals anschauen und mir den Quelltext ausdrucken. Dann sollte ich keine Probleme haben das innerhalb einer Woche ganz verstanden zu haben!
    Macht weiter so! Freu mich schon richtig auf die nächste Folge! :D

    2. Yasin am 13. Sep 2009, 17:43 Uhr

    Das gibts doch nicht! Hab heute noch soo überlegt :
    eigentlich kann man den Taschenrechner ja in etwas schnellerem Format machen denn wir haben ja schon + - * / bisschen gemacht. MAn sollte dabei Zeit sparen.Und jetzt sehe ich #009: Das Taschenrechner-Projekt (Teil 2) (61:21 Minuten)
    Also ehrlich eine Stunde!!! Respekt =)

    1. Macavity am 13. Sep 2009, 10:41 Uhr

    Danke Jungs, das ist besser als viele Bücher die einen Einstieg in Xcode versuchen zu vermitteln. Weiter so! Nur Eure brühmte Buchempfehlung teile ich nicht wirklich... mein Gehirn scheint anders zu funktionieren. Eure Vorgehensweise ist für mich klar und verständlich, die von Aaron Hillegrass erinnert irgendwie an Chaos. Aber als interessantes Nachschlagewerk ist es in Ordnung.