StartprogrammingusingObjectPascal:Variables

From 흡혈양파의 번역工房
Jump to navigation Jump to search

변수

변수는 데이터 저장소입니다. 예를 들어, 우리가 X = 5라고 했다면, X는 변수이며, 여기에 값 5가 들어있음을 의미합니다.

오브젝트 파스칼은 Strongly Typed (강력하게 데이터형이 지정되는) 언어이며, 이는 값을 변수에 넣기 전에 변수의 형을 선언해야 함을 의미합니다. X를 정수형으로 선언했다면, 프로그램이 실행하는 동안 X에 정수형 숫자만 넣어야 합니다.

다음은 변수를 선언하고 사용하는 예시입니다:

Program FirstVar;

{$mode objfpc}{$H+}

uses
    {$IFDEF UNIX}{$IFDEF UseCThreads}
    cthreads,
    {$ENDIF}{$ENDIF}
    Classes
    { you can add units after this };

var
    x:  Integer;
begin
    x:= 5;
    Writeln(x * 2);
    Writeln('Press enter key to close');
    Readln;
end.


우리는 프로그램의 출력에서 10 을 볼 수 있을 것입니다.

참고로, 다음 줄의 이전에는 변수의 선언문이 됨을 의미하는 var 라는 예약어를 사용해야 합니다.

x:  Integer;


이것은 다음 두가지를 의미합니다.

  1. 변수의 이름은 X 이고
  2. 이 변수의 형식은 소수 부분을 제외한 정수 숫자값만 지닐 수 있는 Integer입니다. 이는 양수 값처럼 음수 값도 지닐 수 있습니다.


그리고 다음 구문은

x:= 5;

값 5를 변수 X에 넣음을 의미합니다.


다음 예제에서는 변수 y를 추가해보았습니다.

var
    x, y:  Integer;
begin
    x:= 5;
    y:= 10;
    Writeln(x * y);
    Writeln('Press enter key to close');
    Readln;
end.


위의 프로그램에 대한 출력은

50
Press enter key to close

50은 식 ( x * y ) 의 결과입니다.



다음 예제를 통해 character라는 새로운 데이터 형을 소개합니다.

var
    c:  Char;
begin
    c:= 'M';
    Writeln('My first letter is: ', c);
    Writeln('Press enter key to close');
    Readln;
end.


이 형식은 값과 같은 것이 아닌 단 하나의 문자나 문자 형태의 숫자를 지닐 수 있습니다.


다음 예제에서는 소수 부분을 지닐 수 있는 real 숫자 형을 소개합니다.

var
    x:  Single;
begin
    x:= 1.8;
    Writeln('My car engine capacity is  ', x, ' liters');
    Writeln('Press enter key to close');
    Readln;
end.


좀 더 상호적인 유연한 프로그램을 작성하려면 사용자로부터 입력을 받아들일 필요가 있습니다.

예를 들어, 사용자에게 숫자를 입력해달라고 요청하고, Readln 구문 / 프로시저를 통해 사용자의 입력으로부터 숫자를 가져올 수 있습니다.

var
    x: Integer;
begin
    Write('Please input any number:');
    Readln(x);
    Writeln('You have entered: ', x);
    Writeln('Press enter key to close');
    Readln;
end.


이 예제에서는, 프로그램에서 상수 값을 받아들이는 대신에 키보드를 통해 X에 값을 할당했습니다.


아래 예제에서는 사용자가 입력한 값에 대한 곱셈표를 보여줍니다.

Program MultTable;

{$mode objfpc}{$H+}

uses
    {$IFDEF UNIX}{$IFDEF UseCThreads}
    cthreads,
    {$ENDIF}{$ENDIF}
    Classes
    { you can add units after this };

var
    x:  Integer;
begin

    Write('Please input any number: ');
    Readln(x);
    Writeln(x, ' * 1 = ' ,x * 1);
    Writeln(x, ' * 2 = ' ,x * 2);
    Writeln(x, ' * 3 = ' ,x * 3);
    Writeln(x, ' * 4 = ' ,x * 4);
    Writeln(x, ' * 5 = ' ,x * 5);
    Writeln(x, ' * 6 = ' ,x * 6);
    Writeln(x, ' * 7 = ' ,x * 7);
    Writeln(x, ' * 8 = ' ,x * 8);
    Writeln(x, ' * 9 = ' ,x * 9);
    Writeln(x, ' * 10 = ' ,x * 10);
    Writeln(x, ' * 11 = ' ,x * 11);
    Writeln(x, ' * 12 = ' ,x * 12);
    Writeln('Press enter key to close');
    Readln;
end.


참고로 앞의 예제에서 작은 따옴표(') 사이에 있는 모든 텍스트는 콘솔 윈도우에 그대로 보여줍니다.

예를 들면 다음과 같습니다.

'  *  1  =  '


작은 따옴표에 둘러싸이지 않은 변수와 수식은 계산되며 값으로 기록합니다.

다음 두 구문의 차이점을 보도록 합니다.

Writeln(' 5 * 3 ');
Writeln(5 * 3);


첫번째 구문의 결과는 다음과 같습니다.

5 * 3


두번째 구문은 계산된 다음의 결과를 표시합니다.

15


다음 예제에서는 두 숫자들 (x, y) 에 대한 수학적 계산을 수행하고, 이 결과를 세번째 변수 (Res)에 넣을 것입니다.

var
    x, y:  Integer;
    Res:  Single;
begin

    Write('Input a number: ');
    Readln(x);
    Write('Input another number: ');
    Readln(y);
    Res:= x / y;
    Writeln(x, ' / ' , y , ' = ' , Res);
    Writeln('Press enter key to close');
    Readln;
end.


나누기 연산을 수행하면, 분수가 붙은 숫자 결과가 나올 수 있기 때문에 결과 변수(Res)를 실수(Single)로 선언했습니다. Single은 단순 정밀도 실수를 의미합니다.