9. 2011/4/19 アルゴリズムとデータ構造 2 9
代入文
変数や配列の要素,複合データの
フィールドに値を入れなおす
等号を使って「変数名 = 式」のよ
うに書く
同時代入は「変数名1 = 変数名2 =
式」のように書く
式を計算した値が新しく変数に入
れられる.
例:
x = 3, y = 1, z = x + y,…
A[i] = B[j]+1, x.key = 0, …
代入の前後で,変数が持つ値が変わ
る
【注意】
変数の作成と同じである
3x:
4x:
4x:
x = x + 1
y = x + 2
1y:
1y:
6y:
計算の進行
10. 2011/4/19 アルゴリズムとデータ構造 2 10
逐次実行文
1 行ずつ上から順番に計算を実行していく
例:
t = x # (1)
x = y # (2)
y = t # (3)
この場合, (1) を実行した後, (2) を実行し,最後に (3) を実行
する
どうしても1行に書きたい場合は, ; (セミコロン)を使って文
を並べる
t = x; x = y; y = t
【問題】上の一連の代入文を実行することで,何が起こるか説
明せよ.
ブロック文
一連の逐次実行文の固まりは,インデントで表現する.
t = x
x = y
y = t
11. 2011/4/19 アルゴリズムとデータ構造 2 11
条件分岐文
ある条件が成立するかどうかで異なる計算を実行する.
「条件が成立する」とは,条件式を計算した結果が True (真)となることを意
味する.
以下のように表記する
if 条件式 :
文1
else :
文2
条件式を計算した結果が真なら文1を実行し,偽なら文2を実行する.
if 条件式 :
文1
条件式を計算した結果が真なら文1を実行し,偽なら何もしない
例:
if x < 0:
y = -x
else:
y = x
問題:上の計算は何を行っているのか説明せよ.また,上のコードを,結果を変えず
に, else 節なしの if 文を用いて書き換えられるか?
文1 文2
条件
文1
条件
真 偽
真
偽
12. 2011/4/19 アルゴリズムとデータ構造 2 12
反復実行文
同じパターンの計算を繰り返し実行する.
for 文:一定回数の繰り返し
for 変数名 in range( 式1 , 式2 ):
文
式1を計算した結果を,繰り返しの変数に代入し,その変
数が式2に等しくなるまで文を繰り返す.繰り返しの度に
,変数の値がひとつずつ増えていく.
繰り返しの変数は,繰り返しを抜けた後でもその値を保持
する
例:
s = 0
for i in range(1, 11):
s = s + i
問題 :s と i の値は最終的に何になるか?
文 一定回数
13. 2011/4/19 アルゴリズムとデータ構造 2 13
反復実行文(2)
条件によって実行を繰り返す
while 文
while 条件式 :
文
条件式が真の間,文の実行を繰り返す.
break 文を用いた while ループの脱出
whle True:
文
if not 条件式 : break
条件式が偽になるまで,文の実行を繰り返す.
後者では,最低1回は文が実行されるが,前者の場合は文が1
回も実行されない場合がありうる.
文
条件
文
条件
真
偽
真
偽
14. 2011/4/19 アルゴリズムとデータ構造 2 14
手続き(関数)
一連の計算手順をまとめて,名前をつけたものを手続きと呼ぶ
.
手続きのうち,値を返すものを関数と呼ぶこともある.
手続き定義の構文
def 手続き名 ( …パラメータ名, ):
本体
手続きはいくつかの入力パラメータを受け取り,本体を実行す
る.
手続き(関数)の例:
def sum_of_square(A):
s = 0
for i in A:
s = s + i*i # s += i*i と書いても良い
return s
return 文は値を返し
て,手続き(関
数)の実行を終了
する.