#1 program ×××; begin〜end.


 入門プログラムハローワールドを作り、余談交えて徹底的に語ります。プロジェクトファイルを書き換えます。
 しかし、コンソールのハローワールドでここまで語っていいんだろうか? はずかしいぞ。もっとコンテンツ増やさんとアホだと思われる。

「コンソール版ハローワールド!」の巻

 そもそもパスカルのプログラムはこんな風に書きます。
ファイル名TST01.pas(架空のファイルです。Delphiでは動きません。)
ソース1-1:

program TST01;
var s:string;
begin
 writeln('Hello World!');
 read(s)
end.
 これはコンソール画面に「Hello World!」と印刷してカーソルをブリンクさせるだけのとても簡単なプログラムです。余談1へ=>Go!

 ここで、

 program TST01;は、プログラムにTST01という名前を付けています。

 var s:string;は、sという変数を宣言しています。stringは文字列型です。「変数名:変数の型;」です。Pascalの基本の変数型はここ=>(付録1:別窓)にまとめました。

 beginからend.の部分がメインプログラムです。そもそものPascalはここにやりたいことを順番に書いていく言語でした。余談2へ=>Go!

 write(<文字列>)とwriteln(<文字列>)はコンソール(=標準出力といいます。)に文字列を書く関数です。writelnの方が文字列出力したあと、改行をします。
 read(<文字列>)は、キーボード(=標準入力)から入力を受け付ける関数です。プログラム中のsは上の変数宣言節(var)で定義した文字列(string)です。キーボードでsを受け取るのですがその後何もしてません。カーソルブリンクさせ、プログラムが終了しないためのおまじないです。


 さて、話はDelphiに移ります。Delphiは言語を拡張して、しかも相当気の利いたIDE(余談3へ=>Go!)を備えていますから、ちょっと細工をしないとPascalの一種であることすらもわかりません。
 unitファイルのところでも書きましたが、Delphiのメインプログラムは「.dpr」の拡張子を持つプロジェクトファイルというものにあります。「.pas」の拡張子を持つファイルはユニットと呼ばれ、言わばプログラムの部品をしまっておくファイルです。

 ちょっと実験します。
 古いバージョン(ver3.1)の人はメニューバーから「プロジェクト/オプション」として、リンカのページタブを開け、EXE/DLLオプションのコンソールアプリケーションの作成のチェックを入れてください。  新しいバージョンの人は(ver6.00以降は確実。ver4/5の人は両方試してください。)、メニューバーから「ファイル/新規作成/その他」で新規作成というウインドウが開くのでその中の「新規」のタブから、コンソールアプリケーションをクリックしてください。
ソース1-2:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  { TODO -oUser -cConsole Main :
   ここにプログラムコードを書いてください }
end.
 こんなソースが現れたと思います。タブにあるファイル名はProject1.dprですね。Delphiはまず、.pasファイルを部品ファイルに格下げします。ここの一行目とbegin 〜end.は本来のPascalの名残です。
 ソース書き換えの前に注意を2つ。{ }はPascalのコメントですが、Delphiで{ }のコメント中に$があったら、コンパイラ指令です。Pascalの文ではありませんが、処理系に大事な情報を送っていますので削除しないで下さい。ここでは、{$APPTYPE CONSOLE}がそうです。Delphiがあまりにも本来のPascalからかけ離れてしまい、こんな指令を送らないとコンソールアプリが組めないのだと思います。
 また、usesは利用する外部ファイルの指定をする節を示します。
 uses
  SysUtils;
は最低限のライブラリ関数を使うための指令です。これも重要です。削除しないこと。
 ソース1-1を参考にして、以下のように書き換えてください。
 これがDelphi版です。
ソース1-3:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var s:string;
begin
 writeln('Hello World!');
 read(s)
