第六章 问题求解与计算思维;引入; 有一个牧羊人带着一只羊,一匹狼和一颗大白菜准备过河,他找到一只很小的船,每次只能带一样东西过去,可是如果让狼与羊单独在一起,狼会吃羊,让羊与白菜单独在一起,羊会吃白菜,牧羊人应如何过河?;引入;建模算法程序设计计算思维的概念经典问题; 数学建模是一种数学的思考方法,是运用数学的语言和方法,通过抽象、简化、建立能近似刻划并“解决”实际问题的一种强有力的数学手段。 建立模型为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。;?;建模;算法;?;算法--描述;算法设计数据结构控制流程算法策略遍历搜索递归动态规划贪心…….;算法的正确性:问题求解过程、方法——算法是正确的吗?算法的输出是问题的解吗?20世纪60年代,美国一架发往金星的航天飞机由于控制程序出错而永久 丢失在太空中算法的效果评价:算法的输出是最优解还是可行解?如果是可行解,与最优解的偏差多大? 两种方法:分析方法:利用数学方法证明仿真分析方法:产生或选取大量的、具有代表性的问题实例,利用该算 法对这些问题实例进行求解,并对算法产生的结果进行统计分析;算法的效率:时间效率和空间效率时间复杂性:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数,T(n)称为这一算法的“时间复杂性”。“大O记法”:基本参数 n——问题实例的规模把复杂性或运行时间表达为n的函数。 “O”表示量级 (order),允许使用“=”代替“≈”,如n2+n+1=Ο(n2)
算法的空间复杂度:算法在执行过程中所占存储空间的大小。;算法的复杂性;程序设计语言C;语言:语言是人类最重要的交际工 具,是人们进行沟通交流的 各种表达符号。;程序编写;程序编写;高级语言发展历程:非结构化语言结构化语言(面向过程)面向对象
C语言----面向过程的结构化语言高级语言中为什么选C?;1.语言简洁、紧凑、灵活 32个关键字 9种控制语句2.运算符数据类型丰富 34种运算符 数据类型丰富 4.程序设计结构化、模块化5.目标代码质量高,程序执行效率高6.可移植性好7.兼有低级语言和高级语言的特点;32个关键字:(由系统定义,不能重作其它定义)
auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while;if( )~else~for( )~while( )~do~while( )continuebreakswitchgotoreturn;算术运算符:+ - * / % ++ --关系运算符:< <= == > >= !=逻辑运算符:! && ||位运算符 :<< >> ~ | ^ &赋值运算符:= 及其扩展条件运算符:?:逗号运算符:,指针运算符:* &求字节数 :sizeof强制类型转换:(类型)分量运算符:. ->下标运算符:[]其它 :( ) -;C数据类型;;程序编写—C程序基本结构;#include void main( ) { float r,s; printf(“Input r,Please!\n”); scanf(“%f”,&r); s=3.14*r*r; printf(“the result is %f\n”,s); };29;30;31;程序编写—编写风格;1.源程序文档化标识符的命名应遵循“见名知义”的原则。程