본문 바로가기

컴퓨팅 사고력! UP!

순서도를 그리며 공부하는 순차구조 알고리즘

 

 순차란? 
컴퓨터가 명령을 순서대로 실행하도록 하는 알고리즘을 순차라고 합니다. 

우리가 살아가는 일상생활 속에는 지켜져야 하는 순서가 있습니다. 양치질에도 순서가 있고 요리에도 순서가 있습니다. 예를 들어, 라면 끓이는 과정을 생각해 보겠습니다. 아래 순서들이 바뀐다면 어떻게 될까요? 완성된 라면을 먹을 수 있을까요? 

 


컴퓨터는 명령을 순서대로 실행하기 때문에, 순서를 지키는 것이 매우 중요합니다. 이번 시간에는 순차구조 알고리즘에 대한 얘기를 들려드릴게요. 


 순차구조 알고리즘

알고리즘 순서도 기호가 궁금하신 분들께서는 아래의 글을 참고해 주세요 :-)

 

https://booksr.tistory.com/13

 

알고리즘 순서도 기호와 구조 : 순차, 선택, 반복

이 글은 <컴퓨터과학 알고리즘 스크래치3.0>을 참고하여 작성되었습니다. 위 그림을 보면 프로그래밍 절차에서 순서도 작성 시기를 알 수 있어요. "알고리즘 설계(순서도 작성)" 찾으셨나요? 코딩

booksr.tistory.com

 

 

 

 

스크래치에서 초록 깃발을 클릭하면 '숫자 공'이 화면에 랜덤으로 배치되고, 캐니가 '숫자 공'을 획득하면 공이 우측 상단의 '획득상자'로 이동해요. 모든 공이 '획득상자'에 위치하면 '기가'가 나타나 '탈출 성공' 또는 '탈출 실패'를 말하는 순차구조 알고리즘을 설계해 볼까요?

■ 숫자 공 숫자 공 이동하기


(1) '숫자 공' 3개를 랜덤으로 서로 다른 곳에 배치 

 

 

 

① '숫자 공'이 스프라이트를 복제합니다.


② 'X좌표'와 'Y좌표' 리스트에 추가된 좌표 항목을 이용하여 랜덤으로 '숫자 공'을 배치합니다.


③ 같은 위치에 다른 '숫자 공'이 있다면, 'X좌표', 'Y좌표' 리스트의 다른 좌표 항목을 이용하여 겹치지 않도록 이동합니다. 

 

 

 

(2) '공1'이 캐니에 닿았다면

 

 

 

① 숫자 공이 캐니에 닿았다면 '공1'은 '획득상자1'로 이동합니다

('공2'는 '획득상자2'로, '공3'은 '획득상자3'으로 이동합니다).

② 숫자 공 3개 모두 획득상자로 이동했는지 확인하기 위해서 '이동 완료' 변수를 1씩 바꾸어 줍니다. 숫자 공이 모두 획득상자로 이동하면 '이동완료' 변숫값은 '3'이 됩니다.

③ 신호 변수를 이용해서 숫자 공이 획득상자에 순서대로 이동했는지 확인합니다. 

  - 공1이 획득상자1에 닿았다면 '신호1=1'
  - 공2가 획득상자2에 닿았을 때 '신호1=1'이면 '신호2=1', '신호1=0'이면 '신호2=0'
  - 공3이 획득상자3에 닿았을 때 '신호1=1', '신호2=1'이면 '신호3=1'아니면 '신호3=0'

 

 

 

(3) '공2', '공3'이 캐니에 닿았다면

 

아래 빨간 박스 부분이 앞의 ③번 설명의 신호 변수를 이용해서 숫자 공 3개 획득상자에 순서대로 이동했는지 확인하는 알고리즘입니다. 

 

 


​■ 탈출 성공 확인하기

(1) '완료' 신호를 받았을 때 숫자 공 상태 확인하기

 

 

 

① 숫자 공이 보낸 완료 신호를 받았을 때 '이동완료' 변숫값이 3이라면 숫자 공 3개가 모두 획득상자로 이동했다는 판단을 할 수 있습니다.

② '이동완료' 값이 3이라면, 숫자 공이 순서대로 회득상자로 이동했는지 확인요청을 합니다.



(2) '확인' 신호를 받았을 때 순서대로 공을 획득했는지 확인한 후 '탈출 성공' 또는 '탈출 실패' 말하기

신호1, 신호2, 신호3의 변수삾이 모두 1이라면 '탈출 성공'을 말하고, 아니면 '탈출 실패'를 말한 후 게임을 종료합니다.

 

 

 

​■ '캐니' 동작하기

방향 스프라이트를 클릭하면 캐니가 방향 스프라이트의 명령대로 동작을 실행하는 알고리즘을 설계합니다.

(1) '위' 스프라이트를 클릭했을 때 캐니 동작 설계하기

 

 

 

(2) '직진' 스프라이트를 클릭했을 때 캐니 동작 설계하기

 

 

 

 

 

이번 시간에는 순차구조 알고리즘에 관한 흥미로운 예제를 함께 풀어봤어요. 

오늘 배운 알고리즘 설계를 코딩으로 구현해 보세요 :-)


 

이 글은 생능출판사의 <컴퓨터과학 알고리즘 스크래치 3.0>을 참고하여 작성되었습니다.