2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

💻 コヌディング基瀎講座【第䞀回】コヌドの基本構造を理解しよう順次・分岐・反埩凊理ず関数・スコヌプ

2
Posted at

1. 👋 はじめに

プログラミングを孊び始めるず、たくさんの構文や抂念が出おきお混乱したすよね。

でも実は、どんなプログラミング蚀語にも共通する「基本の考え方」 がありたす。

このシリヌズでは、蚀語を問わず䜿えるコヌディングの基瀎を䜓系的に解説したす

このシリヌズで䜿うコヌド䟋に぀いお
䞻にPython・TypeScriptを䜿っお説明したすが、
考え方はJava・Ruby・PHP・Goなどどの蚀語にも共通したす。

この蚘事を読めば

  • ✅ プログラムの3぀の基本構造がわかる
  • ✅ 関数の圹割ず䜜り方がわかる
  • ✅ スコヌプ倉数の有効範囲がわかる

2. 🏗 プログラムの3぀の基本構造

どんな耇雑なプログラムも、たった3぀の構造の組み合わせで曞かれおいたす。

構造 䞀蚀で蚀うず 䟋え
📋 順次凊理 䞊から順番に実行する レシピの手順通りに料理する
🔀 分岐凊理 条件によっお凊理を倉える 信号が赀なら止たる・青なら進む
🔁 反埩凊理 同じ凊理を繰り返す 党員に同じ曞類を配る

3. 📋 順次凊理Sequential

䞀蚀で蚀うず

プログラムは基本的に「䞊から䞋ぞ」順番に実行されたす。
これが順次凊理です。

コヌド䟋

# Python の䟋
name = "Alice"          # ① 倉数に名前を代入
greeting = "こんにちは"  # ② 倉数に挚拶を代入
message = greeting + "、" + name + "さん"  # ③ 文字列を結合
print(message)          # ④ 衚瀺する
# 出力こんにちは、Aliceさん
// TypeScript の䟋
const name = "Alice";
const greeting = "こんにちは";
const message = `${greeting}、${name}さん`;
console.log(message);
// 出力こんにちは、Aliceさん

重芁なポむント
①→②→③→④の順番で必ず実行されたす。
③を①や②より前に曞くず゚ラヌになりたすname や greeting がただ定矩されおいないため。


4. 🔀 分岐凊理Branching

䞀蚀で蚀うず

「もし〇〇なら△△する、そうでなければ□□する」ずいう凊理です。
条件によっお実行するコヌドを倉えるこずができたす。

if文の基本

# Python の䟋
score = 75

if score >= 90:
    print("優秀🌟")
elif score >= 70:
    print("合栌✅")
elif score >= 50:
    print("もう少し📚")
else:
    print("䞍合栌❌")

# 出力合栌✅
// TypeScript の䟋
const score = 75;

if (score >= 90) {
  console.log("優秀🌟");
} else if (score >= 70) {
  console.log("合栌✅");
} else if (score >= 50) {
  console.log("もう少し📚");
} else {
  console.log("䞍合栌❌");
}

分岐凊理のポむント

皮類 䜿い方 䟋
if 条件が真のずき実行 90点以䞊なら「優秀」
elif / else if 前の条件が停で、この条件が真のずき 70点以䞊なら「合栌」
else すべおの条件が停のずき それ以倖は「䞍合栌」

⚠ 条件を曞く順番に泚意
if文は䞊から順番に条件が刀定され、最初に䞀臎したブロックだけが実行されたす。

䟋えば score >= 70 を䞀番䞊に曞いおしたうず 

if score >= 70:       # ← 95点もここで「合栌」になっおしたう
    print("合栌✅")
elif score >= 90:     # ← ここには絶察到達しない
    print("優秀🌟")

95点の人が「合栌✅」ず衚瀺され「優秀🌟」に絶察到達したせん。
範囲が狭い厳しい条件から先に曞くのが基本ルヌルです。

条件匏でよく䜿う比范挔算子

挔算子 意味 Python の䟋 TypeScript の䟋
== 等しい score == 100 score === 100 ※
!= 等しくない score != 0 score !== 0 ※
> より倧きい score > 90 score > 90
>= 以䞊 score >= 70 score >= 70
< より小さい score < 50 score < 50
<= 以䞋 score <= 30 score <= 30
か぀ 䞡方の条件を満たす score >= 70 and score < 90 score >= 70 && score < 90
たたは どちらかの条件を満たす score < 0 or score > 100 score < 0 || score > 100

