• 検索結果がありません。

情報科学リテラシー

N/A
N/A
Protected

Academic year: 2021

シェア "情報科学リテラシー"

Copied!
63
0
0

読み込み中.... (全文を見る)

全文

(1)

情報科学リテラシー

2019年4月16日

海谷 治彦

(2)

目次

• 告知や前置き • プログラム開発の必要性 • OSの役割 • ファイルシステム • ファイルシステムの操作 • Zipアーカイブ • アプリとプロセス • ファイルシステムの内部構造 (参考) • 実習が1個あります.(提出不用の作業) • 演習は3個あります. 2

(3)

指定席は,

4/23か5/7からにします

今のところ個別指導が必要な

事態になっていないので

(4)

復習

• dotcampusとメールはちゃんと使い分けてください い. • 無論,実務では,どちらかに統一したほうがよいで すが,これは授業(訓練)なので,わざと,提出方 法を統一していません. • 電子メールはWeb経由のほうが楽です. • 無論,PC内のアプリを使うのは自由ですが,その場合 は自分で設定してください. 4

(5)

告知 Mac等は止めて!

• 本授業,特に前半はWindowsに特化した話題が 大目です. • Mac等の諸君も,Windows PCを11号館3Fからかり てきてください. • 私物でも結構です. • 配布物はWindows用しか用意しませんので,Mac 等の人は,適宜,にたようなモノや環境を準備して ください. 5

(6)

告知 Cygwinはやめて

• 2018以前の貸与PCを使っている方で,Cygwinに 慣れている方もいるかもしれません. • 大学のPCルームもCygwinになってますし. • Cygwinではなく,MinGWを使ってください. • MinGWとemacsはサイズも小さいので追加インス トールも楽です. • 本日の最後に教員に声かけてください. 6

(7)

本題

何故プログラミングが必要か?

(8)

何故,プログラミングしないと

いけないのか?

• 根本原因 • コンピュータは人語を解さないため. • 我々人間もコンピュータの言葉(マシン語)を直接,読み 書きできないため. • プログラミング言語 • コンピュータの言語と人間の言語の妥協点として開発 された言語. • 人間も訓練すれば読み書きできる. • マシン語に自動翻訳できる. • 日本語や英語を直接にマシン語に翻訳するのは今の技術で は無理. • というか,日本語,英語でコンピュータに命令をするのはかな りシンドい. 8

(9)

例題によるコンピュータ動作の説明

• コンピュータは, • 作業手順とデータを読み込み, • 手順に従い値を読み込んで, • 計算を遂行する. • 必要に応じて,外部機器(画面等)と入出力する. • この「作業手順」がプログラムであるが,日本語で 指示しても,当然,コンピュータは理解できない. • 以降のページ群で説明のため,作業手順の各ス テップを日本語で書いているが, • 実際には,この手順を0と1の羅列であるマシン語 で与えないといけないことも示す. 9

(10)

簡易な例題 ~ 二値の平均

100番地の数値を読め 101番地の数値を読め 数値を合計せよ 102番地の数値を書け 数値を2で割れ 5 3 100 101 102 CPU メモリ 10 50 51 52 ・ ・

(11)

簡易な例題 ~ 二値の平均

100番地の数値を読め 101番地の数値を読め 数値を合計せよ 102番地の数値を書け 数値を2で割れ 5 3 100 101 102 CPU メモリ 5 11 50 51 52 ・ ・

(12)

簡易な例題 ~ 二値の平均

100番地の数値を読め 101番地の数値を読め 数値を合計せよ 102番地の数値を書け 数値を2で割れ 5 3 100 101 102 CPU メモリ 5, 3 12 50 51 52 ・ ・

(13)

簡易な例題 ~ 二値の平均

100番地の数値を読め 101番地の数値を読め 数値を合計せよ 102番地の数値を書け 数値を2で割れ 5 3 100 101 102 CPU メモリ 5+3 ⇒ 8 13 50 51 52 ・ ・

(14)

簡易な例題 ~ 二値の平均

100番地の数値を読め 101番地の数値を読め 数値を合計せよ 102番地の数値を書け 数値を2で割れ 5 3 100 101 102 CPU メモリ 8 ÷ 2 ⇒ 4 14 50 51 52 ・ ・

(15)

簡易な例題 ~ 二値の平均

100番地の数値を読め 101番地の数値を読め 数値を合計せよ 102番地の数値を書け 数値を2で割れ 5 3 4 100 101 102 CPU メモリ 4 15 50 51 52 ・ ・

(16)

プログラムの実際

