c语言编程心得交流

时间:2019-05-14 00:24:39下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《c语言编程心得交流》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《c语言编程心得交流》。

第一篇:c语言编程心得交流

“C语言编程心得交流”主题活动策划书

一、活动背景

二、活动目的及意

通过本次活动,希望同学对C语言编程有一个重温二深刻的认识,并且认识到是“从问题到编程”的思考和工作过程,这里既要求掌握严格的科学方法,又要求谨慎灵活的工程能力。要很好地完成程序设计工作,编程者需要充分发挥聪明才智,还要有细致认真、一丝不苟的工作态度。即使将来不从事程序工作,这一课程中的锻炼也可能很重要,尤其对于理科学生,可能弥补其工程方面训练的不足。前些年的程序设计课常用PASCAL、FORTRAN 或BASIC 等语言,目前已转向C 或其

他类C 语言(如C++)。从作为入门课教学语言的角度看,没有一种语具有无可比拟的天然优势,选择时都应考虑其有利方面,也需要克服这种选择带来的不利因素。

三、承办单位

主承办单位:湖南商学院计电学院

承办单位:电信1102班

四.、嘉宾及评委:

计电学院电信班导师曹东波教授、胡松义教授、倪祖旭学长、王思金

学姐等

五、活动时间:2012年月日

六、活动地点

F202多媒体教室

七、活动形式

1主持人引出问题陈述同学所面临的困惑

2班级进行自由发言,交流在编程中的体会与技巧 3曹教授和胡教授进行解答

6赠送礼物

八、Ⅰ活动前的准备

1申请使用教室

2邀请评委及嘉宾,发请帖

3为每位老师准备笔、纸和水。

Ⅱ活动进行

1发放笔、纸和水

2拍摄人员到位

3主持人进行嘉宾介绍

Ⅲ活动后期

1活动拍照留念

2赠送礼物

3打扫卫生

九、活动负责人及策划时间

负责人:电信1102班曹教授,胡教授老师及全班同学策划时间:2012年3月15日

第二篇:嵌入式C语言编程心得

一、.H文件与.C文件的关系:

迄今为止,写过的程序都是一些很简单的程序,从来没有想到要自己写.H文件,也不知道.H文件到底什么用,与.C文件什么关系。只是最近写键盘程序,参考别人的程序时,发现别人写的严格的程序都带有一个“KEY.H”,里面定义了.C文件里用到的自己写的函数,如Keyhit()、Keyscan()等。

经过查找资料得知,.H文件就是头文件,估计就是Head的意思吧,这是规范程序结构化设计的需要,既可以实现大型程序的模块化,又可以实现根各模块的连接调试。

1、.H文件介绍:

在单片机C程序设计中,项目一般按功能模块化进行结构化设计。将一个项目划分为多个功能,每个功能的相关程序放在一个C程序文档中,称之为一个模块,对应的文件名即为模块名。一个模块通常由两个文档组成,一个为头文件*.h,对模块中的数据结构和函数原型进行描述;另一个则为C文件*.c,对数据实例或对象定义,以及函数算法具体实现。

2、.H文件的作用

作为项目设计,除了对项目总体功能进行详细描述外,就是对每个模块进行详细定义,也就是给出所有模块的头文件。通常H头文件要定义模块中各函数的功能,以及输入和输出参数的要求。模块的具体实现,由项目组成根据H文件进行设计、编程、调试完成。为了保密和安全,模块实现后以可连接文件OBJ、或库文件LIB的方式提供给项目其他成员使用。由于不用提供源程序文档,一方面可以公开发行,保证开发人员的所有权;另一方面可以防止别人有意或无意修改产生非一致性,造成版本混乱。所以H头文件是项目的详细设计和团队工作划分的依据,也是对模块进行测试的功能说明。要引用模块内的数据或算法,只要用包含include指定模块H头文件即可。

3、.H文件的基本组成 /*如下为键盘驱动的头文档*/ #ifndef _KEY_H_ //防重复引用,如果没有定义过_KEY_H_,则编译下句 #define _KEY_H_ //此符号唯一,表示只要引用过一次,即#i nclude,则定义符号_KEY_H_ ///////////////////////////////////////////////////////////////// char keyhit(void);//击键否

unsigned char Keyscan(void);//取键值

