c语言大学实用教程第1章程序设计ab_第1页
c语言大学实用教程第1章程序设计ab_第2页
c语言大学实用教程第1章程序设计ab_第3页
c语言大学实用教程第1章程序设计ab_第4页
c语言大学实用教程第1章程序设计ab_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 程序设计ABC,北京理工大学珠海学院 廖爱红 ,程序设计基础,导论,导论,课程性质:必修课,计算机语言开蒙课 高等工科院校中计算机和非计算机专业的一门主干课程 学时:64学时 实践性 课程目标:熟悉C语言的基本概念;熟悉VC+6.0的上机环境;会读、会编、会调试C程序,内容安排,第一章 程序设计ABC 第二章 数据类型、运算符与表达式 第三章 简单的C程序设计 第四章 程序的控制结构 第五章 函数 第六章 数组 第七章 指针 第八章 结构体与共用体 第九章 文件操作 第十章 C程序设计常见错误及解决方案,导论,学习方式:实践、实践、再实践,导论,考核方式:闭卷考试 成绩核算: 考试70

2、% 实验10% 平时20%,参考资料,C语言大学实用教程 苏小红,陈惠鹏,孙志岗 电子工业出版社 2012 C语言大学实用教程学习指导 C语言教程 谭浩强 清华大学出版社 哈工大精品课程网址 北京理工大学精品课程网址 教学资源请从网络教学平台下载,提醒!,多动手、多动脑、多参与 用心收获,第一章 程序设计ABC,1.1 计算机与人 1.2 计算机与程序设计语言 1.3 程序设计语言的故事 1.4 C语言的故事 1.5 程序设计语言的工作原理,拓宽知识面,人类历史的发展,生产力: 渔猎社会农业社会工业社会信息社会 生产关系分: 原始社会奴隶社会封建社会资本主义社会社会主义社会共产主义社会,对计算

3、机你知道多少?,What is a computer?,A Computer is a device capable of performing computations and make logical decisions at speeds millions (even billions) of times faster than human beings can. 目前的PC机可每秒执行十亿次加法 人用计算器一生也完不成PC机1秒钟完成的计算量,人工智能:主要利用计算机来模仿人的各种感知,如智能机器人、语音识别、机器翻译等。,计算机网络:主要利用网络来实现资源共享,如网络会议、浏览信息、

4、发收电子邮件、网络聊天等等。,计算机的应用,科学计算,实时控制,数据处理,计算机辅助,文字处理和办公自动化,人工智能,计算机网络应用,科学计算:主要用于科学技术领域的数值计算,例如卫星、导弹飞行轨迹的计算,大型工程的分析和仿真等。,实时控制:主要用于对实施过程进行实时监控等,比如产品生产,卫星或者导弹发射等都要进行实时监控。,数据处理:主要用于对大量数据进行搜集、统计、排序等等各种操作。例如工资管理、生产库存管理等。,计算机辅助:利用计算机进行辅助设计工作,如CADCAECAMCATCAI等。,文字处理和办公自动化:主要用于毕业论文、学术论文撰写等,如后面我们学OFFICE 2000就是一种功

5、能强大的办公自动化软件。,补充:计算机的诞生及发展,第一台计算机的诞生,计算机是一种能高速地、自动地进行算术和逻辑运算的电子机器。 计算机的发展主要缘于“计算”的需要,飞机的设计、天气预报、导弹的发射、某些工程计算等许多方面都需要高精度和高速度的计算。 1946年初,由美国宾夕法尼亚大学、穆尔工学院和美国陆军火炮公司联合研制而成研制出了世界上第一台电子计算机ENIAC(Electronic Numerical Integrator And Computer 即电子数值积分计算机)。,ENIAC计算机体积庞大,占地约170平方米,总重量达30多吨,使用了188000个真空电子管,耗电174千瓦,

6、每秒钟可做5000次加减运算。ENIAC的诞生宣布了电子计算机时代的到来,具有划时代的意义。,1.第一阶段:电子管计算机(19461957年) 2.第二阶段:晶体管计算机(19581965年) 3.第三阶段:中小规模集成电路计算机(19651979年) 4.第四阶段:大规模、超大规模集成电路计算机(1979年至今),电子计算机发展经历四个阶段(四代):,计算机行业的梦想 让计算机(Computer)能像人一样地思考,与人自然交流, 人工智能(Artificial Intelligence) 图灵测试,计算机行业的梦想,计算机与人工智能,1997年,IBM公司研制的深蓝超级计算机在一场“人机大战

