| English | 意味 |
|---|---|
| algorithm/ˈælɡərɪθəm/ | アルゴリズム |
| sequence/ˈsiːkwəns/ | 順序 |
| deterministic/dɪˌtɜːmɪˈnɪstɪk/ | 決定論的 |
| identifier table/aɪˈdentɪfaɪə ˈteɪbl/ | 識別子表 |
| variable/ˈveərɪəbl/ | 変数 |
| data type/ˈdeɪtə taɪp/ | データ型 |
| pseudocode/ˈsuːdəʊkəʊd/ | 擬似コード |
| assignment/əˈsaɪnmənt/ | 代入 |
| loop/luːp/ | ループ |
| count-controlled loop/kaʊnt kənˈtrəʊld luːp/ | カウント制御ループ |
| pre-condition loop/priː kənˈdɪʃn luːp/ | 前条件ループ |
| post-condition loop/pəʊst kənˈdɪʃn luːp/ | 後条件ループ |
| iteration/ˌɪtəˈreɪʃn/ | 反復 |
| selection/sɪˈlekʃn/ | 選択 |
| flowchart/ˈfləʊtʃɑːt/ | フローチャート |
| stepwise refinement/ˈstepwaɪz rɪˈfaɪnmənt/ | 段階的精密化 |
史上最も高価なハイフン
- 1962年7月22日、金星へ向かうマリーナー1号ロケットは、発射から293秒後に爆発した。
- 原因は誘導方程式の記号の一つ上方的バーの欠落であった。コンピュータは書かれた手順を正確に実行したが、その手順自体が間違っていた。
- コンピュータはあなたの意図を補完することはない。与えるすべての手順には厳密に一つの意味があるべきである。
- このImplementedが機械が追従可能な手順を書くことについて学んでいるのはそのためである:アルゴリズム。
アルゴリズムとは何か
- アルゴリズムとは、問題に対する解決策を定義された手順の列として表したものである。
- 各手順は曖昧さがない(意味が一つ)、決定論的(同じ入力が同じ出力を生む)、有限(手順が終了する)、有効(各手順を実際に実行可能である)。
- 何をするかを示し、特定のプログラミング言語に依存せず、すべてが入力 → 処理 → 出力に従う。

すべてのアルゴリズムは同じ形を持つ:入力、処理、出力
An algorithm is "deterministic". This means:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
Deterministic = same input → same output every time. (Finite = the steps end; unambiguous = one meaning per step.)
worked example: 変数名表
- コーディングの前に、変数名表にすべてのデータをリストアップする:変数名、データ型、および説明。
- 店舗の在庫プログラムは
"Fruit"、20/02/2025、12.67、TRUEを格納する。試験ではそれぞれに対して名前と型を求める。 Category : STRING(在庫のカテゴリー)、DateSold : DATE(販売時)、ItemCost : REAL(原価)、InStock : BOOLEAN(在庫ありか)。- 名前と型を一行あたり1点とするので、擬似コードガイドと同じように型を正確に記述する:
INTEGER、REAL、STRING、CHAR、BOOLEAN、DATE。

変数名表は、コーディング前にすべてのデータの名称を指定する
In an identifier table, the data type for a value such as 12.67 (a cost) is ____.
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
A number with a decimal part is a REAL. INTEGER is for whole numbers, STRING for text, BOOLEAN for TRUE/FALSE and DATE for a date.
三つの構文
IF … THEN … ELSE … ENDIF
- 代入は矢印を使って値を格納し、
Total ← Total + Value;=は比較用である。DIVは整数除法、MODは剰余なので、17 MOD 5 = 2となる。
INPUT Age # sequence
IF Age >= 18 THEN
# selection
ENDIF
OUTPUT "Adult"
ELSE
OUTPUT "Minor"
ENDIF
FOR Count <- 1 TO 10 # iteration
OUTPUT Count
NEXT Count

