이 글은 이기적 정보처리기능사 실기 기본서를 기반으로 제작되었습니다.
알고리즘은 자료 구조와 함게 프로그램을 구성하는 요소, 조금 좁게 생각하자면 어떤 문제에 대한 답을 찾는 해법을 의미합니다.
알고리즘 문제는 제가 정처기를 보면서 한번도 순서도가 나온걸 본적이 없습니다.
그래서 이 챕터는 가볍게 훑어보고 넘어갑시다
알고리즘은 기본적인 명령어를 통해서도 작성이 가능합니다.
그 명령어는 5가지 특성을 만족하여야 된답니다.
어려워 보이지만 실은 아주 간단합니다.
이렇게 cmd에서도 실행 가능한 기본 명령어를 예로 들어보았습니다.
하지만 위 조건에 맞지 않게 실행한다면 어떻게 될까요?
입력과 출력, 유한성은 조건에 만족하지만, 명확성과 유효성은 조건에 부합하지 않아 에러를 냅니다.
알고리즘의 표현은 자연어, 순서도, 의사 코드, 프로그래밍 언어 등을 이용하는 방법이 있습니다.
꼭 프로그래밍 언어가 아니더라도 알고리즘의 표현은 가능합니다.
알고리즘을 표현하는 여러 방식 중 하나입니다.
미리 약속된 기호와 그림을 통해 논리적 절차, 흐름, 연산 등을 시각적으로 표현한 것입니다.
순서도는 제가 지금까지 시험을 봤었는데 한문제도 안나왔었습니다.
( 혹시 모르죠? 언제 나올지? )
단말이라고 불리며, 시작과 끝을 나타냅니다.
흐름선입니다. 어떤 흐름으로 진행되는지 표시합니다.
준비라고 불리며, 초기 설정을 나타냅니다.
입력, 출력을 의미하며, 자료의 입출력을 나타냅니다.
처리를 의미하며 산술 연산을 나타냅니다.
판단이라고 불리며, if문 같이 조건을 비교한 후, 흐름을 결정합니다.
표시라고 불리며, 화면에 출력결과를 표시합니다.
위에 예시 이외에도 반복문같은 기호는 많지만, 구지 외우실 필요는 없습니다.
순서도 문제는 아마도 안나올것같으니까요.
산술 연산.. 다 아시잖아요?
관계 연산도 아실거라고 믿지만 일단 끄적여봅니다.
여기에선 변수와 상수 등 프로그래밍에서도 중요한 공식이 나와서 꼭 읽어보셔야 할겁니다.
변수는 변하는 수라는 의미로, 고정되어 있지 않은 값 또는 어떤 값을 주기억장치에 기억하기 위해 사용하는 공간입니다.
상수는 변수와 다르게 고정되어 있는 값 또는 이미 저장되어 있는 변하지 않는 값을 의미합니다.
JS로 따지자면 const가 상수, 나머지 let, var은 변수라는 뜻이죠.
여기서 = 이 기호는 같다라는 의미가 아닌 대입하다라는 의미로 쓰입니다.
부호의 변경은 판단 기호를 이용하여 계산하는 방법과 아래에 식을 사용하여 연산합니다.
만약 첫번째 방법인 판단 기호 방법을 쓴다면 if문을 돌리면서 하면 되겠군요.
근데 이렇게 하면 너무 귀찮아집니다. if문도 2개를 써야 하죠. 그래서 두번째 방법을 한번 써봅시다.
이 몫과 나머지는 입력된 수가 짝수인지 홀수인지 구분하는 곳에 쓰입니다.
만약 2를 입력받았을때 입력된수 % 2 == 0 이라면 짝수, 아니라면 홀수라고 처리가 가능하죠.
배열은 번호에 대응하는 데이터들로 이루어진 자료 구조를 의미합니다.
변수를 연속적으로 저장하기 위해 확보한 메모리 공간을 말하기도 합니다.
만약 a[5]라면 이 변수에 주소값은 a[0] ... a[4]의 주소로 이루어져 있습니다.
왜 0부터 시작함?
프로그래밍의 배열 인덱스 값은 항상 0부터 시작한다는 것을 잊지 맙시다!
참고로, 순서도에서는 0 또는 1로 시작이 가능합니다.
순서도는 거의 나오지 않는 문제이므로 넘어가도 좋지만, 최소한 순서도의 기초공식은 보고 다음 챕터로 넘어가시는걸 추천합니다.
프로그래밍에서도 중요한 공식이기 때문입니다. 나중에 허우적대지 마시고, 기초공식이라도 충분히 이해하시고 넘어가심 됩니다. 다음 챕터때 다시 보죠.