Logo

Objective-C, Xcode und Cocoa Tutorial


 

 

EIN TUTORIAL ZU OBJECTIVE-C, XCODE UND COCOA

 

Kapitel 4 - Fortsetzung

DA WÄRE NOCH DIE SACHE MIT DEM KÖNIG UND DEM REIS
Kommen wir zum sprichwörtlich krönenden Abschluss der for Schleifen: der Berechnung der Reiskörner für unseren Schachspiel-Erfinder. Für das Verständnis von for Schleifen ist dieser Abschnitt nicht wirklich nötig, weshalb Sie ja selber versuchen können dieses Problem zu lösen. Den Beginn will ich machen. Die Formel zur Berechnung für eine Verdoppelung ist:
 
1 + 2 + 4 + 8 + ... = 2^0 + 2^1 + 2^2 + 2^3 + ...... + 2^63 

Derartige Exponenten kann man in Objective-C wie folgt berechnen.

Programm 4.5
-----------------------------------------------------------------
#import <stdio.h>
#import <math.h>

int main(int argc, char *argv[])
{
    int x;
int y;

x = 3;
y = 2;

printf ("\nDie Summe von %i hoch %i ist %d\n", x, y, ( int ) pow ( x, y ));

return 0;
}
-----------------------------------------------------------------

Programm 4.5 output
-----------------------------------------------------------------
Die Summe von 3 hoch 2 ist 9
-----------------------------------------------------------------

 



Um den pow Befehl ausführen zu können, müssen wir eine neue Header Datei importieren:
#import <math.h>

Diese Header Datei kennt den pow Befehl. Dann noch die folgende Zeile:

printf ("\nDie Summe von %i hoch %i ist %d\n", x, y, ( int ) pow ( x, y ));

Aus dem printf Befehl geht hervor, dass es sich bei pow um einen double handeln muss (achten Sie auf das %d in der printf Anweisung). Wir wollen aber eine Ganzzahl, deshalb wandeln wir durch (int) pow in eine Ganzzahl um. Im Anschluss an pow muss immer in Klammer die Zahl und der Exponent angeführt werden. Mit diesem Wissen gestärkt sind Sie theoretisch in der Lage mit Hilfe einer for Schleife das Schachproblem zu lösen. Ich lasse Sie hier also für einen Moment alleine knobeln, nur Mut. Aber keine Angst, die Lösung mit einem Programm, dass die ersten 10 Felder berechnet - wir wollen den Computer ja nicht gleich überfordern - ist unten angezeigt. Wenn Sie größere Zahlen bearbeiten wollen, dann müssen Sie auf long bzw long long int umsteigen. Aber vorerst können Sie selbst versuchen dieses Programmier Problem zu lösen, so don´t cheat now!

 

Programm 4.5: Schachproblem für die ersten 10 Felder
-----------------------------------------------------------------------------------------------------------------
#include <stdio.h>      
#include <math.h>       

int main(int argc, char *argv[])
{
    printf ("\nFeld Reiskörner Summe der Reiskörner\n");
printf ("-----------------------------------------------\n");

int exponent;
int reiskornzahl;
int feld;

reiskornzahl = 0;
exponent = 0;
feld = 0;

    for ( exponent = 0; exponent <= 9; exponent = exponent +1 )
    {
         feld =  feld+1;
 reiskornzahl = reiskornzahl + (int) pow (2,exponent);
 printf("%i %d %i\n",feld, ( int ) pow ( 2, exponent ), reiskornzahl);   
    }

    return 0;
}
-----------------------------------------------------------------------------------------------------------------

 

Programm 4.5 output
-----------------------------------------------------------------------------------------------------------------

Feld                                       Reiskörner                     Summe der Reiskörner
-----------------------------------------------------------------------------------------------------------------

1                                             1                                              1
2                                              2                                              3
3                                              4                                              7
4                                              8                                             15
5                                              16                                           31
6                                              32                                            63
7                                              64                                            127
8                                              128                                          255
9                                             256                                           511
10                                           512                                           1023

-----------------------------------------------------------------------------------------------------------------

Wollen sie mehr Felder berechnen, dann müssen sie die Schleife verlängern und von int auf long long int umsteigen um derart große Zahlen zu berechnen. Selbst dann wird Ihr PC wahrscheinlich an die Grenzen kommen.


weiter ---- Objective-C Index ---- Startseite----zurück


Das Inhaltsverzeichnis

EINSTIEG
KAPITEL 1: SCHRITT FÜR SCHRITT ZUM ERSTEN PROGRAMM
KAPITEL 2: OBJEKTE, KLASSEN, INSTANZEN UND METHODEN
KAPITEL 3: DIE VERSCHIEDENEN DATENTYPEN
KAPITEL 4: DIE PROGRAMMSCHLEIFEN
KAPITEL 5: ENTSCHEIDE DICH, ENTWEDER ODER....
KAPITEL 6: UND NOCHMALS KLASSEN
KAPITEL 7: VERERBUNG
KAPITEL 8: POLYMORPHISMUS, DYNASCHISCHE TYPISIERUNG UND DYNAMISCHES BINDEN
KAPITEL 9: NOCH MEHR DATENTYPEN UND VARIABLEN
KAPITEL 10: CATEGORIES, POSING AND PROTOCOL
KAPITEL 11: DER PRÄPROZESSOR

 

 

 

Links