아래의 소스 코드는 Groovy 용으로 작성돠었던 소스파일 testWhile.groovy를 Io용으로 고친 것이다.
* 소스에 한글이 포함된 경우 반드시 UTF-8 인코딩으로 저장해야 한다. 그렇지 않으면 에러기 난다.
* (Ubuntu에서는 OS 자체에서 UTF-8 인코딩을 기본으로 하고 있으므로, 한글 처리에 아무 문제가 없을 것이다.)
소스 파일명: testWhile.io
- # Filename: testWhile.io
- #
- # Purpose: Example using the while loop syntax
- # while ....
- #
- # Execute: io testWhile.io -200 300
- // 사용법 표시
- printUsage := method (
- "Using: groovy testWhile.groovy [integer1] [integer2]" println
- "This finds the greatest common divisor of the given two integers." println
- )
- if (args size < 3) then (
- printUsage()
- exit(1)
- )
- val1 := args at(1) asNumber
- val2 := args at(2) asNumber
- ////////////////////////////////////////////////
- // 명령행 인자의 두 스트링을 가져와서
- // 긴정수(long) 타입으로 변환하여
- // 변수 val1과 val2에 저장한다.
- a := val1 abs
- b := val2 abs
- // a는 |val1|, |val2| 중 큰 값
- if (a < b) then (
- a := val2 abs
- b := val1 abs
- )
- if (b == 0) then (
- "GCD(#{val1}, #{val2}) = #{a}" interpolate println
- exit(0)
- )
- ////////////////////////////////////////
- // Euclidean 알고리즘의 시작
- //
- // a를 b로 나누어 몫은 q에, 나머지는 r에 저장
- q := (a / b) floor
- r := a % b
- ////////////////////////////////////////
- // Euclidean 알고리즘의 반복 (나머지 r이 0이 될 때 까지)
- while (r > 0,
- a := b
- b := r
- q := (a / b) floor
- r := a % b
- )
- // 나머지가 0이면 그 때 나눈 수(제수) b가 최대공약수(GCD)이다.
- gcd := b
- // 최대공약수(GCD)를 출력한다.
- "GCD(#{val1}, #{val2}) = #{gcd}" interpolate println
실행> io testWhile.io
Using: io testWhile.io [integer1] [integer2]
This finds the greatest common divisor of the given two integers.
실행> io testWhile.io -50, 200
GCD(-50, 200) = 50
실행> io testWhile.io 50, -30
GCD(50, -30) = 10
실행> io testWhile.io 0. 30
GCD(0, 30) = 30
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
'프로그래밍 > Io' 카테고리의 다른 글
조립제법(Horner의 방법) 예제 for Io (0) | 2008.04.07 |
---|---|
80컬럼 컨솔에 19단표 출력하기 예제 for Io (0) | 2008.04.07 |
구구단 출력 예제 for Io (0) | 2008.04.06 |
if ... else ... 예제 for Io (0) | 2008.04.06 |
Hello 예제 for Io (0) | 2008.04.06 |