[Crash Course: Computer Science] #12 프로그래밍의 기본: 문장과 함수

이민선(Jasmine)·2023년 1월 15일
0

프로그래밍 언어는 프로그래머가 계산 문제 해결에 집중하고 하드웨어적인 핵심들은 줄이도록 개발되었다.
이번 시간에는 거의 모든 프로그래밍 언어가 제공하는 몇 가지 기본적인 구성 요소들을 배운다.

언어의 문장 구성 요소와 구조들을 다루는 규칙 세트를 syntax이라고 한다.
변수에 값을 할당하는 문장을 대입문(assignment statement)이라고 한다.
명령어 목록인 프로그램은 조리법과 비슷하다. 첫번째 문장에서 시작하여 한번에 하나씩 끝에 도달할 때까지 실행된다.

벌레가 HARVARD MARK1에 들어가서 고장내기 전에, GraceHopper가 벌레를 잡아야 하는 아케이드 게임을 만든다고 상상해보자.

모든 레벨에서 버그 수가 증가한다. Grace는 벌레들이 기계의 릴레이 안에 들어가기 전에 잡아야 한다.
게임을 실행시키려면 중요한 값들(Ex. 플레이어의 레벨, 점수, 남아있는 벌레 숫자 등등)을 추적해나가야 한다.
먼저 변수를 초기화해야 한다. (레벨은 1, 버그는 5마리, 플레이어 이름은 재스민,, 등등)

Control Flow Statement(제어흐름문)을 사용한다.
몇 가지 유형이 있지만, If 문이 가장 일반적이다.
어떤 경로를 택할지는 조건이 참인지 거짓인지 따라 달렸다. (조건문)
ex.

IF level is 1 
THEN  score = 0
       Bugs = 1
    ELSE bugs = Level * 3
       END IF

여러번 문장을 반복하기 위해서는 조건부 루프를 만들어야 한다.
재고를 최대 4개까지 보충해주는 동작을 만들려면 while 루프를 사용할 수 있다.
ex.

WHILE relays < 4
          relays = relays + 1

For 루프도 있다.
조건이 거짓이 될 때까지 영원히 반복되는 While 루프와 달리, 횟수를 조정할 수 있어 특정 횟수만큼 반복한다.
레벨에 따라 기하급수적으로 올라가는 보너스를 원한다면? 지수를 계산하는 코드를 작성해야 한다.
ex.

Bonus = 1
    For I = 1 To Level
         Bonus = Bonus * Relays
    Next

함수는 프로그래밍 언어 별로 메서드 또는 서브 루틴이라고도 부른다.
함수는 해당 프로그램의 다른 부분에서 이름을 호출하면 사용될 수 있다.
위의 For 루프를 함수로 바꿔보자.

Function Exponent(Base, Exp)
      Result = 1
      For I = 1 To Exp
         Result = Result * Base;
      Next
Return Result

이 변수의 초기값은 프로그램의 다른 부분에서 함수로 전달된다.
마지막으로는 코드의 결과를 return을 사용하여 result의 값이 반환되도록 지정한다.
ex. 2의 44승을 계산하자.

Function Exponent(2, 44)
      Result = 1
      For I = 1 To Exp
         Result = Result * Base;
      Next
Return Result

// Result = 17,592,186,044,416

필요한 만큼 모든 루프를 수행한 다음 함수는 결과를 반환한다.

Function CalcBonus(Relays, Level)
Bonus = 0
If Relays > 0
       Bonus = Exponent(Relays, Level)
END IF
Return Bonus

Function LevelFinished(Relays,Level,Score)
 Score = Score + CalcBonus(Relays, Level)
 If score > highScore
    highScore = score
    highPlayer = playername
 End if
 Return Score
 
 TotalScore = LevelFinished(2, 5, 21)

이렇게 호출하면 모든 내부 루프와 변수를 볼 필요없이 반환된 결과만을 볼 수 있다.
총 점수는 53점!

소프트웨어는 수천개의, 서로 다른 기능을 맡는 작은 함수들로 구성되어 있다.
함수로 프로그래밍을 모듈화함으로써 프로그래머 한명이 앱을 만들도록 할 수도 있고,
팀 구성원들이 매우 큰 프로그램 안에서도 효율적으로 작업할 수 있도록 한다.

현대 프로그래밍 언어는 미리 작성된 함수들, 라이브러리라고 불리는 묶음이다.
엄격한 테스트 후 모든 사람에게 제공된다.

profile
기록에 진심인 개발자 🌿

0개의 댓글