c语言程序员

2024-05-08

c语言程序员(通用8篇)

篇1:c语言程序员

程序员之路──如何学习C语言

学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。

一、要读就读好书,否则不如不读

所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。

大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:)

Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。

如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。

切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。

二、Unix/Linux还是Windows,这是个很大的问题

不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。

对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。

所以我建议初学者应该以Visual C++ 6.0(不是VisualC++.NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。

等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格

归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。

三、万事俱备,你就是东风

书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。

学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b)== c和a =(b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。

例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。

也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。

仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。

写到最后,还有非常非常重要的一点没有提及──代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。

篇2:c语言程序员

7.1.1二维数组的定义

前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本小节只介绍二维数组,多维数组可由二维数组类推而得到。

二维数组定义的一般形式是:类型说明符 数组名[常量表达式1][常量表达式2]

其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。例如:

int a[3][4];说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有3×4个,即:

a[0][0],a[0][1],a[0][2],a[0][3]

a[1][0],a[1][1],a[1][2],a[1][3]

a[2][0],a[2][1],a[2][2],a[2][3] 二维数组在概念上是二维的,即是说其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是象一维数组只是一个向量。但是,实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列,即放完一行之后顺次放入第二行。另一种是按列排列,即放完一列之后再顺次放入第二列。

在C语言中,二维数组是按行排列的。即,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节)。

7.1.2二维数组元素的引用

二维数组的元素也称为双下标变量,其表示的形式为:

数组名[下标][下标] 其中下标应为整型常量或整型表达式。例如:

a[3][4] 表示a数组三行四列的元素。

下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。

【例7.6】一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。

可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:

main(){

int i,j,s=0,average,v[3],a[5][3];

printf(“input scoren”);

for(i=0;i<3;i++){

for(j=0;j<5;j++)

{ scanf(“%d”,&a[j][i]);

s=s+a[j][i];}

v[i]=s/5;

s=0;

}

average =(v[0]+v[1]+v[2])/3;

printf(“math:%dnc languag:%dndbase:%dn”,v[0],v[1],v[2]);

printf(“total:%dn”, average);}

程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内循环后再把该累加成绩除以5送入v[i]之中,这就是该门课程的平均成绩。外循环共循环三次,分别求出三门课各自的平均成绩并存放在v数组之中。退出外循环之后,把v[0],v[1],v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。

7.1.3二维数组的初始化

二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。例如对数组a[5][3]:

按行分段赋值可写为:

int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };按行连续赋值可写为:

int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};

这两种赋初值的结果是完全相同的。

【例7.7】

main(){

int i,j,s=0, average,v[3];

int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};

for(i=0;i<3;i++)

{ for(j=0;j<5;j++)

s=s+a[j][i];

v[i]=s/5;

s=0;

} average=(v[0]+v[1]+v[2])/3;

printf(“math:%dnc languag:%dndFoxpro:%dn”,v[0],v[1],v[2]);

printf(“total:%dn”, average);

}

对于二维数组初始化赋值还有以下说明:

可以只对部分元素赋初值,未赋初值的元素自动取0值。

例如:

int a[3][3]={{1},{2},{3}};是对每一行的第一列元素赋值,未赋值的元素取0值。赋值后各元素的值为:0 0

0 0

0 0

int a [3][3]={{0,1},{0,0,2},{3}};赋值后的元素值为:

0 1 0

0 0 2

0 0 如对全部元素赋初值,则第一维的长度可以不给出。

例如:

int a[3][3]={1,2,3,4,5,6,7,8,9};可以写为:

int a[][3]={1,2,3,4,5,6,7,8,9};

数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组。C语言允许这种分解。

如二维数组a[3][4],可分解为三个一维数组,其数组名分别为:

篇3:C语言程序设计教学探讨

关键词:C语言,程序设计,教学方法