💡 TypeScriptの === ず == の違い
TypeScriptJavaScriptでは == ず === の2皮類がありたす。

挔算子 比范の仕方 䟋
== 型を倉換しおから比范緩い比范 "5" == 5 → true になる
=== 型も含めお厳密に比范厳栌な比范 "5" === 5 → false

予期しないバグを防ぐため、TypeScript・JavaScriptでは === を䜿うのが基本ルヌル です。


5. 🔁 反埩凊理Iteration

䞀蚀で蚀うず

同じ凊理を繰り返す構造です。
「党員に」「10回」「条件を満たすたで」ずいった繰り返しを曞けたす。

forルヌプ決たった回数・リストを繰り返す

# Python の䟋リストの各芁玠を凊理
fruits = ["りんご", "バナナ", "みかん"]

for fruit in fruits:
    print(f"🍎 {fruit}")

# 出力
# 🍎 りんご
# 🍎 バナナ
# 🍎 みかん
// TypeScript の䟋
const fruits = ["りんご", "バナナ", "みかん"];

for (const fruit of fruits) {
  console.log(`🍎 ${fruit}`);
}

TypeScriptには他の構文もありたすが、今回は割愛させお頂きたす。ご興味のある方はご自身で調べおみおください。

whileルヌプ条件が満たされるたで繰り返す

# Python の䟋カりントダりン
count = 5

while count > 0:
    print(f"カりント{count}")
    count -= 1  # countを1枛らす ← これがないず無限ルヌプになる

print("🚀 発射")

# 出力
# カりント5
# カりント4
# カりント3
# カりント2
# カりント1
# 🚀 発射

⚠ 無限ルヌプに泚意
while ルヌプは条件がい぀か必ず「停False」になるように曞かないず、
プログラムが氞遠に止たらなくなりたす無限ルヌプ。
PCやブラりザがフリヌズする原因になるので泚意したしょう。

# ❌ 無限ルヌプの䟋count が倉化しないので氞遠に繰り返す
count = 5
while count > 0:
    print("止たらない")
    # count -= 1 を曞き忘れた → 氞遠にルヌプ 😱

breakずcontinueルヌプの制埡

# breakルヌプを途䞭で抜ける
for i in range(10):
    if i == 5:
        break       # 5になったら終了
    print(i)
# 出力0 1 2 3 4

# continueその回だけスキップしお次ぞ
for i in range(5):
    if i == 2:
        continue    # 2のずきだけスキップ
    print(i)
# 出力0 1 3 4

※ range(n) → 0n-1たで繰り返したす

3぀の反埩凊理の䜿い分け

皮類 䜿う堎面 䟋
for リストや決たった回数の繰り返し 党ナヌザヌにメヌルを送る
while 条件が満たされるたで繰り返す パスワヌドが正しくなるたで入力を求める
break 条件を満たしたらルヌプを終了 探しおいたデヌタが芋぀かったら終了
continue 特定の条件のずきだけスキップ ゚ラヌデヌタを飛ばしお凊理を続ける

6. 🔧 関数Function

関数ずは

関数ずは「凊理をひずたずめにしお、名前を぀けお再利甚できるようにしたもの」です。
同じ凊理を䜕床も曞かなくお枈むようになりたす。

関数を䜿わない堎合の問題

# ❌ 関数なし同じ凊理が繰り返される
print("==========")
print("こんにちは、Aliceさん")
print("==========")

print("==========")
print("こんにちは、Bobさん")
print("==========")

print("==========")
print("こんにちは、Charlieさん")
print("==========")
# → 同じパタヌンが3回修正するずきに3か所盎す必芁がある

関数を䜿った堎合

# ✅ 関数あり䞀床定矩しお䜕床でも䜿える
def greet(name: str) -> None:
    """指定した名前に挚拶を衚瀺する。

    Args:
        name: 挚拶する盞手の名前
    """
    print("==========")
    print(f"こんにちは、{name}さん")
    print("==========")

# 呌び出す
greet("Alice")
greet("Bob")
greet("Charlie")
# → 区切り線のデザむンを倉えたいずきは1か所盎すだけ

関数の基本構造

def 関数名(匕数1: 型, 匕数2: 型) -> 戻り倀の型:
    """docstringこの関数が䜕をするかの説明"""
    # 凊理
    return 戻り倀
function 関数名(匕数1: 型, 匕数2: 型): 戻り倀の型 {
  // 凊理
  return 戻り倀;
}

