おそろしく単純な動作 (後述) を大量に組み合わせて、複雑な処理をおこなう。
すべてのコンピュータは 以下の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.py
print("What is your name?")
x = input("name1=")
y = x
print(f"Good morning {x} and {y}!")
y = x で input() 関数を使い、
実際に 2人目の名前を尋くようにせよ。
さらに、一度変数に代入された値は、別の代入文で上書きすることができる。
greetings3.py
x = 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.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 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 に提出する際のコメント欄はほとんど読まないので、 あまり重要なことは書かないこと。(読みとばす危険性がある)