プログラミング言語 c - fc2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング...

23
プログラミング言語 C 1C言語への導入

Upload: others

Post on 06-Apr-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

プログラミング言語 C

第1講

C言語への導入

Page 2: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

計算機プログラミング ● C言語の授業

■ 講義と演習

●演習用の課題 ■ 次の週にプリントアウトして提出

●参考図書 ■ 入門ソフトウェアシリーズ① C言語 河西朝雄 著 ナツメ社

●学期末試験あり ■ 筆記、ノート等の持ち込み不可

●スライド(PDF)掲載予定 ■ http://cprog.web.fc2.com/

●質問用のメールアドレス(学籍番号、氏名を明記) ■ [email protected]

Page 3: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

プログラム作成の手順 ① 概略仕様書 システムの大まかな説明

② 基本仕様書 プログラマ向きの実際の

プログラムに即した仕様書

③ 詳細仕様書 個々のサブルーチンレベル

の仕様書

(設計書) (フローチャート)

④ プログラミング (C言語)

⑤ 全体のデバッグ

⑥ 完成

Page 4: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

主なプログラム言語の流れ

FORTRAN

BASIC

COBOL

C

C++

JAVA

Visual Basic

C#

1950 1960 1970 1980 1990 2000 2001 2002

Delphi

Pascal

B BCPL

CPL

ALGOL58,60

Page 5: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

C言語の特徴(1) ● オペレーティングシステム開発用言語

■ (UNIX)

● 用途が広い言語 ■ システム言語(低級)~汎用言語(高級)

アセンブリ言語 Fortran、Basicなど

● ハード依存が尐ない ■ 移植しやすい

● コンパイラ言語 ■ エディタ → コンパイラ → 実行 (ソースプログラム)(オブジェクトプログラム) (結果)

Page 6: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

C言語の特徴(2) ● 関数型

■ メイン関数 main( ) 関数の呼び出し関係(階層構造)

● フリーフォーマット ■ 自由に、また、コンパクトにプログラムが書ける

■ 利点:見やすいプログラムが用意に書ける

■ 欠点:努力をしないと見にくいプログラムになる

main 関数

A 関数 B 関数 C 関数

D 関数 E 関数

Page 7: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

C言語で使用される単語 ● 分類

■ 予約語 ■ 演算子 ■ 関数名 標準関数

ユーザー関数

■ 変数名 ■ 定数

● 予約語 auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while

あらかじめ定めている

プログラマが定める

Page 8: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

簡単なプログラム プログラム例

/* 01hello.c (2011/04/15) */

/* 学籍番号 氏名 */

#include <stdio.h>

main( )

{

printf("Hello C World !! ¥n");

}

コメント文

プリプロセッサ(include) ソースプログラムに使われる標準関数の宣言が書かれたヘッダーファイルを添付する役目をしている。

メイン関数(ここから実行開始)

標準出力関数 ""で囲まれた部分を画面

に表示する。 ¥nは改行を意味する。

Page 9: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

プログラムの作成(.Net編1) ① Windowsでパソコンを起動

② Visual Studio .Net の起動 [スタート]ボタン→[すべてのプログラム] →[Microsoft Visual Studio 2010 Express] →[Microsoft Visual C++ 2010 Express]

③ 設定の変更 [ツール]メニュー→[設定]→[上級者用の設定]

④ プロジェクトの作成 [ファイル]メニュー→[新規作成]→[プロジェクト] プロジェクトの種類 : Win32 テンプレート : Win32コンソールアプリケーション プロジェクト名 : cprog 場所 : マイドキュメント [OK]ボタンをクリックする

⑤ Win32アプリケーションウィザードの設定 [次へ] 追加のオプション :「空のプロジェクト」にチェック [完了]ボタンをクリックする

Page 10: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

プログラムの作成(.Net編2) ⑥ ソースファイルの追加

ソリューションエクスプローラのソースファイルを右クリック [追加]→[新しい項目の追加] カテゴリ : コード テンプレート : C++ファイル ファイル名 : 01hello.c (必ず「.c」を付けること) [追加]ボタンをクリック

