스크래치 COS -십진수를이진수로변환
스크래치COS 코딩시험에서 알고리즘의 가장 핵심적인 부분이 변수, 반복문, 조건, 함수이다.
스크래치 코드로 십진수를 이진수로 변환하는 프로그램을 작성해 보자.
요구사항
십진수를 이진수로 변환하는 알고리즘은 십진수를 2로 나눈후 몫과 나머지를 각각 저장한다.
다시 몫을 2로 나누어 몫과 나머지를 저장한다. 몫이 0일때하여 나머지를 구한다.
분석 및 설계
. 변수만들기
- n : 변환할 십진수로, 키보드로 입력받아 저장한다.
- b : 임시 인진수를 저장하는 리스트 변수이다.
- result : 최종 변환되는 이진수를 저장하는 리스트 변수이다.
- i : 인덱스 변수이다.
. 초기화
- n : 키보드로부터 숫자를 입력받아 저장한다.
- i = 0
- b 리스트 변수 모두 삭제하기
- result 리스트 변수 모두 삭제하기
. 십진수를 이진수로 변환하는 알고리즘
- n = 0 까지 반복하기
. i = i +1
. n/2의 나머지를 b 리스트에 추가
. n = n/2
. b 리스트를 result에 역순으로 저장한다.
. i = b 의 길이 값을 저장한다.
. i=0 까지 반복하기
- result에 b의 i번째 리스트 추가하기
- i = i=1
블럭코딩
. 초기화 - n : 키보드로부터 숫자를 입력받아 저장한다. - i = 0 - b 리스트 변수 모두 삭제하기 - result 리스트 변수 모두 삭제하기 |
. 십진수를 이진수로 변환하는 알고리즘 - n = 0 까지 반복하기 . i = i +1 . n/2의 나머지를 b 리스트에 추가 . n = n/2 |
. b 리스트를 result에 역순으로 저장한다. . i = b 의 길이 값을 저장한다. . i=0 까지 반복하기 - result에 b의 i번째 리스트 추가하기 - i = i=1 |
* 디버깅
* 초기화
. n=8
. i=0
. b : empty
[1스텝]
n=0까지 반복하기 (8=0, false)
b : 0 (8/2 -> 0, 나머지)
n = 2 (8/2 => 4, 몫)
[2스텝]
n=0까지 반복하기 (4=0, false)
b : 0 0 (4/2 -> 0, 나머지)
n = 1 (4/2 -> 2, 몫)
[3스텝]
n=0까지 반복하기 (2=0, false)
b : 0 0 0 (2/2 ->0, 나머지)
n = 0 (2/2 -> 1, 몫)
[4스텝]
n=0까지 반복하기 (1=0, false)
b : 0 0 0 1 (1/2 -> 1, 나머지)
n = 0 (1/2 -> 0, 몫)
[5스텝]
n=0까지 반복하기 (0=0, treu)
* b리스트(0001) 를 result(1000)리스트에 역순으로 저장한다.
[1스텝]
i=4
i=0 까지 반복하기(4=0, false)
result <- b(4) ; (1)
i=i-1 (3)
[2스텝]
i=0 까지 반복하기(3=0, false)
result <- b(3) ; (1 0)
i=i-1 (2)
[3스텝]
i=0 까지 반복하기(2=0, false)
result <- b(2) ; (1 0 0 )
i=i-1 (1)
[4스텝]
i=0 까지 반복하기(1=0, false)
result <- b(1) ; (1 0 0 0)
i=i-1 (0)
[5스텝]
i=0 까지 반복하기(0=0, true)
result : (1 0 0 0)
* 실행 결과물
변환할 십진수를 키보드로부터 입력받아 변수 n에 저장한다.
십진수 8을 이진수로 변환한 결과는 (1000) 이다.
스크래치를 통해 십진수를 이진수로 변환하는 프로그램을 작성하였다. 사람이 수학으로 십진수를 이진수로 변환하는 것은 그렇게 어렵지 않지만, 프로그램 코딩으로 구현하려면 다양한 문제 해결 방법을 생각하고 고민해야 한다. 이런데에 코딩하는 재미가 있는 것 같다. 본 프로그램을 통해 이진수를 만드는 과정을 하나씩 살펴보았다.
다시 한번 강조해서 말하지만, 변수의 값이 각 프로그램 단계별 순차적으로 어떻게 변화하는지 추척하는 것이 매우 중요하다. 블럭을 하나씩 쌓으면서 변수 볼륨 값의 변화를 살펴보자. 코딩은 눈으로 보면서 이해하고 학습하지만 직접 블럭을 쌓으며 이해하고 학습하는 것이 더 효과적이며 창의와 이해의 개념이 ~쑥 늘어납니다.
앞으로의 여러분의 모습을 기대합니다.
Just Do it!!!
Just Drag&Drop!!!
'스크래치 > 스크래치 COS시험' 카테고리의 다른 글
스크래치COS-버블정렬 (0) | 2022.08.09 |
---|---|
스크래치COS-선형검색 (1) | 2022.08.08 |
스크래치COS-이진수를십진수로변환 (0) | 2022.08.06 |
스크래치COS-피보나치수열 (0) | 2022.08.05 |
스크래치COS-최소공배수 (0) | 2022.08.04 |
댓글