40
情報処理技法 (Cプログラミング)I 第2回 ー UNIXの基本(2)・C言語の初歩 ー 担当: 荻田 武史

情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

情報処理技法(Cプログラミング)I

第2回

ー UNIXの基本(2)・C言語の初歩 ー

担当: 荻田 武史

Page 2: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

2

本日の授業内容

•  低限覚えるべきUNIXコマンド pwd, ls, mkdir, cd, cp, rm, mv

• テキストエディタの簡単な使い方 テキストエディット, Jedit X,Emacs

• C言語プログラミングの初歩 「hello, world」を画面に出力

Page 3: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

3

低限覚えるべきUNIXコマンド

•  pwd : 現在のディレクトリを表示

•  ls : ディレクトリの中身を表示

•  mkdir : ディレクトリの作成

•  cd : ディレクトリの移動

•  cp : ファイルのコピー

•  mv : ファイルの移動

•  rm : ファイルの削除

※ ディレクトリ ・・・ Windowsで言うフォルダのこと

Page 4: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

4

コマンド入力はどこで?

•  ターミナルを起動 (「Finder」→「アプリケーション」→「ユーティリティ」→「ターミナル」)

たとえば

$ ls

今後、この「$記号」が出てきたら、

「ターミナルでコマンドを入力するのだな」と思うこと。$を入力する必要はありません。

Page 5: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

5

pwd (print working directory) 現在のディレクトリ位置を表示

$ pwd /Users/ogita

⇒ / (ルートディレクトリ)と呼ばれる一番上の階層から見て、自分の現在の居場所(カレントディレクトリ)がどこに位置しているかを表示する。

Page 6: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

6

ls (list specific)ディレクトリの中身を表示

$ ls

file1 file2 dir1 file3 dir2 …

$ ls -F   (ディレクトリ名の 後に / をつける)

file1 file2 dir1/ file3 dir2/ …

$ ls -a   (すべてのファイルを表示)

.file4 .file5 .dir3 file1 file2 dir1 …

$ ls -aF   (上の2つの合わせ技)

.file4 .file5 .dir3/ file1 file2 dir1/ …

コマンドには大抵オプションがある

Page 7: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

7

lsのつづき

$ ls -l (ファイルの属性などをリスト表示) 合計 48 drwxr-xr-x 3 ogita teacher 4096 3月 19 2002 Desktop drwx------ 5 ogita teacher 4096 4月 15 13:27 Mail drwx-----t 2 ogita teacher 4096 6月 28 2001 Wnn6 drwx-----t 2 ogita teacher 4096 4月 22 19:46 Wnn7 drwx------ 2 ogita teacher 4096 3月 19 2002 nsmail …

⇒ オプションを付けると、より詳しい情報が得られる。各オプションと表示内容の意味は各自で調べておくこと。

⇒ $ man ls (マニュアルを読むためのコマンド) ⇒ マニュアルを終えるには「q」を入力

Page 8: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

8

mkdir (make directory)ディレクトリの作成

$ mkdir work

$ ls -F

file1 file2 dir1/ file3 work/ …

※ ディレクトリの中身が空なら、

$ rmdir work

でディレクトリを削除できる。再び ls で

確認してみよう。

Page 9: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

9

cd (current/change directory)ディレクトリの移動

$ pwd (移動前の位置を確認)

/Users/ogita

$ mkdir work  (workディレクトリを作成)

$ cd work (workへ移動)

$ pwd (移動後の位置を確認)

/Users/ogita/work

Page 10: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

10

cdのつづき

$ cd .. (1つ上の階層へ移動)

$ pwd

/Users/ogita

単純に

$ cd

とすると、 初の場所(ホームディレクトリ)に

戻ることができる。

Page 11: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

11

テキストエディタ

プログラミングなどに必要なテキスト編集などの処理をするためのソフト

⇒ 授業ではC言語プログラミングのために使う

u  テキストエディット(Mac OS X標準搭載) u  Jedit X(操作が簡単。有料だがおすすめ) u  Emacs(操作に少し慣れが必要。無料) u  vi(操作に慣れが必要。無料)

Page 12: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

12

Emacs

Emacsは非常に多機能なエディタである

•  Emacsの起動(指示があるまでやらないこと) $ emacs

•  Emacsの終了 control+x の後 control+c

Page 13: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

13

Emacsのつづき

•  新規ファイルの作成 $ cd work

$ emacs hello.c

⇒「hello.c」という新しいファイル (中身は何もない) を作成してEmacsで編集開始。

※ 既に「hello.c」が存在する場合は、

そのファイルを編集することになる。

Page 14: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

14

hello.c

#include <stdio.h>

int main(void)

{

printf(“hello, world\n”);

return 0;

}

¥記号は、環境によっては\記号(バックスラッシュ)で表記される

⇒ ファイル編集が終わったら、“Save”アイコンを押して、編集内容をセーブする。

Page 15: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

15

コンパイル・実行

•  gcc(GNU C Compiler)を使う $ ls

hello.c

$ gcc hello.c

$ ls

a.out hello.c

$ ./a.out

hello, world

コンパイル: (C言語の文法的に)誤りがなければ何も言われずに終わる。

プログラムの実行: この実行の仕方は、約束事だと思うことにする

Page 16: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

16

コンピュータとプログラミング

ハードウェア (iMac)

オペレーティングシステム (Mac OS X)

プログラム 実行プログラム

エディタ コンパイラ

gcc Emacs,JeditX

a.out hello.c

Page 17: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

17

cp (copy)ファイルのコピー

$ ls (ディレクトリの中身を表示)

a.out hello.c