7、”中打败了国际象棋大师卡斯帕罗夫 被誉为“人工智能的一大胜利” 2011年,IBM研制的“沃森”软件系统战胜知识竞赛电视节目最高奖金得主 深蓝的主要研制者之一许峰雄博士: 胜利靠的只是不知疲倦地高速运算,并不是什么智能。,计算机行业的梦想,AI的先驱者之一Carnegie Mellon大学(CMU)的Herbert Simon回忆说: 最令他惊讶的是做“难”的事情是多么的容易,而做“容易”的事情是多么的“难” 至今仍无人造出可自动穿越拥挤的房间或理解儿童故事的机器来 Comput + er 计算的机器,未来的computer?,新的计算机正在研究 超导计算机 纳米计算机 光计算机 DNA计算机

8、 量子计算机 但是,短期内,基于集成电路的计算机还不会退出历史舞台,计算机与信息技术,计算机技术与通信技术结合,构成了信息技术(Information Technology),诞生了一个新词:IT 嵌入式系统是IT未来的主要发展方向之一 典型的嵌入式系统有:机器人、手机和智能家电等,第一章 程序设计ABC,1.1 计算机与人 1.2 计算机与程序设计语言 1.3 程序设计语言的故事 1.4 C语言的故事 1.5 程序设计语言的工作原理,补充1:计算机系统的组成,计算机系统由硬件系统(hardware)和软件系统(software)两大部分组成,裸机,台式机,PC机的硬件系统,主机箱,鼠标,键盘

9、,音箱,显示器,笔记本电脑,主机和主机箱,主机箱,电源,主机板,CPU,硬盘,光驱,内存条,显卡,主板上的接口卡,CPU插座,内存条插槽,USB口,LPT并口,扩展槽,键盘接口,鼠标接口,网络接口,麦克风/音箱口,主机板,CPU,计算机系统的硬件组成 1中央处理机(CPU),CPU,运算器,控制器,运算器负责基本的算术运算和逻辑运算,控制器负责计算机的各部件协调工作 CPU品质的高低直接决定了一个计算机系统的档次。CPU指标 :主频 1.5G,2.0G,2.4G,3.2G,3.8GHZ 数据传送的位数 16位机,32位机,64位机,存储器:存储器是用来存储程序和数据的部件。,存储器又分为内存储

10、器(主存储器)和外存储器(辅助存储器)两类。 内存储器简称内存,用来存储当前要执行的程序和数据以及中间结果和最终结果。 内存储器又分成随机存储器RAM(Random Access Memory) 、只读存储器ROM(Random Only Memory)和高速缓冲存储器Cache。 外存储器简称外存,用来存储大量暂时不参与运算的数据和程序以及运算结果。,内存特点:存取速度快、存储容量小。可与各部件交换数据 外存特点:存取速度慢、存储容量大。只能与内存交换数据,常见的几种内存条,用于台式机内存条,用于笔记本电脑内存条,常见的外存设备,硬 盘,移动硬盘,光 盘,数码伴侣(存储卡),软 盘,U 盘,

11、输入设备:输入设备是将用户的程序、数据和命令输入到计算机的内存的设备。 最常用的输入设备是键盘,常用的输入设备还有鼠标器、扫描仪、手写板等。,输出设备:输出设备是显示或硬拷贝计算机运算和处理结果的设备。 最常用的输出设备是显示器和打印机,常用的输出设备还有绘图仪等。,计算机与程序设计语言,计算机是用来延伸人的能力的工具,需要人来驾驭 我们的职责是让非计算机专业的人更容易驾驭它 完成这一目标的主要手段之一就是“编程(Programming)”,计算机基本工作过程,整个过程的执行者是硬件,但硬件是受软件控制的 编程,就是编写软件,使硬件按照人的意图工作。,冯诺依曼型计算机的基本结构 1945年美籍

12、匈牙利科学家冯诺依曼 (Von Neumann)提出了一个“存储程序”的计算机方案。此方案包含如下几个要点: 计算机硬件由控制器、运算器、存储器、输入设备和输出设备5大部分组成。 采用二进制数的形式表示数据和指令。 将指令和数据存放在存储器中。 (4)自动、连续地执行程序。(现代化的流水线),补充2:计算机的工作原理,其工作原理的核心是“存储程序”+“程序控制”,就是通常所说的“顺序存储程序”概念。我们把按照这一原理设计的计算机称为“冯诺依曼型计算机”被誉为“计算机之父”。,冯诺依曼设计思想的特点 计算机由五个部分组成 二进制 存储程序,逐条执行,2. 计算机的工作原理,程序,运算器:负责指令