⑦ ソースコードの入力(最も簡単なプログラム) /* 01hello.c (2011/04/15) */ /* 学籍番号 氏名 */ #include <stdio.h> main( ) { printf("Hello C World !! ¥n"); }

⑧ 保存 [ファイル]メニュー→[すべてを保存]

⑨ コンパイルと実行 [デバッグ]メニュー→[デバッグなしで開始] [はい]ボタンをクリックする

Page 11: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

プログラムの作成(Cygwin編1) ① Windowsでパソコンを起動

② Cygwinの起動

[スタート]ボタン→[すべてのプログラム] →[Cygwin] →[Cygwin Bash Shell]

③ 授業用のディレクトリ(フォルダ)を作成(今回のみ) > mkdir cprog

④ カレントディレクトリ(フォルダ)の移動 > cd cprog

⑤ エディタの起動(メモ帳 or Terapad)

⑥ ソースファイルの作成 (メモ帳を用いてC言語のコードを入力)

Page 12: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

プログラムの作成(Cygwin編2) ⑦ ソースコードの入力(最も簡単なプログラム)

/* 01hello.c (2011/04/15) */ /* 学籍番号 氏名 */ #include <stdio.h> main( ) { printf("Hello C World !! ¥n"); }

⑧ 保存してエディタ(メモ帳)を終了

⑨ コンパイル > gcc 01hello.c -o 01hello -o:実行ファイルのファイル名指定 (オプションをつけないと実行ファイルはa.exeとなる)

⑩ 実行 > ./01hello [Enter] (実行ファイル名の前に、「./」をつける)

Page 13: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

エラーを体験 ● ';'を忘れたときのエラー

■ ...¥01hello¥01hello.c(6) : error C2143: 構文エラー : ';' が '}' の前にありません。

■ エラー表示をダブルクリックすると対象の行にカーソルが移動する。

■ ';'を忘れたときは次の行にエラーが出る!

● printfをprintとしたときのエラー

■ error LNK2019: 未解決の外部シンボル _print が関数 _main で参照されました。

■ print関数はないのでLINKエラーになる。

● 全角のスペースが入ってしまった場合のエラー

■ ...¥01hello¥01hello.c(5) : error C3872: '0x3000': この文字を識別子で使用することはできません

Page 14: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

printfで用いる制御文字 ● 画面出力を制御する特殊な文字(制御文字)

● 使用例

■ printf("Hello¥n¥tC World"); 改行

タブ位置に移動

制御文字 記号 意 味

¥a BEL ベル音を鳴らす

¥b BS 1文字戻る(バックスペース,backspace)

¥f FF 改ページ(form feed)

¥n NL 改行(new line)

¥r CR 復帰,行の先頭に戻る(carriage return)

¥t HT 水平タブ,タブ位置に移動する(horizontal tab)

¥¥ ¥ 円マークを表示する(yen mark)

¥' ' 単引用符を表示する(single quotation)

¥" " 2重引用符を表示する(double quotation)

¥? ? 疑問符を表示する(question mark)

¥0 NUL ヌル、内部コードとしてゼロ、表示はされない(null)

Hello C World

結果

Page 15: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

printfで用いる変換指定 (1) ● 出力関数で、数値や文字列を表示するための変換指定

変換指定 意 味

%c 1文字を表示

%s 文字列を表示

%d, %i 整数を10進数で表示

%o 整数を8進数で表示

%x, %X 整数を16進数で表示(xは小文字で、Xは大文字で表示)

%u 整数を符号なし10進数で表示

%f 実数を実数形式で表示(123.4567)

%e, %E 実数を指数形式で表示(1.234567e+002)×102のこと

%g 上記%f または%e の短い方で表示

%p アドレスを表示

%% %を1つ表示

Page 16: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

printfで用いる変換指定 (2)

●変換指定の使用例

■ printf(" %c ¥n", 'C');

■ printf(" %s ¥n", "Hello");

■ printf(" %d ¥n", 100);