$ cp hello.c test.c

$ ls

a.out test.c hello.c

$ cat test.c

で、コピーされたファイルを確認してみよう。

別のファイル名でコピー

Page 18: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

18

cpのつづき

$ ls

a.out test.c hello.c

$ mkdir work2

$ cp test.c work2/

※ work2に test.c があるか確かめてみよう

指定したディレクトリの中へコピー

Page 19: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

19

mv (move)ファイルの移動/ファイル名の変更

$ ls

a.out test.c hello.c work2

$ mv test.c test2.c

$ ls

a.out test2.c hello.c work2

$ mv test2.c work2/

$ ls

a.out hello.c work2

ファイル名変更

指定したディレクトリの中へ移動

Page 20: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

20

rm (remove)ファイルの削除

$ cd work2

$ ls

test.c test2.c

$ rm -i test2.c オプション「-i」を付けると削除の確認ができる。 yを押してから を押すと本当に削除される

nを押してから を押すと削除されない

逆に、オプション「-f」を付けると削除の確認なしでファイルを消すことができる。

Page 21: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

21

rmのつづき

$ cd ..

$ ls

a.out hello.c work2

$ rmdir work2

$ rm –r work2

オプション「–r」を付けるとディレクトリの中身を再帰的に削除し、ディレクトリも削除

$ ls

a.out hello.c

work2の中にはファイルがあるので、rmdirではディレクトリを削除できない

Page 22: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

22

次回の予定

• 変数・標準入出力

Page 23: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

(付録)Emacs上での操作

キー操作の表示法 C-<文字> “Ctrl”キーを押さえながら

<文字>キーを押す

M-<文字> “Esc”キーを押した後 <文字>キーを押す

例 C-x, C-f

例 M-x, M-<

Page 24: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

Emacs上での操作

C-g

キー操作を間違えたら

コマンドの中止、取り消し

その他、困ったときも試してみよう

Page 25: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

Emacsの起動方法

・“ターミナル”上で

$ emacs

$ emacs <ファイル名> すでに存在する ファイルを編集 する場合

Page 26: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

Emacsの構成

・テキスト・ウィンドウ ---- 文書の編集 ・モードライン ---- 編集の状態表示 ・エコー領域 ---- メッセージの表示

Page 27: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

Emacsの終了方法 ・キー操作 終了時、保存されていないファイルが存在する場合、 と表示される。通常は“Yes”をクリックするか、 “y”とタイプすることでファイルに保存され終了。

C-x C-c

Save file <ファイル名>?

Page 28: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

ファイルの読み込み

・キー操作 C-x C-f

Find file: / ~

と表示される。 ファイル名を入力し キーを押す。

Page 29: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

カーソルの移動

・1文字ずつ移動 - 上下左右の矢印キー -   C-f : 1文字右へ移動

C-b : 1文字左へ移動

C-p : 1行上へ移動

C-n : 1行下へ移動

Page 30: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

カーソルの移動

・まとめて移動

C-v : 次のページへ移動

M-v : 前のページへ移動

M-f: 1単語分右へ移動

M-b: 1単語分左へ移動

C-a: 行の先頭へ移動

C-e: 行の 後へ移動

M-< : ファイルの先頭へ移動

M-> : ファイルの 後へ移動

Page 31: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

カーソルの移動

・指定した行へ移動

M-x goto-line

Goto line:

と表示される。 目的の行番号を入力し キーを押す。

Page 32: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

日本語入力

C-\ 英数字モードと日本語モードの 切り替え

ローマ字入力により、ひらがなで表示

<Space>

C-k

(ローマ字入力中)漢字変換

(ローマ字入力中)カタカナ変換

Page 33: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

かな漢字変換

C-f 文節の移動(右へ)

C-b 文節の移動(左へ)

C-o 変換候補の文節を伸張

C-i 変換候補の文節を短縮

例 「きょうはてんきがよいです。」 「今日は天気が良いです。」

Page 34: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

テキストの削除

<Delete> : カーソル直前の1文字を削除 C-d : カーソル下の1文字を削除

M-<Delete>: カーソル直前の1単語を削除

M-d : カーソル下の1単語を削除

C-k : カーソルの位置からその行の 後  までを削除

Page 35: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

ファイルの保存

・上書き保存 - キー操作 C-x C-s

Wrote /home/student/ ....

のように表示され、保存完了。

Page 36: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

ファイルの保存

・別名で保存 - キー操作 C-x C-w

Write file: ~/

と表示される。 ファイル名を入力し キーを押す。

Page 37: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

文字列の検索 ・カーソルの位置から下へ検索

・カーソルの位置から上へ検索

C-s

I-search:

と表示。検索したい文字列を入力。 続けてC-sとタイプすることで同じ 文字列を再検索。

C-r

Page 38: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

文字列の置換

M-%

Query replace:

と表示。置換したい文字列[old]を入力し

Query replace [old] with:

と表示。新しい文字列[new]を入力し

Page 39: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

文字列の置換

Query replacing [old] with [new]:

と表示され、カーソルが該当文字列の所 へ移動。 置換する場合は“y”を、しない場合は “n”をタイプ。

Page 40: 情報処理技法 (Cプログラミング)Iogita/lec/c_bak/slide_02.pdf · M-v: 前のページへ移動 M-f:1単語分右へ移動 M-b:1単語分左へ移動 C-a:行の先頭へ移動

文字列の置換(確認なし)

M-x replace-string

Replace string:

と表示。置換したい文字列[old]を入力し

Replace string [old] with:

確認なしで置換終了。

と表示。新しい文字列[new]を入力し