Delphi [델파이 문법] 문법 요소 #6

2012.10.25 20:17

관리자 조회 수:5343

연산자 우선 순위
복잡한 표현식에서는 연산자 우선 순위 규칙에 따라 연산이 수행되는 순서가 정해집니다.

1.png

우선 순위가 높은 연산자는 우선 순위가 낮은 연산자보다 먼저 계산되고, 우선 순위가 같은
연산자는 왼쪽에서 오른쪽 순으로 계산됩니다. 따라서 표현식이 다음과 같은 경우,

2.png

Y와 Z를 곱한 후 그 결과에 X를 더합니다. 즉, *가 +보다 우선 순위가 높기 때문에 먼저 수
행됩니다. 그러나 다음의 경우,

3.png

먼저 X에서 Y를 뺀 후 그 결과에 Z를 더합니다. 즉, -와 +는 우선 순위가 같기 때문에 왼쪽
에 있는 연산이 먼저 수행됩니다.

괄호를 사용하여 이러한 우선 순위 규칙보다 우선하여 처리되도록 할 수 있습니다. 괄호 내
에 있는 표현식이 먼저 계산되고, 계산된 결과는 하나의 피연산자로 간주됩니다. 예를 들면,
다음과 같습니다.

4.png

이 문장은 X와 Y의 합에 Z를 곱합니다.
언뜻 보면 괄호가 필요하지 않은 것처럼 보이는 곳에 괄호가 필요한 경우도 있습니다. 예를
들어, 다음의 표현식을 생각해 봅시다.

5.png

이 문법의 원래의 의도는 분명히 다음과 같습니다.

6.png

그러나 괄호가 없다면 컴파일러는 연산자 우선 순위에 따라 다음과 같이 읽습니다.

7.png

이 경우 Z가 부울 값이 아니라면 컴파일 에러가 발생합니다.
필요하지 않은 경우라도 괄호를 많이 사용하는 것이 코드의 작성이나 읽기를 쉽게 하는 경우
가 많습니다. 따라서 위의 첫 번째 예제는 다음과 같이 쓸 수 있습니다.

8.png

여기서 괄호는 (컴파일러에게) 불필요하지만, 프로그래머와 코드를 읽어보는 사람들에게는
연산자 우선 순위를 생각해보지 않아도 되게 해줍니다.



함수 호출

함수는 값을 리턴하므로, 함수 호출도 표현식입니다. 예를 들어, 두 개의 정수 인수를 가지고
있고 정수를 리턴하는 Calc라는 함수를 정의했다면, 함수 호출 Calc(24, 47)은 정수 표현식
입니다. I와 J가 정수 변수인 경우 I + Calc(J, 8) 역시 정수 표현식입니다. 함수 호출의 예
제는 다음과 같습니다.

9.png

함수에 대한 자세한 내용은 5장“프로시저 및 함수”를 참조하십시오.



집합 생성자

집합 생성자는 집합 타입의 값을 나타냅니다. 예를 들면, 다음과 같습니다.

10.png

이 문장은 요소가 5, 6, 7, 8인 집합을 나타냅니다. 다음의 집합 생성자는,

11.png

위의 집합과 같은 집합을 나타냅니다.
집합 생성자에 대한 문법은 다음과 같습니다.

12.png

여기서 각각의 item은 집합의 기본 타입의 서수(ordinal)를 나타내는 표현식이거나 이런 표
현식 두개 사이에 두 개의 마침표(..)가 있는 것입니다. item의 형태가 x..y인 경우 x부터 y
범위에 있는 모든 수를 간단하게 표기한 것입니다. 그러나 x가 y보다 큰 경우, [x..y]는 아무
것도 나타내지 않고 공집합이 됩니다. 집합 생성자 [ ]는 공집합을 나타내며, [x]는 x의 값을
유일한 요소로 가진 집합을 나타냅니다.

집합 생성자의 예는 다음과 같습니다.

13.png

집합에 대한 자세한 내용은 4장의“구조 타입”절에서“집합”을 참조하십시오.


인덱스
문자열, 배열, 배열 속성, 문자열이나 배열에 대한 포인터는 인덱스를 사용할 수 있습니다.
예를 들어, FileName이 문자열 변수인 경우 표현식 FileName[3]은 FileName 문자열에서
세 번째 문자를 리턴하고, FileName[I + 1]은 I번째 인덱스의 다음 문자를 리턴합니다. 문
자열에 대한 내용은 4장의“문자열 타입”절을 참조하십시오. 배열과 배열 속성에 대한 내용
은 4장의“구조 타입”절“배열”과 6장의“속성”절“배열 속성”을 참조하십시오.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15441
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13961
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39255
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174699
1163 David I의 31일 동영상(한글자막) - 새로운 장비와 센서를 적용한 파이어몽키 애플리케이션 관리자 2013.03.12 5647
1162 David I의 31일 동영상(한글자막) - dbExpress와 ClientDataSet으로 SQL데이터베이스를 활용한 파이어몽키 앱 만들기 관리자 2013.03.26 5640
1161 [델파이 문법] 문법 요소 #5 file 관리자 2012.10.22 5637
1160 [델파이 문법] 프로시저와 함수 #12 file 관리자 2012.08.30 5627
1159 David I의 31일 동영상(한글자막) - 오디오 재생 및 캡쳐앱 만들기(윈도우&맥용) 관리자 2013.04.04 5624
1158 David I의 31일 동영상(한글자막) - 두 개의 비디오 카메라로 화면 캡쳐하는 앱 만들기(윈도우&맥용) 관리자 2013.04.04 5620
1157 델파이XE4로 아이폰, 아이패드, 윈32, 윈64, 맥OS X 단일 소스코드 베이스로 2분만에 개발 관리자 2013.05.13 5602
1156 Form에 있는 콤포넌트를ListView 로 나타내기 박병일 2011.12.22 5588
1155 David I의 31일 동영상(한글자막) - 메트로폴리스 UI를 적용한 파이어몽키 애플리케이션 관리자 2013.03.12 5561
1154 안드로이드 개발환경 추가 조치방법 - RAD Studio에서 SDK 설정 Humphery 2015.10.01 5560
1153 20121204 C++빌더XE3 세미나 자료 file 관리자 2012.12.05 5552
1152 RAD Studio, Delphi 그리고 C++빌더 로드맵 - 한글(2014년 3월) file Humphery 2014.03.05 5548
1151 [델파이 문법] 프로시저와 함수 #8 file 관리자 2012.08.16 5540
1150 [델파이 문법] 프로시저와 함수 #5 file 관리자 2012.08.06 5535
1149 David I의 31일 동영상(한글자막) - HD비디오 재생 및 캡쳐하는 애플리케이션 만들기(윈도우&맥): 수정완료 관리자 2013.03.26 5529
1148 [C++빌더 XE3 비디오 31] C++빌더XE3로 Win32, Win64, OSX용 애플리케이션 만들기 관리자 2013.01.03 5519
1147 [델파이 문법] 프로시저와 함수 #6 file 관리자 2012.08.09 5518
1146 [따라하기] 인공지능 오목게임(1) - 만들기 [2] file 대화마을 2017.09.12 5508
1145 [C++빌더 XE3 비디오 31] C++ 파이어몽키 앱에 Action 및 Gesture 추가하기 관리자 2013.01.08 5501
1144 델파이 아래 버전에서 XE2로 마이그레이션시 별도의 리소스 파일이 필요 없는 경우 관리자 2012.07.05 5495