コンピュータサイエンス第一 第1週

3. コンピュータの原理

おそろしく単純な動作 (後述) を大量に組み合わせて、複雑な処理をおこなう。

3.1. コンピュータの4大要素

すべてのコンピュータは 以下の4つの部分から成り立っている。

入力装置 演算装置 出力装置 記憶装置
  1. 入力装置 … マウス、キーボードなど
  2. 出力装置 … 画面、スピーカなど
  3. 記憶装置 … メモリ、ハードディスクなど
  4. 演算装置

スマートフォンも炊飯器もエレベータも、 コンピュータにしてみれば、やっていることは一緒。 入力装置から来た情報を演算装置であれこれ処理して、出力装置に渡しているにすぎない。 (人間さえ、コンピュータからみれば単なる外部装置のひとつにすぎない。)

練習問題
  1. 炊飯器をコンピュータで制御する場合、その入力装置・出力装置を答えよ。
  2. エレベータをコンピュータで制御する場合、その入力装置・出力装置を答えよ。

3.2. 情報とは何か?

コンピュータ上の情報は、 2種類の異なる状態の組み合わせで表される。

数字、文字、画像、音声などをコンピュータで扱うためには、 これらの情報をすべて 01 だけで表す必要がある。

3.3. プログラムとは何か

コンピュータがおこなう処理 (計算過程、プロセス) を いくつかの命令の列によって表現し、 それを実行することにより処理する。 命令の列は、記憶装置に入れておく。 プログラムも情報である。

(注意: これは実際には数値の列なのだが、 現代は文字によって表せるようになっているので、 この授業ではもっぱらプログラミング言語を使って表現する)

演算装置 メモリ プログラム データ

プログラミング言語 Python

4. Python プログラムの基礎

4.1. 最初の Python プログラム

  1. 「ターミナル」を起動する。
  2. デスクトップ上にフォルダをひとつ作成する
  3. そのフォルダに cd する。
  4. IDLE を使って hello.py というテキストファイルを作成する。
    (注意: 大文字・小文字の区別は正確に!)
    $ cd Desktop
    $ mkdir cs1
    $ cd cs1
    $ idle hello.py
    
    hello.py
    print("Hello, World!")
    
  5. プログラム hello.py を実行する。
    $ python hello.py
    Hello, World!
    

以下、この hello.py をいろいろなファイルに 変えることで演習・課題をおこなう。

4.2. 変数の使用

  1. 「ターミナル」を起動する。
  2. 先ほど作成したフォルダに cd する。
  3. IDLE を使って greetings.py というテキストファイルを作成する。
    1文字も間違えないように!
    greetings.py
    print("What is your name?")
    x = input("name=")
    print(f"Good morning {x}!")
    
  4. Python で greetings.py を実行する。
    $ python greetings.py
    What is your name?
    name=euske
    Good morning euske!
    
演習1-1.

4.3. 文とは

プログラム中の各行を、それぞれ (statement) とよぶ。 各文は、書かれたとおりの順序で実行される。

文1print("What is your name?")
文2x = input("name=")
文3print(f"Good morning {x}!")
演習1-2.
演習1-3.

ふたたび、コンピュータサイエンスとは何か?

コンピュータサイエンスとは、 「手順 (プロセス)」をあつかう学問である。

プログラムにおいて、実行順序はきわめて重要である。 ある意味、カレーの作り方もプログラムである。(実行順序が重要)

4.4. 関数・変数・代入とは

各文のなかの print(...)input(...) のような部分を 関数 (function) とよぶ。

また、x のような部分を変数 (variable) とよび、 x = input("name=") という文全体を 代入文 (assignment) という。

変数は、いくつでも定義することができる。

greetings2.py
print("What is your name?")
x = input("name1=")
y = x
print(f"Good morning {x} and {y}!")
演習1-4.

変数の上書き

さらに、一度変数に代入された値は、別の代入文で上書きすることができる。

greetings3.py
x = input("name1=")
y = input("name2=")
x = y
print(f"Good morning {x} and {y}!")
演習1-5.

変数の入れ替え

代入文をある順序で書くと、 2つの変数の内容を入れ替えることができる。

swap.py
x = "john"
y = "mary"
??? ??? ???
print(f"x={x}, y={y}")
演習1-6.

4.5. 条件分岐とは

変数の値によって、プログラムに異なる動きをさせることができる。 このような機能を 条件分岐 (conditional branch) という。

conditional.py
print("What is your name?")
x = input("name=")
if x == "euske":
    print("You are awesome!")
else:
    print("You are not awesome!")

このプログラムを実行すると、以下のように動く。

$ python greetings.py
What is your name?
name=euske
You are awesome!

$ python greetings.py
What is your name?
name=john
You are not awesome!

Python における if文は、 変数の値によって 2種類の異なる動作をさせることができる。

if 変数名 == :
    等しい場合の動作
else:
    等しくない場合の動作

ifの内部では、 必ずインデント (indentation、字下げ) が必要である。 たとえば上の例を以下のようにすると動作しない:

エラーになる例:
print("What is your name?")
x = input("name=")
if x == "euske":
print("You are awesome!")
else:
print("You are not awesome!")

IDLE では、if文を書くと自動的に インデントが行われる。または Tab キーを押しても 半角スペース4個が挿入される。

if文の使用例

Pythonでインデントする際の注意

実際にはインデントは (一貫しているかぎり) 何マス空けてもよいが、通常は 半角スペース4個 (    ) を使う慣例である。 ここに、半角スペース以外の文字を使うと動かない。 たとえば以下の例は正しく見えるが、実際にはエラーとなる:

動かない例:
print("What is your name?")
x = input("name=")
if x == "euske":
  print("You are awesome!")
else:
  print("You are not awesome!")
演習 1-6.
本日の小課題 1. 変数の内容の入れ替え

なお、OCW-i に提出する際のコメント欄はほとんど読まないので、 あまり重要なことは書かないこと。(読みとばす危険性がある)


Yusuke Shinyama