プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.

Slides:



Advertisements
Similar presentations
プログラミング演習( 2 組) 第 9 回
Advertisements

情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
初年次セミナー 第8回 データの入力.
情報処理 第12回.
プログラミング演習(1組) 第7回
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
プログラミング基礎I(再) 山元進.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
プログラミング演習(2組) 第12回
第13回 プログラミングⅡ 第13回
IT入門B2 (木曜日1限) 第一回 講義概要 2004年月9日30日.
放射線の計算や測定における統計誤差 「平均の誤差」とその応用(1H) 2項分布、ポアソン分布、ガウス分布(1H) 最小二乗法(1H)
シミュレーション物理7 乱数.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
湘南工科大学 2013年12月10日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
情報処理 第13回.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
プログラミング入門2 総合演習課題 2008年 1/7, 1/21 実施 これまでの講義内容についての腕試し
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第7回 条件による繰り返し.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング演習(2組) 第8回
第10回関数 Ⅱ (ローカル変数とスコープ).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
後期中間試験練習問題 12月3日(月)9:00~ 第3演習室.
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング入門2 第11回 情報工学科 篠埜 功.
前回の練習問題.
第7回 条件による繰り返し.
第9回関数Ⅰ (簡単な関数の定義と利用) 戻り値.
プログラミング入門2 第11回 情報工学科 篠埜 功.
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
第4回 ファイル入出力方法.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
疑似乱数, モンテカルロ法によるシミュレーション
プログラミング入門2 総合演習課題 2008年 12/22(月), 2009年 1/14(水) 実施 これまでの講義内容についての腕試し
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング演習I 2003年4月30日(第3回) 木村巌.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
プログラミング演習I 2003年7月2日(第11回) 木村巌.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
第14回 前半:ラムダ計算(演習付) 後半:小テスト
第5回 プログラミングⅡ 第5回
情報処理 第13回.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
標準入出力、変数、演算子、エスケープシーケンス
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功

次回について 次回(第14回)は12/24(金)です。

今日と次回の内容 これまでの学習内容を用いて、少し複雑な問題を3問(+発展課題2問)解く。 TAに確認してもらう期限: 第14回の終了時(16:10)までとする。これまでの課題についても第14回の終了時まで受け付ける。

期末試験について 日時 第15回 1/17(月) 3限のみ 場所 4107教室 持ち込み不可 出題範囲: 第1回から第14回まですべて 日時 第15回 1/17(月) 3限のみ 場所 4107教室 持ち込み不可 出題範囲: 第1回から第14回まですべて 出題形式:中間試験と同様とする予定。

総合演習基本課題1 C言語の(構文誤りがあるかもしれない)プログラムのファイルを読み込み、括弧(「(」と「)」)の対応がとれているかどうかを検査するプログラムを書け。プログラム全体において開き括弧の数と閉じ括弧の数が同じで、かつ、プログラムの任意のprefix(接頭辞)において開き括弧の数が閉じ括弧の数以上であるとき、括弧の対応がとれていると定義する。(文字列内やコメント内の括弧は無視すべきだが、この課題では考慮しなくてよいものとする。) [実行例1] 検査するファイル名を入力して下さい: err.c 括弧が正しく対応していません。 [実行例2] 検査するファイル名を入力して下さい: ok.c 括弧は正しく対応しています。 err.cとok.cは講義用のweb pageからダウンロードしてください。 (注意)括弧の対応以外の構文の検査はしません。 err2.cを追加でweb pageに置きました。err2.cは正しく対応していない例です。err.c, ok.c, err2.cの3つのファイルで確認してください。

