2012/06 20

Go 언어로 30!(30팩토리얼) 까지 정확하게 계산하기

Go 언어의 int64 타입은 C 언어의 long long 터입처럼 64비트 부호 았는 정수 타입이다. 이 타입으로는 20! 까지만 정확하게 게산된다. (Go 언어의 int64 타입으로 계산 가능한 최대 팩토리얼은? 참조) 하지만 Go 언어의 "math/big" 패키지를 사용하면 (C 언어의 GMP 라이브러리를 쓰는 것 처럼) 무제한 자리수의 정수 계산이 가능하다. 다음 소스는 C 언어로 GMP 라이브러리를 이용하여 30! 까지 정확하게 계산하기의 C 언어 소스 recFactGMP01.c를 Go 언어용으로 수정한 것이다. * 소스 파일명: recBigFact01.go /* * Filename: recBigFact01.go * * Execute: go run recBigFact01.go * * or * *..

프로그래밍/Go 2012.06.29

손으로 계산하는 긴 자리 곱셈표 만들기 with Go

초등학교 때 배우는 두 정수의 곱셈표를 만들어 주는 Go 소스이다. /* * Filename: makeMultTable.go * * Print a multiplication table. * * Execute: go run makeMultTable.go 230 5100 * * or * * Compile: go build makeMultTable.go * Execute: ./makeMultTable 230 5100 * * Date: 2012/06/28 * Author: pkim (AT) scripts.pe.kr */ package main import ( "fmt" "os" "strconv" ) func println(s string) { fmt.Printf("%s\n", s) } func print(s s..

프로그래밍/Go 2012.06.28

손으로 만드는 나눗셈 계산표 with Go

다음은 초등학교에서 배우는 나눗셈 계산표를 만들어주는 Go 언어 소스 코드이다. 나눗셈 계산표를 완성하고 나서 약수, 배수 관계를 알려준다. /* * Filename: makeDivisionTable.go * * Purpose: Make a division table in a handy written form. * * Execute: go run makeDivisionTable 12345 32 * Execute: go run makeDivisionTable 500210 61 * * or * * Compile: go build makeDivisionTable.go * Execute: ./makeDivisionTable 12345 32 * Execute: ./makeDivisionTable 500210 61..

프로그래밍/Go 2012.06.27

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