プログラミングとフローチャートについて

Photo by Sai Kiran Anagani / CC0

実践!プログラミング(Python)

プログラミングって何?

プログラミングとは、コンピュータに出す「命令のあつまり」のことです

今回は「Python(パイソン)」という、世界中で使われている言葉を使って、コンピュータと会話してみましょう

プログラムの3つの基本形(アルゴリズム)

コンピュータに出す命令は、どんなに複雑なソフトでも次の3つの形の組み合わせでできています

この手順や進め方のことを「アルゴリズム」と呼びます

まずは、プログラミングの「地図」となるこの3つの形を覚えましょう

1. 順次(じゅんじ)

上から順番に命令を実行していく流れです

これまで学んだ print や計算はすべてこれにあたります

例: 自動ドアが「人を検知する」→「ドアを開ける」と進む流れ

2. 分岐(ぶんき):if文

「もし〜なら」という条件によって、進む道を変える流れです

例えば、「テストが60点以上なら合格、そうでなければ不合格」といった判断をさせます

例: センサーが「暗い」と判断したらライトをつけ、「明るい」なら消したままにする

3. 反復(はんぷく):while文

条件が満たされている間、「同じ処理を繰り返す」流れです

例えば、「正しいパスワードを入れるまで、何度もやり直させる」といった時に使います

例: お風呂の温度が「40度になるまで」お湯をあたためる

流れを図にする「フローチャート」

プログラミングを始める前に、この3つの流れを整理するための図を「フローチャート(流れ図)」といいます

技術の教科書でも使われる世界共通の記号です

  • 長方形(□): 処理(計算や命令)
  • ひし形(◇): 判断(分岐のわかれ道)
  • 矢印(↓): 処理が進む方向

いきなりコードを書き始めるのではなく、まずはこの「3つの形」のどれを使うか考えるのが、プログラミング上達の第一歩です

順次のフローチャートの例

自動ドアが「人を検知する」→「ドアを開ける」と進む流れ:

反復のフローチャートの例

お風呂の温度が「40度になるまで」お湯をあたためる:

プログラムのエディター

🐍 Python 3 練習帳(編集して「Run」を押してね)

基本のプログラム:文字を出力する

まずは、コンピュータに挨拶をさせてみましょう

プログラムのエディターに次の命令を入力してみましょう

※ 必ず半角で入力しましょう

print(“Hello World”)

説明:

print(プリント)は、「画面に表示して」という命令です

表示したい文字は ” “(ダブルクォーテーション)で囲むルールになっています

変数のしくみと使い方

プログラミングは、計算が得意です

値を覚えさせておく「箱」を変数(へんすう)と呼びます

age = 20

print(“I am”, age)

説明:

age = 20 は、「ageという名前の箱に20を入れる」という意味です

ステップアップ!Pythonプログラミング

数字の計算をしてみよう

足し算:

print(10 + 5)

引き算:

print(10 – 5)

掛け算:(* を使います)

print(10 * 5)

割り算:(/ を使います)

print(10 / 5)

変数を使って計算してみよう

変数の中身を表示してみよう

appleという変数に「100」を入れて表示する

apple = 100

print(apple)

変数の中身を入れ替えてみよう

一度数字を入れた変数は、あとから新しい値で塗りつぶすことができます

apple = 100

print(apple)

apple = 150

print(apple)

1つの変数を使って計算する

今の変数の中身を使い、自分自身に数字を足すこともできます

apple = 150

apple = apple + 50

print(apple)

2つの変数を使って計算しよう

2つの変数 a と b を用意して、その合計を新しい変数 total に入れてみましょう

a = 100

b = 200

total = a + b

print(total)

キーボードから入力した値を受け取ろう(input)

input()を使うと、使う人の入力を変数に入れることができます

name = input()

print(“Hello”, name)

条件によって動きを変える「分岐(if文)」

プログラミングに「判断」をさせるのが 分岐 です

Pythonでは if という命令を使います

もし〜なら(if)

まずは、入力した点数によって合格かどうかを判定するプログラムを書いてみましょう

score = 80

if score >= 60:
print(“Your score is”,score)

if文の3つの基本ルール

「もし〜なら」をPythonで書くときは、パズルのように3つのパーツを組み合わせるだけで完成します

合言葉の if
「これから条件を書くよ!」というコンピュータへの合図です

条件式(チェックする内容)
score >= 60 のように、「Yes」か「No」で答えられる式を書きます