あらゆるアルゴリズムの三つの構成要素
Selection: follow the IF / ELSE branches
Drag the score and watch which branch runs. Selection tests each condition in turn and takes the FIRST one that is true — that is how IF … ELSE IF … ELSE works.
Match each of the three programming constructs to what it does.
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
Every algorithm is built from just three constructs — sequence, selection and iteration.
In this pseudocode, which symbol means assignment (store a value)?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
Assignment uses ← (e.g. x ← 5); = is reserved for comparison.
What is the value of 17 MOD 5?
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
MOD gives the remainder: $17 = 3 \times 5 + 2$, so 17 MOD 5 = 2. (17 DIV 5 = 3.)
どのループか?
FOR … NEXTは回数が既知の場合: カウント制御ループ。WHILE … ENDWHILEは各パスの前に条件を試すため、本体がゼロ回実行される可能性がある: 前条件ループ。REPEAT … UNTILは各パスの後に条件を試すため、本体は必ず少なくとも一度実行される: 後条件ループ。入力の検証がその典型的な例である。- 「反復構文を説明せよ」への回答は、ループの名前を挙げ、条件がどこで試されているかを述べ、その結果を記述する。

WHILEループは本体実行前に条件を試し、REPEAT … UNTILループは後に試す
How does a WHILE loop differ from a REPEAT...UNTIL loop?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
WHILE checks first (can run 0 times); REPEAT...UNTIL checks after, so it always runs at least once.
A FOR loop is count-controlled (it repeats a fixed number of times), while a WHILE loop is condition-controlled (it repeats until a condition changes).
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
Use FOR when you know how many passes; use WHILE/REPEAT when you loop until something becomes true.
worked example: 言葉から擬似コードへ
- 課題: 100個の整数を入力し、正の数だけ加算して合計を出力する。
- まずデータを計画する:
Count、Total、NextNumber、すべてINTEGER。その後、三つの構文で残りを処理する。
DECLARE Count, Total, NextNumber : INTEGER
Total <- 0
FOR Count <- 1 TO 100
INPUT NextNumber
IF NextNumber > 0 THEN
Total <- Total + NextNumber
ENDIF
NEXT Count
OUTPUT Total
- 追加質問では、構文を特定することを求める:反復(
FORループが入力を100回繰り返す)、選択(IFが値を加算するかを決定する)、シーケンス(ステートメントが順序通り実行される)。
抜粋からの構文の特定
- 好まれない出題形式に、5つの擬似コード抜粋を示し、それぞれが代入、選択、反復のいずれを使用しているかにチェックさせる。
Result ← CalculateTotal()は代入である。WHILE IsClosedは反復である。REPEAT … INPUT Value … UNTIL Sales[4] > Valueは反復かつ代入である(INPUTが値を格納する)。 IF Sales[Current] <= 150 THEN Discount ← TRUE ENDIF- 抜粋の各行を見る。最初の一行だけでなく、一行に二つのチェックが必要な場合もある。
Which constructs does this extract use? REPEAT … INPUT Value … UNTIL Total > 100. Select all that apply.
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
REPEAT … UNTIL is iteration, and INPUT Value stores a value, which counts as assignment. There is no IF or CASE, so no selection — the UNTIL condition controls the loop, it does not choose between branches.
フローチャート
- フローチャートは、図として同じアルゴリズムを記録する。楕円は
STARTとEND、長方形はプロセス、平行四辺形はINPUT/OUTPUT、菱形は判断である。 - 菱形は選択が行われる場所であり、フローチャート上で上向きに戻るフローラインはループである。
- 試験では両方の形式で問われる:フローチャートからの擬似コード、および構文化された英語または擬似コードからのフローチャートである。描くべき記号はすべて、擬似コードの1行に対応させること。