C语言以其功能丰富、表达能力强、使用灵活、应用面广、目标程序效率高,可移植性好等优点,广泛应用于数据处理、科学计算、系统软件设计和计算机控制等领域。C语言也是一门典型的结构化程序设计语言,既适合编写应用程序,又适合编写系统程序,实用性很强。通过学习C语言,学生不仅能学习有关程序设计的知识,为以后的学习和工作打好基础,而且还能够逐渐培养缜密的思考能力和细致的观察能力,提高整体的工作、学习及生活能力。在学习C语言时,随着开始几堂课大量难以理解和记忆的新概念、新名词、新术语、新规则的介绍,以及枯燥乏味的例题分析后,学生普遍认为这门课难度大、抽象、不太容易学习;而且C语言规则繁多,使用灵活,在实际应用中,常常出错而不知其所以然,使不少学生在学习时感到困难。在教学过程中,作为教师需要加大教学研究力度,应该根据C语言的特点,把握C语言的重点和难点,深入浅出,把课程内容介绍得通俗易懂,以便学生更好地掌握C语言。本人就近年来对C语言程序设计教学的体会进行交流探讨,以抛砖引玉。

1 结合现实生活,激发学习兴趣

为了激发学生对C语言的学习兴趣,通常教师首先会找一些已学课程如数学方面的问题,通过编写C语言程序来实现求解,使学生体会程序设计的用途和一种全新的解决问题的方法。有些教师还会介绍一些趣味性算例,如“鸡兔同笼”、“水仙花数”等,以培养学生的学习兴趣,让大家积极主动、自觉地获取知识,打好学习程序设计语言的基础。整个教学过程中把解题思路、方法和步骤(即“算法”)当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。

这种教学模式是目前许多教师所采取的一种教学方式,也体现出很多的优点。但是由于学生初次学这门课程,这种方法也使得他们的思维受到制约,产生一种印象,即编程就是为了解决某些数学模型。虽然是一些简单的数学问题,但很多学生会联想到数学的其它难题,这使数学基础差的学生产生一种畏惧感,反而会收到不好的教学效果。大量实践证明,学生的确有如此感受,他们需要简单易懂的程序示例。那么,结合现实生活和学习中的简单且常用的实例来说明C语言程序的应用是非常可行的。

本人注意采用大家平时用得较多的软件如Word中的一个应用(英文字母大小写的自动转换)作为教学引入首例,使用C程序实现。通过运行的效果,使学生对C语言有初步的了解;并一直注意采用一些比较常用的软件功能设计如加密、猜拳、图形设计等作为案例来进行教学示例,从而进一步说明学习C语言后能在平时常用的一些应用软件、以后的课程学习及工作应用中做些什么事情,来激发学生的学习兴趣。

2 注重编程细节,培养缜密的思考能力和细致的观察能力

C语言的规则颇多,编写C程序应该严格按照其规则进行程序设计,对初学者而言,常常马虎大意,所编写的程序不能正常编译和执行结果。因此在教学初期,教师必须强调C语言的许多细节问题,让学生的诸多不良习惯扼杀于“萌芽”状态。如学生常常在写程序时出现以下问题:

2.1 标点符号问题

学生在编写程序时,往往忽视标点符号。问题主要表现在:

1)忘记录入标点。C语言中,经常用到各种括号,括号要求成对出现的,并且一条语句的结束需要用分号与另一语句隔开。对初学的学生,他们通常会忽略掉这个细节问题,这需要教师在讲授中明确地指出,让学生弄清楚。特别是括号太多时,一定要养成缩进书写的良好习惯,以减少错误的发生。

2)标点录入错误。要强调不同标点符号的作用和区别,如分号和逗号,“{}”与“[]”,“()”与“<>”等等。在录入程序时,很多学生录入的标点是不正确的。如分号“;”和“;”是有区别的,前者为中文下的标点符号,而后者才是程序中需要的。必须给学生强调程序中所需要的标点符号都应该是英文状态下的。

2.2 字母大小写问题

C语言程序中大小写字母是不同的,所以应严格区分字母的大、小写,一般情况下字母都有小写。此规则一定要讲清楚,让学生记住那些使用大写字母的特例。如符号常量一般都用大写,在用科学计数法表示浮点数中的“E”,弄清该计数法的规则,其中的字母“E”可以不区分大、小写;再如表示16进制数的符号“0x”,其中字母“x”也可不区分大小写等等。在教学过程中,对该类问题应该进行总结、归纳以方便学生掌握。

