KRONNA.COM
잘 지내셨나요? 저번 주 꽤 어려운 프로그래밍 테크닉을 많이 다뤄서 기둥 수리 과제에서 스타일보다 기능성에 집중하라고 조언드렸습니다. (기억을 상기시켜드리기 위해 다시 설명드리자면 "코드가 원하는 작동을 하는가"가 기능성, "코드를 남들이 봐도 읽고 이해하기 쉬운가"가 스타일입니다). 하지만 어렵고 복잡한 코드일수록 스타일의 중요성은 높은 법이죠. 이번 글에서는 코드를 읽기 쉽게 도와주는 두가지 테크닉 "인덴팅"과 "코멘팅"에 대해 배워보겠습니다. 위의 두가지 코드는 동일한 기능을 수행합니다. 컴파일 (검은색 달리는 사람 아이콘) 버튼을 눌러도 둘 다 완벽히 작동하죠. 하지만 오른쪽의 코드는 두번째 while 루프와 if문이 첫번째 while 루프 안에 있다는 것을 한 눈에 쉽게 볼 수 있게 해줍니다. ..
다시 한번 카렐과 함께 문제를 풀어볼 준비가 되셨나요? 이번 과제는 신문을 가져오는것 과제보다 훨씬 복잡하지만 그만큼 더 재밌답니다. 같이 바로 시작해봐요! 스탠포드의 중심에 위치한 "메인쿼드"에는 이런 기둥들이 세워져 있답니다. 하지만 1989년, 스탠포드에 지진이 일어나서 이 기둥들이 부분적으로 파손되었습니다. 이대로 놔둔다면 학생들이 안전하지 않겠죠? 여러분이 얼른 카렐을 이용해서 이 기둥들을 수리해주세요! 이클립스를 실행하고 오른쪽 사이드바에서 src 폴더 -> (default package) -> StoneMason.java를 열면 "기둥 수리" 과제를 시작하실 수 있습니다. 카렐 세계에서 스탠포드의 메인쿼드는 이렇게 표현되어 있습니다. 비퍼로 만들어진 기둥들이 천장을 지지하고 있지요. 여러분은..
아무리 먼 길도 한 발짝씩 걸어가면 언젠가는 도달할 수 있습니다. 이걸 프로그래머의 관점에서 해석하자면 "한발짝 걷는다"는 명령을 계속 반복하면 언젠가는 문제를 해결할 수 있다고도 말할 수 있죠. "한 발짝 걷는다", "한 발짝 걷는다", "한 발짝 걷는다"처럼 어색하게 여러번 같은 명령을 내리는 것보다 "한 발짝 걷는다"라는 명령은 한번만 적고 얼만큼 반복할 것인지를 적는 것이 훨씬 간결합니다. 그리고 그게 바로 반복문이 존재하는 이유입니다. 우리는 오늘 두가지 반복문을 배울 예정인데요, 첫번째 반복문은 바로 "for loop (for 루프)"입니다. for loop는 보기에 복잡해 보이지만 사실 한 부분만 수정하면 되기 때문에 걱정하실 필요는 없어요. for 루프는 이렇게 작성합니다: for (int..
* 이번 글부터 SuperKarel을 사용하셔도 됩니다. 여러분의 카렐 코드에서 public void run() {} 메소드 위에 있는 public class CollectNewspaper extends 다음에 있는 "Karel"을 "SuperKarel"으로 바꾸시면 turnRight와 turnAround를 새로 작성하지 않으셔도 괜찮습니다. 이번 강의에서는 주어진 상황에서만 코드를 실행하도록 하는 "if문 (조건문)"을 배워보겠습니다. 벽이 앞에 있는데도 카렐이 move();를 실행하면 카렐은 고장나고 말죠. 이걸 방지하기 위해서 카렐이 move를 실행하기 전 앞이 벽으로 막혀 있지 않다는걸 확인한 후 그 상황에서만 move();를 실행하면 안전하지 않을까요? if문은 그걸 가능하게 해줍니다. if문은..
카렐은 딱 네가지 기능만 할 줄 알지만, 여러분이 그 네가지 기능을 어떤 순서로 몇번이나 반복하는가에 따라 다양한 기능을 수행할 수 있죠. 마찬가지로 여러분의 컴퓨터에 있는 마법같은 프로그램들도 정말 간단한 기능들을 창의적으로 조합한 것 뿐입니다. 네가지 기능으로도 카렐은 많은걸 할 수 있지만, 카렐이 다른 기능을 배울 수 있다면 신문을 가져오는 과제가 훨씬 더 간단하지 않았을까요? 예를 들어 왼쪽으로 3번 도는 대신, 바로 오른쪽으로 도는 기능을 안다면 말이죠. 이번 강의에선 카렐에게 새로운 기능을 가르치는 방법을 배워보겠습니다. 카렐에게 오른쪽으로 회전하는 기능을 가르쳐봅시다. 왼쪽으로 도는 기능이 "turnLeft();"니까 오른쪽으로 도는 기능은 "turnRight();"라고 부르도록 하죠. 이렇..