13、的执行;(进行简单的四则运算或逻辑运算) 控制器:协调并控制计算机的各个部件按程序中排好的指令序列执行指定的操作;(命令自己或外部设备做这做那),2. 计算机的工作原理,程序,结果,计算机基本工作过程,“冯诺依曼机”结构,大脑,记忆装置,眼睛和耳朵,比如:十进制 方法:用09十个数字字符表示数的大小 规则:逢十进一,借一当十,1.数制:表示数的方法和规则。,补充3:数制的基本概念,表1-1 数制种类,二进制书写麻烦、容易出错、很难记忆,十进制与二进制之间的转换过程复杂,二进制与八(十六)进制之间转换简单。,例如:有十进制数如下,222.22,=200+20+2+0.2+0.02,=2102+2

14、101+2100+210-1+210-2,由此可知,任何一个十进制数整数都可以表示为:,N10=an10n+an-110n-1+a1101+a0100,其中:ai为数字字符09中的一个,10i为第i项的权值,表1-2 十进制、二进制、八进制和十六进制对照表,二、数制的种类,二进制与十进制的转换,二进制转化为十进制:,例1:11001101B=?,11001101=127+ 126 + 025 + 024 + 123 + 122 + 021 + 120,= 205,二进制与十进制的转换,例2:十进制转化为二进制 205=?,十进制转化为二进制: 除2取余,逆序排列,低位,高位,余数,因此: 20

15、5=11001101,第一章 程序设计ABC,1.1 计算机与人 1.2 计算机与程序设计语言 1.3 程序设计语言的故事 1.4 C语言的故事 1.5 程序设计语言的工作原理,程序设计语言的故事,程序设计语言(Programming Language)是人与计算机进行交流的语言 计算机为什么用二进制呢? 为什么不用我们日常熟悉的十进制呢? 二进制在在电器元件中容易实现 计算机进行二进制运算比进行十进制运算简单,计算机能读懂的语言 机器语言(Machine Language),也叫机器代码,一种纯粹的二进制语言 由一系列二进制0和1组成 机器语言编写的1+1程序 低级语言,10111000 0

16、0000001 00000000 00000101 00000001 00000000,像不像天书?,程序设计语言的故事,程序设计语言的故事,汇编语言(Assemble Language)编写的1+1程序,MOV AX, 1 ADD AX, 1,PRINT 1+1,结果显示在屏幕上,#include main() printf(%dn, 1+1); ,BASIC语言编写的1+1程序 C语言编写的1+1程序 既不是英语,也非机器语言 但更像英语 高级语言 比写机器语言程序容易,但比使用英语难,程序设计语言的故事,程序设计语言是人与计算机进行交流的语言 有很多种,分别适合做不同的事情 现在人还只能

17、主动学计算机的语言 做不到计算机学会人的语言 当计算机懂了人的自然语言,就几乎不再需要编程,想让计算机干什么,尽管对着它说好了,那时程序员可能也就失业了。,流行的高级语言,应用编程语言 机器语言 汇编语言 Basic Pascal C C+ Java C# 专项编程语言 Lotus Notes Power Builder,Web编程语言 HTML XML PHP ASP JSP JavaScript VBScript 其他 perl python VBA, 搜集了大约50种极具代表性的语言的故事和资料,被称为“低级语言”,高级语言的魅力,易学、易用、易读、易懂、强大、可移植 百家争鸣,据不完全

18、统计2500种,绝大多数是高级语言 /nkinners/LangList/Extras/langlist.htm可看到其列表和简介 影响最大、寿命最长的是C语言 程序设计语言数以千计,能广为流传的不过几十种,能够风光20年的更是屈指可数,有最好的编程语言吗?,能很好的解决问题的语言就是好语言。 Fortran已问世50年,仍然是科学计算首选 C语言辉煌30年,至今老当益壮 C+已度过其20岁生日,相信属于它的日子还很长很长 在最恰当的地方,最恰当的时候,选择最恰当的语言,同时防止跌入语言自身的陷阱。,第一章 程序设计ABC,1.1 计算机与人 1.2 计算

