Objective-C Primer 番外編 徹底C復習 6.構造体

構造体はデータ型の一種類という位置付けになりますが、今までのデータ型とは1つ大きな違いがあります。それはユーザー(プログラマ)が型の宣言をしなければいけないという事です。
 今まで使ってきたint, char, ポインター、そしてviva Cocoa ホームページで紹介している float, double, BOOLなどはデータ型の宣言を、言語の仕様としてすでに済ませてあります。ですからいきなり、
int    intVal;
と変数の宣言ができました。
この時点で、もし「int」というデータ型の宣言がなされていなければコンパイラはエラーを返します。しかし構造体は「ユーザーが作る新しいデータ型」なのでユーザーが宣言をしなければコンパイラにとってはまったく未知の型となり、エラーとなってしまいます。

フレームワークなどで使われる最初から宣言されている構造体もあります


 では「seito」という新しい構造体のデータ型を宣言して実際にそれを使ってみます。
サンプルコードは seito.zip からダウンロードできます。

続きはこちら
[PR]
# by vivacocoa | 2007-05-04 22:46

Objective-C Primer 番外編 徹底C復習 5.制御文その2

この制御文その2では switch 文と for 文の説明をしております。
最終更新日時05/12/00:50
サンプルコードのダウンロード。
最終更新日時05/11/23:20


switch 文
前回の「4.制御文その1」で紹介したwhile文の中にif文を記述するという手法はユーザーからの指示を待つアプリケーションでは良く用いられる方法です。しかし if文をずらずらと並べて行くコードは分かりにくいですよね。そこでこのようなアプリケーションの指示を待つループの中で良く使われるのが switch文です。

まずはコードを見てください。なおこの回のサンプルコードは control2.zip からダウンロードすることもできます。

続きはこちら
[PR]
# by vivacocoa | 2007-05-02 16:42

Objective-C Primer 番外編 徹底C復習 4.制御文その1


この回では while文、do-while文、continue文、break文の説明をしています。switch文、for文は「制御文その2」を見て下さい。 05/09/22:00

なおサンプルコードは2007/5/9/17:30に更新されています。



制御文
Objective-Cの制御文はCの制御文とまったく同じです。


1. if 文
viva cocoa ホームページから「Objective-C」→「C言語予約語一覧」と進んで、「if」の説明をご覧になってください。


2. while 文
 サンプルコードを通じて説明します。なお、サンプルコードは control.zip からダウンロードすることもできます。

続きはこちら
[PR]
# by vivacocoa | 2007-05-01 15:28

Objective-C Primer 番外編 徹底C復習 3.データ型

ではここでは使用頻度の高い3つのデータ型を紹介して、さらにそのデータ型を組み合わせる3つの仕組みについて見て行きましょう。

1.  int 型
マイナス21億4千7百48万3千648からプラス21億4千7百48万3千647までの整数を保持することができます。最高値を超えた場合は最初のマイナス21億〜に戻り、最低値をマイナス1すると最高値にもどります。

2. char 型
マイナス128からプラス127までの整数を保持することができます。最高値や最低値を超えた場合はint型と同じ動きをします。
 この型は文字というか文字コードを保持するのに使われることが主な目的です。例えばアルファベットだと各種の記号をいれても127までで事は足ります。日本語の場合は1文字に対してこのchar型を2つ使うことによって対処されます。しかしこの 復習編 ではそのことを気にする場面に行くことはまずないと思います。なおObjective-CではNSStringというオブジェクトを使って文字および文字列を表すことが一般的です。したがってこの char 型はC言語では文字を保持するために重要ですが、Objective-Cで重要なデータ型は int 型と次のポインター型の2つという事になります。

3. ポインター 型
C言語から導入された新しいデータ型で、int や char などの他のデータ型の変数が確保されているメモリのアドレスを保持するために使われます。関数に渡される引数としての変数や戻り値として返ってくる値は、実はその度にコピーされてやりとりされています。つまり、その度ごとに新たなメモリ領域が必要になるということです。 int は4バイトでcharは1バイトですが、実際のデータは次回で説明する配列や構造体やオブジェクトという仕組みを利用して巨大なもになっている可能性があります。音楽データや画像データを考えてみると分かると思います。ところがそのメモリ上のアドレスを覚えるだけなら常に4バイトだけで済みます。つまり4バイトのポインター型変数をコピーするだけでそのデータの情報をやりとりできるようになるという事です。したがって現在ではこのポインター型が多用されています。
 宣言の仕方は、「 int * value; 」などと宣言します。int 型の変数のアドレスを入れるポインター変数という意味です。「*(アスタリスク)」を使う点に注意してください。なおObjective-Cで使われる id 型というのはオブジェクトが存在するメモリのアドレスを入れるポインターでオブジェクト型と呼ばれています。

続きはこちら
[PR]
# by vivacocoa | 2007-04-30 11:01

