第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf ·...

50
University of Electro-Communications Human Interface section 基礎プログラミングおよび演習 1担当: 長谷川晶一@5522/520

Transcript of 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf ·...

Page 1: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

University of Electro-CommunicationsHuman Interface section

基礎プログラミングおよび演習

第1回担当: 長谷川晶一@5階522/520

Page 2: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

University of Electro-CommunicationsHuman Interface section

自己紹介&研究室紹介

Page 3: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

自己紹介&研究室紹介長谷川晶一高校1年のときに初めてプログラミング

MS-DOSのバッチファイル⇒ C言語、C++言語

大学サークルでバーチャルリアリティ作品を作る

会社(SONY)でデジタルテレビのソフトを作る (100人で開発)大学に戻り、バーチャルリアリティ研究者になる

バーチャルリアリティコンテスト1996の様子 最近の状況はhttp://ivrc.net/

研究室URLhttp://haselab.hi.mce.uec.ac.jp/

Page 4: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械
Page 5: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

University of Electro-CommunicationsHuman Interface section

プログラミングの紹介

Page 6: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラミングの重要性

自律ロボットの研究はプログラム作成時間が半分以上

ラジコンならばソフトウェアがなくても動く

自分で判断して動くロボットでは、ソフトが主役たとえば、家庭用ロボットの研究・開発

Page 7: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

コンピュータ(=計算機)とは

計算=ややこしい処理をする機械

プログラムに従って動作する

階差機関(Charles Babbage 1791~1871)の復元 数表の計算と印刷

解析機関(Charles Babbage 1791~1871)

を作ったもの プログラム可能なコンピュータ

コンピュータの歴史

Page 8: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラムとは

コンピュータの動作を決める手順書

ジャガード織機 (wikipediaより)

Page 9: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

ロボット

PCとロボットとプログラム

PCの構成

制御マイコンの構成

CPUメモリ

ビデオメモリ GPU ディスプレイ

キーボード

マウス

USB

CPU メモリA/Dコンバータ

カウンタ

D/Aコンバータ

パラレルI/O

ポテンショメータ

エンコーダPWMモータドライバ

アナログモータドライバ

スイッチ/ソレノイド

Page 10: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

CPUとメモリCPUの動作

1. 命令カウンタを1増やす

2. メモリの命令カウンタのアドレスから命令を読み出す

3. 命令に従って計算するメモリから読みして、計算して、メモリに書き戻す。命令によっては、命令カウンタを書き換えることもある(ジャンプ)。

メモリ0123456

10011010

3FFFFFFE3FFFFFFF

11000011000100010011110000111001

111000010111000110011011

プログラム

CPU命令カウンタ アドレス

命令命令レジスタ

計算ユニット

Page 11: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラムの表現

1011 0000 0110 0001 0101 0100 1111 0110

1101 0111 0001 0010

メモリ

プログラム(マシン語)命令レジスタに読みだす値を並べたもの

add r0 61

sub r1 r2 @r3

sub r1 r2 @r4

jmp r2

プログラム(アセンブリ言語)人に分かりやすいように命令を意味のある単語に置き換えたもの

アセンブラ

Page 12: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラムの表現

高級言語(C言語,BASIC,Perl,Ruby…)コンピュータが実行できる言語で、かつ、

人が読み書きしやすい,わかりやすい言語

int main(){printf(“Hello, world!”);return 0;

}

0101 0100 1111 01101101 0111 0001 00101101 1110 1001 10000101 0100 1111 01101101 1110 1001 1000

mov r0 61sub r1 r2 @r3sub r1 r2 @r4jmp r2コンパイラ

アセンブラC言語(ソースコードファイル)

実行形式

アセンブリ言語

マシン語

Page 13: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

なぜC言語

人にわかりやすいプログラムのための言語はたくさんある(暇な人はHello_world.htmを参照)が…

C言語はなんにでも使える

実行形式を小さくできる。→家電製品などの組込マイコンなどでも使える。

実行速度が高速な実行形式を作ることができる。→ OS(オペレーティングシステム)の中核部に使える。