総合演習基本課題2 100名分の学生の学籍番号と点数(100点満点)が格納されているデータファイル(score.txt、講義用web pageに置いてあるのでダウンロードしてください)を読み込み、これらのデータに対して以下の(1)、(2)を行うプログラムを作成せよ。 (1)右の図のように10点刻みで分布グラフを*を用いて画面に表示し、その後、平均点、最高点、最低点、標準偏差 を画面に表示する。 (2)全員分の偏差値をファイル(ファイル名は自由)に出力する。その際、学籍番号と点数も一緒に以下の順で書きだす。   学籍番号 点数 偏差値 0-10 : **** 11-20 : ******* ・・・ 91-100 : ** 分散 = (データを2乗した値の総和 - (データの総和の2乗 /データ数)) / データ数 標準偏差:分散の正の平方根 偏差 = 個々の値 - 平均値 偏差値 = (偏差 / 標準偏差) * 10 + 50 平均 49.77 最高 100 最低0 標準偏差 28.758948 程度になるはずです。

総合演習基本課題3 二次関数 f(x) = x2 について、x=0から3までの定積分を求めたい。区分求積法(下のグラフで、黄色の部分の面積を求める)により、この積分の近似値を求めよ。 x軸方向の刻み幅Δxを大→小へと変化させ、近似の精度が良くなることを確認せよ。 y 0 右の図では、黄色の長方形の左側をグラフに合わせていますが、右側を合わせても構いません。あるいは真ん中を合わせてもOKです。 3 x Δx

総合演習基本課題2 補足説明 score.txtからの学籍番号、点数の読み取り方法について 平方根について まず、ファイルをオープンする。 scoreFile = fopen (“score.txt”, “r”); 次に、fscanfで一行ずつデータを読み込む。 fscanf (scoreFile, “%s%d”, …………); 平方根について 数学ライブラリlibm.so中のsqrt関数を用いる。(sqrt関数は、double型を受け取り、その平方根をdouble型で返す。) sqrt関数を使うために、math.hをインクルードする。 コンパイルするとき、$ gcc kadai2.c -lm のようにすることにより、sqrt関数のコンパイル結果が格納されているlibm.soというファイルが検索され、リンクされる。

総合演習発展課題1 課題3において、積分範囲をキーボードから受け取るようにせよ。

総合演習発展課題2 モンテカルロ法による円周率の近似値の計算を行うプログラムを書け。 生成する点の個数はキーボードから受け取るようにせよ。 乱数の生成にはMersenne twisterを用いよ。 (実行例) 点の生成回数を入力してください: 1000000 円周率の近似値は3.141200です。

Mersenne Twisterの使い方 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/mt19937ar.html のページから、mt19937ar.sep.tgzをダウンロードする。ダウンロードしたtgzファイルを適当なディレクトリにおき、以下のようにして展開する。 $ tar zxvf mt19937ar.sep.tgz ファイルがそのディレクトリに5つ展開される。その中のmt19937ar.cとmt19937ar.hを用いる。 この演習では、mt19937ar.c中のgenrand_real2()という関数を用いることとする。これは0以上1未満の乱数を生成する。

Mersenne Twisterの使い方(続き) genrand_real2()関数を呼び出すプログラムの先頭において、 #include "mt19937ar.h“ を記述する。(genrand_real2()のプロトタイプ宣言を読み込む為。)これまでは#include <stdio.h>のように< >の中にヘッダーファイル名を書いていたが、これは、ある定められたディレクトリから探してくるという意味である。カレントディレクトリにあるヘッダーファイルを読み込む場合は” “で囲む。 コンパイルは、genrand_real2()関数を使っているファイルの名前をkadai1.cとすると、 $ gcc kadai1.c mt19937ar.c のように行う。 (参考)Mersenne Twisterの改良版SFMTも公開されている。

Mersenne Twisterの使い方(続き) 実行毎に生成する乱数列を変えたい場合は、 init_genrand (time(0));のように、time関数の返り値を初期化関数に与えるようにすればよい。 (init_genrand関数を最初に一度呼び出してから、genrand_real2()関数を必要な回数呼び出せばよい。)

円周率の近似値の計算 y (1,1) (0,1) x (1,0) (0,0) 0から1の範囲の乱数を2つ生成すると、それらは上記の正方形の範囲内の1つの座標と見ることができる。 点をN個生成し、そのうちn個が円の中に入っていた場合は、(n/N)*4が円周率の近似値となる。