资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第1章 计算机和C编程入门,11/17/2024,11/17/2024,1,第1章 计算机和C编程入门8/3/20238/3/20231,1.1 计算机系统,1.2 编程和问题求解,1.3 C编程入门,1.4 测试和调试,1.5 学习程序设计,1.6 Visual C+集成开发环境,1.7 C语言的起源,11/17/2024,2,1.1 计算机系统 8/3/20232,1.1 计算机系统,一个完整的计算机系统是由硬件系统和软件系统两部分组成的。,硬件系统是组成计算机系统的各种物理设备的总称,是计算机系统的物质基础。,软件包括各种编译器、转换器以及管理器等等。,硬件是计算机的躯体,而软件是灵魂。,11/17/2024,3,1.1 计算机系统一个完整的计算机系统是由硬件系统和软件系统,1.1.1 硬件,大多数计算机系统的硬件由5个主要组件构成:输入设备、输出设备、中央处理器(也称为CPU)、主存储器以及辅助存储器。,输入设备,输出设备,处理器(CPU),辅助存储器,主存储器,图1.1 计算机的主要组件,11/17/2024,4,1.1.1 硬件输入设备输出设备处理器(CPU)辅助存储器主,输入设备:,是允许用户将信息发送给计算机的设备。主要的输入设备是键盘和鼠标。,输出设备:,是允许计算机将信息输出给用户的设备。,有时可将键盘和显示器视为一个单元,并统称为终端。,主存:,准备执行的程序在主存中。主存储器由一个很长的编号位置列表构成,这些位置称为存储位置或者内存位置。每个内存位置包含一系列0和1。大多数计算机的内存位置都包含8位(或者8位的倍数)。每8位都称为一个字节(byte),所以我们可将这些编号的内存位置称为字节。对一个字节进行标识的编号称为该字节的地址。,11/17/2024,5,输入设备:是允许用户将信息发送给计算机的设备。主要的输入设备,辅助存储器,:,辅助存储器用于持久性保存数据。在辅助存储设备中,信息以文件为单位来保存。最常见的辅助存储设备包括硬盘、软盘和CD。,中央处理器,:,是一块芯片。处理器遵循一个程序的指令进行操作,并执行程序要求的计算。不同的计算机可能采用不同的处理器指令。现代计算机的处理器通常都支持几百个指令。,11/17/2024,6,辅助存储器:辅助存储器用于持久性保存数据。在辅助存储设备中,1.1.2 软件,用户通常不是直接与计算机沟通,而是通过一个操作系统和它交互。,操作系统,将计算机的资源分配给计算机。操作系统实际是一个程序,或者多个相互协作的程序,但更好的方法或许是把它视为一个家庭的管家。,对于大多数用户来说,操作系统就是计算机。没有操作系统,大多数用户根本无法使用计算机。一些常用的操作系统有UNIX,DOS,Linux,Windows,Macintosh和VMS。,11/17/2024,7,1.1.2 软件8/3/20237,1.1.3 高级语言,许多语言都可以用来写程序,本书将讨论C编程语言,用它来写程序。C是一种高级语言,Java、Pascal、Visual Basic、FORTRAN、COBOL、Lisp、Scheme和Ada等等也是高级语言。,计算机能理解的语言称为低级语言。,最重要的是机器语言和高级语言区别:用高级语言编写的所有程序都必须转换成机器语言版本,以便计算机理解并遵照执行。,11/17/2024,8,1.1.3 高级语言8/3/20238,1.1.4 编译器,编译器是一种特殊的程序,它能将高级语言转换成机器语言程序,使计算机能直接理解和执行。计算机能理解的语言称为低级语言。,C程序,提供C程序的数据,编译器,机器语言程序,C程序的输出,计算机,计算机,图1.4 编译和运行C程序(基本过程),11/17/2024,9,1.1.4 编译器C程序提供C程序的数据编译器机器语言程序C,1.1.5 历史回顾,第一台真正可编程的计算机是由英国数学家和物理学家查尔斯巴贝奇(Charles Babbage)发明的。,其中说明了非常重要的一点:计算程序的核心技术在于重复。计算机不具备魔法,不能(至少目前不能)为我们遇到的所有问题都自动给出复杂的解决方案。计算机只能做程序员要求它做的事情。虽然问题的解决方案最终由计算机来执行,但方案本身是由程序员自己制定的。所以,当我们讨论计算机编程时,首先要讨论的就是程序员怎样制定自己的解决方案。,11/17/2024,10,1.1.5 历史回顾8/3/202310,1.2 编程和问题求解,本节主要讲述设计和编写程序时的一些常用规则。这些原则并不是C特有的,它们适用于任何编程语言。,11/17/2024,11,1.2 编程和问题求解本节主要讲述设计和编写程序时的一些常用,1.2.1 算法,用计算机来解决问题时,最困难的就是找出问题的解决方案。只要有了一个解决方案,就能像例行公事那样将方案转换成需要的语言,。,为解决方案制定的一系列准确的指令称为一个算法,通常也称为方法、指示、过程或例程等等。,11/17/2024,12,1.2.1 算法8/3/202312,以下用中文描述了一个算法。该算法判断一个指定的名字在一个名单中出现的次数。如果名单中包含上个赛季的获胜者,而你希望查找的是你喜爱的球队,那么这个算法就判断你的球队赢了多少场。这个算法非常短,也非常简单,但非常典型。,判断一个名字在名单中出现的次数:,1.获取名单。,2.获取要检查的名字。,3.将一个计数器设为零。,4.为名单中每个名字都采取以下操作:,将名单中的当前名字与要检查的名字比较;,如果两个名字相同,就在计数器上加1。,5.宣布答案是计数器指定的数字。,11/17/2024,13,以下用中文描述了一个算法。该算法判断一个指定的名字在一个名单,图1.7展示的是理想情况下程序设计的过程。它是程序设计者应该记住的一个基本流程,但在实际应用中,设计过程也许要复杂一些。实际编程时,错误和缺陷会不定期显现出来,而更糟糕的是可能退回去,重做以前的步骤。,开始,问题定义,能实际工作的程序,算法设计,桌面测试,测试,转换成C,实现阶段,问题求解阶段,11/17/2024,14,图1.7展示的是理想情况下程序设计的过程。它是程序设计者应该,1.2.3 软件生存期,大型软件系统(比如编译器和操作系统)的设计者将软件开发过程划分为6个阶段,这6个阶段统称为软件生存期,包括:,(1)任务分析和规范化(问题定义):,(2)软件设计(对象与算法设计);,(3)实现(编码);,(4)测试;,(5)维护和系统进化;,(6)废弃。,11/17/2024,15,1.2.3 软件生存期8/3/202315,1.3 C编程入门,C语言的特殊性在于,它虽然是一种高级语言,但它包含了低级语言的大量特点。语言其实处在一种非常高级的语言和一种低级语言之间,优点和缺点都很突出。类似于(低级)汇编语言,语言程序可直接操纵计算机的内存。另一方面,语言又具有高级语言的许多特点,所以比汇编语言更容易理解和编写。这使语言成为编写系统程序的理想选择,但对于其他程序(有时甚至包括一些系统程序),语言并不像其他语言那样容易理解;另外,它不像另外一些高级语言那样提供了自动检查的完善支持。,11/17/2024,16,1.3 C编程入门C语言的特殊性在于,它虽然是一种高级语言,,1.3.2 一个C示范程序,【例1.1】在显示器上显示短语“Hello,world!”。,/*The traditional first program in honor of Dennis Ritchie who invented C at Bell Labs in 1972*/,#include,int main(),printf(Hello,world!n );,return 0;,注释行,预处理命令,每一个程序都有且仅有一个main函数。,输出函数调用。分号是C语言语句的结束标志。,向操作系统返回整数值0。,11/17/2024,17,1.3.2 一个C示范程序注释行 预处理命令 每一个程序都有,1.3.3 变量、表达式和赋值,【例1.2】将一个英寻表示的深度转化为英尺或英寸表示。,#include,int main(),int inches,feet,fathoms;,fathoms=7;,feet=6;,inches=12;,feet=feet*fathoms;,inches=inches*feet*fathoms;,printf(Wreck of the Hesperus:n);,printf(Its depth at sea in different units:n);,printf(%d fathomsn ,fathoms);,printf(%d feetn,feet);,printf(%d inchesn,inches);,return 0;,变量,赋值,表达式,11/17/2024,18,1.3.3 变量、表达式和赋值变量赋值表达式8/3/2023,在C语言中,所有的变量用于表达式和语句之前都必须声明。简单程序的一般形式为:,preprocessing directives /*预处理命令*/,int main(void),declarations;/*声明部分*/,statements;/*执行语句部分*/,11/17/2024,19,在C语言中,所有的变量用于表达式和语句之前都必须声明。简单程,【例1.3】简单的对字符数据处理。,#include,int main(),char c;,c=A;,printf(%cn,c);/*the letter A is printed*/,return 0;,程序解析:,这个程序输出字母A,后跟一个换行符。首先声明变量c是char类型的,c被赋以值 A ,然后printf()语句输出该字符。注意在printf()的参数表中的控制串含有格式%c,这使得在第二个参数中的变量c以字符的格式被显示。,11/17/2024,20,【例1.3】简单的对字符数据处理。8/3/202320,【例1.4】简单的对浮点型数据处理。,#include,int main(),float x,y;,x=1.0;,y=2.0;,printf(The sum of x and y is%f,x+y);,return 0;,运行结果如下:,The sum x and y is 3.000000,程序解析:,首先变量x和y被声明为float类型,然后分别被赋值为1.0和2.0。这些常量为double类型,变量为float类型,此时会自动进行数据类型的转换。printf()中的第一个参数含有格式%f,这使得第二个参数中的表达式x+y的值按在小数点的后边有个数字的浮点数格式被显示。,11/17/2024,21,【例1.4】简单的对浮点型数据处理。8/3/202321,1.3.4 初始化,在声明变量时,变量也可以被初始化。,例如,:,char c=A ;,int i=1;,11/17/2024,22,1.3.4 初始化8/3/202322,1.3.5 include及其用法,在调用C编译器时,预处理器先工作。在进行编译之前,预处理器先对源代码进行修改。例如,可能要引入文件,源代码中的指定字符串可能被转换成其他字符串。程序中向预处理器发命令的行称为预处理命令,这样的命令用磅字符“#”开始。,#include,:,这使得预处理器用给定文件的内容的拷贝替代该行。,#define,LIMIT 100 :如果这些预处理命令出现在正在编译的文件的顶部,预处理器将会把程序中出现的所有LIMIT变为100,标识符LIMIT 被称为符号常数,。,11/17/2024,23,1.3.5 include及其用法8/3/202323,1.3.6 printf()和 scanf(),函数printf用于显示格式化的输出。类似地,函数scanf用于读取格式化的输入。向printf和 sc
展开阅读全文