🏠
令和6年11月21日 (木)
情報処理概論 戻る 進む 講義スライド

テキストファイルを変換しよう~表計算とBASIC~


クラウドとファイル

  1 クラウドとファイル
クラウド ファイル
場所 ネット上 デバイス中
通信環境 オンラインのみ オフライン可能
識別 URL、URI ファイル名、パス名
検索 フルテキスト、検索エンジン 木構造
使い方 html埋め込み、リンク ダウンロード、アップロード、メール添付
Google ドライブ Google Doc テキストファイル、 Wordファイル、メールの添付ファイル

クラウドでは、ファイルやデータはネット上のサーバーのどれかにあり、どのサーバーをユーザー意識する必要はありません。


ファイルフォルダと木構造

木構造 は、データが木のように枝分かれしている構造です。 ファイルフォルダや論文の章立ては、木構造です。 機械でファイルを検索するなどの場合は、木構造より、フラットな構造の方が検索しやすくなります。

題目 (Title) *
著者 ( Author )
要旨 (Abstract)
要旨
目次
  1. 緒言 ( Introduction )
    1. 背景 ( Background )
    2. 目的(Aim)
  2. 実験方法 (Experimental)
    1. 準備(Preperation)
    2. 評価(Evaluation)
  3. 結果と考察 (Result and Discussion)
  4. 結論(Conclusion)
  5. 資料(図表
  6. 参考文献 (References) 1 ) 2 )
  1 論文講演の構成

木構造 といいます。

章、節、項、目……
  • (1) 論文題目が適切であること。
  • (2)研究の 背景が記述され, 研究目的が明確であること。
  • (3)研究方法が記述されており,目的に沿った方法であること。
  • (4)結果が 図表等を用いて適切に示されていること。
  • (5)考察が結果に基づいて適切に導き出されていること。
  • (6)目的に対応して結論が適切に導き出されていること。
  • (7)引用文献が適切に用いられていること。
大学院理工学研究科(工学系)学位論文審査基準博士前期課程
  • (1)論文の 題名 が適切であること。
  • (2)研究背景が論理的に記述され,研究目的が明確であること。
  • (3)目的に沿った研究方法であること。
  • (4)結果および考察の導き方が妥当であること。
  • (5)目的に沿った結論が出されていること。
  • (6)文献が適切に用いられていること。
  • (7)図表・資料が適切に表示されていること。
  • (8)要旨については所定の形式を踏まえていること。
表の書き方 ヒヤリハット

テキストファイルとバイナリファイル

  2 375 🖱 テキスト画像変換

テキストは、文字コードの羅列です。 文字コードを 表示や印刷するには、フォントを使って画像にします。


日本語と文字化け

コンピュータで日本語が使えるようになるには、16ビットコンピュータが普及する必要がありました。

  2 文字コード
文字セット 符号の規格 備考
英数字 ASCII * 7bit 1963 * 制定 (ABC...abc...123!)
英数カナ字 JIS 8bit 1969 * 制定 (アイウ...abc...123!)
世界の文字 *
日本語、中国語、韓国語 SHIFT-JIS 16bit(2byte) 「あいふ…がぎぐ…」
UTF-8 16bit
絵文字 UNICODE * 32bit、符号位置による文字合成含む。
05.情報処理概論 07.情報処理概論 絵文字 test
  3 文字 と文書
レベル 種類
文字 漢字、カタカナ、ひらがな、 英字 (ラテン文字) 、 ギリシャ文字 ⠟⣠⠳⠠ 😀
数字 3.15159
点字、記号、 絵文字エモティコン ⠟⣠⠳⠠ 😀 EMOJIALL 3.15159
単語 犬 サル きじ
文章 文法、 言語 、用例 本日は、晴天なり。
図表 、グラフ、楽譜、回路図
文書 横書き、縦書き、段組み、レイアウト、文字サイズ、本文、見出し、図表

祇園精舎の鐘の声、諸行無常の響きあり。

沙羅双樹の花の色、盛者必衰のことわりをあらす。

