여러 해 동안 C 프로그래밍을 가르쳤는데, 대부분의 학생들은 이 수업을 배우기가 어렵다고 생각한다. 사실, 현재의 강의 개요와 강의 요구 사항에 따르면, 학생들이 심리적 두려움을 극복하고 쉽게 포기하지 않는 한 배울 수 있습니다.
C 프로그래밍의 내용은 매우 풍부하다. 우리의 현재 교과 개요에 따르면, 주요 교육 내용은 기본 지식, 4 구조 프로그래밍, 함수 및 배열 응용 프로그램 및 몇 가지 간단한 알고리즘입니다. 학생들은 공부할 때 이 부분에 중점을 두고 연습 (연습과 컴퓨터 디버깅) 을 통해 능숙하게 익혀야 한다. 물론 초보자는 C 언어를 배울 때 이해가 잘 안 되는 문제가 생기거나 이전 수학 학습과 다른 방식으로 표현될 수 있습니다 (예: 연산자 등). ), 이것은 낙담하지 말고, 자신이 이해하지 못하는 곳에 대해 더 많이 생각하고, 용기를 내어 공부하라고 요구한다. 뒷장의 지식을 다 배우면 앞의 문제가 순조롭게 풀린다. 이런 점에서 우리 학우가 가장 부족한 것 같아요. 대부분 처음에 어려움에 부닥쳤기 때문에 포기했고, 많은 학우들과 이야기를 나눴어요. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 공부명언) 대답은' 아니오' 입니다. 저는 전혀 수업을 한 적이 없습니다. 내가 어떻게 이해할 수 없다고 말할 수 있을까? 그에 상응하여, 나는 전혀 공부하지 않았는데, 어떻게 잘 배울 수 있을까?
C 언어를 배울 때, 우리는 항상' 서광이 앞에 있다',' 천금난은 뒤돌아보기 어렵다' 는 것을 기억해야 한다. 이것은 지식을 배우는 중요한 방법 중 하나이다. 즉, 뒤의 지식을 배워야 한다는 것이다. 뒤돌아보고 뒤에 남겨진 문제를 찾아내고, 앞의 지식에 대한 이해를 심화시키는 것을 잊지 마라. 이것이 우리 학생들이 가장 하기 어려운 것이지만, 가장 중요한 것이다. C 언어와 같은 가장 전형적인 아이디어는 구조화 된 프로그래밍에 관한 것입니다. 어떤 교재든 처음부터 이런 방법을 강조했다. 이때 너는 아직 완전히 이해하지 못했을 수도 있지만, 네가 함수를 배울 때 돌아가서 자세히 이해하면 이해하기가 그리 어렵지 않다. C 언어를 배우는 것은 앞뒤 몇 번의 반복을 거쳐 습득해야 할 C 지식을 축적하는 것이다.
그렇다면 c 프로그래밍을 어떻게 잘 배울 수 있습니까?
1. c 언어를 잘 배우는 연산자 및 작업 순서.
이것은 c 프로그래밍을 잘 배우는 기초입니다. C 언어 조작은 매우 유연하고, 기능이 매우 풍부하며, 작업 유형도 다른 프로그래밍 언어보다 훨씬 많다. 표현식은 추가, 자체 빼기, 쉼표 연산, 세 눈 연산 등 다른 프로그래밍 언어보다 간결하여 표현식을 더 쉽게 만듭니다. 그러나 초보자들은 종종 이 표현식을 읽기가 어렵다고 생각하는데, 중요한 이유는 연산자와 연산 순서를 완전히 이해하지 못했기 때문이다. 여러 가지 다른 연산이 하나의 연산 표현식을 구성하는 경우, 즉 한 표현식에 여러 연산자가 있는 경우 연산의 우선 순위와 조합 규칙이 중요합니다. 학습에서, 우리가 그것들을 합리적으로 분류하고, 그것들과 수학에서 배운 연산의 차이를 찾아내기만 하면, 이런 연산은 어렵지 않다는 것을 기억하라. (존 F. 케네디, 공부명언) 어떤 연산자는 이해하고 나면 마음에 새기고, 나중에 사용하기 편하고, 어떤 연산자는 잠시 포기할 수 있고, 나중에 사용할 때는 다시 기억할 수 있다.
우선, 운영자는 다른 우선 순위에 따라 분류된다는 것을 분명히 해야 한다. C 프로그래밍의 연산자는 15 우선 순위, 높음부터 낮음까지, 우선 순위는 1 ~ 15 로 나눌 수 있습니다. 2 차, 3 차 및 14 레벨이 오른쪽에서 왼쪽으로 결합되는 것을 제외하고 모두 왼쪽에서 오른쪽으로 결합되어 동위 멤버의 연산 순서를 결정합니다. 몇 가지 예를 들어 설명하겠습니다.
표현식 (1) 5*8/4% 10 에는 세 개의 연산자가 있는데, 이는 같은 수준의 연산자로 왼쪽에서 오른쪽으로 연산됩니다. 따라서 먼저 5 *8=40 을 계산한 다음 4 로 나누면 10, 마지막으로% (나머지) 연산이 되므로 표현식의 최종 결과는 6544 입니다.
(2) a = 3; B = 5;; C = ++ a* b;; D = a++ * b;;
C=++a*b 의 경우 * 가++다음에 먼저 실행되므로 ++a 를 실행한 후 a 의 값은 4 입니다. ++는 선행 연산이므로 a 의 값이 계산에 포함되고 c 의 계산 공식은 3*5= 15 가 아닌 4*5=20 입니다. D=a++*b 의 경우 a++ 는 후연산이므로 4 의 값은 연산에 참여하므로 d 의 값은 20 이고 a 는 연산에 참여한 후 1 을 더하고 값은 5 입니다. 이 예제를 실행한 후 A 의 값은 5, B 의 값은 5, C 의 값은 20, D 의 값은 20 입니다.
(3)(a = 3, b = 5, b+ = a, c = b* 5)
예를 들어, ","는 쉼표 조합 연산이고, 위의 공식은 쉼표 표현식이라고 하며, 왼쪽에서 오른쪽으로 조합됩니다. 마지막 표현식의 결과 값은 쉼표 표현식의 결과이므로 위의 쉼표 표현식의 결과는 40, a 의 값은 3, b 의 값은 8, c 의 값은 40 입니다.
(4) a = 5; B = 6;; C = a>b? 갑: 을;
예제의 A>b? A:b 는 관계 연산 A >;; 섹션 b 에서 결과가 참이면 물음표 뒤에 a 의 값을 취하고, 그렇지 않으면 콜론 뒤에 b 의 값을 가져오므로 c 의 값은 6 이어야 합니다. 이 작업은 IF ... ELSE ... 문의 간단한 응용 프로그램 대신 사용할 수 있습니다. C 언어를 잘 배우는 네 가지 프로그램 구조
(1) 시퀀스 구조
Sequence structure 의 프로그래밍은 가장 간단합니다. 문제 해결 순서대로 해당 명령문을 작성하면 실행 순서가 하향식입니다.
예를 들어, A = 3, b = 5, 지금 A 와 B 의 값을 교환합니다. 이 문제는 물 두 잔을 교환하는 것과 같습니다. 물론 세 번째 잔이 필요합니다. 세 번째 컵이 C 인 경우 올바른 절차는 C = a; 입니다. 을 눌러 섹션을 인쇄할 수도 있습니다 A = b;; B = c;; 실행 결과는 a = 5, b = c = 3 입니다. 순서를 바꾸면 다음과 같이 씁니다. a = b;; 을 눌러 섹션을 인쇄할 수도 있습니다 C = a;; B = c;; 그러면 실행 결과가 a = b = c = 5 로 바뀌어 원하는 목적을 달성하지 못하고 초보자가 이런 실수를 가장 쉽게 범하게 된다. 시퀀스 구조는 독립적으로 사용할 수 있어 간단하고 완전한 프로그램을 형성할 수 있다. 3 부곡을 입력, 계산, 출력하는 일반적인 절차는 시퀀스 구조입니다. 예를 들어 프로그램의 문 순서는 입력 원의 반지름 R, s = 3. 14 159*r*r 을 계산하고 원의 면적 S 를 출력합니다. 그러나 대부분의 경우 시퀀스 구조는 다른 구조와 함께 분기 구조의 복합 문, 루프 구조의 루프와 같은 복잡한 프로그램을 구성하는 프로그램의 일부입니다.
(2) 분기 구조
시퀀스 구조의 프로그램은 계산 및 출력 문제를 해결할 수 있지만 선택하기 전에는 판단할 수 없습니다. 선택하기 전에 판단해야 할 문제에 대해서는 분기 구조를 사용해야 한다. 분기 구조의 실행은 문이 나타나는 물리적 순서가 아니라 특정 조건에 따라 실행 경로를 선택하는 것입니다. 분기 구조 프로그래밍 방법의 핵심은 적절한 분기 조건 및 분석 프로그램 프로세스를 구성하고 다른 프로그램 프로세스에 따라 적절한 분기 문을 선택하는 것입니다. 분기 구조는 논리적 또는 관계 비교와 같은 조건부 판단 계산에 적용됩니다. 이러한 프로그램을 설계할 때는 먼저 프로그램 순서도를 그린 다음 프로그램 흐름에 따라 소스 프로그램을 작성하고 프로그래밍 분석을 언어에서 분리하여 문제를 이해하기 쉽게 해야 하는 경우가 많습니다. 프로세스 흐름도는 문제 해결 분석에 따라 그려진 프로세스 실행 흐름도입니다.
학습 분기 구조는 분기 중첩에 현혹되지 마십시오. 순서도가 올바르게 그려지면 각 분기가 수행할 기능이 명확하고 중첩 구조가 어렵지 않습니다. 중첩은 지관문이 포함된 지관일 뿐 새로운 지식은 아니다. 이중 분기에 대한 이해가 명확하다면, 가지가 중첩되는 것은 어렵지 않다. 몇 가지 기본적인 분기 구조를 소개하겠습니다.
① 만약 (조건)
{
분기
}
이 분기 구조의 분기는 하나의 문일 수 있으며, 이 경우 "{}" 를 생략하거나 여러 문, 즉 복합문일 수 있습니다. 선택할 수 있는 두 개의 분기 경로가 있습니다. 하나는 조건이 참일 때 분기를 수행하고, 그렇지 않으면 분기를 건너뛰고 분기를 수행하지 않는 것입니다. 예를 들어, X 의 절대값을 계산하면 절대값의 정의에 따라 x >;; =0, 절대값은 그대로 유지되고 x
② (조건)
{지점 1}
기타
{분기 2}
이것은 전형적인 분기 구조입니다. 조건이 참이면 1 분기를 실행합니다. 그렇지 않으면 분기 2, 분기 1 및 분기 2 를 실행합니다. 분기 2 는 1 또는 여러 문으로 구성될 수 있습니다. 예를 들어 ax 2+bx+c = 0 의 루트를 찾습니다.
분석: B 2-4ac > 일 때 =0, 방정식에는 두 개의 실제 뿌리가 있습니다. 그렇지 않으면 (b 2-4ac
D = b * b-4 * a * c;;
If(d & gt;; =0)
{x1= (-b+sqrt (d))/2a;
X1= (-b-sqrt (d))/2a;
Printf("x 1=%8.4f, x2=%8.4f\n ",x 1, x2);
}
기타
{r =-b/(2 * a);
I = sqrt (-d)/(2 * a);
Printf ("x1=% 8.4f+%8.4fi \ n" r, I);
Printf("x2=%8.4f-%8.4fi\n"r, I)
}
③ 중첩 분기 문: 명령문 형식은 다음과 같습니다.
If (조건 1){ 분기1};
Else if (조건 2){ 분기 2}
Else if (조건 3){ 분기 3}
......
Else if (조건 n){ 분기 n}
Else {n+ 1 지점}
중첩된 지관문은 여러 입구와 출구 문제를 해결할 수 있지만, 3 중 이상 중첩된 문장 구조는 매우 복잡해져 프로그램의 읽기와 이해에 매우 불편합니다. Triple 내에 중첩하는 것이 좋습니다. triple 을 초과하면 다음 문을 사용할 수 있습니다.
④switch 문: 이 문도 다중 분기 선택 문입니다. 수행할 블록은 표현식의 값이 상수 표현식과 일치하는 스위치 설정에 따라 달라집니다. IF ... if…else 문과 달리 모든 분기가 병렬로 진행됩니다. 프로그램이 실행될 때 첫 번째 분기는 검색을 시작하고, 일치하는 경우 다음 블록을 실행한 다음 두 번째 분기와 세 번째 분기의 블록을 실행합니다. 일치하지 않으면 다음 분기가 일치하는지 확인합니다. 이 문을 적용할 때는 switch 조건의 합리적인 설정과 break 문의 합리적인 적용에 특히 주의해야 합니다.
(3) 주기 구조:
루프 구조는 소스 프로그램에서 반복적으로 작성된 작업량을 줄여 알고리즘 반복 실행 문제를 설명하는 데 사용할 수 있습니다. 프로그래밍에서 컴퓨터 특기를 가장 잘 발휘할 수 있는 프로그램 구조다. C 언어는 goto 루프, while 루프, Dowhile 루프 및 for 루프의 네 가지 루프를 제공합니다. 네 가지 루프를 사용하여 동일한 문제를 처리할 수 있습니다. 일반적으로 서로 교체할 수 있지만, 일반적으로 goto 루프를 사용하지 않는 것이 좋습니다. 프로그램 순서를 강제로 변경하면 프로그램 실행에 예측할 수 없는 오류가 발생하는 경우가 많기 때문입니다. 학습에서 우리는 주로 while, do ... while 과 for 를 공부한다. 일반적으로 사용되는 세 가지 순환 구조를 배우는 것은 서로 다른 상황에서 사용할 수 있도록 유사점과 차이점을 찾는 데 중점을 둡니다. 이를 위해서는 세 사이클의 형식과 실행 순서에 대한 명확한 이해가 필요하며, 각 루프의 흐름도에 대한 철저한 이해가 필요하며 이를 교체하는 방법을 이해하는 데 도움이 됩니다. 예를 들어 while 루프를 예로 들어, 기능을 더 잘 이해할 수 있도록 for 문으로 프로그램을 다시 작성합니다. 루프 본문에서 끝나는 경향이 있는 문 (즉, 루프 변수 값의 변화) 에 특히 주의를 기울여야 합니다. 그렇지 않으면 무한 루프가 될 수 있습니다. 이는 초보자의 일반적인 오류입니다.
이 세 개의 루프를 학습한 후에는 while 과 do ... while 루프를 사용할 때 루프 변수 초기화는 루프 본문 앞에 있어야 하고 for 루프는 일반적으로 1 문에서 수행됩니다. While 루프와 for 루프는 모두 표현식을 먼저 판단한 다음 순환체를 실행하는 반면 do ... while 루프는 먼저 표현식을 결정하는 것입니다. 즉, do ... while 의 순환체는 한 번 이상 실행되고 while 루프와 for 는 한 번 실행되지 않을 수 있습니다. 또한 세 루프 모두 break 문으로 루프에서 벗어나 continue 문으로 루프를 종료할 수 있으며, goto 문과 if 로 형성된 루프는 break 및 continue 문으로 제어할 수 없다는 점에 유의해야 합니다.
시퀀스 구조, 분기 구조 및 순환 구조는 서로 분리되지 않습니다. 루프에는 분기와 시퀀스 구조가 있을 수 있고 분기에는 루프와 시퀀스 구조가 있을 수 있습니다. 사실, 어떤 구조든, 우리는 그것들을 넓은 의미의 진술로 볼 수 있다. 실제 프로그래밍 과정에서 이 세 가지 구조는 종종 서로 결합되어 다양한 알고리즘을 구현하고 해당 프로그램을 설계합니다. 그러나 프로그래밍의 문제는 크다. 쓴 프로그램은 종종 길고, 반복하며, 가독성이 떨어지고 이해하기 어렵다. 이 문제를 해결하는 방법은 C 프로그램을 모듈식 구조로 설계하는 것이다.
(4) 모듈 형 프로그램 구조
C 언어의 모듈식 프로그램 구조는 함수를 통해 구현됩니다. 즉, 복잡한 C 프로그램을 여러 모듈로 나누고, 각 모듈을 C 함수로 작성한 다음, 주 함수에서 함수를 호출하여 함수에서 함수를 호출하고, 큰 문제에 대한 C 프로그램을 작성하므로 C 프로그램 = 주 함수+하위 함수를 자주 말합니다. 따라서 함수의 정의, 호출, 반환 값에 대한 이해와 적용에 각별한 주의를 기울여 컴퓨터 디버깅을 통해 공고히 해야 한다.
간단한 알고리즘을 마스터하십시오.
사실 프로그래밍 작업의 상당 부분은 문제를 분석하고, 문제에 대한 해결책을 찾고, 적절한 프로그래밍 언어로 코드를 작성하는 것이다. 이를 위해서는 알고리즘을 파악해야 한다. 우리 C 프로그램이 디자인한 강의 개요에 따르면 간단한 알고리즘만 익히면 된다. 이러한 기본 알고리즘을 파악한 후에는 문제 분석을 쉽게 완료할 수 있습니다. 예를 들어, 두 숫자의 교환, 세 숫자의 비교, 정렬 선택, 버블 정렬, 이를 위해서는 이러한 알고리즘의 본질적인 의미를 명확히 해야 합니다. 그 중 정렬과 버블 정렬을 선택하는 것은 다소 어렵지만 정렬의 구체적인 과정을 이해하면 코드를 이해하는 것은 어렵지 않습니다. 선택 방법을 사용하여 10 (가장 작은 것부터 가장 큰 것까지) 의 다른 정수를 정렬하면 선택 방법은 다음과 같이 정렬됩니다. 10 요소 a [1] ~ a [/kloc A[ 1] 및 A [2] ~ A [65438+] a[2]~a[ 10] 중 하나가 a [/kloc] 보다 작은 경우 이와 같은 방식으로 * * * 9 라운드 비교에서는 a[ 1] 부터 a[ 10] 까지 내림차순으로 저장되었습니다. 즉, 각 라운드에서 가장 작은 나머지를 찾습니다. 코드는 다음과 같습니다.
For (I =1; 나 & lt=9; I++)
For (j = I+1; J<= 10; J++)
If (a [I] > A[j]
{temp = a [I];
A [I] = a [j];
A [j] = temp;
}
결론: 우리가 이 몇 가지 측면을 잡았을 때, 학생들이 두려움을 극복하고 학습에 지친 감정을 극복하고 수업시간에 수업에 주의를 기울이고, 컴퓨터에서 연습과 디버깅을 할 수 있다면, C 언어는 결코 배우기 어렵지 않다.