第38話「擬似言語を1行ずつ追え」
テクノロジ系 / アルゴリズムとプログラミング ── テーマ:プログラム言語・コンパイラ・HTML/CSS・擬似言語
▶ マンガで読む(無料・登録なし)この話で覚える用語(7語)
- コンパイラこんぱいら
- 人が書いたプログラム(ソースコード)を、実行する前にまとめて機械語に翻訳するソフトウェア。翻訳したあとの実行が速い。C言語などで使われる。
- インタプリタいんたぷりた
- プログラムを1行ずつ翻訳しながら、その場で実行するソフトウェア。すぐ動かして試せるが、まとめて翻訳する方式より実行は遅くなりやすい。
- マークアップ言語まーくあっぷげんご
- 文章に「ここは見出し」「ここはリンク」などの目印(タグ)をつけて、構造や意味を表す言語。WebページのHTML、データのやりとりに使うXMLなど。
- CSSしーえすえす
- Webページの見た目(文字の色・大きさ・配置など)を指定する言語。HTMLが文書の構造、CSSが見た目を受けもつ。スタイルシートともいう。
- 擬似言語ぎじげんご
- 特定のプログラム言語によらず、手順を日本語まじりで書き表すための書き方。ITパスポート試験では「←」で代入し、if・while・for などで流れを表す。
- トレースとれーす
- プログラムを1行ずつたどり、変数の値がどう変わるかを表に書きながら確かめること。擬似言語の問題を解く基本の方法。
- 関数かんすう
- 決まった処理をひとまとめにして名前をつけたもの。値(引数)を渡すと処理をして、結果(戻り値)を返す。何度でも呼び出して使える。
試験に出るポイント
- コンパイラ=本を丸ごと翻訳してから読む → 実行が速い
- インタプリタ=同時通訳。1文ずつ訳しながら進む → すぐ試せる
- 「インター(間)にプリっと入って通訳する」でインタプリタ
- C言語はコンパイラ方式の代表
- x ← 5 … xに5を入れる(代入)。右の値を左の箱へ
- if (条件) 〜 else 〜 endif … 条件で道が分かれる
- while (条件) 〜 endwhile … 条件を満たす間くり返す
- for (i を 1 から 3 まで 1 ずつ増やす) 〜 endfor … 回数を決めてくり返す
- 関数:値を渡すと処理をして、結果を return で返す
- x ← 1
- for (i を 1 から 3 まで 1 ずつ増やす)
- x ← x × 2
- endfor
- x を表示する
- コンパイラ=実行前にまとめて翻訳 / インタプリタ=1行ずつ翻訳しながら実行
- HTML=Webページの構造、CSS=見た目、XML=データの意味づけ・やりとり
- 擬似言語の「←」は代入。右の値を左の変数に入れる
- 「x ← x + 1」は今のxに1を足してxに入れ直す(等式ではない)
- 擬似言語の問題はトレース表を書いて1行ずつ追う
- Python=AI・データ分析、Java=大規模システム、JavaScript=Webの動き
確認クイズ(ITパスポート試験の形式)
- 6
- 5
- 3
- 0
答えと解説を見る
正解:ア 6
(x, y) は (3, 0)→(2, 3)→(1, 5)→(0, 6) と変わり、xが0になったところで繰り返しが終わるので6。1回早く止めると5、1回だけだと3になります。
- インタプリタ
- コンパイラ
- アセンブラ
- リンカ
答えと解説を見る
正解:ア インタプリタ
1行ずつ訳しながら実行するのはインタプリタ。実行前にまとめて訳すのはコンパイラです。アセンブラはアセンブリ言語を機械語に、リンカは複数の部品をつないで実行できる形にします。
- CSS
- HTML
- XML
- Python
答えと解説を見る
正解:ア CSS
見た目を指定するのはCSS。HTMLはページの構造(見出し・段落など)、XMLはデータの意味づけ・やりとりに使うマークアップ言語、Pythonはプログラム言語です。
マンガのセリフ(文字版)
部長「ミライくん、来週から開発チームの手伝いだ。プログラムくらい読めるな?」
ミライ「プログラム…呪文にしか見えません…」
ツカサ先輩「まずは言語の種類から。プログラム言語にも、それぞれ得意分野があるんだ」
ミライ「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 ← 1
- for (i を 1 から 3 まで 1 ずつ増やす)
- x ← x × 2
- endfor
- x を表示する
ミライ「表に書けば、ただの計算だ!答えは8!」
ツカサ先輩「その通り。頭の中だけで追わないのがコツだ」
- コンパイラ=実行前にまとめて翻訳 / インタプリタ=1行ずつ翻訳しながら実行
- HTML=Webページの構造、CSS=見た目、XML=データの意味づけ・やりとり
- 擬似言語の「←」は代入。右の値を左の変数に入れる
- 「x ← x + 1」は今のxに1を足してxに入れ直す(等式ではない)
- 擬似言語の問題はトレース表を書いて1行ずつ追う
- Python=AI・データ分析、Java=大規模システム、JavaScript=Webの動き
オチ
部長「わしも擬似言語を書いたぞ!「部長の給料 ← 部長の給料 × 2」」
ミライ「勝手に代入しないでください!」