문 (프로그래밍)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
문(statement)은 프로그래밍 언어에서 수행될 작업을 지정하는 기본적인 구문 요소이다. 문은 단순문과 복합문으로 나뉘며, 단순문에는 할당, 서브루틴 호출, GOTO, return, stop/halt 등이 있다. 복합문은 여러 문을 묶거나 제어 흐름을 관리하며, 블록, 조건문(if, switch), 반복문(for, while, do-while) 등을 포함한다. 각 프로그래밍 언어는 고유한 구문과 예약어를 사용하여 문을 정의하며, BNF(바커스-나우르 표기법)와 같은 표기법으로 문법을 설명한다.
더 읽어볼만한 페이지
| 문 (프로그래밍) | |
|---|---|
| 컴퓨터 과학에서의 명령문 | |
| 일반 정보 | |
| 종류 | 명령형 프로그래밍 언어의 기본 요소 |
| 역할 | 프로그램의 실행 흐름 제어, 데이터 처리 |
| 구성 요소 | 표현식 키워드 연산자 |
| 예시 | 할당문: x = y + 2 조건문: if (x > 10) { ... } 반복문: for (i = 0; i < 10; i++) { ... } |
| 특징 | |
| 실행 순서 | 일반적으로 순차적으로 실행됨 |
| 제어 구조 | 조건문, 반복문 등을 통해 실행 흐름 변경 가능 |
| 부작용 | 상태를 변경할 수 있음 (변수 값 변경, 입출력 등) |
| 프로그래밍 언어별 특징 | |
| C 언어 | 세미콜론(;)으로 문장 종료 |
| 파이썬 | 들여쓰기로 코드 블록 구분 |
| 자바 | 클래스 내에 포함되어야 함 |
| 기타 | |
| 관련 용어 | 표현식 제어 흐름 함수 |
2. 문의 종류
프로그래밍 언어에서 사용되는 문은 크게 단순문과 복합문으로 나뉜다.
2. 1. 단순문 (Simple statements)
단순문은 그 자체로 완전한 하나의 명령을 나타내며, 더 이상 작은 단위로 나눌 수 없다. 여기에는 대입문, 함수 호출, 리턴문, GOTO문, 선언문 등이 포함된다.[1]할당, 호출, 어설션, goto, 반환, 정지/중단/종료 등이 단순문에 해당한다.
2. 1. 1. 할당문 (Assignment)
대입문은 변수에 값을 저장하는 문이다. 한국 정보 교육 과정에서 변수와 함께 가장 기본적으로 다루는 개념 중 하나이다. 다양한 프로그래밍 언어에서 사용되는 할당문의 예시는 다음과 같다.[1]| 언어 | 할당문 |
|---|---|
| 포트란 | 변수 = 표현식 |
| 파스칼, 알골 60, 에이다 | 변수 := 표현식; |
| C, C#, C++, PHP, Java | 변수 = 표현식; |
2. 1. 2. 호출문 (Call)
함수 또는 서브루틴을 실행하는 문이다.| 프로그래밍 언어 | 호출문 |
|---|---|
| 포트란 | CALL 서브루틴 이름(매개변수) |
| C, C++, Java, PHP, 파스칼, 에이다 | 서브루틴 이름(매개변수); |
2. 1. 3. 선언문 (Declaration)
변수, 상수, 함수 등의 식별자를 정의하고 선언하는 문이다. 예를 들어 C에서 `int i;`는 정수형 변수 i를 선언하는 선언문이다.[1]2. 1. 4. 반환문 (Return)
함수에서 값을 반환하고 함수 실행을 종료한다.[1]- '''포트란:''' `RETURN ''값''`
- '''C, C++, Java, PHP:'''
return ''값'';
2. 1. 5. GOTO문
GOTO문은 프로그램의 실행 흐름을 지정된 레이블(label) 위치로 이동시키는 문이다.[1]| 언어 | 코드 |
|---|---|
| 포트란 | `GOTO 숫자-레이블` |
| 알골 60 | `goto 레이블;` |
| C, C++, PHP, 파스칼 | `goto 레이블;` |
최근 한국의 소프트웨어 교육에서는 GOTO문의 사용을 지양하고 구조적 프로그래밍을 권장하는 추세이다. 이는 GOTO문이 프로그램의 가독성을 해치고 유지보수를 어렵게 만들기 때문이다.
2. 1. 6. 기타 단순문
- 어설션
- C, C++, PHP:
assert(''관계식''); - Java:
assert ''관계식''; - 정지/중단/종료
- 포트란:
STOP ''숫자'' - C, C++:
exit(''표현식'') - PHP:
exit ''숫자'';
2. 2. 복합문 (Compound statements)
복합문은 여러 개의 문을 포함하거나, 다른 문들의 실행 흐름을 제어하는 문이다. 복합문은 중첩되어 사용될 수 있다.[1]많은 복합 문은 루프 명령 또는 선택 명령이다. 이론적으로는 각 유형의 명령 중 하나만 필요하지만, 실제로는 다양한 특수 사례가 존재하여 프로그래밍을 더 쉽게 만들고, 효율적으로 구현할 수 있게 한다.[1]
일부 프로그래밍 언어는 문을 그룹화하는 방법을 제공한다. 예를 들어, Algol 60과 파스칼에서는 `begin
2. 2. 1. 블록 (Block)
블록은 여러 문을 하나의 단위로 묶어 순차적으로 실행하는 구조이다. 블록은 프로그래밍에서 코드를 구성하는 기본적인 요소 중 하나로, 다음과 같은 형태를 가진다.- Algol 60, 파스칼(Pascal): `begin
end` - C, PHP, Java: `{
}`
위 예제에서 `
2. 2. 2. 조건문 (Conditional statements)
조건문은 특정 조건이 참인지 거짓인지에 따라 다른 문을 실행하도록 하는 구문이다.| 구분 | Algol 60 | 파스칼(Pascal) | C, Java | Ada | 포트란 77+ (Fortran 77+) |
|---|---|---|---|---|---|
| if-statement 단순 상황 | if test then | ||||
| if-statement 양방향 선택 | if test then | ||||
| case/switch 문 다중 방식 선택 |
2. 2. 3. 반복문 (Loops)
특정 조건이 만족될 때까지 문을 반복 실행한다.- 카운트 제어 루프:
- Algol 60: `'''for''' index := 1 '''step''' 1 '''until''' limit '''do'''
;` - 파스칼(Pascal): `for index := 1 to limit do
;` - C, Java: `for ( index = 1; index <= limit; index += 1)
;` - Ada: `for index in 1..limit loop
end loop` - 포트란 90(Fortran 90):
```fortran
DO index = 1,limit
END DO
```
- 조건 제어 루프 (루프 시작 시 테스트):
- Algol 60: `'''for''' index := expression '''while''' test '''do'''
;` - 파스칼(Pascal): `while test do
;` - C, Java: `while (test)
;` - Ada: `while test loop
end loop` - 포트란 90(Fortran 90):
```fortran
DO WHILE (test)
END DO
```
- 조건 제어 루프 (루프 종료 시 테스트):
- 파스칼(Pascal): `repeat
until test; { note reversed test }` - C, Java: `do {
} while (test) ;` - Ada: `loop
exit when test; end loop;` - 루프 중간에 테스트가 있는 조건 제어 루프:
- C: `do {
if (test) break; } while (true) ;` - Ada: `loop
exit when test; end loop;`
2. 2. 4. 예외 처리 (Exception Handling)
프로그램 실행 중 발생하는 예외 상황을 처리하는 문이다.- Ada:
```Ada
begin ''protected code'' except when ''exception specification'' => ''exception handler''
```
- Java:
```java
try { ''protected code'' } catch (''exception specification'') { ''exception handler'' } finally { ''cleanup'' }
```
- 파이썬:
```python
try: ''protected code'' except ''exception specification'': ''exception handler'' else: ''no exceptions'' finally: ''cleanup''
3. 구문 (Syntax)
대부분의 프로그래밍 언어는 할당 및 서브루틴 호출 외에도 각 문장을 `goto`, `if`, `while` 등과 같은 특수 단어로 시작한다. 다양한 언어에서 문장의 형식을 설명하기 위해 여러 방법이 사용되었으며, 더 형식적인 방법이 더 정확한 경향이 있다.
- 알골 60은 언어 문법 사양의 새로운 수준을 설정한 바커스-나우르 표기법(BNF)을 사용했다.[3]
- 포트란은 77 버전까지 예제와 함께 영어 산문으로 설명되었으나,[4] 90 버전 이후부터는 BNF의 변형을 사용하여 언어를 설명했다.[5]
- 코볼은 2차원 메타언어를 사용했다.[6]
- 파스칼은 구문 다이어그램과 동등한 BNF를 모두 사용했다.[7]
BNF는 반복을 표현하기 위해 재귀를 사용하므로, 반복을 직접 나타낼 수 있도록 다양한 확장이 제안되었다.
3. 1. 예약어 (Reserved keywords)
프로그래밍 언어 문법은 예약어를 특별히 표시하거나 예약하며, 이를 식별자로 사용할 수 없도록 한다. 이는 종종 문법을 더 쉽게 구문 분석할 수 있게 하여, 더 적은 미리 보기를 필요로 한다.[1]특정 이름은 프로그래밍 언어의 일부로 예약되어 프로그래머가 정의한 이름으로 사용할 수 없다.[2]
가장 널리 사용되는 프로그래밍 언어의 대부분은 예약 키워드를 사용한다. 초기 예로는 FLOW-MATIC (1953) 및 COBOL (1959)이 있다. 1970년 이후에는 Ada, C, C++, Java, Pascal 등이 있다. 예약어의 수는 언어에 따라 다르다. C에는 약 30개가 있는 반면 COBOL에는 약 400개가 있다.[3]
참조
[1]
웹사이트
statement
http://www.webopedia[...]
webopedia
1996-09
[2]
웹사이트
Revised Report on the Algorithmic Language Algol 60
http://www.masswerk.[...]
[3]
웹사이트
Revised Report on the Algorithmic Language Algol 60
http://www.masswerk.[...]
[4]
웹사이트
FORTRAN
https://wg5-fortran.[...]
United States of America Standards Institute
1966
[5]
웹사이트
Working draft J3/04-007
https://j3-fortran.o[...]
J3 Fortran
2004-05-10
[6]
웹사이트
ASCII COBOL Programming Reference Manual
https://public.suppo[...]
unisys
2010-06
[7]
웹사이트
PASCAL User Manual and Report
http://prog.vub.ac.b[...]
1974
[8]
웹사이트
The Remaining Trouble Spots in Algol 60
https://people.eecs.[...]
1967-07
[9]
웹사이트
ISO/IEC 9899:1999 (E)
https://www.dii.uchi[...]
[10]
웹사이트
7. Simple statements
https://docs.python.[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com