dan图片吧 关注:19贴子:605
  • 2回复贴,共1

diannao

收藏回复

  • 222.66.130.*
第1课:算法及其表示方法 
【以单独窗口方式打开】 
  科学技术的进步,社会生产力的发展,都是由于相关的问题得到不断的解决的结果。在当今社会中,由于信息化概念的提出,许多问题的解决都使用到了电子计算机。人们解决问题一般使用到以下两种方法:

  1、人工解题

  2、计算机解题

  下面,我们来比较一下人工解题和计算机解题在操作步骤上的区别:

人工解题步骤 计算机解题步骤 
1、理解和分析所面临的问题 1、理解和分析所要解决的问题 
2、寻找解题的途径和方法 2、寻找解题的途径和方法 
3、用笔、纸和算盘、计算器等工具进行计算 3、生成解题算法 
4、验证计算结果 4、选用一种编程语言根据算法编写程序 
  5、通过编辑、编译和连接产生计算机能够识别的指令序列 
  6、在计算机上执行该指令序列 

一、人工解题和计算机解题的异同点

  相同点:无论何种解题方式,在解决某一实际问题时,都应该正确的理解问题的题意,从看似复杂的问题中整理出一个头绪,然后通过算法(即解决问题的一个一个步骤)描述出某一问题的解决过程,进行一定量的计算,最后都必须验证计算结果。

  不同点:当计算量较大时,人工解题就有点力不从心了,而计算机上亿次的每秒计算速度却不在话下,并且只要算法正确,编程语句无误的话,使用计算机编写的解题程序可以反复使用。例如:sum=1+2+3+4+5……+(n-1)+n

二、算法概念的定义

  什么是算法?我不忙着回答,先来看下面的这个小故事:

  从前有1个农夫带着狼狗、山羊和萝卜去赶集。当他来到渡口时发现过河的小船除了能装下自己之外,只能再带2样东西过河。这使他有点犯愁了,因为如果农夫不在场的情况下,狼狗会咬山羊,山羊会吃萝卜。请同学们帮助农夫解决安全过河问题。>>单击此处获得答案

  我们一起来分析Flash动画中提出的两种解决问题的方法。

解题方法一 解题方法二 
步骤1:农夫带着狼狗和山羊撑船过河 步骤1:农夫带着狼狗和萝卜撑船过河 
步骤2:农夫带着山羊撑船返回 步骤2:农夫带着狼狗撑船返回 
步骤3:从船上放下羊后,带萝卜过河 步骤3:从船上放下狼狗后,带山羊过河 
步骤4:放下萝卜后,农夫撑船空身返回 步骤4:放下山羊后,农夫撑船空身返回 
步骤5:农夫带山羊撑船过河 步骤5:农夫带狼狗撑船过河 

  从以上两个解题方法分析中,我们可以看到如果农夫执行方法一来过河,那么他可以顺利的带着东西过河,而方法二在执行过中肯定会发生意外(在执行完方法二中的步骤4之后,山羊吃萝卜的事情发生)。但是,无论怎么说这两种提出的带东西过河的过程都是在寻求解决问题的方法,只是方法一能够成功的解决问题,方法二是失败的。请同学们考虑一下,除了Flash动画中的方法一之外,还有没有正确的解决问题的方法?

  (一)算法的定义

  由前面的这个小故事,我们引出对算法概念的定义。所谓算法,是指在使用计算机解题前,需要将解题方法转换成一系列具体的在计算机上可执行的步骤,这些步骤能够清楚的反映解题方法一步步“怎么做”的过程,这个过程就是通常所说的算法。

  小知识:算法一词最早起源于公元9世纪的阿拉伯。有一位名叫花拉兹米的阿拉伯数学家,在他的一生中发现了很多求解算术问题的算法,并撰写了《合并与回代》一书,后被翻译成为拉丁文。合并与回代这两个词是指解方程时所用的两个主要过程,后被人简称为“代数学”。

  (二)算法的特点

  1、有穷性(有限性)。任何一种提出的解题方法都是在有限的操作步骤内可以完成的,哪怕是失败的解题方法。

  2、确定性(唯一性)。解题方法中的任何一个操作步骤都是清晰无误的,不会使人产生歧义或者误解。

  3、可行性(能行性)。解题方法中的任何一个操作步骤在现有计算机软硬件条件下和逻辑思维中都能够实施实现。