■ printf(" %o ¥n", 100);

■ printf(" %x ¥n", 100);

■ printf(" %f ¥n", 3.14);

■ printf(" %d : %f ¥n", 10, 3.14);

10の値を10進数で表示 3.14の値を実数で表示

C

Hello

100

144

64

3.140000

10 : 3.140000

結果

1文字

文字列

10進数

8進数

16進数

実数

Page 17: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

printfで用いる変換指定 (3) ● 変換指定のオプション指示子

%[フラグ][0][フィールド幅][ . 精度]変換文字

フラグ :+右詰め,-左詰め,(省略:右詰め)

0 :数値のない桁を0で埋める(省略:空白)

フィールド幅 :全体の桁数を指定(省略:必要な桁数)

精度 :実数なら小数の桁数,整数なら最小桁数, :文字なら最大文字数

● 使用例

■ printf(" %5d ¥n %5d¥n", 10, 100);

■ printf(" %05d ¥n %05d¥n", 10, 100);

■ printf(" %6.2f ¥n %6.2f¥n", 3.14, -12.3);

■ printf(" %-6.2f ¥n %-6.2f¥n", 3.14, -12.3);

10 100

結果

00010 00100

3.14 -12.30

3.14 -12.30

5桁右詰め

0を付加

小数第2位

左詰め

Page 18: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

練習問題 ● 次に示す数字をオプション指示子を利用して、小数点の位置を合わせて表示しましょう。

● ソースファイル先頭のコメント(/* ~ */)には、ファイル名、作成日、学籍番号、氏名を入力しましょう

● ファイル名:01point.c

● 以下の数字を解答例のように合わせましょう.

■ 12345

■ 123

■ 12

■ 1.2345

■ 123.45

■ 123.45

解答例

Page 19: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

次のプログラムの作成手順 ① 現在のファイルの削除(クリア)

ソリューションエクスプローラのファイル名(01hello.c)を右クリック [削除]→[クリア]ボタンをクリック

② 次のソースファイルの追加 ソリューションエクスプローラのソースファイルを右クリック [追加]→[新しい項目の追加] カテゴリ : コード テンプレート : C++ファイル ファイル名 : 01point.c (必ず「.c」を付けること) [追加]ボタンをクリック

③ ソースコードの入力(次のプログラム)

④ 保存 [ファイル]メニュー→[すべてを保存]

⑤ コンパイルと実行 [デバッグ]メニュー→[デバッグなしで開始] [はい]ボタンをクリックする

Page 20: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

ヒント /* 01point.c (2011/04/15) */

/* 学籍番号 氏名*/

#include <stdio.h>

main( )

{

printf(" ¥n", 12345 );

printf(" ¥n", 123 );

printf(" ¥n", 12 );

printf(" ¥n", 1.2345 );

printf(" ¥n", 123.45 );

printf(" ¥n", 123.45 );

printf("¥n");

}

Page 21: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

プログラミンでプログラミング体験 ● Googleで「プログラミン」を検索

■ 「プログラミン | 文部科学省」をクリック

■ 「プログラミンであそぶ」をクリック

Page 22: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

体験 ● プログラミンを使ってプログラムを作成しましょう.

Page 23: プログラミング言語 C - FC2cprog.web.fc2.com/2011lec01.pdf計算機プログラミング C言語の授業 講義と演習 演習用の課題 次の週にプリントアウトして提出

簡単なプログラムの作成 1. 犬をジャンプさせる(ジャンピン)

2. スペースを押したときにジャンプさせる(キーボン)

3. 音を鳴らす(オンプン)

4. 何回も繰り返せるようにする(ズットン)

5. 背景を付ける(はいけい)

6. 絵を描く(小さなボール)

7. ボールを動かす(ヒダリン)

8. 何回も繰り返せるようにする(ズットン,リセットン)

9. ボールが爆発した絵を描く(ミエルン)

10. ボールが犬に当たったら爆発する

(イッペンニン,ズットン,ブツカッタン,キガエルン)

11. 音を加える(オンプン)