PowerPoint プレゼンテーション

Similar documents
Prog1_6th

02: 変数と標準入出力

02: 変数と標準入出力

Microsoft Word - Cプログラミング演習(12)

ポインタ変数

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

memo

ポインタ変数

PowerPoint プレゼンテーション

slide5.pptx

kiso2-09.key

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

PowerPoint プレゼンテーション

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

プログラミング基礎

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

講習No.9

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡

Cプログラミング1(再) 第2回

Microsoft PowerPoint - program.ppt [互換モード]

プログラミング実習I

DVIOUT

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

第1回 プログラミング演習3 センサーアプリケーション

< F2D837C E95CF CF68A4A94C5816A2E6A>

講習No.12

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - C_Programming(3).pptx

Microsoft PowerPoint - kougi2.ppt

PowerPoint プレゼンテーション - 物理学情報処理演習

Microsoft Word - no12.doc

Prog1_12th

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

Microsoft Word - Cプログラミング演習(3)

Taro-ファイル処理(公開版).jtd

CプログラミングI

program7app.ppt

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

Microsoft Word - no15.docx

Microsoft Word - no103.docx

2006年10月5日(木)実施

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Prog1_10th

Microsoft PowerPoint - kougi6.ppt

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

PowerPoint Presentation

Microsoft Word - 3new.doc

Microsoft PowerPoint - 計算機言語 第7回.ppt

プログラミング基礎

スライド 1

kiso2-06.key

6 関数 6-1 関数とは少し長いプログラムを作るようになると 同じ処理を何度も行う場面が出てくる そのたびに処 理を書いていたのでは明らかに無駄であるし プログラム全体の見通しも悪くなる そこで登場す るのが 関数 である 関数を使うことを 関数を呼び出す ともいう どのように使うのか 実際に見て

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

PowerPoint プレゼンテーション

Microsoft Word - Cプログラミング演習(8)

C¥×¥í¥°¥é¥ß¥ó¥° ÆþÌç

Microsoft Word - no11.docx

gengo1-2

Prog1_15th

memo

Microsoft PowerPoint - CproNt02.ppt [互換モード]

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Microsoft PowerPoint - kougi7.ppt

Microsoft PowerPoint - 14Chap17.ppt

Microsoft Word - no206.docx

演習課題No12

II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

cp-7. 配列

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

情報処理演習 B8クラス

