おそろしく単純な動作 (後述) を大量に組み合わせて、複雑な処理をおこなう。
すべてのコンピュータは 以下の4つの部分から成り立っている。
スマートフォンも炊飯器もエレベータも、 コンピュータにしてみれば、やっていることは一緒。 入力装置から来た情報を演算装置であれこれ処理して、出力装置に渡しているにすぎない。 (人間さえ、コンピュータからみれば単なる外部装置のひとつにすぎない。)
コンピュータ上の情報は、 2種類の異なる状態の組み合わせで表される。
数字、文字、画像、音声などをコンピュータで扱うためには、 これらの情報をすべて 0 と 1 だけで表す必要がある。
コンピュータがおこなう処理 (計算過程、プロセス) を いくつかの命令の列によって表現し、 それを実行することにより処理する。 命令の列は、記憶装置に入れておく。 プログラムも情報である。
(注意: これは実際には数値の列なのだが、 現代は文字によって表せるようになっているので、 この授業ではもっぱらプログラミング言語を使って表現する)
cd
する。
hello.py
というテキストファイルを作成する。$ cd Desktop $ mkdir cs1 $ cd cs1 $ idle hello.py
print("Hello, World!")
hello.py
を実行する。
$ python hello.py Hello, World!
以下、この hello.py
をいろいろなファイルに
変えることで演習・課題をおこなう。
cd
する。
greetings.py
というテキストファイルを作成する。print("What is your name?") x = input("name=") print(f"Good morning {x}!")
greetings.py
を実行する。
$ python greetings.py What is your name? name=euske Good morning euske!
プログラム中の各行を、それぞれ文 (statement) とよぶ。 各文は、書かれたとおりの順序で実行される。
文1 | print("What is your name?") |
文2 | x = input("name=") |
文3 | print(f"Good morning {x}!") |
「Good morning 名前 !」
が
10回表示されるようにせよ。
コンピュータサイエンスとは、 「手順 (プロセス)」をあつかう学問である。
プログラムにおいて、実行順序はきわめて重要である。 ある意味、カレーの作り方もプログラムである。(実行順序が重要)
各文のなかの print(...)
、input(...)
のような部分を
関数 (function) とよぶ。
また、x
のような部分を変数 (variable) とよび、
x = input("name=")
という文全体を
代入文 (assignment) という。
変数は、いくつでも定義することができる。
greetings2.pyprint("What is your name?") x = input("name1=") y = x print(f"Good morning {x} and {y}!")
y = x
で input()
関数を使い、
実際に 2人目の名前を尋くようにせよ。
さらに、一度変数に代入された値は、別の代入文で上書きすることができる。
greetings3.pyx = input("name1=") y = input("name2=") x = y print(f"Good morning {x} and {y}!")
代入文をある順序で書くと、 2つの変数の内容を入れ替えることができる。
swap.pyx = "john" y = "mary"??? ??? ???print(f"x={x}, y={y}")
x
と y
の値を入れ替えるようにせよ。x
と y
以外に
もうひとつの変数が必要。)
$ python swap.py x=mary, y=john
変数の値によって、プログラムに異なる動きをさせることができる。 このような機能を 条件分岐 (conditional branch) という。
conditional.pyprint("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 x == "foo": print("x is foo.") else: print("x is not foo.")
if x == y: print("x is y.") else: print("x is not y.")
if x == "euske": print("You are awesome.") print("And handsome, too.") else: print("You are not awesome.") print("Or handsome, either.")
else
節は省略可能である。
こうすると、等しくない場合は何も実行されない:
if day == "sunday": print("There is no class.")
if
文の中に
さらにif
文を入れることもできる。
この場合は、2重に字下げする:
if a == "2": if b == "3": print("Correct!") else: print("Incorrect!") else: print("Incorrect!")
実際にはインデントは (一貫しているかぎり)
何マス空けてもよいが、通常は 半角スペース4個
(
) を使う慣例である。
ここに、半角スペース以外の文字を使うと動かない。
たとえば以下の例は正しく見えるが、実際にはエラーとなる:
動かない例:print("What is your name?") x = input("name=") if x == "euske": print("You are awesome!") else: print("You are not awesome!")
x
と y
の値を入れ替えるようにせよ。x
と y
以外に
もうひとつの変数が必要。)
swap.pyx = "john" y = "mary"??? y = x ???print(f"x={x}, y={y}")
なお、OCW-i に提出する際のコメント欄はほとんど読まないので、 あまり重要なことは書かないこと。(読みとばす危険性がある)