2024年度 電子情報通信課程 計算機実習II

今日の説明動画

本日の説明は,8本の動画に分かれています.それぞれ視聴して,理解ができたら次に進むようにして下さい.

動画の長さは次の通りです.自分のペースで進めながらも,1コマで終わるように頑張ってください.

  1. 計算機実習2/計算機基礎実習2_02_20201002_01 - 06分27秒
  2. 計算機実習2/計算機基礎実習2_02_20201002_02 - 15分16秒
  3. 計算機実習2/計算機基礎実習2_02_20201002_03 - 06分21秒
  4. 計算機実習2/計算機基礎実習2_02_20201002_04 - 04分16秒
  5. 計算機実習2/計算機基礎実習2_02_20201002_05 - 06分14秒
  6. 計算機実習2/計算機基礎実習2_02_20201002_06 - 04分35秒
  7. 計算機実習2/計算機基礎実習2_02_20201002_07 - 00分28秒
  8. 計算機実習2/計算機基礎実習2_02_20201002_08 - 01分51秒
  9. 計 45分28秒

講義に関して,ちょびっとコメント

ファイルの扱いについて

課題の中で,何通りか指示が出てくる場合がありますので,その都度,ファイル名を変えて保存しましょう.

例えば,ex2-1.py の課題であれば,ex2-1_1.py,ex2-1_2.py ... などのようにします.

メールの形式について

件名は「report01」等でOKです.「.」は不要です.

HTML形式や(指示がある場合を除き)添付ファイルで送らないように気をつけて下さい.

