


첫 번째 원리는 문제를 작은 단위로 나누는 것으로 알고리즘의 의미가 충분히 전달될 수 있도록 작은 단위로 나누어 설계하는 것을 의미합니다(세분화 과정)첫 번째 원리는 문제를 작은 단위로 나누는 것으로 알고리즘의 의미가 충분히 전달될 수 있도록 작은 단위로 나누어 설계하는 것을 의미합니다(세분화 과정)2)차례로 나열하다2)차례로 나열하다두 번째 원리는 작은 단위로 나누어진 문제를 순서대로 나열하는 것입니다. 기본적으로 모든 알고리즘에는 순서가 표현되어야 합니다.3)상황에 따라 조건을 제시하다세번째원리는상황에따라다른일을해야하는경우가있는지알아보고있다면조건을제시해서상황별로다른일을할수있도록하는것입니다세번째원리는상황에따라다른일을해야하는경우가있는지알아보고있다면조건을제시해서상황별로다른일을할수있도록하는것입니다4)반복함 묶을 것네 번째 원리는 알고리즘으로 반복되는 내용이 있는지 확인하고 있다면 반복되는 것을 정리해서 표현하는 것입니다. 만약 라면 3개를 각각 만든다면, 다음과 같이 반복되는 것을 한 번에 설계할 수 있습니다네 번째 원리는 알고리즘으로 반복되는 내용이 있는지 확인하고 있다면 반복되는 것을 정리해서 표현하는 것입니다. 만약 라면 3개를 각각 만든다면, 다음과 같이 반복되는 것을 한 번에 설계할 수 있습니다네 번째 원리는 알고리즘으로 반복되는 내용이 있는지 확인하고 있다면 반복되는 것을 정리해서 표현하는 것입니다. 만약 라면 3개를 각각 만든다면, 다음과 같이 반복되는 것을 한 번에 설계할 수 있습니다알고리즘의 표현 방법을 이해하는 것은 의사소통을 위한 준비 과정이라고 할 수 있습니다. 하지만 이것이 표현 규칙을 정확히 준수해야 한다는 뜻은 아니기 때문에 그 규칙을 암기하는 등의 활동은 피해야 합니다.알고리즘의 표현 방법은 매우 다양한데 대표적으로 ‘자연어’, ‘순서도’, ‘의사코드’를 들 수 있습니다. 초등학교 현장에서는 초등학생의 특성상 자연어나 의사코드를 이용한 사례가 가장 많습니다. 2016년 교육부 교재 알고리즘 만들기 활동에서도 초반부에는 자연어를 이용하고 후반부에는 의사코드를 이용하고 있습니다.1)자연어.자연 언어 표현법은 일상 언어 표현법이라고도 불립니다. 이 방법은 일상적으로 사용하는 단어를 이용하여 알고리즘을 표현한 방법입니다. 알고리즘을 매우 쉽게 표현할 수 있다는 장점이 있지만 문제의 분해가 충분히 되지 않을 경우 모호하게 표현된다는 단점이 있습니다.* 전화를 걸어 친구와 통화하는 알고리즘① 친구의 전화번호를 확인한다.② 전화기를 들다.③ 번호를 입력한다.④ (통화 중이라면) 끊고 잠시 기다렸다가 ②부터 다시 시작한다.⑤ 통화 중이 아니면 통화한다.⑥ 통화가 끝나면 수화기를 놓는다.2)순서도흐름도는 약속된 기호를 사용하여 알고리즘을 표현하는 방법입니다. 그림으로 표현되기 때문에 수행 과정을 쉽게 확인할 수 있다는 장점이 있으나 다음과 같은 단점 때문에 초등학교 SW 수업에서는 사용되는 사례가 적습니다.* 복잡한 대규모 알고리즘을 표현하는 것은 어렵다.* 초등학생이 주로 사용하는 블록형 언어를 표현하기 어렵다.* 약속된 기호를 정확하게 사용해야 하므로 필요 이상의 지식적 부담이 된다.흐름도는 약속된 기호를 사용하여 알고리즘을 표현하는 방법입니다. 그림으로 표현되기 때문에 수행 과정을 쉽게 확인할 수 있다는 장점이 있으나 다음과 같은 단점 때문에 초등학교 SW 수업에서는 사용되는 사례가 적습니다.* 복잡한 대규모 알고리즘을 표현하는 것은 어렵다.* 초등학생이 주로 사용하는 블록형 언어를 표현하기 어렵다.* 약속된 기호를 정확하게 사용해야 하므로 필요 이상의 지식적 부담이 된다.순서도3)의사 코드의사코드에서의사는비슷하다비슷하다라는의미를가지고있습니다. 따라서 의사 코드는 코드, 즉 프로그래밍 언어와 유사한 표현 방법을 의미합니다. 프로그래밍 언어의 규칙을 일정부분 준수하기 때문에 이 방법을 이용하면 보다 쉽게 프로그래밍을 할 수 있다는 장점이 있습니다의사 코드에는 특별히 정해진 문법은 없습니다. 일반적으로 전문가는 자신이 사용하는 텍스트형 언어의 문법을 차용하여 표현합니다. 그러나 초등학교 학습자는 블록형 언어를 주로 사용하기 때문에 ‘블록형 교육용 프로그래밍 언어’ 문법으로 의사코드를 표현하면 좀 더 익숙하고 알고리즘을 나타낼 수 있습니다.* 텍스트형 언어 医師 コード loopgo 1 stepif wall.touch = true turn right 45* 블록형 언어의사 코드 (스크래치 엔트리)* 블록형 언어의사 코드 (스크래치 엔트리)