算法基础

为了使用计算机帮助我们解决问题,我们需要设计算法,根据算法选用适当的语言编写程序,将程序解释/编译成为二进制指令,再由计算机执行这些二进制指令。

算法

例题

【深基3.例3】闰年判断

题目描述

输入一个年份,判断这一年是否是闰年,如果是输出 $1$,否则输出 $0$。

输入格式

输入一个正整数 $n$,表示年份。

输出格式

输出一行。如果输入的年份是闰年则输出 $1$,否则输出 $0$。

提示

数据保证,$1582 \leq n \leq 2020$ 且年份为自然数。

注:闰年的判断方式:

如果这个数能被 400整除,或者能被 4整除却不能被 100整除。那么这一年为闰年

算法的描述

自然语言

高情商:自然语言

低情商:用人话说

例题(点我回顾):判断闰年为例

  1. 判断是否除以400余数为0
  2. 判断是否除以4余数为0且除以400余数不为零

流程图

就是画图(

img 开始/结束 表示算法的开始或结束
img 输入/输出 表示算法中变量的输入或输出
img 处理 表示算法中变量的计算与赋值
img 判断 表示算法中的条件判断
img 流程线 表示算法中的流向
连接点 表示算法中的转接

image-20230207230942494

这是算法设计中主要的三种结构,对应的伪代码分别为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#顺序结构
代码段1
代码段2
'''在顺序结构中,程序按照从上至下的顺序执行每个语句'''

#选择结构
if 条件 :
代码段1
else:
代码段2
'''在选择结构中,如果条件成立,就选择执行代码段1.如果条件不成立,就选择执行代码段2'''

#循环结构
while 条件 :
代码段1
代码段2
'''在while循环结构中,只要条件成立时便会无限执行缩进中的代码段1,只有当条件不再成立时才会结束循环继续往下执行下面的代码段2'''

例题(点我回顾):判断闰年为例

伪代码

伪代码是最接近自然语言和逻辑的描述方式

例题(点我回顾):判断闰年为例

1
2
3
4
5
6
7
x=input("输入年份")
if x%400==0 :
print(1)
elif x%4==0 and x%100!=0 :
print(1)
else :
print(0)

在代码中

== !=用来判断相等关系,分别代表等号和不等号

=用来赋值

如果执行a=1那么a便会被赋值为1

而语句1+1=2返回1+1!=2 返回

因此执行判断是一定要使用== !=!!!!!!!!!!

使用=虽然可以运行但会结果错误!!!!

and判断是否同时为真

or则有一个为真则为真

%为取余符号,常用于判断是否能整除

例如计算2020%4会返回0,这代表2020整除4的余数为0

同理计算2021%4会返回1

因此通过执行if(a%400==0)可以判断a是否能被400整除

补充辨析

1
2
3
4
5
6
7
8
9
10
if a :
1
if b :
2
if c :
3
if f :
4
else:
5

在这段代码中,前三个if是单独的,第四个ifelse对应(要辨析清楚ifelse的对应关系)

举个例子,如果b成立而其余都不成立,那么会执行35(因为f不成立所以会执行对应的else情况)

而如果cf成立,其余不成立,则会执行34(因为f成立了所以不执行f对应的else)

如果什么都不成立,那么会执行5(因为f不成立所以会执行对应的else情况)

1
2
3
4
5
6
7
8
9
10
if a :
1
elif b :
2
elif c :
3
elif f :
4
else:
5

这段代码把if换成了elif,使得这些判断连为整体

举个例子,如果只有a成立只会执行1

如果只有b成立之后执行2

如果a b c f都不成立才会执行else中的5

但要注意由于程序从上到下执行,如果判断到b时成立,便会执行2后结束后续判断,此时即便c f 成立也不会执行3 4

课后练习

现代生活半径的扩大和生活节奏加快使出行成本不断增长。滴滴快车应运而生,其以灵活快速的响应和经济实惠的价格为大众提供更高效、更经济、更舒适的出行服务,给人们生活带来了美好的变化。小C是滴滴快车忠实的粉丝,经常出行就提前预约,乘坐滴滴快车。小C就在思考这个滴滴快车是怎么计费的?可否用所学的Python语言也编写一个计费程序。于是小C开展了有关这个项目活动的探究。根据实际情况,回答问题。
(一)收集、分析数据,运用数理思维建模

登录滴滴出行官网,得到了如下信息,即“滴滴快车(普通型)计价规则”:
小C同学19:33从“南内环恒地大厦停车场-入口”到“坞城新纪元大酒店(长风店)”乘坐滴滴快车(普通车型),里程4.1公里,时长约21分钟,按照表中的计费规则,小C同学此次出行应该支付的车费是:$车费=8+(4.1-3.3)\times1.35+(21-9)\times0.2=9.68$。

(1)小C登录滴滴出行官网搜索并下载“计价规则”,所采用的数字化工具:$_____$
A.数字化可视化表达工具 B.信息加工工具 C.三维设计工具 D.信息检索工具

(2)假设$Tot1$表示时长费,$Tot2$表示里程费,S表示实际里程,T表示实际时长,Cost表示应支付费用。运用数学解析式归纳出计费公式为:
如果时长超过9分钟,则Tot1=$_____$。
如果里程小于等于3.3公里则Tot2=$_____$,否则Tot2=$_____$。
应支付费用:Cost=$_____$。

滴滴快车(普通型)计价规则

image-20230208124044576

注意:
1.起步价包含里程3.3公里,包含时长9分钟,里程费、时长费合计不足基础费时,直接按照基础费计费。
2.实时计价是基于订单服务内容(里程、时长、时段),按各种费用项定价标准计算订单价格的计价方式,实际费用由两部分里程费与时长费累加而得。

(二)运用算法描述方法将问题解决步骤化
小C明晰了滴滴快车车费的计算方法之后,设计求解滴滴快车普通时段车费的算法,并用自然语言和流程图的方式表述出来。
(3)自然语言描述:
第一步:$_____$
第二步:计算时长费 $Totl$
第三步:计算里程费 $Tot2$
第四步:$_____$
第五步:$_____$
(4)画出流程图

计算机程序设计语言

这……还是死记罢

程序设计语言 优点 缺点
机器语言 就是0和1的二进制指令,可以直接被计算机运行。如10110000 00001001表示把加数9送到累加器AL中。 能被计算机接受和执行
运行效率最高。
程序难以理解,程序设计任务繁重,移植性差。
汇编语言 把这些基本指令用单词表示,需要**编译成机器语言**才能运行,如用MOV AL,9表示把加数9送到累加器AL中。 针对计算机特定硬件而编制的汇编语言程序,比机器语言更容易理解了一些,效率仍十分高。 不能被计算机直接运行,移植性差。
高级语言 把汇编语言的基本指令再组合实现加减乘除、判断、循环、函数等功能,需要翻译成汇编语言再编译成机器语言才能运行 接近于数学语言或人的自然语言,易于理解,移植性好。 不能被计算机直接运行。

img

下面这张图是最重点的,考试常考!

image-20230207233954435

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020-2023 Xingzhi

请我喝杯咖啡吧~

支付宝
微信