Contents
全体像と目標
1 週間で 「変数・制御構文・配列・ポインタ・関数設計・ファイル I/O」 を自力で書けるようになることを目指します。毎日 30〜60 分の実装課題に取り組み、
書く → コンパイル → 実行 → 振り返り のサイクルを回すことで、概念理解と開発フローへの慣れが同時に定着します。
7 日間テーマ
| Day | テーマ | 主なアウトプット例 |
|---|---|---|
| 1 | 変数・データ型・printf/scanf |
Hello, World! と標準入力取得プログラム |
| 2 | 制御構文(if·else·switch) | 条件分岐で簡単な計算機能 |
| 3 | 配列・文字列 | 文字列のコピー/配列走査 |
| 4 | ポインタ基礎 | アドレス取得、ポインタによるスワップ関数 |
| 5 | 関数設計(プロトタイプ・ヘッダー) | 複数ファイルに分割した電卓雛形 |
| 6 | 標準入出力とファイル I/O | テキストファイルへの書き込み/読み込み |
| 7 | 動的メモリ管理+総合演習 | malloc/free を使った TODO アプリの完成 |
このプランを終えれば、実務で頻出する「コマンドラインツール」や「ファイル処理」の基本が身につきます。
開発環境セットアップ(Windows・macOS・Linux)
1. エディタとコンパイラのインストール
| OS | 手順 |
|---|---|
| Windows | 1️⃣ Visual Studio Community 2022 を公式サイトからダウンロードし、「C++ デスクトップ開発」 ワークロードを選んでインストール。 2️⃣ VS Code を https://code.visualstudio.com/ から取得し、拡張機能 C/C++ (Microsoft) と Code Runner をインストール。 |
| macOS | 1️⃣ App Store または公式サイトから VS Code を入手。 2️⃣ ターミナルで xcode-select --install を実行し、Xcode Command Line Tools(clang)を導入。 |
| Ubuntu / Debian 系 Linux | 1️⃣ Microsoft の apt リポジトリを追加(公式リポジトリには VS Code が無いため)。bash\nwget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg\nsudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/\n\necho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main\" | sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null\nsudo apt update\n\n2️⃣ 必要なパッケージを一括インストール。bash\nsudo apt install -y build-essential clangd code\n |
| その他の Linux | gcc と clang が入っているか確認し、ディストリビューションの公式リポジトリでインストールしてください(例: sudo dnf install gcc clang)。 |
2. MinGW (Windows) の導入
- 前提条件:Chocolatey を利用する場合は、管理者権限で PowerShell を開き以下を実行して Chocolatey 本体をインストールします。
powershell\nSet-ExecutionPolicy Bypass -Scope Process -Force;\n[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;\niex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))\n - MinGW のインストール:Chocolatey が既に導入済みなら次のコマンドで MinGW‑w64 を取得できます。
powershell\nchoco install mingw -y\n - 代替方法(手動):公式サイト (https://www.mingw-w64.org/) から「mingw-w64-install.exe」をダウンロードし、インストーラの指示に従って
C:\mingw-w64配下に展開。インストール後は環境変数 Path にC:\mingw-w64\binを追加してください。
3. パス設定(必要な場合)
| OS | 設定例 |
|---|---|
| Windows | システムのプロパティ → 環境変数 → Path に C:\MinGW\bin (または Chocolatey がインストールした C:\ProgramData\chocolatey\bin)を追記。 |
| macOS | デフォルトで /usr/bin/clang が PATH に含まれます。Homebrew で gcc を入れた場合は export PATH="/opt/homebrew/opt/gcc/bin:$PATH" を .zshrc に追加。 |
| Linux | apt が自動的に /usr/bin をパスへ登録します。手動インストールした場合は export PATH="/usr/local/bin:$PATH" などをシェル設定ファイルに書き込みます。 |
以上の手順が完了すれば、VS Code のターミナルから
bash\ngcc hello.c -o hello && ./hello\n
が問題なく実行できるはずです。
日別学習項目とサンプルコード
Day 1 – 変数・データ型
- ポイント:
int,unsigned int,float,doubleのサイズ感とリテラル表記。 - サンプル
c\n#include <stdio.h>\nint main(void) {\n int cnt = 10;\n double pi = 3.1415926535;\n printf(\"cnt=%d, pi=%.5f\\n\", cnt, pi);\n return 0;\n}\n
Day 2 – 制御構文
- ポイント:
if/else,switch,for,while,do‑whileの使い分けとスコープ。 - サンプル
c\nfor (int i = 0; i < 5; ++i) {\n if (i % 2) printf(\"%d は奇数\\n\", i);\n else printf(\"%d は偶数\\n\", i);\n}\n
Day 3 – 配列・文字列
- ポイント:静的配列の宣言と境界チェック、
char[]と'\0'の関係。 - サンプル
c\nchar name[20] = \"Alice\"; // 自動で '\\0' が付く\nprintf(\"%s (%zu バイト)\\n\", name, sizeof(name));\n
Day 4 – ポインタ基礎
- ポイント:
&と*の意味、ポインタと配列の等価性。 - サンプル
c\nint x = 42; // 変数本体\nint *p = &x; // アドレス取得\nprintf(\"x=%d, *p=%d\\n\", x, *p);\n
Day 5 – 関数設計
- ポイント:プロトタイプ宣言、ヘッダー分割、値渡し vs ポインタ渡し。
- サンプル(header / source)
calc.h
c\n#ifndef CALC_H\n#define CALC_H\n\ndouble add(double a, double b);\ndouble sub(double a, double b);\n#endif // CALC_H\n
calc.c
c\n#include \"calc.h\"\n\ndouble add(double a, double b) { return a + b; }\ndouble sub(double a, double b) { return a - b; }\n
Day 6 – 標準入出力とファイル I/O
- ポイント:
printf/scanfのフォーマット、fgetsとfprintfによる安全な入出力。 - サンプル(テキスト保存)
c\nFILE *fp = fopen(\"data.txt\", \"w\");\nif (fp) {\n fprintf(fp, \"%d %s\\n\", 123, \"sample\");\n fclose(fp);\n}\n
Day 7 – 動的メモリ管理+総合演習
- ポイント:
malloc,realloc,freeの正しい組み合わせとエラーチェック。 - サンプル(TODO リスト)
c\ntypedef struct { int id; char title[64]; int done; } Todo;\nTodo *list = NULL; size_t cnt = 0;\n// 追加例\nlist = realloc(list, ++cnt * sizeof(Todo));\nlist[cnt-1] = (Todo){ .id = cnt, .done = 0 };\nstrcpy(list[cnt-1].title, \"Buy milk\");\n
ミニプロジェクト(実務志向)
| プロジェクト | 主な学習要素 | コンパイル例 |
|---|---|---|
| コマンドライン電卓 | 関数分割、switch 文、除算のゼロチェック |
gcc calc.c -o calc |
| テキスト検索ツール | ファイル I/O、文字列検索 (strstr)、エラーハンドリング |
gcc search.c -o search -Wall |
| 簡易 TODO 管理アプリ | 構造体・ポインタ・動的配列、永続化(binary I/O) | gcc todo.c -o todo |
各プロジェクトは「作成 → コンパイル → 実行 → 振り返り」のサイクルで取り組み、概念が実務レベルで統合できているかを確認します。
学習効果測定と次のステップ
チェックリスト(自己評価)
- [ ] コンパイルエラー解決率:課題中に出たエラーの 90 % 以上を自力で修正できたか。
- [ ] 標準入出力:
printf/scanfとfprintf/fgetsを使い分けられる。 - [ ] ポインタ操作:アドレス取得・間接参照が誤りなく書ける。
- [ ] 関数設計:ヘッダーと実装ファイルに分割し、ビルドできる。
- [ ] ファイル I/O:テキストの読み書きが正しく行える。
- [ ] 動的メモリ管理:
malloc/freeのペアを適切に配置できている。
合格基準:上記項目の 80 % 以上が「はい」の場合は、次フェーズ(データ構造・アルゴリズム)へ進む判断材料とします。
次に挑むべき領域
- リンクドリスト & スタック/キュー
- ソートアルゴリズム(バブル, クイック, マージ)と計算量比較
- 探索アルゴリズム(線形・二分探索)
推奨教材(公式情報のみ)
- 「C言語 一週間で学べるシリーズ」:概念ごとの演習問題が豊富 → https://c-lang.sevendays-study.com/
- app-tatsujin.com のデータ構造入門ページ:実装例と解説が充実 → https://app-tatsujin.com/data-structures
まとめ
- 7 日間で基礎を固め、ミニプロジェクトで実務的なコードを書けるようになる
- 環境構築は OS ごとに明示し、Linux の VS Code インストール手順や Windows の MinGW 前提条件も併記
- 冗長だった Point/Reason 表現を削除し、簡潔で読みやすい構成に改訂
この学習プランを実践すれば、C 言語の基礎だけでなく「開発フロー全体」への自信が身につきます。次のステップへ進む準備は整いましたか?ぜひ手を動かして確かなスキルに変えていきましょう!