100番地の数値を読め 101番地の数値を読め 数値を合計せよ 102番地の数値を書け 数値を2で割れ 5 3 4 100 101 102 CPU メモリ 4 01010101 10001001 11100101 10000011 11101100 00010000 10001011 01000101 00001100 10001011 01010101 00001000 10001101 00000100 00000010 10001001 01000101 11111100 10001011 01000101 11111100 10001001 11000010 11000001 11101010 00011111 10001101 00000100 00000010 11010001 11111000 10001001 01000101 11111100 10001011 01000101 11111100 11001001 11000011 16 50 51 52 ・ ・ // Cで書くとこんな感じ int avl(int a, int b){ int av;

av=a+b; av= av/2; return av; }

(17)

プログラミング言語への要件

• 人間が読み書きできる程度に意味あるフレーズじゃないと 困る. • 英語や日本語に近い表記だとうれしい. • コンピュータへの命令に変換できる程度にあいまい性が無 いものでないと困る. • コンピュータは「空気」よめない.「ヤバイ」の一言で全てやりすごせない. • メモリとCPUを用いた現代のコンピュータ(ノイマン型コン ピュータ)の構造を想定したものだとうれしい. • 値の読み書き • 基本,並んでる順番で命令を実行する • 条件によって命令を取捨選択する • 繰り返しを行う 等 結果として,本授業で扱うC言語のような言語が多いです. 17

(18)

18

プログラムの開発の流れ

プログラミング 手作業 エディタを使用 コンパイル 機械が理解できる 表現に自動変換 実行 生成された アプリを使用 (ソース)プログラム (ソースコード hoge.c 等) アプリケーション (実行ファイル) (ロードモジュール a.exe 等) hoge.c a.exe gcc

(19)

リアルなプログラム例

19 アプリ unzip.exe を構築するには, このファイルを含む 153個のファイルが必要. 総行数は約8万2千行.

(20)

どうやって処理をPCに行なわせるか?

• 前述のように,プログラム開発においてさえ,異なる複 数の処理をPCが行なわなければならない. • 人が入力したプログラムを保存 • プログラムをアプリに変換 (コンパイル) • アプリを実行 (実行のテスト) • これらの処理の切り替えを,人間からコンピュータに伝 える必要がある. • コンピュータ自体が直接に人間の処理切り替えを受け 付けているのでは無い. • OS(オペレーティングシステム)と呼ばれるソフトが人間 とコンピュータ(PC)の仲介役となっている. 20

(21)

21

オペレーティング システム

• Operating System (OS) • Windows 10, 8, 7, XP ... • UNIX • Linux • OS X (MacOS) • Android • iOS ...

(22)

OSの主な機能: ユーザー視点で

1. 人間の指示を受け取って,指定されたアプリを動作させる. • OSの機能を使った管理アプリが指示を受け取る. 2. 機器(キーボードやマウス等)への入力をアプリに送る. 3. アプリが出力したいことを機器(画面やスピーカー等)に送る. 4. プログラムやアプリを含めたデータを覚えておく. • たとえ,電源を切っても忘れない. 5. 人間にコンピュータの共通的な使い方を提供する. • たとえハードウェア(CPUやキーボード等)の違っても. • Windowsならば,どのメーカーのPCも使い方は同じ. 6. 利用する人間が誰かを特定し,その人間に見合った処理権限を付 与する. • PCでは想像しにくいが,コンピュータ自体の停止は,一般ユーザーはできない ようにするのが普通. 22

(23)

利用者・OS・PC (大雑把な概念)

23 動かす アプリを指定 指定された アプリを動かす 必要な物理的入出力を行なう キーボードを押す,パネルをタッチ 画面に文字表示,音を出す等 入出力データを アプリと共有

(24)

例: アプリの動作を時系列で表示

24 画面 カメラ 利用者 1: タッチ () 表示 利用者が 意識できるのは この程度の範囲.

(25)

スマフォ内部での処理群

25 ファイルシステム アプリ 画面 カメラ OS 利用者 1: タッチ () 1.1: アプリ選択を識別 () <<create>> 1.1.2: 実行() 2: カメラ画像要求 () 2.1: カメラ起動 () 2.2: 画像取得() 3: 画像表示要求() 3.1: 画像描画() 1.1.1: アプリの読み出し ()

(26)

ファイルシステム

• プログラム開発や動作に関わる種々のデータを保 存する場所が必要. • 種々のデータの種類 • プログラム • アプリケーション • 入出力データ • アプリの動作設定データ 等 • 多くのOS(Windows等)では,この保存場所として ファイルシステムを提供している. • 「ファイル」という言葉は書類入れに由来する. • プログラムにかかわるデータを書類と比喩している. 26

