内容正文:
微项目1
探讨生活中的算法之美
1
问题一
首先我们一起来解决一个比较经典的过河问题。
分析问题:
首先 我们先来分析问题
解决方法:
第一次:先带羊过去;
第二次:把狼带过去,返程时再把羊带回来;
第三次:把白菜带过去;
第四次:最后把羊带过去.
寻找解决问题方法,可以称之为算法
现实生活中处处存在着解决各种问题的步骤,方法,这都属于算法。
问题二
计算:
97*97
97*103
103*103
一、算法的概念
为了让计算机理解算法中的步骤,需要采用计算机能理解的语言来描述算法并将其输入计算机中,这个过程就称为计算机程序设计。
古代的算法
古代的算法主要指的是”算术”,即数值的算术运算。随着科学技术的发展,算法的外延和内涵逐渐发生着变化。
广义算法
算法指的是解决问题或完成任务的一系列步骤。既包括传统意义上计算任务,也可以是生活中各种事物的处理。
计算机算法
计算机领域内,算法指的是用计算机解决问题的步骤。是为了解决问题而让计算机有序执行的、无歧义的,有限步骤的集合。
二、算法的特征
有穷性:一个算法必须在有限的步骤内结束,不能无限循环
确定性:每一个步骤必须有明确的含义,不能有任何歧异
数据输入:必须有0个或多个数据输入
0个输入是算法本身给出了初始条件
数据输出:一个或多个数据输出
可行性:算法中的每一条指令必须是可执行的,通过计算机可以实现。原则上能精确运行,用纸和笔做有限运算后可以完成。
01
05
04
02
03
算法的特征
1、描述算法的常用方式 。
2、流程图的基本图形及其功能。
3、三种基本控制结构。
三、算法的描述
设计出一个解决问题的算法,也需要被算法执行者理解的形式加以呈现,算法的这种呈现就称为算法的描述 。
案例分析
案例一.鸡兔同笼问题
一个笼子里有鸡和兔,现在只知道里面一共有35个头,94个脚,鸡和兔各有多少只?
分析问题:
假设有a个头,b个脚,写出三种描述法。
1.用自然语言描述算法
设计算法:
①输入a和b的值;
②求X=b/2-a;
③求Y=2a-b/2;
④输出X和Y的值;
⑤结束。
易于理解
歧义
2、流程图
流程图是用图形表示算法的 一种常用工具,用流程图描述的算法直观易读,问题解决步骤清晰简洁,算法结构表达明确。
2、流程图的基本图形及其功能
图 形 名 称 功 能
开始/结束 表示算法的开始或结束
输入/输出 表示算法中变量的输入或输出
处理 表示算法中变量的计算与赋值
判断 表示算法中的条件判断
流程线 表示算法中的流向
连接点 表示算法中的转接
2.用流程图描述算法
①输入a和b的值;
②求X=b/2-a;
③求Y=2a-b/2;
④输出X和Y的值;
⑤结束。
开始
输入 a,b的值
Y=2a-b/2
X=b/2-a
输出X,Y的值
结束
三种基本结构
顺序结构
选择结构
循环结构
开始
输入 a,b的值
Y=2a-b/2
X=b/2-a
输出X,Y的值
结束
顺序结构的特点:
1、每个步骤按照算法中出现的顺序依次执行。
2、每个步骤一定会被执行一次,而且只执行一次。
各个步骤按照先后顺序依次执行
(1)、顺序结构
选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。
(2)、选择结构
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。
(3)、循环结构
条件
Y
N
语句组
条件
语句组
Y
N
三种基本结构流程图
A
B
条件?
A
B
否
是
A
条件?
是
否
3.循环结构
2.分支结构
1.顺序结构
判断依据:分支结构:条件是否成立只判断1次
循环结构:条件是否成立往往判断多次
用伪代码描述算法就是用介于自然语言和计算机语言之间的文字和符号来描述算法。
3.用伪代码描述算法
规避了程序设计 语言严格的书写格式,无歧义,结构性强。
不太适合完全没有程序设计基础的初学者。
3.用伪代码描述算法
Input a,b
x=b/2-a
y=2a-b/2
Print x,y
①输入a和b的值;
②求X=b/2-a;
③求Y=2a-b/2;
④输出X和Y的值;
⑤结束。
Python语言程序代码——鸡兔同笼
import math
a=float(input ("输入头的数量:"))
b=float(input ("输入脚的数量:"))
x=b/2-a
y=2*a-b/2
print("兔子的数量为:%0.2f"%x)
print("鸡的数量为:%0.2f"%y)
算法描述的方法 优势 不足
自然