コロン( :
「条件はここまで!」という区切りのマークです。初心者が一番忘れやすい記号なので要注意です

実際のコードで見てみましょう

if score >= 60:
print(“合格です!”)

【書き方のポイント】

  • 1行目: if から始まり、条件を書いて、最後は : で締めます
  • 2行目: ここが「Yesのときの動き」です
    先頭に空白(インデント)を空けることで、「条件を満たしたときだけ実行してね」とコンピュータに伝えます
よく使う「比較の記号」

条件式では、算数でおなじみの記号を少しアレンジして使います

  • == : 同じ(※ = を2つ書くのがプログラミングのルールです!)
  • != : 違う
  • > / < : より大きい / より小さい
  • >= / <= : 以上 / 以下
Pythonの重要ルール:インデントと範囲(スコープ)

Pythonを学ぶ上で、気をつけなければいけないのが「インデント(字下げ)」です

他のプログラミング言語では、見た目を整えるためにインデントを使いますが、Pythonでは「インデントがどこまで下がっているか」で、命令が届く範囲(スコープ)が決まります

score = 80

if score >= 60:
print(“OK”) # ←インデントあり(ifの「中」)
print(“very good”) # ←インデントあり(ifの「中」)

print(“Finish”) # ←インデントなし(ifの「外」)

そうでなければ(else)

「もし〜なら」だけでなく、「そうでなかったら、別のことをする」という処理もプログラミングには欠かせません

この「そうでなければ」を担当するのが 「else」です

score = 45
if score >= 60:
print(“OK!”)
else:
print(“Try again”)

【書き方のポイント】

  • else の後にも必ず コロン( : をつけます。
  • else の「中」の命令も、同じようにインデント(字下げ)をします
  • ifelse はペアになるので、インデントの開始位置(左端)をピッタリ揃えるのがルールです

条件が「Yes」の間はくり返す「反復(while文)

ここまでは「上から下へ」進むか、条件で「枝分かれ」するプログラムを見てきました

最後に、プログラムの強力な武器である 反復(繰り返し) を見ていきましょう

Pythonで「〜する間はずっと繰り返す」という命令を出すのが 「while文」です

構造はif文とそっくり!

実は、while の書き方は先ほどの if とほとんど同じです

「合言葉」が違うだけで、条件式とコロン、そしてインデントを使います

例:お風呂が40度になるまで温めるプログラム:

timer = 3

while timer > 0:
  print(timer)
  timer = timer – 1

print(“Start!”)

【while文の動き方】

  1. 条件をチェックtimer > 0(タイマーは0より大きい?)を確認します。最初は「3」なので Yes です
  2. 中身を実行: 画面に数字を表示し、タイマーを1つ減らします
  3. 上に戻る!: ここがポイント!そのまま下へは行かず、もう一度上の条件チェックに戻ります
  4. ループ脱出: これを繰り返し、タイマーが「0」になると条件が No になります。その瞬間ループから抜け出し、最後の print("Start!") が実行されます

たくさんのデータをまとめる「配列(リスト)」

これまでは、apple = 100 のように、1つの変数(箱)に1つのデータを入れてきました

しかし、例えば「クラス30人分のテスト結果」を扱うとき、30個も変数を作るのは大変ですよね

そんな時に便利なのが、複数のデータをひとまとめにできる「配列(リスト)」です

リストのイメージ

変数がいわば「小さな箱」だったのに対し、リストは「仕切りのある長いロッカー」のようなイメージです

リストの書き方

Pythonでは、データを [ ](角カッコ)で囲み、中身を ,(カンマ)で区切って書きます

リストの一度に出す例:

fruits = [“apple”, “banana”, “orange”]

print(fruits)

重要ルール:番号は「0」から始まる!

リストの中身を1つだけ取り出したいときは、インデックス(番号)を使います

ただし、プログラミングの世界では最初のデータは「0番」と数える決まりがあります

  • fruits[0] → “apple”
  • fruits[1] → “banana”

リストから1つずつ出す例:

number = [0,2,4,8,16]

i = 0

while i < 5:

number[i]
print(number[i])
i = i + 1

さらに高度な「多次元配列(リストの中のリスト)」

さて、ここからが本番です

リストは「1列のロッカー」でしたが、世の中にはもっと複雑なデータがあります

例えば、「オセロの盤面」や「クラスごとのテスト結果(1組、2組…)」などは、1列では表しにくいですよね

そこで登場するのが、リストの中にさらにリストを入れる「多次元配列」です

多次元配列のイメージ

1列のロッカーではなく、「縦と横がある棚(表)」をイメージしてください

多次元配列の書き方

Pythonでは、[ ] の中に入れ子の [ ] を書きます

scores = [
[80, 90],
[70, 65]
]

print(scores[0][0])
print(scores[1][0])
print(scores[1][1])

便利な命令をまとめる「関数(かんすう)」

これまでに print() や input() といった、コンピュータに特定の動きをさせる命令を使ってきましたね。これらは、Pythonが最初から用意してくれている「関数」と呼ばれるものです。

プログラミングでは、自分でオリジナルの関数(命令のセット)を作ることもできます。

関数のイメージ

関数は、「材料(引数)」を入れると、中で決まった処理をして、「成果物(戻り値)」を返してくれる自動自動販売機のようなものです

関数の書き方(基本形)

Pythonでオリジナルの関数を作るときは、def(デフ)という合言葉を使います。

def 関数名(引数):
    処理
    return 戻り値

合言葉の def:「これから関数を定義する(作る)よ!」というコンピュータへの合図です

関数名:その命令に付ける好きな名前です(例:greetcalculate など)

引数(ひきすう):関数に引き渡す「材料」になる変数です

コロン( ::if文やwhile文と同じく、設定の区切りに必ず付けます

インデント(字下げ):関数の中身の処理は、必ず先頭に空白を空けて範囲(スコープ)を示します

return(リターン):処理した結果を関数の外へ「成果物(戻り値)」として戻す命令です

実際のコードで見てみよう

「名前」を受け取って、「Hello 〇〇」という挨拶のメッセージを作って返す関数を作ってみます。

# 1. 関数を作る(定義する)
def greet(name):
    message = "Hello " + name
    return message

# 2. 関数を使ってみる(呼び出す)
result = greet("Macky")
print(result)

プログラムの動き方

  1. def greet(name): で、greet という名前の関数を作ります
  2. greet("Macky") で関数を呼び出します。このとき、材料(引数)である name の中に "Macky" という文字が入ります
  3. 関数の中で "Hello ""Macky" が合体し、message という箱に "Hello Macky" が入ります
  4. return message によって、その中身が関数の外に飛び出します
  5. 飛び出してきた結果が変数 result に代入され、最後に print(result) で画面に Hello Macky と表示されます

関数を使うメリットは?

同じような計算や処理をプログラムの中で何度も行うとき、その都度同じコードを何行も書くのは大変ですし、間違いの原因になります

処理を「関数」として1つにまとめておけば、関数名を書くだけでいつでも同じ処理を呼び出せるため、プログラムがすっきりして読みやすくなります

プログラム確認問題:どう動くか予想しよう!

これまで学んだ知識を使って、コンピュータがどんな結果を出すか予想してみましょう。

【第1問】変数の上書き(順次)

次のプログラムを実行すると、画面には何が表示されるでしょうか?

apple = 10
apple = apple + 5
print(apple)

【第2問】条件の分かれ道(if文)

次のプログラムを実行すると、画面には何が表示されるでしょうか?

score = 500

if score >= 1000:
   print("OK!")
else:
   print("Try again")

【第3問】繰り返しの回数(while文)

次のプログラムを実行すると、「Hello!」という文字は何回あらわれるでしょうか

count = 1

while count < 3:
  print("Hello")
  count = count + 1

【第5問】リストの中身を書き換える

次のプログラムを実行したあと、表示される結果は何でしょうか?

fruits = ["apple", "donut"]
fruits[1] = "oreo"
print(fruits)

【第6問】2次元配列の指定(応用)

次の「seats」リストから、「Macky」さんを表示するには、どのように書けばよいでしょうか?

seats = [
    ["Mic", "Eri"],
    ["Saito", "Yamada"],
    ["Paul", "Ken"]
]
print(seats[1][0])

【第7問】リストの合計を出してみよう(反復)

次のプログラムを実行すると、合計(total)はいくつになりますか?

numbers = [10, 20, 30]
total = 0
i = 0
while i < 3:
    total = total + numbers[i]
    i = i + 1
print(total)

【第8問】値の入れ替え(ソートの基本)

並び替え(ソート)の基本は、2つの箱の中身を入れ替えることです

次のプログラムを実行したあと、「data」の中身はどうなっているでしょうか?

data = [40, 10, 30, 20]
n = 4
i = 0
while i < n:
    j = 0
    while j < n - 1:
        if data[j] > data[j + 1]:
            tmp = data[j]
            data[j] = data[j + 1]
            data[j + 1] = tmp
        j = j + 1
    i = i + 1
print(data)

【第9問】関数の初歩(関数の動きを理解する)

def greet(name):
    message = "Hello " + name
    return message

result = greet("Macky")
print(result)

【第10問】関数の応用(処理をまとめるメリット)

def get_max(a, b):
    if a > b:
        return a
    else:
        return b

x = get_max(10, 40)
y = get_max(50, 20)
ans = get_max(x, y)

print(ans)

まとめ

大切なポイントを振り返ってみましょう

  • 3つの基本形(アルゴリズム) 「順次」「分岐」「反復」の組み合わせで、どんな複雑なプログラムも作られています
  • フローチャートの活用 いきなりコードを書くのではなく、まずは図を使って「処理の流れ」を整理することが上達の近道です
  • Pythonのルールを守る:(コロン)」の忘れ物や、「インデント(字下げ)」による範囲の指定に気をつけましょう

まずは基本の形をマスターして、少しずつ複雑なプログラムに挑戦していきましょう!