第1回 Smalltalk の概要(4月9日; 10日)

今日の課題

■ Squeakの操作

準備

起動方法

Linux のコンソール上で以下を実行する:
squeak  イメージファイル名

よく使うウインドウやスイッチ

画鋲のボタン:「ワールド」などのウインドウの右上には、画鋲マークがある。そのマークをクリックすると画面にウインドウが固定される。

終了方法

  1. 「ワールド」の中の「デスクトップメニュー…」の中の「保存して終了」あるいは「終了」を選択

その他

  1. 無限ループの停止:ALTキーを押しながらピリオドを押すと、無限ループしている処理を止めることができる。
  2. イニシャルの入力:初めてクラスやメソッドを定義するとき、作成者のイニシャルが問われる。自分のイニシャルの入力を忘れずにしておくこと。

練習1

Squeak の実行環境を準備しよう。以下を実行しよう。

  1. コンソールを開く。
  2. 演習のための、Squeakのためのディレクトリを作る。
  3. そのディレクトリに移動する。
  4. イメージファイルを準備する。
  5. Squeak を起動する。
  6. 「ナビゲータ」より、プロジェクトを作る。
  7. プロジェクトの名前を「lect01」とする。
    (「名無し」をクリックすると、緑色になるので、新しい名前を入力する。)
  8. 「保存して終了」より、終了する。
  9. 再び Squeak を起動し、環境を確認する。

→ 実行時の様子

以上ができた人は、プロジェクト「lect01」に移動したり、前へ戻ったりしてみよう。また、以降の練習は、プロジェクト「lect01」で行なうようにしよう。

■ メッセージパッシング

オブジェクトにメッセージを送ることを、メッセージパッシングという。 ワークスペース上で、メッセージパッシングの操作ができる。幾つかの操作方法がある。

練習2

(1) 数のオブジェクトに、単項メッセージを送り、結果を表示させよ。具体的には、「123.456」という数のオブジェクトに、「rounded」という四捨五入のメッセージを送ろう。

(2) 数のオブジェクトに、2項メッセージを送り、結果を表示させよ。具体的には、「2」という数のオブジェクトに、「+ 3」のメッセージを送ろう。

(3) 文字列のオブジェクトに、キーワードメッセージを送り、結果を表示させよ。

(3-1) 「'Hello'」という文字列のオブジェクトに、「at:」というキーワードメッセージを、引数「3」を添えて送ろう。
(3-2) 「'Hello'」という文字列オブジェクトに、「copyFrom:to:」というキーワードメッセージを、引数「2」と「4」を添えて送ろう。

■ 変数

Sqeuak でも、変数を使うことができる。しかし、C言語とはちがい、変数には型が無い。つまり、変数は、どんなオブジェクトでも指すことができる。

書き方は、下記のどちらでも良い。

練習3

下記を実行し、結果をワークスペースに表示させよう。
a := 2.
b ← 3.
c ← 4
a + b * c

※ 複数のメッセージを、マウスで領域指定して実行する方法を試してみよう。そのために、行の最後にピリオド「.」が付いていることに注意しよう。

■ 色々なオブジェクト

Squeak には、色々なオブジェクトがある。

練習4

(1) 色々なオブジェクトを使ってみよう。以下のコードを1行ずつ実行してみよう(ALT+p)。

●数のオブジェクト
-123 abs
123.456 rounded
2 + 3 * 4
2 + ( 3 * 4 )

●文字列のオブジェクト
'abcdefg' size
'abcdefg' capitalized

●配列のオブジェクト
#( 123 456 'abc' 'def') size
#( 4 3 1 5 9 3 2 ) sort
#( 123 456 'abc' 'def') at: 3
(#( 123 456 'abc' 'def') at: 3) capitalized

●時間のオブジェクト
Time now

●日付のオブジェクト
Date today

(2) トランスクリプトオブジェクトにメッセージを送ってみよう。

(2-1) 表示のためのキーワードメッセージは、「show:」である。
Transcript show: 'Hello World!'
(2-2) 改行をつけて送ってみよう。
Transcript show: 'Squeak World!'.
Transcript cr.
Transcript show: 'Smalltalk is fun'.
Transcript cr

(3) インスタンスを使ってみよう。

(3-1) インスタンスを作り、変数がそれを指すようにしよう。具体的には、「StarMorph」という「星の図形」というクラスのオブジェクトに、「new」というインスタンス作成のメッセージを送る。その結果を変数「a」が指す。
a ← StarMorph new
(3-2) 星のオブジェクトを画面に出現させよう。「openInWorld」は「出現せよ」というメッセージである。
a openInWorld
(3-3) 星の色を変えてみよう。「color:」は「色よ変れ」というメッセージである。色のインスタンスをこのメッセージに添える必要がある。色のインスタンスは、色のクラス「Color」にメッセージを送って作成する。
a color: Color green
(3-4) インスタンスの状態を観察しよう。「inspect」は、状態を表示させるためのメッセージである。
a inspect  (ALT + d を押すとウインドウが表示される。
     さらに、color のラベルをクリックすると、
     右側に「Color green」と表示される。)
a color: Color red   (ALT + d を押すと、「Color red」に変化する)
a color: Color blue   (ALT + d を押す)
※ オブジェクトの状態については、次回の「インスタンス変数」にて理解できるようになります。

伝達事項

プリント類を綴じるための安いファイルフォルダーを準備して下さい。

情報工学演習3では、小レポートを採点した後に、いったん返却します。返却されたレポートを各自がフォルダーに綴じておいて下さい。最終課題レポートの提出時に、全ての小レポートを提出してもらいますので、それまで、大切に持っていて下さい。小レポートを無くした人は、提出無しとして扱いますよ!


2009.4.8 by tokuhisa