스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (3) - 카렐 만나기

스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (3) - 카렐 만나기 본문

스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (3) - 카렐 만나기

KRONNA 2016.06.24 10:02


아직 스탠포드 버전 이클립스를 컴퓨터에 설치하지 않았거나, 카렐을 이클립스에 불러오지 않았다면 이 글을 먼저 따라하고 와주세요.


카렐은 1970년대 스탠포드 대학교의 학생이었던 Rich Pattis가 입문자들에게 프로그래밍을 쉽게 가르치기 위해 개발한 프로그램입니다.


카렐 세계의 구조


카렐을 만나볼까요? 카렐은 2D 세계에 사는 로봇입니다. 카렐이 사는 세계는 세로로 (위에서 아래로) 이어지는 애브뉴, 그리고 가로로 (왼쪽에서 오른쪽으로) 이어지는 스트리트로 이루어져 있습니다. 스트리트애브뉴가 만나는 칸은 코너라고 부릅니다. 위에 있는 카렐의 세계에는 몇개의 애브뉴, 스트리트, 그리고 코너가 있는지 한번 세보시겠어요? 


정답은 애브뉴 5개, 스트리트 3개, 그리고 코너 15개 입니다.





카렐의 세계에는 굵은 선으로 만들어진 "벽"과, 다이아몬드 모양으로 생긴 "비퍼"가 있습니다. 카렐은 벽을 뚫을 수 없는 로봇이라 벽 앞에서 벽을 바라보고 서있으면서 앞으로 전진하려고 하면 벽에 부딪혀 부서지게 됩니다. 비퍼는 카렐이 들고 다닐 수 있는 물건입니다. 바닥에 떨어진 비퍼 위에 서서 비퍼를 주울수도 있고, 미리 가지고 있는 비퍼를 빈 바닥에 내려놓을 수도 있습니다. 참고로 화면 오른쪽은 카렐의 동쪽, 화면 왼쪽은 카렐의 서쪽, 화면 아래쪽은 카렐의 남쪽, 화면 윗쪽은 카렐의 북쪽입니다.



카렐 세계 살펴보기


카렐이 사는 세계를 열어볼까요? 우선 카렐이 불러져와있는 이클립스에서 상단바에 있는 검은색 달리는 사람 모양 아이콘을 클릭해보세요. (잔상이 없는 아이콘은 현재 이클립스에 열려있는 java 파일 모두를 선택지로 보여주며, 잔상이 있는 아이콘은 마지막 열었던 java 파일을 바로 여는 기능입니다.) 성공적으로 열렸다면 카렐과 카렐이 사는 세계가 보일 겁니다. 그 왼쪽으로는 버튼 5가지가 있습니다.


Start Program: 카렐이 java 파일에 적은 명령들을 수행합니다. 지금은 적은게 없으니 클릭해도 아무 행동도 하지 않습니다.

Reset Program: 카렐의 세계를 초기로 되돌려 놓습니다. 초기 상태는 New World나 Edit World에서 수정 가능합니다.

Load World: 이미 만들어져있는 카렐 세계를 불러냅니다. 카렐 세계는 "파일이름.w"로 저장되어 있습니다. (여기서 "w"를 확장자라 부름).

New World: 새로운 카렐 세계를 만들 수 있습니다. 새로 만든 세계는 원하는이름.w로 저장하면 됩니다. w를 꼭 붙여주세요.

Edit World: 이미 있는 카렐 세계를 수정할 수 있습니다. 마찬가지로 원하는이름.w로 저장하면 됩니다. w를 꼭 붙여주세요.



카렐의 4가지 명령어


카렐은 딱 4가지 기능을 수행할 수 있습니다. 카렐에게 내리는 명령은 명령 이름 뒤에 (); 를 붙여주어야합니다. 명령을 자바에서는 "메소드"라고 부르며, 자바에서 단어 뒤에 ()를 붙이는건 그 단어가 메소드라는 의미입니다. 마지막으로 ; (세미콜론)은 한 줄의 명령이 끝났다는 의미입니다. 지금으로썬 ();의 설명을 외울 필요 없이 끝에 붙여야 한다는 것만 기억해주시면 되요!


move(); 무브는 카렐에게 "보고 있는 방향으로 한 칸 전진하라"는 명령입니다. 벽 앞에서 벽으로 전진하면 카렐이 부서지니 조심하세요!

turnLeft(); 턴레프트는 카렐에게 "보고 있는 방향에서 왼쪽으로 90도 회전하라"는 명령입니다. 

pickBeeper(); 픽비퍼는 카렐에게 "서있는 곳에 비퍼를 주우라"는 명령입니다. 비퍼가 없는 곳에서 픽비퍼를 시키면 고장나니 조심하세요!

putBeeper(); 풋비퍼는 카렐에게 "서있는 곳에 비퍼를 놓으라"는 명령입니다. 비퍼가 있는 곳에서 풋비퍼를 시키면 고장나니 조심하세요!


한번 연습삼아 카렐에게 명령을 시켜보세요. 이클립스 왼편에 src 폴더 안 (default package) 안에 있는 CollectNewspaper.java를 열고 "public void run() {"과 "}" 사이에 명령을 적으시면 됩니다. 예를 들어 아래처럼 명령을 적고 카렐 세계에서 Start Program을 누르면 카렐이 move(); 명령을 수행할 겁니다.


public void run() {

move();

}


카렐이 사는 곳과 카렐이 할 수 있는 행동들을 이제 배웠으니 이제 첫 프로그램을 쓰러 가볼까요? 다음 수업에선 카렐이 집 앞에 놓인 신문 (비퍼)를 주워오는 프로그램을 여러분이 직접 써볼 것입니다. 그리고 다음 수업이 끝났을 땐 "프로그래밍을 해보았다"고 자랑하실 수 있게 되는거죠. 그럼 다음 글에서 뵈요! ^^


Stanford CS106A 수업에 대한 모든 권리는 스탠포드 대학교가 가지고 있습니다. "스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음"은 스탠포드 대학교의 CS106A 수업을 남녀노소 누구나 쉽게 배울 수 있도록 각색하고 한국어로 번역한 내용이며, 본글에 대한 모든 권리도 스탠포드 대학교가 가지고 있습니다. CS106A 수업에 사용되는 교재인 Karel the Robot Learns Java와 The Art & Science of Java를 작성해주신 Eric Roberts 교수님과 CS106A 수업을 가르치고 계시며 해외로 수업 내용 반출을 허락해주신 Mehran Sahami 교수님 그리고 Marty Stepp 교수님께 감사드립니다.


스탠포드 대학교에서 컴퓨터 과학을 전공중인 박준원이라고 합니다. 질문은 junwonpk@stanford.edu로 보내주시면 24시간 내로 답변 드리겠습니다. 설명을 따라했는데도 똑같이 작동하지 않거나 설명에 이해하기 어려운 부분이 있으면 주저하지 말고 질문 보내주세요! ^^


0 Comments
댓글쓰기 폼