다음 소스 코드는 80컬럼 컨솔에 19단표 출력하기 예제 (2) for Groovy 에 올려진 Groovy 소스 코드를 Io 소스 코드로 고친 것이다. C, C++, Java, Groovy 언어에서는 블럭을 둘러싸는 기호로 중괄호 열기 기호"{"와 중괄호 닫기 기호"}" 를 많이 사용하였지만, Io 언어에서는 반복구문, 제어구문까지 모두 메소드(함수)이므로, 함수의 괄호 열기 기호 "("와 괄호 닫기 기호")"를 많이 사용한다는 것을 잊지 말아야 한다.
Groovy 언어에서 변수 처음 사용 시에
def varName = value
처럼 def 예약어를 사용하듯이 Io에서는
varName := value
처럼 (등호 "=" 대신) := 를 사용한다. 일단 변수가 생성되고 나면 나중에는 그 변수가 아무 타입의 값이나 참조해도 된다.
a := "string" // 스트링 타입 참조
a = 200 // 숫자 타입 참조
Io 언어의 for 반복문 예
for(i, 1, 19, i println)
Io 언어의 if ... 조건문 예
i := 20
if(i > 0) then((i .. " is positive.") println)
Io 언어의 if ... else ... 조건문 예
i := -30
if(i > 0) then((i .. " is positive.") println) else((i .. " is not positive.") println)
또는
i := -30
if(i > 0) then(
(i .. " is positive.") println
) else(
(i .. " is not positive.") printl
)
Io 언어의 if ... elseif ... else ... 조건문 예
i := 0
if(i > 0) then(
(i .. " is positive.") println
) elseif(i < 0) then(
(i .. " is negative.") println
) else(
(i .. " is zero.") println
)
* Io 소스에 한글이 포함된 경우 반드시 UTF-8 인코딩으로 저장해야 한다.
* 그렇지 않으면 에러기 난다.
* Ubuntu에서는 OS 자체에서 UTF-8을 기본으로 하고 있으므로,
* 한글 처리에 아무 문제가 없을 것이다.
- /*
- * Filename: testForFor.io
- *
- * Execute: io testForFor.io
- *
- * Date: 2008. 4. 7.
- */
- getDan := method(dan,
- t := list("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
- for (j, 0, 18,
- sa := "" .. dan
- if (sa size < 2) then (
- sa = " " .. sa
- )
- sb := "" .. (j + 1)
- if (sb size < 2) then (
- sb = " " .. sb
- )
- sval := "" .. (dan*(j + 1))
- if (sval size < 2) then (
- sval = " " .. sval
- ) elseif (sval size < 3) then (
- sval = " " .. sval
- )
- t atPut(j, sa .. " x " .. sb .. " = " .. sval )
- )
- t
- )
- // 19단표를 모두 80컬럼 컨솔에 출력한다.
- printAllNineteenDan := method(
- arr := List clone
- for (i, 2, 19,
- arr append( getDan(i) )
- )
- // 아래는 배열 대신 수정불가(immutable) 리스트를 사용하는 Groovy 코드이다.
- d := list( 2, 7, 11, 16 ) // 각 줄단위 블럭의 첫단
- counter := list( 5, 4, 5, 4 ) // 각 줄단위 블럭에 속한 단의 개수
- lines := list("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
- for (k, 0, d size - 1,
- // 80 바이트 길이의 한 줄씩 완성
- for (i, 0, 18,
- lines atPut(i, arr at(d at(k) -2) at(i) )
- for (j, 1, counter at(k) - 1,
- lines atPut(i, lines at(i) .. " " .. arr at (d at(2) - 2 + j) at(i) )
- )
- )
- // 8-바이트 길이의 한 줄씩 출력
- for (i, 0, 18,
- lines at(i) println
- )
- "" println
- )
- )
- printAllNineteenDan()
실행> io testForFor.io
2 x 1 = 2 3 x 1 = 3 4 x 1 = 4 5 x 1 = 5 6 x 1 = 6 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 6 x 2 = 12 2 x 3 = 6 3 x 3 = 9 4 x 3 = 12 5 x 3 = 15 6 x 3 = 18 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20 6 x 4 = 24 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 6 x 5 = 30 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 2 x 10 = 20 3 x 10 = 30 4 x 10 = 40 5 x 10 = 50 6 x 10 = 60 2 x 11 = 22 3 x 11 = 33 4 x 11 = 44 5 x 11 = 55 6 x 11 = 66 2 x 12 = 24 3 x 12 = 36 4 x 12 = 48 5 x 12 = 60 6 x 12 = 72 2 x 13 = 26 3 x 13 = 39 4 x 13 = 52 5 x 13 = 65 6 x 13 = 78 2 x 14 = 28 3 x 14 = 42 4 x 14 = 56 5 x 14 = 70 6 x 14 = 84 2 x 15 = 30 3 x 15 = 45 4 x 15 = 60 5 x 15 = 75 6 x 15 = 90 2 x 16 = 32 3 x 16 = 48 4 x 16 = 64 5 x 16 = 80 6 x 16 = 96 2 x 17 = 34 3 x 17 = 51 4 x 17 = 68 5 x 17 = 85 6 x 17 = 102 2 x 18 = 36 3 x 18 = 54 4 x 18 = 72 5 x 18 = 90 6 x 18 = 108 2 x 19 = 38 3 x 19 = 57 4 x 19 = 76 5 x 19 = 95 6 x 19 = 114 7 x 1 = 7 8 x 1 = 8 9 x 1 = 9 10 x 1 = 10 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18 10 x 2 = 20 7 x 3 = 21 8 x 3 = 24 9 x 3 = 27 10 x 3 = 30 7 x 4 = 28 8 x 4 = 32 9 x 4 = 36 10 x 4 = 40 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45 10 x 5 = 50 7 x 6 = 42 8 x 6 = 48 9 x 6 = 54 10 x 6 = 60 7 x 7 = 49 8 x 7 = 56 9 x 7 = 63 10 x 7 = 70 7 x 8 = 56 8 x 8 = 64 9 x 8 = 72 10 x 8 = 80 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81 10 x 9 = 90 7 x 10 = 70 8 x 10 = 80 9 x 10 = 90 10 x 10 = 100 7 x 11 = 77 8 x 11 = 88 9 x 11 = 99 10 x 11 = 110 7 x 12 = 84 8 x 12 = 96 9 x 12 = 108 10 x 12 = 120 7 x 13 = 91 8 x 13 = 104 9 x 13 = 117 10 x 13 = 130 7 x 14 = 98 8 x 14 = 112 9 x 14 = 126 10 x 14 = 140 7 x 15 = 105 8 x 15 = 120 9 x 15 = 135 10 x 15 = 150 7 x 16 = 112 8 x 16 = 128 9 x 16 = 144 10 x 16 = 160 7 x 17 = 119 8 x 17 = 136 9 x 17 = 153 10 x 17 = 170 7 x 18 = 126 8 x 18 = 144 9 x 18 = 162 10 x 18 = 180 7 x 19 = 133 8 x 19 = 152 9 x 19 = 171 10 x 19 = 190 11 x 1 = 11 12 x 1 = 12 13 x 1 = 13 14 x 1 = 14 15 x 1 = 15 11 x 2 = 22 12 x 2 = 24 13 x 2 = 26 14 x 2 = 28 15 x 2 = 30 11 x 3 = 33 12 x 3 = 36 13 x 3 = 39 14 x 3 = 42 15 x 3 = 45 11 x 4 = 44 12 x 4 = 48 13 x 4 = 52 14 x 4 = 56 15 x 4 = 60 11 x 5 = 55 12 x 5 = 60 13 x 5 = 65 14 x 5 = 70 15 x 5 = 75 11 x 6 = 66 12 x 6 = 72 13 x 6 = 78 14 x 6 = 84 15 x 6 = 90 11 x 7 = 77 12 x 7 = 84 13 x 7 = 91 14 x 7 = 98 15 x 7 = 105 11 x 8 = 88 12 x 8 = 96 13 x 8 = 104 14 x 8 = 112 15 x 8 = 120 11 x 9 = 99 12 x 9 = 108 13 x 9 = 117 14 x 9 = 126 15 x 9 = 135 11 x 10 = 110 12 x 10 = 120 13 x 10 = 130 14 x 10 = 140 15 x 10 = 150 11 x 11 = 121 12 x 11 = 132 13 x 11 = 143 14 x 11 = 154 15 x 11 = 165 11 x 12 = 132 12 x 12 = 144 13 x 12 = 156 14 x 12 = 168 15 x 12 = 180 11 x 13 = 143 12 x 13 = 156 13 x 13 = 169 14 x 13 = 182 15 x 13 = 195 11 x 14 = 154 12 x 14 = 168 13 x 14 = 182 14 x 14 = 196 15 x 14 = 210 11 x 15 = 165 12 x 15 = 180 13 x 15 = 195 14 x 15 = 210 15 x 15 = 225 11 x 16 = 176 12 x 16 = 192 13 x 16 = 208 14 x 16 = 224 15 x 16 = 240 11 x 17 = 187 12 x 17 = 204 13 x 17 = 221 14 x 17 = 238 15 x 17 = 255 11 x 18 = 198 12 x 18 = 216 13 x 18 = 234 14 x 18 = 252 15 x 18 = 270 11 x 19 = 209 12 x 19 = 228 13 x 19 = 247 14 x 19 = 266 15 x 19 = 285 16 x 1 = 16 17 x 1 = 17 18 x 1 = 18 19 x 1 = 19 16 x 2 = 32 17 x 2 = 34 18 x 2 = 36 19 x 2 = 38 16 x 3 = 48 17 x 3 = 51 18 x 3 = 54 19 x 3 = 57 16 x 4 = 64 17 x 4 = 68 18 x 4 = 72 19 x 4 = 76 16 x 5 = 80 17 x 5 = 85 18 x 5 = 90 19 x 5 = 95 16 x 6 = 96 17 x 6 = 102 18 x 6 = 108 19 x 6 = 114 16 x 7 = 112 17 x 7 = 119 18 x 7 = 126 19 x 7 = 133 16 x 8 = 128 17 x 8 = 136 18 x 8 = 144 19 x 8 = 152 16 x 9 = 144 17 x 9 = 153 18 x 9 = 162 19 x 9 = 171 16 x 10 = 160 17 x 10 = 170 18 x 10 = 180 19 x 10 = 190 16 x 11 = 176 17 x 11 = 187 18 x 11 = 198 19 x 11 = 209 16 x 12 = 192 17 x 12 = 204 18 x 12 = 216 19 x 12 = 228 16 x 13 = 208 17 x 13 = 221 18 x 13 = 234 19 x 13 = 247 16 x 14 = 224 17 x 14 = 238 18 x 14 = 252 19 x 14 = 266 16 x 15 = 240 17 x 15 = 255 18 x 15 = 270 19 x 15 = 285 16 x 16 = 256 17 x 16 = 272 18 x 16 = 288 19 x 16 = 304 16 x 17 = 272 17 x 17 = 289 18 x 17 = 306 19 x 17 = 323 16 x 18 = 288 17 x 18 = 306 18 x 18 = 324 19 x 18 = 342 16 x 19 = 304 17 x 19 = 323 18 x 19 = 342 19 x 19 = 361

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
'프로그래밍 > Io' 카테고리의 다른 글
현재 시각 알아내기 for Io (0) | 2008.04.07 |
---|---|
조립제법(Horner의 방법) 예제 for Io (0) | 2008.04.07 |
(최대공약수 구하기) while ... 반복문 예제 for Io (0) | 2008.04.06 |
구구단 출력 예제 for Io (0) | 2008.04.06 |
if ... else ... 예제 for Io (0) | 2008.04.06 |