わりと、人にもわかりやすい。→大規模なプログラムの開発にも使える。

みんなが使っている

入門用としてはちょっとむずかしめの言語です。

Page 14: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

その他の言語 C++ C言語を拡張、オブジェクト指向

Java Sunが作ったC++に似た言語どこでも動くのが特徴

FORTRAN スパコン用 最適化が効きやすい

Ruby, PHP Webサーバで動くサービスに多い

シェルスクリプト(Unix),バッチファイル(Windows)使えるとOSがちょっと便利になる

C# Microsoftが作ったC++に似た言語SunのJavaに対抗して作った

Visual Basic Microsoft Officeのスクリプトなど

Page 15: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

University of Electro-CommunicationsHuman Interface section

プログラミングの手順

Page 16: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラミングの手順

ビルド:ソースコードから実行形式を作ること

int main(){printf(“Hello, world!”);return 0;

}

C言語(ソースコードファイル)

コンパイラ+アセンブラ

(gcc)

ビルド実行形式ファイル

0101 0100 1111 01101101 0111 0001 00101101 1110 1001 1000

OS (Mac OS XのFinderやTerminal)

1011 0000 0110 0001 0101 0100 1111 0110

1101 0111 0001 0010

メモリ

プロセス

実行形式ファイルをメモリにロードして

実行

プログラム開発の手順1.ソースコードを書く2.ビルドする3.実行してみる

問題があったら

問題があったら

Page 17: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラム開発の実際

Xcodeビルドと実行とデバッグをするための開発環境

テキストエディタ

コンパイラ (gcc)デバッガ(gdb)

デバッグ・デバッガとは?

デバッグ:プログラムが正しく動作するように修正すること

デバッガ:修正を助けるプログラム– プログラムを1行ずつ実行して動作の様子を見ることなどができる。

Page 18: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

開発環境の起動

画面下のメニュー(Dock)のファインダーをクリック

一番上のメニューから「移動ーコンピュータ」を選ぶ

Page 19: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

開発環境の起動

Xcodeを起動する

System-Developer-Application-Xcode

Page 20: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

Dockに登録

DockメニューのXcodeを右クリックしてDockに保存しておくと便利

Page 21: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

Xcodeの設定

初めてXcodeを起動したときにだけ出てきます

次へと完了でOKです

Page 22: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

新規プロジェクトの作成

プログラムを作る「プロジェクト」の作成

Page 23: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

新規プロジェクト(コマンドライン)

授業では、「Command Line Tool-Standard Tool」を使います。ほかは使いません。

Page 24: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

新規プロジェクトに名前をつける 英字で始まり、英数字で名前をつけます。

名前は何でもかまいませんが、ここでは課題1ということで、ex1にします。

提出課題には通し番号がついています。

Page 25: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プロジェクトの構成

プロジェクトの構成が示されますmain.c というファイルから ex1 が作られます。

Page 26: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

 main.c の中身

main.cの中身です。“Hello world!”と表示

するだけのプログラムを作るC言語のソー

スコードになっています。

Page 27: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラムのビルドと実行

「ビルド」でXcodeがgccを使ってビルドしてくれる。

「ビルドして実行」でそのまま実行できる

プログラムの出力&プログラムへのキー入力

Page 28: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

ターミナルからプログラムを実行

「Finder」で、「ユーティリティ」フォルダの

「ターミナル」を起動

ターミナルで、cd ex1/build/Debug と入力ls と入力./ex1 と入力

このex1がXcodeで作ったプログラム実行すると

Hello, World!と表示が出る。

Page 29: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

C言語の基本

#include <stdio.h>int main(int argc, const char* argv[]){

// insert code hereprintf (“Hello, World!¥n”);return 0;

}

標準入出力機能(standard I/O)を使うことを宣言

メインのプログラムの始まり

メインのプログラムの終わり

コメント

「Hello, World!」と表示

メインから戻る

灰色 :なくてもいいところ青 :ないとだめだけれど、後で説明する部分黒 :今回説明する部分

Page 30: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

C言語の基本

#include <stdio.h>int main(int argc, const char* argv[]){

