아래의 소스 코드는 Groovy로도 실행되는 Java 용 소스파일 TestWhileLoop.java를 Groovy 용으로 Groovy 언어 답게 고친 것이다.
소스 파일명: testWhile.groovy
- /*
- * Filename: testWhile.groovy
- *
- * Purpose: Example using the while loop syntax
- * while ....
- *
- * Execute: groovy testWhile.groovy -200 300
- *
- */
- // java.lang.Math 클래스를 명시적으로 import하는 구문이 없어도
- // Groovy는 이 클래스를 자동으로 import한다.
- // 사용법 표시
- def printUsage() {
- println 'Using: groovy testWhile.groovy [integer1] [integer2]'
- println 'This finds the greatest common divisor of the given two integers.'
- }
- if (args.length != 2) {
- printUsage()
- System.exit(1)
- }
- def val1 = args[0].toLong()
- def val2 = args[1].toLong()
- def a, b, q, r, gcd
- ////////////////////////////////////////////////
- // 명령행 인자의 두 스트링을 가져와서
- // 긴정수(long) 타입으로 변환하여
- // 변수 val1과 val2에 저장한다.
- a = val1.abs()
- b = val2.abs()
- // a는 |val1|, |val2| 중 큰 값
- if (a < b) {
- a = val2.abs()
- b = val1.abs()
- }
- if (b == 0L) {
- println "GCD($val1, $val2) = $a"
- System.exit(0)
- }
- ////////////////////////////////////////
- // Euclidean 알고리즘의 시작
- //
- // a를 b로 나누어 몫은 q에, 나머지는 r에 저장
- q = a / b
- r = a % b
- ////////////////////////////////////////
- // Euclidean 알고리즘의 반복 (나머지 r이 0이 될 때 까지)
- while (r != 0L) {
- a = b
- b = r
- q = a / b
- r = a % b
- }
- // 나머지가 0이면 그 때 나눈 수(제수) b가 최대공약수(GCD)이다.
- gcd = b
- // 최대공약수(GCD)를 출력한다.
- println "GCD($val1, $val2) = $gcd"
실행> groovy testWhile.groovy
Using: groovy testWhile.groovy [integer1] [integer2]
This finds the greatest common divisor of the given two integers.
실행> groovy testWhile.groovy -50, 200
GCD(-50, 200) = 50
실행> groovy testWhile.groovy 50, -30
GCD(50, -30) = 10
실행> groovy testWhile.groovy 0. 30
GCD(0, 30) = 30
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
'프로그래밍 > Groovy' 카테고리의 다른 글
80컬럼 컨솔에 19단표 출력하기 예제 (1) for Groovy (0) | 2008.03.03 |
---|---|
Groovy 언어의 특징을 잘 나타내는 몇 가지 예제들 (0) | 2008.02.21 |
if...else... 조건문 사용 예제 for Groovy (0) | 2008.02.19 |
명령행 인자 처리 예제 for Groovy (0) | 2008.02.18 |
구구단 출력 예제 for Groovy (0) | 2008.02.17 |