1楼2006-11-30 11:35回复
    • 222.66.130.*

      4、有0到多个输入。解题算法中可以没有数据输入,也可以同时输入多个需要算法处理的数据。

      5、有1到多个输出。一个算法执行结束之后必须有数据处理结果输出,哪怕是输出错误的数据结果,没有输出的算法使毫无意义的。

    三、算法的表示方法

      算法的常用表示方法有如下三种:

      1、使用自然语言描述算法

      2、使用流程图描述算法

      3、使用伪代码描述算法

      我们来看怎样使用这3种不同的表示方法去描述解决问题的过程,以求解sum=1+2+3+4+5……+(n-1)+n为例。

      第1种:使用自然语言描述从1开始的连续n个自然数求和的算法

        ① 确定一个n的值;

        ② 假设等号右边的算式项中的初始值i为1;

        ③ 假设sum的初始值为0;

        ④ 如果i≤n时,执行⑤,否则转出执行⑧;

        ⑤ 计算sum加上i的值后,重新赋值给sum;

        ⑥ 计算i加1,然后将值重新赋值给i;

        ⑦ 转去执行④;

        ⑧ 输出sum 的值,算法结束。

      从上面的这个描述的求解过程中,我们不难发现,使用自然语言描述算法的方法虽然比较容易掌握,但是存在着很大的缺陷。例如,当算法中含有多分支或循环操作时很难表述清楚。另外,使用自然语言描述算法还很容易造成歧义(称之为二义性),譬如有这样一句话——“武松打死老虎”,我们既可以理解为“武松/打死老虎”,又可以理解为“武松/打/死老虎”。自然语言中的语气和停顿不同,就可能使他人对相同的一句话产生不同的理解。又如“你输他赢”这句话,使用不同的语气说,可以产生3种截然不同的意思,同学们不妨试试看。为了解决自然语言描述算法中存在着可能的二义性,我们提出了第2种描述算法的方法——流程图。

      第2种:使用流程图描述从1开始的连续n个自然数求和的算法

      

      从上面的这个算法流程图中,可以比较清晰的看出求解问题的执行过程。在进一步学习使用流程图描述算法之前,有必要对流程图中的一些常用符号做一个解释。

      

      流程图的缺点是在使用标准中没有规定流程线的用法,因为流程线能够转移、指出流程控制方向,即算法中操作步骤的执行次序。在早期的程序设计中,曾经由于滥用流程线的转移而导致了可怕的“软件危机”,震动了整个软件业,并展开了关于“转移”用法的大讨论,从而产生了计算机科学的一个新的分支学科——程序设计方法。

      无论是使用自然语言还是使用流程图描述算法,仅仅是表述了编程者解决问题的一种思路,都无法被计算机直接接受并进行操作。由此我们引进了第三种非常接近于计算机编程语言的算法描述方法——伪代码。

      第3种:使用伪代码描述从1开始的连续n个自然数求和的算法

      1) 算法开始;

      2) 输入 n 的值;

      3) i ← 1;       /* 为变量 i 赋初值*/

      4) sum ← 0;      /*为变量 sum 赋初值*/

      5) do while i<=n    /*当变量 i <=n 时,执行下面的循环体语句*/

      6)    { sum ← sum + i; 

      7)     i ← i + 1;}

      8) 输出 sum 的值;

      9) 算法结束;

      伪代码是一种用来书写程序或描述算法时使用的非正式、透明的表述方法。它并非是一种编程语言,这种方法针对的是一台虚拟的计算机。

      伪代码通常采用自然语言、数学公式和符号来描述算法的操作步骤,同时采用计算机高级语言(如C、Pascal、VB、C++、Java等)的控制结构来描述算法步骤的执行顺序。
     
    


    2楼2006-11-30 11:35
    回复
      • 222.66.130.*
      2006年上海市中小学信息科技学科学业水平等级考试
      三级(高中)考试样卷
      说明:
      1.本样卷共有24题,每题2分,共48分。(正式卷共50题,每题2分,共100分)。
      2.本样试卷中的试题全部是选择题,请在各题给出的答案选择项(每题有4个选择项,分别用选择项代号A、B、C、D表示)中,选择你认为是正确的选择项,在答题纸上把这题中该选择项代号涂黑,答题纸上每题只能涂黑1个选择项代号,涂黑2个或2个以上的,这题不给分。
      3.答题前,请先在答题纸上正确填写学校、姓名、准考证号,并将准考证号,用铅笔正确涂黑。
      注:(样题中各题目类型及所占比例与正式卷没有一一对应关系)
      1. 某同学正在用电脑写周记,此时突然停电导致文档全部丢失,她对自己未将正在编辑的文档保存万分懊悔,那么停电之前她编辑的文档是在_______中。 
      A.寄存器 B.RAM
      C.ROM D.硬盘
      2. 为了在有限的存储容量中存储更多的信息,为了提高信息的传输效率,一般都要对数字化信息进行______。
      A.解压缩处理 B.压缩处理
      C.重命名处理 D.用文件夹进行管理
      3. MP3随身听除了具有播放、录音等的功能外,它还具有______。
      A.移动存储功能  B. 自动压缩功能
      C.运算器功能  D. 移动上网功能
      4. 使用方便并且适用于各种不同计算机的程序设计语言是_______。
      A.机器语言  B.汇编语言 
      C.高级语言  D.伪代码
      5. 小张(邮件地址:xiaozhang@sohu.com)用Email给老师(邮件地址:teacher@sina.com),写了一封信,当他发送成功后,这封邮件将_______。
      A.发送到小张本人的计算机中  B.发送到sohu.com的邮件服务器中
      C.发送到sina.com的邮件服务器中 D.发送到老师的计算机中
      6. 能将模拟声音信息转换为数字信息的设备是_______。
      A.话筒  B.光驱 
      C.音箱  D.声卡
      7. 上网时,我们应该______。
      A. 想说什么就说什么
      B. 随意地下载、转发软件和资料 
      C. 出于好奇心未经许可进入他人网站恣意浏览 
      D. 在网上交流时注意文明礼貌,诚实守信
      8. 以下是用超文本标记语言编写的网页文件的扩展名的是_______。
      A.html    B.mp3 
      C.jpg  D.xls
      9. 对图像文件进行压缩,其原理是_______。
      A.光盘、CD-ROM  B.剪裁图像
      C.对图像中的冗余数据进行处理  D.改变图像的颜色和亮度
      10. 本题中有二小题,请根据自己的实际情况选做其中一题:
      (1) 
      上图是登录21cn邮件服务器的界面,在“邮箱:”后的矩形框中输入的是: 。
      A.IP地址 B.用户名 C.域名 D.URL
      (2)输入命令ping www.online.sh.cn,屏幕显示信息如下:
       
      由此可知: 。
      A.域名www.online.sh.cn对应的IP地址是218.1.64.33,但网络不通畅
      B.域名www.online.sh.cn对应的IP地址是218.1.64.33,网络通畅
      C.无法得知域名www.online.sh.cn对应的IP地址,网络不通畅 
      D.无法得知域名www.online.sh.cn对应的IP地址,但网络通畅
       

      写出12到21题算法的运行结果
      11.  输出结果_______。A.9 B.13C.30 D.104 12.  输出结果_______。A.5  B.6 C.16  D.22
      13.  若输入的值是-4,则输出结果是 。A.4 B.-4 C.0 D.8 14.  输出结果是_______。A.2  B.13 C.21  D.34
      15.  输出结果是 A.143 B.8756 C.5687 D.87+56 16.  输出结果是 A.14 B.15C.26 D.40
      17.  若输入的值是12,输出结果是 。A.25 B.36 C.-13 D.12 18.  输入3,5,-2,3,-6,0,输出结果是 A.8,-8 B.3,0 C.11,-8 D.11,3
      19.  若输入的值是79,输出结果_______。A.超重  B.正常 C.偏轻  D.不能确定 20. 开始①x=2②a=3,b=4③T=a*x+b④a=T,b=5⑤T=a*x+b⑥输出 T结束上述算法的输出结果_______A.10 B.11 C.25 D.60

       

      根据流程图指出21题算法的功能。
      21.  该算法的功能是 。A.求输入的5个数的积 B.求输入的6个数的最大值C.统计输入的数的个数 D.求输入的6个数的积

       

      以下22题到24题是为流程图中的空白框选择最合适的选项。
      22.  以上是判断n是否为素数的算法,(素数是只能被1和它本身整除的自然数),在流程图空白处应该填入 。A.i=i+1 B.n=n+1C.n=n+i D.i=n-1 23.  以上是二进制数转十进制数的算法,当依次输入4,1,0,1,1时,输出11。在流程图空白处应该填入_______。A.t=a B.b=tC.t=b D.a=t
      24. 如右图:开始①环球航行②横渡太平洋,穿越国际日期变更线③判断航行的方向④如果向东航行,转到⑥⑤日期减一天⑥日期加一天结束上述算法的结构是 A.循环结构和分支结构的组合B.顺序结构和循环结构的组合 C.顺序结构 D.顺序结构和分支结构的组合 


      3楼2006-11-30 11:35
      回复