2.3 容易混淆的符号

C语言中有一些符号很容易混淆,如字母“o”、“O”与数字符号“0”,字母“l”与数字符号“1”,字母“z”与数字符号“2”的区别等等,需要特别提出。

2.4 运算符问题

C语言的一个显著特点是它的运算符丰富,利用这一点可以巧妙地解决许多在其他语言中难以解决的问题,但另一方面,有时也会出现令人混淆的问题,是许多学生在学习C语言时感到比较头疼的,同样需要教师在教学中重点突出讲授。下面就其中几种有代表性的运算符的运算做一些举例说明。

除(/)、求余(%)这两种运算符进行的都是除法运算,但前者结果是取商,而且结果可为整型亦可为实型,且当被除数和除数都为整型时其取整型(相当多的学生在教师讲授时明白,而一旦自己应用于程序编写时就忘记了),当被除数和除数有任何一个为实型则结果取实型;而后者取余运算的结果是取余数,要求被除数和除数必须都为整型,结果也只能取整型。

自增(++)和自减(--)运算,运算量必须是变量(错误:一些学生将符号常量、表达式也用于自增和自减),结合方式都是右结合性(错误:习惯性左结合),区别只在于一个是使变量自增1,一个是使变量自减1,关于它们的用法在此以自增(++)为例。自增形式有两种:1)i++;2)++i。而对于运算规则建议不要急于在此就先说明它们的区别,最好分为两种情况来讲。

第一种情况,当这两种形式中的任何一种单独作为一个C语句存在时,两者可以看作没有差别,都等价于i=i+1;。如:

这三个程序段的分别运行结果是一样的,i的值都为2。

第二种情况,当这两种形式中任何一种和其他的运算符相结合,一起构成一个复合表达式时,两者的运算规则就有很大的差别。而这个很大的差别可归纳为一口决:“名前先取,名后先增”,理解并记住这口诀就用不怕出错了。无论是i++还是++i在此时的操作都可分解为两步:1)取变量i的值参加其他运算;2)变量i自身的值增1;问题就在于这两步谁先执行谁后执行,而口诀的前半句“名前先取”就是指变量名在前就先作第一步,后半句“名后先增”是指变量名在后就先作第二步。

关系运算(或比较运算)表达式求值,表面上运算规则与数学中的比较运算相同,但是有一点要特别注意的是:关系运算表达式在数学中的值是一个逻辑值,“真”或“假”,“成立”或“不成立”,而在C语言中它的值是算术值,当表达式成立时其值为“1”,不成立时其值为“0”,这样就造成了某个表达式在数学上是成立的、合理的,而在C语言中它变成了非法的、不合理的。如表达式88&&x<10,而不能是8

3 因材施教,任务驱动学习

在C语言的教学中,不可避免地会用到大量的数学知识。教师在教学过程中要针对学生的数学知识基础,将教材中涉及到的学生未掌握的数学知识类例题进行更换,避免因数学方面的问题形成教学障碍。

如在设计“循环语句”教学时,可以先给学生讲清楚学习循环语句的用处及优点,介绍学习重点、难点,要求掌握一些程序设计的算法,让他们明确该语句的重要性。如实现求等差数列s=1+2+3+…+n的和时,主要介绍使用循环语句求解,并要求学生掌握其求解方法,并按照此方法推广,以掌握算法思想,然后再通过作业的形式编写累加算法的相关程序,如求s=1!+2!+3!+…+n!等。

在下面这个图形的输出设计教学中,

本人先比较详细地介绍程序的实现方法,然后要求学生在掌握的基础上自行编写这个图形经过变形后得到的图形的程序代码,图形的变形包括颠倒、塔状、旗状、倒三角等,让学生带着任务学习,在总结中提高编程水平。

学生通过自己的练习不断总结编写循环程序的经验,体会循环的思想,使得他们对循环语句有更深的理解和认识,从而达到较好的教学效果。

4 注重实践教学,提高动手能力

C语言的学习,不仅要掌握理论知识,而且实践操作的经验积累也是非常重要的。教师在讲授C语言时,不能忽视学生上机实践课的教学。

