井字棋程序的设计与算法

井字棋程序的设计与算法
井字棋程序的设计与算法

井字棋程序的设计与算法

作者姓名:周翔

电子邮箱:seafrog@https://www.360docs.net/doc/ae10183877.html,

摘要:

本文就作者编写的井字棋程序进行了简要的介绍,并重点介绍了该程序采用的算法、程序设计方案、对算法的改进等内容。

关键字:井字棋,评估函数,极大极小值算法,α-β剪枝算法

1. 程序说明

本程序旨在完成一个具有人机博弈功能的井字棋程序,具有良好的用户界面、支持人机对弈和双人对弈两种模式,并具有悔棋、选择难易级别等功能。该程序是中科院研究生院2005年秋季学期《人工智能原理》课程的项目一。

2. 设计方案

2.1 设计步骤

本程序最主要的任务是完成图形界面的井字棋的人机对弈模块的设计。在人机对弈过程中,计算机方所采用的算法,也就是博弈树的搜索技术是最重要的。所以,设计时,作者按照以下步骤进行:

(1) 选定博弈算法;

(2) 建立一个简单的应用程序(如字符界面程序)来测试算法;

(3) 选定图形界面中要实现的其他功能(如双人对弈、悔棋、难易级别选定、联机对战等);

(4) 实现图形界面的井字棋程序。

所采用的核心算法将在第3节介绍。本程序要实现两个程序,一个是字符界面的算法测试程序,另一个是要正式提交的图形界面程序。下面是对这两个程序的设计方案的介绍。

2.2 字符界面的算法测试程序

该测试程序由标准C++编写,作者采用了极大极小值算法。除了主程序外,它还包括具有以下功能的函数:

(1) 棋盘初始化函数:void Init();

(2) 打印棋盘函数:void PrintQP();

(3) 用户输入落子位置函数void UserInput();

(4) 判断当前棋局是否有一方获胜,并判断哪一方获胜的函数:int IsWin(State s);

(5) 评估函数值计算函数:int e_fun(State s);

(6) 极大极小值算法主函数:int AutoDone();

其中前三个函数是对程序中当前的棋局进行读写操作的函数,第4、5个函数是对当前的棋局进行判断的函数,最后一个函数中包含了计算机决定在哪个位置落子所采用的核心算法,并且可以判断计算机落子前后棋局的状态,如果在搜索树的深度范围内能判断哪一方必胜,则可提前打印输赢信息,并结束本棋局。字符界面的测试程序的运行过程如图1所示。

2.3 图形界面的井字棋程序

图形界面的井字棋程序使用MFC(微软基础类库)来构建图形界面,同时将字符界面程序中的void Init()、int IsWin(State s)、int e_fun(State s)、int AutoDone()四个函数拿出来放在一个独立的头文件中。棋盘绘制和显示对弈状态信息通过视图类CJzqView类来实现,而且所有的井字棋对弈功能的实现全部包含在CJzqView类中。作者定义的一些菜单消息如下所示,菜单消息包含了该程序实现的所有功能:

ID_NEW_QP:新开一局λ

ID_QP_HUI:悔棋λ

ID_AUTO_GAME:人机对弈λ

ID_TWO_MAN:双人对弈λ

ID_MAN_FIRST:设定人先下λ

ID_COMPUTER_FIRST:设定计算机先下λ

ID_EASY、ID_MID、ID_HARD:设定难易级别(容易、中等、困难)λ

此外,我还定义了ON_WM_LBUTTONUP消息的响应函数,以便于用户落子。此外,对弈结束后,用鼠标左键点一下棋盘就可以开始新的对弈,而以前的设定保持不变。

图1:字符界面的井字棋程序的运行过程

需要说明的是,在处理双人对战时,虽然程序不会调用AutoDone和e_fun函数,但是程序把参与对弈的第二个人当做“电脑”,即,用来标志电脑的变量被用来标识第二个人,这样可以减少变量的个数。比如ComputerFirst=1时,则表示第二个人先下,MansTurn=0时,则表示当前该第二个人落子。

3. 核心算法及源代码

3.1 定义的数据结构和变量

由于本程序采用的核心算法是极大极小值算法,所以,在实现算法之前,必须定义一些数据结构来保存生成的状态节点。因此,我定义了State结构:

struct State //该结构表示棋盘的某个状态,也可看做搜索树中的一个节点

{

int QP[3][3]; //棋盘格局

int e_fun; //当前状态的评估函数值

int child[9]; //儿女节点的下标

int parent; //双亲节点的下标

int bestChild; //最优节点(评估函数值最大或最小)的儿女节点下标

}States[MAX_NUM]; //用来保存搜索树中状态节点的数组

我使用了States[MAX_NUM]数组来保存生成的状态节点,通过State结构中的parent、child 域构成了一个搜索树,并通过bestChild域保存了一条从根节点到叶节点的最优解路径。特别的,States[0]作为根节点保存了当前的棋局状态。为了保存当前对弈过程的状态信息,我定义了以下常量:

//以下常量表示棋局当前的状态

const int DRAW_GAME=1100; //棋局为平局

const int COMPUTER_WIN=1101; //计算机赢了

const int MAN_WIN=1102; //人赢了

const int PLAYING=1103; //对弈正在进行

const int WAIT_4_PLAY=1104; //正在等待开始

const int MAX_NUM=1000; //扩展生成状态节点的最大数目

const int NO_BLANK=-1001; //表示没有空格:棋盘上没有空余的位置来落子

const int NIL=1001; //表示空

并定义下列全局变量保存临时信息:

static bool MansTurn; //是否该人下了

static bool ComputerFirst; //是否计算机先下

static int Level; //当前难易级别

static int Mode; //模式:是人机对战(1)还是双人对战(0)

static int Now; //表示棋局现在的状态

static int pos_x,pos_y; //表示计算机落子的位置的x,y坐标

static int TREE_DEPTH=2; //搜索树的最大深度,如果增加此值可以提高计算机的“智力”, //但同时也需要增加MAX_NUM的值。

static int s_count; //用来表示当前分析的节点的下标

同时,我还定义了两个3×3的二维数组,AutoDone函数中要用到其中的一个来保存临时的棋盘格局,另一个则是用来保存上一步的棋盘格局,悔棋时可将此棋局覆盖当前的棋局States[0]。

3.2 算法及源代码

极大极小值算法的详细介绍请参看参考文献[2](第53页至55页)。在程序实现时,我使用了和[2]中相同的评估函数。评估函数的源代码如下所示:

int e_fun(State s)//评估函数