Objective-C Primer 番外編 徹底C復習 2.変数

 まずは変数からはじめましょう。変数をできるだけ実態に近い形で説明しようとすれば、
「データを出し入れするための入れ物としてメモリ上に確保された場所につけられた名前」ということになります。この言い方は正確には少し間違っているのかもしれませんが概ねこの通りです。長い説明なので箇条書きにしていくと

1. データを出し入れするための場所がメインメモリー上に確保される
2. その確保されたスペースは名前を付けて使用する
3. データを出し入れできる = 値の変更が可能である

という事になります。
このメモリ上の場所を確保するためにC言語ではまず「確保する」という宣言をしなければなりません。これも正確には「宣言」ではなくて「定義」というのかもしれませんが意味は通じると思います。そしてこの宣言をする時にCの場合はどういうタイプのデータを入れる変数であるのかという事もあらかじめ決めておかなければなりません。まとめると

4. 変数はまず宣言(場所を確保)してから使う
5. 宣言をする時にどういう型のデータを出し入れする変数であるのかも決めておかなければならない

となります。

続きはこちら
[PR]
# by vivacocoa | 2007-04-28 21:58

Objective-C Primer 番外編 徹底C復習 1.準備

ご注意:このページは、最初、Smultronというエディタの紹介を行っていましたが、現在ではXcodeのエディタの説明など、今後このObjective-C Primer 番外編のサンプルコードを実際に試すための準備のページに変わっています。
2007/5/6/18:00
画像切れと「補完機能」に少し説明を加えました。
2007/5/12/19:30


 Objective-C Primerの更新がすっかり遅れてしまいました。遅れを取り戻してさらに新たな説明を加えるために更新の簡単なブログを立ち上げてみました。「徹底C復習」となっていますが特にCにこだわる気はありません。今まで通り適宜Objective-Cの説明も合せて行っていきたいと思います。しかし、まずは「制御文」の説明をしたいと思います。Objective-Cの制御文はまったくC言語のままです。そしてまた「変数」についても説明を加える必要を感じました。そこで「徹底C復習」というタイトルにしました。
 また作成手順を簡略化するためにターミナルでのコンパイルと実行に変えていこうかなと思っています。必要なのはソースコードを書くためのエディタだけです。これはXcodeのエディタで良いでしょう。当然、書式を持たない「.txt」を作成できるエディタならなんでも結構です。
 次に必要なのが「ターミナル」というソフトです。これはお使いのMacの「アプリケーション」フォルダの中の「ユーティリティ」ファルダの中に入っています。もし良ければDockに登録しておくと良いでしょう。

以下にXcodeの簡単な設定方法などを説明しますが、デフォルトのままでも問題なく使えます。
 準備が整いましたら早速はじめましょう。

設定方法はこちら
[PR]
# by vivacocoa | 2007-04-28 20:23

Tkよ、ふたたび

このあいだはRuby+TkをMacでうまく動作できませんでした。
「ま、ええやん。もう RubyCocoa で」と思いながらも何か悔しいし気にもなります。そこで近所の本屋に行ってRubyやPythonの本を立ち読みしてきました。すると、
「Pythonのインタラクティブシェルではコマンドラインからウィンドウを表示できる」
とありました。インタラクティブシェルというのはRubyで言えばirbに当たるものでしょう。
 帰宅後、Pythonのインタラクティブシェルを呼び出すコマンド名をネットで検索してみましたがなかなか見つかりません。試しにターミナルで「python」とだけ入力してみたら、それだけでインタクティブシェルが起動しました。
d0122908_1562486.gif

コンソールの2行目から4行目はバージョン情報などが勝手に表示されているだけです。
5行目でTkフレームワークを読み込んで、6行目でウィンドウを作り無限ループを開始しています。
この時点で制御はウィンドウを表示したPythonアプリに移動します。
d0122908_153139.jpg

このPythonアプリを終了するまではターミナルは入力を受け付けなくなります。
Pythonメニューからアプリを終了させるとターミナルの7行目で正常終了を表す0が返され、制御がまたターミナルに戻ってきます。

この結果に気を良くして、もう少し調べてみると、「Cafe de Paison」というサイトに載っているサンプルコードの最初のいくつかがMacでも動くみたいです。アドレスは「参考リンク」を見て下さい。
 日本語表示をするサンプルからMacでは動かなくなります。これは調べたらなんとかなりそうですが、それ以前に私はPythonの文法をまったく勉強していません。まずはそこからですね。
[PR]
# by vivacocoa | 2007-04-28 13:54

ぐるっと一周 その3

