Karel 개요, 분석 및 확장

Retired DISLab
Swpark (토론 | 기여) 사용자의 2014년 1월 25일 (토) 23:50 버전
(비교) ← 이전 판 | 현재 판 (비교) | 다음 판 → (비교)
이동: 둘러보기, 찾기

목차

Karel the Robot

대학에 처음 입학하여 프로그래밍을 배우면 기존의 방법들과 다른 접근법을 사용하므로 많은 학생들이 어려움을 느낀다. 대입문, 반복문, 조건문과 같은 기본 문법들을 배우지만 이것이 어떤 의미인지를 처음 배울때 정확하게 이해하는 것이 어려운 학생들이 많다. 이러한 어려움을 극복하기 위하여 Karel이라 불리는 로보트를 조종하는 프로그램을 작성한다. 반복문을 통해서 로보트를 이동하고, 조건문을 이용하여 상태에 적합한 동작을 하도록 한다.

아래 글을 읽고 Karel을 조작해보자.

  • Java disassembler (JAD)
    C:> FOR %i IN (*.class) DO jad %i
    C:> ren *.jad *.java
  • JAD로 디스어셈블하면 JVM INSTR monitorenter 라는 부분이 나오는데 이는 아래와 같이 해석함
public void paint(Graphics g) {
    if (offScrImage == null)
        break MISSING_BLOCK_LABEL_36;
    Image image = offScrImage;
    image;
    JVM INSTR monitorenter ;
    g.drawImage(offScrImage, 0, 0, this);
    image;
    JVM INSTR monitorexit ;
    break MISSING_BLOCK_LABEL_36;
    Exception exception;
    exception;
    image;
    JVM INSTR monitorexit ;
    throw exception;
}
public void paint(Graphics g) {
    if (offScrImage == null)
        return;
    synchronized (offScrImage) {
        g.drawImage(offScrImage, 0, 0, this);
    }
}

Examples

Karel 설치

Karel의 main 메소드 작성법

import stanford.karel.Karel;
 
public class BeeperPickingKarel extends Karel {
    public void run() {
        move();
    }
 
    public static void main(String[] args) {
        String[] newArgs = new String[args.length + 1];
        System.arraycopy(args, 0, newArgs, 0, args.length);
        newArgs[args.length] = "code=" + new SecurityManager() {
            public String className() {
                return this.getClassContext()[1].getCanonicalName();
            }
        }.className();
        Karel.main(newArgs);
    }	
}

Karel's World

Karel Object

Karel 객체지향 프로그래밍

개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기