资源描述
,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,传智播客,传智播客,C,语言入门教程(,2,),讲师:尹成,QQ:77025077,博客,:World,5.C,语言编译,链接,生成的过程,传智播客,C,语言入门教程(,2,)大纲,1.C,语言开发环境概述,C,语言课程概述,6.,初学者的疑难解答,2,2.1VC+,,,C+,,,C,,,TC,:跳出这团浆糊,认识开发环境和语言的区别,VC+,,一般是指微软公司的,Visual Studio,开发套件中的,Visual C+,开发环境。,所谓开发环境,是集成了源代码编辑,编译,链接,调试等功能的一个综合程序。,Visual,C+,C+,,是另外一门有些类似,C,语言语法的面向,对象的高级语言。虽然,C,语言不加修改就可以,被,C+,编译器编译,但,C,和,C+,是完全不同思,想的两门语言,不应将,C+,看作是,C,的超集。,.,C+,C,就是指,C,语言了。,C,TC,是,Borland,公司开发的,C,编程环境,是,Trobe C,的简称。一般学习,C,语言,都使用该编程环境,只是这已经算是老古董了,对于现在的操作系统,使用,TC2,来编写程序,已经很不合时宜了,TurboC/C+,3,2.1.2IDE-VisualStudio2010,简介,安装简单,支持主流操作系统,XP,,,Win7,,,Win8,中文版全中文界面,帮助也是中文,学习简单,代码智能提示,功能强大,Visual Studio 2010,4,2.2.1VS2010,下载,百度 网盘下载地址:,VS 2010,打开,选中,setup.exe,选择解压缩打开,6,2.2.3,初始化开始安装,点击安装,Microsoft Visual Studio 2010,7,2.2.4VS2010,等待加载,等待它漫长的加载,8,2.2.5,加载完成下一步,点击下一步,9,2.2.6,同意相关条款,选择同意条款,点击“下一步”按钮,10,2.2.7,定制安装选项,硬盘够大的同学选择完全,不够的同学选择自定义,同时可以定制软件安装路径,11,2.2.8,定制安装的功能,在这里可以定制安装哪些,不安装哪些,必须勾选,Visual C+,12,2.2.9,开始安装,开始安装,忍耐,等待,13,2.2.10,处理重启,如果提示重启,则重启,14,2.2.11,继续安装,继续安装,15,2.2.12,安装完成,大功告成,可以继续安装文档,可装可不装,点击安装文档选择相关文档安装即可,16,2.2.13VS2010,启动画面,17,2.2.14,选择默认开发环境,18,2.2.15VisualStudo2010,设置,ok,19,2.2.16,安装编程助手,-,代码自动提示,百度 网盘下载地址:,/*,包含该头文件的目的是使用了函数,printf*/,/*,空行,主要是为了分隔,编译器忽略。*,/,void main(void),/*,主函数,入口点*,/,/*,函数开始*,/,printf(Hello World!);,/*,打印字符串*,/,getchar();/,等待输入,起到等待的作用,C,语言中的头文件是什么意思呢 头文件的后缀是,.h,,头文件中一般存放一些定义,很少作实际的运算。头文件的好处是,可以通用。如一些都用得上的定义,可以让其他文件来调用它,这样就节省了代码量,并且带来了方便,,h,就是,head(,头,),的简称,23,2.4.3HelloWorld,代码概貌,很短,简单几行文字,就创建了一个可以运行的程序,非常神奇。代码虽小,但五脏俱全,综观整个代码,可以总结如下特点:,(,1,)由单词,符号,空白组成。单词以英语单词为主,有的单词就是纯正的英语单词,如,main,、,void,、,include,;有的不是,如,getchar,、,pringf,。单词一般都小写。代码中的标点符号并不是随意输入的。每个符号在,C,中都有自己的含义。中出现的符号,有“,#”,、“,”,、“()”、“,”,、“,/*”,、“*,/”,、“,”,、“,;”,、“”。单词与单词之间用空白分隔,空白可以是空格,也可以是,Tab,制表符。空白的个数没有限制。,(,2,)如同阅读小说一样,,C,源代码也是从上往下阅读。也就是,C,源代码的先后顺序是有讲究的。行与行之间也可以有空白行。空白行数也是没有限制的。有的行顶格书写,有的行却又后退了几个空格,这种后退,称为“缩进”。如何缩进,这些也都是有讲究的。,(,3,)并没有专门的标志表示文件从哪里起始,也没有标志表示文件到哪里结束。从第一个字符开始,文件就开始了,到最后一个字符结束,文件就结束了。,24,2.4.4,注释,-,程序员的解释,出现最多的是“,/*”,和“*,/”,包裹起来的中文语句,这些是注释。注释是帮助程序员阅读源代码和理解源代码的。编译器在编译源代码的时候,在目标代码生成以前,会把注释剔除掉然后再进行编译,当然编译器是不会修改源文件的,这一切是在内存中完成。由于对于注释部分忽略不处理,就如同没有这些字符一样,所以注释不会增加编译后的程序的可执行代码长度,对程序运行不起任何作用,。,注释分为两种,/,/*/,25,2.4.5HelloWorld,代码解析,先看下面的代码段,这段代码是从中截取过来的,为了学习方便,去掉了注释部分:,void main(void),printf(Hello World!);,getchar();,void main(void),这一段是在定义,C,程序的主函数。函数是可以完成一定功能的子程序。,Main,函数是,C,语言程序的起始执行点。每一个,C,程序必须有且仅有一个,main,函数,它是由程序员提供的。,26,2.4.6,屏幕上显示文字,-,函数调用,Main,函数体中:,printf(Hello World!);,这行是调用了,C,语言提供的打印数输出函数,该函数的名字是“,printf”,小括号内双引号括起来的文字是,printf,函数的参数。该函数的功能是把小括号里的文字原样打印在屏幕上。也就是说双引号里的内容变化,则打印在屏幕上的文字也会变化。,27,2.4.7#include,有什么用,源代码最终是需要被编译器处理的。编译器编译的过程比较复杂,但一般需要经历好几步。第一步是预处理。所谓预处理,就是编译前,先进行些预先处理,如代替源代码中需要代替的部分。,#include,就是这么一个预处理指示指令。,为了弄清楚,#include,的作用,现在请大家思考一个问题:编译器如何知道有,printf,这个函数?,28,2.4.8,怎么找到函数,试验,修改,printf,为其他单词,如,printfitcast,,则在编译的时候,编译器会返回错误:,出现一个错误,调用了一个没有定义的函数,printfitcast,。,Bug,的英文意思是臭虫,被引入到计算机领域,需要追溯到第一代计算机时代。当时的计算机是由许多真空管构成,需要利用大量的电力使真空管发光。某天,一只虫子爬进了其中的某只真空管中,计算机于是停止工作了。研究人员耗费很长时间,找来找去,一处地方一处地方排查,最后终于发现了这个虫子,取出虫子后,计算机就恢复了正常。于是,bug,这个词语就在计算机领域中代表了隐藏的错误、缺陷、漏洞或者问题。把排除错误的过程称为,debug,。,断点是为了方便程序员在调试过程中观察程序内部各状态而专门设置的一种调试手段。也就是在调试模式下运行程序过程中,当程序语句运行到设置的断点后,暂停程序运行,但是程序当时的内存、寄存器、上下文环境等数据都被保持,并且在源代码编辑器中指示出当前停留在代码的哪一行。然后程序员就可以不慌不忙利用调试器查看程序内部状态。,29,2.4.9#include,是用于做啥,做一个试验:将中的第一行代码删除掉。就是去掉了“,#include”,,再编译看出现什么现象。是不是编译器又提示缺少函数原型:,#include,的作用,#include,是,C,语言预处理器指示符。,#,和,include,之间可以有多个空格。,#,也不一定要顶格,但是一定是第一个非空白字符。,#include,的作用,是告诉编译器在编译前,要做些预先处理:将后面,中的文件内容包含到当前文件内。所谓包含,是指将,中列出的文件的内容复制到当前文件里。,注意:,#,一定要是第一个非空白字符。否则编译器会提示错误,并且错误信息和出错原因完全不匹配。,因为,getchar,和,printf,两个函数的声明位于,stdio.h,文件中,所以简单的用,#include,把,stdio.h,文件包含进来,自然就把,getchar,和,printf,两个函数的声明包含进来了。,说明:函数声明只是向编译器登记有这么一个函数,声明了函数不调用这个函数,是被容许的。这就是为什么包含了整个,stdio.h,文件,里面声明了很多其他函数,但实际没有使用这些函数而编译器又不提示的原因。,30,预处理指令 例如包含头文件,全局声明 在函数之外进行的数据声明,函数定义 函数用来实现功能,必须包含一个,main,函数(只能有一个),每个函数都用来实现若干特定功能,被调用的函数可以是库函数,也可以是自己编制设计的函数,程序总是从,main,函数开始执行,C,程序书写格式是比较自由的,一行可以几个语句,便于阅读只写一行,数据声明和语句最后必须有分号,C,语言本身不提供输入输出语句,程序应当包含注释,增加可读性,一个程序由一个或多个源程序文件组成,函数是,C,程序的主要组成部分,C,程序对计算机的操作由,C,语句完成,01,02,03,2.4.10C,程序结构,31,问题分析,解决什么问题,怎么解决,编写程序,分析结果,结果错了,程序肯定错,结果对了,程序未必对,设计算法,对源程序进行编辑、编译和连接,2.5C,语言的编程流程,32,2.5.1,数据结构与算法,对数据的描述,对操作的描述,算法,+,数据结构,=,程序,在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,这就是数据结构,(data structure),即要求计算机进行操作的步骤,也就是算法,(algorithm),语言只是程序工具,程序,33,程序设计方法,语言工具,数据结构,算法,1,2,3,4,C,语言,C+,语言,面向过程,面向对象,二叉树,队列,栈,红黑树,链表,等等,快速排序算法,冒泡排序算法,选择排序算法,等等,算法、数据结构、程序设计方法和语言工具是一个程序设计人员应具备的知识,.,2.5.2,一个程序设计人员应具备的知识,34,2.5.3,算法示例,笨办法,聪明的办法,1+2+3+4,一直加到,100,一个一个的相加,,1+2=3,3+3=6,6+4=10,最后等于,5050,1+100=2+99=3+98=101,50*101=5050,无论什么方法都是解决问题,问题,35,有穷性。一个算法应包含有限的操作步骤,而不能是无限的,确定性。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。,有零个或多个输入。所谓输入是指在执行算法时需要从外界取得必要的信息。,有一个或多个输出。算法的目的是为了求解,“解”就是输出。没有输出的算法是没有意义的。,有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果,算法特性,一个有效算法应该具有以下特点,.,2.5.4,算法的特点,36,面向过程的编程语言,程序设计方法,结构化编码,模块化设计,自顶向下,逐步细化,2.5.5C,语言是面向过程的编程语言,37,2.5.6C,语言编程步骤,从,.obj,链接成,.exe,,如果调试出现问题,就返回源码编辑,编辑源代码,编译源文件,链接生成应,用程序,代码在,.c,与,.h,头文件中写好了以后,从,.c,.h,文件编译成,.obj,代码被编译为二进制文件,.obj,以后,打包一些调用的库,链接成,.exe,可执行文件,C,语言的编程步骤需要三个步骤,38,.CPP,.C,文件,C,语言与,C+,语言,.CPP,是,C+,的源文件,,C+,语言兼容,C,语言,编写,C,语言代码可以用,C+,的源文件,.CPP,。,C+,语言兼容,C,语言,,C,语言是面向过程,,C+,语言既能面向过程也可以面向对象。,.C,是纯粹的,C,语言文件,不可以有,C+,语言的代码,默认自带一些库文件。,2.5.7 .C,与,.CPP,文件的差别,39,2.6,初学者疑惑,集成开发环境,例如,VisualStudio2010,就是一个,IDE.,IDE,所有的代码字符必须在英文状态下输入,否则会因为字符不同报错,.,代码,-,字符,学习,C+,之前,必须先学,C,语言,不懂,C,语言的精髓,难以学好,C+.,可以直接学,C+,?,学会编写代码,用代码解决问题,是最快的学习途径,.,C/C+,的学习秘诀,40,1.,2.,3.,新建一个工程,以,.CPP,文件作为源文件,打印出,Hello China,新建一个工程,以,.C,文件作为源文件,打印出自己的姓名,年龄,性别,身高,体重,爱好,籍贯,新建一个工程,以,.C,文件作为源文件,打印出,Hello,,传智播客,2.6.1,练习作业,41,传智播客创始人张孝祥老师的理念就是帮助每一位学员都成功。帮助每一位学员都少走弯路。,C,语言,C+,语言,高薪就业,谢谢!,传智播客,42,
展开阅读全文