19、机与程序设计语言 1.3 程序设计语言的故事 1.4 C语言的故事 1.5 程序设计语言的工作原理,1.5.1怎样让计算机读懂高级语言?,程序员按照该语言的语法编写程序源代码 把自己的意图写入源代码中 编译器读入源代码 把程序员的意图转换成可执行程序,供他人使用,C语言,可执行程序,编译器,软件的形成,软件(Software)的形成 编译器(Compiler)把源代码转换为可被计算机理解的机器代码(Machine Code) 并把机器代码以可执行文件(Executable File)的形式保存在磁盘上,程序开发步骤,What ?,可执行文件 扩展名为.exe的文件,How ?,扩展名为.c的文

20、件(对C而言),扩展名为.obj的文件,软件运行过程的简单描述,软件的运行 计算机把机器代码读入到内存(Memory) 由CPU运行这些代码 读取输入(Input) 产生输出(Output) 完成程序员预定的功能 计算机专业后续课程 计算机原理 编译原理 操作系统,1.5.2 内存,内存是怎样存储程序和数据的呢? 都是以二进制形式存储的,存储单位是字节(Byte)。 如何存?存哪里?由操作系统和编译器打理。 字节 存储单元(通常为一个字节) 地址(门牌号码),b, B, KB, MB, GB, TB,Terabyte(TB), 中文叫法:T Gigabyte(GB), 中文叫法:G Megab

21、yte(MB),中文叫法:兆 Kilobyte(KB), 中文叫法: K Byte, 中文叫法:字节 bit, 中文叫法:位,1 TB = 1,024 GB,1 GB = 1,024 MB,1 MB = 1,024 KB,1 KB = 1,024 B,1 B = 8 b,b, B, KB, MB, GB, TB,一个位有多大? 只能是“0”或者“1”,这叫二进制 一个字节有多大? 保存一个字符(英文字母、数字、符号) ASCII(美国标准信息交换码)编码 两个字节保存一个汉字 GB编码 一个字节可以表示数字0255,第一章 程序设计ABC,1.1 计算机与人 1.2 计算机与程序设计语言 1.

22、3 程序设计语言的故事 1.4 C语言的故事 1.5 程序设计语言的工作原理,C程序设计语言,20世纪60年代,贝尔实验室,Ken Thompson开始开发一个叫做UNIX的操作系统 70年代, 将BCPL语言改造成更适合开发UNIX的B语言 1971年,Dennis M. Ritchie开始和Thompson合作开发UNIX,将B语言改造成C语言,C语言的设计者Dennis M. Ritchie-丹尼斯.里奇,Ritchie漫画像,1999年和Unix的设计者Ken Thompson(肯汤普逊 )接受美国国家技术勋章,C程序设计语言,简称C语言 BCPL语言进化成B语言,B语言又进化为C语言

23、 是一种高级语言 高级语言并不是“高级”,只是相对低级语言,在一个高的级别上进行编程 历史悠久,战勋卓著 诞生于上世纪70年代初,成熟于80年代 “ANSI C”标准的发布是C语言成熟的标志 很多重量级软件都是用C写的 上天入地,无所不能 几乎没有不能用C写出来的软件,没有不支持C的系统,从C到C+,在C的基础上,1983年又由贝尔实验室的Bjarne Strou-strup推出了C+。 C+进一步扩充和完善了语言,成为一种面向对象的程序设计语言。 C+提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和

24、编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。,C程序设计语言,C语言被分类位高级语言,但实际上它是一种介于高级语言和低级语言之间的语言。 很多流行语言、新生语言都借鉴了它的思想、语法 从C+,到Java,再到C# 正确地学好C语言,是学习这些流行语言的基础。,C程序设计语言,硬件(Hardware),操作系统(OS),应用程序(Application),应用平台,基于平台的应用程序,低级语言的地盘,高级语言的地盘,C语言的地盘,C程序设计语言的地盘,以往的擅长: 与操作系统和基础工具有关的编程任务 操作系统核心,设备驱动程序,系统工具,网络应用,编辑器,字处理工具,编译器,某些

