Obj-C-1

ob C Programm.

ob C Programm.


Set of flashcards Details

Flashcards 34
Language Deutsch
Category Computer Science
Level Other
Created / Updated 24.06.2013 / 02.11.2019
Weblink
https://card2brain.ch/box/objc1
Embed
<iframe src="https://card2brain.ch/box/objc1/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Kompilierte Datei "1-1-HWelt" auf der Konsole ausführen?

./1-1-HWelt

if else

 

if (bedingung) { 

  // diesen code ausführen, wenn bedingung true

} else  {

// diesen code ausführen, wenn bedingung false
}

 

Verwendung boolscher Variablen.

 

&&  Logisches UND

||  Logisches ODER

ZB: auslagern komplexer bed. in einen boolschen ausdruck:

BOOL isNotOk = !((weight >0.0) && (weight < 4000.0));

if (isNotOK) {
printf(„Der Wert liegt ausserhalb der Grenzen!\n“);
}

WICHTIG:  #include <objc/objc.h>  

 

else if

bei mehr als 2 Möglichkeiten:

 

if (bed1) {

   //anw1; }

   else if (bed2) {

   // anw2; }

   else if (bed3) {

   // anw3; }

 else { // letzte möglichkeit; }

ACHTUNG: Das ganze Konstrukt wird verlassen, sobald eine Bedingung wahr ist!  Häufiger Programmierfehler, wenn es mehrere true -Möglichkeiten in so einem if-Konstrukt gibt!

 

ternärer Operator:

 

ist eine sehr elegante Möglichkeit, einer Variablen aufgrund von zwei Möglichkeiten einen Wert zuzuweisen:

<typ>  varName = (bed) ? <wert1> : <wert2>;

Beispiele:
int zaehler = (i > j) ? 10 : 5;  // ist i>j  -> zaehler=10  andernfalls zaehler =5

 

Rekursion (Beispiel coden:  Ausgabe: "Fakultaet von n ist: n!"   n wird im Programm definiert!Keine Eingabe.

 

int fakultaet(int n)

{

    if (n>0)

    {

     return n*fakultaet(n-1); //hier ruft sich die Funktion selbst auf!

    }

    else

    {

        return 1;

    }

}

 

int main(int argc, const char * argv[])

{

 

    // insert code here...

    int zahl = 7;

    

    printf("Fakultaet von %d (%d!)ist: %d",zahl,zahl, fakultaet(zahl));

    return 0;

}

 

Globale Variablen: Definition, Geltungsbereich

 

-) werden nach den #inlude Anweisungen deklariert. (ZB:  float lastTemperature; )
-) gelten in allen Dateien und Funktionen einer Anwendung. (Ja es gibt Apps, die aus mehreren Dateien (Bibliotheken) bestehen)

 

Statische Variablen: Definition u Geltungsbereich

 

werden wie globale V nach #include  deklariert, nur mit dem Zusatz static (ZB:  static float lastTemperature; )
-) gelten in allen Funktionen der einen Datei in der sie deklariert sind! Nicht in allen anderen.

Token für Formatstrings:

a) oktale Ausgabe
b) hexadezimale

a) %o
b) %x

Tokens für Formatstrings:
a) float
b) double
c) Zahl im E-Format
d) float auf 2 Dezimalstellen

a) %f

b) %f

c) %e

d) %.2f

Tokens für Formatstrings:

a) long in hex
b) long in Octal
c) integer

a) %lx
b) %lo
c) %d

Tokens in Formatstrings:
a) String
b) Pointer

a) %s

b) %p

while -Schleife

 

int i=0;  //Initialisierung
while (i<12)  {        // Bed. prüfen

printf(„%d. Adi is cool\n“, i);
i++;         // Bed. neu initialisieren

     }

 

While-Schleifen lassen sich immer einfacher und kompakter in der FOR-Schleife abbilden:

 

FOR Schleife

 

