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

2012.10.25 20:17

관리자 조회 수:5344

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

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 15465
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13971
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16505
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22061
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23273
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18932
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39266
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174728
163 인터베이스와 FireDac에서 배열필드 사용하기 file 김원경 2020.04.16 408
162 [C++빌더 신기능] C++ 리네임 리팩토링 관리자 2019.04.18 408
161 TEMSDataSetResource 컴포넌트를 사용하여 RAD 서버의 마스터-디테일 데이터 구현하기 file 김원경 2020.03.06 407
160 단 한 줄의 코드로 완성하는 C++ CUSTOMER/SALES 애플리케이션 관리자 2020.11.09 406
159 [UX Summit 요약] 레거시 데스크탑 앱 UI/UX 현대화 – 이론부터 실제까지 (Legacy desktop apps UI & UX modernization. From theory to practice) 관리자 2020.11.04 406
158 새로운 VCL 윈도우 테마 - Lucky Point 관리자 2020.02.18 406
157 [10.3 리오][업데이트 2] 델파이 리눅스 클라이언트 애플리케이션 지원 관리자 2019.09.10 406
156 C++17 알고리즘 라이브러리 병렬 정렬 사용하기 관리자 2020.08.13 405
155 [마이그레이션] C++빌더 프로젝트 업데이트하기! 관리자 2020.09.17 404
154 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 4장. 다양한 UI 콘트롤 살펴보기 관리자 2020.02.04 404
153 델파이 개발자를 위한 이더리움(Ethereum)! 관리자 2020.02.04 403
152 [델파이 게임 개발] 겟잇(GETIT)에서 ALIEN INVASION 다운로드 받기 관리자 2020.11.30 401
151 [고객 사례- 의료, C++빌더, 모바일, IoT] 브루너 컨설팅, 손목 웨어러블 헬스케어 기기 관리자 2020.08.11 401
150 MODERNLISTVIEW 라이브러리 – 커스터마이징 가능한 강력한 크로스 플랫폼 라이브러리 활용 방법 관리자 2021.04.06 400
149 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 3장(실습).사원 정보 프로토타입 앱 관리자 2020.02.04 399
148 [10.3 리오][업데이트 3] iOS 13, 맥OS 카탈리나 지원을 시작하세요. file 관리자 2019.11.22 397
147 이 달의 기술자료 - 2020년 01월 험프리 2019.12.26 396
146 [고객 사례- 델파이, 예술, 창작] 아트젠, 컴퓨터로 완성하는 미술 작품 관리자 2020.08.25 395
145 이 달의 기술자료 - 2018년 05월 file 험프리 2018.04.27 395
144 플루언트 디자인 시스템으로 애플리케이션 현대화하기 관리자 2021.04.08 393