おごれる人も久しからず、 唯春の夜の夢のごとし。

たけき者も遂にはほろびぬ、 ひとえに風の前の塵に同じ。

図 沙羅双樹の花の色
書籍・雑誌 右綴じ、左綴じ、背表紙、版大きさ、用紙 小説、論文、電子書籍、タテコミ
※Windows10から搭載のUDデジタル教科書体をフォント指定しています。 ピクトグラムは難しい

文字で、感情や思想を伝えるのが飛躍的に早くなりました。 数字で、量を伝えるのが飛躍的に早くなりました。

🔷 書道博物館@東京都台東区


アプリの種類

  4 アプリの種類
種類説明
文書作成 ワープロ deepl

論文報告書、あるいはそれらの 要旨などの 文書を作成、印刷するアプリです。 3 )

表計算 数値を計算し、表や グラフなどの図表を作成するアプリです。 平均標準偏差などの統計量も計算できます。 データ の件数は 30件程度までが適切です。 それ以上の件数の場合、データベースアプリと連携して 抽出した データ を使う方が効率的です。
🔷 プレゼンテーション

講演スライドや ポスターを作成できます。 4 )

グラフィックス 図形地図写真などの 画像の作成や編集をします。
CAD Solid works * 図面
Autodesk AutoCAD Web 図面
Webページ作成 HTML editor
データベース Microsoft Access Microsoft SQL Server
動画編集
プログラミング google colab
ビジネス ・グループウェア
  • メール
  • チャット
    • Slack
  • 会議 Zoom, Teams, Meet
  • カレンダー、連絡先、名刺交換
  • SNS

アプリ には、 オペレーティングシステム (OS) 上で動く、インストールアプリと、 Webブラウザ 上で動く Webアプリがあります 5 )

アカウント を有効化して、 サービスアプリ を利用する(ログイン、ログオン、サインイン)には、 認証が必要です。

人気 プログラミング言語 は、java script、そしてpyton*と続きます。 *


表計算ソフト

  5 表計算ソフト
A B C D E
1 test test test test test
2
3
4
5

計算ソフトは、 データ の計算や グラフ化 に使います 6 ) 。 Microsoft®Excel®に代表される表計算ソフトはもっともよくつかわれる アプリ でしょう。 ほかにも kingsoftのSpreadsheetsや、 GoogleのGoogle スプレッドシートなどがあります。 中にはVBAまで動作する互換性の高いものも。でも インピーダンス の計算に使う複素数アドオンなどはやはりExcel®かも。 最近は クラウド で動作するオンラインが増えていますが、測定器などはまだまだオフライン。


送電線の損失計算

  3 送電線の損失計算
© K.Tachibana * , C1 Lab.

google sheetは、インストール不要のwebアプリなので、 データクラウドに保存されます。

6.02×1023のような 浮動小数点数値は、 は、6.02E23と入力します。

記号、量名、数値、単位をカラムに並べると便利です。 計算には、接頭辞のつかない単位で表現した数値を使い、 報告には、数値が0.01~100程度になるよう接頭辞のつく単位を使うのが良いでしょう。


ワイブル分布の形

  4 ワイブル分布の形
© K.Tachibana * , C1 Lab.
sheet

寿命時間の 確率分布として ワイブル分布が知られています 7 )

散布図を描くには、値域と定義域のそれぞれの集合を準備します。 表計算ソフトで、たとえば、{t|0<t<3}の定義域のそれぞれの値tiをセルに入力するには、 漸化式を使います。

tn+1=tn+k

ここでkは、等差数列の公差です。

=A13+B$5

表計算ソフトでは、A14セルに、このように入力します。 PCでは、マウスをドラッグして連続入力できますが、集合の要素数が多くなると大変なので、セルの数は10程度までとして、 それ以上は、 python などのプログラミング言語を使う方が便利です。

確率分布

回帰分析

  5 回帰分析
© K.Tachibana * , C1 Lab.