というわけで、PythonもRubyも中途半端にしたまま、「ほかに何か楽しいものはないかな」と色々ネットを探しまわって見つけたのが掌田津耶乃さんのオフィシャルサイト「Tuya's HomePage」でした。リンクは「参考リンク」を参照して下さい。
  このサイトの中で面白いのは「各種入門用テキスト」のなかの「プログラミングのススメ」です。笑えるし、言えてるし、プログラミング入門者の精神的な支えにもなるように思います。私もこの人の本を一冊持っています。今思えば自分では簡単に習得したように思っていた事も結構その本のおかげだったように思います。
 そしてもし気に入ったら、同じページの「各種入門教室」をやってみるのも面白いです。私は、「squeak 入門教室」を手始めに、
(これは最初の段階で squeak 日本語版サイトにアクセスできずにあきらめました)
次に、「AppleScript 入門教室」
「Java 入門教室」 (これは3分の2くらいのところで少しだるくなってきてやめました)
「AppleScript Studio 入門教室」 (現在やっている途中です)
などをやってみました。結構面白かったです。

# squeakは、かの「small talk」を学べるソフトです。どこかで日本語版を見つけて、ぜひ触ってみたいと思っています。
# AppleScriptは、classicでいくつか使っていましたが文法を正式に勉強するのは今回がはじめてでした。
# Javaは、Xcodeのプロジェクトとしてやるよりもターミナル上でコンパイルと実行をするほうが面白いと思います。Pure Java の場合、awtとの組み合わせでXcodeを使うと、確かAppletとして実行されたような記憶があるのです。どちらにしてもターミナル上で行うとよりピュアにJavaをしている感じがして気持ちが良かったです。次回はターミナルでの操作方法をこのブログにアップしようかなと思います(決して難しい事では全然ありませんが)。
[PR]
# by vivacocoa | 2007-04-27 20:54

ぐるっと一周 その2

前回、Rubyがすごく気に入ったと言いましたが。RubyでGUIアプリケーションを作ろうとすると話が少し変わってきます。RubyにはGUI用のクラス群やフレームワークは用意されていないのです。
 そこでRubyでGUIアプリケーションを作る場合には「Tk」と言う汎用?のGUIフレームワークを使うのが一般的みたいです。しかしこれをMacでうまく動作するようにしたサンプルを載せているサイトに私はまだ出会っていません。ううむ。これはまずいパターンです。ここでつまずいたり、あるいはあまりこだわり過ぎると、かなりの時間が無駄に終る可能性があります。
 そこで、ここではもう「RubyCocoa」という新しいムーブメントに乗ったほうが良さそうです。これはRubyでCocoaフレームワークを利用するものです。「参考リンク」の「RubyCocoaを入手する」からインストーラーをダウンロードして Mac にインストールするとXcodeでRubyCocoaのプロジェクトを作成することができるようになります。ただし、このRubyCocoaの実際の運用例について私はまだまったく何も分かっていません。しかしこのRubyCocoaは、時期Leopardから標準でXcodeに搭載される事になるそうです。これはかなり重要なことです。
 そしてまた「Tk」というのはApple純正のGUIとは違うものです。ボタンやその他の見かけもちょっとずつ違う可能性があります。というかたぶん違うでしょう。その差は若干だとは思いますが気になりだすと気になってくるものです。
 でも RubyCocoa では完全にApple純正のGUIパーツが使えるのです。そしてRubyCocoaでは Interface Builder を使ってGUIの設計ができますが、TkではInterface Builderを使えません。このことは生産性にかなりの差がでることになります。つまりTkでGUIを設計するのはかなり時間がかかってしまうことになります。
[PR]
# by vivacocoa | 2007-04-27 19:24

ぐるっと一周 その1

今年の元旦から英語を勉強することにしました。目標は「土日以外は少しでも英語を勉強すること」。でもさすがに今月になってダレてきて言語は言語でもプログラミング言語の勉強をまたはじめたくなってきました。というか、ある人に「PythonかRubyをはじめてみたら」と勧められたのがキッカケになったと思います。本なども買わずに、取りあえずはインターネット上で公開されているチュートリアルで十分だろうとのこと。そこで、一週間ほどしてから色々とネットで探してみました。
たぶんほんの少し前まではPythonのほうがリソース(情報)が充実していたのだろうと思いますが、ここのところRubyの情報が急激に充実してきているみたいです。そこで見つけたのが「プログラミング入門 -Rubyを使って-」というページでした。アドレスは「参考リンク」に書いておきました。この入門編は本当にプログラミングの知識がゼロの人を対象に書かれており、通常、プログラミング習得の壁となるであろうオブジェクトやポインターという分かりにくい概念の説明はありません。
(たぶんないと思います。後半は流し読みしましたので確かかどうか分かりませんが)
私はRubyのことが全部分かっているわけではないので確かな事は言えませんが、Rubyではすべての変数がポインターで、全ての値(数字であったり文字列であったり)がオブジェクトになっているのかな?、という感じです。ですからかえってわざわざ難しい説明をすることもなく、先にすすめるみたいです。もし興味があれば見て下さい。私はこのスッキリとした文法に一目惚れしました。
[PR]
# by vivacocoa | 2007-04-27 18:26