*

Objective-Cの第一歩(仕切り直し)

公開日: : 最終更新日:2014/06/12 iOSアプリを書く! , ,

前回Objective-Cの第一歩として挙げたコードであるが、綺麗さっぱり忘れてほしい。というのは、NSLogは決してC言語のprintfのトランスクリプションではないから。ついでに言うと、JavaScriptのdocument.printInについても、全然別物だろう。まあ、書いたプログラムの結果をどこかの画面に表示するという意味で、最初の達成感を得られる第一歩ではあるのだが、そこは少し厳密になろう。なにせ折角記念碑的な第一歩目であるし。
というわけで、Objective-CでC言語のHello, World!にあたるプログラムを書いてみよう。前回と同じくコンソールベースのアプリケーションテンプレートを選んで、main.mのNSLog部分を消して以下のように書き込む。

printf("Hello, World!");

これそのまんまC言語だ!そう、Objective-CはC言語にオブジェクト指向部分を建て増した言語なので、C言語で書いて動いてしまう。だから”Hello, World!”はC言語と同じ。C言語からObjective-Cに入った人は第一歩目がいきなり空回りだ。

Objective-Cの第二歩(C言語修得者には空回りが続きます)

第二歩目。とりあえず関数を宣言して呼んでみよう。サンプルプログラムとして、1からコンソールに入力した数字までの和を求めるプログラムを書いてみる。

 
//  main.m
 
#import <Foundation/Foundation.h>
int summary(int x){
    int i,sum=0;
    for(i=x;i>=1;i--){
        sum += i;
    }
    return sum;
}
 
int main(int argc, const char * argv[])
{
 
    @autoreleasepool {
 
        // insert code here...
        int x,sum;
        printf("数字を何か入力して下さい\n");
        scanf("%d",&x);
        sum = summary(x);
        printf("1から%dまでの和は%dです",x,sum);     
    }
    return 0;
}

これもC言語そのまま。念のためC言語経験の無いウェブプログラマ用の補足をすると、#importの行はプログラムの実行に必要なライブラリの読み込み。Cの教科書だと、stdio.hなどを#includeで読み込んでいるはず。今や懐かしのC++だとiostreamかな。
次にmainループの外に書いているのが、関数summary()の内容。合計値をint型で返す。引数としてはint型を一つだけ受ける。戻り値・引数とも型を明記。
変数宣言時にも、やはり型を宣言しなければならない。JavaScriptならvar、PHPなら$を付ければ、変数の型は推測してくれただろうけど、C言語/Objective-Cではダメ(実は、今回新登場したSwiftでは型推論がつくらしいけど。モダン!)。for文やらインクリメントやらはウェブ系の言語と同じなので説明を省略。

main部分には、メインの処理を書く。@autoreleasepoolというのは、デフォルトでついていた物なので説明は後回し。printfやscanfは出力・入力する値の型を指定する。たとえば”%d”だったら十進数、”%s”だったら文字列など。scanfはコンソールからの入力を受け付けて、第二引数に与えた変数(へのポインタ)に代入する。ポインタというのはメモリのアドレスのこと。xという変数へのポインタは&xという書き方をする。

これが、C言語/Objective-Cで関数を使いたくなった時の書き方。全然難しくない。iOSアプリの入門書で出てくるような@interfaceとか@implementationとかself=[super initWithCoder:coder];とか訳の分からない物は全然登場しない。
つまり、iOSアプリの入門書は関数宣言をすっとばして、関数的な働きをするものを全てクラスのメソッドにしてしまっているのだ。
というわけで次回はやっとC言語修得者のための第一歩です。

関連記事

アイコンは未指定なので不格好

Objective-CでiOSアプリの第一歩 新規プロジェクトで生成されるコードの解説

しけたコンソールアプリばかり作っていたけれど、ようやっとiOSプログラミングに入るとしよう。急がない

記事を読む

無理矢理表示したHello, World!

Objective-CでiOSアプリの第二歩 とにかく立ち上がればというレベルのHello, World!アプリを作成

前回はiOSアプリ作成の第一歩として、Empty Applicationを選択した際に書いてあるコー

記事を読む

GaussTester実行結果

Objective-Cの第四歩 インスタンスプロパティ・メソッドを定義する

Objective-Cの第三歩では、ピュアC言語からのObjective-Cのクラス入門ということで

記事を読む

no image

Objective-Cの第六歩 プロトコルの宣言と実装

Objective-Cの第五歩では、親クラスの継承とメソッドのオーバーライドについて説明した。そこま

記事を読む

no image

Objective-Cでは何故.hファイルと.mファイルを作成させられるのか

前回説明したように、Objective-Cでプログラムを書く際には、別にC言語そのもののつもりで書い

記事を読む

no image

Xcode 6の正式リリースまでに、Objective-Cでアプリを一つ仕上げる!

Swiftに早速触れてみたい!でもXcode 6がベータ版の間は、有料(7800円/年)のDevel

記事を読む

no image

iOSプログラミング入門書では、まず最初のHello, World!すら難しい

Hello, World!が第一歩 新しくプログラミング言語を習得するときに、「この言語でのH

記事を読む

クラスを継承して作成

Objective-Cの第五歩 クラスの継承とメソッドのオーバーライド

前回Objective-Cの第四歩では、等差数列の和を計算するプログラムGaussTesterの作成

記事を読む

画面の回転に対応したプログラム

Objective-CでiOSアプリの第三歩 UIViewControllerの必要性を理解する

前回はUIViewControllerの存在を無視して"Hello, World!"アプリケーション

記事を読む

no image

Objective-Cの第三歩 クラスとクラスメソッドを定義する

Swiftの事をひとまず置いておいてObjective-Cの入門編を書いているわけだが、前々回の"H

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

no image
Swiftが今年後半を目処にオープンソース化!そしてSwift 2

一時期iOSとOSXの開発からは離れていたけれど、久しぶりの大きなニュ

RunSwiftスクショ
WEB上で動作するSwiftの疑似実行環境 RunSwift・SwiftStub

Swiftの実行環境はMac+Xcode。ウワサのSwift言語に興味

no image
待望のRetina iMacが登場! iOSアプリの開発が楽になる?

10月16日(日本時間17日)に行われたAppleの新製品発表会。大方

no image
Swiftの参考書 電子書籍以外にもボツボツと登場

書店の棚に並んでいるSwift本を見て、正式リリースを実感! 何しろ

no image
Swift1.0を含むXcode6のGMが公開

大体2週間の間隔を空けてbetaのヴァージョンナンバーが上がり続けてい

→もっと見る

PAGE TOP ↑