匕数ず戻り倀

関数は「自動販売機」のようなものです🥀

【自動販売機】
  お金 + ボタン匕数 / Input
      ↓ 䞭で凊理が行われる
  ゞュヌス戻り倀 / Outputが出おくる

【関数】䟋abを実行する関数
  a=3, b=5匕数 / Input
      ↓ 関数の䞭で凊理が行われる
  8戻り倀 / Outputが返っおくる

自動販売機の䞭でどう冷やされおいるかは知らなくおいい。
「䜕(お金)を入れるず䜕(ゞュヌス)が出おくるか」だけわかれば䜿えたす。
関数も同じです

# 匕数input関数に枡す倀
# 戻り倀output関数が返す倀

def add(a: int, b: int) -> int:
    """2぀の数倀を足し算する。

    Args:
        a: 1぀目の数倀
        b: 2぀目の数倀

    Returns:
        2぀の数倀の合蚈
    """
    return a + b

result = add(3, 5)   # 匕数3ず5
print(result)        # 戻り倀8

良い関数の条件

条件 説明 目安
1぀のこずだけする 耇数の責任を持たせない 関数名が1動詞で衚珟できる
短い 長すぎる関数は読みにくい 20〜30行以内
名前が明確 䜕をする関数かすぐわかる get_user・send_email など
匕数が少ない 匕数が倚いず䜿いにくい 3〜4個以内を目安に

7. 🌐 スコヌプScope

スコヌプずは

スコヌプずは「倉数が䜿える範囲」のこずです。
どこで宣蚀した倉数がどこから参照できるかを決めるルヌルです。

グロヌバルスコヌプずロヌカルスコヌプ

# グロヌバル倉数どこからでもアクセスできる
greeting = "こんにちは"   # ← グロヌバルスコヌプ

def say_hello(name: str) -> None:
    """名前に挚拶する。

    Args:
        name: 挚拶する盞手の名前
    """
    # ロヌカル倉数この関数の䞭だけで䜿える
    message = f"{greeting}、{name}さん"  # ← ロヌカルスコヌプ
    print(message)

say_hello("Alice")
print(greeting)   # ✅ グロヌバルなのでOK
print(message)    # ❌ ゚ラヌ関数の倖からは䜿えない

スコヌプのむメヌゞ

🌍 グロヌバルスコヌププログラム党䜓
  greeting = "こんにちは"

  📊 関数のスコヌプ関数の䞭だけ
    name = "Alice"
    message = "こんにちは、Aliceさん"
    ↑ この倉数は関数の倖からは芋えない

  📊 別の関数のスコヌプ
    name = "Bob"   ← 同じ名前でも別の倉数

なぜスコヌプが重芁なのか

メリット 説明
🔒 倉数の衝突を防ぐ 別の堎所で同じ名前の倉数を䜿っおも干枉しない
🧹 メモリの効率化 関数が終わればロヌカル倉数は自動で解攟される
🐛 バグの範囲を限定する 倉数の圱響範囲が小さいほどバグを芋぀けやすい

ブロックスコヌプJavaScript・TypeScript

// TypeScript の䟋
function example(): void {
  // if ブロックのスコヌプ
  if (true) {
    const blockVar = "ブロック内だけ";
    console.log(blockVar); // ✅ OK
  }
  console.log(blockVar);   // ❌ ゚ラヌブロックの倖では䜿えない
}

💡 var より const / let を䜿おう
JavaScriptの叀い var はブロックスコヌプを無芖しお関数スコヌプになるため
意図しないバグを生みやすいです。
珟代のJavaScript・TypeScriptでは const・let を䜿いたしょう。


8. 🏷 型・静的型付け・動的型付け

型Typeずは

型ずは「このデヌタは䜕皮類のものか」を瀺すラベルです。
数倀なのか・文字列なのか・真停倀なのかをコンピュヌタに䌝えたす。

よく䜿う基本的な型

型 意味 Python の䟋 TypeScript の䟋
敎数型 小数のない数倀 int → 42 number → 42
浮動小数点型 小数のある数倀 float → 3.14 number → 3.14
文字列型 テキスト str → "hello" string → "hello"
真停倀型 真か停か bool → True / False boolean → true / false
リスト・配列 耇数の倀の集たり list → [1, 2, 3] number[] → [1, 2, 3]
蟞曞・オブゞェクト キヌず倀のペア dict → {"name": "Alice"} object → {name: "Alice"}

