|
|
| Line 1: |
Line 1: |
| ==if 조건문== | | ===if 조건문=== |
|
| |
|
| 파스칼 언어에서 if 상태 구문은 매우 간단하고 명확합니다. 아래 예를 통해, 우리는 방안의 온도에 따라 에어콘을 켤지 말지에 대해 결정하고자 합니다. | | 파스칼 언어에서 if 상태 구문은 매우 간단하고 명확합니다. 아래 예를 통해, 우리는 방안의 온도에 따라 에어콘을 켤지 말지에 대해 결정하고자 합니다. |
|
| |
| ===에어콘 프로그램===
| |
|
| |
| <syntaxhighlight lang="pascal">
| |
| var
| |
| Temp: Single;
| |
| begin
| |
| Write('Please enter Temperature of this room :');
| |
| Readln(Temp);
| |
|
| |
| if Temp > 22 then
| |
| Writeln('Please turn on air-condition')
| |
| else
| |
| Writeln('Please turn off air-condition');
| |
|
| |
| Write(‘Press enter key to close’);
| |
| Readln;
| |
| end.
| |
| </syntaxhighlight>
| |
|
| |
| '''''if then else''''' 구문과 이에 대한 예제를 소개했습니다. 온도가 22보다 크면, 처음 문장을 보여줍니다.
| |
|
| |
| <syntaxhighlight lang="c">
| |
| 'Please turn on air-condition'
| |
| </syntaxhighlight>
| |
|
| |
| 조건을 만나지 못했다면 (22보다 작거나 같다면) else에 의해 아래의 문장을 보여줍니다.
| |
|
| |
| <syntaxhighlight lang="c">
| |
| 'Please turn off air-condition'
| |
| </syntaxhighlight>
| |
|
| |
| 여러 상태에 대해 다음과 같이 작성할 수 있습니다.
| |
|
| |
| <syntaxhighlight lang="pascal">
| |
| var
| |
| Temp: Single;
| |
| begin
| |
| Write('Please enter Temperature of this room :');
| |
| Readln(Temp);
| |
|
| |
| if Temp > 22 then
| |
| Writeln('Please turn on air-conditioner')
| |
| else
| |
| if Temp < 18 then
| |
| Writeln('Please turn off air-conditioner')
| |
| else
| |
| Writeln('Do nothing');
| |
|
| |
| Write(‘Press enter key to close’);
| |
| Readln;
| |
| end.
| |
| </syntaxhighlight>
| |
|
| |
| 결과를 보기 위해 다른 온도 값으로 위 예제를 시험해 볼 수 있습니다.
| |
|
| |
| ----
| |
|
| |
| 더욱 쓸모있게 만들기 위해 조건을 더욱 복잡하게 만들 수 있습니다.
| |
|
| |
| <syntaxhighlight lang="pascal">
| |
| var
| |
| Temp: Single;
| |
| ACIsOn: Byte;
| |
| begin
| |
| Write('Please enter Temperature of this room :');
| |
| Readln(Temp);
| |
| Write('Is air conditioner on? if it is (On) write 1,',
| |
| ' if it is (Off) write 0 : ');
| |
| Readln(ACIsOn);
| |
|
| |
|
| |
| if (ACIsOn = 1 ) and ( Temp > 22 ) then
| |
| Writeln('Do nothing, we still need cooling')
| |
| else
| |
| if (ACIsOn = 1 ) and ( Temp < 18 ) then
| |
| Writeln('Please turn off air-conditioner')
| |
| else
| |
| if (ACIsOn = 0 ) and ( Temp < 18 ) then
| |
| Writeln('Do nothing, it is still cold')
| |
| else
| |
| if (ACIsOn = 0 ) and ( Temp > 22 ) then
| |
| Writeln('Please turn on air-conditioner');
| |
| else
| |
| Writeln('Please enter a valid values');
| |
| Write('Press enter key to close');
| |
| Readln;
| |
| end.
| |
| </syntaxhighlight>
| |
|
| |
| 위 예제에서, 첫번째 상태가 ''True''를 되돌리고(ACIsOn = 1), 두번째 상태가 ''True''를 되돌릴 때(Temp > 22), Writeln 구문을 실행하라는 의미의 새로운 키워드( '''''and''''' )를 사용했습니다. 하나 혹은 양 쪽의 상태가 ''False''라면, ''else'' 부분으로 진행할 것입니다.
| |
|
| |
| 예를 들어, 에어콘이 시리얼 포트를 통해 컴퓨터에 연결했다면, 시리얼 포트 프로시저/컴포넌트를 이용하여 프로그램에서 에어콘을 켜고 끌 수 있습니다. 이 경우 에어콘이 얼마나 오랫동안 동작하고 있었는지와 같은 if 조건문에 대한 추가 인자가 필요합니다. 만약 허용 시간(예를 들어 1시간)을 초과했다면 방 온도와는 상관 없이 에어콘을 꺼야 할 것입니다. 또한 냉기 손실율을 고려할 수 있는데, (밤에) 더워지는 속도가 매우 느리다면, 오랜 시간동안 끌 수 있을 것입니다.
| |
| ===체중계 프로그램===
| |
|
| |
| 이 예제를 통해 사용자의 키를 미터 단위로 입력 받고, 몸무게를 킬로 단위로 입력해달라고 요청할 것입니다. 그러면 프로그램은 사용자가 입력한 값에 따라 사용자의 적당한 몸무게를 계산할 것이고, 사용자의 결과를 알려줄 것입니다.
| |
|
| |
| <syntaxhighlight lang="pascal">
| |
| 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.
| |
| </syntaxhighlight>
| |
|
| |
| 이 예제에서 새로운 키워드를 사용했습니다.
| |
|
| |
| 1. '''''Double''''' : ''Single''과 유사합니다. 둘 다 실수지만, Double은 배 정밀도 부동 소숫점이며, Single 은 4바이트의 메모리 공간이 필요하지만, Double은 8바이트의 메모리 공간이 필요 합니다. <br>
| |
| 2. 두번째 새로운 것은 키워드 ('''''Or''''') 이며, 조건들 중 하나를 만났는지 확인하기 위해 사용했습니다. 조건들 중 하나를 만났다면, 구문을 실행할 것입니다. 예를 들어보겠습니다: 첫번째 조건이 ''True''를 되돌렸다면 (Height < 0.4), ''Writeln'' 구문을 호출할 것입니다:<br>Writeln(‘Invalid values’);. 첫번째 조건이 ''False''를 되돌렸다면 두번째 조건을 검사할 것이며 나머지의 경우에도 마찬가지 입니다. 만약 모든 조건이 ''False''를 되돌렸다면, ''else'' 부분으로 진행할 것입니다.<br>
| |
| 3. if 조건문에 '''''begin end''''' 키워드를 사용한 이유는 ''if'' 구문이 하나의 구문을 실행하기 때문입니다. ''begin end''는 여러 개의 구문들을 하나의 블럭(구문)으로 간주하는 것으로 바꿔주고, 여러개의 구문들은 ''if'' 구문에 의해 실행될 수 있습니다. 다음 두 개의 구문을 보도록 합니다.
| |
|
| |
| <syntaxhighlight lang="pascal">
| |
| Writeln('Invalid values');
| |
| Writeln('Please enter proper values');
| |
| </syntaxhighlight>
| |
|
| |
| 이들은 ''begin end''를 사용하여 하나의 구문으로 바뀌었습니다.
| |
|
| |
| <syntaxhighlight lang="pascal">
| |
| 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
| |
| </syntaxhighlight>
| |
|
| |
| 4. 정해진 형식으로 값을 표시하는 '''''Format'''''프로시저를 사용했습니다. 이 경우 우리는 소숫점 아래 두자리만 표시하려고 합니다. 이 함수를 사용하기 위해 ''SysUtils'' 유닛을 ''Uses'' 절에 추가할 필요가 있습니다.
| |
|
| |
| <syntaxhighlight lang="c">
| |
| 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
| |
| </syntaxhighlight>
| |
|
| |
| '''참고'''
| |
|
| |
| 이 예제가 100% 정확한 것은 아닙니다. 웹에서 몸무게를 계산하는 방법을 자세하게 찾아볼 수 있습니다. 단지 프로그래머가 각각의 문제를 어떻게 해결해 나가는지 설명하고, 믿을 수 있는 프로그램을 만들어나가는 과제에 대한 분석을 우수하게 수행하는데만 의미를 두었습니다.
| |
|
| |
|
| [[Category:StartprogrammingusingObjectPascal]] | | [[Category:StartprogrammingusingObjectPascal]] |
if 조건문
파스칼 언어에서 if 상태 구문은 매우 간단하고 명확합니다. 아래 예를 통해, 우리는 방안의 온도에 따라 에어콘을 켤지 말지에 대해 결정하고자 합니다.