///////////////////////////////////////////////////////////////// #endif.c文件是整个程序中的一个或几个函数组成,在别的.C文件里可以调用它,不只是在主函数中。这样做可以增强程序的模块化,提高程序的可读性。当编制好一个模块时你可以保存在一个工程下,文件名改为**.C。这样在另一个.C文件中的文件头处只要你对它进行说明就可以调用它。比如#include string.c 那么你就可以在你说明了的.C文件中调用它,这样一个模块可以在很多处调用,使得编程复杂度降低。程序编译时把你所说明的文件复制到你调用处程序就可以运行了。

.H文件是对单片机一些端口及一些常用的程序的库说明,比如我们在程序中用到端口一即P1,我们能够用它是因为在库中已对它进行了说明,对P1赋予了一个端口地址,这样程序编译是才不会出错,不然会提示你UNDIFINED。

分开多个文件写就有很多的.c和.h文件了,当然要加上#include语句把其它的包含进来,分开多个文件写有利于管理,其实我觉得.c和.h区别不是很大,只是.h一般都是写定义、声明的东西,.c文件一般都写函数的具体实现

h文件就是头文件,一般进行声明、宏定义等。比如要编写流水灯的程序,h文件这样写: #ifndef _LED_H #define _LED_H define LED_ON P1.1=1;define LED_OFF P1.1=0;//还可以进行函数的声明 //void LED_twikle(void);#endif

在你的c文件中要加入#include“LED.h”

二、尽量使用宏定义#define

开始看别人的程序时,发现程序开头,在文件包含后面有很多#define语句,当时就想,搞这么多标示符替换来替换去的,麻不麻烦啊,完全没有理解这种写法的好处。原来,用一个标示符表示常数,有利于以后的修改和维护,修改时只要在程序开头改一下,程序中所有用到的地方就全部修改,节省时间。

#define KEYNUM 65//按键数量,用于Keycode[KEYNUM] #define LINENUM 8//键盘行数 #define ROWNUM 8//键盘列数 注意的地方:

1、宏名一般用大写

2、宏定义不是C语句,结尾不加分号

三、不要乱定义变量类型

以前写程序,当需要一个新的变量时,不管函数内还是函数外的,直接在程序开头定义,虽然不是原则上的错误,但是很不可取的作法。

下面说一下,C语言中变量类型的有关概念: 从变量的作用范围来分,分为局部变量和全局变量:

1、全局变量:是在函数外定义的变量,像我以前定义在程序开头的变量都是全局变量,这里我就犯了一个大忌,使用了过多的全局变量。

带来的问题有两个:一是,全局变量在程序全部执行过程中都占用资源;二是,全局变量过多使程序的通用性变差,因为全局变量是模块间耦合的原因之一。

2、局部变量:在函数内部定义的变量,只在函数内部有效。从变量的变量值存在的时间分为两种:

1、静态存储变量:程序运行期间分配固定的存储空间。

2、动态存储变量:程序运行期间根据需要动态地分配存储空间。具体又包括四种存储方式:auto, static ,register, extern

1、局部变量,不加说明默认为auto型,即动态存储,如果不赋初值,将是一个不确定的值。而将局部变量定义为static型的话,则它的值在函数内是不变的,且初值默认为0。

static unsigned char sts;//按键状态变量 static unsigned char Nowkeycode;//此时的键码 static unsigned char Prekeycode;//上一次的键码

static unsigned char Keydowntime;//矩形键盘按下去抖时间变量 static unsigned char Keyuptime;//矩形键盘释放去抖时间变量 static unsigned char Onoffdowntime;//关机键按下去抖时间变量 static unsigned char Onoffuptime;//关机键释放去抖时间变量

static unsigned char onoff_10ms;//判断关机键中断次数变量,累计150次大约为3S,因为前后进了两个10ms中断

2、全局变量,编译时分配为静态存储区,可以被本文件中的各个函数引用。如果是多个文件的话,如果在一个文件中引用另外文件中的变量,在此文件中要用extern声明。不过如果一个全局变量定义为static的话,就只能在此一个文件中使用。

static 函数内部函数和外部函数

当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。

内部函数(又称静态函数)

如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。

定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:

static 函数类型 函数名(函数参数表){„„}

关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。

使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。外部函数

外部函数的定义:在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:

[extern] 函数类型 函数名(函数参数表){„„} 调用外部函数时,需要对其进行说明:

[extern] 函数类型 函数名(参数类型表)[,函数名2(参数类型表2)„„];

四、特殊关键字const volatile的使用

1、const const用于声明一个只读的变量