散布図 は、 データ (実験結果)をグラフ化するのに、よく使います。 変化させた値と、測定結果の値の関係がわかりやすく、 相関を調べることができます 8 )


アプリ はお互いのファイル形式を相互に読み取る機能がありますが、 測定器やその ほかの機械が必ずしも、上記ソフトの ネイティブ形式 をエクスポートできるとは限りません。 テキスト形式 の一種である CSV形式 は最も互換性の高い形式です。 ここではCSV形式を加工するテクニックを学びます。

  6 表現のためのファイル形式の例
表現
バイナリ形式

任意のビット列

テキスト形式

文字コードのみ

ネイティブ 圧縮テキスト テキスト XML
文書 doc docx html,html5 xhtml
表計算 xls xlsx csv
図形 MWF,EMF vml svg
チャート UML
地図 G-XML,GML
数式 マセマティカ TEX MathML
化学式 SMILES CML
楽譜 MIDI MML MusicXML
3D VRML X3D
画像 (image) jpg,png
音楽 (audio) wav,mp3,wma
ビデオ (video) mp4,mov
アプリ exe,dll vb,js,asp

ファイル変換

組電池の放電曲線(負荷抵抗 5Ω、電流5.5A)

  6 組電池の放電曲線(負荷抵抗 5Ω、電流5.5A)
© T.Ito , C1 Lab.

データロガーによるバッテリーの電圧の記録は以下のリンクから CSV形式でダウロードできる.

SOC_OCV

データロガーによるバッテリーの電圧の記録は以下のリンクから CSV形式でダウロードできる.

データベースソフトの上にあるデータをメールソフトに移すにはどうしたらいいか? アクセスからCSV形式でエクスポートし、エクセルでインポートする。 次にエクセルからXML形式でエクスポートし、アクティブメールにインポートする。

ファイル変換とインポート・エクスポート
プログラム言語

データ/情報の再利用

ファイル変換

インポート/エクスポート

ファイルとオブジェクトストレージ

CSVファイル(カンマ-セパレーテッド-バリュー)

プログラミング言語と開発キット

情報を処理するための手順をコンピュータに与えないとコンピュータは動作しない。 手順を示した指示書のことをプログラムという。プログラムはプログラミング言語によって記述する。


プログラミング言語

  7 プログラミング言語の種類
種類 分類 言語 特徴
インタプリタ Webアプリ JavaScript Webブラウザ上で動作(クライアントサイド)
vb script(vbs,vba,asp) 9 ) 1964 開発 キーボードとディスプレイが必要
AI Webアプリ python パイソン 10 ) * ビッグデータ データサイエンス * 、 マテリアルズインフォマティクス *、AI
教育 Scratch ビジュアルプログラミング
コンパイル OS C 11 ) ポインタ、構造体
汎用 VB.NET オブジェクト指向(多重継承なし)
汎用 Kotlin アンドロイドアプリ向け
OS C++ オブジェクト指向
colab jupyter

ファイルベースのシステムでは、コンパイラ言語は実行可能なファイルを生成し、 インタプリタ言語はそれを生成しないという違いがありました。 しかし、クラウドベースになって、実行ファイルそのものをクライアントにダウンロードしなくなり、 ジャストインコンパイルで実行結果だけを利用するようになると コンパイラ言語とインタプリタ言語の違いは、あまり本質的でなくなりました。

科学技術用の伝統的な言語としては、FORTRANがあります。 FORTRAN系列の言語としては、BASIC、pythonがあります。 統計用言語としてRがあります。

アルゴリズム重視の伝統的な言語としてALGOLがあります。 ALGOLは、Pascal, C, C++, C#,java, javascript, typescript, Kotlinと進化してきました。 juliaはCに迫る計算速度を誇ります。

サーバーサイドで使われてきたPerlや Ruby もクラウドで利用できるようになってきました。

人工知能で伝統的な言語Lispは、F#Schemeもクラウドで利用できるようになってきました。

人気 プログラミング言語 は、java script、そしてpython*と続きます。 *

