728x90

안녕하십니까? 수성비입니다. 오늘은 C언어를 이용하여 함수의 극한을 만드는 프로그램을 만들어 보도록 하겠습니다.

 

직접 만들기 귀찮으신 분들은 아래 파일을 받으셔서 편집하시기 바랍니다.

 

함수의 극한.c
0.00MB

소스코드도 아래에 거의 다 작성할 것이니, 위의 첨부파일 없이 직접 만들어 보실 분들은 아래 과정을 따라오시면 되겠습니다.

 

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 헤더파일이 없는 경우 쓰지 마시기 바랍니다.

 

이렇게 프로그램이 완성되었습니다. 원하시는 대로 프로그램이 나왔나요? 잘 안 된다면 글 초반부에 올려드린 첨부파일과 비교해 보세요.

코드에 오류가 있는 경우 댓글로 제보 부탁드립니다. 제작자(본인)가 바쁜 관계로 빠른 수정이 어려울 수 있습니다. 양해 부탁드립니다.

감사합니다. 다음에 만나요!

 

댓글을 달아 주세요

  • 김재위 2020.03.10 13:12  댓글주소  수정/삭제  답글쓰기

    깊카 어케써

  • taeheon lee 2021.02.17 17:24  댓글주소  수정/삭제  답글쓰기

    React native와 native app의 미래는 어떻게 생각하시나요 ?

    native app의 우세 ?

    • 수성비 2021.02.18 12:01 신고  댓글주소  수정/삭제

      제가 React Native에 대해 잘 모르는지라 답변 드리기 어렵습니다. 죄송합니다.
      제가 관심이 생기고, 공부한다면 그 다음에 미래를 논할 수 있을 것 같습니다.

  • 나그네 2021.05.24 02:09  댓글주소  수정/삭제  답글쓰기

    컴파일 오류가 발생하는데 무엇이 문제일까요 ㅠㅠ 올려주신 소스파일 그대로 컴파일해도 발생합니다

    • 수성비 2021.05.24 06:48 신고  댓글주소  수정/삭제

      두 가지 가능성이 있어 보입니다.

      1. 매크로 함수 입력할 때 실수했을 가능성.(저도 급하게 쓰다 보면 잘못 입력할 때가 있습니다. 함수를 어떻게 쓰셨는지 모르니 함부로 말씀드릴 수는 없지만 '가능성'은 있어 보입니다.)
      2. GCC로 컴파일하는 경우 -Im 옵션을 추가해야 할 수 있음.
      (저는 -Im 옵션 없이도 되긴 하던데 어떤 분들은 math.h 헤더파일 포함해서 컴파일하려면 -Im 옵션이 있어야 한다고 하더라고요.)

      부족한 누리꾼이 만든 소스코드를 이용해 주셔서 감사합니다. 문제 해결되기를 바랍니다.

  • 감자 2021.05.25 00:49  댓글주소  수정/삭제  답글쓰기

    안녕하세요, 컴파일 후 실행하면 입력받는 창조차 나오지 않고 작업을 완료했습니다. 하면서 바로 종료가 되어버리는데 무엇이 문제일지요? ㅠㅠ

    • 수성비 2021.06.05 11:48 신고  댓글주소  수정/삭제

      첨부파일이 수정되었습니다. 다시 한 번 첨부파일을 내려받아 주시고 Line 5의 '함수입력' 부분만 원하시는 함수로 바꾸신 뒤, 빌드(컴파일)하고 실행해 보시기 바랍니다.

      [그래도 문제가 발생하는 경우]
      1. 매크로 함수 입력할 때 실수했을 가능성.(저도 급하게 쓰다 보면 잘못 입력할 때가 있습니다. 함수를 어떻게 쓰셨는지 모르니 함부로 말씀드릴 수는 없지만 '가능성'은 있어 보입니다.)
      2. GCC로 컴파일하는 경우 -Im 옵션을 추가해야 할 수 있음.
      (저는 -Im 옵션 없이도 되긴 하던데 어떤 분들은 math.h 헤더파일 포함해서 컴파일하려면 -Im 옵션이 있어야 한다고 하더라고요.)

      [문제가 해결된 경우]
      첨부파일 없이 작성하신 부분을 비교하여 어떤 부분이 문제였는지 확인해 보시기 바랍니다.