C语言学习心得
林林总总的计算机语言,林林总总的计算机技术,林林总总的计算机书籍让我们初入计算机的菜鸟一次就吓的没有勇气。迷茫和徘徊让我们丧失了时间和信心。没有诀窍吗?有的,看你怎么把握了,接下来我就以C语言为例子,讲一下有关学习的方法和技巧,同时也分享一下我学C的感想。 许多人第一次接触C语言都会觉得C语言难懂和不容易使用,其实就我个人的看法,C语言其实是很基础的汇编语言,除了一些必须要记忆的关键字、语法和库函数,其余的都是需要靠自己的逻辑思维通过这些关键字、语法和库函数来组织或构成一个完整的函数,所以C语言大多数的学习时间都是在锻炼我们的抽象逻辑思维能力。只有当你具有了抽象逻辑思维能力和弄清楚了关键字、语法和库函数的相关知识后,编写C语言就不是难事了。
通过C语言初步的学习后都很容易弄懂关键字、语法和库函数的相关知识,但是由于大部分人因为以前没有接触过电脑或电脑语言的相关知识所以缺乏抽象逻辑思维能力,不知道如何将所学到C语言的知识如何组织和构成一个完整的函数,那么如何来有效的锻炼自己的抽象逻辑思维能力呢?
在这里是我个人的一套自学心得,通过学习后所掌握的知识使用上课老师所提到的案例或找一段简单的完整的案例,然后将案例读懂,也就是把它转换成我们日常所能接受的自然语言(在这里不妨把你所能理解的自然语言写下来)。例如下面这段代码是手工输入两个整数数字并计算两个数字之间从最小的数字开始到最大的数结束其中所有奇数相加的和:
int main(void)
{
首先INT是表示整数形数据的定义,那么接下来有两个未知的整数和一个已知的整数0;这里出现的3个整数数字用C语言里的变量来替代它们,这时第一个数字就用取名为NUM1的变量,第二个数字就用取名为NUM2的变量,第三个数字就用取名为X的变量并且用赋值符号来为它赋予0这个值。
int num1,num2,x=0;
由于知道了有两个未知的整数,所以要通过键盘输入使这两个未知的整数变成已知的整数并且储存在前面所提到的变量中。
scanf("%d%d ",&num1,&num2) ;
得到数字后下面就开始进行一系列的运算和判断,如果NUM1小于NUM2的话最小的数字就是NUM1最大的数字就是NUM2,如果NUM1这个变量不小于NUM2的话就跳过这个{}所包含的内容。开始进行循环。
if(num1 {
NUM1到NUM2之间的数字个数不是固定的,不能得到固定的循环起始点,所以这里的循环起始点就不输入代码中,但是通过题目中的提示知道NUM1这个变量如果大于NUM2的话循环就终止了,而NUM1这个变量还需每循环一次就必须改变其值。由于NUM1到NUM2之间的数字列如1-9每个数字跟其右边的数字都是存在加1的关系,所以这里就可以把NUM1这个值用做循环的“计数器”每循环一次就让NUM1加1,让其跟NUM2做比较是否结束循环。
for(;num1<=num2;num1++)
{
在循环当中将每次循环所改变的变量NUM1的值除以2来判断其是否是奇数,如果用2除后余数为0的话就是偶数(因为偶数是不参加运算的)一旦判断其为偶数就用continue这个关键字来跳出一次循环。
if(num1%2==0)
continue;
那么NUM1的值除以2余数为1的话就是奇数(奇数是要参加运算的)一旦判断其为偶数就用下面这个公式来使其进行相加,因为已知X变量的值是0那么下面的公式就可以理解为假设NUM1=1,X=0+1;这时X的值已经发生变化,X=1;假设NUM1又等于3,X=1+3;以此类推直到循环结束X+NUM1也就结束了。
x=x+num1;
}
}
那么NUM1这个变量不小于NUM2的话NUM1是最大数,NUM2是最小数,开始执行{}内的内容。
else
{
for(;num2<=num1;num2++)
{
if(num2%2==0)
continue;
x=x+num2;
}
}
最后通过显示器输出显示X这个变量的值也就是所有奇数的总和。
printf("%d\n",x);
}
由于计算机读取C语言代码时是从main()函数开始由上自下的逐一读取一条代码并运算的,所以从int num1,num2,x=0;开始来用自己所能接受的自然语言来描述这段代码。
最后将你所记录的自然语言转变成伪代码在转到流程图,这样反复努力多次后,就一定可以达到有效的锻炼自己的抽象逻辑思维能力。另外还需注意的就是自己实在无法理解的地方不妨指出来多多请教老师和懂的同学让他们用自然语言来描述一道,并且记录下来这样可以达到事半功倍的效果。
我觉得入门还是多看些书,多实践,养成良好的编程习惯,在实践的同时多思考问题,多看别人优秀的解题思路与方法,多看别人优秀的代码,尝试自己去实现或者说模仿着去实现,让别人对你的代码多提意见,探究别人的思维过程,增强自己的思维能力,拓展视野,经常看看自己以前写的东西,有空拿出来改良改良,我想每隔一段时间,都会有意想不到的收获。
[[it] 本帖最后由 ryophoenix 于 2008-1-29 22:09 编辑 [/it]]