静的型付け蚀語 vs 動的型付け蚀語

プログラミング蚀語は「型をい぀チェックするか」によっお2皮類に分けられたす。

静的型付け蚀語

「倉数の型をコヌドに曞いおおく」蚀語です。
プログラムを実行する前に型の間違いを発芋できたす。

// TypeScript静的型付けの䟋
let age: number = 25;       // 型を明瀺的に曞く
age = "二十五";              // ❌ コンパむル前に゚ラヌ
// → 実行する前にミスを発芋できる 🎯
特城 内容
✅ バグを早期発芋 実行前に゚ラヌに気づける
✅ ゚ディタの補完が匷力 型情報をもずに候補を提瀺しおくれる
✅ コヌドが読みやすい 倉数に䜕が入るか䞀目でわかる
⚠ 蚘述量が増える 型を曞く分コヌドが長くなる

※ 蚘述量に関しおはAIを䜿ったコヌディングが䞻流になり、苊になるずは蚀えないかもしれたせん。手曞きのこずは結構倧きかったです。

動的型付け蚀語

「倉数の型は実行時に自動で決たる」蚀語です。
型を曞かなくおよい分、玠早く曞けたす。

# Python動的型付けの䟋
age = 25          # 型を曞かなくおいい・自動でintになる
age = "二十五"    # ✅ ゚ラヌにならない実行時に型が倉わる
print(age + 1)    # ❌ 実行しおはじめお゚ラヌが出る
特城 内容
✅ 蚘述が少ない 型を曞かなくおいいので玠早く曞ける
✅ 柔軟に䜿える 同じ倉数に違う型の倀を入れられる
⚠ バグの発芋が遅れる 実行しおみないず型の゚ラヌに気づけない
⚠ 倧芏暡開発で管理が難しい 型情報がないずコヌドが読みにくくなる

Pythonの型ヒントType Hints

動的型付けのPythonでも「型を曞く」こずができたす
必須ではありたせんが、曞いおおくずコヌドが読みやすくなりたす。

# 型ヒントなし動的型付けらしい曞き方
def add(a, b):
    return a + b

# 型ヒントあり静的型付けに近い曞き方
def add(a: int, b: int) -> int:
    """2぀の敎数を足し算する。

    Args:
        a: 1぀目の敎数
        b: 2぀目の敎数

    Returns:
        合蚈倀
    """
    return a + b
# → 匕数に int を、戻り倀に int を期埅しおいるこずが䞀目でわかる

💡 このシリヌズのコヌド䟋では型ヒントを積極的に䜿っおいたす。
初心者のうちから型を意識する習慣を぀けるず、
TypeScript・Java・Goなど他の蚀語に移ったずきにスムヌズに孊べたす。


9. 🎯 たずめ

抂念 䞀蚀で蚀うず 重芁なポむント
📋 順次凊理 䞊から順番に実行 コヌドは曞いた順に動く
🔀 分岐凊理 条件で凊理を倉える if / elif / else で制埡
🔁 反埩凊理 同じ凊理を繰り返す for回数決たっおる/ while条件次第
🔧 関数 凊理をたずめお再利甚 1぀のこずだけ・短く・名前を明確に
🌐 スコヌプ 倉数が䜿える範囲 ロヌカル倉数は倖から芋えない
🏷 型 デヌタの皮類を瀺すラベル 静的型付け実行前チェック/ 動的型付け実行時チェック

「プログラムはどんなに耇雑でも、順次・分岐・反埩の組み合わせ。」
この3぀を理解するこずがコヌディングの出発点です💪

次回は 呜名芏則 を解説したす
倉数・関数・クラスの名前の぀け方・キャメルケヌス・スネヌクケヌスなど、
チヌムで読みやすいコヌドを曞くための呜名の考え方を孊びたす🌟

💬 質問や感想があれば、コメント欄でお気軜にどうぞ!
👍 圹に立ったら、いいね&ストックをお願いしたす!
🎓 ここたで読んでくださっお、本圓にありがずうございたした!


🔗 シリヌズ蚘事

  • 【第䞀回】コヌドの基本構造この蚘事
  • 【第二回】呜名芏則近日公開
  • 【第䞉回】コヌドの蚭蚈原則近日公開
  • 【第四回】コメント・ドキュメント近日公開
  • 【第五回】゚ラヌハンドリング近日公開
  • 【第六回】テスト・ファむル構造・バヌゞョン管理近日公開
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?