2012/06 20

대화형 모드의 진법(radix) 변환 예제 with Go

다음은 대화형 모드(interactive mode)에서 진법 변환(radix conversion)하는 Go 언어 소스 코드이다. 메뉴는 주메뉴 Command: (S)et radix, (A)bout, (Q)uit or E(x)it 와 부메뉴 SubCommand: 'main()' to goto Main menu, 'exit()' or 'quit()' to exit 로 구성되어 있으며, 진법 변환을 하는 핵심 함수 convertAtoI()와 convertItoA()의 소스가 자체 제작되어 포함되어 있다. 이를 이용하는 부분은 152~153째 줄에 있는 val = convertAtoI(s, srcRdx) ret = convertItoA(val, destRdx) 이다. 지원되는 진법은 2진법에서 36진법 까지이다..

프로그래밍/Go 2012.06.22

황금비율(golden ratio) 구하기 with Go

다음은 이차방정식 x^2 - x - 1 = 0 의 양의 근 즉 황금비율(golden ratio)을 구하는 Go 애플리케이션 소스이다. 황금비율을 구하는 비례방정식은 1 : x = x : (x+1) 이며, 이를 이차방정식으로 표현한 것이 x^2 - x - 1 = 0 이다. See: Golden ratio - Sajun.org * Go 프로그램 소스는 (한글이 주석에만 포함되어 있더러도) UTF-8 인코딩으로 저장해야 한다. /* * Filename: testGoldenRatio.go * 황금률(즉, 이차방정식 x^2 - x - 1 = 0 의 양의 근)을 계산한다. * * Execute: go run testGoldenRatio.go * * or * * Compile: go build testGoldenRa..

프로그래밍/Go 2012.06.20

Go 프로그램 언어로 긴 자리 정수 계산하기

아래의 소스 testBigInt.go 는 GMP 사용 예제 for C 의 testGMP.c 를 Go 언어 용으로 수정한 것이다. Go 언어는 (C 언어와 달리) 긴 자리 정수 타입을 빌트인 패키지로 내장하고 있다. 긴 자리 정수 타입을 사용하기 위해서는 (소스 파일의 선두에) "math/big" 패키지를 미리 임포트(수입)해야 한다. /* * Filename: testBigInt.go * * Compile: go build testBigInt.go * Execute: ./testBigInt * * or * * Execute without compiling: go run testBigInt.go * * Output: 2470450 */ package main import ( "fmt" "math/big" ..

프로그래밍/Go 2012.06.18

현재 시각 알아내기 with Go

현재 시각을 컨솔에 보여주는 간단한 애플리케이션의 Go 언어 소스 코드이다. UTC란 1970년 1월 1일 0시 0분 0초를 기준으로 하여 경과된 초 단위의 총 시간을 의미한다. * UTC(Universal Time Coordinated, 협정세계시, 協定世界時) /* * Filename: testCTime.go * * Compile: go build testCTime.go * Execute: ./testCTime * * Execute without compiling: go run testCTime.go * * Date: 2012. 6. 18. */ package main import ( "fmt" "time" "math" ) func main() { var weekNames []string = []st..

프로그래밍/Go 2012.06.17

조립제법(Horner의 방법) 예제 with Go

다항식 p(x) 를 1차 다항식 x - a 로 나눌 때의 몫과 나머지를 구하는 조립제법을 Go 언어로 구현해 보았다. 조립제법(synthetic division)은 일명 Horner의 방법이라고도 불리우는데, 이는 다항식 p(x)의 x = a 일 때의 값 p(a)을 계산하는 가장 빠른 알고리즘이기도 하다. p(x) = (x - a)q(x) + r 여기서 r은 나머지이며 r = p(a) 이다. 또 q(x)는 몫이다. [참고] * 온라인으로 조립제법 표 만들기 손으로 계산하는 조립제법 표 * 온라인으로 구하는 다항식의 도함수: 조립제법을 이용한 다항식의 도함수 아래의 소스파일은 go run 명령을 사용하면 컴파일 과정 없이 그대로 실행된다. (실행 예: go run testSyntheticDivision.g..

프로그래밍/Go 2012.06.16

80컬럼 컨솔에 19단표 출력하기 예제 with Go

다음은 C 언어로 작성된 소스파일 testForFor.c(참조: 80컬럼 컨솔에 19단표 출력하기 예제 for C and Ch)를 Go 언어용으로 고친 것이다. (* 한글이 있는 Go 소스파일은 UTF8 인코딩으로 저장해야 한다.) /* * Filename: testForFor.go * * Compile: go build testForFor.go * Execute: testForFor * * Execute without compiling: go run testForFor.go * * Date: 2012. 6. 16. */ package main import ( "fmt" ) // dan으로 전달된 (구구단의) 한 단의 출력할 내용을 // 스트링으로 만들어 반환하는 함수 func getDan(dan int..

프로그래밍/Go 2012.06.16

(최대공약수 구하기) while... 반복문 예제 with Go

Go 언어에는 while 반복문이 없으므로 for 반복문을 (while 반복문 처럼) 쓰면 된다. 소스 파일명: testWhile.go // Filename: testWhile.go // // Execute: go run testWhile.go 625 1000 // or // Compile: go build testWhile.go // Execute: ./testWhile 625 1000 package main import ( "fmt" "os" "strconv" ) // 사용법 표시 함수 func printUsing() { fmt.Printf("Using: testWhile [integer1] [integer2]\n"); fmt.Printf("This finds the greatest common di..

프로그래밍/Go 2012.06.15

if...else... 조건문 사용 예제 with Go

소스 파일명: testIf.go // Filename: testIf.go // // Execute: go run testIf.go -1.5 // or // Compile: go build testIf.go // Execute: ./testIf -1.5 package main import ( "fmt" "os" "strconv" ) // 사용법 표시 함수 func printUsing() { fmt.Printf("Using: testIf [number]\n"); fmt.Printf("This determines whether the number is positive or not.\n"); } // main 함수 func main() { var val = 0.0 if (len(os.Args) != 2) { p..

프로그래밍/Go 2012.06.15

맹령행 인자 처리 예제 with Go

Go 소스 파일에 한글이 포함되어 있으면 UTF8 인코딩으로 저장해야 한다. 소스 파일명: testArguments.go // Filename: testArguments.go // // Execute: go run testArguments.go 1 2 3 // or // Compile: go build testArguments.go // Execute: ./testArguments 1 2 3 package main import ( "fmt" // fmt.Printf 함수 사용을 위해 "os" // os.Args 사용을 위해 "strconv" // strconv.ParseFloat 함수 사용을 위해 ) func main() { var sum = 0.0; var y = 0.0 for i, x := range..

프로그래밍/Go 2012.06.15