end.
これでF9を押すと、ハローワールドができましたね。リターンキーで終了します。
 programの名前を変えたい人は「ファイル/プロジェクトに名前を付けて保存」を選びTST01などとしましょう。TST01.dprなどとファイル名が変わり、一行目はprogram TST01;となります。
(2004/Jan/04)


ページtopへ

リファレンス

 斜体は節の宣言を示す。例えばvar <変数名>:<型名>;とあれば、varのセクションで繰り返し宣言ができる。
ex.
var
  i,j:integer;
  s:string;
  ・・・・・・・


余談1 元へ 「ハローワールド」
 こういうプログラムをHelloWorldといって、プログラムの入門書がまず始めに読者に打たせます。はじめてやる言語の言語仕様はなかなかつかみづらいのでまずとっかかりにいいと思います。

余談2 元へ 「昔のパスカル」
 昔のPascalにはそれこそパソコン黎明期のN88-BASICなどと同等のコマンドが豊富でライブラリの概念のない内容の薄い言語仕様のものがありました。20年位前でしたか?SHARPのMZシリーズ用のPascalだったと思います。Lineなんて命令があって、グリーンディスプレイにしこしこ線を引いたりしたものです。Delphiのようにライブラリで与えられる手続きではなく、コマンド(予約語)として実装されていた記憶があります。

余談3 元へ 「統合開発環境(IDE)」
 DelphiやJBuilderなど、開発環境にはコンパイルやデバッグどころか、GUIのデザインエディタも搭載して、直観的にプログラム開発ができるものがたくさんあります。
 一昔前の開発はコンパイラやリンカ、デバッガなどの開発用プログラムをコマンドラインからそれぞれ起動して、プログラムを作ってました。Borland社のTurboCとかTurboPascalなどが、これらが連携して動く環境を提供してくれました。複数の開発用プログラムを状況に応じて、適切に稼動させてくれる開発環境をIDE(integrated development environment、)「統合開発環境」といいます。
 VisualC++やBorland/TurboC++は、IDEと呼ばれるものを搭載していましたが、Windowsアプリの開発はとても難しく、独自の仕様のライブラリの使い方を相当覚えなければとてもプログラムなど作れませんでした。マイクロソフトはMFCというライブラリ、ボーランドはOWLというライブラリです。僕はどっちも結局覚える気になれなくて、どのコンパイラでも使える書き方でAPIを使ってやろうと思い色々本購入して勉強しましたが、挫折しました。(ハーバート・シルトさんのWindows95の本などです。どれももう絶版です。)DOSのコンソールのC/C++をどれだけやってもWindowsのアプリは作れません。DOSでも難しいのですが・・・。C++そのものが面倒なのと、WindowsAPIが難しいのと、まわりに先輩がいない三重苦でした。
 Delphiはversion1.00(<=16ビット版でした。)のデビューから、とんでもなく優れたIDEで、魅了してくれました。当時は素人的に楽しんでましたが、ver3.1の頃までにはだんだんその中身の先進性に驚嘆するようになっていました。あんな昔(92年位だったかな)からあったボーランドの技術者が、どんな興奮と感動でこの開発システムを作り上げたのかおぼろげに見えてきました。Delphiは、Turbo pascalと呼ばれていた処理系の後継になりますが、名称を変えています。IDEが進歩して、もはやPascalの言語仕様も大幅に飛び超えてしまっていたので、別物に「脱皮」したのでしょう。
 Delphiはちょこっとプログラムする道具として、とっつきやすいです。でもそれだけじゃない。深入りすると日なたの世界に帰れない深みがあります。
 Delphiが熱烈なファン多いのは、この深い技術をIDEでちょっと目に見えなく、かつ、本気の人には見えるようにしてしまったからかもしれません。初心者にとっつきやすいのと本格派にはコンポーネントのソースまで公開し、徹底的にプロの作法(=オブジェクト指向)で作られている。
 (僕も含めてですが)これを本当に使いこなすには文法を叩き込む必要がありますね。このサイトがお役に立てばと思います。

ページtopへ