// insert code hereprintf (“Hello, World!¥n”);return 0;

}

C言語では、この部分に書いた

プログラムが上から順に実行されます。

// insert code hereprintf (“Hello, World!¥n”);return 0;

//から行末までを、コメントといいま

す。コンパイラはコメントを読みません。他の人がプログラムを読むときに助けなるようなことや、自分のためのメモを書くために使います。このコメントは、Xcodeが書いたコメ

ントで、「ここにコードを挿入してください」ということです。

Page 31: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

C言語の書き方

// insert code hereprintf (”Hello, World! ¥n”);return 0;

printf という関数(function: 機能)を

呼び出しています。

printf( ”出力したい文字列” ) ;関数の名前 関数の引数 文の終わりをあらわす

セミコロン

関数 printf は文字列を出力します。

¥n は表示すると、改行になる文字です。MacとPCでフォントが違うので、¥の代わりに、 =バックスラッシュになります。

Page 32: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

とりあえずいろいろ表示してみよう

printf(” と ”);の間にいろいろな文字列を入れて

いろいろな文字列を表示するプログラムを作ってみてください。

#include <stdio.h>int main(int argc, const char* argv[]){

// insert code hereprintf (”Hello, World!¥n”);printf (”2 Hello, World!”);printf (”3 Hello, World!”);printf (”3 Hello, World!”);printf (” ¥n ¥n ¥n4 Hello, World!”);return 0;

}

上から順に実行されます

Page 33: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

ビルドがうまくいかない?

いろいろ書いていると、ビルドがうまくいかないことが起こりえます。たとえば、次の例では、

なぞの machigai という文字列があります。コンパイラ(gcc)がその旨を伝えるためにエラーメッセージを出します。(xCodeが表示します)

#include <stdio.h>int main(int argc, const char* argv[]){

// insert code heremachigaiprintf (”Hello, World!¥n”);return 0;

}

Page 34: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

ビルド時のエラー

「プロジェクト」のエラーと警告を見るか、

main.c の 赤丸×印にマウスをあわせるとメッセージが見られます。

Page 35: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

エラーメッセージを読もう

