프로그래밍/Go 24

Go 언어로 3제곱근, 4제곱근, n제곱근 구하기

자바에서 Math.sqrt() 메소드로 제곱근을 구하고, Math.cbrt() 메소드로 세제곱근을 구하듯이, Go 언어에서도 math.Sqrt() 함수로 제곱근을 구하고, math.Cbrt() 함수로 세제곱근을 구할 수 있다. 하지만 네제곱근이나 n제곱근을 구할려면 대신, math.Pow() 함수를 사용할 수 밖에 없다. 가령 2의 4제곱근을 구하려면 math.Pow(2.0, 1.0/4.0) 로 한다. math.Pow() 함수 속에는 정수형 숫자가 허용되지 않기에, 2는 (float64 상수 리터럴) 2.0 으로 표현해야 한다. 5의 세제곱근을 구하려면 math.Pow(5.0, 1.0/3.0) 로 한다. Go 언어로 3제곱근, 4제곱근, n제곱근 구하는 예제 소스 파일명: example.go #inclu..

프로그래밍/Go 2012.06.27

삼각형 출력 예제를 통한 여러 가지 소스 비교 with Go

콘솔에 삼각형 * * * * * * * * * * * * * * * ***************** 을 출력하는 Go 언어 컨솔 애플리케이션을 만들어 보자. 이런 소스 코드의 작성은 학원이나 학교에서 프로그래밍 입문자에게 과제로 많이 주어지는 것 중의 하나이다. 코끼리를 보거나 만진 사람들이 저마다 그 생김새를 말할 때 제각기 다르게 표현할 수 있듯이 이런 소스 코드의 작성도 알고 보면 얼마든지 많은 방법이 있을 것이다. 여기서는 쉬운 코드 부터 작성해 보고 차츰차츰 소스를 바꾸어 가면서 Go 언어 프로그래밍의 기초부분을 터득해 보기로 한다. 삼각형 출력 부분을 main() 함수에서 하지 않고, 별도로 구현된 printTriange() 함수에서 하기로 한다. 우선 첫번 째 예제는 Go 언어의 컨솔 출력 ..

프로그래밍/Go 2012.06.26

7비트 ASCII 코드표 만들기 예제 with Go

ASCII(애스키)란 American Standard Code for Information Interchange의 줄임글로서, 영문자에 기초한 문자 인코딩이다. 이 문자 인코딩에는 C0 제어문자(C0 control character)도 포함되어 있다. ( 참고: ASCII - Wikipedia, the free encyclopedia ) 다음은 7bit ASCII 코드표를 만들어 보여주는 Go 언어 소스 코드이다. 소스 코드 중에 진법변환에 필요한 함수 convertAtoI() convertItoA() 의 구현도 포함되어 있다. /* * Filename: makeAsciiTable.go * Make a table of ascii codes. * * Execute: go run makeAsciiTable...

프로그래밍/Go 2012.06.25

진법(radix) 표 만들기 예제 with Go

컴퓨터 프로그래밍에서 꼭 알아두어야 할 주요 진법은 당연히 10진법, 2진법, 8진법, 16진법이다. 다음은 0 에서 15 까지의 정수를 10진법, 2진법, 8진법, 16진법의 표로 만들어 보여주는 Go 언어 소스 코드이다. 진법 변환에 필요한 함수 convertAtoI(string, radix) convertItoA(int64, radix) 를 Go 언어 코드로 자체 작성하여 사용하였다. /* * Filename: makeRadixTable.go * Show the radix table with 10-, 2-, 8-, 16-radices. * * Execute: go run makeRadixTable.go * * or * * Compile: go build makeRadixTable.go * Execu..

프로그래밍/Go 2012.06.25

대화형 모드의 진법(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