各フローチャートの記号は、1種類の擬似コード文に対応する
In a flowchart, what does a diamond represent?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
Diamonds are where selection happens, and a diamond whose flow line goes back up the chart is a loop test. Rectangles are processes, parallelograms input/output, ovals START and END.
解例:推測ゲーム
- プログラムは1から100までのランダムな整数を選択し、ユーザーが正解するまで推測を続ける。ユーザーは少なくとも一度推測を行う必要があるため、このループは
REPEAT … UNTILである。
DECLARE Target, Guess : INTEGER
Target <- INT(RAND(100)) + 1
REPEAT
INPUT Guess
IF Guess < Target THEN
OUTPUT "Too low"
ELSE
IF Guess > Target THEN
OUTPUT "Too high"
ENDIF
ENDIF
UNTIL Guess = Target
OUTPUT "Correct"
- フローチャートを追うと、ループテストのための判断菱形が1つ、ヒントのために2つあり、すべてのフローラインは
INPUT GuessまたはENDに戻ってくる。

推測ゲームのフローチャート:ループは推測が一致するまで入力に戻り続ける
Why is REPEAT … UNTIL the right loop for the guessing game?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
A post-condition loop always runs its body once before testing, which matches a game that needs at least one guess. A WHILE loop would need a guess before the loop just to have something to test.
段階的詳細化(Stepwise Refinement)
- 段階的詳細化とは、アウトラインから始まり、各ステップをより詳細なステップへと拡張し、すべてのステップが擬似コードとして直接書けるようになるまでこれを繰り返すことである。
- 「注文処理」→「アイテムを取得」、「合計を計算」、「支払いを受ける」→「合計を計算」が「各アイテムについて、価格×数量を加算し、適用される割引を適用する」になる。
- 各レベルは上位のレベルの詳細化であり、完成したレベル全体が設計となる。「段階的詳細化を説明せよ」という質問には、アウトライン、拡張、停止条件を含めること。

各ステップを、そのままコード可能になるまで詳細化する
Put the stages of stepwise refinement in order.
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
Outline first, then refine level by level; you stop when a step is one line of pseudocode.
論理式(Logic Statements)
- 解決策の一部は論理式によって定義される。比較演算子(
=,<>,<,>,<=,>=)をAND,OR,NOTで接続して構成される条件である。 - 有効なマーク:
Mark >= 0 AND Mark <= 100。顧客がメンバーであるまたは50を超える場合、割引が適用される:IsMember OR Total > 50。 NOT (Mark < 40)はMark >= 40と同じ意味を持つ。文を書いた後、境界の両側の値でテストすること。

AND、OR、NOTで結合された比較は、アルゴリズムが必要とする条件を形成する
NOT (Mark < 40) is true for exactly the same values of Mark as Mark >= 40.
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
Negating "less than 40" gives "40 or more". Test the boundary: Mark = 40 makes Mark < 40 false, so NOT of it is true, and 40 >= 40 is also true.
見落としやすいポイント
←は代入し、=は比較を行う。IF Total = 0はテストであり、Total = 0は単独の行で書くと得点なしとする。- 全ての構造は閉じる:
ENDIF,ENDWHILE,UNTIL,NEXT,ENDCASE。閉じる要素が欠けていると、構造の得点が失われる。 - 使用する前に宣言し、累計変数を
0に初期化すること。 WHILEは一度も実行されない可能性があるが、REPEATは必ず一度は実行される。タスクに合致するループを選び、必要に応じて理由を説明せよ。
理解できましたか
- アルゴリズムのステップは曖昧でない、決定論的、有限、有効であり、データは識別子表に計画される。
- 3つの構造:順次(Sequence)、選択(Selection:
IF/CASE)、反復(Iteration:FOR/WHILE/REPEAT);WHILEは事前テスト、REPEATは事後テストである。 - フローチャートと擬似コードは同じアルゴリズムを表しており、段階的詳細化はアウトラインを拡張してコード可能な状態にする。
- 条件は論理式であり、
AND,OR,NOTで結合された比較である。