Transcript Document
高级语言程序设计 张长海 软件自动化研究室 Tel:85166267 Email:[email protected] 教材 《程序设计基础》 《程序设计基础习题集》 参 考 文 献 Niklaus Wirth , 《Algorithms+Data structures=Programs》 , Eng lewood cliffs, PrenticeHall, Inc. 裘宗燕《从问题到程序,程序设计与C语言引论》 北京 机械工业出版社 石峰 《程序设计基础》 北京 清华大学出版社 谭浩强《C程序设计 》北京 清华大学出版社 Samuel P.Harbison III,Guy L.steele Jr. , 《C:A Reference Manual,Fifth Edition》 , Prentice-Hall,Inc. February ISO/IEC 9899:1999/Cor.1:2001(E)《Information technology - Programming languages-C》 GB/T 15272-94 中华人民共和国国家标准 《程序设计语言 C》1994-12-7 第一章 绪论 求玉米产量—计算 算法 PAD图 程序 运行 C 语言 Visual C++集成开发 环境 本章小结 作业 1.3 1.6 熟悉开发环境 练习 1.1 1.2 1.4 1.5 1.7 1.8 §1.1 求玉米产量—计算 【例1.1】已知玉米每亩产量650公斤。如图 1.1所示,现有一个近似四边形的地块位于南北方向 路东侧,东西方向路北侧。其一个顶点距离南北方 向路547米,距离东西方向路411米;另一个顶点距 离南北方向路804米,距离东西方向路77米;第三 个顶点距离南北方向路39米,距离东西方向路208 米;第四个顶点距离南北方向路116米,距离东西方 向路332米。若该地块种植玉米,求该地块玉米产量。 ↑ 北 Y 547 116 D 411 39 C 332 208 804 数学化 计算步骤如下 总产量=总面积*单位产量 – 计算该地块面积 – 折合成亩(每亩1000平方米) 计算总面积:建坐标系 – 求总产量 东 A B 77 → X ↑ 北 Y 547 116 D 411 39 C 332 208 东 A 804 第二步分析:计算总面积 – 计算三角形ABD的面积,设为S1; – 计算三角形BCD的面积,设为S2; – S1+S2 B 77 → X ↑ 北 Y 547 116 D 411 39 C 332 208 804 第三步——选择计算三角形面积公式 S 东 A s (s a)(s b)(s c) S是三角形面积,a、 b、 c 三角形三边边长 s=(a+b+c)/2 B 77 → X ↑ 北 Y 547 116 D 411 39 C 332 208 东 A B 77 804 第四步—— 计算△ABD(△ BCD)面积 – 求边AB长度,记为ab; – 求边BD长度,记为bd; 2 – 求边AD长度,记为ad; 1 2 – 计算s – 计算S → X 第五步——求三角形边长 L= x x y 1 y 2 2 计算过程 1. 2. 3. 4. 5. 6. 7. 8. 9. 按公式求出AB边长度 ab 用同样公式计算边BD长度bd 用同样公式计算边AD长度ad 按公式计算出s 按公式计算出△ABD的面积S1 重复上述1、2、3、4、5步计算△BCD的面积S2 计算总面积S=S1+S2 把面积S折合成亩SS=S/1000 计算总产量M=SS×950 这就是程序 这个过程就是程序设计 程序设计过程 1. 2. 3. 4. 5. 6. 7. 建立数学模型—把实际问题转化为数学问题 找出计算方法—为数学问题的求解找出方法 进行算法分析—为实现计算方法给出具体算法 选择程序设计语言,编出计算机程序—写程序 调试程序—保证程序的正确性 运行,测试程序的正确性—组装测试、确认测试 交付使用并维护 §1.2 算法 什么是算法 – 一个计算过程,包含具体明确的操作 – 描述了解决问题的方法和途径 – 是程序设计的基础和精髓 有效算法的特点 – 有穷性 – 确定性 – 有效性 算法的组成 基本操作 – 表达式以及给变量赋值 – 读(输入) – 写(输出) 基本控制结构 – 顺序控制结构 – 分支控制结构 – 循环控制结构 – 函数调用 – 函数返回 §1.3 PAD (Problem Analysis Diagram) 操作1 操作2 操 作 … 操作n 图1.2 基本操作 图1.3 顺序控制结构 按公式 计算边AB边长度ab; 用同样公式计算边BD长度bd; 用同样公式计算边AD长度ad; 按公式 计算s 按公式 计算△ABD的面积S1 计算另一个△BCD面积S2 求总面积S=S1+S2 折合成亩 计算总产量 打印输出 图1.4 例1.1算法的PAD描述 §1.4 程序 1. 什么是程序 2. – 指令序列 3. 程序语言 4. – 与计算机交流 5. 6. – 下达指令 7. 8. 9. 按公式求出AB边长度 ab 用同样公式计算边BD长度bd 用同样公式计算边AD长度ad 按公式计算出s 按公式计算出△ABD的面积S1 重复上述1、2、3、4、5步 计算△BCD的面积S2 计算总面积S=S1+S2 把面积S折合成亩 SS=S/1000 计算总产量M=SS×950 具体程序 #include <stdio.h> #include <math.h> #define #define #define #define #define #define #define #define xa 547 ya 411 xb 804 yb 77 xc 39 yc 208 xd 116 yd 332 float ab, bd, ad, bc, cd ; float s, s1 ,s2,ss,m; void main(void) { // 主函数 // 计算一个三角形面积 ab=sqrt( (xa-xb)* (xa-xb)+(ya-yb)* (ya-yb) );//边ab长 bd=sqrt( (xb-xd)* (xb-xd)+(yb-yd)* (yb-yd) );//边bd长 ad=sqrt( (xa-xd)* (xa-xd)+(ya-yd)* (ya-yd) );//边ad长 s=(ab+bd+ad)/2; //s s1=sqrt( s*(s-ab)*(s-bd)*(s-ad) ); //面积 // 计算另一个三角形面积 bc=sqrt( (xb-xc)* (xb-xc)+(yb-yc)* (yb-yc) );//边BC长 cd=sqrt( (xc-xd)* (xc-xd)+(yc-yd)* (yc-yd) );//边CD长 s=(bc+bd+cd)/2; //边BD长bd前边已经计算 s2=sqrt( s*(s-bc)*(s-bd)*(s-cd) ); ss=s1+s2; // 总面积S=S1+S2 ss=ss/1000; // 折合成亩 m=ss*950; // 计算总产量 printf(“m=%10.3f\n”,m); // 打印输出 具体程序 #include <stdio.h> #include <math.h> #define #define #define #define #define #define #define #define 头文件 xa 547 ya 411 xb 804 yb 77 xc 39 yc 208 xd 116 yd 332 常量定义 float ab, bd, ad, bc, cd ; float s, s1 ,s2,ss,m; 变量声明 一般C程序 文件hello.c #include <stdio.h> void hello(void){ printf(“Hello!\n”); } 文件startup.c extern void hello(void); int main(void) { hello(); return 0 } 概括:C程序结构 一个C程序由一个或若干个编译单元组成,每个 编译单元是一个源程序文件; 一个编译单元由若干顶层声明组成,每个顶层声 明是一个声明或函数定义,其中主要为函数定义; 声明包括类型定义、变量声明、外部声明、 宏、… 等; 任何C程序必须包含且仅包含一个主函数main。 §1.5 运行 X+15 Y X-15 机器语言 若 X<Y 若 X Y 1010 1001 0001 0110 0000 0001 0011 1100 0001 1000 0000 0001 … … … … … … … 0000 0000 0000 0000 0000 0000 0000 0000 高级语言 if (X<Y) Y=X+15; else Y=X-15; 程序执行 用汇编语言或高级语言编出程序 编辑、录入源程序 由翻译器(编译程序) 将源程序翻译成机器语言程序 由连接程序将机器语言程序连接 生成计算机可执行的程序 将可执行程序送入计算机 并启动计算机执行 得到最后结果 用汇编语言或高级语言编出程序 编辑、录入源程序 由翻译器(编译程序) 将源程序翻译成机器语言程序 出错 由连接程序将机器语言程序连接 生成计算机可执行的程序 将可执行程序送入计算机 并启动计算机执行 数据出错 程序出错 得到最后结果 一般C程序执行 文件hello.c #include <stdio.h> void hello(void){ printf(“Hello!\n”); } hello.c 文件startup.c extern void hello(void) int main(void) { hello(); return 0 } hello.obj startup.exe startup.c startup.obj §1.6 C语言 70年代初,C 语言在美国贝尔实验室诞生。它的前身可 以追朔到ALGOL60 、CPL 、BCPL 、B 。 1982年C标准化工作开始 。 1989年ISO公布ISO/IEC 9899:1990 ,简称“C89”。 1995年对C89作修改和补充,称为“C95”。 1999对C进行更大的修订后,公布 ISO/IEC 9899:1999, 简称“C99”。 我国于1994年12月4日公布了“中华人民共和国国家标 准 GB/T 15272-94 程序设计语言 C”。 C语言的优点 1. 2. 3. 4. 5. 6. 7. 语言简洁、紧凑,使用方便、灵活; C本身是模块式,便于集体分工合作开发大 型程序 运算符丰富 数据结构丰富 具有结构化控制结构 与计算机硬件联系紧密,可以直接访问计算 机内存,具有位操作 生成目标代码质量高。 C语言的缺点 1. 2. 3. 4. 5. 6. 语法不严格 类型机制不严密,比如字符类型与整数类型 没有区别、不检查下标超界 程序设计自由度太大,不利于保证程序的正 确性 若程序与计算机硬件联系太密切,则可移植 性不好 有些语言成分太复杂,比如运算符 语言本身不能保证程序设计的结构化。 §1.7 Visual C++集成开发环境 Hello 程序 – 启动VC++ – 建立环境 – 录入、编辑源程序 – 编译 – 连接 – 运行 求玉米产量的具体程序 本章小结 求玉米产量 – 算法 – PAD图 – 程序 程序设计语言种类 程序的执行 程序结构 C 语言 VC开发环境