맨위로가기

문 (프로그래밍)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

문(statement)은 프로그래밍 언어에서 수행될 작업을 지정하는 기본적인 구문 요소이다. 문은 단순문과 복합문으로 나뉘며, 단순문에는 할당, 서브루틴 호출, GOTO, return, stop/halt 등이 있다. 복합문은 여러 문을 묶거나 제어 흐름을 관리하며, 블록, 조건문(if, switch), 반복문(for, while, do-while) 등을 포함한다. 각 프로그래밍 언어는 고유한 구문과 예약어를 사용하여 문을 정의하며, BNF(바커스-나우르 표기법)와 같은 표기법으로 문법을 설명한다.

더 읽어볼만한 페이지

  • 프로그래밍 언어 개념 - 참조
    참조는 프로그래밍에서 메모리 주소나 다른 데이터를 가리키는 값으로, 데이터의 효율적인 전달과 공유를 위해 사용되며, 포인터, 파일 핸들, URL 등이 그 예시이다.
  • 프로그래밍 언어 개념 - 자료형
    자료형은 프로그래밍 언어에서 데이터를 분류하고 관리하는 추상적인 분류 체계로, 값의 표현, 해석 및 구조에 제약 조건을 가하여 프로그램의 정확성을 검증하며, 단순형/복합형, 언어 정의형/사용자 정의형 등으로 분류되고 문자형, 수치형, 부울형 등 다양한 종류가 있다.
문 (프로그래밍)
컴퓨터 과학에서의 명령문
일반 정보
종류명령형 프로그래밍 언어의 기본 요소
역할프로그램의 실행 흐름 제어, 데이터 처리
구성 요소표현식
키워드
연산자
예시할당문: 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 end`를, C, PHP, Java에서는 `{ }`를 사용하여 문들을 묶을 수 있다. 여기서 ``는 0개 이상의 문들의 나열을 의미한다. 반면, 다른 프로그래밍 언어들은 각 복합 문 종류마다 다른 종결자를 사용하여 문들이 자동 그룹으로 처리되도록 한다.[1]

2. 2. 1. 블록 (Block)

블록은 여러 문을 하나의 단위로 묶어 순차적으로 실행하는 구조이다. 블록은 프로그래밍에서 코드를 구성하는 기본적인 요소 중 하나로, 다음과 같은 형태를 가진다.

위 예제에서 ``는 0개 이상의 문들의 나열을 의미한다.[1]

2. 2. 2. 조건문 (Conditional statements)

조건문은 특정 조건이 참인지 거짓인지에 따라 다른 문을 실행하도록 하는 구문이다.

구분Algol 60파스칼(Pascal)C, JavaAda포트란 77+ (Fortran 77+)
if-statement 단순 상황if test then ;
if-statement 양방향 선택if test then else ;
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