このデータ構造を覚えるリスト構造を作成せよ。ように与えられたら、そのデータを和暦で表示するプログラムを作成せよ。このデータ構造で覚えるリスト構造を作成せよ。この中から真夏日(最高気温が30°C以上)でかつ熱帯夜(最低気温が25°C)の日のリストを抽出し表示するプログラムを作成せよ。このデータ構造をリスト構造で覚えるプログラムを作成せよ。この中からプライベートアドレスのリストを抽出し表示するプログラムを作成せよ。ように呼び出してリストに追加すること。この時、生成されるリストが、登録の逆順になるか、登録順になるかは、自分の理解度に応じて選択すること。抽出する処理を書く場合も登録順序どおりにするかは自分の理解度に応じて選べばよい。処理を「オブジェクト指向」のように記述する方法を検討すること。ようなクラスは使わないこと。前回の授業で説明したようなA/D変換した数値データを読み取った場合、どのようなことが発生するか考える。以下に示すような測定値があったとする。2018-06-05-wave.csvこのデータの一部をグラフ化してみると、次のような波形であった。この波形をみると、大きく見ればsinカーブだが、細かい点を見るとデータにブレがある。回路のノイズ対策が不十分で、外部の電気的な影響が混入。変換を行う場合には、量子化誤差かもしれない。最初の波形が、加速度センサーの値であったとして、船の上で揺れているために、大きな周期で加速度が変化しているかもしれない。一方で、船自体がエンジンによる揺れで加速度が変化しているかもしれない。船の中で波の揺れと、エンジンの揺れが観測されている加速度センサーの情報で、船の揺れの大きさ・揺れの周期を知りたい場合、どうすればいいだろうか?移動平均を計算してみるこのデータを見ると、10個のデータまでの間で、波形が上下に変動している。船の揺れとエンジンの揺れが原因であれば、10個ぐらいのデータのゆらぎが、エンジンによる揺れと考えられる。この10個ぐらいの範囲で値が上下の影響を減らしたければ、どうすればいいか?一番簡単な方法は、前後10個のデータで平均を取ればいいだろう。増減する値を加えれば、プラスの部分とマイナスの部分の値が相殺されて0に近くはず。前後データの平均をとってみよう。Excelで前後11点の平均を求める式をセルに入れる青線:元波形データ(B列)、赤線:前後11点の平均(C列)このように、データの前後の決められた範囲の平均を平均する処理は、移動平均(単純移動平均)と呼ぶ。時刻tの平均を、その前後のデータで平均を求めた。この方式は、実際には与えられた波形のデータを全部記録した後に、単純移動平均をとる場合に有効である。使っていることから、現実的ではない。;}過去の値だけを使った移動平均そこで、過去の値だけで移動平均をとることも考えられる。よってシミュレーションした結果を以下に示す。2018-06-19-mv-avg-excelしかし、このグラフを見ると、波形後半の部分に注目するとよく分かるが、過去の値だけを使った移動平均では、測定値が立ち上がったのを追いかけて値が増えていく。これでは移動平均は時間的な遅れとなってしまう。昨年までは、コロナ感染者数の増減のグラフを見る機会が多かった。以下のようなグラフ(神奈川県のデータを引用)を見ると、新規感染者数は青の棒グラフで示されている。土日の検査が月曜に計上されたりするため、青の棒グラフは週ごとに増減があって分かりにくいため、移動平均の値が合わせてオレンジ色の折れ線グラフで表示されている。オレンジ色のグラフは、青のグラフより少し右にずれていると思いませんか?これは、移動平均といっても過去7日間の平均をグラフ化しているため、数日分だけ右にずれているように見えている。値を使った移動平均では遅れが発生する。平均を取る際に、「n回前の値」と「現在の値」を考えた時、「その瞬間の平均値」は「現在の値」の方が近い値のはず。あれば、平均を取る時に、「n回前の値は少なめ」「現在の値は多め」に比重をかけて加算する方法がある。ループを使わずに書いてみる。;}この様に、過去に遡るにつれ、平均をとる比重を直線的に小さくしながら移動平均をとる方法は、加重移動平均と呼ばれる。以下にその変化をExcelでシミュレーションしたものを示す。指数移動平均ここまで説明してきた、単純移動平均や、加重移動平均は、平均をとる範囲の「過去の値」を記憶しておく必要がある。広い時間にわたる移動平均をとる場合は、それに応じてメモリも必要となる。これは、組み込み型の小型コンピュータであれば、メモリが足りず平均処理ができない場合もでてくる。いうように、過去に遡るにつれ、半分にして平均をとる。使うと以下のように書き換えることができる。1つ前の平均y[t-1]を覚えるだけでいい。記録しておくだけで良い。このような移動平均を、指数移動平均と呼ぶ。なっているが、これをさらに一般化した指数移動平均は、以下の式で示される。;}以下のプログラムは、うまく動かない。以下はy[t]は全部ゼロになる。以下は、整数型演算だけで、正しく動くだろう。;}理解度確認のための小レポート上記の移動平均の理解のために、以下の資料(講義では印刷資料を配布)の表の中を、電卓などを使って計算せよ。計算したら、その結果をグラフの中にプロットし、どういった波形となるか確認し、レポートとして提出すること。フォルダに提出してください。前回の講義で説明した構造図に続いて、処理の流れを説明するための振る舞い図の説明。講義の後半は、UML作成のレポートの課題時間とする。参考資料をもとに振る舞い図の説明を行う。ユースケース図ユーザなど外部からの要求に対する、システムの振る舞いを表現するための活用事例や機能を表す図がユースケース図。システムを構築する際に、最初に記述するUMLであり、システムに対する処理要件の全体像や機能を理解するために記述する。ユーザや外部のシステムは、アクターとよび人形の絵で示す。楕円でシステムに対する具体的な処理をユースケースとして楕円で記述する。関連する複数のユースケースをまとめて、サブジェクトとして示す場合もある。上記の例は、学生が受講登録をして、授業に参加し、テストを受けるという様を表現したユースケース図である。下記の例にて、私自身が児童の保護システムを構築した際のユースケース図を示す。このように、システムの機能がどういったものがあるのかを網羅的に説明する際にユースケース図がよく使われる。処理順序を記述するための図にはフローチャートがあるが、上から下に処理順序を記述するため、縦長の図になりやすい。四角枠の中に複雑なことを書けないので、UMLではアクティビティ図を用いる。上記のアクティビティ図は、朝起きて出勤するまでの処理の流れを記述したものである。フローチャートと違い上から下に延びる図に限らず左右に広げて記載してある。初期状態●から、終了状態◉までの手順を示すためのものがアクティビティ図。フローチャートに無い表現として、複数の処理を並行処理する場合には、フォークノードで複数の処理を併記し、最終的に1つの処理になる部分をジョインノードで示す。通常の処理は、角丸の長方形で示し、条件分岐(デシジョンノード)や合流(マージノード)はひし形で示す。ステートチャート図(状態遷移図)ステートチャート図は、処理内部での状態遷移を示すための図。1つの状態を長丸長方形で示し、初期状態●から終了状態◉までを結ぶ。1つの状態から、なんらかの状態で他の状態に遷移する場合は、分岐条件となる契機(タイミング)とその条件、およびその効果(出力)を「契機[条件]/効果」で矢印に併記する。複数の状態をグループ化して表す場合もある。上記のステートチャート図は、普通高校と高専の入学から卒業就職までを記載したものである。複数のオブジェクトが相互にやり取りをしながら処理が進むようなもののタイミングを記述するためのものがシーケンス図という。Line間を、やり取り(メッセージ)の線で相互に結ぶ。メッセージは、相手側からの返答を待つような同期メッセージは、黒塗り三角矢印で示す。返答を待たない非同期メッセージは矢印で示し、返答は破線で示す。上のシーケンス図は、顧客が店員と対応しながらPOS端末でお金の出し入れをする様を表現したものとなっている。コミュニケーション図クラスやオブジェクトの間の処理とその応答(相互作用)と関連の両方を表現する図。-▶︎、非同期メッセージは→で表す。複数のオブジェクト間のやりとりの相互作用を表現する。タイミング図タイミング図は、クラスやオブジェクトの時間と共に状態がどのように遷移するのかを表現する図。状態変化の発生するタイミングや、時間的な遅れや時間的な制約を図で明記するために使われる。IT専科・UML入門より引用UMLで人に説明する図の書き方として紹介してきたけど、よく現場で使われる図としては、ポンチ絵も名前だけは紹介したい。ポンチ絵ポンチ絵は、元々は風刺画のような漫画のことをであったが、最近ではビジネススの世界では「構想図」の意味で使われる。製図の下書きとして作成するものや、イラストや図を使って概要をまとめた企画書などのことを言う。UMLのような書式のルールがある訳ではなく、相手に如何に印象付けるかが基本であり、ポンチ絵1つで企画の是非がきまったりもする。プレゼンで文字密度の高いポンチ絵で説明されると、時として細かい所が読めずにイライラすることもある。今回は、前回までのシェルの機能を使って演習を行う。プログラムの編集について演習用のサーバに接続して、シェルスクリプトなどのプログラムを作成する際のプログラムの編集方法にはいくつかの方式がある。編集する方法を説明する。helloworld.shエディタが起動すると、以下のような画面となる。プロトコルを使ってネットワークの先のコンピュータとファイルのコピーを行う。