const unsigned char a=1;//定义a=1,编译器不允许修改a的值 作用:保护不希望被修改的参数 const unsigned char Key_code[KEYNUM]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10, 0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18, 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20, 0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30, 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38, 0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40, 0x41 };//键码

const unsigned char Line_out[LINENUM]={0xFE,0xFD,0xFB,0xf7,0xEF,0xDF,0xBF,0x7F};//行输出编码 const unsigned char Row_in[ROWNUM]={0xFE,0xFD,0xFB,0xf7,0xEF,0xDF,0xBF,0x7F};//列输入编码

2、volatile 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。

static int i=0;int main(void){...while(1){ if(i)dosomething();} } /* Interrupt service routine.*/ void ISR_2(void){ i=1;} 程序的本意是希望ISR_2中断产生时,在main当中调用dosomething函数,但是,由于编译器判断在main函数里面没有修改过i,因此可能只执行一次对从i到某寄存器的读操作,然后每次if判断都只使用这个寄存器里面的“i副本”,导致dosomething永远也不会被调用。如果将将变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。一般说来,volatile用在如下的几个地方:

1、中断服务程序中修改的供其它程序检测的变量需要加volatile;

2、多任务环境下各任务间共享的标志应该加volatile;

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

五、C语言中extern的用法

extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

另外,extern也可用来进行链接指定。

extern 变量

在一个源文件里定义了一个数组:char a[6];在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案与分析: 1)、不可以,程序运行时会告诉你非法访问。原因在于,指向类型T的指针并不等价于类型T的数组。extern char *a声明的是一个指针变量而不是字符数组,因此与实际的定义不同,从而造成运行时非法访问。应该将声明改为extern char a[ ]。2)、例子分析如下,如果a[] = “abcd”,则外部变量a=0x12345678(数组的起始地址),而*a是重新定义了一个指针变量a的地址可能是0x87654321,直接使用*a是错误的.3)、这提示我们,在使用extern时候要严格对应声明时的格式,在实际编程中,这样的错误屡见不鲜。4)、extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。

函数

extern 函数1 常常见extern放在函数的前面成为函数声明的一部分,那么,C语言的关键字extern在函数的声明中起什么作用? 答案与分析: 如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别: extern int f();和int f();当然,这样的用处还是有的,就是在程序中取代include “*.h”来声明函数,在一些复杂的项目中,我比较习惯在所有的函数声明前添加extern修饰。extern 函数2 当函数提供方单方面修改函数原型时,如果使用方不知情继续沿用原来的extern申明,这样编译时编译器不会报错。但是在运行过程中,因为少了或者多了输入参数,往往会照成系统错误,这种情况应该如何解决? 答案与分析: 目前业界针对这种情况的处理没有一个很完美的方案,通常的做法是提供方在自己的xxx_pub.h中提供对外部接口的声明,然后调用方include该头文件,从而省去extern这一步。以避免这种错误。宝剑有双锋,对extern的应用,不同的场合应该选择不同的做法。extern “C” 在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢? 答案与分析: C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。下面是一个标准的写法: //在.h文件的头上 #ifdef __cplusplus #if __cplusplus extern “C”{ #endif #endif /* __cplusplus */ „ „ //.h文件结束的地方 #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */

六、c++中-> 是什么意思,如何使用

->是指针的指向运算符,通常与结构体一起使用。

具体使用方法可以参考如下程序: #include struct stu // 定义一个结构体 { char name[10];// 姓名 int num;// 学号 int age;// 年龄 };void main(){ struct stu *s;// 定义一个结构体指针 char str[]=“ZhangLi”;s->name = str;// 对结构体中的成员变量name进行赋值 s->num = 2015120;// 对结构体中的成员变量num进行赋值 s->age = 18;// 对结构体中的成员变量age进行赋值 }

七、warning: last line of file ends without a newline 怎么解决?

原因:编译器要求有空行作为程序的结束

解决办法:将光标移到提示告警的代码最后一行(有代码的那一行)然后按住del键,直到确定下面没有回车行,最后回车一下或多下即可。

八、__I、__O、__IO volatile是什么?怎么用?

__I、__O、__IO是什么意思?

这是ST库里面的宏定义,定义如下:

#define __I volatile const /*!< defines 'read only' permissions */ #define __O volatile /*!< defines 'write only' permissions */ #define __IO volatile /*!< defines 'read / write' permissions */