有些教师认为,上机课就是让学生自由练习,及时为有疑问的学生解决问题。实际上这种教学辅导方式是不合理的,应该在以下方面进行改进:

(1)学生上机应有明确的练习目标,提高编程效率。教师要结合上课的理论知识,确定上机课要完成的目标,有目的地给学生安排上机实验的任务;并且引入相关的程序实例,逐步分析解决该程序的思路和相关的程序代码,让学生了解如何下手去编写程序。

(2)根据引入的程序实例再扩展开,让同学们自己动手完成相关的程序代码。

(3)鼓励学生相互讨论、共同完成,鼓励公开自己的程序设计,评讲相关的程序代码,并引出新的程序,引导学生自己独立完成。

(4)整个上机课堂中教师随时走动,进行课堂答疑,并敦促学生完成相关程序编写。

C语言具有许多的优点,是使用性很强的程序设计语言之一,它的知识点比较多,初学的学生不好掌握。这就要求教师在教学过程中,注重条理性,多从技巧性入手,把一些琐碎复杂的规则用一些简洁、形象的语言来描述代替,提高教学效率,降低学生学习难度,激发他们的学习兴趣,这样才有可能达到良好的教学效果。

参考文献

[1]谭浩强.C语言程序设计[M].2版.北京:清华大学出版社,1998.

[2]李凤霞.C语言程序设计[M].北京:北京理工大学出版社,2001.

[3]谭浩强,张基温,唐永兴.C语言程序设计教程[M].北京:高等教育出版社,1992.

篇4:浅探《C语言程序设计》教学

关键词:C语言;项目化教学;教学方法

中图分类号:TP312.1-4 文献标识码:A 文章编号:1674-7712 (2014) 18-0000-01

《C语言程序设计》作为计算机专业的基础课,在整个课程体系中占有重要地位。在C语言教学过程中,教师的教学方法和学生的理解接受能力的差异,对教学效果都会产生直接的影响。总结多年来的教学经验和教学体会,结合学生在学习程序设计类课程的思维规律和模式,把一些经验和方法总结出来,希望能对C语言教学有所帮助。

一、现行教学和学习中存在的问题

现行教学中理论课与实践课相对分离,不能相互促进。理论课中往往只注重对教材知识的分析和灌输,而在实践课程中,老师很难监控到每个学生,了解他们是否都在认真编写、调试程序。这就造成理论课没有起到为实践课打基础的作用,实践课也没有起到巩固、应用理论课的作用。《C语言程序设计》是一个逻辑性很强的课程。学生在面对具体的程序设计时遇到的问题与教材中的内容相距甚远,这使大多数同学感到无从下手。这其中的原因可以分成两类:一方面目前高校使用的大多数教材中,结构都基本相同。在每一章介绍完了概念之后,提供一些例题解释相关概念的使用方法,并在章节结束后针对本章中出现的内容提供一些练习题。考试也主要是测试学生对于教材内容的掌握程度,而与实际应用相距较大。这种考试实际上主要是测试学生对书本中的基本知识的掌握程度,而忽略了对学生解决实际问题的能力的培养。另一方面为了应付考试,学生更多注意的是教材中的典型例题与老师指定的重点内容,对于程序的系统概念没有真正理解,特别是没有程序整体设计的概念。这样做的结果就是学生在学习时一切围绕老师讲课的内容,特别是老师讲授的例题。学生在学习的过程中,没有注意如何综合运用相关内容来解决具体问题,导致学生在学完程序设计课程进入应用阶段时,面对具体的专业设计要求无从下手。

二、提高教学效果的方法和途径

(一)明确课程目标。本课程的目标主要是提高学生解决实际问题的能力,适应社会需求。对C语言程序设计课程的教学而言,强调实践性是在教学中特别重要的问题。老师的教学不应仅仅是传授知识,应该以培养学生的实际应用能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序,一些细节、具体规则和进一步的知识可以让学生在今后的应用中来不断学习和掌握。教师应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。

