본문 바로가기

Studying

C언어와 C++를 조합한 프로그래밍 프로그램을 만들다 보면 C언어로 작성된 함수를 C++ 프로그램에서 사용하거나, 그 반대의 경우가 생길 때가 있습니다. 뿐만 아니라 C언어로 만들어진 라이브러리를 C++ 프로그램에서도 사용할 수 있게 설계해 두면 상당히 유용하겠죠. extern "C" 코드블록 및 __cplusplus 식별자를 이용해서 언어의 장벽을 뛰어넘을 수 있습니다. extern "C" 코드블록 C언어와 C++ 사이의 호환성을 확보하기 위한 방법 중의 하나는 앞에 언급한 대로 extern "C" 코드블록을 사용하는 것입니다. 함수의 본체가 C언어로 정의되어 있는 경우, 그 프로토타입을 C++ 소스코드 내에서 선언하기 위해서는 extern "C" 코드블록이 필요하죠. 이러한 조치를 취하지 않으면 오브젝트 파일들을 링크할 때 C++ 컴파.. 더보기
C/C++ Runge-Kutta 방법으로 알아보는 인구역학 목차 로지스틱 방정식 확장된 가설 : 어른과 어린이 확장된 가설 : 인간과 삼림 인터넷을 돌아다니다가 우연히 인구역학 (population dynamics) 및 이를 위한 수학적 모형에 대한 설명을 위키 페이지에서 읽게 되었습니다. 본래 검색 의도에 맞는 결과는 아니었지만, 수학 모형에 혹해서 결국 관심있게 읽게 되었네요. Population dynamics - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Type of mathematics modelling changes in the size and age composition of populations Population dynamics is the .. 더보기
GNUPLOT 사용법 - 2D 그래프 디자인 목차 X,Y 축의 범위 및 이름 설정 그래프 선 모양 및 색상 설정 범례 설정 기호 및 화살표 추가하기 사용자 지정 함수 데이터 파일로부터 그래프 그리기 히스토그램 지난번에 포스팅한 GNUPLOT : 다용도 그래프 유틸리티 프로그램 소개 그래프를 그리기 위한 프로그램인 GNUPLOT에 대한 포스팅입니다. gnuplot homepage direct output to file: postscript (including eps), pdf, png, gif, jpeg, LaTeX, metafont, emf, svg, ... www.. swstar.tistory.com 에 이어서, GNUPLOT에서 2차원 그래프를 디자인하는 방법에 대해 알아봅시다. 가로 X축과 세로 Y축을 가진 2차원 그래프는 plot 명령어를 .. 더보기
GNUPLOT : 다용도 그래프 유틸리티 프로그램 소개 그래프를 그리기 위한 프로그램인 GNUPLOT에 대한 포스팅입니다. gnuplot homepage direct output to file: postscript (including eps), pdf, png, gif, jpeg, LaTeX, metafont, emf, svg, ... www.gnuplot.info 다양한 기능을 가지고 있으면서도 무료로 사용가능한 프로그램이므로, 사용법을 알아두면 유용하게 써먹을 수 있죠. 윈도우 및 리눅스/유닉스용 버전이 모두 있기 때문에, 운영체제에 구애받지 않고 사용할 수 있다는 것 역시 장점입니다. macOS를 사용하는 경우 Homebrew를 통해서도 설치할 수 있는데요. 터미널 콘솔에서 brew info gnuplot 을 입력하면 프로그램 정보를 볼 .. 더보기
C/C++ Runge-Kutta 방법으로 알아보는 진자운동 진자운동의 개요 이번 포스팅에서는 천장에 매달린 진자의 운동에 대한 썰을 수치해석과 함께 한번 풀어볼까 합니다. 중력이 복원력으로 작용하는 왕복운동은 고등학교 물리 교과서에도 등장할 정도로 친숙하죠. 이 진자운동의 개요를 그림으로 표현하자면 다음과 같습니다. 이 때 수직 방향에 대한 진자의 각도 theta 는 시간의 함수가 되고, 이 각도가 따르는 운동방정식은 진자가 매달린 끈의 길이 및 중력 가속도에 의해 결정된다는 특징이 있습니다. 제 기억이 맞다면, 고등학교 물리 및 대학교 일반물리 교과서에는 진동 주기가 진동의 폭과는 무관한 값을 가지는 것으로 나올텐데요. 엄밀히 말하자면 이는 진자의 진동 폭이 매우 작은 상황을 상정한 근사값이라 할 수 있습니다. 일반적인 진동 폭의 경우에 대해서는 해석적인 해를.. 더보기
GSL : C/C++ 수치해석 라이브러리 라이브러리 소개 이번 포스팅에서는 이공계 분야의 수치해석에서 널리 쓰이는 GSL라이브러리에 대해 써 볼까 합니다. GSL은 GNU Scientific Library의 약자로서, 과학 및 공학 분야의 수치해석에 유용한 여러가지 함수들을 가지고 있는 C언어 라이브러리인데요. 어지간한 슈퍼컴퓨터에는 기본적으로 설치되어 있을 정도로 널리 쓰이기 때문에, 기본적인 사용 방법들을 알아두면 상당히 좋습니다. GSL - GNU Scientific Library - GNU Project - Free Software Foundation GSL - GNU Scientific Library The GNU Scientific Library (GSL) is a numerical library for C and C++ progra.. 더보기
C/C++ 에서 함수를 매개변수로 사용하기 함수 포인터를 이용한 구현 일반적으로 C언어나 C++ 에서 사용하는 함수의 경우, 인자(매개변수) 혹은 파라미터로 변수를 받아갑니다. 이 값들을 가지고 정의된 기능을 수행하게 되죠. 하지만 프로그램을 만들다 보면 함수 자체를 다른 함수의 매개변수로 하는 방식이 유용할 때가 있습니다. 함수의 포인터를 다른 함수의 인자로 설정함으로써 이를 구현할 수 있으며, 이 때 함수의 파라미터 및 리턴값을 정확하게 명시해야 합니다. Hello World! 코드를 약간 바꿔서 이를 사용해 봅시다. #include void let_us_say(void (*func_message)()); void greetings(); void goodbye(); int main(int argc, char *argv[]) { // funct.. 더보기
FFTW : C/C++ 고속 푸리에 변환 라이브러리 라이브러리 소개 현재 진행중인 연구에서 사용중인 C언어 푸리에 변환 라이브러리인 FFTW에 대해 간략히 포스팅해볼까 합니다. FFTW는 Fastest Fourier Transform in the West 의 약자인데요. 저 같은 토종 아시안은 이해 못하는 개그에서 파생된 이름이라는 카더라가 있습니다만, 중요한 내용은 아니므로 패스하겠어요. FFTW Home Page --> Introduction FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as wel.. 더보기
sudoku (스도쿠) 퍼즐 푸는 프로그램 (C++) 예전에 포스팅했던 sudoku 퍼즐 푸는 프로그램 (C언어) 아이패드 앱(의 부가기능) 중에 스도쿠(sudoku) 퍼즐이 있길래 좀 해보다가, 이걸 푸는 프로그램을 C언어로 작성하는 잉여짓을 하게 되었습니다. 기본원리는 그냥 게임의 룰을 반영하여, 모든 빈칸 swstar.tistory.com 에 이어서, C++ 로 재구성한 코드입니다. 입출력 파일의 형식은 예전 포스팅과 동일하게 9행 9열의 텍스트 파일입니다. SudokuSolve라는 클래스를 도입하였으며, 이 클래스는 파일로부터 스도쿠 퍼즐 문제를 읽어들이고 퍼즐을 푸는 등의 멤버 함수들을 가지고 있습니다. main 함수에서는 객체를 선언하고 이 멤버 함수들을 실행하기만 하면 되는거죠. 퍼즐의 답을 출력하는 멤버 함수도 있는데요. 출력 파일의 포인터를.. 더보기
ARRIVAL and STANDBY 결국 도착하고 말았따. 더보기