(27)

ファイルシステムへの要件

• PCの電源を切ってもファイルの中身がなくならな い. • ファイルの中身にみあった名前(索引)がつけられ ている. • ファイルの種類を見分けやすい. • 複数のファイルをグループ化して区分けできる. • ファイルの中身の変更,削除,コピーができる. • ファイルのグループを作成,削除できる. • グループのメンバーを自由に変更できる. 27

(28)

名前付き階層型ファイルシステム

• 前述の要件を充足するため,多くのOSでは,名前 を自由につけられる階層型のファイルシステムを 提供している. • ファイル: プログラムやアプリ等のデータ. • フォルダ(ディレクトリ): 複数のファイルをグループ 化するための袋のようなもの. • 今では各OS(WindowsやMacOS, Linux等)によっ て,典型的なフォルダの構造が決まっている. • OSの種類やバージョンによって異なる. 28

(29)

Windowsの例 エクスプローラー経由

• エクスプローラーはファイルシステムの中身をみる ための管理アプリ.

• マックでは Finder というのに相当する模様.

(30)

ファイル名とそのテキスト表現

• 前述の例にあるように,あるファイルは,複数階層のフォルダ内に入っ ていてよい. • 異なるフォルダに入っている同じ名前のファイルは別物である. • よって,あるPC内のファイルは,それを含むフォルダを含めて表現する ことで,一意に指定できる. • このフォルダを含んだファイル名は完全なパス,もしくはフルパスと呼 ばれ,以下のように表現する. 左 C:¥Users¥kaiya¥Downloads¥unzip60win.zip 右 E:¥unzip60win.zip 30

(31)

Windowsにおけるドライブ

• ドライブと呼ばれる論理的なハードウェアの違いが,直接にファイルシ ステム内に現れる. • よって,Windowsでは,このドライブ名を含めて,やっとファイルを一意 に指定できる. • 当然,ドライブが異なれば,同じファイル名でも,別物である. 31

(32)

Windowsにおけるパスの区切り

• Windows では,パスの区切りは ¥ (円マーク)を用 いる. • 本来は,\ (バックスラッシュ)を用いるが,日本語 圏では,¥ が用いられてしまう. • MacOSやLinux, そして Web での区切りは / (普通 のスラッシュ)であるのとは異なる(ので困る). 32

(33)

Windowsで重要なフォルダ

• C:¥Users¥r201903123ab¥ • ユーザー r201903123ab 特有のファイルが以下におかれる. • 一般にホームディレクトリと呼ばれるがWindowsではホームパス • より厳密にはホームドライブとホームパスをつなげたもの. • C:¥Users¥r201903123ab¥Downloads¥ • ユーザー r201903123ab がブラウザ等経由でダウンロードされたファイ ルがおかれる. • C:¥Users¥r201903123ab¥Desktop¥ • r201903123ab のデスクトップ • C:¥Program Files¥ • 多くのアプリがこのフィルダ以下におかれる. • 一般ユーザーは内部の修正はできない. • C:¥emacs¥ そして C:¥MinGW¥ • 本授業に特化したアプリ群があるフォルダ.標準的なWindowsには無 い. 33

(34)

ファイルやフォルダの操作

• 本授業では以下の二種類の管理アプリで操作す る. • エクスプローラー • 前述のGUI経由で直感的?にファイル等を操作できる ツール. • すでに画面例が出ている. • コマンドプロンプト (次回) • コマンドをつかい,フォルダを移動したり,ファイルを作 成したりする. • 開発用のアプリの呼び出しにも使う. • 実は普通のアプリの呼び出しも行なえる. • 本授業のプログラム開発では主にこちらを使う. 34

(35)

操作内容

1. フォルダを作成 2. フォルダを削除 (中身も含めて) 3. フォルダを移動 4. フォルダをコピー (中身も含めて) 5. フォルダの名前変更 6. ファイルの削除 7. ファイルのフォルダ間移動 8. ファイルのコピー 9. ファイルの名前変更 • 尚,ファイルの作成は個々のアプリで行なうか,外部からダウンロード する. 35

(36)

操作例 エクスプローラー

• フォルダ内,もしくはフォルダ上にて右クリックに よって,メニューを出すことで,操作を行なうことが できる.

(37)

ファイル等の移動

• 直接にファイル等をマウスで引きずる(Dragする)で もよい. • メニューで対象を切り取って,移動先に貼り付ける のが正統的なやり方. 37

