コンソールアプリケーションを実行するには、[ ファイル|新規作成|その他 ] を選択し、表示されたダイアログの中の「コンソールアプリケーション」を選択します。すると、以下のようなコードが自動生成されることになります。
program Project1; {$APPTYPE CONSOLE} uses SysUtils; begin { TODO -oUser -cConsole Main : ここにプログラムコードを書いてください } end.
「ここにプログラムコードを書いてください」と書いてあるように、そこにプログラムを書いて見ましょう。以下のように書いてみます。
program Project1; {$APPTYPE CONSOLE} uses SysUtils; begin { TODO -oUser -cConsole Main : ここにプログラムコードを書いてください } Writeln('Hello world'); Readln; end.
ここで、F9キーを押してみてください。こんなのが出てくると思います。
リターンキーを押すと終了します。
WritelnとReadlnは、それぞれ「書く」と「読む」です。Writelnの方は解ると思いますがReadlnは、わかりずらいので、次のようなプログラムを書いてみてください。
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var s: string; begin { TODO -oUser -cConsole Main : ここにプログラムコードを書いてください } Writeln('文字を入力してください'); Readln(s); Writeln('文字は「' + s + '」です'); Readln; end.
Readlnは、読み込みに使っているみたいです。では、なぜ最後の行にReadlnが必要なのでしょうか、試しに最後のReadlnだけコメントにして、実行してみてください。文字を入力すると、一瞬にして画面が閉じてしまいます。最後のReadlnは、プログラムを終了させないために、存在していたのでした。(ユーザーの入力を待っているだけです。)あまりコンソールアプリケーションをやる利点が見つからないかもしれませんが、 簡単な、関数や文法の実験には適していると思います。実際ここでは、自作関数について見てみます。 一つの procedure にいろいろな操作を書いてしまうと、プログラムが複雑になってしまい、分かりにくくなってしまいます。 そこで一つの手続き(関数)に一つの操作を記述すれば、何をする手続き(関数)なのかがはっきりとし、またその手続きを変更する際にも、どこを変更すればよいのかが分かりやすくなります。以下の例を見てください。
program Project1; {$APPTYPE CONSOLE} uses SysUtils; procedure MySecondProc; begin Writeln('ここは、MySecondProc です'); end; procedure MyFirstProc; begin Writeln('ここは、MyFirstProc です'); end; begin { TODO -oUser -cConsole Main : この下にコードを記述してください } Writeln('--- Start ---'); MyFirstProc; MySecondProc; Writeln('--- End ---'); Readln; end.
このように、自作関数を作成して、呼び出すことができます。この例を参考にして、与えられた整数に特定の数値を加えて、それを返す関数を作成してみることにしましょう。ここでは、受け取った整数に 3 を加えて返す関数、10 を加えて返す関数、1 から 100 までのランダムな整数を加えて、その値を返す関数を作ってみます。(関数の名前は、それぞれ Add3, Add10, AddRandom100 とします。)
program Project1; {$APPTYPE CONSOLE} uses SysUtils; function Add3(int: Integer): Integer; begin Writeln('3 を足します。'); Result := int + 3; end; function Add10(int: Integer): Integer; begin Writeln('10 を足します。'); Result := int + 10; end; function AddRandom100(int: Integer): Integer; var RandomValue: Integer; begin RandomValue := Random(100) + 1; Writeln(IntToStr(RandomValue) + ' を足します。'); Result := int + RandomValue; end; var Value: Integer; ResultValue: Integer; SelectValue: Integer; begin { TODO -oUser -cConsole Main : この下にコードを記述してください } ResultValue := 0; while true do begin Writeln('整数を入力してください。0 を入力すると終了します'); Readln(Value); if Value = 0 then break; Writeln('どの関数を使用しますか? 0, 1, 2 の中から選択してください。'); Writeln('0 - Add3'); Writeln('1 - Add10'); Writeln('2 - AddRandom100'); Readln(SelectValue); // 入力された値に応じて、呼び出す関数を選択します。 case SelectValue of 0: ResultValue := Add3(Value); 1: ResultValue := Add10(Value); 2: ResultValue := AddRandom100(Value); end; Writeln(ResultValue); end; end.
このように、それぞれの関数に特定の役割を与えてやり、それを呼び出すことで処理する内容を変更しています。 また、上記のプログラムの場合、文字列が入力された場合には、例外が生成される事になります。文字列が入力された場合に、ユーザーに再度入力を促したい場合には、文字列が入力されたかどうかをチェックして、適切な処理をするプログラムを書いてやる必要があります。
入力された値をチェックした場合のプログラムの一例には、以下のようなものがあります。
program Project1; {$APPTYPE CONSOLE} uses SysUtils; function Add3(int: Integer): Integer; begin Writeln('3 を足します。'); Result := int + 3; end; function Add10(int: Integer): Integer; begin Writeln('10 を足します。'); Result := int + 10; end; function AddRandom100(int: Integer): Integer; var RandomValue: Integer; begin RandomValue := Random(100) + 1; Writeln(IntToStr(RandomValue) + ' を足します。'); Result := int + RandomValue; end; var Input: string; Select: string; InputValue: Integer; SelectValue: Integer; OutputValue: Integer; begin { TODO -oUser -cConsole Main : この下にコードを記述してください } OutputValue := 0; while true do // 無限ループ begin Writeln('整数を入力してください。0 を入力すると終了します。'); Readln(Input); if not TryStrToInt(Input, InputValue) then // 値をチェック begin Writeln('不正な値が入力されました。もう一度入力してください。'); continue; end; if InputValue = 0 then break; Writeln('どの関数を使用しますか? 0, 1, 2 の中から選んでください。'); Writeln('0 - Add3'); Writeln('1 - Add10'); Writeln('2 - AddRandom100'); Readln(Select); if not TryStrToInt(Select, SelectValue) then // 値をチェック begin Writeln('不正な値が入力されました。初めからやり直してください。'); continue; end; // 入力された値に応じて、呼び出す関数を選択します。 case SelectValue of 0: OutputValue := Add3(InputValue); 1: OutputValue := Add10(InputValue); 2: OutputValue := AddRandom100(InputValue); else Writeln('正しく選択されませんでした。'); end; Writeln(OutputValue); end; end.
ちょっと一言:
何やら、見慣れない単語が出てきたなと思ったら、その単語の上にカーソルを置いて、F1キーを押してみて下さい。すると、その単語についてのヘルプが出ます。(※ただし、全ての単語に対してヘルプが出るとは限りません。)