仕様4 元素名他 初期画面作成 仕様1 元素数の入力 仕様2 分子名の判定 仕様3 飽和炭化水素の判定 CとH数だけではだめ

Slides:



Advertisements
Similar presentations
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
Advertisements

1 情報基礎 A プログラムやソフトウエアの 構造 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
VBA の基礎 (Visual Basic for Application) 国立教育政策研究所 坂谷内 勝.
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
情報処理基礎 A ・ B 第 5 回 プログラミング入門 操作の自動化を実現する仕組み. 2004/11/16 ・ 17 情報処理基礎 A ・ B 2 本日の内容 処理の自動化~プログラムの概念 ハードウェアとソフトウェア プログラミング言語 Excel における処理の自動化 入力支援の機能 分析ツール.
小テスト解説 問1 次の中置記法で書かれた数式を、前置記法、後 置記法に直せ。 12 × 23 +( 34 + 45 ) × ( 56 + 67 ) × 78 + × 23 +( 34 + 45 ) × ( 56 + 67 ) × 78 + 89  前置記法 12 x 23 + (+ 34.
駒澤大学 経営学部 情報セキュリティ B 公開鍵暗号による 認証つきの秘匿通信 ―― 鍵に注目して ――
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
プログラミング基礎I(再) 山元進.
徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
VBAを通して プログラム言語の基本構造を学ぶ
言語処理系(4) 金子敬一.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
電子社会設計論 第11回 Electronic social design theory
6.3 2次元DFT (1)2次元DFTとは 画像のような2次元信号をサンプリングしたデータを 2次元DFTを
VBA H106077 寺沢友宏.
情報基礎A 第10週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
「まめだくん Ver.1.0」 特徴と利用方法.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
情報基礎A 第7週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
4.2 連立非線形方程式 (1)繰返し法による方法
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
6.4 離散的コサイン変換 (DCT : discrete cosine transform ) (1)DCTとは
コンピュータと情報 第15回 Excelの使い方 その4.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
現金に替わる電子マネーの実装 200702894 大城 翔太 木下研究室.
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
コンピュータと情報 第14回 Excelの使い方 その4.
第8章 Web技術とセキュリティ   岡本 好未.
情報処理3 第5回目講義         担当 鶴貝 達政 11/8/2018.
情報の収集と共有 第3章 3節  ネットワーク社会のルールとマナー 2 情報の安全性確保 p68~p71.
実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
本時の目標 「簡単なプログラム言語の意味を理解し、マクロ機能を使って簡単なプログラムを作ることができる。」
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
余談 ドラクエのパラメーターの上限、マリオの残機など、255が多く、 ドラクエの経験値の上限などに65535が出てくるワケ 1.コンピュータは2進数で動く。 例:2進数 = 10進数173 2.16進数1桁(0~9, A, B, ~F)が2進数4桁に対応する。 例.
第6回:ラケットを動かそう! (キーボードによる物体の操作)
相関.
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
実践プログラミング入門2 配列を使ってゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃.
すべてのレポートの提出期限 1月22日 火曜日 これ以降は特殊な理由が無い限り レポートを受け取りません!
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
プログラムの基本構造と 構造化チャート(PAD)
基礎プログラミング演習 第12回.
ex-8. 平均と標準偏差 (Excel 実習シリーズ)
コミュニケーションと ネットワークを探索する
先週の復習 2重ループを用いた、 表の記入と読み込み.
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
第10章 機械設計の高度化 ★本講義の内容だけでは機械設計はできない? ★教科書や参考書の設計手順で設計ができるのか?
基礎プログラミング演習 第6回.
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
ウェブデザイン演習 第6回.
ex-8. 平均と標準偏差 (Excel を演習で学ぶシリーズ)
ネット時代のセキュリティ3(暗号化) 2SK 情報機器工学.
情報工学Ⅱ (第8回) 月曜4限 担当:北川 晃.
情報処理Ⅱ 2007年12月3日(月) その1.
アルゴリズムの視覚化 この図は左が大きく、 右が小さくなるようにソートしている  この図は左が大きく、  右が小さくなるようにソートしている
データの改竄を防ぐ仕組み 2002/9/12 牧之内研究室「インターネット実習」Webページ
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
情報処理Ⅱ 小テスト 2005年2月1日(火).
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
5.2 グレゴリー・ニュートン(Gregory-Newton)の補間式 (1)導入
8.数値微分・積分・微分方程式 工学的問題においては 解析的に微分値や積分値を求めたり, 微分方程式を解くことが難しいケースも多い。
Presentation transcript:

仕様4 元素名他 初期画面作成 仕様1 元素数の入力 仕様2 分子名の判定 仕様3 飽和炭化水素の判定 CとH数だけではだめ Dim c As Byte, h As Byte, o As Byte, n As Byte '炭素、水素、酸素、窒素用 Dim i As Byte 'カウンタ用 Cells = "" '全セルの初期化 Cells(1, 1).Value = "炭素" '元素名表示 Cells(1, 2).Value = "水素" Cells(1, 3).Value = "酸素" Cells(1, 4).Value = "窒素" Cells(1, 5).Value = "分子量" c = InputBox("炭素数を入力してください", "C") '元素数入力 h = InputBox("水素数を入力してください", "H") o = InputBox("酸素数を入力してください", "O") n = InputBox("窒素数を入力してください", "N") Cells(2, 1).Value = c '元素数出力 Cells(2, 2).Value = h Cells(2, 3).Value = o Cells(2, 4).Value = n Cells(2, 5).Value = c * 12 + h * 1 + o * 16 + n * 14 '分子量の計算と表示 If c = 6 And h = 6 And o = 0 And n = 0 Then Cells(2, 6) = "ベンゼン" If c = 1 And h = 4 And o = 0 And n = 0 Then Cells(2, 6) = "メタン" If c = 1 And h = 4 And o = 1 And n = 0 Then Cells(2, 6) = "メタノール" If c = 1 And h = 5 And o = 0 And n = 1 Then Cells(2, 6) = "メチルアミン" If o = 0 And n = 0 And h = c * 2 + 2 Then '飽和炭化水素の判定 Cells(8, 1).Value = "H" For i = 1 To c Cells(7, i + 1).Value = "H" Cells(8, i + 1).Value = "C" Cells(9, i + 1).Value = "H" Next Cells(8, c + 2).Value = "H" End If 仕様4 元素名他 初期画面作成 仕様1 元素数の入力 仕様2 分子名の判定 仕様3 飽和炭化水素の判定 CとH数だけではだめ

今回の場合、すべてのIf文でセルF2(Cells(2,6))を利用している ポイント 一番下のIf文しか動作しない(下の例ではメタンとエタンが表示されない) If c = 1 And h = 4 And o = 0 And n = 0 Then Cells(2, 6).Value = "メタン" Else Cells(2, 6).Value = "" If c = 2 And h = 6 And o = 0 And n = 0 Then Cells(2, 6).Value = "エタン" Else Cells(2, 6).Value = "" If c = 3 And h = 8 And o = 0 And n = 0 Then Cells(2, 6).Value = "プロパン" Else Cells(2, 6).Value = "" 今回の場合、すべてのIf文でセルF2(Cells(2,6))を利用している 例:メタン(c=1,h=4,o=0,n=0)を入力した場合  1行目で「メタン」と判断し、F2に「メタン」を表示するが、  2行目で「エタンではない」、3行目で「プロパンではない」と判定され、  即座にF2に空白が出力され、「メタン」が消される。 同一セルを利用する場合Else Cells・・・・=""は使えない場合が多い 改良例:最初にF2セルをクリアしておき、If文は表示のみに利用する Cells(2, 6).Value = "" If c = 1 And h = 4 And o = 0 And n = 0 Then Cells(2, 6).Value = "メタン" If c = 2 And h = 6 And o = 0 And n = 0 Then Cells(2, 6).Value = "エタン" If c = 3 And h = 8 And o = 0 And n = 0 Then Cells(2, 6).Value = "プロパン" ※Cells = ""もOK

ただしc=0の時・・・ For文内が動かないので 不要な表示がされない 直前のIf文で、 If c > 0 And ・・・が必要 ポイント For~Next内の記述 容易に作成可能 動作速度高 For n = 1 To c Cells(7, n + 1).Value = "H" Cells(8, n + 1).Value = "C" Cells(9, n + 1).Value = "H" Cells(8, 1).Value = "H" Cells(8, c + 2).Value = "H" Next For n = 1 To c Cells(7, n + 1).Value = "H" Cells(8, n + 1).Value = "C" Cells(9, n + 1).Value = "H" Next Cells(8, 1).Value = "H" Cells(8, c + 2).Value = "H" この2行は、1回表示すればOK 変数nの値も関係がない For文内が動かないので 不要な表示がされない 直前のIf文で、 If c > 0 And ・・・が必要 ただしc=0の時・・・ If文の支配下にFor文を書く For~Next内にIf文を書く If c > 0 Then For i = 1 To 10 Cells(i, 1).Value = i Next End If どちらも同じ動作 プログラムの読みやすさや 実行速度、改良の しやすさなどに差がでるが、 正解はない For i = 1 To 10 If c > 0 Then Cells(i, 1).Value = i End If Next If文は1回実行で動作速度高 比較的読みやすい If文は10回実行で動作速度低 i=3の時だけ表示しない等の 複雑な動作が作りやすい

テクニック 入力を組成式ではなく示性式にすれば、 アルコールやエーテルなどの命名ができる 配列をうまく使い、  f(1):メタン系  f(2):エタン系  f(3):プロパン系  f(4):ブタン系 配列の引数と炭素数を リンクさせるのがポイント Dim f(4) As String, mol As String, c As Byte, h As Byte f(1) = "Meth" f(2) = "Eth" f(3) = "Prop" f(4) = "Buth" c = InputBox("炭素数(1~4)") h = InputBox("水素数") If h = c * 2 + 2 Then mol = f(c) & "ane" If h = c * 2 Then mol = f(c) & "ene" If h = c * 2 - 2 Then mol = f(c) & "yne" MsgBox "分子名は" & mol & "です" 炭素と水素の数によって 語尾を追加して 分子名を完成させる 入力を組成式ではなく示性式にすれば、 アルコールやエーテルなどの命名ができる

コンピュータと人間でデータをやりとりするための入出力部 フールプルーフ (fool:馬鹿 proof:防ぐ、耐える) ユーザーインターフェイスの意識 コンピュータと人間でデータをやりとりするための入出力部 フールプルーフ (fool:馬鹿 proof:防ぐ、耐える)  工業製品や生産設備、ソフトウェアなどで、利用者が誤った操作をしても  危険に晒されることがないよう、設計の段階で安全対策を施しておくこと。 人間は「必ずミスをする」ということを前提にプログラムを作っておくことが重要 フールプルーフの一例 ・飽和炭化水素よりも水素数が多い場合、再入力を促す Looptop: C = InputBox("C数を入力してください") H = InputBox("H数を入力してください") N = InputBox("N数を入力してください") O = InputBox("O数を入力してください") If H > C * 2 + 2 And N = 0 And O = 0 Then d = MsgBox("水素の数が多いです", 0, "やり直し") GoTo LoopTop End If

フェイルセーフ (fail:故障 safe:安全な) 機械が故障や誤動作を起こしたとき、安全な方向に壊れたり 被害が出ないように止まったりする仕組み 例:車のブレーキ配管(フェイルセーフブレーキシステム) 配管の1部に破損が生じて、油圧がなくなっても、 配管を二つに分けておくことで、最低2輪にブレーキが かかるようになっている。 フェイルソフト (fail:故障 soft:寛大な) 故障が起きても故障箇所を切り離すことで、多少の機能の 低下があっても最後まで動作させる仕組み 例:航空機のエンジン 1基が止まっても、他のエンジンで飛べるように 設計されている。 フォールトトレラント (fault:故障 tolerant:許容する) 故障が起きても信頼性を損なわずに動き続ける仕組み 例:人工衛星のコンピュータ 複数(奇数台)のコンピュータで多数決を取ることで、 放射線などの影響で多少誤動作を起こしても正常に動く。

現在はこれにハッシュ値というさらに複雑化した暗号を使うことで、 解析を困難にしている 乱数とセキュリティ パソコンはサイコロを振ることができない 従って、離散関数と呼ばれる xの変化に対して複雑なyの変化を示す 関数で、擬似的に乱数を発生している yからxを求めるのは難しいが、 xが決まればyは一意に決まる Excelに内蔵されているRnd関数 y=Rnd(-x) (x=0~100)のグラフ ※ExcelのRnd関数の仕様の関係で、   0以下の数値をxとして与えている 離散関数でパスワードを変換して通信回線で送れば、 万が一盗聴されてもパスワードがばれない 現在はこれにハッシュ値というさらに複雑化した暗号を使うことで、 解析を困難にしている 例:Google認証のワンタイムパスワード   一日を30秒単位で区切った時間にパスワードを加えたものからハッシュ値を生成し、   サーバー側と照合(従って生成から30秒過ぎたら無効)