ポインタ変数

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 (

B演習(言語処理系演習)第一回

Taro-リストⅢ(公開版).jtd

Microsoft Word - no02.doc

Microsoft PowerPoint - 11.pptx

Taro-再帰関数Ⅱ(公開版).jtd

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - kougi4.ppt

Microsoft Word - no202.docx

Microsoft Word - Cプログラミング演習(10)

プログラミング基礎

PowerPoint プレゼンテーション

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

PowerPoint プレゼンテーション

C言語入門

目次

初歩のC言語ターミナル_2014_May.pages

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

物質工学科 田中晋

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Prog1_2nd

gengo1-12

/* do-while */ #include <stdio.h> #include <math.h> int main(void) double val1, val2, arith_mean, geo_mean; printf( \n ); do printf( ); scanf( %lf, &v

DVIOUT

C プログラミング 1( 再 ) 第 4 回 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 1

:30 12:00 I. I VI II. III. IV. a d V. VI

Microsoft PowerPoint - 10Com2.ppt

Transcription:

プログラミング応用 第 15 回 知的情報システム学科張 暁華 プログラミング応用 1

授業のマナー ------ 人の話を聞くときの社会常識 1. 欠席者のかわりに登録を行わない 倫理に反することをやらない あなたの信を問われている蟻の穴から堤防が決壊 2. 私語しないこと : 質問 意見は手を挙げて大きな声ではっきりと意思表示 3. 授業以外のことをしない : 携帯をカバンにいれ イヤホンを使って音楽等を聞かない授業中ゲームを遊ばない 授業と関連のないページをアクセスしない 4. 原則として 授業中に無断で教室から出入りしないこと 5. 机の上突っ伏して寝ないこと プログラミング応用 2

授業内容 第 01 回ガイダンスー C 言語最低限の復習第 02 回繰り返し制御構造第 03 回多数のデータを扱う配列第 04 回関数の基礎第 05 回複数の引数を持つ関数第 06 回構造体の基本第 07 回構造体と関数第 08 回ポインタの基本第 09 回ポインタと配列第 10 回ポインタと構造体第 11 回ポインタと関数第 12 回ファイルの基本第 13 回ファイル処理の応用第 14 回総合演習 (1) 第 15 回総合演習 (2) プログラミング応用 3

総合演習 Lack Number Search コマンドライン 簡易電卓 しっかり理解しておく! 実用上のプログラムを作成するには欠かせないものだ! プログラミング応用 4

Lack Number Search この演習 ex15_1.c では 判断力や瞬発力などを磨きながら右脳 ( 本当?) をトレーニングするソフトを作成する 1 から 9 までの数字を一つ抜いて無作為の順で表示し その抜いた数字を瞬時に見つけさせるトレーニングである 例 : 2 6 1 5 3 9 4 8 の中に 7 が抜かれた 必要な知識 : 条件文 繰り返し 配列 ポインタ 関数 時間の計り方法など プログラミング応用 5

Lack Number Search ex15_1.c 例 :1 から 9 まで 1 桁の数字を八つ ( 一つを抜く ) 提示し プレーヤは 欠けた数字を瞬時に見つけ入力する システムが 10 回数字を提示する 毎回の数字は無作為に順序を決める 抜く数字を無作為に決める 10 回のプレー時間を図る #include <time.h> #include <stdio.h> #include <stdlib.h> #define MAX_STAGE 10 // 挑戦回数 void swap(int *x,int *y); void dispcopy(int *dgt, int *a, int x); void shuffle(int *a); プログラミング応用 6

Lack Number Search int main(void) { int i, j, stage,x; int dgt[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9; int a[8]; // 表示用 int no; // 読み込んだ値 double jikan; // 時間 clock_t start, end; // 開始時刻 終了時刻 srand(time(null)); // 乱数の種を設定 printf(" 毎回 1から9までの数字を一つ抜きで提示する n"); printf(" 欠けている数字を入力してください n"); start = clock(); // 開始時刻 プログラミング応用 7

Lack Number Search for (stage = 0; stage < MAX_STAGE; stage++) { x = rand() % 9; // 抜きたい要素番号を乱数で生成 //x 番目の要素を飛ばしてdgtを表示用 aにコピー dispcopy(dgt, a, x); // 表示用数字をシャーフルする shuffle(a); for (i = 0; i < 8; i++) // 全要素を表示 printf("%d ", a[i]); printf(":"); while(1){ scanf("%d", &no); if(no!= dgt[x]){ // 不正解 printf(" a 頑張ろう!"); else break; // 正解 プログラミング応用 8

Lack Number Search end = clock(); // 終了時刻 // 秒数を計算 jikan = (double)(end - start) / CLOCKS_PER_SEC; printf("%.1f 秒かかりました n", jikan); if (jikan > 25.0) printf(" 鈍すぎます n"); else if (jikan > 20.0) printf(" 少し鈍いですね n"); else if (jikan > 17.0) printf(" まあまあですね n"); else printf(" 素早いですね n"); return 0; プログラミング応用 9

Lack Number Search void swap(int *x,int *y) { int t; t = *x; *x = *y; *y = t; return; void dispcopy(int *dgt, int *a, int x) { int i, j; i = j = 0; while (i < 9) { if (i!= x) a[j++] = dgt[i]; i++; return; //dgt[x] を飛ばしてコピー プログラミング応用 10

Lack Number Search void shuffle(int *a) { int i, j; for (i = 7; i > 0; i--) { // 配列 aをシャッフル j = rand() % (i + 1); //iとjの要素を交換? if (i!= j) swap(&a[i], &a[j]); // 交換する return; プログラミング応用 11

コマンドライン いままでのプログラムの main 関数は 次の二つのカタチ void main(void) int main(void) どちらも引数を受け取らない ところで Linux 入門授業で gcc -o abc abc.c をよく使っている 実は この一行はコマンドラインで -o abc abc.c は オプションや引数と呼ばれ gcc コマンドに渡される プログラミング応用 12

コマンドの引数 コマンドで引数を受け取るのは 次のように書く void main(int argc, char *argv[]) argc の中にコマンドを含む オプションや引数の数 argv の中にコマンドラインに現れる文字列の組 例えば prog abc def 3 であれば プログラム名は prog で abc, def と 3 はそれぞれ引数である プログラミング応用 13

コマンドの確認例 ex15_2.c 例 : コマンドラインの引数などを表す文字列を出力せよ 引数などを半角空白で区切ること #include <stdio.h> void main(int argc, char *argv[]) { int i; printf("argc = %d n",argc); for(i=0;i<argc;i++) printf("argv[%d]: %s n", i, argv[i]); プログラミング応用 14

数字文字列を数値へ変換 数字文字列とは 数字や小数点で構成される文字列である たとえば 123 は文字列で 数値ではない 123 は数値である 関数 atoi で文字列 123 を数値 123 へ変換できる ( 整数 ) 関数 atof で文字列 123.45 を数値 123.45 へ変換できる ( 浮動小数点数 ) プログラミング応用 15

簡易電卓 ex15_3.c 例 : コマンドライン入力より 足し算と引き算を行う簡易電卓を作成せよ なお 3 + 4 や 3 4 の形式で入力とする 注意 :argv[0]: コマンド名自身が入っている argv[1]: 一つ目の数字 ( 文字列 ) argv[2]: 演算子 argv[3]: 二つ目の数字 ( 文字列 ) プログラミング応用 16

簡易電卓 #include <stdio.h> #include <stdlib.h> void main(int argc, char *argv[]) { char op; float a, b, res; if(4!= argc){ printf(" コマンドラインエラー! n"); exit(-1); a = atof(argv[1]); b = atof(argv[3]); op = argv[2][0]; プログラミング応用 17

簡易電卓 switch(op){ case '+': res = a + b; break; case '-': res = a - b; break; default: printf(" a 間違えた演算子! n"); exit(-1); printf("%f %c %f = %f n",a,op,b,res); プログラミング応用 18

プログラミング応用 課題 1.(hw15_1.c) 例題 ex15_3.c のプログラムを修正し 割り算 / 掛け算 * を演算できるようにせよ 提出 URL: http://cat.cc.it-hiroshima.ac.jp/~zhao/lect/2017/pa/lec15/ プログラミング応用 19