📒 ミライのITパス日誌

第38話「擬似言語を1行ずつ追え」

テクノロジ系 / アルゴリズムとプログラミング ── テーマ:プログラム言語・コンパイラ・HTML/CSS・擬似言語

▶ マンガで読む(無料・登録なし)

この話で覚える用語(7語)

コンパイラこんぱいら
人が書いたプログラム(ソースコード)を、実行する前にまとめて機械語に翻訳するソフトウェア。翻訳したあとの実行が速い。C言語などで使われる。
インタプリタいんたぷりた
プログラムを1行ずつ翻訳しながら、その場で実行するソフトウェア。すぐ動かして試せるが、まとめて翻訳する方式より実行は遅くなりやすい。
マークアップ言語まーくあっぷげんご
文章に「ここは見出し」「ここはリンク」などの目印(タグ)をつけて、構造や意味を表す言語。WebページのHTML、データのやりとりに使うXMLなど。
CSSしーえすえす
Webページの見た目(文字の色・大きさ・配置など)を指定する言語。HTMLが文書の構造、CSSが見た目を受けもつ。スタイルシートともいう。
擬似言語ぎじげんご
特定のプログラム言語によらず、手順を日本語まじりで書き表すための書き方。ITパスポート試験では「←」で代入し、if・while・for などで流れを表す。
トレースとれーす
プログラムを1行ずつたどり、変数の値がどう変わるかを表に書きながら確かめること。擬似言語の問題を解く基本の方法。
関数かんすう
決まった処理をひとまとめにして名前をつけたもの。値(引数)を渡すと処理をして、結果(戻り値)を返す。何度でも呼び出して使える。

試験に出るポイント

覚え方:翻訳のしかた
擬似言語の読み方
例題:最後に表示される x は?
ここ試験に出る!

確認クイズ(ITパスポート試験の形式)

問1 次の擬似言語を実行したとき、表示される y の値はどれか。 x ← 3 y ← 0 while (x > 0)  y ← y + x  x ← x - 1 endwhile y を表示する
  1. 6
  2. 5
  3. 3
  4. 0
答えと解説を見る

正解:ア 6
(x, y) は (3, 0)→(2, 3)→(1, 5)→(0, 6) と変わり、xが0になったところで繰り返しが終わるので6。1回早く止めると5、1回だけだと3になります。

問2 プログラムを1行ずつ機械語に翻訳しながら実行する言語処理系はどれか。
  1. インタプリタ
  2. コンパイラ
  3. アセンブラ
  4. リンカ
答えと解説を見る

正解:ア インタプリタ
1行ずつ訳しながら実行するのはインタプリタ。実行前にまとめて訳すのはコンパイラです。アセンブラはアセンブリ言語を機械語に、リンカは複数の部品をつないで実行できる形にします。

問3 Webページにおいて、文字の色や大きさ、レイアウトなどの見た目を指定するために使うものはどれか。
  1. CSS
  2. HTML
  3. XML
  4. Python
答えと解説を見る

正解:ア CSS
見た目を指定するのはCSS。HTMLはページの構造(見出し・段落など)、XMLはデータの意味づけ・やりとりに使うマークアップ言語、Pythonはプログラム言語です。

▶ アプリでクイズに挑戦(間違えた問題は復習に残ります)

マンガのセリフ(文字版)

部長「ミライくん、来週から開発チームの手伝いだ。プログラムくらい読めるな?」

ミライ「プログラム…呪文にしか見えません…」

ツカサ先輩「まずは言語の種類から。プログラム言語にも、それぞれ得意分野があるんだ」

言語ひとことでPython読みやすい。AI・データ分析で人気Java大規模な業務システム向けいろいろなOSで動くC動作が速い。機械の制御向けJavaScriptWebページに動きをつけるブラウザの中で動く
主なプログラム言語 試験では「どれが何向きか」をざっくり押さえる

ミライ「JavaとJavaScriptって、親子なんですね!名前そっくり!」

ツカサ先輩「まったくの別物だ!名前が似ているだけ。試験のひっかけの定番だぞ!」

ミライ「でもコンピュータって、0と1しかわからないんですよね?」

ツカサ先輩「そう。だから人が書いた言葉を機械語に翻訳する係がいる」

ツカサ先輩「コンパイラは全部まとめて先に翻訳。インタプリタは1行ずつ翻訳しながら実行だ」

📝 メモ:覚え方:翻訳のしかた
  • コンパイラ=本を丸ごと翻訳してから読む → 実行が速い
  • インタプリタ=同時通訳。1文ずつ訳しながら進む → すぐ試せる
  • 「インター(間)にプリっと入って通訳する」でインタプリタ
  • C言語はコンパイラ方式の代表

ツカサ先輩「Webページはマークアップ言語のHTMLで構造を、CSSで見た目を書く」

ミライ「HTMLが骨組みで、CSSが洋服、みたいな?」

ツカサ先輩「うまい。データのやりとりに使うXMLもマークアップ言語の仲間だ」

ツカサ先輩「試験のプログラム問題は擬似言語で書かれる。どの言語を知らなくても読める書き方だ」

📝 メモ:擬似言語の読み方
  • x ← 5 … xに5を入れる(代入)。右の値を左の箱へ
  • if (条件) 〜 else 〜 endif … 条件で道が分かれる
  • while (条件) 〜 endwhile … 条件を満たす間くり返す
  • for (i を 1 から 3 まで 1 ずつ増やす) 〜 endfor … 回数を決めてくり返す
  • 関数:値を渡すと処理をして、結果を return で返す

ミライ「「x ← x + 1」!?xとx+1が同じなんて、数学が壊れてます!」

ツカサ先輩「「←」はイコールじゃない。今のxに1を足して、xに入れ直すんだ」

ミライ「読み方はわかったけど、頭の中がこんがらがりそう…」

ツカサ先輩「だからトレースだ。1行ずつ、変数の値を表に書く」

📝 メモ:例題:最後に表示される x は?
  • x ← 1
  • for (i を 1 から 3 まで 1 ずつ増やす)
  •   x ← x × 2
  • endfor
  • x を表示する
いつix最初—11回目11×2=22回目22×2=43回目34×2=8
トレース表(1行ずつ追う) 最後に表示されるのは 8

ミライ「表に書けば、ただの計算だ!答えは8!」

ツカサ先輩「その通り。頭の中だけで追わないのがコツだ」

📌 ここ試験に出る!:ここ試験に出る!
  • コンパイラ=実行前にまとめて翻訳 / インタプリタ=1行ずつ翻訳しながら実行
  • HTML=Webページの構造、CSS=見た目、XML=データの意味づけ・やりとり
  • 擬似言語の「←」は代入。右の値を左の変数に入れる
  • 「x ← x + 1」は今のxに1を足してxに入れ直す(等式ではない)
  • 擬似言語の問題はトレース表を書いて1行ずつ追う
  • Python=AI・データ分析、Java=大規模システム、JavaScript=Webの動き

オチ

部長「わしも擬似言語を書いたぞ!「部長の給料 ← 部長の給料 × 2」」

ミライ「勝手に代入しないでください!」

← 第37話 ISOって何の略?第39話 ボタンが押しにくい →