おしい県でWebに携わって働く人のブログ

基本的にはIT&Web界隈に関する役に立ちそうなことをまとめていきます。

「Objective-C」初心者(入門者)が読むと勉強になるだろうサイトを読んでいたら、つい途中で現実逃避していた。

f:id:lord_cashew:20130201185807j:plain

ブログ「もとまか日記」さんの記事「今更ですがiOSアプリ開発の基礎について色々調べてみました」を読んでて、Objective-Cのことをサラリと知りたくなったので、記事で紹介されていたサイト(+α)を読んでみました。

 

1. Objective-C 最速基礎文法マスター

えーっと、、、正直言って今のレベルだとサッパリわからない感じでで、ただサラ〜っと流し読みして終わってしまいました。(所要時間:10分)

 

2. Obejctive-C 3分クッキング

こちらの記事の方がわかりやすいのだが、「何らかのオブジェクト指向言語の使用経験がある方のため・・・」と書いてある通り、まだまだバッチリ理解できたとは言えないレベルで、結局は読み流してる感じになってしまいました。この記事のコメントに書いてある「わかりやすくて感動しました」と言えるレベルになりたいものです。(所要時間:15分)

 

3. Objective-C初心者のためのC言語超入門

日付を見ると約2年前に書かれただろう記事なので、Xcodeの操作や説明が少々違ったりするのですが、内容的にはとっても「超入門」で読みやすくわかりやすかったので感謝感激しつつ、入力したソースコードを掲載しておきます。(所要時間:120分)

 

#include <stdio.h>

 

 

//ポインタで構造体を渡す

typedefstruct {

    char* name2;

    int age2;

    char* mail2;

} Person2;

void printPerson2(Person2 data){

    printf("name2: %s\n",data.name2);

    printf("age2 : %i\n",data.age2);

    printf("mail2: %s\n",data.mail2);

    printf("\n");

}

 

//そのまま構造体を渡す

typedefstruct {

    char* name;

    int age;

    char* mail;

} Person;

void printPerson(Person data){

    printf("name: %s\n",data.name);

    printf("age : %i\n",data.age);

    printf("mail: %s\n",data.mail);

    printf("\n");

}

 

//引数の返値

//引数も返値もない

void print100Total(){

    int total = 0;

    for (int i = 1; i <= 100; i++) {

        total += i;

    }

    printf("total: %i\n",total);

}

//引数はあるが返値がない

void printTotal(int n){

    int total = 0;

    for (int i = 1; i <= n; i++) {

        total += i;

    }

    printf("total: %i\n",total);

}

//引数も返値もある

int getTotal(int n){

    int total = 0;

    for (int i = 1; i <= n; i++) {

        total += i;

    }

    return total;

}

 

//関数の練習

void printHello(){

    printf("Hello, World !!\n");

}

 

 

int main(int argc, const char * argv)

{

    //ポインタで構造体を渡す

    Person data3 = {"taro",30,"taro@yamada.com"};

    Person data4 = {"hanako",24,"hanako@flower.jp"};

    printPerson(data3);

    printPerson(data4);

    

    //そのまま構造体を渡す

    Person data1 = {"taro",30,"taro@yamada.com"};

    Person data2 = {"hanako",24,"hanako@flower.jp"};

    printPerson(data1);

    printPerson(data2);

    

    //引数の返値

    print100Total();

    printTotal(100);

    printf("Total = %i!!\n",getTotal(100));

    

    //関数の練習

    printHello();

    printHello();

    

    //ポインタは同じ値を共有する

    char txt1 = "This is test!";

    char* txt2 = txt1;

    txt1[2] = 'a';

    txt1[3] = 't';

    txt1[8] = 'H';

    txt1[9] = 'O';

    txt1[10] = 'G';

    txt1[11] = 'E';

    printf("%s\n",txt2);

    

    //アドレスを操作する

    int data = {12,345,6789};

    int* arr5 = data;

    for (int i = 0; i < 3; i++) {

        printf("%i\n",*arr5++);

    }

    

    //ポインタとアドレス

    char* arr3 = "Hello!";

    char* arr4 = arr3;

    printf("%s\n",arr4);

    

    //配列とテキストの値

    char arr2 = "Hello!";

    int r = sizeof(arr2);

    for (int i = 0; i < r; i++) {

        printf("%c",arr2[i]);

    }

    printf(" (%i)\n",r);

    

    //配列で、たくさんの値をまとめて管理

    int arr[5] = {10,20,30,40,50};

    int res4 = 0;

    for (int i = 0; i < 5 ; i++) {

        res4 += arr[i];

    }

    printf("total: %i\n",res4);

    

    //細かく繰り返しをチェックする「for」文

    int q = 123;

    int res3 = 0;

    for (int i = 0; i <= q; i++) {

        res3 += i;

    }

    printf("%i total: %i\n",q,res3);

 

    //while」文(変数oまでの合計を計算する)

    int p = 1234;

    int res = 0;

    int count = 0;

    while (count <= p) {

        res += count++;

    }

    printf("%i total: %i\n",p,res);

    

    //while」文(++countにした場合)

    int o = 1234;

    int res2 = 0;

    int count2 = 0;

    while (count2 < o) {

        res2 += ++count2;

    }

    printf("%i total: %i\n",o,res2);

 

    //たくさんの分岐を使う「switch」文

    int l = 8;

    switch ((l % 12) / 3) {

        case 0:

            printf("%i gatsu is Winter.\n",l);

            break;

        case 1:

            printf("%i gatsu is Spring.\n",l);

            break;

        case 2:

            printf("%i gatsu is Summer.\n",l);

            break;

        case 3:

            printf("%i gatsu is fall.\n",l);

            break;

        default:

            break;

    }

    

    //条件となるもの

    int m = 12345;

    if (m % 2) {

        printf("%i is odd number.\n",m);

    } else {

        printf("%i is even number.\n",m);

    }

    

    //条件分岐の基本「if」文

    int n = 12345;

    if (n % 2 == 0) {

        printf("%i is even number.\n",n);

    } else {

        printf("%i is odd number.\n",n);

    }

    

    //変数の宣言と代入

    int x = 1234;

    int y = 56;

    int a1 = x + y;

    int a2 = x - y;

    int a3 = x * y;

    int a4 = x / y;

    printf("A + B = %i\n",a1);

    printf("A - B = %i\n",a2);

    printf("A * B = %i\n",a3);

    printf("A / B = %i\n",a4);

    

    //printf関数の働き

    printf("Hello, %s!\n","World");

    printf("integer: %i\n",12345);

    printf("float: %f\n",0.9876);

 

    //プログラムを動かしてみる

    printf("Hello, World!\n");

    

    return 0;

}

 

と、ここまでで力尽きてしまいましたので、下記サイトはまた後日読もうと思います。

 

4. 初心者のためのObjective-Cプログラミング入門 (所要時間:分) 

5. 初心者のためのiphone/ipadプログラミング入門 (所要時間:分)

 

追記ですが、この本を購入しようと思っている今日この頃なんです。

詳解 Objective-C 2.0 第3版

詳解 Objective-C 2.0 第3版