함수의 극한 구하는 프로그램 만들기(C언어)
안녕하십니까? 수성비입니다. 오늘은 C언어를 이용하여 함수의 극한을 만드는 프로그램을 만들어 보도록 하겠습니다.
직접 만들기 귀찮으신 분들은 아래 파일을 받으셔서 편집하시기 바랍니다.
소스코드도 아래에 거의 다 작성할 것이니, 위의 첨부파일 없이 직접 만들어 보실 분들은 아래 과정을 따라오시면 되겠습니다.
C언어 컴파일러 설치하기
저는 지금 C언어로 프로그래밍하는 방법을 알려드리려고 합니다. C언어 컴파일러를 준비해 주세요.
Visual C++를 사용하셔도 되고, Dev-C++(http://orwelldevcpp.blogspot.com/)를 사용하셔도 되고, 다른 것이 있다면 그걸 쓰셔도 됩니다. 쓰고 싶은 컴파일러를 설치하세요.
(참고로 저는 Dev-C++ 씁니다.)
프로그램 첫화면 미리보기
첫화면을 통해 프로그램의 틀을 알고 가시는 것이 좋을 것 같아 이미지를 올려드립니다.
우리가 만들 프로그램은 함수 f(x)가 있으면 x에 수를 대입하는 방식입니다. 예를 들어, 위 이미지를 보시면 1~5번의 메뉴가 있는데 1번의 경우 f(0), f(1), f(2), f(3), ..., f(9999999999)를 출력합니다.
헤더파일
1 2 3 |
#include <stdio.h> //기본적으로 있어야 하는 헤더파일 #include <windows.h>//Windows 운영체제에서 쓸 수 있는 헤더파일. Windows CMD 명령어를 쓸 수 있도록 도와줍니다. Windows 운영체제가 아니라면 include하지 마세요. #include <math.h>//다항함수 이외의 유리함수, 무리함수, 지수함수, 삼각함수 등 다양한 함수를 만들기 위해 include한 헤더파일입니다. 자세한 사용법은 위키피디아를 참고하세요. |
cs |
매크로 함수
1 | #define f(x) 함수입력 //←←여기에 x에 대한 함수를 입력하십시오. | cs |
함수입력 부분에 원하는 함수를 입력합니다. 예를 들면 1.0/x
주의하실 점이 있습니다! 실수 계산을 위해서는 정수도 소수 형태로 써야 합니다.
예를 들면, 3→3.0
전부 다 그래야 하는 건 아니고, 정수끼리의 연산 결과가 정수가 아닌 수일 때에 해당하는데 이런 거 따지기 귀찮으면 그냥 전부 다 소수 형태로 바꿔 쓰세요.
본격적인 시작
1 2 3 4 |
int main(void){ } |
cs |
이제 시작하겠습니다. 저 중괄호 안에다가 소스 코드를 작성할 겁니다.
변수 선언
1 | double num=1, quest=1, k=1, x=0, y=1; | cs |
변수를 설명해 드리겠습니다.
num: 반복문을 만들기 위해 필요합니다.(증감식에 사용)
quest: 메뉴 선택(1~5)을 만들기 위해 선언했습니다.
k: 3~4번 메뉴에서 사용할 변수입니다.
x: '변수'
y: '함숫값'. f(x)라고 생각하셔도 좋습니다.
모든 변수는 double 자료형으로 선언되었습니다.
따라서 -1.7×10^(-307) 이상 +1.7×10^307 이하의 실수만 표현할 수 있으며, 그 이외는 무한대로 표현합니다.
∞=1.#INF00
-∞=-1.#INF00
첫화면
1 2 3 4 5 6 7 8 9 10 11 |
printf("<<함수의 극한>>- 제작자: 주성우(수성비)\n\n"); //프로그램의 제작자 이름은 제 이름을 썼습니다. 여러분이 직접 타이핑하실 건데 제작자 이름에서 빠진 게 억울하시면 이름 추가하세요.^^ printf("lim\n"); printf("x→?\n\n"); printf("몇부터 몇까지 대입할지 아래 선택지 중에서 고르시오.\n"); printf("1. 0~∞\n"); printf("2. 0~-∞\n"); printf("3. k~0\n"); printf("4. -k~0\n"); printf("5. 도움말"); printf("--------------------------------\n"); scanf("%lf", &quest); Colored by Color Scripter |
cs |
1~5번의 메뉴가 있는데 이 중 일부 기능을 제외하고 싶으시다면 빼셔도 됩니다.
메뉴 선택은 번호를 입력하는 방식입니다. 번호 입력 후 enter를 누르시면 그 번호가 quest 변수에 저장됩니다. 그 quest 변수에 따라 메뉴에 진입하여 '대입'을 시작하며 '함숫값'들을 구합니다.
메뉴에 진입하기 전에(화면 넘어가기)
여기서는 windows.h 헤더파일에서 제공하는 함수인 system 함수를 사용합니다.(함수 아닐수도 있음. 부정확한 점 양해 바랍니다.) windows.h 헤더파일을 안 쓰시는 경우 이 과정을 건너뛰시기 바랍니다.
1 2 |
system("cls");//화면 지움. printf("<<함수의 극한>>- 제작자: 주성우(수성비)\n\n"); |
cs |
1~5번에 해당하는 기능 코딩하기
지금부터 1~5번에 해당하는 기능들을 넣을 것입니다. 각 메뉴는 if문으로 구분됩니다. 만약 1번, 3번 기능만 필요하시다면 아래 소스코드에서 if(quest==1){ } 부분과 if(quest==3){ } 부분만 복사하여 가져가시면 됩니다.
가져가실 때 주의하실 점이 있습니다. 2~5번 코드는 else if로 묶여 있습니다. 만약 2, 4번 메뉴를 가져가고자 한다면 else if(quest==2){ } 앞의 else를 지워 주시기 바랍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
if(quest==1){ printf("1. 0~∞\n\n"); for(num=1; num<=10000000000; num++ ) { y=f(x); printf("f(%f)=%f\n", x, y); x++; } } else if(quest==2){ printf("2. 0~-∞\n\n"); for(num=1; num<=10000000000; num++ ) { y=f(x); printf("f(%f)=%f\n", x, y); x--; } } else if(quest==3){ printf("3. k~0\n"); printf("k를 어떤 수로 정하시겠습니까?(단, k>0)\n"); printf("--------------------------------\n"); scanf("%lf", &k); system("cls");//화면 지움. printf("<<함수의 극한>>- 제작자: 주성우(수성비)\n\n"); printf("3. %lf~0\n\n", k); x=k; for(num=1; num<=k+1; num++ ) { y=f(x); printf("f(%f)=%f\n", x, y); x--; } } else if(quest==4){ printf("4. -k~0\n"); printf("k를 어떤 수로 정하시겠습니까?(단, k>0)\n"); printf("--------------------------------\n"); scanf("%lf", &k); system("cls");//화면 지움. printf("<<함수의 극한>>- 제작자: 주성우(수성비)\n\n"); printf("%4. %lf~0\n\n", -k); x=-k; for(num=1; num<=k+1; num++ ) { y=f(x); printf("f(%f)=%f\n", x, y); x++; } } else if(quest==5){ printf("5. 도움말\n"); printf("이 프로그램은 함수의 극한을 눈으로 쉽게 확인하기 위해 제작된 프로그램입니다.\n"); printf("프로그램을 사용하기 전 소스 편집을 통해 극한을 구할 함수를 입력하여 주시기 바랍니다.\n\n"); printf("이 프로그램은 double 자료형을 사용하므로 -1.7×10^(-307) 이상 +1.7×10^307 이하의 실수만 표현할 수 있으며, 그 이외는 무한대로 표현합니다.\n"); printf("∞=1.#INF00\n"); printf("-∞=-1.#INF00\n\n"); printf("자세한 설명이 필요하시면 아래 주소로 접속하시기 바랍니다.\n"); printf("http://toopyo.tistory.com/entry/limitfx\n"); } Colored by Color Scripter |
cs |
메뉴 번호를 잘못 입력했을 경우 뜨는 오류 메시지
1 2 3 |
else{ printf("잘못된 번호를 입력하셨습니다. 프로그램을 재실행 해 주시기 바랍니다.\n"); } Colored by Color Scripter |
cs |
프로그램 종료
1 2 3 |
printf("\n\n"); system("pause");//계속하려면 아무 키나 누르십시오 . . . return 0; Colored by Color Scripter |
cs |
system("cls");와 마찬가지로 system("pause");는 windows.h 헤더파일이 있어야 작동합니다. windows.h 헤더파일이 없는 경우 쓰지 마시기 바랍니다.
이렇게 프로그램이 완성되었습니다. 원하시는 대로 프로그램이 나왔나요? 잘 안 된다면 글 초반부에 올려드린 첨부파일과 비교해 보세요.
코드에 오류가 있는 경우 댓글로 제보 부탁드립니다. 제작자(본인)가 바쁜 관계로 빠른 수정이 어려울 수 있습니다. 양해 부탁드립니다.
감사합니다. 다음에 만나요!
'수성비의 작품 > 기타' 카테고리의 다른 글
[Windows 테마]너희들에게는 조팝나무가 있다 (0) | 2017.07.05 |
---|---|
[학교생활]DIY 수첩 만들기(1~7교시 버전) (17) | 2017.03.04 |
포토샵으로 카카오톡 프로필사진 만들기(가로, 세로, 정사각형) (2) | 2017.02.25 |
2017 설 기념 움짤 (0) | 2017.01.21 |