Contents
- 1. 시간 배분
- 2. RUR-PLE �란 ?
- 3. 규칙들
- 4. 간단한 러플 사용법
- 5. 경품
- 6. ì°¸ê³
- 준비ìž� : 01 ê¹€ìƒ�ì„, 04 문보창
- �시 : 수요�
1. 시간 ë°°ë¶„ ¶
- � 소요 예� 시간 : 2시간
- 간단한 설명 10분
- 로봇 사용법 20분
- 스테�지 15분마다(6단계)
- 힌트, 설명ì�€ 계ì†� ì œê³µ
2. RUR-PLE ì�´ëž€ ? ¶
- 프로그래ë°� 언어를 배우는것ì�€ 재밌어야 한다는 취지ì—�서 만들어진 환경ì�´ë‹¤. ì‹¤ì œë¡œ í•´ë³´ë©´ 재밌다. ë�„움ë�„ ë§Žì�´ ë�œë‹¤.
- Python 언어를 사용하여 컴퓨터 프로그래� 언어를 배울수 있는 환경�다.
- Python 문법 기반ì�´ì§€ë§Œ, 몰ë�¼ë�„ ìƒ�관없다. 주어진 함수들ì�„ ê°€ì§€ê³ í•´ê²°í•´ 나가기 때문ì�´ë‹¤. 변수ë�„ 안쓴다.
- ì‹¤ì œë¡œ 로봇ì—� 프로그래ë°� 해서 ê·¸ 로봇ì�´ 현실ì—�서 ìž�ì‹ ì�´ 프로그래ë°� 하는ë�°ë¡œ 움ì§�ì�´ëŠ”ê²ƒì�„ ë³´ë©´ ì •ë§� ì¢‹ê² ì§€ë§Œ 여건ì�´ 안ë�˜ëŠ” ë§Œí�¼ -_-; 화면으로나마 ê·¸ 로봇ì�´ 움ì§�ì�´ëŠ” 것ì�„ 보면서 프로그래ë°� í•´ë³¼ 수 있다. 여기ì—�서 작성하는 코드들ì�´ 무슨 쓸모가 있ì�„까 싶기ë�„ í•˜ê² ì§€ë§Œ, 추후ì—� ì‹¤ì œ 로봇ì�˜ ë�™ìž‘ì�„ 프로그래ë°�해서 넣는다면 여기서 ì“°ì�´ëŠ” ë°©ì‹�ê³¼ 비슷하게 ë„£ì�„것ì�´ë‹¤.(하드웨어ì �으로 복잡한것ì�„ ëª…ë ¹ì–´ë¡œ ì¶”ìƒ�í™” 시킨다ì�Œì—� ê·¸ ëª…ë ¹ì–´ì�„ ì �ì ˆí•˜ê²Œ 복합ì �으로 사용하여 ì›�하는 í–‰ë�™ì�„ 로봇ì�´ 하게 만드는 ì‹�으로..) 즉 ë§�그대로 로봇 프로그래ë°�ì�„ ê°„ì ‘ì �으로나 í•´ë³¼ 수 있다.
3.1. 규칙 1 ¶
- 컴퓨터 프로그래ë°�ì�„ ì�µížˆëŠ” 것ì�€ 악기를 ì�µížˆëŠ” 것과 비슷하다. ë‹¹ì‹ ì�€ 그것ì—� 관해 단순히 ì�½ê¸° ë§�ê³ í•´ë´�야 한다.
4.1. 로봇 한번 움ì§�ì—¬ 볼까? ¶
- ì°½ì—�서 Robot: Code and Learn íƒì�„ ì„ íƒ�한다.
- 왼쪽 코드 쓰는 화면� 아래와 같� 코드를 넣어 본다.
~cpp move() turn_off()
- 그후 화면ì—� Mp3 Play 버튼 비슷하게 ìƒ�긴 버튼ì�„ í�´ë¦í•œë‹¤.
- ì €ìž¥í•˜ë�¼ëŠ” ì°½ì�´ 나오면 test ë�¼ê³ ë„£ê³ ì €ìž¥í•œë‹¤.
- ê·¸ë¦¬ê³ ë‹¤ì‹œ play 버튼ì�„ 누른다.
4.1.1. 키보드로 로봇 움ì§�ì�´ê¸° ¶
- 화면ì�˜ 로봇ì�„ í�´ë¦í•œë‹¤.
- 왼쪽 방향 키보드를 누르면 방향� 바�다.
- 위쪽 방향 키보드를 누르면 앞으로 ��한다.
4.2. 왼쪽으로 함 ë�Œì•„ 볼까? ¶
- 아래와 같� 코드를 넣어 본다.
~cpp move() turn_left() move() turn_off()
- 한칸 앞으로 간다ì�Œì—� 왼쪽으로 ë�Œê³ 나서 한칸 앞으로 ê°€ê³ ë‚˜ì„œ ì •ì§€í•˜ëŠ”ê²ƒì�„ ë³¼ 수 있다.
4.2.1. 연습 ¶
- 로봇� 길� 2� 사�형� 그리면서 반시계 방향으로 �는것� 만들어 보�.
- 로봇� 아래 그림과 같� 움��게 해본다.
4.3. ì‚�ì‚�(beeper) 옮기기 ¶
- beeper를 옮겨 보�.
- beeper를 드는 ëª…ë ¹ì–´ : pick_beeper()
- beeper를 ë‚´ë ¤ 놓는 ëª…ë ¹ì–´ : put_beeper()
- beepers1.wld 파�� 연다.
- 아래 그림과 같� 하는 코드를 짜본다.
4.4. 디버깅 방법? ¶
- RUR-PLE�서� 디버깅� 한다.
- Play버튼 옆ì—� Play 모양과 작대기 하나 있는것ì�€ step into와 비슷한 ì—í• ì�„ 한다. ëª…ë ¹ì–´ê°€ 하나씩 실행ë�œë‹¤. 현재 실행ë�˜ê³ 있는 ëª…ë ¹ì–´ëŠ” 코드 부분ì—�서 회색으로 highlighting ë�œë‹¤.
- Play버튼ì�„ í�´ë¦í•˜ê³ 나서 로봇ì�´ 움ì§�ì�´ê³ 있는 ë�„중ì—� ìž�ì‹ ì�´ ì›�하는 순간ì—� step into 버튼(play 버튼 옆ì—� 있는)ì�„ í�´ë¦í•˜ë©´ ê·¸ 순간부터 ëª…ë ¹ì–´ê°€ 하나 하나씩 실행ë�œë‹¤.
- step into 옆� 있는 버튼� �시 중지 버튼
- ê·¸ 옆ì—� 있는 빨간 버튼ì�€ ì™„ì „ 종료 버튼
4.5. ë²½ 만들어 ë³´ìž�~! ¶
- 버튼들 중ì—�서 ë²½ 처럼 ìƒ�긴 버튼ì�„ í�´ë¦í•œë‹¤. 그럼 아래 그림과 ê°™ì�€ 화면ì�´ 나온다. 여기서 í�´ë¦! í�´ë¦~! 해서 벽들ì�„ 만들 수 있다.
4.5.1. 연습 ¶
- 아래 그림과 ê°™ì�´ 로봇ì�´ ì‹ ë¬¸ë°°ë‹¬ 하게 함 코드를 작성해보ìž�
- 아래와 같� 지��서 1 모�를 수확하는 코드를 작성해 보�.
4.6. 중복 피하기 ¶
- 아래와 ê°™ì�´ def 를ì�¨ì„œ 함수를 ì •ì�˜í• 수 있다.
- repeat ëª…ë ¹ì–´ë¥¼ ì�¨ì„œ 여러번 수행해야 하는 함수(ëª…ë ¹ì–´ í�¬í•¨)ì�„ 한번ì—� ë°©ë³µ 횟수만 ì§€ì •í•´ì„œ ì‚¬ìš©í• ìˆ˜ 있다.
~cpp
def turn_right():
repeat(turn_left, 3)
- ë²½ 만들기 연습ì—�서 한 코드들ì�„ 함수화 해서 중복 ì œê±°ë¥¼ 한다.
4.7. if 문 사용 ¶
- next_to_a_beeper() : beeper가 현재 로봇� �리� 있으면 true, 없으면 false를 반환한다.
~cpp
if next_to_a_beeper():
pick_beeper()
- 위ì�˜ if문과 함수 ì •ì�˜, repeat를 사용하여 아래 화면과 ê°™ì�€ ìƒ�황ì�„ 처리한다.
4.7.1. else 문 사용 ¶
- front_is_clear() : 로봇앞� 벽� 없으면 true, 있으면 false
- left_is_clear() : 로봇� 왼쪽� 벽� 있는지 검사
- right_is_clear() : 로봇� 오른쪽� 벽� 있는지 검사
- else 문� 아래 코드처럼 쓴다.
~cpp
def move_or_turn():
if front_is_clear():
move()
else:
turn_left()
- 아그래 그림처럼 로봇� 방안� 한바퀴�게 해보�. 방 �기� 따�서 반복 횟수를 다르게 해줘야 한다. �기가 5�면 5*4=20 �런�으로..
4.8. not ¶
- not� 아래와 같� �으로 사용한다.
~cpp
if not next_to_beeper():
move()
else:
turn_off()
4.8.1. 연습 ¶
- 아래 그림처럼 ë§Œë“ ë‹¤.
- ë¬¸ì œì—�서 아래와 ê°™ì�€ 소스를 ì°¸ê³ í•˜ë�¼ê³ 한다. ì €ëŠ” 좀 다르게 했습니다. ìš°ì„ ì°¸ê³ ëŠ” í–ˆê³ ..
~cpp
# introducing vocabulary related to the problem
next_to_a_carrot = next_to_a_beeper
plant_carrot = put_beeper
pick_carrot = pick_beeper
def one_carrot_only():
if not next_to_a_carrot():
plant_carrot() # replace missing seed
else:
pick_carrot()
if not next_to_a_carrot(): # oops!
plant_carrot() # we had removed the only one
4.9. while ¶
- 아래와 같� �으로 사용한다.
~cpp
next_to_a_carrot = next_to_a_beeper
plant_carrot = put_beeper
pick_carrot = pick_beeper
def one_carrot_only():
while next_to_a_carrot():
pick_carrot() # pick them all!
plant_carrot() # replant only one
- harvest3.wld 파�� 연다.
- while문ì�„ 사용하여 중복ë�œ 씨앗ì�˜ 개수가 2 ì�´ìƒ�ì�¸ ìž„ì�˜ì�˜ 개수ì�¼ 경우ì—�ë�„ 처리 가능하게 위 소스를 ìˆ˜ì •í•œë‹¤.
4.10. Amazing Part ¶
- ì •ë§� ìœ ì�µí•œ ë‚´ìš©ì�´ë‹¤. 주어진 간단한 몇가지 ìƒ�황ì�„ 해결하면 놀ë�¼ìš´ 기능ì�´ ë�˜ëŠ”ê²ƒì�„ ë³¼ 수 있다.
- sorting ë¬¸ì œë¥¼ í’€ê³ ë‚˜ì„œ 시간 남ì�€ ë¶„ì�€ 해보시길. 러플 Amazing 설명
4.11. Sorting ¶
- sort0_1.wld 파�� 연다.
- 주어진 ì‚�ì‚�들ì�„ 그림처럼 오름차순으로 로봇ì�´ ì •ë ¬í•˜ê²Œ 만들면 ë�œë‹¤.
- 아래는 간단하게 2ê°œì�˜ columnì�˜ 경우 ì •ë ¬í•œ 모습ì�´ë‹¤.
- 다�� sort0_2.wld 파�� 연다.
- 아래 그림과 ê°™ì�´ ì›�래 ì •ë ¬ë�˜ì–´ 있는 경우ì—�ë�„ ì œëŒ€ë¡œ ìž‘ë�™ë�˜ëŠ”ì§€ 테스트 해본다.
- sort1 파�� 연다.
- 아래 그림과 같� 좀� 복잡한 여러개� column �서� 작�해야 한다.
- sort2 는 추후 공개
5. 경품 ¶
- sort1, sort2 ë§µì�„ 가장 ë¨¼ì € 모ë‘� 오름차순으로 ì •ë ¬í•˜ëŠ” ë¶„ì—�게 ë�°ë¸”ìŠ¤ìº í”„/2005/RUR-PLE/경품ì�„ 드립니다.
- 05 조현태 êµ°ì�´ 가장 ë¨¼ì € sortingì�„ 해결하여 경품ì�„ 탔습니다. ì�´í›„ 01 ê¹€ì •í˜„ ì�´ sort2 ë§µì—� 대해서 해결하였지만 sort1ì—� 대해서는 부분ì �으로 해결하였습니다.
ë�°ë¸”ìŠ¤ìº í”„2005/RUR_PLE/조현태





























