プログラミング基礎とは?わかりやすく解説
変数・分岐・繰り返しに加え、プログラム言語の翻訳とデータ記述言語を学びます。
最初に考えてみよう
コンピュータは、人間のように「いい感じにやって」と言われても動けません。どうすれば、やることの順番や条件を、コンピュータにも分かる形で伝えられるのでしょうか?
解説
1プログラム = 上から順に実行する命令の並び
例:「買い物の送料を決めて支払額を表示する」プログラム。コンピュータは矢印に沿って、上から1つずつ実行します。
- ①値を受け取る
価格 ← 800 - ②処理する
税込 ← 800 × 1.1 = 880 - ③条件を判断する
880 ≧ 1000? → いいえ - ④結果を出す
880 + 500 = 1380 を表示
この図には上から順に進む形(順次)と条件で道が分かれる形(分岐)が入っています。 これに同じ所へ戻ってくり返す形(反復)を加えた3つの組み合わせで、どんなプログラムも書けます。
2順次 = 上から1つずつ実行する
いちばん単純な形。処理A → 処理B → 処理C と、書いた順に1回ずつ実行します。
価格 ← 800税込 ← 価格 × 1.1税込を表示→ 880
変数 = 値を入れて、名前で取り出す箱
「←」は算数の「等しい」ではなく、右の値を左の箱に入れる(代入)という意味。 順番も大事で、B を A より先に実行すると価格の箱がまだ空なので計算できません。
3分岐 = 条件で道が分かれる
ひし形で条件を判断し、はい/いいえ のどちらか片方の道だけを進みます(①の図の下半分)。
もし 税込 ≧ 1000 なら送料 ← 0はい の道そうでなければ送料 ← 500いいえ の道送料を表示
試験の形:「a ≧ 5 なら B を表示、そうでなければ C を表示」
| a | 条件の判断 | 表示 |
|---|---|---|
| 7 | 7 ≧ 5 → はい | B |
| 5 | 5 ≧ 5 → はい(5も含む) | B |
| 3 | 3 ≧ 5 → いいえ | C |
実行されるのはどちらか一方だけ(両方・どちらも無し にはならない)。 「≧(以上)」は境目の数を含み、「>(より大きい)」は含みません。
4反復 = 条件を満たす間くり返す
処理のあと矢印が条件へ戻るのが反復(くり返し)。条件が「いいえ」になった時点で輪から抜けます。
合計 ← 0i ← 1i ≦ 3 の間 くり返す合計 ← 合計 + ii ← i + 1合計を表示→ 6
1周ずつ箱の中身を追う(試験の解き方)
| i ≦ 3 ? | 合計 | i | |
|---|---|---|---|
| はじめ | — | 0 | 1 |
| 1周目 | 1 ≦ 3 はい | 0+1=1 | 2 |
| 2周目 | 2 ≦ 3 はい | 1+2=3 | 3 |
| 3周目 | 3 ≦ 3 はい | 3+3=6 | 4 |
| 抜ける | 4 ≦ 3 いいえ | 6(表示) | 4 |
条件を確かめるのは足す前。i が4になった時点で抜けるので、4は足しません(1+2+3=6)。 抜ける条件(終了条件)がないと、いつまでも止まらない無限ループになります。
5関数 = 処理のまとまりに名前をつけて呼び出す
同じ処理をひとまとまりにして名前をつけておけば、必要なときに名前を書くだけで呼び出せる。
- ① 呼び出す:
税込(800)で関数へジャンプ - ② 関数の中で処理:
結果 ← 800×1.1 - ③ 結果を返す:880 がメインの a に入り、続きから実行
- 同じ関数を
税込(1200)でも使える(→ 1320)
関数を使わない
a ← 800 × 1.1 b ← 1200 × 1.1 c ← 500 × 1.1
同じ計算を3回書く。税率が変わると3か所直す
関数を使う
関数 税込(価格):価格 × 1.1 を返す a ← 税込(800) b ← 税込(1200) c ← 税込(500)
計算は1回だけ定義して3回呼ぶ。直すのは1か所
変数
値を1つ入れる箱
価格 ← 800配列
同じ種類の値を番号で並べた箱
価格[1], 価格[2]…関数(サブルーチン)
処理のまとまりに名前→何度も呼べる
税込(800)コメント
人向けのメモ。実行されない
// 送料の計算6書いたプログラムを機械語に翻訳する
CPUが直接わかるのは機械語(0と1)だけ。人が書いたプログラムは、翻訳役のソフトが機械語にします。
見るポイント:翻訳役によって「翻訳」と「実行」の順番が違う。 まとめて翻訳してから実行するか、1行ずつ翻訳しながら実行するか。
人が読める高水準言語で書いた。でもCPUがわかるのは機械語(0と1)だけ。
合計 ← 0・・・合計 ← 合計 + 5・・・合計を表示・・・| 翻訳役 | 何を・どう翻訳する? |
|---|---|
| アセンブラ | アセンブリ言語(記号)→ 機械語。1対1で置き換え |
| コンパイラ | 高水準言語 → 機械語。全体をまとめて翻訳してから実行 |
| インタプリタ | 高水準言語を1行ずつ翻訳しながら実行 |
| リンカ | 翻訳ではなく、翻訳済みの部品をつなげて実行ファイルにする |
JavaScript は、Webブラウザの上で動いてWebページに動き(ボタンを押すと表示が変わる、など)を付けるスクリプト言語です。 事前にコンパイルせず、ブラウザが読みながら実行します。名前は似ていますが、Java とは別の言語です。
7データの書き方 = JSON・XML・HTML・CSV
プログラム同士やWebでデータをやりとりするときの書き方(データ記述言語)です。形式を切り替えて見比べよう。
同じデータ「商品名=ノートPC、価格=98000」を、4つの書き方で比べよう。
{
"商品名": "ノートPC",
"価格": 98000
}キー:値 の組
波括弧 { } の中に 「キー: 値」の組を並べる。軽くて読みやすく、Web API のデータ交換の定番。
試験のポイント
ITパスポート試験での問われ方
疑似言語の流れ、言語の翻訳方式、HTML・XML・JSONの表現方法が問われる
間違えやすいポイント
- 変数を固定値だと思う
- アセンブラとコンパイラを混同する
- HTMLを汎用プログラミング言語だと思う
関連用語
機械語、アセンブリ言語、高水準言語、コンパイラ、インタプリタ、JavaScript、HTML、XML、JSON
図解の内容を文章で読む
プログラミング基礎をイメージでつかむ
プログラムは、コンピュータにしてほしい手順を書いたものです。変数・条件分岐・繰り返しで手順を作り、人が読みやすい高水準言語などを翻訳して機械語にします。HTML・XML・JSONは、画面やデータの構造を表すために使います。
たとえると:外国語の指示を通訳して機械に伝えるのがコンパイラなどの翻訳役、荷物に見出しを付けて中身を整理するのがHTML・XML・JSONです。
プログラムの基本部品は、値を入れ替えられる変数、条件による分岐、終了条件まで行う繰り返しです。コンピュータが直接実行する0と1に近い命令が機械語、命令を短い記号で書く低水準言語がアセンブリ言語で、アセンブラが機械語へ翻訳します。人が読み書きしやすい高水準言語は、コンパイラがプログラム全体をまとめて翻訳するか、インタプリタが実行しながら逐次翻訳します。一方、HTML・XML・JSONは主に情報の構造を表すデータ記述言語です。HTMLはタグでWebページの構造、XMLは自由に定義したタグでデータの意味と階層、JSONは波括弧の中にキーと値の組を置いて軽量なデータ交換を表します。なお、JavaScriptはWebブラウザ上で動いてWebページに動きを付けるスクリプト言語で、事前にコンパイルせずに実行されます。名前は似ていますが、Javaとは別の言語です。試験では、実行手順だけでなく、どの翻訳ソフトや記述形式を使うかも区別します。
押さえどころ
- 変数・分岐・繰り返しで手順を作る
- 言語は翻訳して機械語にする
- HTML・XMLはタグ、JSONはキーと値で表す
確認問題(6問)
確認問題は本サービスのオリジナル問題です。ログインなしで解けます(結果は保存されません)。
「プログラミング基礎」の過去問(1問)
IPAが公開しているITパスポート試験の公開問題から、このテーマの問題を集めました。
つながるテーマ
学習を記録して、合格まで続ける
教材と確認問題はこのページで全部無料で使えます。登録すると「プログラミング基礎」の結果や習熟度が記録され、苦手分野の復習提案、試験日までの学習計画、合格準備度の見える化が使えます。最初の7日間は学習記録も無料です。