算法与程序设计.docx
- 文档编号:26543122
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:74
- 大小:71.61KB
算法与程序设计.docx
《算法与程序设计.docx》由会员分享,可在线阅读,更多相关《算法与程序设计.docx(74页珍藏版)》请在冰豆网上搜索。
算法与程序设计
第二部分 算法与程序设计(选修)
主题1 算法与程序设计
算 法
计算机解决问题的过程
知识点1:
人是如何解决问题的
【知识链接】
本考点要求学生达到“了解”水平。
解决问题的过程可以总结为:
观察、分析问题,收集必要的信息,尝试按照一定的方法和步骤解决问题。
一般来说,同一个问题可以有多种解决方法,但不同的方法有优劣之分。
评价一种方法的优劣要与具体情况相结合。
要理解本考点的内容除了用教科书中“韩信点兵”的例子外,还可以举出其他一些例子,例如:
最小公倍数问题、班级活动的设计等。
【技能扫描】
培养将生活中的实例整理成条理化步骤的好习惯,提高自己的逻辑思维和语言叙述能力。
体会逻辑关联词“如果……那么……”、“或者”、“并且”、“否则”的含义,能把这些逻辑关联词翻译成数学“语言”。
【典型题析】
1.分析“这个人谁都不认识”的含义,体会同一种叙述在不同语境中可以表达不同的意思。
分析:
第一种解释是在场的所有人都不认识这个人(这个人是被认识的对象);第二种解释是这个人不认识在场的所有人。
2.张三有一杯咖啡,李四有一杯牛奶,在不交换杯子的前提下如何交换两人的饮料。
分析:
设张三的杯子为X,李四的杯子为Y,找一个空杯子T。
将X杯中的咖啡倒入T杯中,将Y杯中的牛奶倒入X杯中,再将T杯中的咖啡倒入Y杯中即可。
可以写成X→T,Y→X,T→Y。
【模拟练习】
1.把从早晨起床到学校的过程整理成算法(解决问题的方法和步骤)并表述出来。
2.一个侦探逮捕了5个嫌疑犯b因为这5个人供出的作案地点各有出入,进一步审讯后,他们分别提出了如下的申明。
A:
5个人当中有1个人说了谎。
B:
5个人当中有2个人说了谎。
C:
5个人当中有3个人说了谎。
D:
5个人当中有4个人说了谎。
E:
5个人全说了谎。
然而只能释放说真话的人,请问该释放谁呢?
3.小明有一盒刘德华的歌曲磁带,小云有一盒梁咏琪的歌曲磁带,在不交换磁带的基础上,怎样将两盒磁带上的歌曲对录到对方的磁带上。
参考答案:
1.略
2.提示:
假如E说的是真的,即五个人都说了谎,则A、B、C、D、E都说了谎,自相矛盾,排除;
假如D说的是真的,即有四个人说了谎,则A、B、C、它都说了谎,刚好是四个人说了谎,正确;
假如C说的是真的,即有三个人说了谎,则A、B、D、E都说了谎,四个人说了谎,故C为假;
假如B说的是真的,即有二个人说了谎,则A、C、D、E都说了谎,B为假;
假如A说的是真的,即只有一个人说了谎,则B、C、D、E都说了谎,矛盾,故也为假。
故只能放D。
3.提示:
典型题析2中交换两种饮料和本题中的磁带对录问题,都与计算机算法中将要解决的“交换两个变量的值”的问题类似,理解这种解决问题的方法,才能写出解决问题的步骤。
知识点2:
计算机解决问题的过程
【知识链接】
本考点要求学生达到“了解”水平。
计算机程序(ComputerProgram)是指示计算机如何去解决问题或完成任务的一组可执行的指令。
程序设计(ProgramDesign)是寻求解决问题的方法,并将其实现步骤编写成计算机可以执行的程序的过程。
程序设计语言(ProgramLanguage)泛指一切用于书写计算机程序的语言。
注意:
程序设计语言和计算机语言(ComputerLanguage)是两个不同的概念,程序设计语言是一种重要的计算机语言。
计算机解决问题和人解决问题有着本质的区别:
计算机解决问题要经历分析问题、确定算法、编程求解等基本过程。
计算机解决问题的流程如下:
开始→分析问题→设计算法→编写程序→运行程序→结束
编写程序日寸,首先要对问题进行详细的分析,明确已知条件下的初始状态及要达到的目标,找出求解问题的方法和过程,并抽取出一个数学模型,形成算法;然后将这个数学模型连同它要处理的数据,用计算机能识别的方式描述出来,使之成为计算机能处理的对象;最后用程序设计语言设计出具体的问题求解过程,形成计算机程序。
IBM公司的“深蓝”能够战胜国际象棋大师卡斯帕罗夫,原因是人们将国际顶尖象棋大师在过去100年问开局和终局的数十亿范例存入计算机数据库,针对卡斯帕罗夫每一步的对弈,计算机都从数据库中查找能够取胜的应对步骤。
所以不是“深蓝”战胜了卡斯帕罗夫,而是缜密的计算机程序战胜了卡斯帕罗夫。
【技能扫描】
利用类比的方法体会计算机解决问题和人解决问题的异同,锻炼类比、推理的能力。
【典型题析】
与人解决问题相比,计算机解决问题的优势有哪些?
劣势是什么?
分析:
计算机具有存储量大、运算速度快、精确度高、可重复执行命令等优点,这些优势是人无法比拟的,但计算机也有自身的劣势,那就是它无法完成随意性强、无逻辑性的随机问题,计算机只是一个高级工具。
到目前为止,还没有一台真正具有人类智能的计算机。
【模拟练习】
1.IBM公司的“深蓝”能够战胜国际象棋大师卡斯帕罗夫是因为( )。
A.计算机具有很高的智商
B.计算机具有很快的运算速度
C.计算机事先装载了很多棋局
D.计算机能根据装载的棋局,经过程序判断作出对弈选择
2.利用计算机解决问题的过程描述中,以下说法正确的是( )
A.编写程序→调试程序→分析问题→设计算法
B.分析问题→编写程序→调试程序→设计算法
C.分析问题→设计算法→编写程序→调试程序
D.分析问题→设计算法→调试程序→编写程序
3.名词解释:
计算机程序 程序设计 程序设计语言
参考答案:
1.D2.C3.略
算法的描述方法
知识点1:
算法
【知识链接】
本考点要求学生达到“了解"水平。
算法在计算机程序设计中占有重要地位,是程序设计的“灵魂”。
世界着名计算机科学家尼克劳斯·沃斯(N.Wirth)指出:
算法+数据结构(DataStructure)=程序。
算法具有以下特征。
(1) 有穷性:
一个算法必须保证执行有限步之后结束。
(2) 确切性:
算法的每一个步骤必须有确切的定义。
(3) 输入:
一个算法有0个或多个输入,以描述运算对象的初始情况,所谓0个输入是指算法本身确定了初始条件。
(4) 输出:
一个算法至少有一个输出,用以反映对输入数据加工后的结果,没有输出的算法是毫无意义的。
(5) 可行性:
原则上算法能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
已知最早的算法是考古学家发掘出来的大约在3500~5000年以前的写在黏土板上的。
当时为了做数学用表,巴比伦人需要解代数方程,他们的做法是写出求解的“算法”。
这些算法基本上都是对实际数目的计算。
在算法的最后还附有一个短语,这个短语可以粗略地翻译为“这是一个过程”。
这也是最早出现的程序设计语言的标记。
【技能扫描】
通过数学例子,运用类比的方法,加强对算法概念的理解,借鉴数学家解决问题的技巧,尝试运用算法解决问题。
【典型题析】
1.数学中求1+2+3+…+100的和s。
高斯用凑数法:
1+100,2+99,…,50+51,然后求和。
写出高斯求解问题的算法。
分析:
用凑数法求1+2+3+…+100的和时,每一组数的和都相等(和为101),而且共有50组数。
考虑算法的通用性,类似这种求和的算法可描述为:
输入最大项数n;列式s=(1+n)×n/2;输出s的值。
【模拟练习】
1.写出求解1-2+3-4+…+99-100的和s的算法。
2.水仙花数是指一个三位数,它的各位数的立方和正好等于该数本身,如:
153=
,写出求解水仙花数问题的算法。
参考答案:
1.提示:
循环使用求和公式:
s=s+k*i,k为每一项的符号:
k=
。
2.提示:
首先用循环的方法找到所有的三位数,每找到一个数(用x来表示这个数)就分解当前这个三位数,百位上的数字a=Int(x/100),十位上的数字b=Int((x-a*100)/10),个位上的数字c=x-a*100-b*1,再判断x=
是否成立,若判断结果为真,则x为水仙花数。
知识点2:
如何描述算法
【知识链接】
本考点要求学生达到“了解”水平。
算法的描述方法有自然语言、流程图、伪代码三种形式。
自然语言描述算法的优点是“描述”接近自然语言,通俗易懂,符合人们的表达习惯,容易接受。
缺点是缺乏直观性和简洁性,在算法表述中容易产生歧义。
流程图是算法的图形化表示,其描述算法形象、直观、容易理解。
目前常用的流程图是由美国国家标准化协会(AmericanNationalStandardInstitute,简称ANSI)制定的一系列流程图符号组成(见教科书中的流程图符号)的。
伪代码(Pseudocode)是介于自然语言和计算机程序设计语言之间的一种算法描述。
伪代码一般用逻辑关键词连接自然语言或表达式的形式来表述算法。
因为算法具有多样性,到底用什么算法描述一个问题,要具体问题具体分析。
【技能扫描】
因势利导,培养用算法描述问题的能力,训练正确解决问题的方法,并把数学课中的问题用算法描述出来,达到学科相融的目的。
【典型题析】
1.将求闰年问题的算法用自然语言、流程图、伪代码三种方法描述。
分析:
用自然语言描述闰年问题:
Step1:
输入年份→y
Step2:
如果y能被400整除,则输出“是闰年”,结束程序;否则转到Step3
Step3:
如果y能被4整除但不能被100整除,则输出“是闰年”,结束程序;否则转到Step4
Step4:
输出不是“闰年”,结束程序。
用流程图描述闰年问题:
用伪代码描述闰年问题:
输入年份→y
Ify能被400整除Then
输出“是闰年”
Else
Ify能被4整除Andy不能被100整除Then
输出“是闰年”
Else
输出“不是闰年”
EndIf
EndIf
2.下面关于算法的说法错误的是( )。
A.算法必须有输出B.算法必须在计算机上用某种语言实现.
C.算法不一定有输入D.算法必须在有限步执行后能结束
分析:
算法就是解决某一特定类型问题的有限运算序列。
一个算法必须在执行有限步之后能结束;算法中的每一步必须有确切定义;一个算法有0个或多个输入,也必然有一个或多个输出。
算法不等同于程序。
一个程序,譬如一个操作系统,只要不关机,它就不会结束。
算法的设计可以避开具体的计算机和程序设计语言,也可以借助程序设计语言中提供的数据类型及运算在具体的层次上实现。
参考答案:
B
【模拟练习】
1.恺撒密码编写的信息如下:
Krzduhbrx?
你能用自然语言描述翻译密码的算法吗?
小知识:
公元前60年(两千多年前),古罗马统帅“朱利叶斯·恺撒”(Caesar),用当时发明的“恺撒密码”书写军事文书,用于战时通信。
后来他成了古罗马帝王,就是“恺撒”大帝。
恺撤加密法,就是字母替换加密,即把消息中每一个字母换成其后的第三个字母。
例如:
原文:
abcdefghijklmnopqrstuvwxyz或者ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:
defghijklmnopqrstuvwxyzabc或者DEFGHIJKLMNOPQRSTUVWXYZABC
2.下面说法正确的是( )。
A.算法+数据结构=程序B.算法就是程序
C.数据结构就是程序D.算法包括数据结构
参考答案:
1.提示:
恺撒密码的翻译规律是,对于字符来说,s=Chr(Asc(x)-3)。
翻译结果为Howareyou?
2.A
程序设计基础
程序设计语言
知识点1:
认识程序设计语言
【知识链接】
本考点要求学生达到“了解"水平。
程序设计语言的发展伴随着计算机硬件的发展。
程序设计语言经历了机器语言、汇编语言、高级语言三个阶段。
高级语言又分为解释型语言和编译型语言两种。
机器语言是计算机能直接识别的语言,机器语言是一串由“0”和“1”构成的二进制代码。
人记忆和理解机器语言非常困难,而且容易出错。
汇编语言是一种符号化的机器语言,它用英文助记符代替机器指令,比机器语言容易识别和记忆,提高了程序的可读性。
它的缺点是依赖机器,不同的机器有不同的指令集,通用性差,使用时还必须翻译成目标程序执行。
高级语言是更接近自然语言和数学语言的编程语言。
它不依赖机器,通用性好,更容易掌握。
高级语言程序的可读性强,便于修改和维护。
解释型语言的特征是程序边解释边执行,解释一句执行一句,速度较慢,其代表语言有QBasic、LISP。
编译型语言是先用编译程序将源程序“翻译”成机器语言的目标程序,再由连接装配程序进行装配,生成可执行的程序被计算机执行,其代表语言有VisualBasic、C/C++等。
1954年美国科学家巴科斯(J.Backus)完成了第一个计算机高级语言——FORTRAN语言,创立了描述计算机语言语法的符号集巴科斯范式,摘取了1977年度的“图灵奖”。
【技能扫描】
学习搜集(计算机发展的)信息的方法,增强自我学习的能力,增强自身的知识积累。
【典型题析】
1.简答题:
什么是解释型语言?
什么是编译型语言?
分析:
计算机只能直接执行机器语言。
高级语言编写的程序必须翻译成机器语言,才能被计算机执行。
翻译的方式分为编译型和解释型。
参考答案:
用编译型语言编写的程序在执行之前需要一个专门的编译程序,把程序编译成为机器语言的目标程序,然后再由连接装配程序进行连接装配,生成可执行程序,才能被计算机执行,比如exe文件。
以后运行时不需要翻译,所以编译型语言的程序执行效率高。
用解释型语言编写的程序在运行的时候才被翻译,比如Basic语言,专门有一个解释器能够直接执行Basic程序,每个语句都是在执行时被翻译的。
这样解释型语言每执行一次就要翻译一次,效率比较低。
【模拟练习】
1.能够被计算机直接识别的语言是( )。
A.伪代码B.高级语言C.机器语言D.汇编语言
2.程序设计语言的产生与发展所经历的过程不包括以下哪个选项?
( )
A.机器语言B.汇编语言C.初级语言D.高级语言
3.利用Basic语言编写的程序源代码的文件名后缀为( )。
A..basB..cppC..txtD..doc
4.简述计算机语言有哪些,写出这些计算机语言的名称。
参考答案:
1.C 2.C 3.A 4.略
知识点2:
认识可视化编程工具——VB语言
【知识链接】
本考点要求学生达到“了解”水平。
实现算法的程序设计语言有多种,VisualBasic(简称VB)是其中一种好学易懂的语言。
VisualBasic是基于Basic的可视化程序语言。
所谓可视化程序设计,主要是指程序设计人员利用软件本身提供的各种控件,像搭积木式地构造应用程序的各种界面,然后编写少量的代码就可以构建应用程序。
首先要熟悉VB的开发环境,理解VB语言是一种可视化、面向对象的程序设计语言。
启动VB,打开VB工作窗口,如下图所示。
窗口的上部是菜单栏和常用工具栏,窗口左边是工具箱,中间主要区域是窗体,右边是属性窗口、工程窗口、窗体布局窗口等。
所谓面向对象的程序设计,就是面向控件的程序设计。
窗体控件主要是为VB程序提供一个承载其他控件的平台。
在界面设计阶段,可以把程序需要的控件添加并排列在窗体上。
按钮控件主要是设计执行某个操作或执行某段程序的“切换开关”(设置按钮控件的“Click”事件)。
标签控件主要显示不希望被用户修改的文本。
文本框控件是一个文本的编辑区,用户可以在其中输入、编辑、显示文本内容。
【技能扫描】
学习在窗体中添加工具箱中的文本框、标签、按钮等控件。
选中窗体中的某个控件,其相应的属性窗口亦被选中。
了解每个控件的主要属性,学习设置控件的常用属性。
【典型题析】
1.双击窗体中的对象后,VB将显示的窗口是( )。
A.项目(工程)窗口B.工具箱C.代码窗口D.属性窗口
分析:
双击窗体中的对象,会显示代码编辑窗口。
程序代码作为对象的“方法”书写在代码编辑窗口中,并且还要指定程序代码的驱动事件。
参考答案:
C
【模拟练习】
1.VB有设计、运行和中断三种模式,要使用调试工具应该( )。
A.进入设计模式B.进人运行模式C.进人中断模式D.不用进入任何模式
2.下列关于添加“控件”的方法正确的是( )。
A.单击控件图标,将鼠标指针指向窗体,双击鼠标
B.双击工具箱中的控件,即在窗体上出现该控件
C.单击工具箱中的控件,将指针移到窗体上,再单击
D.用鼠标左键拖动工具箱中的某控件到窗体的适当位置
3.下列不属于VB控件的是( )。
A.文本框B.定时器C.窗体布局窗D.命令按钮
参考答案:
1.A2.B3.C
知识点3:
VB可视化编程初步
【知识链接】
本考点要求学生达到“理解”水平。
了解VB可视化编程的一般步骤,了解运用常用控件编写的简单程序,通过简单程序体会控件对象的使用,掌握控件对象的属性、方法、事件等基本概念。
可视化编程的一般步骤:
设计程序界面→编写程序代码→调试、运行程序
面向对象的程序设计就是以对象为中心,以事件为过程执行的起点。
VB提供的可编程事件有单击(Click)、双击(DblClick)、加载(Load)、按键(KeyPress)等,教科书中最常用的是单击(Click)事件。
方法是对象能够执行的操作,这些操作一般是一个动作或一段程序。
例如:
的作用是清除窗体Form1中的内容,End用于结束程序的运行。
每个对象都有自己的名称,对象有了名称才能被程序引用。
系统为每个对象都规定了默认的名称,例如:
Command3、Label2等。
为了便于程序的阅读和理解,可以自己规定对象的名称,在程序中只要引用自己规定的对象名称就可以了。
一般约定,对象名称由3个小写字母组成的前缀(指明对象的类型)和表示该对象作用的字符组成。
常用控件名的前缀约定和命名举例如下。
对象的类型
意义
对象的作用
前缀
名称举例
Form
窗体
其它对象的容器(其它对象放在Form上)
frm
frmFind
Command
命令按钮
控制其它对象的运行
cmd
cmdOK
Label
标签
仅能显示文字信息
lbl
lblInput
TextBox
文本框
既能显示文字信息,又能编辑文字(输入、修改)
txt
txtSource
下面是几个应该了解的文件。
.vbp文件:
与VB工程有关的文件和对象清单,是一个文本文件。
(工程文件)
.frm文件:
是包含窗体及控件的属性设置、相关程序代码的文件。
(窗体文件)
.bas文件:
是标准模块文件。
.ocx文件:
是VB的扩展控件文件。
【技能扫描】
熟悉VB集成开发环境,理解控件对象的属性、方法、事件等基本概念和作用。
掌握常用的窗体、命令按钮、文本框、标签等控件的添加、使用方法。
学会设置常用控件的属性。
【典型题析】
1.一只漂亮的酒杯被摔碎了,其中漂亮、酒杯、摔、碎了分别是( )。
A.对象、属性、事件、方法B.对象、属性、方法、事件
C.属性、对象、方法、事件D.属性、对象、事件、方法
分析:
对象的属性定义其外观。
方法定义其行为。
事件定义其与用户的交互。
“酒杯”是对象,“漂亮”是酒杯的属性,动词“摔”是事件,摔的结果“碎了”是方法。
参考答案:
D
2.VB是一种面向对象的程序设计语言,构成对象的三要素是( )。
A.属性、方法、事件B.控件、属性、事件
C.窗体、控件、过程D.窗体、控件、模块
分析:
VB向对象的程序设计语言的精髓是许多相关对象的有机组合构成一个程序系统,其中每个对象都有自己的属性(偏重于可视化特点),有相应的程序或“命令动作”构成方法,有触发这些“方法”的“启动”事件。
参考答案:
A
【模拟练习】WordExcel
1.如果要改变窗体的标题,需要设置窗体对象的( )属性。
A.NameB.CaptionC.BackColorD.BorderStyle
2.下列文件属于工程文件和窗体文件的是( )。
A.和B.和C.和D.和
Pdf:
便携式文档格式,进行文件交换所发展出的文件格式。
3.窗体的BackColor属性用于设置窗体的( )。
A.高度B.宽度C.背景色D.前景色
4.VB提供的标签控件具有的功能是( )o.
A.输入文本B.显示文本C.计时D.显示时间
参考答案:
1.B2.C3.C4.B
数据与运算
知识点1:
数据类型
【知识链接】
本考点要求学生达到“迁移应用与熟练操作”水平。
VB提供了数值型、字符串型、布尔型、日期型等基本数据类型。
数据类型:
整型(Integer),取值范围(-32768~32767);
长整型(Long);
单精度型(Single);
双精度型(Double);
字符串型(String),取值范围(0~65535)个字符、不定长字符串:
0~20亿个字符);
布尔型(Boolean),取值为(True或False);
日期型(Date),格式(100/1/1~9999/12/31)。
注意:
(1) 浮点型(单精度型和双精度型的合称)数据的表示方法:
浮点数在计算机中类似于数学中的实数,比如:
304707表示成。
(2) 字符串型数据的表示方法(必须用””引起来):
"VisualBasic"、"245"、"=33+2"等。
(3) 日期型数据的表示方法:
用一对“#”号把日期或时间括起来,例如:
#2008/06/28#表示2008年6月28日。
【技能扫描】
掌握常用的数据类型,常用数据类型的取值范围和表示方法。
【典型题析】
下列哪组数据是VB中正确的数据表示形式?
( )
A.B.3457E-10C.±D.#2000/06/28#
分析:
对于不同的数据类型有不同的取值范围和表示方法,选项A中E的后面应是整数,选项B中E前面的数只能保留一位整数,选项C中的符号错误。
参考答案:
D
【模拟练习】
1.整型数据的取值范围是:
________________。
2.布尔型数据的两个值是:
________和________。
3.写出下列各表达式的值。
(1) "123"+45:
________。
(2) "17"+"":
________。
(3) #2008/06/28#-#2008/04/28#:
________。
(4) #2008/06/28#+4:
________。
参考答案:
1.-32768~32767 2.TrueFalse 3.
(1)168
(2) (3)61 (4)2008/7/2
知识点2:
常量与变量
【知识链接】
本考点要求学生达到“迁移应用与熟练操作”水平。
1.在VB中,用常量(Constant)表示在程序运行过程中事先设置的、其值不能改变的数据。
VB中的常量有数值常量、字符串常量等。
常量的定义形式如下:
Const常量名[As类型]=表达式
2.变量(Variable)是内存中存放数据的存储单元,其中存放的数据称为变量的值。
变量名命名的约定如下:
(1) 必须以字母或汉字开头,不能以数字或其他字符开头。
(2) 只能由字母、汉字、数字和下画线组成,不能含有小数点、空格等字符。
(3) 变量名字符数不超过255个。
(4) 变量名不能使用VB中的保留字(即VB专用的有特殊意义的内容,如Print、End等)。
(5) VB不区分变量名中字母的大小写。
(6) 变量名最好取
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 程序设计