显然,这三个宏定义都是用来替换成 volatile 和 const 的,所以我们先要了解 这两个关键字的作用:

volatile

简单的说,就是不让编译器进行优化,即每次读取或者修改值的时候,都必须重新从内存或者寄存器中读取或者修改。

一般说来,volatile用在如下的几个地方:

1、中断服务程序中修改的供其它程序检测的变量需要加volatile;

2、多任务环境下各任务间共享的标志应该加volatile;

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到 volatile变量。不懂得volatile的内容将会带来灾难。假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。

1)一个参数既可以是const还可以是volatile吗?解释为什么。

2);一个指针可以是volatile 吗?解释为什么。

3);下面的函数有什么错误:

int square(volatile int *ptr){

return *ptr * *ptr;}

1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。

2);是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。

3)这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:

int square(volatile int *ptr){ int a,b;a = *ptr;b = *ptr;return a * b;}

由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:

long square(volatile int *ptr){ int a;a = *ptr;return a * a;}

const 只读变量,即变量保存在只读静态存储区。编译时,如何尝试修改只读变量,则编译器提示出错,就能防止误修改。

const与define

两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些(其实const定义的是只读变量,而不是常量)。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内置函数。const和define定义的常量可以放在头文件里面。(小注:可以多次声明,但只能定义一次)

const与指针

int me;

const int * p1=&me;//p1可变,*p1不可变 const 修饰的是 *p1,即*p1不可变

int * const p2=&me;//p2不可变,*p2可变 const 修饰的是 p2,即p2不可变

const int *const p3=&me;//p3不可变,*p3也不可变 前一个const 修饰的是 *p3,后一个const 修饰的是p3,两者都不可变

前面介绍了 volatile 和 const 的用法,不知道大家了解了没?了解了后,下面的讲解就更加容易了:

__I :输入口。既然是输入,那么寄存器的值就随时会外部修改,那就不能进行优化,每次都要重新从寄存器中读取。也不能写,即只读,不然就不是输入而是输出了。

__O :输出口,也不能进行优化,不然你连续两次输出相同值,编译器认为没改变,就忽略了后面那一次输出,假如外部在两次输出中间修改了值,那就影响输出

__IO:输入输出口,同上

为什么加下划线?

原因是:避免命名冲突

一般宏定义都是大写,但因为这里的字母比较少,所以再添加下划线来区分。这样一般都可以避免命名冲突问题,因为很少人这样命名,这样命名的人肯定知道这些是有什么用的。

经常写大工程时,都会发现老是命名冲突,要不是全局变量冲突,要不就是宏定义冲突,所以我们要尽量避免这些问题,不然出问题了都不知道问题在哪里。

九、C语言中关于枚举类型

1.enum 枚举的定义

枚举类型定义的一般形式为: enum 枚举名{ 枚举值表 };在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。例如:

该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。

2.枚举变量的说明

如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。

设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式: enum weekday{ sun,mou,tue,wed,thu,fri,sat };enum weekday a,b,c;或者为:

enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;或者为:

enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

3、枚举类型变量的赋值和使用 枚举类型在使用中有以下规定:

a.枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon;都是错误的。

b.枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。int main(){ enum weekday { sun,mon,tue,wed,thu,fri,sat } a,b,c;a=sun;b=mon;c=tue;printf(“%d,%d,%d”,a,b,c);return 0;} 说明:

只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如: a=sum;b=mon;是正确的。而: a=0;b=1;是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。如:a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue;还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。int main(){ enum body { a,b,c,d } month[31],j;int i;j=a;for(i=1;i<=30;i++){ month[i]=j;j++;if(j>d)j=a;} for(i=1;i<=30;i++){ switch(month[i]){ case a:printf(“ %2d %ct”,i,'a');break;case b:printf(“ %2d %ct”,i,'b');break;case c:printf(“ %2d %ct”,i,'c');break;case d:printf(“ %2d %ct”,i,'d');break;default:break;} } printf(“n”);return 0;}

第三篇:语言交流培训心得

语言交流基本功培训心得

语言是人与人交流中不可缺少的重要工具,它既是一门文字,又是一门艺术。

在我们的衣食住行中,没有一样是离得开语言的沟通与表达的,从而语言就成了一门技巧。会说话的人就会让人感到春日般的温暖,而不会说话的人就会让人感到冬日般的寒冷。流传青史的诸葛亮曾经在赤壁战争中说过;“三寸之舌,强于百万之兵。”从而可以见得语言表达交流的重要性。对于教师来说,语言交流是我们需要掌握的基本之一。在课堂教学过程中,教师语言不是单向的,而是具有交互性。只有在交流中,教师的语言信号才能有效地发挥作用,师生的思维才能碰撞出火花。

