스크래치 COS -최대값찾기
스크래치COS 코딩시험에서 알고리즘의 가장 핵심적인 부분이 변수, 반복문, 조건, 함수이다.
알고리즘에서 가장 기본이 값을 찾는 것이다. 검색에서 가장 많이 사용하는 내용이 최대값 찾기, 최소값 찾기이다.
이번 글에서는 최대값을 찾아보자. 최대값을 검색하기 위해 기본적으로 리스트를 사용할 것이며, 리스트 내의 값들 중에서 가장 큰 값을 찾아보자. 이번 글에서는 최대값을 찾는 것도 중요한 개념이지만, 코딩 입장에서 보면 인덱스를 활용하여 리스트를 관리하고 처리하는 방법 등을 학습하는 것도 매우 중요한 포인트이다. 그래서 최대값, 최소값 같이 글을 작성할 까 하다가 별도로 작성하는 것은 반복적인 리스트의 인덱스 처리를 경험하여 노하우를 얻기를 바라는 마음에서이다.
또 한가지 스크래치 코딩에서 새롭게 학습하는 것은 두 개의 스프라이트 사이에 메시지를 주고 받는 것을 학습한다.
메시지를 정의하고, 메시지를 송신하고, 다른 스프라이트에서는 메시지를 수신하는 절차를 학습할 것이다.
요구사항
* 리스트에 10개의 1-100까지 중 난수 값을 입력한다.
* 버튼 스프라이트를 추가하여 버튼 스프라이트를 클릭하면 최대값을 찾아 말한다.
* 변수
- num 리스트변수 : 1~100까지 난수값을 저장하는 리스트 변수이다.
- max 변수 : 최대값을 저장하는 변수이다.
- i : 인덱스 임시 변수, 리스트의 각 항목을 가져오거나 참조할 때 사용하는 변수이다.
* 검색
- 리스트 첫번째 항목을 max에 저장한다.
. 반복 (i>num항목의개수)
- i =2
- 리스트 두번째 항목부터 max값과 비교하여, 항목값이 크면 max값에 항목값으로 변경한다.
- i =i+1
분석 및 설계
[[고양이 스프라이트]]
. 변수만들기
- num 리스트변수 : 1~100까지 난수값을 저장하는 리스트 변수이다.
- max 변수 : 최대값을 저장하는 변수이다.
- i : 인덱스 임시 변수, 리스트의 각 항목을 가져오거나 참조할 때 사용하는 변수이다.
. 초기화
- num 리스트 모두 삭제하기
- 10번 반복하기
- 1~100사이의 난수를 num 리스트에 추가하기
. '최대값' 신호를 받았을 때
- i=1
- max = num(i)항목 (i=1)
- 9번반복
- i=i+1
- if num(i) > max
- max = num(i)
- 말하기(max)
[[최대값 스프라이트]]
. 버튼 스프라이트를 클릭했을 때
- '최대값' 메시지를 송신한다.
블럭코딩
[[고양이 스프라이트]]
. num 리스트 모두 삭제하기 . num에 1~100사이의 나수를 10개 추가하기 |
. '최대값' 신호를 받았을때 - i=1 - max = num(i)항목 (i=1) - 9번반복 - i=i+1 - if num(i) > max - max = num(i) - 말하기(max) |
* 디버깅
하기 표는 최대값 신호를 받았을 때 동작하는 순서를 아래 표로 요약 정리해보았다.
i=1, num(1)=77, max에 num(1)을 저장한다. (77)
이제 반복문을 실행해보자
i=2
if num(2) > max ; if 96 > 77
max = 96
i=3,
if num(3) > max ; if 37 > 96
i=4,
if num(4) > max ; if 63 > 96
i=5,
if num(5) > max ; if 39 > 96
i=6,
if num(6) > max ; if 5 > 96
i=7,
if num(7) > max ; if 97 > 96
max = 97
i=8,
if num(8) > max ; if 14 > 97
i=9,
if num(9) > max ; if 60 > 97
i=10,
if num(10) > max ; if 40 > 97
max=97값이다.
![]() |
i | num(i) | max |
1 | 77 | 77 | |
2 | 96 | 96 | |
3 | 37 | 96 | |
4 | 63 | 96 | |
5 | 39 | 96 | |
6 | 5 | 96 | |
7 | 97 | 97 | |
8 | 14 | 97 | |
9 | 60 | 97 | |
10 | 40 | 97 |
결과 : max=97값
[[버튼 스프라이트]]
. 이 스프라이트를 클릭했을때 - 최대값 신호 보내기 |
* 실행 결과물
1~100까지 난수를 num 리스트 변수에 삽입한 후에,
최대값 버튼을 클릭하면 max변수에 97 최대값을 저장하고 종료된다.
스크래치를 활용하여 최대값찾기 프로그램은 쉬운 것 같지만 실제로는 많은 프로그램의 기능과 능력이 필요하다.
본 글을 통해 리스트와 리스트 변수를 처리하는 과정 및 스프라이트간의 신호 처리 등을 학습하고 복습하면 좋겠다.
먼저 리스트 변수를 활용하였고, 간단한 i변수인 인덱스 처리하는 과정을 이해하는게 매우 중요한다.
상기 '디깅' 의 과정을 천천히 분석하고 이해할 필요가 있다. i값이 변화하면서 num 리스트항목의 값을 조회하고 비교하는 개념을 꼭 이해하기를 바란다.
다음 글은 최소값이다. 유사하다 못해 거의 똑같은 프로그램이지만, 가능하면 혼자 스스로 프로그램을 작성해보고 리스트 변수를 처리하는 개념을 꼭 연습하기를 추천한다.
다시 한번 강조해서 말하지만, 변수의 값이 각 프로그램 단계별 순차적으로 어떻게 변화하는지 추척하는 것이 매우 중요하다. 블럭을 하나씩 쌓으면서 변수 볼륨 값의 변화를 살펴보자. 코딩은 눈으로 보면서 이해하고 학습하지만 직접 블럭을 쌓으며 이해하고 학습하는 것이 더 효과적이며 창의와 이해의 개념이 ~쑥 늘어납니다.
앞으로의 여러분의 모습을 기대합니다.
Just Do it!!!
Just Drag&Drop!!!
'스크래치 > 스크래치 COS시험' 카테고리의 다른 글
스크래치COS-최대공약수 (0) | 2022.08.03 |
---|---|
스크래치COS-최소값찾기 (0) | 2022.08.02 |
스크래치COS-코흐눈송이(Koch Snowflask) 그리기 (0) | 2022.07.31 |
스크래치COS-시어핀스키삼각형그리기 (0) | 2022.07.29 |
스크래치COS-다각형거미줄그리기 (0) | 2022.07.28 |
댓글