科学技術計算(FORTRAN, BASIC,python(パイソン))

人工知能(Lisp, F#)

事務処理(COBOL)

システム(C,C++,Rust)

オブジェクト指向言語(C++, C#, Java,python),python(パイソン)はAIや機械学習でもよく使われます.

スクリプト言語(VBAなどマクロ言語,Perl, Java Script, TypeScript

マークアップ言語(Web用のHTML, SGML, XML, TeX)

開発環境
Visual Studio, Android SDK, Android Studio, Monaca, Eclipse

クロスプラットフォームの開発環境
Monaca, Visual Studio 2015,2017がある.Visual Studio 2017は,あらゆるアプリを "Visual Studio" ひとつで開発できます.


コッホ曲線(Koch curve)


コッホ曲線(Koch curve)のパイソン(Python)コード

# ■■■  コッホ曲線 Koch curve ■■■
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import math
import sys
from google.colab import files

sys.setrecursionlimit(100)

#関数定義
def func(xy,p1,p2,i):
  if i < 0:
    xy.append(p1)
    xy.append(p2)
    return
  else:
    x1 = p1[0];             y1 = p1[1]
    x2 = p2[0];             y2 = p2[1]
    x3 = (x1 * 2 + x2) / 3; y3 = (y1 * 2 + y2) / 3
    x4 = (x1 + x2 * 2) / 3; y4 = (y1 + y2 * 2) / 3
    xx1 = x4 - x3
    yy1 = y4 - y3
    xx2 = 0.5*xx1 + math.sqrt(3)/2* yy1
    yy2 = -math.sqrt(3)/2*xx1 + 1/2* yy1
    x5 = xx2 + x3;          y5 = yy2 + y3
    xy.append(p1)
    func(xy, p1, [x3,y3], i - 1)
    func(xy,[x3,y3], [x5, y5], i - 1)
    func(xy,[x5,y5], [x4, y4], i - 1)
    func(xy,[x4,y4], p2, i - 1)
    xy.append(p2)
    return

xy = []

n=4
func(xy,[0,0],[1,0],n)
func(xy,[1,0],[0.5,math.sqrt(3)/2],n)
func(xy,[0.5,math.sqrt(3)/2],[0,0],n)

fig, ax = plt.subplots(figsize=(5.8, 4.2)) 
plt.axis("off") 
ax.set_aspect('equal');ax.set_xlim([0,1]);ax.set_ylim([-0.5,1])
ax.add_patch(patches.Polygon(xy, closed=True,facecolor="c",edgecolor="b",lw=0.1))

plt.savefig('Koch.SVG');files.download("Koch.SVG")
plt.savefig('Koch.PNG');files.download("Koch.PNG")
plt.show()

# ■■■  コッホ曲線 Koch curve ■■■

演習:CSVファイルの入手とVBAによるHTML生成アプリ開発

1.ファイルエクスプローラーで,\\yzdn\dfs\share6\www\Public\52210\(受講年) を開く(新型コロナウィルスのため削除)

1.FTPクライアント(WinSCP)を使って,FTP接続をしてください.次に,/Public/52210/adgmp/のディレクトリを開いてください.

2._KadaiEntry52210_2021.csvファイルをデスクトップにコピーする

Excelで開発環境の準備

1. [ファイル]タブ → [オプション] → [リボンのユーザー設定]

2. 右側のウィンドウの[開発]のチェックボックスをチェック

3. [OK]をクリック

4.[開発]タブが表示された準備完了

Visual Basicでマクロを書いてみよう

1. [開発]タブ → [Visual Basic] をクリック

2. プロジェクトエクスプローラーの[VBAProject] → [Microsoft Excel Object]→[Sheet1(_KadaiEntry52210_2021.csv)]

3. プロジェクトエクスプローラーの[Sheet1(_KadaiEntry.csv)]を右クリック → [コードの表示]を左クリック

4. 下記のようなコードを記述

動作確認

1.►ボタン(Sub/ユーザーフォーム)の実行を左クリック

2.プログラムが正常に終了すると デスクトップに,EveryOne.htmlファイルが作成されます.

3.EveryOne.htmlファイルをブラウザーで開いてリンクをクリックしてみよう


数式とプログラミング言語

  8 式の要素
要素 数式 プログラミング言語
C python
変数 x
public double x;
関数 f
double f(double x);
関数と従属変数 y = f ( x )
double f(double x) {
	return y;
}
定義域 x=0: y = f ( x )
x>0: y = g ( x )
C では、VBのselect構文のように switch構文では、定義域を指定することはできません。 結局if構文をネストさせることになります。 python では、switch構文はありませんが、 elif構文でネストさせずに定義域を指定できます。
if x == 0:
	print('0')
elif x < 0:
	print('負')
elif x > 1:
	print('正')
else:
	print('発散') 
S = i = 1 n k i
for ( i = 1; i < n; i ++ ) {
	s += k[i];
}
for i in range(1, n):
	s = s + k[i]
*

Phthon (パイソン)は、多様なデータ構造が組み込まれているので、データ処理しやすい言語仕様です。 Anaconda(アナコンダ)や、Google Colaboratoyなどの開発環境があります。 Phthonには、数値計算ライブラリNumPyがあります。 NumPyは、CやふFORTRANで、実装されていて、高速で実行できます。 ほかにも、Matplotlib(グラフ描画ライブラリ) pandas(データ分析ライブラリ) TensorFlow(機械学習ライブラリ) OpenCV(画像処理ライブラリ) など便利なライブラリが多数あります。


BASICを使ったSVGによるグラフ表現

西暦 y / 年消費電力 P / kW1990200020102020203010.08.06.04.02.00.0 L 555.555555555556 122.819022466918 L 416.666666666666 162.316256027897 L 555.555555555556 122.819022466918 L 416.666666666666 162.316256027897米沢キャンパス全域基幹スイッチ
.山形大学の 基幹通信機器 と 建物までの通信機器 の消費電力の年代別推移
©2024 Kazuhiro Tachibana ,Tomohiro Ito 12 )

正しく記述すること

プログラムとは手順を正しく記述すること!音楽の楽譜と同じ

下記のパッヘルベルのカノンは,間違いだらけ,詳しい人,直してちょうだい.カノンは,繰り返しのコードが隠れている楽譜

Sound[{{SoundNote["D3", 1, "Contrabass",SoundVolume ->0.5]},{SoundNote["A2", 1, "Contrabass",SoundVolume ->0.6]},{SoundNote["B2",1,"Contrabass",SoundVolume ->0.7]},{SoundNote["F2", 1, "Contrabass", SoundVolume -> 0.5]},{SoundNote["G2",1, "Contrabass",SoundVolume->0.9]},{SoundNote["D2", 1, "Contrabass",SoundVolume -> 0.7]},{SoundNote["G2",1, "Contrabass",SoundVolume -> 0.6] },{SoundNote["a2",1, "Contrabass",SoundVolume -> 0.5]},{SoundNote["D3", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["F#5", 1, "Violin"]},{SoundNote["A2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["E5", 1, "Violin"]},{SoundNote["B2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["D5", 1, "Violin"]},{SoundNote["F2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["C#5", 1, "Violin"]},{SoundNote["g2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["B4",1, "Violin"]},{SoundNote["D2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["A4", 1, "Violin"]},{SoundNote["G2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["B4", 1, "Violin"]},{SoundNote["a2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["C#5", 1, "Violin"]},{SoundNote["D3",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["D5",{0, 1}, "Violin"],SoundNote["F#5", 1, "Violin"]},{SoundNote["A2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["C#5", {0,1}, "Violin"],SoundNote["E5", 1, "Violin"]},{SoundNote["B2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["D5", {0,1}, "Violin"],SoundNote["B4", 1, "Violin"]},{SoundNote["F2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["C#5", {0,1}, "Violin"],SoundNote["A4", 1, "Violin"]},{SoundNote["g2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["B4",{0,1}, "Violin"],SoundNote["G4",1, "Violin", SoundVolume -> 0.5]},{SoundNote["D2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["A4", {0,1}, "Violin"],SoundNote["F4", 1, "Violin",SoundVolume -> 0.3]},{SoundNote["G2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["B4", {0,1}, "Violin"],SoundNote["G4", 1, "Violin",SoundVolume -> 0.2]},{SoundNote["a2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["C#5", {0,1}, "Violin"],SoundNote["E4", 1,"Violin", SoundVolume -> 0.1]},{SoundNote["D3",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["D5",{0, 1}, "Violin",SoundVolume -> 1],SoundNote["F#5",{0,1}, "Violin",SoundVolume -> 1],SoundNote["D4", 0.5, "Violin"],SoundNote["F#4", {0.5,1}, "Violin"]},{SoundNote["A2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["C#5", {0,1}, "Violin",SoundVolume -> 1],SoundNote["E5",{0, 1}, "Violin",SoundVolume -> 1],SoundNote["A4",0.5, "Violin"],SoundNote["G4",{ 0.5,1}, "Violin"]},{SoundNote["B2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["D5", {0,1}, "Violin",SoundVolume -> 1],SoundNote["B4", {0,1}, "Violin",SoundVolume -> 1],SoundNote["F#4", 0.5, "Violin"],SoundNote["D4", {0.5,1}, "Violin"]},{SoundNote["F2", {0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote[{"C#5","A4"}, {0,1}, "Violin",SoundVolume -> 1],SoundNote["F#4", 0.5, "Violin"],SoundNote["E4", {0.5,1}, "Violin"]},{SoundNote["g2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["B4",{0,1}, "Violin"],SoundNote["G4",{0,1}, "Violin"],SoundNote["D4",0.5, "Violin", SoundVolume ->0.5],SoundNote["B3",{0.5,1}, "Violin"]},{SoundNote["D2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["A4", {0,1}, "Violin",SoundVolume -> 1],SoundNote["F4", {0,1}, "Violin",SoundVolume -> 0.3],SoundNote["D4", 0.5, "Violin"],SoundNote["A4", {0.5,1}, "Violin"]},{SoundNote["G2",{0,1}, "Contrabass", SoundVolume -> 1],SoundNote["B4", {0,1}, "Violin",SoundVolume -> 1],SoundNote["G4",{0, 1}, "Violin",SoundVolume -> 0.2],SoundNote["G4", 0.5, "Violin"],SoundNote["B4", {0.5,1},"Violin"]},{SoundNote["a2",{0,1}, "Contrabass", SoundVolume -> 0.5],SoundNote["C#5", {0,1}, "Violin",SoundVolume -> 0.6],SoundNote["E4", {0,1}, "Violin",SoundVolume -> 0.1],SoundNote["A4", {0,0.5}, "Violin"],SoundNote["G4", {0.5,1}, "Violin"]}}]

楽譜の縦軸と横軸


このマークは本説明資料に掲載している引用箇所以外の著作物について付けられたものです。


山形大学 准教授

伊藤智博

山形大学 大学院 理工学研究科
C1ラボラトリー
992-8510 山形県 米沢市
城南4丁目3-16
3号館(物質化学工学科棟) 3-3301
Tel: 0238-26-3753
URL: http://c1.yz.yamagata-u.ac.jp/

QRコード
https://edu.yz.yamagata-u.ac.jp/Public/52210/52210_07.asp
名称: 教育用公開ウェブサービス
URL: 🔗 https://edu.yz.yamagata-u.ac.jp/
管理運用 山形大学 学術情報基盤センター

🎄🎂🌃🕯🎉
名称: サイバーキャンパス「鷹山」
URL: 🔗 http://amenity.yz.yamagata-u.ac.jp/
管理運用 山形大学 データベースアメニティ研究会
〒992-8510 山形県米沢市城南4丁目3-16

Copyright ©1996- 2024 Databese Amenity Laboratory of Virtual Research Institute,  Yamagata University All Rights Reserved.