StartprogrammingusingObjectPascal:WeightProgram

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

체중계 프로그램

이 예제를 통해 사용자의 키를 미터 단위로 입력 받고, 몸무게를 킬로 단위로 입력해달라고 요청할 것입니다. 그러면 프로그램은 사용자가 입력한 값에 따라 사용자의 적당한 몸무게를 계산할 것이고, 사용자의 결과를 알려줄 것입니다.

Program Weight;

{$mode objfpc}{$H+}

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

var
    Height: Double;
    Weight: Double;
    IdealWeight: Double;
begin
    Write('What is your height in meters (e.g. 1.8 meter) : ');
    Readln(Height);
    Write('What is your weight in kilos : ');
    Readln(Weight);

    if Height >= 1.4 then
        IdealWeight:= (Height - 1) * 100
    else
        IdealWeight:= Height * 20;
    if (Height < 0.4) or (Height > 2.5) or (Weight < 3) or
        (Weight > 200) then
    begin
        Writeln('Invalid values');
        Writeln('Please enter proper values');
    end
    else
    if IdealWeight = Weight then
        Writeln('Your weight is suitable')
    else
    if IdealWeight > Weight then
        Writeln('You are under weight, you need more ',
        Format('%.2f', [IdealWeight - Weight]), ' Kilos')
    else
        Writeln('You are over weight, you need to lose ',
        Format('%.2f', [Weight - IdealWeight]), ' Kilos');
    Write('Press enter key to close');
    Readln;
end.

이 예제에서 새로운 키워드를 사용했습니다.

1. Double : Single과 유사합니다. 둘 다 실수지만, Double은 배 정밀도 부동 소숫점이며, Single 은 4바이트의 메모리 공간이 필요하지만, Double은 8바이트의 메모리 공간이 필요 합니다.
2. 두번째 새로운 것은 키워드 (Or) 이며, 조건들 중 하나를 만났는지 확인하기 위해 사용했습니다. 조건들 중 하나를 만났다면, 구문을 실행할 것입니다. 예를 들어보겠습니다: 첫번째 조건이 True를 되돌렸다면 (Height < 0.4), Writeln 구문을 호출할 것입니다:
Writeln(‘Invalid values’);. 첫번째 조건이 False를 되돌렸다면 두번째 조건을 검사할 것이며 나머지의 경우에도 마찬가지 입니다. 만약 모든 조건이 False를 되돌렸다면, else 부분으로 진행할 것입니다.
3. if 조건문에 begin end 키워드를 사용한 이유는 if 구문이 하나의 구문을 실행하기 때문입니다. begin end는 여러 개의 구문들을 하나의 블럭(구문)으로 간주하는 것으로 바꿔주고, 여러개의 구문들은 if 구문에 의해 실행될 수 있습니다. 다음 두 개의 구문을 보도록 합니다.

    Writeln('Invalid values');
    Writeln('Please enter proper values');

이들은 begin end를 사용하여 하나의 구문으로 바뀌었습니다.

    if (Height < 0.4) or (Height > 2.5) or (Weight < 3) or
        (Weight > 200) then
    begin
        Writeln('Invalid values');
        Writeln('Please enter proper values');
    end

4. 정해진 형식으로 값을 표시하는 Format프로시저를 사용했습니다. 이 경우 우리는 소숫점 아래 두자리만 표시하려고 합니다. 이 함수를 사용하기 위해 SysUtils 유닛을 Uses 절에 추가할 필요가 있습니다.

What is your height in meters (e.g. 1.8 meter) : 1.8
What is your weight in kilos : 60.2
You are under weight, you need more 19.80 Kilos

참고

이 예제가 100% 정확한 것은 아닙니다. 웹에서 몸무게를 계산하는 방법을 자세하게 찾아볼 수 있습니다. 단지 프로그래머가 각각의 문제를 어떻게 해결해 나가는지 설명하고, 믿을 수 있는 프로그램을 만들어나가는 과제에 대한 분석을 우수하게 수행하는데만 의미를 두었습니다.