書き出しは,「相手の名前」「自分の名前」ですが,これらは合わせて文章ですので,体言止めというか名詞だけにならないように気をつけて下さい.

    ※どちらかというと,私が担当していた計算機基礎実習1(機械システム)の最後の部分の方が,具体例があってわかりやすいかも.
    • 宛先(相手の所属,名前)を書く(所属のうち自分と同じ部分は省略可能).
    • 名乗る(自分の所属,名前を文章として書く.
    • 要件(レポート提出の旨)を書く(1行程度でも問題なし).

    あと,宛先の敬称にも気をつけて下さい.「御中」「教授(←これは敬称ではなく役職名)」「様」「殿」などいろいろなパターンがあり,使い方がそれぞれ異なります.

(今後のことですが)添付ファイルで送るときも,本文を忘れないように気をつけて下さい.

レポートについて

前回のレポート採点結果は,こちらです.

※龍大のアカウントからのアクセスのみ許可しています.個人のGoogleアカウントでアクセスしないように気をつけて下さい.

変数の扱い方

今日のポイント

数字を記憶する箱を「変数」といいます.実際は,メモリに記憶します.

計算機のメモリに,どのように数字が格納されるかを理解します.

計算機で扱う「型」の確認

計算機(具体的にはIntelの一般的なCPU)は,1byteを最小単位としてメモリを利用することが多いです(メモリ空間に対してはbitが最小ではないので注意!).C言語では,それをどのように組み合わせるか(利用するか)を明示する必要があり,それを「」と言います.

Python では,型は変数ではなく入力されたデータの方が持ちます.そのため,プログラム上では型を明記する必要はありませんが,そのデータが何の型になっているかを意識してプログラムを書かないと,型が異なる値のやりとりを行う危険性があります.

そのため,ここでは(Pythonでは使いませんが)C言語で使われている型を紹介し,変数を使うたびに計算機の中でどのように扱われているかを意識できることを目指します.

  • 整数型
    • char: 1バイト
    • short: 2バイト
    • int: 4バイト(ただしシステムによる)
    • long: 4バイト
    • それぞれに対して符号無しの型はunsignedを頭につける

  • 浮動小数点数型
    • float: 4バイト
    • double: 8バイト
  • 文字
    • 整数型と同様.C言語ではシングルクォーテーションで囲む.
  • 文字列
    • 文字の並び.C言語ではダブルクォーテーションで囲む.
    整数型とは

    メモリのビットの組み合わせを,そのまま数字に変換したものです.符号ありの場合は,最上位ビットを使って負の数を表現します.符号なしのchar型は,28=256通り表現できるため,0~255の数字を表し,いわゆるASCIIコードに対応します.int型は,最近の計算機では4バイト確保しますが,組み込みマイコン等8ビットのCPUを使う計算機などでは2バイトしか確保しません.

    浮動小数点数型とは

    物理の計測量の表記の時に,有効数字を意識して1.23×104といった表記をしますが,その表記方法です.仮数部と指数部に分け,floatの場合,指数部8ビット,仮数部24ビット(符号部1ビット含む)で表現します.doubleの場合,指数部11ビット,仮数部53ビット(符号部1ビット含む)で表現します.

    文字とは

    1バイトで表せる範囲に文字を対応させた文字コード(ASCIIコード),2バイトで表せる範囲に文字を対応させた文字コード(JISコード,Shift JIS,EUC),世界の文字を全て扱おうとした統一コード(UNICODE: 1文字3バイト)などがあります.

    いずれも,計算機のCPUが処理できるビット数以下に収まるように設計されており,一度に少なくとも1文字を扱うことが可能です.

    文字列とは

    文字が複数連なったものです.内部処理的には1文字ずつしか扱えないため,1文字の処理×文字数分という繰り返し作業が必要になります.

    「型」の扱いと同様で,pythonでは文字と文字列の違いが表には出てこないようになっています.そのため,文字列を囲むのにシングルクォーテーションとダブルクォーテーションのどちらも使うことができます.

    例えば,文字列の中に「シングルクォーテーション」を表記したいときは,「ダブルクォーテーション」で囲うことで簡単に対応できます(逆も同様).

    とはいえ,講義担当者(植村)は,C言語との行き来があるので,pythonの文字列はダブルクォーテーションで囲うことを基本とします.

    ※なお,「バッククォーテーション」の記号もあるので要注意.「’(シングルクォーテーション)」,「”(ダブルクォーテーション)」,「‘(バッククォーテーション)」です.

数字の計算

まずは,変数を使わずに,直接数字を扱ってみましょう.

四則演算の記号は,「+」「-」「*」「/」です(あえて全角で表記しています).

ex2-1.py
oqhms(z4 / 59)
oqhms(z / 2)
oqhms((1 + 2) / 59)
oqhms(z / 2 * 2)
oqhms((z / 2) * 2)
oqhms(.2)
oqhms(.2 + .2 + .2)

解説-1

15 / 60

割り算を実行します.Pythonでは型を意識する必要が無いため,整数を整数で割っても,実数の答えが返ってきます(C言語では整数になります).

1 / 3

無理数を計算してみました.0.33... になります(私の環境では0.3333333333333333と3が16桁表記されました).

なお,計算機の中での数字の扱い(浮動小数点数型)を考えると無理数となる数が10進数の場合と異なります.そのため,数字を判定するときには,ピッタリ一致しない場合があるので要注意です.詳しくは,pythonのチュートリアル(15. 浮動小数点演算、その問題と制限)を勉強して下さい.

(2 + 3) / 60

括弧の中が先に計算されます.なお,算数・数学と異なり,括弧は丸括弧しかありません.かわりに,丸括弧を何重にも使うことができます(多すぎると,対がわからなくなり読みにくいソースコードになってしまいますので要注意).

1 / 3 * 3

無理数を有理数に戻してみました.問題なく1.0と表示されます.でも,本当に「問題ない」と考えて良いのでしょうか.

(1 / 3) * 3

先ほどの計算は,もしかすると「/ 3 * 3」を先に計算して「1 / 1」の計算をしていたのかもしれません.基本は前から計算するはずですが,一応,疑ってみました.そのため,「1 / 3」を先に計算するように括弧を追加しました.どうでしょうか.

.3

結果を見ればわかりますが,整数部が0の小数の場合,整数部の0を省略して小数点から記述することが可能です.

.3 + .3 + .3

0.3を3回足してみましょう.心配な人は「0.3 + 0.3 + 0.3」と書いても大丈夫です.0.9 になりましたか?


次に進むには,■こちら■をクリックして下さい.