(二)进行教学改革。1.教学内容改革。高职学校学生的培养就是要直接面对社会需求,招之即能用。因此,程序设计课程要以社会对编程能力的需求和技术发展为依据,调整教学大纲和教学内容,以适应技术岗位能力要求,设计课程体系。在课程设置与建设中,要充分体现教学内容在训练和提高学生实践能力方面的要求,强化学生的实际开发和应用能力。总结本人多年的教学经验,结合其他老师成功的教学方法,采用项目化教学方法可以达到很好的效果。这个项目应具有以下几个特点:(1)实用性。本项目就是一个具体的实际需求,是解决现实性中一个实际问题而设计,这样也能提高学生的兴趣和热情;(2)完整性。本项目的程序设计是系统的、完整的,要能全面运用整个课程学习的知识,案例的设计贯穿整个课程的学习,随着课程的学习不断完善。

2.改变教学思想和方法。培养学生对C语言的兴趣及正确的思维模式。《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程,显得抽象、复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。在教学过程中,先介绍项目的整个程序设计框架,目的是使学生先对程序有个初步的印象,再结合教材,简单介绍该例子中用到的语句,让学生对该语言的学习有一个大概的了解,避免学生对学习语言望而生畏。整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点,从而让学生明白如何分析、解决实际问题,逐渐培养学生进行程序设计的正确思维模式。计算机语言程序设计中算法是其灵魂,是教学重点,也是教学难点,而语言只是表示形式。没有正确的算法,计算机将解决不了任何问题。对于C语言所涉及到的算法,应进行部分精讲多练。通过案例分析,重点讲解程序设计的思想和方法,辅以語言知识的介绍,将课程内容分为若干个主题,以项目程序设计为贯穿各主题的主线。每个主题的教学过程由“要点讲解”、“练习/上机实践”和“疑难解答”三个阶段组成,然后提出项目中的问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养。整个课程教学围绕一个工程项目进行,通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高。将C的知识点都溶化到项目的程序编写中。

3.改革课程考核方式。(1)平时上机训练时给学生留一些编程习题,每次根据学生编写情况进行测评并占据期末总成绩30%;(2)期末前,要求学生完成本课程项目的整体设计,考核学生综合解决问题的能力,占据期末总成绩30%;(3)期末进行理论考试,占期末总成绩的40%。

(三)展示学生作品,激发学生的学习欲望。计算机软件课程具有多样性、复杂性和求异性特点,我们要针对每个学生任务完成的情况,让同学们展示自己的学生成果,及时肯定学生的成绩,这样会有利于激发学生的学习热情,保持学生的学习兴趣,对学生的后续学习将产生强大的动力和自信心。

(四)培养学生的自学能力和创造性。学生学习计算机语言的最终目的是编写满足实际需求的程序,所以在教学中教授的不仅仅是具体语言的语法知识,更重要的是通过这门语言学习,培养学生遇到实际问题自己分析问题、解决问题的能力。我们可以通过给学生布置作业的形式让同学们自学,老师既要要求学生独立思考、自主学习,又要鼓励学生间进行协作学习。教师可以分配一些比较复杂的问题,由几个学生组成一个小组合作解决,这样同学们可以互相探讨学习方法,协作解决一些遇到的问题。通过解决问题,锻炼学生综合应用知识的能力、培养其创造性和合作精神。

参考文献:

篇5:程序员C语言必背

Build-infunction内置函数

UserDefinedFunction自定义函数 prototype原型 void空值

Calledfunction被调函数 Callingfunction调用函数 return返回 scope作用域 auto自动变量

Register寄存器变量 extern外部变量

Formalparameter形式参数 Actualparameter实际参数 queue队列

Puts()把字符串数组输出到显示器 strlen()计算字符串的长度 strcpy()复制字符串 strcmp()字符串比较 strcat()字符串连接 struct定义结构 stack栈

Structuredprogramming结构化程序member成员

Assignmentoperator赋值运算符 Recursivefunction递归函数 Random随机数 power幂

Parameter参数

Parameterizedfunction参数化函数 Localvariable局部变量 Globalvariable全局变量 static静态变量

Callbyreference传值调用 Callbyvalue引用调用 String字符串

Stringliteral字符串常量 sequence序列

篇6:程序员学习C语言的十大好处