25、图形和GUI应用,以及数据库应用 未来的发展: 高性能、实时中间件,嵌入式领域,并发程序设计等,自然语言与C语言的比较,信息交流(地位平等) 有思维推理能力 语法、句法规则灵活 走,晒太阳去! 去晒太阳,走! 表达方式多样,人机对话(命令方式) 无思维推理能力,有计算和逻辑判断能力 语法句法规则固定 算法多样,C语言的特点,1.语言简洁、紧凑、灵活。(32个关键字,9种控制语句) 2.运算符丰富(34种表达式) 3.数据结构丰富 4.具有结构化的控制语句 5.目标代码质量高,程序执行效率高 6.可移植性好 7.兼有低级语言和高级语言的特点 8.语法限制不太严格,程序设计自由度比较大,C程序上机

26、,Turbo C 2.0的上机操作方法 Turbo C的两种编辑、编译、连接、运行C程序的方法 1.集成开发环境:将四个步骤完整地组建在Turbo C系统内,用户通过一个简明的界面来访问。快速,高效,易学 2.命令行编译器 VC+6.0 其它C语言学习系统,Turbo C常用命令,F10:激活菜单 Alt+F/C/R/O:使用相应菜单 ESC:退出菜单 Alt+x:退出TC F2:源程序存盘 Ctrl+F9:编译连接运行程序 Alt+F5:切换到输出屏幕(查看结果),有,不正确,Ctrl+F9,Alt+F5,简单的C语言程序介绍,#include void main( ) printf (Th

27、is is a C program.n); ,/*文件包含*/ /*主函数 */ /*函数体开始*/ /*输出语句*/ /*函数体结束*/,说明: main-主函数名, void-函数类型 每个C程序必须有一个主函数main 是函数开始和结束的标志,不可省 每个C语句以分号结束 使用标准库函数时应在程序开头一行写: #include ,说明: 本程序的作用是输出一行信息: This is a C program.,例1.2 求两数之和#include void main( ) /*求两数之和*/ int a,b,sum; /*声明,定义变量为整型*/ /*以下3行为C语句 */ a=123;

28、b=456; sum=a+b; printf(sum is %dn,sum);,说明: /*/表示注释。注释只是给人看的,对编译和运行不起作用。所以可以用汉字或英文字符表示,可以出现在一行中的最右侧,也可以单独成为一行。,说明: 输出一行信息:sum is 579,C程序初识,#include #include main() int x,s; printf(“input a number(请输入一个正数) :n); scanf(%d, ,例1.3 求3个数中较大者。#include void main( ) /* 主函数*/ int max(int x,int y); / 对被调用函数max的

29、声明 */ int a, b, c; /*定义变量a、b、c */ scanf(d,d, /*输出c的值*/,程序运行情况如下: 8,5 (输入8和5赋给a和b) max=8 (输出c的值),int max(int x, int y) int z; if (xy) z=x; else z=y; return (z); ,max(int x,int y);,max(a,b);,说明:本程序包括main和被调用函数max两个函数。max函数的作用是将x和y中较大者的值赋给变量z。return语句将z的值返回给主调函数main。,#include /*函数功能:计算两个整数相加之和 入口参数:整型数

30、据a和b 返回值: 整型数a和b之和*/ int Add(int a, int b) return (a + b); main() /*主函数*/ int x, y, sum = 0; printf(Input two integers:); scanf(%d%d, /*输出x和y相加之和*/ ,总结,(1) C程序是由函数构成的。 这使得程序容易实现模块化。 (2) 一个函数由两部分组成: 函数的首部:例1.3中的max函数首部 int max(int x,int y ) 函数体:花括号内的部分。若一个函数有多个花括号,则最外层的一对花括号为函数体的范围。 函数体包括两部分 : 声明部分:i

31、nt a,b,c; 可缺省 执行部分:由若干个语句组成。可缺省,总结,注意1:一个简单的C程序的结构框架如下: 以#开始的编译预处理命令行 main( ) 局部变量定义语句 可执行语句序列 注意2: 函数的声明部分和执行部分都可缺省,例如: void dump ( ) 这是一个空函数,什么也不做,但是合法的函数。,总结,(3) C程序总是从main函数开始执行的,与main函数的位置无关。 (4)根据需要用户可以自定义多个函数 (5)程序中可以调用系统提供的库函数,但必须将相应的头文件包含在本程序文件中 (6)书写格式与规则: C程序书写格式自由,一行内可以写几个语句, 一个语句可以分写在多行上,C程序没有行号。 每个语句和数据声明的最后必须有一个分号。 注释 /*注释语句*/,#include void main( ) printf (Th

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论