2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hello World あたたたた Pascal編

Last updated at Posted at 2025-12-20

この記事は Hello World あたたたた Advent Calendar 2025 の記事です。

今回は Pascal で「Hello World あたたたた」を実装して解説していきます。

そもそも「Hello World あたたたた」が何かは 1日目の記事 をご覧ください。

コーディング例

OnlineGDBで、実際に動かしてみることができます。

program Atatata;

{$APPTYPE CONSOLE}  //for Delphi

uses
  SysUtils;

var
  hako: string;
  running: Boolean;
  char: string;

begin
  Randomize;
  hako := '';
  running := True;

  while running do begin
    if Random(2) = 0 then char := 'あ' else char := 'た';
    Write(char);

    hako := hako + char;

    if pos('あたたたた', hako) > 0 then begin
      Writeln;
      Writeln('お前はもう死んでいる');
      running := False;
    end;
  end;
end.

実行例

pascal.png

コードと文法の解説


変数の宣言

Pascal はvar句に、型を明示して変数を宣言します。

var
  hako: string;
  running: Boolean;
  char: string;
  • 変数名 : 型名 ;
  • Pascal は、文の終わりに必ず;が必要。
    ただし、endの直前は省略できる

変数の初期化

Pascal は、変数の宣言と別に 初期化が必要です。

begin
  hako := '';
  running := True;
  • 代入は :=
  • 文字および文字列は '' で囲む

繰り返し(while)

条件が True の間ずっと処理を繰り返す。

while running do
  // 繰り返したい処理
  • runningTrue なら繰り返す
  • 条件が False になったらループを抜ける
  • 複数の文を繰り返す場合は、begin endで囲む
while running do begin
    // 繰り返したい文1
    // 繰り返したい文2
end;

条件判定(if / else)

普通にif文。

if x = 0 then
  char := 'あ'
else
  char := 'た';
  • = は「等しいかどうか」(代入ではない)
  • if文は全体で1文のため、最後にだけ';'

文字の出力(Write)

Pascal の Write は改行しない、Writeln は改行する。

Write(char);
  • 改行しない → 文字が横に並んで出力される

文字列の連結

Pascal の文字列は + でつなげられる。

hako := hako + char;
  • 前の文字列に後ろの文字を追加する

文字列を含む判定

pos関数で 文字列にサブ文字列が始まる位置が求められる。

position := pos(substring, string)
  • 含む場合1以上の数値、含まない場合は0
if pos(substring, string) > 0 then
  //含む場合の処理
else
  //含まない場合の処理

乱数生成

Pascal はSysUtilsモジュールにRandom関数を持っている。

uses
  SysUtils;
begin    
  Randomize; //乱数のランダマイズ
  x := Random(2); // 0 or 1
  • Random(N)N未満の整数をランダムに返す 関数
  • この例では 0 → あ、1 → た という形で使用

Pascal について

Pascalは、1970年にスイスの計算機科学者ニクラウス・ヴィルト(Niklaus Wirth)によって開発された高水準のプログラミング言語です。プログラミング教育のためのツールとして設計され、構造化プログラミングの概念を広く普及させました。

歴史

  • 起源(1960年代後半): ALGOL 60をベースに、より洗練された言語(ALGOL W)として構想されました。
  • 誕生(1970年): フランスの数学者ブレーズ・パスカルにちなんで「Pascal」と命名され、最初のコンパイラが公開されました。
  • 普及(1970年代〜1980年代): 大学での情報科学教育の標準言語となり、AppleのMacintosh用ソフトウェア開発やゲーム開発など、実用的な商用分野でも広く採用されました。
  • 進化(1990年代以降): Object Pascalへと拡張され、Windows向けの統合開発環境「Delphi」の核となりました。2025年現在も、オープンソースの「Free Pascal」や「Lazarus」を通じて、マルチプラットフォーム開発に活用されています。

主な特徴

  • 構造化プログラミングの推進: if-then-elseやwhileなどの制御構造を重視し、論理的で読みやすいプログラムを書くことを促します。
  • 厳密な型付け(Strong Typing): 変数の型を明示的に宣言する必要があり、誤ったデータの代入をコンパイル時に検知できるため、信頼性の高いコード作成が可能です。
  • 高い可読性: 文法が整理されており、英語の文章に近い記述が可能です。これは初心者がプログラミングの基本概念を学ぶのに非常に適しています。
  • 効率的なコンパイル: 構文がシンプルなためコンパイル速度が速く、かつてのリソースが限られたコンピュータ環境で大きな利点となりました。
  • 豊富なデータ型: 基本的な数値型のほか、列挙型、部分範囲型、レコード型など、複雑なデータを整理するための多彩な型をユーザーが定義できます。

2024年初頭に開発者のニクラウス・ヴィルト氏が逝去しましたが、彼がPascalに込めた「シンプルで規律ある設計思想」は、Ada、Modula-2、Javaなど多くの後継言語に多大な影響を与え続けています。


個人的なコメント

自分が初めて触れた高級言語は Fortranで、その次が Pascalでした。当時、Turbo Pascal(Delphi)で Windowsアプリ/ツールをたくさん作りました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?