作为一个数学教师则应该使自己的语言具有规范性,启发性,真实性,生动直观性,流畅性,艺术性,创造性和愉悦性。为了提高自身的教学水平,我认真阅读了有关语言交流基本功的文章,观看了有关语言交流基本功的视频。收获良多,受益匪浅。现将学习体会小结如下:

1、讲述与讲授:讲述注重的是陈述,是教师用口头语言直接向学生描绘事例、论证事理的一种传授知识的基本方法,它以教师的叙述和说明方法达到目的。而讲授是注重给予,给予学生知识、方法、帮助学生形成正确的认识。讲授中有师生的情感交流,师生相互作用、相互强化;在讲授时教师还可以根据听课对象、设备和教材对讲授内容灵活处理。对于一些抽象性的知识,我们可以利用画图,多媒体演示,边演示边讲解,使学生能很快的掌握知识。

2、提问和追问:课堂提问是教师提出问题,启发引导学生根据已有的经验回答问题,从而获得新知识的方法,是数学课堂教学使用率最高的一种教学手段;而追问,是使原来表面的问题向思维深处发展的主要途径,通过环环紧扣的追问,充分地激发学生的思维活动,使学生通过独立思考获取知识,智力活动的积极性得到充分调动,对发展学生的数学语言表达能力起到了极大的推动作用。在这一方面,我们要注重以下几点:一是要让学生会回答问题,要使学生能正确,全面的回答问题,二是要让学生敢于回答。

3、倾听与对话:倾听的意义在于心灵上的沟通。在学生需要帮助时,教师要知晓学生的“困惑”,在学生进行思维时,教师要及时捕捉创新的“火花”并及时给予学生帮助,使学生茅塞顿开,实现师生共鸣。教师让学生发表意见时,就要求学生认真听,这就使得学生必须注意倾听,做到教学活动、学习活动都能人人参与,一个不落,才能保证课堂教学在“真正”的对话中进行,才能实现“顺学而导”,保证学生在课堂上的主体地位。

4、使用无声语言:无声语言主要有整洁端庄的服装语、表情达意的目光语、亲切自然的微笑语和得体适度手势语。在课堂上,教师往往通过侧身倾听、点头微笑、竖起大拇指等动作和表情,使学生感觉到自己被尊重、被信赖、被关爱,感觉到教师如同一位循循善诱、和蔼可亲的朋友,感觉到课堂就像自己的家一样熟悉,亲切,使学生的学习状态从倦怠到积极,极大地提高了学生的参与度,收到事半功倍的效果。

通过语言交流基本功的学习,它引发我更多的思考,也让我收获了很多的知识。我将带着这些思考和理论在今后的教学实践中不断的去尝试和运用,并最终容纳吸收。同时,我也将继续学习这方面的知识,并学以致用,在教学中不断尝试,并积极反思、总结。我深信,在以后的教学中,我的课堂教学一定会更上一个新台阶!

第四篇:编程语言学习心得

程序语言学习的总结

通过两年的学习,我们基本上掌握了C语言,C++和C#三个编程课程。对于程序设计语言的学习,分为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。课程上的安排除了课堂讲授以外,学院设有专门课堂到实验室进行上机操作实验。

要利用c语言学到的知识编写c语言程序,即把c语言作为工具,通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。通过上机实验来验证自己编制的程序是否正确。在这种思想支配下,可能你会想办法去“掩盖”程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。

在原有的C语言的基础知识之上,初步接触C++时感到比较简单易懂。但随着之后的步步深入学习,C++的不同之处以及其优势逐。从第二章引入了C++简单程序的设计。包括一些C++语言的概述,基本数据类型和表达式,数据的输入与输出,算法的基本东芝结构,以及自定义类型数据等知识。此部分多与C语言相似。之后又学习了函数的相关内容,这里学到了新的知识要点----函数重载。该内容尤其在现在做课程设计的时候尤为重要。类是C++语言的精华之所在,在学习中,我感觉到类和C语言中的结构体有很大的相似之处,但在类中的构造函数、拷贝构造函数以及类的组合,经常弄混淆一些概念。在这之后又学习了类的继承与派生。这使得类与类之间形成了树状图的模型,各子类可以访问到父类的一些数据成员,同样也实现了数据的之间的“共享”。我个人在编写派生类的构造函数和拷贝构造函数时,感觉很不熟练,后面章节的多态性主要学习了运算符的重载,其本质就是函数的重载。

