본문 바로가기

KNU Freshman/컴퓨터학개론

(4) 프로그램 구조

프로그램의 구조
- 제어흐름: 프로그램에서 명령어가 실행하는 순서
- 순차 구조(순차 동작): 메모리 공간에 저장된 기계어 코드 프로그램이 Program Counter(위치)에 따라 지정된 순서대로 실행됨
- 선택 구조(선택 동작): 프로그램 코드 안에서 조건을 바탕으로 특정 부분을 수행하는 구조
- 반복 구조(반복 동작): 프로그램의 실행 순서를 변경하여 특정 코드 단위(Block)을 실행 [순환(loop)이라는 단어와 혼용하여 사용]
 
순차 구조의 구성
- 수식: 값, 변수, 연산자, 함수 호출의 조합으로 나타나는 표현식(Expression)
 
<수식의 구성 요소>
- 값: 숫자, 문자열, Boolean과 같은 상수로 표현되는 것
- 변수: 메모리에 저장되는 값이며 이름을 가짐
- 연산자: 값이나 변수에 대해서 연산을 수행하는 기호
   ex) +(덧셈), -(뺄셈), *(곱셈), /(나눗셈) etc
- 함수호출: 수식에서 함수를 호출하여 복잡한 작업을 수행하며, 결과는 수식의 일부가 될 수 있음
 
<순차 구조의 예>
 
- 순서대로 기술된 순차 구조
ex) 단계 i : input("수강과목을 입력하세요.");
      단계 i+1 : input("학번을 입력하세요.");
 
- 수식의 예
#Addition
x = 8
y = 5
result = x + y
 
- 함수 호출
def area(x):
        return x ** 2
 
<변수의 자료형>
명시적 타입: 변수 타입 명시적으로 정의
묵시적 타입: 변수 타입이 값을 바탕으로 추론됨
정적 타입: 변수 타입이 정해지면 변하지 않음
동적 타입: 변수의 타입이 변수 값의 종류에 따라 변함
* (정적 타입 / 명시적 타입), (동적 타입 / 묵시적 타입) 함께 사용되는 경우 많지만 항상 그런 건 아님!
 
<연산자>
- 산술연산자: 산술(사칙연산 포함) 연산
- 관계연산자: 2개의 값이나 변수 간의 관계를 연산 (크다 / 작다 등)
- 논리연산자: 2개의 값이나 변수 간에 논리적 연산을 수행 (AND / OR)
- 할당연산자: 변수에 값을 할당하기 위하여 사용
* 서로 다른 타입의 값 혹은 변수 간의 연산을 위해서는 변환(Type Conversion)이 필요함
    -> 자동 변환, 수동 변환
ex) 
a = 3   #정수형
b = 3.5    # 실수형
a + b 
if 정수 6 -> 정수 3 + 정수 3 or 4 = 6/7
if 실수 6.5 -> 실수 3.0 + 실수 3.5 = 6.5
 
<수식 표기법>
- 연산자와 피연산자를 사용하여 수식을 표현할 때 연산자의 위치가 다르며, 컴퓨터 구조나 프로그래밍 언어에 따라 방식이 다름
 
- 중위 표기법
    4 + 3
- 전위 표기법
   + 4 3
- 후위 표기법
   4 3 +
 
<함수 호출>
-특별한 목적의 작업을 수행하기 위해 독립적으로 작성된 코드의 집합
* 함수(Function), 서브루틴(Subroutine), 프로시져(Procedure), 메소드(Method) 등으로 불림
 
1. 함수의 구조
- 이름
- 매개변수(Parameters): 함수를 정의할 때 나열된 변수
- 인자(Arguments): 주 프로그램에서 함수로 전달한 값
- 반환값(Return Value): 함수의 실행 결과로 주 프로그램으로 전달함

 


 
2. 함수의 종류
- 내장함수: 프로그래밍 언어가 제공하는 함수로 특별한 설치 없이 사용 가능
ex) 파이썬에선 input(), print() etc
 
- 외장함수: 외부, 제 3자가 개발한 함수로 사용을 위해서는 사용자가 직접 설치해야 하거나 설치된 함수를 명시적으로 포함해야 함
ex) 파이썬에서 numpy 패키지 함수
 
조건 구조: 단일 대안
- 단일 if 구문 형식: 'if' 다음에 따라오는 조건식이 참이면 바로 아래에 있는 명령문을 실행
- 단일 if-else 구문 형식: if문의 조건식이 참이면 바로 아래 명령문 실행, 거짓이면 else 이후의 명령어 실행

 

조건 구조: 이중 대안

- 중첩 if 문: 1개의 if문이 2개 이상의 조건식을 가지고 있는 if문

 
반복 구조
- 순환이라는 반복 구조를 사용하여 프로그램의 특정 코드 블록을 반복
- 반복 조건 위치 순환 몸체(블록)의 앞이나 뒤에 있음
- for(반복 범위, 횟수), while(반복 조건) 등이 있음
 
<반복 구조에서의 제어>
- 순환 블록 내에서 조건을 사용하여 실행을 종료하거나 계속할 수 있음
- break: 더 이상 순환 블록을 실행하지 않고 빠져나감
- continue: 현재 수행 중인 순환 블록을 중단하고, 반복 조건을 다시 검사하여 블록의 처음부터 실행하거나 반복을 중단함

'KNU Freshman > 컴퓨터학개론' 카테고리의 다른 글

(6)-1 컴퓨터 구조와 운영체제  (0) 2024.04.15
(5) 프로그램의 번역  (0) 2024.04.11
(3) 프로그래밍 언어의 역사  (0) 2024.04.11
(2) 컴퓨터의 역사 & 알고리즘  (0) 2024.04.10
(1) 컴퓨팅 사고  (0) 2024.04.10