《第一章计算机编程及C语言概述》由会员分享,可在线阅读,更多相关《第一章计算机编程及C语言概述(24页珍藏版)》请在金锄头文库上搜索。
1、第一章计算机编程及C语言概述l 熟悉与计算机编程有关的基础知识l 了解软件开发的基本方法,能给出解决问题的简要算法l 了解C语言出现的历史及特点l 熟悉Visual C+6.0环境下C程序的上机步骤 l 了解C程序的基本要素,能读懂简单的C程序 1.1 计算机与编程 计算机系统由硬件和软件组成软件是程序的集合,由一系列能解决问题的指令构成硬件是实现所需计算的设备,包含五大组成部件(CPU、内存、辅助存储器、输入/出设备)程序在执行前必须先从辅助存储器中传输到内存中,才能被CPU访问执行1.1.1 内存及数据存取内存是存储单元的有序序列,每个内存单元都有一个唯一的地址存储在内存单元中的数据称为内
2、存单元的内容内存单元的内容永不为空,但其初始值可能对程序毫无意义计算机存储程序和数据的能力称为存储程序概念:程序的指令在执行前必须调入主存09991234-27.23540.05-26H75.62图1-1 内存示例图1-2 字节与位的关系 0 0 1 0 1 1 0 0位字节内存单元的大小一般为一个字节(byte),一个字节由八个位(bit)组成,如图1-2计算机对内存主要有两种操作:读和写读操作从指定单元读出存储的数据,对目标单元中的信息没有影响写操作将特定信息存储到指定单元,该单元中存放的内容将被覆盖内存是易失性存储介质硬盘是最常用的辅助存储器,存储在磁盘上的数据以文件为单位来组织1.1.
3、2 计算机语言机器语言:由0、1串指令构成,具有非标准性汇编语言:以机器语言为基础引入助记符(操作代码、变量名),具有非标准性高级语言:结合了数学表达式和英语符号,接近自然语言;用于编写与CPU类型无关的程序;计算机不能识别编辑源文件编译obj文件 连接器exe文件执行失败,返回错误信息结果过程出错图1-3 高级语言的程序设计步骤与高级语言相关的几个概念源程序文件:使用高级语言编写的程序代码文件,格式为文本文件,文件后缀为*.c。编译器:将高级语言编写的源程序翻译成机器语言的软件或程序。目标文件:经过编译器处理后输出的由机器语言指令构成的文件,文件后缀为*.obj。连接器:目标文件并不完整,不
4、能直接执行。连接器将这些函数与目标文件合并起来,创建一个二进制的可执行文件,文件后缀为*.exe。程序的执行:可执行程序一般以文件形式存放在磁盘上,必须将其装入内存才能运行。这个过程由装载器完成,装载器还引导CPU从第一条指令开始执行。1.2 软件开发的基本方法软件开发步骤说明程序需求分析问题设计问题解决的算法实现算法测试、检查已完成的程序程序的维护与更新1.2.1 软件开发步骤问题说明程序需求,弄清楚程序的目的并了解程序需求,目的是为了去除不重要的方面,找到根本问题所在分析确定问题的输入(要处理的数据)、问题的输出(希望的结果)及解决方案附加的需求或约束条件;此外还应确定结果应以怎样的格式显
5、示,列出问题的变量及相互关系(一般可借助数学公式来表达)例1-1:给定购买的苹果质量及每斤苹果的价格,请计算并显示苹果的总价值。问题给定苹果质量及价格,计算苹果的总价值分析问题输入: 购买的苹果质量(以斤计)每斤苹果的价钱(以元计)问题输出: 苹果的总价值(以元计)问题的公式:总价 = 单价 * 数量 设计设计算法解决问题,要求开发“算法”(一系列步骤);检查该算法是否按预期目标那样解决问题自顶向下的设计也叫做分治法,将问题分解成多个子问题,分别解决:首先列出需要解决的最主要步骤(子问题),解决每个子问题最终解决初始问题大多数计算机算法都至少包含以下子问题:获取数据;执行计算(算法细化,分解成
6、更详细的步骤);显示结果;桌面检查。桌面检查指逐步模拟算法的计算机执行:模仿计算机认真执行算法的每一步,检查算法是否按预期工作。在问题解决过程的早期找出错误并修改,可节省大量人力、时间实现编写程序:用编程语言将算法的每个步骤转换成一个或多个语句。测试检查、测试需程序目标是否按预期达到需要使用不同数据集合来多次运行程序,确保程序算法在提供的所有情况下都能正常工作维护一个程序的维护一般为5年或更长编程过程中使用科学规范的方法是很关键的,必须遵循那些已被大家广泛接受的编程风格和原则,避免所谓的编程技巧或捷径。1.2.2 案例分析问题:给定苹果的总重量及单价求总价分析:问题输入:weightprice
7、 问题输出:total_price计算:total_price = price * weight设计(初始算法)1、读取每斤苹果的单价及苹果的质量2、根据公式计算总价3、显示输出计算结果实现/*程序1-1.c,给定苹果的总重量及单价,求总价*/#include void main( )int weight, price, total_price;/*定义变量*/printf (输入苹果质量 ); /*输入苹果的质量*/scanf (%d, &weight);price = 3;/*指定苹果的单价*/total_price = price * weight; /*根据公式计算总价*/printf
8、 (苹果总价为 %d.n, total_price); /*显示结果*/运行情况如下:输入苹果质量 100苹果总价为 300. 1.3 C语言出现的历史及特点C语言的简要历史1963年,英国剑桥大学基于ALGOL 60推出了CPL语言;1967年,剑桥大学的Martin Richards对CPL做了简化,推出了BCPL语言1969年AT&T贝尔实验室用汇编语言初步完成了UNIX操作系统;1970年K.Thompson对BCPL进一步简化,推出了B语言,并用B语言完成了UNIX1972至1973年间,D.M.Ritchie在B语言的基础上设计了C语言,虽经多次改进,但主要在贝尔实验室内部使用,直
9、到1975年UNIX第6版发布后,其突出优点才引起人们的普遍关注1978年以后,C语言先后移植到大、中、小、微型计算机上,成为应用最广泛的几种计算机语言之一1978年,贝尔实验室正式发表了C语言1983年美国国家标准化协会ANSI整理了各种版本对C语言的发展和扩充,制定了新的标准ANSI CC语言的特点结构化、模块化的程序设计语言:以函数为单位组成,程序结构完全由顺序结构、选择结构和循环结构构成,具有9种结构控制语句具有高级语言和汇编语言的许多功能,可以编写系统软件,也可实现应用软件数据类型丰富,除各种数据结构外,还具有特别的指针类型,能描述/实现复杂的数据结构许多I/O功能都由函数提供;程序
10、可移植性好,语言简洁紧凑,使用灵活方便便于掌握运算符丰富,包含34种运算符,表达式类型多样书写灵活,一行可以写多个语句,语法限制不太严格高效:生成的目标代码质量高,程序执行效率高1.4 C语言的元素/* 计算苹果的总价值计算苹果的总价值. */# include void main( ) int weight, price; /* 苹果的质量和单价苹果的质量和单价 */ int total_price; /* 总价值总价值 */ /* 输入苹果的质量,指定苹果的单价输入苹果的质量,指定苹果的单价 */ printf(Enter the weight ); scanf(%d, &weight);
11、 price = 3; /* 根据公式计算总价根据公式计算总价 */ total_price = price * weight; /* 输出计算结果输出计算结果 */ printf(The total_price is %d.n, total_price); 图1-4 计算苹果总价值程序中的语言元素预处理命令注释变量库函数保留字分隔符图中的C程序包含两个部分:预处理命令和main函数源程序可使用预处理命令来改进程序设计环境、提高编程效率。预处理命令以“#”打头。图中用到的#include是文件包含预处理命令,使系统编译源程序前将指定标准头文件的定义插入到程序中main函数是程序执行的起点,每个
12、C程序都有一个main函数注释是指以“/*”开头并以“*/”结束的部分,用来补充说明信息,提高程序的可阅读性,不是程序的一部分保留字是C语言中具有特定含义的字,用于标识标准库函数、变量类型等。图中其他字可以分成两类:标准标识符,与保留字一样具有特殊含义,例如printf和scanf是标准I/O库中定义的输入函数和输出函数的函数名。可自定义标识符来命名用以保存数据和程序结果的变量及自定义函数。 例1-2:求两个数中的较大者/*程序1-2.c,求两个数中的较大者*/1 #include 2 void main( )/*主函数入口,程序执行起点*/3 int max (int x, int y );
13、/*自定义函数max的说明*/4 int a,b,c; /*变量声明*/5 printf (Please enter a and b );/*输出提示信息*/6 scanf (%d%d, &a, &b ); /*接收用户输入*/7 c = max ( a , b );/*调用函数max,返回值赋给c*/8 printf (max = %dn, c ); /*输出c的值*/9 10 /*自定义函数max的函数体*/11 int max ( int x , int y )/*函数头,说明函数类型及参数*/12 int z;/*定义局部变量z */13 if ( x y ) z = x; 14 el
14、se z = y;/*比较x、y,将较大值赋给z */15 return ( z );/*将z值作为函数返回值*/16 运行情况如下:Please enter a and b 8 5max = 8程序1-2.c包含两个函数:主函数main和自定义函数max。函数max的作用是比较x和y的大小并将较大值赋给变量z,返回值通过函数名带回到主调函数main的调用点处为使自定义函数能被编译系统正确识别和调用,需要在主调函数中对max进行函数声明(第3行)。程序的第7行调用max函数,并将实际参数a和b传递给max的形式参数x和y,此时程序将转去执行12行开始的max函数体,得到一个返回值(15行)函数
15、max结束,程序的执行返回到调用点处(第7行“=”右侧),赋值运算符“=”将函数值赋给变量c。1.5 C程序的上机步骤启动 Visual C+6.0步骤“开始”/ “程序”/“Microsoft Visual Studio 6.0”/“Microsoft 可正常启动Visual C+6.0新建/打开C程序文件选择“Files”/ “新建”菜单项,单击如图1-5所示的“文件”标签,左侧列表框选中“C+ Source File”,右侧文本框输入源程序的文件名和存储路径,按“确定”按钮,便可进入新的编辑窗口编辑源程序文件若源文件已经存在,通过 “Files” /“Open”菜单项,在查找范围中找到正
16、确的文件夹,便可调入指定的程序文件保存程序选择“Files”/ “Save”菜单项,系统将以默认的C+程序扩展名*.cpp保存文件,也可指定文件扩展名为*.c图1-5 VC6.0新建文件界面 编译程序菜单“编译”/ “编译”或快捷键Ctrl+ F7,对编辑好的源程序文件进行编译,编译结果将显示在信息窗口中如果程序存在语法错误,信息窗口将提示出错信息。双击某行出错信息,程序窗口将指示对应错误代码的位置连接:“编译”/ “连接”运行程序菜单“编译”/ “运行”,或快捷键Ctrl+ F5执行程序Visual C+6.0将自动弹出数据输入输出窗口,按任意键关闭该窗口关闭程序工作区程序被编译连接后,Visual C+6.0将自动产生相应的工作区,以完成程序运行和调试处理新程序前必须关闭前一个程序的工作区关闭程序工作区:菜单 “Files”/ “关闭工作区”