在学习C#中,类是具有相同特性和行为的对象的抽象。它使用关键字class声明的。在c#中仅允许单个继承,类只能从一个基类继承实现。但是一个类可以实现一个以上的接口。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等局可以看对象,它不仅表示具体的事物,还能表示抽象的规则、计划或者事件。接口只是包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成的。接口可以是命名空间或类的成员,并可以包含下列成员:每个C#可执行文件都有一个入口—Main方法:static void Main()修饰符public表示可以在任何地方访问该方法。所以可以在类的外部调用它。修饰符static表示方法不能在类的实例上执行,因此不必先实例化类在调用。在变量声明时:变量是类或者结构中的字段,如果没有显示初始化,创建这些变量时,其值就是默认的0。变量是方法的局部变量就必须在代码中显示初始化,之后才能在语句中使用它们的值。

课堂上要讲授许多关于语法规则,要使用这些工具解决问题,通过多次上机练习,对于语法知识有了更深刻的认识,在理解的基础上就会自然而然地掌握。一个程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。通过上机实验,熟练地掌握开发环境,为以后真正编写计算机程序解决实际问题打下基础。

第五篇:C语言编程

#include(stdio.h)

main()

{ int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};

char again='y';

while(again=='y'){ srand((int)time(0));

while(i4){ k=(int)rand()%10;

for(j=0;ji;j++)if(k==question[j]){ k=-1;break;}

if(k==-1)continue;question[i]=k;i++;}/*while i*/

for(i=8;i0;i--)/*还有8次机会*/

{ A=0;B=0;printf(“n你还剩下%d次机会。”,i);

printf(“n请输入四个0-9之间的数字,中间用空格隔开n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]);

for(j=0;j4;j++)

for(k=0;k4;k++)

{ if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/

if(A==4){ again='0';

printf(“n你赢了,还继续猜吗?(y/n)”);

while(again!='y'&&again!='n')

scanf(“...%c”,&again);break;}/*if*/

printf(“n%dA%dB”,A,B);if(i==1){ again='0';

printf(“n你输了,正确答案是”);

for(j=0;j4;j++)

printf(“%dt”,question[j]);

printf(“n还继续吗?(y/n)”);

while(again!='y'&&again!='n')scanf(“%c”,&again);

printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感谢您玩这个游戏。”);}

下载c语言编程心得交流word格式文档
下载c语言编程心得交流.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    编程心得

    1. 对于液晶点阵,做任何图形的子函数,一定要注意,必须为整数,即像素必须为整数, 否则将出现错误,比如划三角形,必须让三角形的斜率为直线,不然不能得到预期的结果。 2. 对于变量的定义......

    编程语言的介绍

    本文由2008146683贡献 doc1。 编程语言介绍 目录 [隐藏] 1 开放源代码的必要性 2 各种语言的选择 3 各种语言的选择 4 我为什么选择了 Python 5 Ruby 和 Python 的比较 5.1......

    从语言进步到编程

    从语言进步到编程 1. 语言和编程本是两码事 分不清语言和编程的人,估计很能学得好编程。 1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级......

    Java编程语言面试题

    西安英泰移动通信学院S2级Java编程语言测试题 1 Java编程语言面试题 一、简答题 1、 简述用Java编程语言编写、编译、解释和执行过程。 2、 简述在Java JDK中,java.exe程序的......

    T-SQL语言编程(5篇材料)

    南京信息工程大学实验(实习)报告 实验日期12.13得分指导教师方忠进系计算机专业软件工程年级2011班次3姓名张渊学号20112344931 一.实验目的 1. 掌握流控制语句的基本语法 2.......

    C语言经典编程题(推荐)

    C语言经典编程题 题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。 [cpp] view plain copy print? 1. 2. 3. 4. 5. 6. 7. 8. 9.......

    经典C语言编程100例

    经典C语言编程100例(1-30) 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。......

    vb语言编程教案

    课题:vb语言编程概述 课 时:2课时 授课时间:2011.09.05 课堂类型:讲授 教学目的:1.熟悉VB界面和VB集成开发环境; 2.在实际操作中学会编简单的VB应用程序; 教学要求:1. 掌握VB基础知......