凡是程序员都知道C语言也都学习过C语言,因为它是程序员最基础的学习内容,往往最基础的也是最重要的并且是对我们最有帮助的。那就让我们来谈谈程序员学习C语言的十大好处吧!

1)相比较其他的编程语言(像C++,JAVA),C语言是个低级语言。从总体上来说,低级的编程语言可以让你更好的了解计算机。

2)设备驱动程序和操作系统只能用C语言来编写。现在,你可能还从来没有编写过一个设备驱动程序或者一个操作系统,但是如果你需要去修改他们的时候,怎么办?

3)如果你想要得到一份编写微控制器程序的工作的时候,该怎么办?他们都是用C语言编写的。就因为不想学习一门新的语言,你就准备限制你能得到工作的机会吗?

4)C的程序比其他用别的语言写的程序,实现相同的功能,它用的代码行数更少,而它带来的运行效率却更快。有时候,你的程序所需要的速度,中国自学编程网,只有C语言能做到。

5)如果你学习过C语言,你就能学习现在任何的高级编程语言。因为所有的高级语言都是以C语言为基础的(像JAVA,C++,C#等等)。

6)因为C语言已经存在很多年了,它有广泛的使用团体并且有大量的现成代码可以利用。这就使你能在过去程序的基础上,快速和高效的编写新的算法和函数。

7)C语言是一个开源组织的语言。一个开源组织的产物--LINUX,就是用C语言写的。如果你会C语言,你就能参加这个组织并且还能向众多的开源组织投稿,比如参加Source Forge并且给他们投稿。

8)C语言是唯一一个向你阐述指针的本质的语言。而C#和Java干脆跳过了指针这个题目。可是指针确实使C语言变得更加强大。

9)找编程开发方面的工作时,C语言仍然是最普遍需要的语言。所以它值得你花时间去学会它。

10)任何里面有微处理器的设备都支持C语言。从微波炉到手机,都是由C语言技术来推动的。

篇7:C语言程序员必读的5本书籍

这本书由C语言之父合著编写。它提供了对C语言的更好见解。比如在C语言中的控制流、运算符、数据结构和函数构造等方面,这本书都有自己的解释。书中所有概念都有合适的例子,以助读者理解。如果你想要学习一种更好的编程范式,代码重用或是注释的重要性。那么,这本书最适合你。书后的系列练习很有挑战性,可以让你通过每一个练习有所提高。

这本书并不好读。但是,这是必读的一本书。我建议,你在读完一本简单的教程之后,再阅读这本书。书中有很多章节需要很长的时间,才能深入理解和掌握。

C 语言程序员必读的书2、《C语言程序设计:现代方法》

这本书以一种独特的方法解读了C语言。C语言已经经历了一些变化,这本书高效介绍了这些变化。书中的程序都是用纯C代码编写,使得程序有很好的可移植性。这本书鼓励读者独立思考,并且鼓励你找到更有效的解决问题的方法。对C语言感兴趣的学生,这是一本很好的课堂教材。

C 语言程序员必读的书3.《Absolute Beginner’s Guide To C》第二版,作者 Greg Perry

篇8:C语言程序设计教学探讨

《程序设计基础》课程是计算机科学与技术专业本科教育的必修课程,多数学校选择了C语言作为入门课程。其主要原因在于,C语言是当今最流行的程序设计语言之一,其功能强大,语言严谨,对编写需要硬件进行操作的场合优于其它高级语言,适用于各种操作系统,且数据类型丰富,表达方式灵活实用。作为一门计算机专业学生学习程序设计的入门语言,其入门门槛并不高,但在深入学习之后,其严谨的语法构成对于学习其他编程语言有良好的辅助作用。

我校是一所独立院校,目标是应用型本科人才的培养,学生整体程度比专科生略好,但和重点院校学生相比,还是有一定差距。他们的特点是,好奇心强,理解能力参差不齐,对于单纯的理论学习容易产生倦怠感。对于这种程度的学生,要注重教学方式的调整,才能达到较好的教学效果。由于C语言所涉及的概念比较复杂,规则繁多,使用时容易出错且初学者不易修改,C语言最终目的是教会学生如何编程,而不仅仅局限于语法的使用。不少学生在听课时觉得不得要领,或是对语法成分明确却不会应用,这就要求变一贯照本宣科的教学方式,培养学生具有基本的算法思想,才能达到最终的目的。