先ほどの例では、error: `machigai‘ undeclared (first use in this function)エラー:machigai は宣言されていません(この関数の中では、ここで初めて使われました)と出ています。C言語には、まだお話していない文法がたくさんあるので、意味が取りにくいと思います。ですが、

コンパイラ(gcc)が machigai をどう解釈してよいかわからず、なにか言っている。

この行の machigai のあたりに何か問題があるようだ

ということは判ると思います。メッセージはいろいろありますが、必ずよく読んで、意味を考えてください。

Page 36: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

エラーメッセージの例

error:parse error before ‘}’ tokenエラー:語 ‘}’ の前で構文解析エラーが起きました

}の前に、何かが足りないために、コンパイラ(gcc)がC言語の解析(解釈)ができなくなったと言っています。

この場合前の文の最後に足りない文字がありますね。

#include <stdio.h>int main(){

printf (”Hello, World!¥n”);printf (”Hello, World!¥n”)

}

Page 37: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

エラーメッセージの例

error: missing terminating “ characterエラー:終わりの文字 ” が必要です。

error:parse error before ‘}’ tokenエラー:語 ‘}’ の前で構文解析エラーが起きました

文字列の終わりの”がないと言っています。

コンパイラは、 ); も表示する文字列(Hello World! ¥n)の続きだと思ったようです。このため構文解析エラーも起きています。

このように、ひとつの原因で複数エラーが出ることもあります。エラーメッセージは最初の方から見て行きましょう。

ひとつ直すと全部直ることもあります。こまめにビルドしましょう。

#include <stdio.h>int main(){

printf (”Hello, World!¥n”);printf (”Hello, World!¥n);

}

Page 38: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

エラーメッセージの意味

そのほかのエラーメッセージについては、C科大久保先生のページhttp://www.tnlab.ice.uec.ac.jp/~sokubo/class/language/ref/error.htmlを見てください

MacOSのgccは日本語のエラーメッセージを出し

てくれません。Windowsの場合、Visual C++ / Borland C++ /cygwinのgccで日本語のメッセージが出ます。

Page 39: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

関数をもうひとつ

上から順に実行されることを確かめるために、もう1つだけ関数を覚えましょう。

#include <stdio.h>int main(){

printf (”Plase hit ENTER key¥n”);getchar();printf (”Thankyou¥n”);

}

1文字入力[ENTER]キーが押される

まで、キーボードからの文字入力を待ちます。

[ENTER]が押されたら、

最初に入力されたキーを読み出します。

Page 40: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

順番に実行される様子を見る

いろいろ変えてみて様子を見てください。

#include <stdio.h>int main(){

printf (”Plase hit ENTER key 3 times.¥n”);getchar();getchar();getchar();printf (”Thankyou¥n”);printf (”Plase hit ENTER key 2 times.¥n”);getchar();getchar();printf (”Thankyou¥n”);

}

Page 41: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラムのデバッグ

ビルドがうまくいっても、プログラムが思ったように動作しないこともあります。

デバッグ・デバッガとは?

デバッグ:プログラムが正しく動作するように修正すること

デバッガ:修正を助けるプログラムプログラムを1行ずつ実行

動作の様子をゆっくり見ることなどができる。

Page 42: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

デバッグの実際

メニューからデバッガを選んでデバッガを起動

Page 43: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

デバッグ

ブレークポイントを設定

ブレークポイントを設定してデバッグを始めると、プログラムがブレークポイントのところで止まる。

int main(….の行にブレークポイントを設定して、デバッグを開始してみてください。

Page 44: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

デバッグ – ステップ実行

ブレークポイントで止まった後は、ステップオーバーで1行ずつ実行して様子を見る

ことができます。

参考 mainが終わっても

しばらくプログラムは続きます。C言語のソースがない

ので、アセンブリ言語やマシン語が表示されます。驚かないで。

ステップインを選ぶと関数の中にどんどん入っていきます。printfの中身が全部

わかるためには結構勉強が必要です。

Page 45: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

課題と提出

課題提出Webサイト

http://haselab.hi.mce.uec.ac.jp/class/basic/

ここをクリックして指示に従ってWebのアカウントを作る

・パスワードを設定させられます・一度ログアウトしてからログインしなおすよう指示されます

Page 46: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

ログイン

ここに設定したユーザ名とパスワードをを入力

Page 47: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

ユーザー情報の編集

ログインしたらユーザ情報を書き入れて下さい

メールアドレスを間違えないように

授業の連絡に使います

Page 48: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

課題の提出

資料課題一覧に毎回の授業の資料と課題を用意します。

まずここをクリック

授業の説明と授業で使用した資料へのリンク

課題の説明と提出 課題の説明と提出

Page 49: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

成績について

出席、課題、試験で成績をつけます。

出席課題提出Webサイトのログイン時に出席を記録します。

授業中に教室から必ず一度ログインしてください。

教室外からでもログインできますが、どこからログインしたか記録していますのでご注意を。

課題

次の授業までに提出してください。間に合わない場合はそれ以降でも出してください。

他の人のプログラムの丸写しはだめです。必ず自分で作ってください。(簡単にチェックできます)

試験

期末試験をする予定です。

Page 50: 第1回 担当: 長谷川晶一@5階522/520haselab.net/class/basic/lesson/01/bp01.pdf · コンピュータ(=計算機)とは 計算=ややこしい処理をする機械

プログラミング上級者の方へ

すでに、C言語でプログラムを作ったことがあり、ポインタも構造体

も使ったことがあって、授業や演習の内容が退屈な人もいるかもしれません。そのような方は、 困っている人を助けてあげてください。

作ってあげるのではなくて、教えてあげることが勉強になります。人のプログラミングを後ろからみて、邪魔せず手伝えれば一流です。

課題は、一応出してください。課題より高度なプログラムを出していただいてもかまいません。

それでも退屈な方には、OpenGLを勉強することをお勧めします。http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.htmlを見て、自習してください。Xcodeの場合、プロジェクトにGLUT Frameworkを追加し、ソースに#include <GLUT/glut.h>と書けばGLUTが使えます。