1 / 68

程序设计语言 (C)

程序设计语言 (C). 王正杰. 课程概述. 本课程的目的:掌握基本的语法,掌握基本的编程技术,为后续课程的进一步学习打下良好的基础。 C 与 C++ 的基本关系: C++ 完全兼容 C 。 上机环境的选择: Trubo C 或者 Visual C++6.0 教材内容的取舍及补充:会有极其少量的内容略过,并且补充部分内容。. 本课程和计算机等级考试二级 C 的关系:两者并不等同,学习课程对考试非常有帮助,但是不是以考试为目标。 本课程中涉及 C 语言与 C++ 的不同之处会给大家指出。. 第一章 C 语言基础.

mauve
Download Presentation

程序设计语言 (C)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 程序设计语言(C) 王正杰

  2. 课程概述 • 本课程的目的:掌握基本的语法,掌握基本的编程技术,为后续课程的进一步学习打下良好的基础。 • C与C++的基本关系:C++完全兼容C。 • 上机环境的选择:Trubo C或者Visual C++6.0 • 教材内容的取舍及补充:会有极其少量的内容略过,并且补充部分内容。

  3. 本课程和计算机等级考试二级C的关系:两者并不等同,学习课程对考试非常有帮助,但是不是以考试为目标。本课程和计算机等级考试二级C的关系:两者并不等同,学习课程对考试非常有帮助,但是不是以考试为目标。 • 本课程中涉及C语言与C++的不同之处会给大家指出。

  4. 第一章 C语言基础

  5. [本章重点] 学会创建一个简单 Visual C++6.0控制台程序,掌握C语言的基本数据类型以及常量、变量的含义和用法,各种运算符的运算规则、优先级、结合性,各种表达式的含义和用法。 [本章难点] 理解C语言基本数据类型、常量、变量、运算符、表达式的概念及在程序中的用法。

  6. 计算机语言(Computer Language)是用于人与计算机之间通讯的语言,是人与计算机之间传递信息的媒介。开始使用机器语言来编程,后来为了减小编程的难度,产生了汇编语言。汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过容易识别和记忆,所以汇编语言有时又称为伪机器语言,机器语言和汇编语言被称为“低级语言”。随着程序规的不断扩大,汇编语言越来越不能满足人们需要,20世纪50年代,出现了“高级语言”。

  7. 它接近人们习惯使用的自然语言和数学语言。高级语言是目前绝大多数编程者的选择,和汇编语言相比,它将许多相关的机器指令合成为单条指令,大大简化了程序中的指令,同时由于省略了很多细节,编程者也就不需要有太多的专业知识,更易为人编写,而且程序的平台无关性使程序可以方便地被移植到网络上的不同机器、不同平台。从计算机编程语言的发展过程我们可以看出,编程语言的功能越来越强大,程序员的编程工作越来越容易。它接近人们习惯使用的自然语言和数学语言。高级语言是目前绝大多数编程者的选择,和汇编语言相比,它将许多相关的机器指令合成为单条指令,大大简化了程序中的指令,同时由于省略了很多细节,编程者也就不需要有太多的专业知识,更易为人编写,而且程序的平台无关性使程序可以方便地被移植到网络上的不同机器、不同平台。从计算机编程语言的发展过程我们可以看出,编程语言的功能越来越强大,程序员的编程工作越来越容易。

  8. 在1970年, AT&T 贝尔实验室的 Ken Thompson设计出B语言, 1972年美国的Dennis Ritchie在B语言的基础上设计发明了另一种语言,取名为C 语言,随着微型计算机的日益普及, 出现了许多C 语言版本。 C++是从C语言发展演变而来的,首先是一个更好的C引入了类的机制,最初的C++被称为“带类的C”。1983年正式取名为C++,从1989年开始C++语言的标准化工作,于1994年制定了ANSI C++标准草案,于1998年11月被国际标准化组织(ISO)批准为国际标准,成为目前的C++。目前,有多种开发环境供开发人员选择使用。

  9. 如何快速入门 C语言 语言的重要性: • 首先,C语言语法结构很简洁精妙,写出的程序也很高效,它能够让编程人员深入系统底层,编写底层硬件的驱动程序,所以,如果想在程序设计方面有所建树,就必须去学习它。 • 其次,学会C语言,再学习别的语言会非常轻松,如果掌握了C语言,就等于掌握了很多门语言。 • 再者,对于专业以硬件方面为主的学生来说,以后的课程还要用到它,如数据结构、单片机编程等,所以为了顺利学习以后的课程,也必须去学好它。

  10. 提出以下几点建议: • 初学者开始一定要调整好自己的心态,不要急于求成,不用怕学不会。不少人在学习之前,可能就听到了不少人说这门课非常难学。的确,这门课是比较难入门并且不容易学,但肯定能学会。刚开始学习时,应顺着教材一步一步的走,先记忆教材上的知识,等到以后学习的内容逐渐增多,再逐渐加深理解,遵循由易入门,逐渐深入的学习方法。 • 勤学多练。不管是初学者还是已经能熟练运用者,在学习新的内容时总会遇到不容易懂的知识点,这时可以采取的方法是多

  11. 看几遍书,多问几个人,多上机练习几次,难点最终会被克服。看几遍书,多问几个人,多上机练习几次,难点最终会被克服。 • 有选择的学。C语言的功能非常强大,内容也非常多,初学者一定不要想把它的所有功能都学会,只需要先掌握基本的概念和方法,再把常用的部分和大的编程框架能学会学懂就可以了,以后遇到要实现新的软件功能时,再去查找相应的参考资料来编程实现。

  12. 经典书籍推荐C++

  13. 常见教材 C++

  14. 经典书籍推荐C语言

  15. 常见教材 C语言

  16. 编程环境的使用 • 集成开发环境(IDE)非常复杂,只需要掌握基本的功能。 • 建立工程时和添加源文件时不要选错。 • 在机房上机应将文件保存到硬盘其它分区,尽量不要保存在C盘。 • 下机前,保存好文件,便于下次上机继续使用。 • 学会基本的调试技术。

  17. 建立一个简单的Visual C++6.0控制台程序 • 使用应用程序向导来完成,代码如下: #include "stdafx.h" int main(intargc, char* argv[]) { printf("Hello World!\n"); return 0; }

  18. 书写程序时应遵循的规则: • 各个单词之间要用空格或其他分界符分开。 • 一条语句占一行,每一条语句都必须以“;”结尾,但预处理命令,函数头和花括号“}”之后不加分号。 • {}都是成对出现的,相匹配的大括号在同一列,括起来的语句,通常表示程序的某一层次结构,内部再嵌套{}时,应进行缩进排列,以便看起来层次清晰,增加程序的可读性;缩进是指程序在书写时不要将

  19. 程序的每一行都由第一列开始,在适当的地方加进一些空行或空格,它同注释一样,也是为了提高程序的可读性。程序的每一行都由第一列开始,在适当的地方加进一些空行或空格,它同注释一样,也是为了提高程序的可读性。 • 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性,注释的内容要清楚、明了,含义准确,防止注释二义性,注释行与代码行尽量分行书写。 • 严格区分大小写,两个词只有在包括大小写都完全相同的情况下才代表同一目标

  20. #include <stdio.h>//头文件 int main(intargc, char* argv[])//main函数头 { //main函数体开始标志 inta; //定义了一个变量a printf("请输入一个整数\n") ;//在屏幕上输出提示 scanf(“%d”,&a);//把从键盘上输入的 //数存入变量a printf("你输入的整数是%d\n“,a);//在屏幕上输出 // 提示和a的值 return 0; //函数返回 } //main函数体结束标志

  21. (一)基本字符集 字符是组成语言的最基本的元素。C语言字符集由字母、数字、空格、标点和特殊字符组成。在字符常量、字符串常量和注释中还可以使用汉字或其它可表示的图形符号,在其他部分只能使用由字符集中的字符组成的符号。 • 字母 :小写字母a~z共26个,大写字母A~Z共26个 • 数字:0~9共10个

  22. 空白符:空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用,在其它地方出现时,只起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。空白符:空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用,在其它地方出现时,只起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。 • 标点和特殊字符:! # % ^ & * _(下划线) + = - ~ < > / \ ' " , . ; ( ) [ ] { }

  23. 标识符的构成规则 • 以大写字母、小写字母或下划线(_)开始。 • 可以由以大写字母、小写字母、下划线(_)或数字0~9组成。 • 大写字母和小写字母代表不同的标识符。

  24. 标识符命名的基本规则 标识符命名尽量做到顾名思义,尽量用英文表达出标识符的功能。变量命名要符合“匈牙利法则”,即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求每个单词的第一个字母应大写,对于变量作注释时可紧跟在变量的后面说明变量的作用,例如用变量cStudentName代表学生的名字,用变量cTeacherName代表教师的名字;函数的命名应该尽量用英文表达出函数完成的功能,遵循动宾结构的命名法则,函数名中动词在前,例如用DrawPicture命名绘图函数的名字。

  25. 关键字 关键字是由C语言规定的具有特定意义的字符串,程序员只能按系统已定义好的用法去使用,因此通常也称为保留字。C语言的关键字分为以下3类: • 类型说明符 用于定义、说明变量、函数或其它数据结构的类型,常用的类型说明符有auto bool char class const enum extern float friend int long namespace private protected public register short signed static struct template typedef typename union unsigned virtual void等。

  26. 语句定义符 用于表示一个语句的功能,常用的语句定义符有 break case default do等。 • 预处理命令字 用于表示一个预处理命令,在程序中使用时前面都以“#”来引导,常用的预处理命令字有 define include undef等。

  27. 运算符 C语言中含有丰富的运算符,运算符与变量、函数一起组成表达式,表示各种运算功能,常用的运算符有 = + - * / % >> << & | ^ == && || ?: += -= *= /= ++ -- 等。

  28. 分隔符 在C语言中采用的分隔符有逗号和空格两种,一定要英文标点状态下输入。逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之间,作间隔符。在关键字,标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误,例如把 int iStudentNum 写成 intiStudentNum,编译器会把intiStudentNum当成一个标识符处理,其结果就会出错。

  29. 注释符 C/C++语言的注释符有 // /* */ 共三个。注释有两种书写方式:一种是以“//”开始的行,则该行为注释;另一种是以“/*”开始,从该标志起,直到遇到结束注释标志“*/”,在“/*”和“*/”之间的内容全是注释,这个方式常用于注释内容较多的情况。 程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。在调试程序时,对暂不使用的语句也可用注释符括起来,待调试结束后再去掉注释符。

  30. 常量和变量 • 在程序运行过程中,其值不能被改变的量称为常量(包括字面常量(直接常量)和符号常量)。 • 其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。存储单元在程序中可以根据需要赋予不同的数值,所以变量值是可以变化的,但是变量必须先定义后使用。

  31. 常量和符号常量 • 常量区分为不同的类型,如12,0,-3为整型常量,4.6、-1.23为实型常量,‘a’,‘d’为字符常量。常量一般从其字面形式即可判别。这种常量称为字面常量或直接常量。 • 可以用一个标识符代表一个常量,称为符号常量,即标识符形式的常量。请注意符号常量不同于变量,它的值在其作用域内不能改变,也不能再被赋值。如: • #define price 30

  32. 数据类型—整型数据及取值范围 • 类型 说明符 位数 数值范围 • 短整 short 16 -32768~32767 • 基本 int 32 -231~(231-1) • 长整 long 32 -231~(231-1) • 无符号unsigned short 16 0~65535 unsigned int 32 0~(232-1)unsigned long 32 0~(232-1)

  33. 数据类型——实型数据 float v ,r,h; r=2.5; h=3.2; v=3.14159*r*r*h

  34. 数据类型——字符型数据 • 字符常量 • 单引号括起来的一个字符,如:'a', 'D', '?', '$' • 字符变量 • 用来存放字符常量例:char c1,c2; c1='a'; c2='A'; • 字符数据在内存中的存储形式 • 以ASCII码存储,占1字节,用7个二进制位

  35. C H I N A \0 a\0 a 数据类型——字符型数据 • 字符数据的使用方法 • 字符数据和整型数据之间可以运算。 • 字符数据与整型数据可以互相赋值。 • 字符串常量 例:"CHINA" "a" 'a' 所以:char c; c="a"; Page 37

  36. 数据类型——布尔型数据 • 布尔型变量的说明:例:bool flag; • 布尔型数据的取值:只有 false 和 true 两个值

  37. 变量的定义 数据类型 变量名标识符1,变量名标识符2, ……; bool flag; //定义了一个布尔变量flag int a, b, c; //定义了三个整型变量a、b、c char c5,c6; //定义了两个字符变量c5、c6 关于变量定义需要说明的是: 1)在同一个程序块中,或者说在一对{}的同一层次内,不能有两个相同的变量名。 2)没有字符串变量类型,字符串是用字符类型的数组或指针来定义,在以后学习。 3)变量的定义比较自由,可以随时定义,但一般在程序开始位置或函数体语句前面定义。 4)在不同位置定义的变量,作用范围不同。

  38. 使用变量前对变量赋值的过程称为变量初始化,可以在定义变量时同时初始化变量,例如:使用变量前对变量赋值的过程称为变量初始化,可以在定义变量时同时初始化变量,例如: int a=10, b=20; //定义了二个整型变量a、b char c5=’d’; //定义了一个字符变量c5, char c6=’\n’; //定义了一个字符变量c6,初值为 // 换行符 • 也可以在定义以后对变量进行赋值定义变量以后再赋值,例如: int a,b; //定义了三个整型变量a、b char c5; //定义了字符变量c5 a=10;b=20; // a、b、c初值分别为10、20、30

  39. 算术运算符与算术表达式 • 基本算术运算符 + - * / (若整数相除,结果取整) %(取余,操作数为整数) • 优先级与结合性 先乘除,后加减,同级自左至右 • ++, --(自增、自减) 例:i++; -- j;

  40. 简单的赋值运算符"=" • 举例n=n+5 • 表达式的类型:等号左边对象的类型 • 表达式的值:等号左边对象被赋值后的值 • i=m=n=8 //变量i、m、n的值都为8, //表达式的值也为8, //此表达式等价于i=(m=(n=8))

  41. 复合的赋值运算符 • 有10种复合运算符:+=, -=, *=, /=, %=,<<=,>>=,&=,^=,|= • 例a+=3 等价于 a=a+3x*=y+8 等价于 x=x*(y+8)

  42. 关系运算 • 关系运算是比较简单的一种逻辑运算,优先次序为:< <= > >= == != • 优先级相同(高)优先级相同(低) • 关系表达式是一种最简单的逻辑表达式 • 其结果类型为 bool,值只能为 true(非0) 或 false(0)。 • 例如:a>b,c<=a+b,x+y==3

  43. 逻辑运算 • 逻辑运算符!(非) &&(与) ||(或)优先次序: 高 → 低 • 逻辑表达式 例如:(a>b)&&(x>y)其结果类型为 bool,值只能为 true(非0) 或 false(0)

  44. 条件运算符 • 一般形式 表达式1?表达式2:表达式3 表达式1 必须是 bool 类型 • 执行顺序 • 先求解表达式1, • 若表达式1的值为true,则求解表达式2,表达式2的值为最终结果 • 若表达式1的值为false,则求解表达式3,表达式3的值为最终结果

  45. 注意: • 条件运算符优级高于赋值运算符,低于逻辑运算符 • 表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。 • 例: x=a>b? a:b; ① ②

  46. 逗号运算 • 格式 表达式1,表达式2 • 求解顺序及结果 先求解1,再求解2,最终结果为表达式2的值 • 例 a=3*5 , a*4 最终结果为60

  47. 运算符优先级 括号 ++,--,sizeof *, /, % +, - ==, != 位运算 && || ?: 赋值运算 逗号运算 高 低

  48. 运算时的自动转换 • 进行算术运算时计算机将数据类型从低类型到高类型进行转换 • char short int long float double低 高 • 赋值运算要求左值与右值的类型相同,若类型不同,编译系统会自动将右值转换为左值的类型。

More Related