← SEARCHABLE ARCHIVE
Nand2Tetris · 2026-05-21

Nand2Tetris — 9장

Jack 고급 언어

INTERACTIVE READING MODE →

// Main.jack
// 간단한 Jack 프로그램
// 동작:
// 키보드 입력을 기다리다가 아무 키나 누르면 숫자를 1씩 증가해서 출력함
// q를 누르면 프로그램을 종료함

class Main {
    function void main() {
        var int count;
        var char key;

        let count = 0;

        do Output.printString("Nand2Tetris Jack Test");
        do Output.println();
        do Output.printString("Press any key. q is quit.");
        do Output.println();

        while (true) {
            let key = Keyboard.keyPressed();

            if (key = 113) {
                return;
            }

            if (~(key = 0)) {
                let count = count + 1;
                do Output.printString("count = ");
                do Output.printInt(count);
                do Output.println();

                while (~(Keyboard.keyPressed() = 0)) {
                    do Sys.wait(1);
                }
            }

            do Sys.wait(1);
        }

        return;
    }
}
// Counter.jack
// 필드 값을 가진 class 예시
// constructor에서 객체를 만들고 method에서 this 값을 변경함

class Counter {
    field int value;

    constructor Counter new() {
        let value = 0;
        return this;
    }

    method void inc() {
        let value = value + 1;
        return;
    }

    method int get() {
        return value;
    }

    method void dispose() {
        do Memory.deAlloc(this);
        return;
    }
}