(38)

パス名の見た目

• エクスプローラーでは,真実のパス名が表示されず,日本語等 で,簡略的に名前が表示されることがある. • これは,一般ユーザーが使いやすくするため?の便宜と思われ る. • 余計な御世話と混乱の元だと思うけど・・・ • 日本語化が特に良くない,複数形の消失等 • 下記のようにパスをクリックする真のパス名を表示できる場合が ある. 38 クリック

(39)

実習

• ブラウザ Edge でファイルをダウンロードした際の ファイルがおかれるフォルダを確認しよう. • もし,そのフォルダが,以下のようなものでなけれ ば,自分のホーム下の Donwloads に直そう. C:¥Users¥r201903123ab¥Downloads¥ • しばらく教員が回ります. 39

(40)

設定画面

40

中略

上記が C:¥Users¥Administrator¥Downloads になっている場合は特に修正する.

(41)

演習1 dotcampus

• dotcampusから, mingw.bat というファイルをダウンロードし て,そのファイルを自分の Desktop に移動させてください. • 証拠として,結果をSnipping Tool でデスクトップの一部を キャプチャして,アップロードしてください. • Snipping tool はコルタナで探して. • Windows以外の人はやってはダメです. • かわりに,ターミナルの画面でもキャプチャしてアップしてく ださい. • 画面キャプチャ法は,「MacOS 画面 キャプチャ」等でぐぐって. 41

(42)

アプリのファイル

• アプリケーションのファイルは nantoka.exe というファイル名

とWindowsではなっている.

• nantoka.bat nantoka.cmd nantoka.jar 等,それ以外のファイ ルでもアプリ同様実行できるものがある.

• 本授業のプログラム開発では,nantoka.exe というファイル のアプリ開発を行なう.

(43)

アプリの呼び出し法

1. エクスプローラーからアプリのファイルを探してク リック. 2. コルタナ等で検索して選択. 3. デスクトップやメニューにある参照アイコン (ショートカット)をクリック. 4. データのファイルを選択し,右クリックからアプリ を選択. 5. コマンドプロンプトからファイル名を指定. • 次回 43

(44)

Zipアーカイブ

• 複数のファイルやフォルダを1個のファイルにまと めて,共有すると便利なことがある. • メールに添付 Webにアップ SNSに転送等 • このようなファイルをアーカイブファイルと呼ぶ. • 実用的なアプリケーションは数十から数百のプロ グラムのファイルから構築される. • これらを,一個一個コピーしたり,ウェブにアップし たりするとシンドいので,アーカイブは助かる. • アーカイブの形式の中でも,最も広く使われている ものが Zipアーカイブ形式である. • その他,マイナーな形式は多数ある. 44

(45)

アプリのコンパイルに必要なファイルの例

• 以下は unzip という zipを展開するためのアプリの プログラム群である. • このアプリをコンパイルするには,481個のファイル が必要. 45

(46)

7zip

• Zipアーカイブを作成,展開することかできるアプリ. • 実は 7z というマイナーな形式のアーカイブの作成, 展開をするのが主な機能でzipはオマケ. • 7z や rar などマイナー形式は性能がzipより優れて いるが,何せ使えない環境が多いためお勧めしな い. • 特に圧縮率が優れているが,今はネットもSSDやHDも 速い/大きいのであまり気にしなくて良い. 46

(47)

7zipでzip展開のTIPS

• とりあえず Downloads の下に zipファイルをおく. • 「ここに展開」ではなく「○○に展開」で,アーカイブ ファイル名のフォルダを作成して,そこに展開する. • 必要なサブフォルダのみ,自分のおきたい場所に 移動する. 47

(48)

演習2 電子メール提出

• dotcampusから unzip60win.zip をダウンロードし, 展開せよ. • 自分のホーム C:¥Users¥r20191234ab¥ の下に src というフォルダを作成せよ. • srcフォルダの下に,unzip60win のフォルダを移動 せよ.unzip60win の下は45ページのようなファイ ルが入っていることを確認せよ. • C:¥Users¥r20191234ab¥src¥unzip60win¥unix¥ フォ ルダの直下にあるファイルのみ(フォルダは除く)の 名前を メールで報告せよ. • 6個ファイルがあります. • 提出先 [email protected] • 件名 4/16 exercise 2 48

(49)

アプリとプロセス

(50)

アプリとその実行

• アプリケーションは普段はファイルとして格納され ている. • そのアプリを実行して処理が行なわれている. • 動作しているアプリはプロセス(タスク)と呼ばれて いる. • アプリとプロセスの違いを理解しよう. 50