1 关于教学方法

俗话说得好,“兴趣是最好的老师”。一门课在刚开始的时候往往是充满神秘感的,第一堂课的成功关系到学生对这门课程的兴趣。作为大一的新生,好奇心还比较强,因此,展示编程的魅力所在,比单纯介绍语言发展史要有意义得多。[1]

建议此时可以展示一些编写得比较优秀、将课本内容应用得比较全面的程序,最好是前几届学生编写的,让学生知道,通过自身的努力学完这门课程之后,可以到达怎样一个境界。同时介绍关于编程有哪些赛事,学院参与了其中的哪些,曾经获得了怎样的名次。学生的目的性明确了,自然就对课程的兴趣有所增加。

平时的授课方式也应做调整,改变传统的教师一味地对着幻灯片进行语法讲解的授课方法,建议教师在介绍代码时打开软件,边讲解边编写和调试,这样学生在看代码的同时,能同时学习编程风格和思维习惯,比单纯看幻灯片的效果要好得很多。教师编程时还可故意错上一两步,让学生自行发现,这样学生的参与度高了,注意力自然比较集中,学习积极性也更高,知识点能掌握得更全面。此外,出错的部分调试时会出现errors提示,修改errors的过程也是一个经验逐步积累的过程,学生在此时可以了解部分errors的调试修改方法,在上机实践的时候践行方法,对能力的提高大有裨益。

2 关于教学内容

C语言的教材种类繁多,但内容上总体上都包括如下几个方面:开篇的C语言发展史、软件的介绍(TC和VC)、流程图,编程部分的基本输入输出语句、分支和循环语句、数组和函数、指针和链表、结构体等。此外,部分书本还有文件输入输出的详细介绍,位运算等。这些内容中的大部分都需要向学生进行详细的介绍,一方面是为了让他们更好地了解高级程序设计语言,另一方面也是为了和后续课程的良好衔接。但若是事无巨细一应介绍,作为初学者的学生会觉得非常枯燥,也很难记住如此多的内容。所以,详略得当就显得非常重要。

(一)开篇部分

对于开篇的C语言发展史、软件的介绍(TC和VC)、流程图部分内容,建议只要简要介绍点到即止即可,毋需让学生在这里耗费太多的精力。缩短学生从开始上课到正式学习编程(主要是基本输入输出)的时间,在他们还对内容充满好奇心的时候就将具体的内容抛出,这样有助于减少额外的干扰。软件使用和程序调试的内容可在之后的授课过程中进行渗透,比在学生一无所知时进行纯讲解效果要好得多。而且作为入门课程的C语言里,并没有用到太艰深的算法,因此流程图一开始只需看懂即可。详细的流程图的画法,包括N-S图等,建议等教学内容完成后再补充讲解,这样才不会喧宾夺主。伪代码的书写也不宜在开篇就做太深入的介绍,会影响到之后对编程语言的理解,干扰到语言的严谨性。

(二)编程部分

编程部分的基本输入输出语句、分支和循环语句、数组和函数、指针和链表、结构体等,是学好C语言的主要组成部分,在其他程序设计语言中,也包含了类似的内容。这部分的内容学生理解起来难度较大,需要详细介绍,所以,在介绍的时候就需要相当的技巧了。

比如基本输入输出语句,根据不同的课本,侧重点也有所不同。部分课本的内容极其详尽,除了包括各种不同的数据类型方面的内容外,还囊括了非常细节的内容,如浮点型和字符型输入和输出的位数、输入时包含的标点等。这些细节问题虽然在编程中因为要求的不同而有可能用到,但是因为有些枯燥,在作为入门课程的时候,会耗掉大量的精力而不得要领。其实这部分的内容大可以化繁为简,仅仅讲授各种不同数据类型的输入输出即可,当学生实际编程需要用到细节内容的时候,再让他们像查参考书一样,对这部分进行详究。往往这个时候学生就会觉得这部分的内容其实并不困难,对此也更加印象深刻。

