• 検索結果がありません。

計算機プログラミング

N/A
N/A
Protected

Academic year: 2021

シェア "計算機プログラミング"

Copied!
23
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラミング言語

C

1講

(2)

計算機プログラミング

C言語の授業

講義と演習

演習用の課題

次の週にプリントアウトして提出

参考図書

入門ソフトウェアシリーズ①

C言語

河西朝雄

著 ナツメ社

学期末試験あり

筆記、ノート等の持ち込み不可

スライド(

PDF)掲載予定

http://cprog.web.fc2.com/

質問用のメールアドレス

(学籍番号、氏名を明記)

[email protected]

(3)

プログラム作成の手順

① 概略仕様書

システムの大まかな説明

② 基本仕様書

プログラマ向きの実際の

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

③ 詳細仕様書

個々のサブルーチンレベル

の仕様書

(設計書)

フローチャート

④ プログラミング (

C言語)

⑤ 全体のデバッグ

⑥ 完成

(4)

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

FORTRAN BASIC COBOL C C++ JAVA Visual Basic C# 1950 1960 1970 1980 1990 2000 2001 2002 Delphi Pascal B BCPL CPL ALGOL58,60

(5)

C言語の特徴(1)

オペレーティングシステム開発用言語

UNIX)

用途が広い言語

システム言語(低級)~汎用言語(高級)

アセンブリ言語

Fortran、Basicなど

ハード依存が尐ない

移植しやすい

コンパイラ言語

エディタ

コンパイラ

実行

ソースプログラム

)(

オブジェクトプログラム

結果

(6)

C言語の特徴(2)

関数型

メイン関数

main( )

関数の呼び出し関係(階層構造)

フリーフォーマット

自由に、また、コンパクトにプログラムが書ける

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

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

main

関数

A 関数

B 関数

C 関数

D 関数

E 関数

(7)

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

あらかじめ定めている

(8)

簡単なプログラム

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

コメント文

プリプロセッサ(include)

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

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

標準出力関数

""で囲まれた部分を画面 に表示する。 ¥nは改行を意味する。

(9)

プログラムの作成

(.Net編1)

① Windowsでパソコンを起動

② Visual Studio .Net の起動

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

→[Microsoft Visual Studio 2010 Express] →[Microsoft Visual C++ 2010 Express]

③ 設定の変更 [ツール]メニュー→[設定]→[上級者用の設定] ④ プロジェクトの作成 [ファイル]メニュー→[新規作成]→[プロジェクト] プロジェクトの種類 : Win32 テンプレート : Win32コンソールアプリケーション プロジェクト名 : cprog 場所 : マイドキュメント [OK]ボタンをクリックする ⑤ Win32アプリケーションウィザードの設定 [次へ] 追加のオプション :「空のプロジェクト」にチェック [完了]ボタンをクリックする

(10)

プログラムの作成

(.Net編2)

⑥ ソースファイルの追加 ソリューションエクスプローラのソースファイルを右クリック [追加]→[新しい項目の追加] カテゴリ : コード テンプレート : C++ファイル ファイル名 : 01hello.c (必ず「.c」を付けること) [追加]ボタンをクリック ⑦ ソースコードの入力(最も簡単なプログラム) /* 01hello.c (2011/04/15) */ /* 学籍番号 氏名 */ #include <stdio.h> main( ) { printf("Hello C World !! ¥n"); } ⑧ 保存 [ファイル]メニュー→[すべてを保存] ⑨ コンパイルと実行 [デバッグ]メニュー→[デバッグなしで開始] [はい]ボタンをクリックする

(11)

プログラムの作成

(Cygwin編1)

① Windowsでパソコンを起動

② Cygwinの起動

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

→[Cygwin Bash Shell]

③ 授業用のディレクトリ(フォルダ)を作成(今回のみ) > mkdir cprog ④ カレントディレクトリ(フォルダ)の移動 > cd cprog ⑤ エディタの起動(メモ帳 or Terapad) ⑥ ソースファイルの作成 (メモ帳を用いてC言語のコードを入力)

(12)

プログラムの作成

(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] (実行ファイル名の前に、「./」をつける)

(13)

エラーを体験

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

■ ...¥01hello¥01hello.c(6) : error C2143: 構文エラー : ';' が '}' の 前にありません。 ■ エラー表示をダブルクリックすると対象の行にカーソルが移動す る。 ■ ';'を忘れたときは次の行にエラーが出る! ●

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

■ error LNK2019: 未解決の外部シンボル _print が関数 _main で

参照されました。

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

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

■ ...¥01hello¥01hello.c(5) : error C3872: '0x3000': この文字を

(14)

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 結果

(15)

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つ表示

(16)

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進数 実数

(17)

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位 左詰め

(18)

練習問題

● 次に示す数字をオプション指示子を利用して、小数点の位置を合わ せて表示しましょう。 ● ソースファイル先頭のコメント(/* ~ */)には、ファイル名、作成日、 学籍番号、氏名を入力しましょう ● ファイル名:01point.c ● 以下の数字を解答例のように合わせましょう. ■ 12345 ■ 123 ■ 12 ■ 1.2345 ■ 123.45 ■ 123.45 解答例

(19)

次のプログラムの作成手順

① 現在のファイルの削除(クリア) ソリューションエクスプローラのファイル名(01hello.c)を右クリック [削除]→[クリア]ボタンをクリック ② 次のソースファイルの追加 ソリューションエクスプローラのソースファイルを右クリック [追加]→[新しい項目の追加] カテゴリ : コード テンプレート : C++ファイル ファイル名 : 01point.c (必ず「.c」を付けること) [追加]ボタンをクリック ③ ソースコードの入力(次のプログラム) ④ 保存 [ファイル]メニュー→[すべてを保存] ⑤ コンパイルと実行 [デバッグ]メニュー→[デバッグなしで開始] [はい]ボタンをクリックする

(20)

ヒント

/* 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"); }

(21)

プログラミンでプログラミング体験

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

「プログラミン

| 文部科学省」をクリック

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

(22)

体験

(23)

簡単なプログラムの作成

1.

犬をジャンプさせる(ジャンピン)

2.

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

3.

音を鳴らす(オンプン)

4.

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

5.

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

6.

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

7.

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

8.

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

9.

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

10.

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

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

11.

音を加える(オンプン)

参照

関連したドキュメント

この資料には、当社または当社グループ(以下、TDKグループといいます。)に関する業績見通し、計

口腔の持つ,種々の働き ( 機能)が障害された場 合,これらの働きがより健全に機能するよう手当

て当期の損金の額に算入することができるか否かなどが争われた事件におい

統制の意図がない 確信と十分に練られた計画によっ (逆に十分に統制の取れた犯 て性犯罪に至る 行をする)... 低リスク

・水素爆発の影響により正規の位置 からズレが生じたと考えられるウェル

モノづくり,特に機械を設計して製作するためには時

当該発電用原子炉施設において常時使用さ れる発電機及び非常用電源設備から発電用

洋上環境でのこの種の故障がより頻繁に発生するため、さらに悪化する。このため、軽いメンテ