プログラミング入門 II 2010年後期 プログラミング入門 II 担 当 教 員 : 上村 技術スタッフ: 月川、北本、細島 ティーチング・アシスタント(TA): 阿部、遠藤、川上、川田、染谷 高橋、宮崎、宮地、和田 100%なら任意 レポート満点 レポート:必須2回、任意2回の計4回 コースナビ: C言語入門編 達成度60%以上 出席: 2/3以上 10回分以上 20分以内の遅刻は0.5回 20分以上の遅刻は入室は認めるが、出席は0回 単位修得の要件: 10回分以上 出席:2/3以上 レポート:必須2回(10点) コースナビ:C言語入門編 達成度60%以上 「期末試験(80点) + レポート(20点)」で60点以上 注意! レポートのファイルは保存しておくこと 成績評価法: 上記要件を満足した者について 期末試験80点+レポート合計20点=100点満点 のうち 90点以上:秀、80点以上:優、70点以上:良、60点以上:可 講義予定(前半): 回 1 月 日 10月1日 内 容 (予定) レポート 講義の概要・コースナビの説明 前期の復習(演算子、制御文) 2 10月8日 第6章 配 列 ~配列の応用~ 3 10月15日 第9章 ポインタ ~ポインタの理解~ 4 5 10月22日 10月29日 第9章 ポインタ 第1回レポート(必須) ~配列とポインタ~ (10/29提出) 第10章 関 数 第11章 関数について 6 11月5日 第10章 関 数 ~関数とポインタ~ 第11章 関数について ~関数引数~ 7 11月12日 第10章 関 数 ~関数と配列、関数と2次元配列~ 第12章 関数と配列 8 11月19日 第10章 関 数 第2回レポート(任意) ~関数の再帰呼び出し~ (11/26提出) 講義予定(後半): 回 月 日 内 9 11月26日 10 12月3日 第15章 文字列処理 11 12月17日 第14章 ファイル操作 容 (予定) レポート 第13章 文字の取り扱い方 12月10日 は休講 第3回レポート(必須) (1/21提出) 12 12月24日 第16章 構造体 ~構造体とその配列~ 13 14 1月21日 1月28日 第16章 構造体 第4回レポート(任意) ~関数と構造体~ (2/4提出) 第17章 その他の制御文 第18章 マクロ 15 2月4日 16 2月11日 2月4日 は補講 ゲームの作成 期末テスト 各自のコースナビ「C言語入門編」の進度を毎週、発表予定。 積極的に自習を進めて下さい。 コマンドプロンプトを用いた プログラミング コマンドプロンプトの起動と終了 最初に覚えるコマンド プログラムの編集 プログラムのコンパイルと実行 今日のポイント コマンドプロンプトでプログラミング プログラミング入門Ⅱの準備 マイ ドキュメント(Z:\ または 'fs\home\students'の t1029XX)に新しいフォルダを作る。 nyumon2 と名前をつける。 この授業では、基本的にこのフォルダ内に プログラムを作ることを前提とする。 プログラム例のソースファイルは ex で始める。ピ リオドは _ に直す。 プログラム例 5.5.1 → ex5_5_1.c コマンドプロンプトの起動と終了 起動(マウス) [スタート] を<クリック> [すべてのプログラム(P)] [Microsoft Visual Studio 2005] [Visual C++コマンドプロンプト] を<クリック> 終了(キーボード) 「exit」 と入力して <Enter> コマンドプロンプトはCUI (Character-based User Interface)でコマンドを実行 終了(マウス) x ボタンを<クリック> 右上の [x] 練習:実際にコマンドプロンプトを起動して終了せよ。 コマンドプロンプトのショートカットを デスクトップに作成 [スタート]を<クリック> [すべてのプログラム(P)] [Microsoft Visual Studio 2005] [Visual C++コマンドプロンプト] を <右クリック> [送る(N)] [デスクトップ (ショートカットを作成)] を<クリック> 「作業フォルダ」の設定 デスクトップの「Visual C++コマンドプロンプト」 の ショートカットを <右クリック> [プロパティ(R)] を<クリック> 一番下 「Visual C++コマンドプロンプトのプロパティ」 ウィンドウ [ショートカット] タブを選択 [作業フォルダ(S):] 欄に起動時のデフォルトパス名 として「Z:\nyumon2」を記入 [ OK ] ボタンを<クリック> 最初に覚えるコマンド notepad メモ帳によるテキストファイル編集 devenv (development environment) Visual Studioのエディタによるソースファイル編集 dir (directory) ディレクトリ(フォルダ)内のファイル一覧表示 cl (compile & link) コンパイルとリンクによる .exe ファイル作成 プログラムの作成・編集 コマンドプロンプトでメモ帳を起動 Z:\nyumon2>notepad hello.c /* hello world program */ #include <stdio.h> int main() { printf("Hello world!\n"); return 0; } Z:\nyumon2>hello.c すでにソースファイルがある場合は、 ファイル名だけで devenv が立ち上がる プログラムのコンパイルと実行 CLコマンド(compile and link) Z:\nyumon2>cl hello.c 実行ファイル確認 Z:\nyumon2>dir 実行 Z:\nyumon2>hello Z:\nyumon2 のディレクトリ 2010/10/01 2010/10/01 2010/10/01 2010/10/01 2010/10/01 13:30 <DIR> 13:30 <DIR> 13:40 109 13:45 610 13:45 53,248 . .. hello.c hello.obj hello.exe さらに詳しく知りたい人は以下を参照のこと http://www.ced.is.utsunomiya-u.ac.jp/lecture/2010/common/vs2005/ command_prompt.php PADと構造化プログラミング PADとは 処理の方向:上から下へ 箱を縦線で連接→ブロック 判断・選択、繰返し:右へネスト(入れ子) 3種の繰返し Problem Analysis Diagram 構造化フローチャートの一種 goto 文のない プログラミング 前判定(while)、後判定(do-while)、問題向き(for) 定義、引用 PADの例 ネストレベル1 処理1 処理2-1 定義 = 繰返し(for)2 判断2-2 ネストレベル2 処理2-2-1 処理2-2-2 処理3 PADの制御構造(1) 連接(複合文, ブロック) { 文; 文; } 文 文 判断(if 文) if (条件) 文1; else 文2; 文1 条件 文2 PADの制御構造(2) 選択(if 文,switch 文) if (条件1) 文1; else if (条件2) 文2; else 文3; switch(式) { case 定数1: 文1; break; case 定数2: 文2; break; default: 文3; } 条件1 条件2 文1 文2 文3 式=定数1 式=定数2 文1 文2 文3 PADの制御構造(3) 繰返し(while 文) while (条件) { 文; : 文; } 文 条件 : 文 PADの制御構造(4) 繰返し(for 文) for (変数=初期値;変数<=終値;変数++) { 文; 文; } 文 変数=初期値,…,終値 文 2項演算子(付録A.3) 代入(=, +=, -=, *=, /=, %=,…) 論理(||, &&) ビット(|, ^, &) 関係、等値(==, !=, >=, >, <=, <) ビットシフト(>>, <<) 算術(+, -, *, /, %) 剰余 優先順位 単項演算子(付録A.3) キャスト((int), (float), (double), …) 論理(!) ビット(~) 符号(+, -) ポインタ(&, *) sizeof 前置インクリメント(++)、デクリメント(--) 後置インクリメント(++)、デクリメント(--) 優先順位 よくやるミス (bug1.c) #include <stdio.h> int main() 何がおかしい? { int a=2010, b=1992; printf("%d は %d と比べて", a, b); if (a = b) printf("等しい.\n"); else if (a > b) printf("大きい.\n"); else printf("小さい.\n"); return 0; } 自動型変換 定数 10 10L 10U 10. 0.5L .5F 代入演算 小数点なし: 整数定数 小数点あり: 実数定数 接尾語で型指定可 実数型←整数: 精度が落ちる可能性 整数型←実数: 小数の切捨て、オーバーフロー 算術演算 両方とも整数: 整数演算 一方が実数: 実数演算 5 / 3 = 1, 5 % 3 = 2 5. / 3 = 1.6666666... 本日のパズル 次のプログラムは何を出力するか? main() { int x; x x x x } = - 3 + 4 = 3 + 4 = - 3 * 4 = ( 7 + 6 * % % ) 5 5 % 6 5 6; 6; / 5; / 2; printf("%d\n",x); printf("%d\n",x); printf("%d\n",x); printf("%d\n",x);
© Copyright 2024 ExpyDoc