其次就是循环语句,这对学生来说相对较难的一个知识点。比如在介绍for(表达式1;表达式2;表达式3)语句时,经常会花费教师大量的精力,对各个表达式的用法做详细的介绍,强调其各部分重要性,突出重点,说明语法的各种变形形式。这种介绍方式虽然条理清晰,但在实际教学过程中其实效果寥寥。C语言和外语一样,也是有语感的,在介绍语法的时候,最好的方法是将其融入到大量的例子中,有目的性地进行介绍,效果会事半功倍。建议可以举一些非常具体的例子,比如等求和的例子,以及1到1000之间完全平方数个数等计数的例子。“求和”和“计数”是基本循环语句中最常用的算法,在此时渗透这些算法,之后学生编写这一类内容时就事半功倍。再比如双重循环语句,即所谓的两个for语句的嵌套,常用在排序或是矩阵运算方面,学生入手经常感到非常的艰深。在这方面的经验是,可以先让他们学会输出“*”组成的各种图形,比如输出如下所示的三行三列的三角形:

之后改为由用户输入行列数n,输出n行n列,这样在循环的内容中又加入了交互。在这种基本方式讲解完之后,可以让学生思考如何输出其他不同图形,比如倒三角,等边三角,菱形等。这种图形的输出法即灵活有趣,可以吸引学生的注意力,对循环编写能力的提升又大有益处。

指针方面的介绍主要就是多举例子,这里不再赘述。链表部分建议在介绍代码前,将链表制作方法逐步在黑板上画出来,主要包括链表的建立、添加、修改、删除。这样比单纯用幻灯片进行讲解要好得多。只有理解了思路,才能看得懂代码,要知道程序设计艰深的,从来不是代码的语法本身,而是算法思路!

(三)其他

部分教材到了这里,还剩下文件输入输出、编译处理和位运算这些内容,可根据课时按照需要进行介绍。学生学习到此处,对C语言已经有了一个大致的认识。文件输入输出方式若是时间不够充裕,可捡重要部分稍加介绍,但不建议完全抛弃这部分内容,以避免之后学生遇到该部分内容时一无所知。

3上机课的重要性

实践环节是C语言学习极其重要的一个环节,实践环节没有及时跟上,那么前面的一切方法都是空谈。上机环节是教师发现问题的一个很好的渠道。学生在课堂上的听课效果在这里会得到很好的反馈。

许多学生在这里表现出动手能力的欠缺。建议针对书本各个知识点,有针对性地设计上机实验内容,这样学生才能吃透各个知识点,这也要求教师在这个过程中一定要非常的耐心。因为学生是初学者,对编译调试程序非常陌生,对语法也不熟悉,犯一些很低级的错误是非常正常的。在学生出现问题时,及时帮他们解决问题,他们在学会一些解决问题的方法后,如果能自己独立编写出一些代码,也会比较有成就感。这就从另一个方面加深了他们对课程的好感。多上机练习,练习的对象更广泛一些,题型更灵活一些,那么学生的知识面也会比较宽。虽然说大学强调的是“自学”的过程,但是作为大一的学生,很多人的思维习惯还没有改过来,而且我校学生的整体水平并不高,自我约束能力也比较弱,所以教师有目的性的引导就显得尤为重要。[2]

我们的目标是培养应用型人才,因此,如何使用C语言解决问题,比单纯地如何使用C语言要重要的多!以上是我在C语言教学过程中的一些心得体会,在以后的教学过程中,我也会不断地探索实践,改进方法,以学生为本,努力提高教学质量。

摘要:C语言程序设计是本科计算机专业教育中极其重要的一门课程,这门课程学习的程度好坏,直接影响到后续的一系列课程。通过对近几年该课程教学经验的总结,分析了在教学过程中普遍存在的问题,提出一些适用于我院学生水平下的操作方法,实践表明,这些方法对学生学习C语言有所助益。

关键词:C语言,教学,本科,代码编写

参考文献

[1]杨进,中职C语言程序设计教学探讨[J].科学咨询(科技·管理),2012年7月

上一篇:儿童美术教育的重要性下一篇:第四届全国中小学体育教学观摩展示活动综述