목록All Posts (357)
'분류 전체보기' 카테고리의 글 목록 (3 Page)
잘 지내셨나요? 저번 주 꽤 어려운 프로그래밍 테크닉을 많이 다뤄서 기둥 수리 과제에서 스타일보다 기능성에 집중하라고 조언드렸습니다. (기억을 상기시켜드리기 위해 다시 설명드리자면 "코드가 원하는 작동을 하는가"가 기능성, "코드를 남들이 봐도 읽고 이해하기 쉬운가"가 스타일입니다). 하지만 어렵고 복잡한 코드일수록 스타일의 중요성은 높은 법이죠. 이번 글에서는 코드를 읽기 쉽게 도와주는 두가지 테크닉 "인덴팅"과 "코멘팅"에 대해 배워보겠습니다. 위의 두가지 코드는 동일한 기능을 수행합니다. 컴파일 (검은색 달리는 사람 아이콘) 버튼을 눌러도 둘 다 완벽히 작동하죠. 하지만 오른쪽의 코드는 두번째 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();"라고 부르도록 하죠. 이렇..
스탠포드 카렐의 명령어(메소드)와 조건들을 정리한 레퍼런스 시트입니다. 카렐 명령어 슈퍼카렐 명령어 카렐 조건들
첫 프로그램을 작성할 준비가 되셨나요? 프로그래밍은 자기가 직접 쓴 코드가 작동되는걸 보는 재미로 하는 겁니다. 그러니 바로 시작해보죠! 신문 가져오기 과제 아침이 밝아오고 카렐이 집 구석에서 일어났습니다. 오늘은 어떤 소식이 있을까? 신문을 읽고 싶은데 신문은 집 현관 앞에 놓여있네요. 여러분의 과제는 비퍼로 표현된 신문을 카렐이 주어올 수 있도록 프로그램 (명령들)을 적어주는 것입니다. 집 왼쪽 위(북서쪽)에 있는 카렐이 어떻게 집 오른쪽 (동쪽)에 있는 신문을 주어올 수 있을까요? 프로그래머 방식 접근법 프로그래머는 프로그래밍을 사용해 문제를 해결하는 사람입니다. 효과적인 프로그램을 적는 프로그래머는 한번에 문제 전체를 해결하는 것이 아니라, 문제의 각 부분을 해결하는 작은 프로그램들을 하나로 모아..
아직 스탠포드 버전 이클립스를 컴퓨터에 설치하지 않았거나, 카렐을 이클립스에 불러오지 않았다면 이 글을 먼저 따라하고 와주세요. 카렐은 1970년대 스탠포드 대학교의 학생이었던 Rich Pattis가 입문자들에게 프로그래밍을 쉽게 가르치기 위해 개발한 프로그램입니다. 카렐 세계의 구조 카렐을 만나볼까요? 카렐은 2D 세계에 사는 로봇입니다. 카렐이 사는 세계는 세로로 (위에서 아래로) 이어지는 애브뉴, 그리고 가로로 (왼쪽에서 오른쪽으로) 이어지는 스트리트로 이루어져 있습니다. 스트리트와 애브뉴가 만나는 칸은 코너라고 부릅니다. 위에 있는 카렐의 세계에는 몇개의 애브뉴, 스트리트, 그리고 코너가 있는지 한번 세보시겠어요? 정답은 애브뉴 5개, 스트리트 3개, 그리고 코너 15개 입니다. 카렐의 세계에는 ..
"스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음" 시리즈에서는 Eclipse를 사용해 프로그래밍을 할 것입니다. Eclipse는 누구나 사용할 수 있는 무료 개발 환경 (IDE) 에디터지만, 스탠포드 대학교에서 CS106A에서 사용하기 위해 만든 특수한 버전의 Eclipse가 있으니 스탠포드 버전 Eclipse를 설치해주세요. 아래 순서대로 따라하시면 됩니다. (참고로 어느 컴퓨터 운영체제를 사용하고 계신지 모르신다면 윈도우를 사용하고 계실 겁니다.) 1. (윈도우를 사용 중이시라면) 옛 버전 자바를 제거해주세요. 시작 -> 제어판 -> 프로그램과 기능들로 들어가세요. "Java/J2SE Runtime Environment", "Java SDK", 혹은 "Java Update"라고 적힌 것들을 전부 제거해주..
요즘엔 관련된 일을 하는 직장인이나 IT에 관심이 많은 학생이 아니여도 일상과 뉴스에서 "스마트폰 어플리케이션 (앱)"이나 "인공지능"같은 단어를 자주 접할 수 있습니다. 특히나 고등학생, 중학생, 심지어는 초등학생을 자녀로 둔 학부모분들도 대학 입시에 도움이 되기를 바라는 마음에서, 혹은 아이들이 관심을 가져서, "프로그래밍" 혹은 "코딩"에 대해 많이 찾아보십니다. 이유가 무엇이 되었든 프로그래밍을 배우는건 누구에게나 큰 도움이 될 수 있습니다. 프로그래머가 되지 않아도 프로그래밍에 대한 기본적인 이해는 소프트웨어로 인해 변할 다양한 산업들에서 성공하는데 도움이 되기 때문이죠. 실리콘밸리의 중심에 위치한 스탠포드 대학교에는 컴퓨터와 전혀 관련이 없는 전공 학생들도 꼭 들어보는 수업이 있습니다. 바로 ..