의사코드
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
의사 코드는 컴퓨터 과학 및 수치 계산 분야에서 알고리즘을 설명하기 위해 사용되는 간결한 표현 방식이다. 특정 프로그래밍 언어에 종속되지 않아 프로그래머가 쉽게 이해할 수 있으며, 알고리즘을 설계하고 구현하기 전에 초안을 작성하는 데 활용된다. 의사 코드는 다양한 스타일과 문법을 가질 수 있으며, 수학적 표기법을 사용하여 알고리즘을 설명하기도 한다.
더 읽어볼만한 페이지
- 알고리즘 기술 언어 - 순서도
순서도는 컴퓨터 알고리즘이나 프로세스를 시각적으로 표현하는 도구로, 흐름 공정 차트에서 기원하여 컴퓨터 프로그래밍 분야에서 알고리즘을 설명하는 데 사용되며, 다양한 종류와 소프트웨어 도구가 존재한다. - 소스 코드 - 헤더 파일
헤더 파일은 프로그래밍 언어에서 코드 재사용성, 모듈화, 컴파일 시간 단축에 기여하며 함수 프로토타입, 변수 선언 등을 포함하고 `#include` 지시어로 소스 코드에 포함되어 사용되는 파일이다. - 소스 코드 - 헝가리안 표기법
헝가리안 표기법은 변수 이름에 데이터 타입이나 목적을 나타내는 접두사를 붙이는 명명 규칙으로, 찰스 시모니가 고안하여 마이크로소프트에서 널리 사용되었으나, 코드 가독성 향상에 대한 유용성 논란과 함께 최신 IDE 환경에서는 불필요하다는 비판도 있다. - 컴퓨터 프로그래밍 - 순서도
순서도는 컴퓨터 알고리즘이나 프로세스를 시각적으로 표현하는 도구로, 흐름 공정 차트에서 기원하여 컴퓨터 프로그래밍 분야에서 알고리즘을 설명하는 데 사용되며, 다양한 종류와 소프트웨어 도구가 존재한다. - 컴퓨터 프로그래밍 - 컴퓨터 프로그램
컴퓨터 프로그램은 계산 기계를 작동시키기 위한 절차를 명확하고 구체적으로 작성한 결과물로서, 하드웨어 발전과 궤를 같이하며 자카드 직기, 해석 기관, 튜링 기계, ENIAC 등의 기계들과 프로그래밍 언어의 발전을 거쳐 현대적인 소프트웨어 개발 환경에 이르렀다.
| 의사코드 |
|---|
2. 활용
의사 코드는 프로그래머가 특정 프로그래밍 언어에 대한 친숙도와 관계없이 알고리즘을 이해할 수 있는 방식으로 설명하기 위해 컴퓨터 과학 및 수치 계산과 관련된 과학 출판물과 교과서에서 일반적으로 사용된다. 교과서는 종종 사용 중인 규칙을 설명하는 소개를 포함하며, 의사 코드의 세부 사항은 때때로 공식 프로그래밍 언어의 세부 사항에 접근할 수 있다.
의사 코드는 일반적으로 특정 언어의 구문 규칙을 따르지 않으며, 체계적인 표준 형식은 없다. 일부 작성자는 포트란, 파스칼, BASIC, C, C++, Java, Lisp, ALGOL 등 기존 프로그래밍 언어의 제어 구조에서 스타일과 구문을 차용하기도 하지만, 이는 권장되지 않는다.[3][4] 변수 선언은 일반적으로 생략된다. 함수 호출 및 코드 블록(루프 내에 포함된 코드 등)은 종종 한 줄의 자연어 문장으로 대체된다.
프로그래머는 종종 친숙하지 않은 알고리즘을 의사 코드로 초안을 작성한 다음, 더 큰 프로그램에 맞게 조정하면서 프로그래밍 언어로 변환하여 구현을 시작한다. 이 하향식 구조 접근 방식은 종종 실행 가능한 코드로 구체화된 의사 코드 스케치로 시작한다. 의사 코드는 또한 표준화에도 사용된다. 예를 들어, MPEG 표준은 공식적인 C와 유사한 의사 코드에 의존하며, 이 표준은 코드의 세부 사항을 이해하지 않고는 이해할 수 없다.[1]
3. 문법
작성자에 따라 의사 코드는 실제 프로그래밍 언어에 거의 가깝게 모방한 스타일에서 서식이 지정된 산문에 가까운 설명까지 다양할 수 있다.
다음은 수학 게임 피즈 버즈에 대한 의사 코드 예시이다.파스칼 스타일: C 스타일: 파이썬 스타일:
다음은 의사 코드와 실제 프로그래밍 언어(PHP) 코드의 비교 예시이다.
```
'''if''' 신용 카드 번호가 유효함
번호와 주문으로 거래를 한다
'''else'''
오류를 표시한다
'''end if'''
```
if (is_valid($cc_number)) {
execute_transaction($cc_number, $order);
}
else {
show_failure();
}
?>
4. 수학적 스타일의 의사코드
수치 계산에서 의사 코드는 종종 수학적 표기법으로 구성되며, 일반적으로 행렬 및 집합론에서 비롯된다. 프로그래밍 언어의 제어 구조와 혼합되기도 하며, 자연어 설명이 포함되기도 한다. 이는 광범위한 수학적 훈련을 받은 사람들이 이해할 수 있는 간결하고 종종 비공식적인 표기법이며, 수학적 알고리즘을 설명하는 방법으로 자주 사용된다. 예를 들어, 합 연산자(시그마 표기법) 또는 곱 연산자(파이 표기법)는 하나의 표현식에서 for-루프 및 선택 구조를 나타낼 수 있다.[1]
일반적으로 비-ASCII 타이포그래피는 수학 방정식을 위해 사용되며, TeX 또는 MathML과 같은 마크업 언어를 사용하거나 독점적인 수식 편집기를 통해 표현된다.[1]
수학적 스타일의 의사 코드는 ''pidgin code''라고도 불리며, ''pidgin ALGOL''(개념의 기원), ''pidgin Fortran'', ''pidgin BASIC'', ''pidgin Pascal'', ''pidgin C'', ''pidgin Lisp'' 등이 있다.[1]
Return
4. 1. 일반적인 수학 기호
수치 계산에서 의사 코드는 종종 수학적 표기법으로 구성되며, 일반적으로 행렬 및 집합론에서 비롯된다. 프로그래밍 언어의 제어 구조와 혼합되기도 하며, 자연어 설명이 포함되기도 한다. 이는 광범위한 수학적 훈련을 받은 사람들이 이해할 수 있는 간결하고 종종 비공식적인 표기법이며, 수학적 알고리즘을 설명하는 방법으로 자주 사용된다. 예를 들어, 합 연산자(시그마 표기법) 또는 곱 연산자(파이 표기법)는 하나의 표현식에서 for-루프 및 선택 구조를 나타낼 수 있다.[1]일반적으로 비-ASCII 타이포그래피는 수학 방정식을 위해 사용되며, TeX 또는 MathML과 같은 마크업 언어를 사용하거나 독점적인 수식 편집기를 통해 표현된다.[1]
수학적 스타일의 의사 코드는 ''pidgin code''라고도 불리며, ''pidgin ALGOL''(개념의 기원), ''pidgin Fortran'', ''pidgin BASIC'', ''pidgin Pascal'', ''pidgin C'', ''pidgin Lisp'' 등이 있다.[1]
| 연산 종류 | 기호 | 예시 |
|---|---|---|
| 할당 | ← 또는 := | |
| 비교 | =, ≠, <, >, ≤, ≥ | |
| 산술 | +, −, ×, /, mod | |
| 바닥/천장 | ⌊, ⌋, ⌈, ⌉ | |
| 논리 | 그리고, 또는 | |
| 합, 곱 | Σ, Π |
4. 2. 예시
의사코드의 예시는 다음과 같다.| 포트란 스타일 의사코드 | 파스칼 스타일 의사코드 | C 스타일 의사코드 |
|---|---|---|
수학 스타일 의사코드:
Return
아래는 의사 코드와 실제 프로그래밍 언어(PHP)로 작성된 코드의 비교 예시이다.
의사 코드:
'''if''' 신용 카드 번호가 유효함
번호와 주문으로 거래를 한다
'''else'''
오류를 표시한다
'''end if'''
PHP 코드:
if (is_valid($cc_number)) {
execute_transaction($cc_number, $order);
}
else {
show_failure();
}
?>
5. 프로그래밍 언어에서의 자연어 문법
하이퍼토크, 린고, 애플스크립트, SQL, 인폼, 그리고 어느 정도 파이썬과 같은 프로그래밍 언어는 컴퓨터 프로그래밍에 자연어 문법 요소를 도입하려는 시도를 통해 탄생했다. 이러한 언어에서는 괄호 및 기타 특수 문자가 전치사로 대체되어 다소 장황한 코드가 생성된다. 이 언어들은 일반적으로 동적 타이핑을 사용하여 변수 선언 및 기타 보일러플레이트 코드를 생략할 수 있다. 이는 해당 언어에 대한 지식이 없는 사람도 코드를 이해하고, 언어를 배우는 것을 더 쉽게 만들 수 있다. 그러나 자연어와의 유사성은 대개 진정성보다는 외형적인 것에 가깝다. 구문 규칙은 기존 프로그래밍과 마찬가지로 엄격하고 형식적일 수 있으며, 반드시 프로그램 개발을 더 쉽게 만들지는 않는다.
의사 코드의 예시는 다음과 같다.
'''if''' 신용 카드 번호가 유효함
번호와 주문으로 거래를 한다
'''else'''
오류를 표시한다
'''end if'''
PHP로 작성한 동일한 기능의 코드는 다음과 같다.
```php
if (is_valid($cc_number)) {
execute_transaction($cc_number, $order);
}
else {
show_failure();
}
?>
6. 수학 프로그래밍 언어
알고리즘을 설명할 때 수학적 의사 코드(집합론 표기법 또는 행렬 연산 포함) 대신, 비ASCII 수학 표기법과 프로그램 제어 구조를 혼합한 형식적 수학 프로그래밍 언어를 사용할 수 있다. 이러한 코드는 기계가 구문 분석하고 해석할 수 있다.
몇 가지 형식적 명세 언어에는 특수 문자를 사용한 집합론 표기법이 포함된다. 예를 들면 다음과 같다.
- Z 표기법
- 비엔나 개발 방법 명세 언어 (VDM-SL).
일부 배열 프로그래밍 언어에는 기존 제어 구조와 혼합된 비ASCII 공식으로 벡터화된 표현식과 행렬 연산이 포함된다. 예를 들면 다음과 같다.
7. 예제
의사코드의 예시는 다음과 같다.
| 포트란 스타일 의사코드 | 파스칼 스타일 의사코드 | C 스타일 의사코드 |
|---|---|---|
수학 스타일 의사코드:
Return
아래는 의사 코드와 실제 프로그래밍 언어(PHP)로 작성된 코드의 비교 예시이다.
의사 코드:
'''if''' 신용 카드 번호가 유효함
번호와 주문으로 거래를 한다
'''else'''
오류를 표시한다
'''end if'''
PHP 코드:
if (is_valid($cc_number)) {
execute_transaction($cc_number, $order);
}
else {
show_failure();
}
?>
참조
[1]
문서
An often-repeated definition of pseudocode since at least 2003 is "a detailed yet readable description of what a computer program or algorithm must do, expressed in a formally-styled natural language"
[2]
서적
2021 XLVII Latin American Computing Conference (CLEI)
2021
[3]
서적
Code Complete
Pearson Education
2004
[4]
문서
Invitation to Computer Science, 8th Edition by Schneider/Gersting, "Keep statements language independent" as quoted in this stackexchange question
https://cs.stackexch[...]
[5]
웹사이트
The PlusCal Algorithm Language
https://www.microsof[...]
Microsoft Research
2009-01-02
[6]
간행물
Notes on Algorithms, Pseudocode, and Flowcharts
http://www.engr.sjsu[...]
engr.sjsu.edu
2010-12-29
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com