{

bool flag=true;

for(int i=0;i<3;i++)

for(int j=0;j<3;j++)

if(s.QP[i][j]==0)flag=false;

if(flag)return NO_BLANK;

if(IsWin(s)==-1)return -MAX_NUM;

if(IsWin(s)==1)return MAX_NUM;

int count=0;//count变量用来保存评估函数的值

//将棋盘中的空格填满自己的棋子,既将棋盘数组中的0变为1

for(i=0;i<3;i++)

for(int j=0;j<3;j++)

if(s.QP[i][j]==0)tmpQP[i][j]=1;

else tmpQP[i][j]=s.QP[i][j];

//电脑一方

//计算每一行中有多少行的棋子连成3个的

for(i=0;i<3;i++)

count+=(tmpQP[i][0]+tmpQP[i][1]+tmpQP[i][2])/3;

//计算每一列中有多少列的棋子连成3个的

for(i=0;i<3;i++)

count+=(tmpQP[0][i]+tmpQP[1][i]+tmpQP[2][i])/3;

//斜行有没有连成3个的?

count+=(tmpQP[0][0]+tmpQP[1][1]+tmpQP[2][2])/3;

count+=(tmpQP[2][0]+tmpQP[1][1]+tmpQP[0][2])/3;

//将棋盘中的空格填满对方的棋子,既将棋盘数组中的0变为-1

for(i=0;i<3;i++)

for(int j=0;j<3;j++)

if(s.QP[i][j]==0)tmpQP[i][j]=-1;

else tmpQP[i][j]=s.QP[i][j];

//对方

//计算每一行中有多少行的棋子连成3个的

for(i=0;i<3;i++)

count+=(tmpQP[i][0]+tmpQP[i][1]+tmpQP[i][2])/3;

//计算每一列中有多少列的棋子连成3个的

for(i=0;i<3;i++)

count+=(tmpQP[0][i]+tmpQP[1][i]+tmpQP[2][i])/3;

//斜行有没有连成3个的?

count+=(tmpQP[0][0]+tmpQP[1][1]+tmpQP[2][2])/3;

count+=(tmpQP[2][0]+tmpQP[1][1]+tmpQP[0][2])/3;

return count;

}

整个算法在AutoDone函数中实现,其实现过程分为以下几步:

(1)为了获得最优的落子位置,在算法中首先要生成搜索树。其中,我把States[0]作为树根节点,根节点所在的层是极大层(MAX层),然后通过向棋盘中没有落子的空格添一个对方的棋子生成下一层(极小层,MIN层)的树节点,如果当前树的高度大于等于

TREE_DEPTH(>=1)全局变量,则停止生成节点,否则则继续生成下一层节点(如果当前节点层为MIN层,则下一层为MAX层,否则,则下一层为MIN层)。生成每一层时可为每一层的属性(MAX或MIN)做标记,生成每个节点时,应计算这个节点的评估函数值,并将其保存在状态节点的e_fun域中。这一步的源代码如下所示:

for(int t=0;t

{

count=s_count;//保存上一层节点生成的最大下标

for(int k=parent+1;k<=count;k++)//生成一层节点

{

int n_child=0;//该层节点的孩子节点数初始化为0

for(int i=0;i<3;i++)

for(int j=0;j<3;j++)

if(States[k].QP[i][j]==0)//如果在位置(i,j)可以放置一个棋子

{ //则

s_count++; //生成一个节点,节点数(最大下标)数加1

for(int i1=0;i1<3;i1++) //该3×3循环将当前棋局复制到新节点对应的棋局结构中

for(int j1=0;j1<3;j1++)

States[s_count].QP[i1][j1]=States[k].QP[i1][j1];

States[s_count].QP[i][j]=t%2==0?1:-1;//根据是人下还是计算机下,在空位上落子

States[s_count].parent=k; //将父母节点的下标k赋给新生成的节点

States[k].child[n_child++]=s_count; //下标为k的父母节点有多了个子女

//如果下一步有一步棋就能让电脑赢,则停止扩展节点,转向结局打印语句

if(t==0&&e_fun(States[s_count])==MAX_NUM)

{

States[k].e_fun=MAX_NUM;

States[k].bestChild=s_count;//最好的下一步棋所在的节点的下标为s_count

goto L2;

}

}

}

parent=count; //将双亲节点设置为当前双亲节点的下一层节点

//cout<

}

(2)因为层次遍历会修改非叶节点的极大极小值,而且非叶节点原来的极大极小值会对其来自其子女节点的极大极小值产生影响(比如,如果一个非叶节点的极大极小值大于或小于其子女节点中的最大者或小于其中的最小者,则导致其评估函数值无法更新)。所以非叶节点没有必要也不能保存。这一步的源代码如下所示:

tag=States[s_count].parent;//设置最底层标志,以区分叶节点和非叶节点。

for(i=0;i<=s_count;i++)

{

if(i>tag) //保留叶节点的评估函数值

{

States[i].e_fun=e_fun(States[i]);

}

else //抹去非叶节点的评估函数值

States[i].e_fun=NIL;

}

(3)然后,通过层次遍历获得每个非叶节点的评估函数值,同时将非叶节点的bestChild域指向最佳子女,从而形成一条从根节点到叶节点的最佳解路径。这一步的源代码如下所示:

while(!IsOK)//寻找最佳落子的循环

{

for(int i=s_count;i>tag;i--)

{

if(max_min)//取子女节点的最大值

{

if(States[States[i].parent].e_fun

{

States[States[i].parent].e_fun=States[i].e_fun; //设置父母节点的最大最小值

States[States[i].parent].bestChild=i; //设置父母节点的最佳子女的下标

}

}

else//取子女节点的最小值

{

if(States[States[i].parent].e_fun>States[i].e_fun||States[States[i].parent].e_fun==NIL)

{

States[States[i].parent].e_fun=States[i].e_fun; //设置父母节点的最大最小值

States[States[i].parent].bestChild=i; //设置父母节点的最佳子女的下标

}

}

}

s_count=tag; //将遍历的节点上移一层

max_min=!max_min; //如果该层都是MAX节点,则它的上一层都是MIN节点,反之亦然。 if(States[s_count].parent!=NIL) //如果当前遍历的层中不包含根节点,

//则tag标志设为上一层的最后一个节点的下标

tag=States[s_count].parent;

else

IsOK=true; //否则结束搜索

}

(4) 最后,将当前的棋局更新为其最优子女节点的棋局,并获得落子的位置:

//取落子的位置,将x,y坐标保存在变量pos_x和pos_y中,

//并将根(当前)节点中的棋局设为最佳子女节点的棋局

for(int x=0;x<3;x++)

{

for(int y=0;y<3;y++)

{

if(States[States[0].bestChild].QP[x][y]!=States[0].QP[x][y])

{

pos_x=x;

pos_y=y;

}

States[0].QP[x][y]=States[States[0].bestChild].QP[x][y];

}

}

此外,AutoDone函数中还有一些后续操作(比如判断当前棋局是否有一方获胜、打印状态信息等),请参看附件中的源代码文件zx_jzq.cpp。

3.3 “智商”分析

在我采用的算法中,可以通过增加生成树的层数,即增加TREE_DEPTH的值来提高计算机的智商。这相当于增加了计算机向前预测的步数。对井字棋来说,因为井字棋有9个格,所以TREE_DEPTH的最大值可以设为9,但是实际上,经过试验,当TREE_DEPTH=3时,计算机对井字棋的落子的处理就能达到比较好的效果。在已经实现的程序中,我将游戏难度分为3个等级:容易(TREE_DEPTH=1),中等(TREE_DEPTH=2),困难(TREE_DEPTH=3)。特别的,当TREE_DEPTH=1时,计算机只预测下一步人的走法,而TREE_DEPTH=3时,计算机会综合考虑以后3步的走法。当TREE_DEPTH=3时,程序生成的最大状态节点数为:1+9+9×8+9×8×7=585个,这对现在的计算机来说,是可以在可接受的时间范围内处理完这些状态的。但对于状态个数较多的情况,如中国象棋或围棋,搜索树层数的增加会导致计算机在空间和时间上耗费呈指数级的增长。

当TREE_DEPTH大于等于1时,可以对棋局进行预测,因此就可以提前判断输赢。比如在图1所示的对弈过程中,当棋局矩阵为(1表示一方落下的棋子,-1表示另一方落下的棋子,0表示在该位置上没有棋子):

-1 -1 1

0 1 0

0 0 1

时,就可以判定执“1”的一方赢了,因为执“1”的一方在(1,3)点的棋子落下以后产生了两个先手,输赢关系可以在3步之内判定,如果把搜索树层数设置为2,则计算机在对手下一步棋之后才会知道自己赢。所以,在这个角度上看,搜索树层数的增加可以提高计算机的智商。

4. 总结

在本程序中的井字棋程序使用了极大极小值算法,这种算法的思想是“考虑双方对弈若干步之后,从可能的走法中选一步相对较好的走法来走”,并且“在有限的搜索深度范围内进行求解”。

最大最小值算法的核心是将搜索树的层分为MAX层和MIN层,MAX层和MIN层交替相邻(即,一个节点如果在MAX层,则其子女节点在MIN层;如果在MIN层,则其子女节点在MAX层),在MAX层的节点的评估函数值取其子女节点中的最大者,在MIN层的节点的评估函数值取其子女节点中的最小者。

此外,需要定义一个评估函数来计算叶节点的评估函数值,要注意将某方获胜的状态节点的评估函数值设为计算机能表示的最大数(无穷大)或最小数(无穷小)以表明在该状态下有一方获胜。

最后,还要“在有限的搜索深度范围内进行求解”,如果搜索深度太大,则在状态数较多的情况下会使时间耗费或空间耗费达到无法忍受的程度。

5. 改进建议

本程序中的程序的博弈算法采用的是极大极小值算法,如果采用α-β剪枝算法,则可以在一定程度上减少博弈树的节点数。假设一棵树的深度为d,且每个非叶节点的分支系数为b,则在最佳情况下,α-β剪枝算法生成深度为d的叶节点数大约相当于极大极小值算法所生成的深度为d/2的博弈树的节点数。也就是说,为了得到最佳的一步,α-β剪枝算法只需要检测O(b^d/2 )个节点,而不是极大极小值算法的O(b^d )。从另一个角度看,在相同的代价下,α-β剪枝算法向前看走的步数是极大极小值算法向前看走的步数的两倍(见参考文献[2]第57页)。

高中信息技术《算法与程序设计》试题

高中信息技术《算法与程序设计》试题 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE 10、在循环语句 For x=1 to 100 step 2 …… Next x 中,x能达到的最大值是() A、100 B、99 C、98 D、97 11、在下列选项中,不属于VB的对象的是() A、窗体的背景颜色 B、命令按钮 C、文本框 D、标签 12、在调试程序的时候,经常要设置断点,设置断点的快捷键是()

算法与程序设计》选修教案

第一课初识算法与程序设计 一、教学目标 1、知识与技能 (1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力; (2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动手操作能力。 2、情感、态度、价值观 学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学生自我获取信息、分析评 价信息、、表达呈现信息的能力,进一步提高其信息素养。 二、教学重点难点 重点:算法概念的理解 难点:如何科学合理的选择和设计算法。 三、教学策略与手段 以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动探讨,通过Flash演示材 料,比较直观地把抽象的问题简单化,使学生的思考逐步深入,从而总结出

算法的概念,学会如何设计 和选择算法,培养学生自主探究学习的能力。 四、教学过程(1课时) (一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。 【问题一】天下真的有“不要钱的午餐”吗? 某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来宾必须凑够五个人,五人 每次来就餐必须按照不同的顺序坐,直到把所有可能的顺序都坐一遍,以后来吃饭就可永远免费” 。于 是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项 活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢? 学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题的步骤:①第一个座位5 个人都有坐的机会②第二个座位只有4个人中的任一个有坐的机会(一个人不能同时坐两个座位)③第 三个座位只有3个人中的任一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座 位只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需要吃120次才有可能

教科版高中信息技术选修一《算法与程序设计》选修教案.doc

学习必备欢迎下载 第一课初识算法与程序设计 一、教学目标 1、知识与技能 (1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力; (2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动 手操作能力。 2、情感、态度、价值观 学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学 生自我获取信息、分析评价信息、、表达呈现信息的能力,进一步提高其信息素养。 二、教学重点难点 重点:算法概念的理解 难点:如何科学合理的选择和设计算法。 三、教学策略与手段 以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动 探讨,通过 Flash 演示材料,比较直观地把抽象的问题简单化,使学生的思考 逐步深入,从而总结出算法的概念,学会如何设计和选择算法,培养学生自主 探究学习的能力。 四、教学过程( 1 课时) (一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。 【问题一】天下真的有“不要钱的午餐”吗? 某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来

的顺序都坐一遍,以后来吃饭就可永远免费” 。于是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢? 学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题 的步骤:①第一个座位5个人都有坐的机会②第二个座位只有4个人中的任一 个有坐的机会(一个人不能同时坐两个座位)③第三个座位只有3个人中的任 一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座位 只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需 要吃120次才有可能吃上免费午餐。 【问题二】有三个和尚和三个妖怪过河,只有一条能装下两个人的船,在河的 任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉 的危险。你能不能找出一种安全的渡河方法呢?请写一写你的渡河方案。学 生:学生讨论回答。 〖展示步骤〗 ①两个妖怪先过河,一个妖怪回来; ②再两个妖怪过河,一个妖怪回来; ③两个和尚过河,一个妖怪和一个和尚回来; ④两个和尚过河,一个妖怪回来; ⑤两个妖怪过河,一个妖怪回来; ⑥两个妖怪过河。 【F lash 动画展示】通过讨论和动画展示,我们可以知道,计算机解决问题和 人解决问题一样需要有清晰的解题步骤。算法就是解决问题的程序或步骤。(二)【课件展示】算法的概念:

《算法与程序设计》试题带答案

《算法与程序设计》试题 学校:_____________ 班级:____________ 学号:____________ 姓名:____________ 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE

高二算法与程序设计试题及答案

高二信息技术(算法与程序设计)试题卷 一、单项选择题(每小题2.5分共50分将正确答案填到答题卷相应题号下) 1、一同学想通过程序设计解决“鸡兔同笼”的问题,他制定的如下工作过程中,更恰当的是()。 A、提出问题、设计算法、编写程序、得到答案 B、提出问题、编写程序、运行程序、得到答案 C、编写程序、设计算法、调试程序、得到答案 D、设计程序、提出问题、编写程序、运行程序 2、下列常量说明中,符合语法的是()。 A、CONST color=red B、CONST const=10*5 C、CONST xl:=3.9; D、CONST color=”abcd” 3、下列代数式的Visual Basic表达式是( )。 A、(x^5-cos(29*3.14))/(sqr(exp(x)+log(y))) B、(x^5-cos(29))/(sqr(exp(x)+ln(y))+5) C、(x^5-cos(29*3.14/)/(sqr(exp(x)+ln(y))+5) D、(x^5-cos(0.506))/(sqr(exp(x)+log(y))+5) 4、下列变量名写法错误的是()。 A、abc B、abc123 C、abc_123 D、123abc 5、visual basic程序设计语言是一种()。 A、高级语言 B、汇编语言 C、机器语言 D、数据库语言 6、下列给出的赋值语句中正确的是()。 A、4 = M B、-M =M C、B=A-3 D、x + y = 0 7、下列Visual Basic中,下列()的表达式的值不等于4。 A、int(4.1) B、fix(4.9) C、Abs(int(-3.9)) D、Abs(int(-4.5)) 8、下面程序运行后的输出S结果为()。 i=1 do WHILE i<8 i=i+2:s=2*i+3 loop PRINT s A、17 B、19 C、21 D、23 9、下列Visual Basic中,下列()类型属于字符串型。 A、Integer B、Single C、String D、Boolean 10、在VB中表达式11\3+11 mod 3 的运算结果值是()。 A、3 B、4 C、5 D、6 11、下列程序执行后,整型变量n的值为( )。 n=0: for I=1 to 100: if I mod 4=0 then n=n+1: next I A、5050 B、25 C、26 D、33 12、以下选项中,不是Visual Basic控件的是( )。 A、文本框 B、定时器 C、窗体 D、命令按钮 13、使用Visual Basic编程,我们把工具箱在的工具称为( )。 A、事件 B、工具 C、控件 D、窗体 14、结构化程序设计由三种基本结构组成,下面哪个不属于这三种基本结构()。 A、顺序结构 B、输入、输出结构 C、选择结构 D、循环结构 15、语句if 3*4>=10 then a=1 else a=2 执行后,a的值为()。 A、12 B、10 C、1 D、2 16、下列结果为True的逻辑表达式是( )。 A、Not (3<8) B、(3<9) And (5>10) C、(3<8) And (5<10) D、(3>8) Or (5>10) 17、要交换变量X和Y之值,应使用的语句组是( )。 A、X=Y;Y=Z;Z=X B、C=X;X=Y;Y=C C、X=Y;Y=X D、Z=Y;Y=X;Y=Z 18、以下程序中的循环体执行的次数是()。

算法与程序设计

第二部分算法与程序设计(选修) 主题1算法与程序设计 1.1算法 1.1.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个人说了谎。

高中信息技术 算法与程序设计教案 粤教版选修1

2.3 选择结构第一课时教学设计 【教学内容】 (1)教材模块:《算法与程序设计》 (2)年级:高中一年级 (3)所用教材出版社:上海科技教育出版社 (4)所属的章节:第二章第三节 (5)课时数:2课时 【内容分析】 选择结构是VB程序设计三个基本结构之一。是学生学习VB程序入门,掌握程序语言的重要内容。 【教学目标】 知识1、掌握条件逻辑表达式的构成 2、掌握简单IF语句的格式及其含义 技能1、通过自主探究学习、编写程序,让学生掌握简单if语句 的语法格式和使用方法。 情感1、形成良好的程序程序书写格式。 2、学会自主学习和养成独立解决问题的能力。 【学生分析】 县级城市学生大部分来自农村,80%以上的学生在学校没有受到正规的计算机入门教育,大部分学生对编程一无所知,还有一部分学生英语基础特差,但通过一个学期的信息技术必修课学习后对电脑简单操作有一定认识,因为选择结构是程序设计基础中的一节重要内容,所以本节课分二个课时进行教学,第一课时主要讲IF语句的简单结构和标准结构,第二课时讲多重分支与多重选择语句。 【教学重点和难点】 重点:简单选择结构和标准选择结构的语法和逻辑运算。 难点:选择结构算法的实现。 【教学策略设计】 【教学过程设计】 1.教学过程 教学环节教师活动学生活动设计意图

导入新课5分钟 活动1:给出特定关键词“小学生、 公共汽车”,要求学生用“如果…… 就……”句型造句; 活动2:要求学生用以上关键词,使 用“如果……就……否则就……”句型造 句; 活动3:由于现在公共汽车都是无人 售票,公交公司想要设计一款自动检票的 设备,该设备能够自动测出身高并确定是 否需要买票。假定机器自动测出乘客的身 高为H,请大家想想计算机该怎么判断乘 客需要买什么票?用你自己的语言说出 判断过程。并试着翻译成英语。 学生思考并积 极回答 大部分学生会 造句:如果小 学生身高小于 1.2米,就不用 买票. 如果H<1.2米 就不用买票, 否则就要买 票. 通过使用学生熟 悉的常识,引起学生积 极思考,激发学生学习 兴趣,想像力和继续探 讨的热情和期待。 新课教学20分钟 1.师生一起画出活动3的流程图 2.探究学习:写出该程序 学生自己看书学习IF语句的语法 并试着写出该程序 3.展示部分学生作品并小结IF语句 的简单格式。(有的同学可能用简单格式 有的可能用标准格式,这里一起讲评) 4.完善作品 (提醒学生程序的书写格式) 5.小结IF语句语法格式 1)、IF 条件 THAN 语句块 END IF 2)、IF 条件 THAN 语句块1 ELSE 语句块2 END IF 学生一起画 学生自学教材 并试着写出程 序 找两位做得最 好的同学上台 讲解他的程序 并介绍选择实 现的方法 未做完的或程 序有错误的同 学进一步完善 作品,已经完 成的同学作为 小老师指导其 他同学。 请两位同学上 台小结IF语句 的格式。 在学生使用“如 果……就……否则 就……”造句,并翻译 成英语的基础上学生 很快会形成“IF…… THEN……ELSE……”概 念,通过自己学习教材 的IF语句语法格式从 而将模糊的想法转化 成严格的程序语句定 义,再通过程序实践、 老师点评、小结和自己 改正、完善作品从而内 化为自己的知识。 课堂任务1、书64页课本例题填空。全部学生必须 完成 通过二个任务强化IF语句的练习,并

算法与程序设计试题带答案

高一第二学期《算法与程序设计》学分认定试题 学校:_____________ 班级:____________ 学号:____________ 姓名:____________ 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么”,然后再确定程序“如何做”请问“如何做”是属于用计算机解决问题的哪一个步骤() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、 D、 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE 10、在循环语句For x=1 to 100 step 2 …… Next x 中,x能达到的最大值是() A、100 B、99 C、98 D、97 11、在下列选项中,不属于VB的对象的是() A、窗体的背景颜色 B、命令按钮 C、文本框 D、标签 12、在调试程序的时候,经常要设置断点,设置断点的快捷键是()A、F1 B、F8 C、F9 D、F12 13、算法描述可以有多种表达方法,下面哪些方法不可以描述“闰年问题”的算法() A、自然语言 B、流程图 C、伪代码 D、机器语言 14、以下不属于非法用户自定义标识符(常量和变量命名)的是() A、8ad B、ad8 C、_a8d D、const 15、已知A,B,C,D是整型变量,且都已有互不相同的值,执行语句B=0;A=C;D=A;D=B;后,其值相等的变量是() A、A,D B、A,C C、C,B D、B,A 16、要交换变量A和B的值,应使用的语句组是( ) A、A=B;B=C;C=A B、C=A;A=B;B=C C、A=B;B=A D、C=A;B=A;B=C 17、VisualBasic中以单引号开头一行文字称为注释,它对程序的运行() A、起一定作用 B、有时候起作用 C、不起任何作用,但是必须的 D、不起任何作用,但能增加程序的可阅读性 18、要使一个命令按钮显示文字“确定”,正确的设置是把该命令按钮的()。 A、属性Font设置为“确定” B、属性.ForeColor设置为“确定” C、属性Caption设置为“确定” D、属性BorderStyle设置为“确定” 19、要从文本框TXTShowOut中输出"中国您好!",代码为( ) A ="中国您好!" B ="中国您好!" C ="中国您好!" D Val=“中国您好!” 20、下列Visual Basic程序段运行后,变量max的值为()。 a=11; b=15; max=a IF b>max Then max =b A、15 B、11 C、15或11都有可能 D、以上都不是 二、阅读程序写结果(第1~2小题每题5分,第3小题10分,共20分) 1、Private Sub Form_Load() N=InputBox(“请输入N的值:”,“输入”) S=1 For i=1 to N S=S*i Next i MsgBox “S=”+Str(s),0,”计算结果” End Sub 当N=5时,运行的结果是__________________。

算法与程序设计真题2017级整理版-选择题

end if A 25 B 26 C 10 D 5 25、以下程序段运行后,整型变量s的值是()。 s=1 For i=1 To 10 Step 3 s=s*i Next i Print s A 55 B 3640 C 28 D 280 25、以下程序段执行后,输出结果为()。 m=29 If m Mod 3 <> 0 Then Print m & “不能被3整除” Else Print m & “能被3整除” End If A n能被3整除 B n不能被3整除 C 29不能被3整除 D 29能被3整除 26.以下程序段语句执行后,y的值是() X=16 If x<0 then Y=abs(x) Else Y=sqr(x) End if A 其他三项答案都不对 B 256 C 4 D 16 24.如图所示,三个文本框自上而下的顺序是Text1,text2, text3,在文本框text1中输入3,在文本框text2中输入4。单击命令按钮“计算”后,文本框text3中显示的内容是() “计算”按钮事件过程代码: Private sub command1_click() Dim a as integer Dim b as integer A=val(text1.text) B=val(text2.text) Text3.text=2*(a+b) End sub A 14 B 24 C 7 D 12 25.下列程序段执行后,变量s的值是()。 S=0 For i=1 To 10 s=s+i Next I A 10 B 0 C 1 D 55 24.下列程序段运行后,输出“*”的个数是() For I =2 to 10 Print “ * ” Next i

选修一算法与程序设计

选修1:算法与程序设计 第一单元算法 一、知识内容 (一)使用计算机解决问题的一般过程 考试要求:对所列知识要知道其内容及含义,并能用自己的语言或动作进行表达、判断和直接运用。 1.一般过程 (1)分析问题确定要使用计算机来“做什么”,即确定解题的任务。 (2)寻求解决问题的途径和方法。 (3)用计算机进行处理。 2.确定解决问题的方法及步骤化 确定了解决问题的方法后,必须把解决问题的方法步骤化,即用某种方式告诉计算机每个需做什么。 计算机开始计算之前,需把解决问题的程序存储在内存中。通常一个程序包括指令和数据两部分。 (1)指令部分:指令是对计算机操作类型和操作数地址做出规定的一组符号。 (2)数据部分:计算所需的原始数据、计算的中间结果或最终结果。 3.设计程序时需要考虑的问题 (1)数据的存储:计算所需要的原始数据、计算产生的中间结果需要存储在不同的变量中。 (2)计算的过程:把解决问题的方法步骤化,并用计算机能执行的指令来有序地实现对应的步骤。 (3)典型的指令类型有输入指令、输出指令、算术运算指令、逻辑运算指令和控制转移指令。(二)算法及算法的表示方法 考试要求:对所列知识要理解其确切含义及与其它知识的联系,能够用所学的信息技术知识和操作方法解决实际问题,熟练应用信息技术进行信息的处理。 1.算法的特征 (1)有穷性。一个算法必须保证它的执行步骤是有限的,即它是能终止的。 (2)确定性。算法中的每个步骤必须有确切的含义,不应当有模棱两可的。 (3)能行性。算法中的每一个步骤都要足够简单,能实际能作的,而且在能在有限的时间内完成。 (4)有0个或多个输入。 (5)有一个或多个输出。 (三)用自然语言和流程图表示算法 考试要求:对所列知识要理解其确切含义及与其它知识的联系,能够用所学的信息技术知识和操作方法解决实际问题,熟练应用信息技术进行信息的处理。 1.自然语言 就像写文章时所列的提纲一样,可以有序地用简洁的自然语言加数学符号来描述算法。 2.流程图 用国家颁布的标准(GB1526-89,ISO5807-1985)中规定的图示及方法来画流程图,常用的构件有如图所示。

2014山东省信息技术学考算法与程序设计试题答案附后讲解

2014山东省信息技术学考算法与程序设计试题答案附后讲解

山东省学考算法与程序设计试题 选择题 1、下列VB表达式中: ⑴Sqr(x) ⑵Text1.text ⑶Command1.caption ⑷"45"+"34" ⑸45+34值为字符串类型的是() A⑴⑵⑶ B⑵⑶⑷ C ⑴⑶⑸ D⑵⑷⑸ 2、如果给出三条线段的长分别为a、b、c,且已知a≤b≤c,要问这三条线段能否构成三角形,仅需下列选项中的哪个判定条件即可?() A 其他选项都不对 B a+c>b C a+b>c D b+c>a 3、VB程序中“Dim n As Integer”这条语句的作用是() A 定义一个事件过程 B 定义一个数据输入方法 C 定义一个变量 D 定义一个数据处理方法 4、关于算法的描述,下列选项中正确的是() A 算法的每一步骤必须有确切的含义 B 算法必须有输入 C 算法的步骤可以是无穷的 D 算法本身就是一种程序设计语言 5、关于算法的描述,正确的是() A同一种算法只能用一种程序语言实现 B算法就是数值计算的方法 C描述算法的方法只有流程图 D算法是描述解决问题的方法和步骤 6、算法的描述方法有多种,下列选项中不适合描述算法的是() A机器语言 B自然语言 C流程图 D伪代码 7、长度分别为a、b、c的三条线段,能够组成三角形的条件是() A a+b>c Or a+c>b Or b+c>a B a+b>c or a+c>b And b+c>a C a+b>c Or a+c>b And b+c>a D a+b>c And a+c>b And b+c>a 8、已知海伦公式:()()() p p a p b p c ---p=1 2 (a+b+c),a、b、c分别为三角形的三条 边长。利用海伦公式求三角形面积的算法属于() A 排序法 B 解析法 C 穷举法 D 查找法 9、以下程序段中循环体执行的次数是() s=0 i=0 Do While s<10 i=i+1 s=s+i*i Loop A 1 B 3 C 2 D 4 10、下列VB表达式中,能正确表达不等式方程|x|>1的解的是() A x>-1 and x<1 B x>-1 or x<1 C x<-1 and x>1 D x<-1 or x>1 11、一元二次方程ax2+bx+c=0(a≠0)的两个实数根分别为: x 1 24 b b ac -+- 2 24 b b ac ---下列表达式正确的是() A x 2=-b-sqr(b^2-4*a*c)/(2*a) B x 1 =(-b+sqr(b^2-4ac))/(2*a)

算法与程序设计模块(选择题)汇总

算法与程序设计模块(选择题) 1.用流程图描述算法中表示“条件判断”的图形符号是 A. B. C. D. 答案:A 2.以下为求0到1000以内所有奇数和的算法,从中选出描述正确的算法 A. ①s=0; ②i=1; ③s=s+i; ④i=i+2; ⑤如果i≤1000,则返回③; ⑥结束 B. ①s=0; ②i=1; ③i=i+2; ④s=s+i; ⑤如果i≤1000,则返回③; ⑥结束 C. ①s=1; ②i=1; ③s=s+i; ④i=i+2; ⑤如果i≤1000,则返回③; ⑥结束 D. ①s=1;

②i=1; ③i=i+2; ④s=s+i; ⑤如果i≤1000,则返回③; ⑥结束 答案:A 3.在VB语言中,下列数据中合法的长整型常量是 A. 123456 B. 1234.56 C. 12345A D. A12345 答案:A 4.在VB语言中可以作为变量名的是 A. Print B. ab=cd C. 123abc D. abc_123 答案:D 5.设置TextBox的字体时,应改变TextBox的 A. Text属性 B. Font属性 C. ForeColor属性 D. Name属性 答案:B 7.代数式a ac b 24 2 对应的VB表达式是 A. sqr(b*b-4*a*c)/2*a B. sqr(b*b-4*a*c)/2/a C. sqr(b*b-4*a*c)/(2/a) D. sqr(b*b-4*a*c)/2a

答案:B 8.在VB语言中,下列正确的赋值语句是 A. I=I+1 B. I+1=I C. I*3=I D. 2I=I+1 答案:A 9.下列计算机程序设计语言中不属于高级语言的是 A. C++ B. Visual Basic C.机器语言 D. Java 答案:C 计算机程序设计语言:机器语言010*******汇编语言高级语言10.在VB语言中,下列逻辑表达式的值为"假"的是 A. #1/11/2009# > #11/15/2008# B. #1/11/2009# < #11/15/2008# C. 5 > 3 and 6 < 9 D. 5 > 3 or 6 > 9 答案:B 11.用流程图描述算法中表示“开始/结束”的图形符号是 A. B. C. D. 答案:B

算法与程序设计(教科版)教案

算法与程序设计(教科版)教案 1-1节计算机解决问题的过程 一、教学目标 1、知识与技能 (1)让学生了解算法、穷举法、程序设计语言、编写程序和调试程序等概念。 (2)让学生知道对现实问题的自然语言的描述,特别是类似程序设计语言的自然语言描述。 (3)让学生理解分析问题、设计算法、编写程序、调试程序这一用计算机解决问题的基本步骤,认识其在算法与程序设计中的作用。 2、方法与过程 (1)培养学生发现旧知识的规律、方法和步骤,并把它运用到新知识中去的能力。 (2)培养学生调试程序的能力。 (3)培养学生合作、讨论、观摩、交流和自主学习的能力。 3、情感态度和价值观 通过“韩信点兵”这个富有生动情节的实例和探究、讲授、观摩、交流等环节,让学生体验用计算机解决问题的基本过程。 二、重点难点 本节的重点用计算解决问题的过程中的分析问题、设计算法、和上机调试程序等步骤。用计算机解决问题的过程中的分析问题、设计算法也是本节的难点。 三、教学环境 1、教材处理 教学内容选用中华人民共和国教育部制订的《普通高中技术课程标准》(2003年4月版)中信息技术部分的选修模块1“算法与程序设计”第一章的第一课“计算机解决问题的过程”。教材选用《广东省普通高中信息技术选修一:算法与程序设计》第三章第一节,建议“算法与程序设计”模块在高中一年级下学期或高中二年级开设。 根据2003年4月版《普通高中技术课程标准》的阐述,“算法与程序设计”是普通高中信息技术的选修模块之1,它的前导课程是信息技术的必修模块“信息技术基础”。学生在“信息技术基础”模块里已经学习了计算机的基本操作,掌握了启动程序、窗口操作和文字编辑等基础知识。学生可以利用上述的基础知识,用于本节课的启动Visual Basic程序设计环境,输入程序代码,运行程序等操作。本节课“计算机解决问题的过程”是“算法与程序设计”模块的第一节课,上好这节课是使学生能否学好“算法与程序设计”这一模块的关键。本节课的教学目的是让学生理解分析问题、设计算法、编写程序和调试程序等用计算机解决问题的基本过程,认识其在算法与程序设计中的地位和作用,它也是后续课程如模块化程序设计、各种算法设计等课程的基础。 让学生在人工解题中发现分析问题、设计算法等步骤,并把它应用到用计算机解决问题中去,这是构建主义中知识迁移的方法。本节课还采用了探究、讲授、观摩、交流、阅读材料等多种教学活动的有机结合的方法。 2、预备知识 本节课相联系的旧知识是计算机的基本操作中鼠标、键盘操作,启动、关闭程序,窗口、菜单操作和文字编辑等基础知识,还有解决数学问题的步骤等知识。 3、硬件要求

算法与程序设计----从零开始学Visual Basic1

算法与程序设计----从零开始学Visual Basic 作者:山东东营胜利第二中学刘健 前言:山东的学生从高二就要选修信息技术课程,当你选修了算法和程序设计这门课程,恭喜你!因为你已经开始向更高层次迈进了。这门课程将帮助我们揭开计算机的神秘面纱。通过学习,我们不仅能知道平时使用的软件是如何开发出来的,还能从计算机语言层面上了解计算机能做什么,是如何工作的,知道软件背后的设计过程,甚至我们自己也能设计出优秀的计算机软件。本教程是根据教育科学出版社编著的普通高中课程标准实验教科书《算法与程序设计(选修)》一书的内容编著。呵呵,就是我们现在用的课本。当然了,如果没有课本,你也一定能够学会下面的教程。因为,从零开始学。下面Let’S GO. 第一课认识我们的创作室 Visual basic是美国微软公司于1991年推出的基于Basic语言(Beginners All—purpose Symbolic Instruction Code,初学者通用指令)的可视化程序设计语言,是经典的编程设计语言,也是基础语言之一,简单易学,功能强大,深受广大初学者的喜爱。这里我们用的是VB6.0中文版。VB是运行在Windows视窗操作系统上,设计程序的思想在于在窗口中放置对象和针对对象设计代码。 (一)启动VB:单击“开始”-“程序”-“Microsoft Visual Basic 6.0 中文版”选择“标准EXE”,单击“打开”进入窗口。

(二)VB窗口如图所示

1、标题栏:在最上面蓝色标题是“工程1-...”,是我们当前正在设计的程序,被称作“工程1”。 2、菜单栏:菜单栏在第二行,包含一组菜单,菜单中有各种命令。 3、工具栏:第三行是工具栏,工具栏是一些最常用的命令,而且是用图标表示的,因而便于形象记忆和操作。 4、工作区:工作区占据窗口的绝大部分,从左向右包括工具箱、窗体、和属性窗口。 (1)工具箱:在工作区的左侧,包含许多编程用到的基本对象,被称作“控件”。 (2)窗体:中间的灰色的窗口,是我们设计的程序的基本框架,所有的对象都放在这个窗口当中。 (3)小窗口:在右侧有三个纵向排列的窗口。 ①最上面是工程资源管理窗口; ②下面是属性窗口; ③最下面是布局窗口,里面显示程序运行时的位置,拖动里面的小框可以改变程序的显示位置。 (三)、简单程序入门 1、新建“标准EXE”工程,进入vb集成开发环境。系统自动创建一个窗体“Form1”, 如图所示:

最新高中信息技术《算法与程序设计》试题精品版

2020年高中信息技术《算法与程序设计》 试题精品版

新课标高中信息技术《算法与程序设计》试题一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是( ) A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE 10、在循环语句 For x=1 to 100 step 2 ……

历年算法与程序设计学业水平考试真题带答案

一、选择题 1、流程图是描述()的常用方式。 A、程序 B、算法 C、数据结构 D、计算规则 2、下面不属于算法描述方式的是()。 A、自然语言 B、伪代码 C、流程图 D、机器语言 3、以下运算符中运算优先级最高的是()。 A、+ B、^ C、>= D、* 4、某程序中三个连续语句如下: a=1 b=2 c=b+a 它属于() A、顺序结构 B、选择结构 C、循环结构 D、以上三种都不是 5、穷举法的适用范围是() A、一切问题 B、解的个数极多的问题 C、解的个数有限且可一一列举 D、不适合设计算法 6、在现实生活中,人工解题的过程一般分为() A、理解分析问题→寻找解题方法→用工具计算→验证结果

B、寻找解题方法→理解分析问题→用工具计算→验证结果 C、用工具计算→验证结果→寻找解题方法→理解分析问题 D、用工具计算→验证结果→理解分析问题→寻找解题方法 7、下列关于算法的特征描述不正确的是() A、有穷性:算法必须在有限步之内结束 B、确定性:算法的每一步必须确切的定义 C、输入:算法必须至少有一个输入 D、输出:算法必须至少有一个输出 8、下列哪一个不是用于程序设计的软件() A、BASIC B、C语言 C、Word D、Pascal 9、下列可以作为合作变量名的是() A、a7 B、7a C、a-3 D、8 10、编程求1+2+3+........+1000的和,该题设计最适合使用的控制结构为()。 A、顺序结构 B、分支结构 C、循环结构 D、选择结构 11、下列步骤不属于软件开发过程的是() A、任务分析与系统设计 B、软件的销售 C、代码编写与测试 D、软件测试与维护12.以下程序段运行时,语句k=k+1 执行的次数为()次。

算法与程序设计教案

算法与程序设计思想 【基本信息】 【课标要求】 (一)利用计算机解决问题的基本过程 (1)结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。 (2)经历用自然语言、流程图或伪代码等方法描述算法的过程。 (4)了解程序设计语言、编辑程序、编译程序、连接程序以及程序开发环境等基本知识。 【学情分析】 高一年级的学生已具备了一定的观察、思考、分析和解决问题能力,也已有了顺序结构、分支结构、循环结构等知识的储备。因此,对于如何将解决问题的思路画成流程图已有一定的基础,但可能还不很熟练,尤其对刚学过的循环结构,教师在课堂上要注意引导。 『此处说“已有了顺序结构、分支结构、循环结构等知识的储备”,应该是指在必修部分对“计算机解决实际问题的基本过程”已有所体验与了解,或是指已学习过数学中相关模块的知识,这是本案例教学得以实施的必不可少的前提条件。』 【教学目标】 1.知识与技能: 建立求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。 2.过程与方法: 利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。 培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰思路,进而设计出解决某个特定问题的有限步骤,从而理解计算机是如何解决、处理某种问题的。 『在过程上,通过现实生活中的实例来引导学生总结“求最大值”的算法思想。过程的实现关键在于实例引用是否贴切,是否有利于学生向抽象结论的构建。本案例的实例选择是符合这一要求的。在方法上,注重培养学生分析、解决问题的一般能力,再次体验与理解应用计算机解决问题的基本过程,为后面更一步的学习打下基础,积累信心。』 3.情感态度与价值观:

算法与程序设计试题

算法与程序设计试题 一、选择题(每题两分,共14分每题2分) 1、要进行元旦晚会比赛,学校请你设计一个能够对元旦晚会节目分数自动排序的软件,你接到任务后,准备开始设计此软件,比较好的方法和步骤是() A、设计算法,编写程序,提出问题,调试程序 B、分析问题,编写程序,设计算法,调试程序 C、分析问题,设计算法,编写程序,调试程序 D、设计算法,提出问题,编写程序,调试程序 2、数值型数据包括两种。 A、整型和长整型 B、整型和浮点型 C、单精度型和双精度型 D、整型、实型和货币型 3、具有输出数据功能的控件是:() A、窗体控件和标签控件 B、复选框控件和文本框控件 C、标签控件和文本框控件 D、选项框按钮控件和复选框控件 4、要使循环体至少执行一次,应使用循环。 5、下列程序段是计算公式的: s=0;t=1 for I =1 to 10 t:=t*I s:=s+t Next I A、s=1+2+3+......10B、s=1*2*3* (10) C、s=1!+2!+3! ......10! D、s=1+2*3+3*4+4*5+......9*10 6、在窗体(Name属性为Formal)上画两个文本框(其Name属性分别为Text1和Text2)和一个命令按钮(Name属性为Command1),然后编写如下两个事件过程: Private Sub Command1_Click() A = Text1Text + Text2.Text Print a End Sub Private Sub Formal_Load() Text1.Text = " " Text2.Text = " " End Sub 程序运行后,在第一个文本框(Text1)和第二个文本框(Text2)中分别输入123和321,然后单击命令按钮,则输出结果为()。 A、444 B、321123 C、123321 D、132231 7、使用函数与过程是为了。 A、使程序模块化B、使程序易于阅读

算法与程序设计

江苏省高中信息技术算法与程序设计VB(选修)

《算法与程序设计VB (选修)》 知识要点 相关知识点 (一)算法 1.定义 相关题解: 1算法:就是解决问题的方法和步骤。算法是程序设计的“灵魂”,算法+数据结构=程序。 单选题 1、下列关于算法说法不正确的是( A ) A 、算法独立于任何具体的语言,BASIC 算法只能用BASIC 语言来实现 B 、解决问题的过程就是实现算法的过程 C 、算法是程序设计的“灵魂” D 、其它三项都正确 2.算法的描述方法: 1算法的描述:可分多种表达方法,一般用自然语言、流程图和伪代码进行描述。 2自然语言描述法:指用人们日常生活中使用的语言(本国语言),用自然语言描述符合我们的习惯,且容易理解。 3流程图描述:也称程序框图,它是算法的一种图形化表示方法。且描述算法形象、直观,更易理解。 4伪代码描述法:是介于自然语言和计算机程序语言之间的一种算法描述。是专业软件开发人员常用方法。 1" ( A 处理或运算的功 ( A ). B D 3、以下哪个是算法的描述方法?( A ) A 流程图描述法 B 枚举法 C 顺序法 D 列表法 4、以下哪个是算法的描述方法?( D ) A 顺序法 B 列表法 C 集合法 D 自然语言描述法 (二)程序设计基础 (1)常用高级编程语言:BASIC 、VB 、Pascal 、C 、C++、Java 1面向对象的程序设计语言:其中的对象主要是系统设计好的对象,包括窗体等、控件等 2控件:是指工具箱中的工具在窗体中画出的、能实现一定功能的部件,如文本框,命令按钮等。

对象属性=属性值 对象中属性可以在设计界面时通过属性窗中设置,也可以在运行时通过程序代码设置,方法如下 例:给文本框“Txt123”的“Text”属性赋值为字符串“20”,代码如下 Txt123.text =”20” 变量=对象.属性 如果要获取对象的状态或特性,这时就要读取对象的属性值,方法如下 例:读取文本框“txt123”的“Text”属性的代码如下 a = txt123.text 2方法 [对象].方法[参数名表] 例:form.print ”欢迎使用” 该语句使用print方法在form1窗体中显示字符串“欢迎使用” 3事件及事件驱动 事件是对象对外部操作的响应,如在程序执行时,单击命令按钮会产生一个Click事件。如需要命令按钮响应Click 事件,就把完成Click事件功能的代码写到Click事件的事件过程中,与事件一一对应。 事件过程的形式如下: Private Sub 对象_事件名( ) ……………(事件过程代码) End Sub 一个简单的VB程序 求圆的周长和面积 Private Sub Command1_Click() Dim r As Single '定义r为单精度型 Dim c As Single '定义c为单精度型 Dim s As Single '定义s为单精度型 r = Val(Text1.Text) '输入半径r c = 2 * 3.14159 * r '计算周长 s = 3.14159 * r * r '计算面积 Text2.Text = c '输出周长 Text3.Text = s '输出面积 End Sub Private Sub Command2_Click() End '退出 End Sub相关题解: 单选题 1、下列关于程序设计说法正确的是( B )。 A、程序设计语言的发展经历了机器语言、汇编语言到高级语言的过程,比

相关文档
最新文档