(51)

例 電卓

(52)

52

プロセス (タスク)

• 処理中のアプリケーション. • アプリのインスタンス. • タスクとも呼ばれる. • 次頁の「メモリに読み込まれたプログラムとデー タ」に対応する概念. • 1つのアプリをもとに複数のプロセスが発生するた め,アプリとは概念的に区別される. • 以下の対比でイメージを得て! 書き物 実行 ソフトウェア アプリケーション プロセス 音楽 譜面 演奏 ゲーム ルール(ブック) 実際のプレイ

(53)

53

アプリの処理の流れ

• アプリがメモリに読み込ま れる. • 計算に必要なメモリも確保 される.(変数等のため) • CPUがアプリを順に読んで, 計算をする. • 必要ならば,デバイス(ファ イル等)にアクセスする. メモリ ファイル等 CPU プ ロ グ ラ ム 変数等

(54)

オマケの難解な話題

(55)

ディスク等とファイルシステム

• 実際のHDやUSBキーは,物理的には単なるデー タの配列に過ぎない. • そのようなデータ配列を「木構造」のファイルシステ ムに見せるための仕組みを解説する. • 木構造に見せるための規則は複数種類あり,いわ ゆる「論理フォーマット」と呼ばれる. 55

(56)

56

(57)

57

フォーマット

• 通常,隣接したシリ ンダ何枚かをグ ループ化し,それを パーティションとする. • ディスク丸ごと1パー ティションとしてもさ しつかえない.

(58)

参考 ディスクからファイルシステム

• SSD,USBメモリ,ハードディスク自体は,単なる データの列を順番に保存するだけの機械である. • 中にファイルやフォルダの木構造が最初からある わけではない. • 各OS(Windows等)が,SSD等の中に,わざわざ ファイルシステムを構築している. • ファイルシステムの種類自体は,100近く存在する. • メジャーなもの • FAT, NTFS widwosで使われる.

• UFS, EXT4, XFS UNIX, Linuxで使われる. • APFS, HFS+ マックで使われているらしい.

(59)

59

参考: FATの内部形式

• 連続した2n個のセクタをグループ化してクラスタと する. • とはいえディスクの先頭部分は例外 • ファイルは1個以上のクラスタに分割して配置され ている. • ファイルがどこにあるかの情報はFATとディレクトリ エントリという情報で管理されている.

(60)

60

参考: FATの内部構造

ブートセクタ MBR この辺はファイルの情報とは関係無し FAT 予備 ルートディレクトリ エントリ クラスタ1 クラスタ2 クラスタ3 クラスタn ・ ・ ・ あるパ ーテ ィ シ ョ ン ( 論理デ ィ ス ク ) ここのクラスタ毎に, ファイルの中身や, ディレクトリエントリ(サブディレクトリ内のファイルの情報) なんかが入っている. FATテーブル 下にあるクラスタの中身どのようにグルーピング されているかを管理.値としては, •未使用 •EOF •続くクラスタの番号 のどれか.

(61)

61

例 ¥temp¥foo.txt を探す

ブートセクタ MBR FAT 予備 ルートディレクトリ エントリ クラスタ1 ・ ・ ・ temp 2 home 14 etc 22 クラスタ2 クラスタ3 クラスタ4 クラスタ5 クラスタn クラスタ6 0 1 EOF 2 3 6 4 5 7 6 EOF 7 0 n foo.txt 4 main.tex 15 sony.mp3 30 クラスタ7 データ データ データ ¥temp¥foo.txt の中身

(62)

演習3 dotcampus

• notepad++の64bit版をインストールせよ. • ブラウザにて「notepad++ download」で検索すればサイ トはみつかる. • エクスプローラーで以下のフォルダを表示し,その キャプチャ画面を提出せよ. C:¥Program Files¥Notepad++¥ • キャプチャは Snipping tool を用いればよい. 62

(63)

本日は以上

流れ解散です

参照

関連したドキュメント

プログラムに参加したどの生徒も週末になると大

(使用回数が増える)。現代であれば、中央銀行 券以外に貸付を通じた預金通貨の発行がある

Windows スタートメニュー &gt; よく使うアプリ(すべてのプログラム)の HARUKA フォルダの中.

HORS

テューリングは、数学者が紙と鉛筆を用いて計算を行う過程を極限まで抽象化することに よりテューリング機械の定義に到達した。

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

「系統情報の公開」に関する留意事項

②企業情報が「特定CO の発給申請者」欄に表示