for ( int i=0; i <12; i++)  {  //Initialisierung; Bed. prüfen; Bed. neu initialisieren

     

printf(„%d. Adi is cool\n“, i);

Wie kann man Schleifen vorzeitig beenden?

 

Mit break lassen sich Schleifen vorzeitig beenden.

if (i==12)  {
      break;

   }

 

Wie kann man eine Schleife vorzeitig vom Kopf starten lassen?

 

if (i<=12)  {
      continue;

   }

 

Wie deklariert man einen Zeiger auf eine float x Variable?

float x;


float  *addr_f = &x;

Was bewirkt der folgende Befehl:

*addr_i = 89;

 

*addr_i = 89;   //speichert den Wert 89 auf die angegebene Adresse. Da sich die Variable i darauf bezieht, enthält nun i den Wert 89!   Dies nennt man auch Dereferenzierung des Zeigers.

 

Referenzübergabe: Bsp. für eine Funktionsdeklaration, die 2 Werte übergibt, und 2 zurück erhält!

Aufruf der Funktion!

double x=0.5; double y=4.0;
double r, phi;
 

void xy_To_rPhi(float x, float y, double *r_Ptr, double *phi_Ptr)  { ..}

Aufruf: xy_To_rPhi(x, y, &r, &phi);

Anwendung von typedef struct am Bsp: Eine Type Person mit Eigenschaften height (float) und weight (int) !

 

typedef struct  {

    float heightinMeters;

    int weightinKilos;

} Person;


ANwendung:

Person person1; // erzeugen


person1.weightinKilos=87;

    person1.heightinMeters=1.80;  //Werte zuweisen


float bmi = bodyMassIndex(person1);  //übergabe an eine Funktion

 

aktuelle Uhrzeit ausgeben

<time.h>  //Header einbinden

long secondsSince1970 = time(NULL);  //Aufruf
struct tm now; //Instanz erzeugen

printf("..", now.tm_hour, now.tm_min, now.tm_sec);

 

 

 

localtime_r(&secondsSince1970, &now); //Aufruf

 

 

 

printf("Die aktuelle Zeit ist: %d:%d:%d\n", now.tm_hour, now.tm_min, now.tm_sec);  //Ausgabe

 

 

 

NSString: einen Formatstring erstellen aus: "Die beste Nummer ist:" un der INT 9

 

NSString *x = [NSString stringWithFormat:@“Die besten Nummer ist %d“,5];

NSString: ANzahl der Zeichen des NSStrings x ermitteln

 

NSUInteger charCount = [x length];

NSString: ANzahl der Zeichen des NSStrings x ermitteln

 

NSUInteger charCount = [x length];

In der Klassen-Doku findet sich folgender Eintrag: Wie ist das im Code anzugebe?
KLasse: NSHost

Class Method
currentHost
+ (NSHost *)currentHost

Return Value
NSHost object

NSHost *myPC = [NSHost currentHost];

 

In der Klassen-Doku findet sich folgender Eintrag: Wie ist das im Code anzugebe?
KLasse: NSHost

Class Method
hostWithAddress
+ (NSHost *)hostWithAddress:(NSString *)address

Parameters
address
   
Network address to look up, e.g, @"127.0.0.1"

Return Value
The host for address

NSHost *lookupIP = [NSHost hostWithAddress:@"127.0.0.1"];

 

In der Klassen-Doku findet sich folgender Eintrag: Wie ist das im Code anzugebe? (Eine NSHost Klasse myPC gibt es schon)
KLasse: NSHost

Instance Method
address
+ (NSString *)address

Return Value
One of the network address for the receiver,e.g, @"192.168.2.4"

NSString *myAddress = [myPC address];
oder so auch:
NSString *myAddress = myPC.address;

In einer Klassenbeschreibung steht für eine Klassenmethode NSDate folgendes (Auszug):

(id)date
Return value
A new date object set to the current date and time

(id)date ist die Kurzform dafür, dass eine Ob-C typ. Instanzierung auf ein NSDate-Objekt erfolgen soll, und zwar mit der Klassen-Methode date, also:

NSDate *aktZeit = [NSDate date];

NSArray: anlegen eines Arrays aus 3 NSDate-Objekten now, tomorrow und yesterday

 

 NSArray *dateList = [NSArray arrayWithObjects:now, tomorrow, yesterday, nil];

Mit welcher Methode betsimmt man die Anzahl der Array-Elemente? Bsp für Array dateList

NSUInteger anzE = [dateList count];

NSArray: Wie greift man auf ein einzelnes Element des Arrays dateList zu?

[dateList objectAtIndex:i]

 int i;

NSArray: Was ist fast enumeration? Gib das Beispiel für Array dateList an, es sollen alle Elemente ausgegeben werden.

 

for (NSDate *d in dateList {
        NSLog(@“Hier ist Array-E: %@“, d);
     }

 

Einschränkung: Damit dürfen Array-Elemente NICHT hinzugefügt oder entfernt werden!

NSMutableArray:  Wichtige Funktion?
  Wie erzeugt?

Im Gegensatz von NSArray kann man damit Zeiger einfügen und entfernen.  Ist eine Unterklasse von NSArray.

 

Ein leeres Array erstellen array:

      NSMutableArray *dateList = [NSMutableArray array];

 

if (10==a) ...

>geht das?
>Vorteil ggü if (a ==10) ..

>ja, von profis bevorzugt
> damit ist ein if (a=10) -Zuweisung!- nicht mehr möglich, weil Compiler eine Fehler ausgibt.