
1编程是什么
简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
计算机虽然功能十分强大。可以供你上网、打游戏、管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“命令”。
于是,我们要驯服它,只有通过一种方式——程序,这也是我们和计算机沟通的唯一方式。 那程序到底是什么呢? 程序也就是指令的 ,它告诉计算机如何执行特殊的任务。
打个比方说,它好比指导你烹调菜品的菜谱或指挥行驶一路到达目的地的交警(或者交通路标)。没有这些特殊的指令,就不能执行预期的任务。
计算机也一样,当你想让计算机为你做一件事情的时候,计算机本身并不能主动为我们工作,因此我们必须对它下达指令,而它根本不会也不可能听懂人类自然语言对事情的描述,因此我们必须使用程序来告诉计算机做什么事情以及如何去做?甚至对最简单的任务也需要指令,例如如何取得击键,怎样在屏幕上放一个字母,怎样在磁盘中保存文件等等。 这么麻烦,连这些东西编程都要考虑!怪不得人家说编程好难!你错了,其实许多这样的指令都是现成的,包含在处理芯片中内置于 *** 作系统中,因此我们不必担心它们工作,他们都是由处理器和 *** 作系统来完成的,并不需要我们来干预这些过程。
上面讲到的计算机本身不会主动的做任何事情。因此我们要通过程序的方式来让计算机为我们“效劳”。
而这个过程就是我们“编”出来的。编程可以使用某一种程序设计语言来实现,按照这种语言的语法来描述让计算机要做的事情。
我们这里所讲的语法和外语中的语法完全两码事,这里讲的语法只是读你的程序书写做出一写规定而已。 写出程序后,再由特殊的软件将你的程序解释或翻译成计算机能够识别的“计算机语言”,然后计算机就可以“听得懂”你的话了,并会按照你的吩咐去做事了。
因此,编程实际上也就是“人给计算机出规则”这么一个过程。 随计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行,程序是计算机要执行的指令的 ,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即由构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
目前通用的编程语言有两种形式:汇编语言和高级语言。 汇编语言的实质和机器语言是相同的,都是直接对硬件 *** 作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。
它同样需要编程者将每一步具体的 *** 作用命令的形式写出来。 汇编程序的每一句指令只能对应实际 *** 作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的 *** 作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体 *** 作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。
由于省略了很多细节,所以编程者也不需要具备太多的专业知识。 高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。
(1)解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。 (2)编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。
但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual Basic、Visual C++、Visual Foxpro、Delphi等。
这个问题其实很简单。前面我们讲到,程序是人与计算机进行沟通的唯一方式,因此我们要让计算机为我们服务,就必须有程序,而程序从哪里来?当然是由我们编写出来了。
或许你又会问到另一个问题:现在要什么程序有什么程序, 嘛还要编程呢?这你就错了,现在的程序虽然很多,需要什么样的程序直接到网上不需要很长时间就可以找到类似的,而且有可能就是你所需要的。但是,就好比去买衣服,虽然卖衣服的到处都是,但是哪一件是为你“量身定做”的呢! 程序还能够做很多事情不同的程序可以完成不同的。
2科普小知识资料有哪些
科普小知识按研究对象不同可分为自然科学、社会科学和思维科学。
1、自然科学是关于自然现象的各门具体科学,研究自然界的本质和规律。
例如,数学、物理学、化学、天文学、地理学、生物学等等。
2、社会科学是关于社会现象的各门具体科学、力求揭示社会的本质和规律。
例如,经济学、政治学、军事学、社会学、管理学、教育学等等。
3、人文科学是关于人类文化现象的各门具体科学、力求揭示社会文化领域的本质和规律。
例如,语言学、历史学、考古学、伦理学、美学、宗教学等等。
科学知识普及简称科普,又称大众科学或者普及科学,是指利用各种传媒以浅显的、让公众易于理解、接受和参与的方式向普通大众介绍自然科学和社会科学知识、推广科学技术的应用、倡导科学方法、传播科学思想、弘扬科学精神的活动。科学普及是一种社会教育。
参考资料
科学的分类360个人图书馆[引用时间2018-4-4]
3计算机编程入门
选择一门编程语言、建立基本的编程思想、注重实验和学习相关知识。
1、选择一门编程语言。
虽然目前编程语言有600种左右,但是比较流行的编程语言只有几十种,所以尽量选择流行程度比较高的编程语言来入门编程。对于没有明确编程场景的初学者来说,尽量选择全场景编程语言,比如Java、Python、C#等就是不错的选择,不仅应用范围广泛,而且也有大量的开发案例可以参考学习。
2、建立基本的编程思想。
编程语言本身的难度并不高,只要掌握了相应的编程规则就能逐渐建立起自己的编程思想。建立编程思想的第一步是了解编程语言的基本语法规则,以Java语言为例,要掌握各种抽象概念,比如类、对象、属性、方法等;第二步是了解基本的编程过程,比如类的定义、对象的创建、方法的调用;第三步是学习经典的编程模式。
3、注重实验。
学习编程语言一定要重视实验,实验不仅能够帮助理解各种抽象概念,也能在一定程度上积累编程经验。
4、学习相关知识。
在学习编程语言的过程中,也需要同时学习计算机网络、数据库等相关知识,在当前的云计算和大数据时代背景下,还需要掌握如何通过云计算(PaaS)来辅助开发,以及如何利用大数据平台的各种资源。
扩展资料
注意事项:
1、网上有很多编程社区,编程论坛,以及免费的学习教程、视频资源等。刚开始学习,除了看书,要亲自上手实践,遇到问题去这些地方查找。
2、要学习电脑编程,对于刚入门的新手来说,一定要多实践,多敲代码,遇到bug上网查找,多看看别人的博客、个人网站,向程序员大牛学习。
4计算机的科学、学问除了编程一大方面还有哪几个方面
计算机的科学?与计算机有关的学科有:计算机科学,数学,计算机程序设计,软件工程,计算机工程等。
如你所说的微电子学,电学等都是以上学科的基础性课程。如学数字电子技术(或称计算机逻辑),再学计算机组成与结构,再学微机原理接口,学具体的微机(MCU,DSP)。
课程都是一门承接着一门的。以下可做参考:硬件 结构控制和指令系统 算法和逻辑结构 存储器结构 冯·诺伊曼结构 哈佛结构 输入/输出和数据通信 数字逻辑 逻辑设计 集成电路 计算机系统组织 计算机系统结构 计算机网络 分布式计算 网络安全 计算机系统实现 软件 系统软件 *** 作系统 编译器 应用软件 计算机游戏 办公自动化 网络软件 CAD软件 计算机程序 程序设计和程序设计实践 面向对象技术 程序设计语言 软件工程 软件复用 驱动程序 计算机模拟 程序设计方法学 数据和信息系统 数据结构 数据存储表示 数据加密 数据压缩 编码与信息论 文件 信息系统 管理信息系统 决策支持系统 - 专家系统 数据库 信息存储和数据存取 信息交互与表达 主要的研究领域 形式化基础 逻辑学 谓词逻辑 模态逻辑 时序逻辑 描述逻辑 数学 泛代数 递归论 模型论 概率论和数理统计 逻辑代数 布尔代数 离散数学 组合数学 图论 网论 信息论 理论计算机科学 形式语言 自动机 可计算性 算法 计算复杂性 描述复杂性 编译器 程序设计理论 信息论 类型理论 指称语义 微程序 遗传算法 并行计算 计算方法学 人工智能 计算机图形学 图像处理与计算机视觉 模式识别 语音识别 文字识别 签名识别 人脸识别 指纹识别 仿真与建模 数字信号处理 文档与文本处理 计算机应用 数值计算 数值分析 定理机器证明 计算机代数 工程计算 计算机化学 计算机物理 生物信息论 计算生物学 非数值计算 工厂自动化 办公室自动化 人工智能 信息存储与检索 符号语言处理 计算机辅助科学 计算机辅助设计 计算机辅助教学 计算机辅助管理 计算机辅助软件工程 机器人学 多媒体技术 人机交互 电子商务 特定技术 测试基准 机器视觉 数据压缩 软件设计模式 数字信号处理 文件格式 信息安全 国际互联网络 超大规模集成电路设计 网络传输协议 网络处理器技术 整数运算器 浮点运算器 矩阵运算处理器 网格 计算科学史 计算机历史 软件业历史 编程思想。
5科普小知识的内容是什么
科普小知识的内容是什么?
科普知识是一种用通俗易懂的语言,来解释种种科学现象和理论的知识文字。用以普及科学知识为目的。
科普知识涵盖了科学领域的各个方面,无论是物理、化学、生物各个学科,还是日常生活无不涉及到科普知识。由于其范围的广泛性,奠定了科普知识的重要意义和影响。科普知识的重要意义必然要求我们的科普教育必须与时俱进的与我们所提倡的素质教育同行。同步发展。使科普知识,科普教育真正意义上走进人们的生活。科普知识的意义和影响必将是深远的、长久的。
这里举两个例子:
1为甚么星星会一闪一闪的?
我们看到星闪闪,这不是因为星星本身的光度出现变化,而是与大气的遮挡有关。
大气隔在我们与星星之间,当星光通过大气层时,会受到大气的密度和厚薄影响。大气不是绝对的透明,它的透明度会根据密度的不同而产生变化。所以我们在地面透过它来看星星,就会看到星星好像在闪动的样子了。
2 为甚么人会打呵欠?
当我们感到疲累时,体内已产生了许多的二氧化碳。当二氧化碳过多时,必须再增加氧气来平衡体内所需。因为这些残留的二氧化碳,会影响我们身体的机能活动,这时身体便会发出保护性的反应,于是就打起呵欠来。
打呵欠是一种深呼吸动作,它会让我们比平常更多地吸进氧气和排出二气化碳,还做到消除疲劳的作用呢。
……
6科普小知识
科学知识
1白天,鸟儿们在枝头穿梭呜叫,在蓝天下自由飞翔,到了晚上,它们和我们人一样也要休息、睡觉,恢复体力,不过它们睡觉的姿势可是各不相同的。
2冰糕冒气是因为外界空气中有不少眼睛看不见的水汽,碰到很冷的冰糕时,一遇冷就液化成雾滴包围在冰糕周围,看上去似乎是冰糕在“冒气”一样。
3向日葵的茎部含有一种奇妙的植物生长素。这种生长素非常怕光。一遇光线照射,它就会到背光的一面去,同时它还 背广义面的细胞迅速繁殖,所以,背光的一面就比向光的一面生长的快,使向日葵产生了向旋光性弯曲。
4蝉的外壳(外骨骼)是坚硬的,不能随着蝉的生长而扩大,当蝉生长到一定阶段时,蝉的外骨骼限制了蝉的生长,蝉将原有的外骨骼脱去,就是蝉蜕。
5蜂先把采来的花朵甜汁吐到一个空的蜂房中,到了晚上,再把甜汁吸到自己的蜜胃里进行调制,然后再吐出来,再吞进去,如此轮番吞吞吐吐,要进行100~240次,最后才酿成香甜的蜂蜜
6我们看到星闪闪,这不是因为星星本身的光度出现变化,而是与大气的遮挡有关。大气隔在我们与星星之间,当星光通过大气层时,会受到大气的密度和厚薄影响。大气不是绝对的透明,它的透明度会根据密度的不同而产生变化。所以我们在地面透过它来看星星,就会看到星星好像在闪动的样子了。
7当我们感到疲累时,体内已产生了许多的二氧化碳。当二氧化碳过多时,必须再增加氧气来平衡体内所需。因为这些残留的二氧化碳,会影响我们身体的机能活动,这时身体便会发出保护性的反应,于是就打起呵欠来。打呵欠是一种深呼吸动作,它会让我们比平常更多地吸进氧气和排出二气化碳,还做到消除疲劳的作用呢。
8蛇的身上有很多鳞片,这是它们身上最外面的一层盔甲。鳞片不但用来保护身体,还可以是它们的「脚」。蛇向前爬行时,身体会呈S形。而每一片在S形外边的鳞片,都会翘起来,帮助蛇前进时抓住不平的路面。这些鳞片跟蛇的肌肉互相配合,并能推动身体向前爬行,所以蛇没有脚也可以走动呀!
9我们的头发中有一种叫「黑色素」的物质,黑色素愈多头发的颜色便愈黑。而黑色素少的话,头发便会发黄或变白。人类到了老年时,身体的各种机能会逐渐衰退,色素的形成亦会愈来愈少,所以头发也会渐渐变白啊
10当别人搔自己时,我们会倍感痕痒,而且不断大笑;可是,当自己搔自己的时候,我们不单不会大笑,而且更不感痕痒。基于我们的思想上已有了准备,大脑会发出一种 「不会有危险」的讯息,神经亦随之放松,所以便不会大笑起来和感到痕痒了!
11望向大海,很多时也发现海水呈现蓝、绿色。可是,当你把海水捞起时,你却只能看到它像往日的水般,透明无色。原来,海水本身与我们日常所接触到的水没有大分别,也是透明的。我们所看到的绿色,其实是海水对光吸收能力而产生出来的现象。只有绿光能被海水吸收,从而反射出来;当海水更深时,绿光也被吸收,海水看上去便成了蓝色。
12我们的皮肤表面长着汗毛,而每一个毛孔下都有一条竖毛肌,当受到神经 (例如:生气、害怕、受凉等情况)后,身体的温度会下降,而竖毛肌便会收缩而令毛发竖立起来,形成鸡皮疙瘩。除了有着保温的作用外,这个生理系统亦可使动物的体型看起来比实际更大,从而吓退敌人
7科学小知识大全
科学小知识 冰糕为什么会冒气? 冰糕冒气是因为外界空气中有不少眼睛看不见的水汽,碰到很冷的冰糕时,一遇冷就液化成雾滴包围在冰糕周围,看上去似乎是冰糕在“冒气”一样。
向日葵为什么总是向着太阳? 向日葵的茎部含有一种奇妙的植物生长素。这种生长素非常怕光。
一遇光线照射,它就会到背光的一面去,同时它还 背光一面的细胞迅速繁殖,所以,背光的一面就比向光的一面生长的快,使向日葵产生了向光性弯曲。 蝉为什么会蜕皮? 蝉的外壳(外骨骼)是坚硬的,不能随着蝉的生长而扩大,当蝉生长到一定阶段时,蝉的外骨骼限制了蝉的生长,蝉将原有的外骨骼脱去,就是蝉蜕。
蜜蜂怎样酿蜜? 蜂先把采来的花朵甜汁吐到一个空的蜂房中,到了晚上,再把甜汁吸到自己的蜜胃里进行调制,然后再吐出来,再吞进去,如此轮番吞吞吐吐,要进行100~240次,最后才酿成香甜的蜂蜜。
菜鸟如何学习计算机编程?如何快速学习计算机编程?学习任何一种技术最好的方法就是练习,练习,练习。那些最优秀的程序员都深深的享受编程的过程,编程是一件让他们干起来无由的高兴的事情。也因此他们大量的编程。作为一名职场菜鸟如何学习计算机编程并快速学习计算机编程技术呢?编程是 *** 作性很强的一门知识,看书少不了,但只有学习和实践相结合才能起到很好的效果,一种学习方法是看书->研究书中例子->自己做些东西->网上找资料->看书。到实际 *** 作时我们该怎么学?编程语言的教程各种平台上都有很多介绍,也有各种推荐,建议多看一些推荐,每个人都推荐的效果应该不错。研究经典教程是学习许多知识的重要方法,但看书一定要看透,学C语言时一直看到所有C的入门书籍都没有新语法。非科班出生最好先阅读一些计算机原理和基础知识方面的书籍,利于以后各种知识的融会贯通。计算机导论类:计算机科学技术导论》、《深入理解计算机系统》、《现代 *** 作系统》、《数据库系统概念》、《数据结构》、《编译原理》C语言:《CPrimerPlus》《C程序设计语言》《C语言程序设计:现代方法》《C陷阱与缺陷》作者凯尼格 《编程精辟》作者SteveMaguire 《TheCprogramminglanguage》《C++Primer》本书对C++基本概念、技术、以及现代C++编程风格进行了全面而且权威的阐述,是C++初学者的最佳指南;本书可以帮助你编写实用的程序,而无需首先精通每个语言细节。对于中高级程序员,本书也是不可或缺的参考书。《EssentialC++》内容不多但很实用的C++入门书籍,强调快速上手与理解C++编程。本书主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解:第一阶段:《EffectiveC++》和《MoreeffectiveC++》作者是ScottMeyers。你应该熟读它们,并清楚地理解每个项目。该书围绕55条准则,每一条都介绍了一个可让你写出更好的C++程序代码的方法,并以特别设计过的例子详加讨论。第二阶段:《ExceptionalC++(C++编程剖析)》和《MoreexceptionalC++》这两本书中都包含了40个C++编程问题,这些问题会让你磨练自己的技能,最终成为优秀的C++程序员。这些问题是HerbSutter精心挑选,与ISO/ANSIC++官方标准相一致,帮助程序员在设计、架构和编码过程中保持良好的风格,从而使编写的C++软件更健壮、更高效。第三阶段:《InsidetheC++objectmodel(深度探索C++对象模型)》本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承,帮助你理解程序的底层实现,以便写出更高效的代码。《ThedesignandevolutionofC++(C++语言的设计与演化)》现在程序员工资差异很大,有能力的程序员享受高薪,但只是略懂的伪程序员可能找不到工作,如果想靠敲代码生存生活,就在兴趣的基础上认真学习。菜鸟如何学习计算机编程?如何快速学习计算机编程?语言只是工具而已,假以时日,每个程序员都能熟练掌握一门甚至多门语言,也会随着技术的发展学习最新、最方便的新语言,相比语言解决问题的思路和方法更为重要。但作为初学者,C和Python是最被认可适合初学者的编程语言,但由于它们自身的特点,这两种语言也有一定程度上的对立性,当然其它语言也有被选择的理由。
C++是在C语言的基础上开发的一种通用编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!
C++这个名字是Rick Mascitti于1983年中所建议的,并于1983年12月首次使用。更早以前,尚在研究阶段的发展中语言曾被称为“new C”,之后是“C with Class“ 。在计算机科学中,C++仍被称为C语言的上层结构。它最后得名于C语言中的“++” *** 作符(其对变量的值进行递增)。而且在共同的命名约定中,使用“+”以表示增强的程序。Stroustrup说:“这个名字象征着源自于C语言变化的自然演进”。
C语言是C++的基础,C++和C语言在很多方面是兼容的。
C语言是一个结构化语言,它的重点在于算法与数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制。所以C语言和C++的最大区别在于它们解决问题的思想方法不一样。
C++对C的“增强”,表现在六个方面:
(1) 类型检查更为严格。
(2) 增加了面向对象的机制。
(3) 增加了泛型编程的机制(Template)。
(4) 增加了异常处理。
(5) 增加了运算符重载。
(6) 增加了标准模板库(STL)。
人类通过思考自身的计算方式,研究是否能由外部机器模拟,代替我们实现计算的过程,从而诞生了计算工具,并且在不断的科技进步和发展中发明了现代电子计算机。在此思想的指引下,还产生了人工智能,用外部机器模仿和实现我们人类的智能活动。随着计算机的日益“强大”,它在很多应用领域中所表现出的智能也日益突出,成为人脑的延伸。与此同时,人类所制造出的计算机在不断强大和普及的过程中,反过来对人类的学习、工作和生活都产生了深远的影响,同时也大大增强了人类的思维能力和认识能力,这一点对于身处当下的人类而言都深有体会。早在1972年,图灵奖得主Edsger Diikstra就曾说:“我们所使用的工具影响着我们的思维方式和思维习惯,从而也深刻地影响着我们的思维能力”,这就是著名的“工具影响思维”的论点。计算思维就是相关学者在审视计算机科学所蕴含的思想和方法时被挖掘出来的,成为与理论思维、实验思维并肩的3种科学思维之一。计算思维是计算时代的产物,应当成为这个时代中每个人都具备的一种基本能力。
由此可见,在介绍计算机的诞生与发展时,自然地提及计算思维的基本思想,进而再较为详细地介绍计算思维的相关概念和内涵,更容易被学生接受,并且在后续学习中主动而有意识地加强相关能力的培养。
3 计算思维要素的自然体现
算法和数论中很多内容涉及计算与计算思维,如递归就是一种典型的计算思维。递归的案例很多,可以从德罗斯特效应(Droste effect)说起,用一张图(如图1)就能很好地说明什么是德罗斯特效应,然后解释德罗斯特效应与递归的关系,因为它并非严格意义上的递归,让学生从感性的角度对递归有一个认识。再如**盗梦空间,从现实走入一层又一层有意构建的梦境,而后又克服重重困难走出层层梦境回归现实,这部**充斥着典型的递归思想,通过这种学生感兴趣或者采用当前热门的话题来介绍递归概念的方式,可以显著提升学生的学习兴趣,激发其学习的主动性和积极性。
下面我们通过与计算相关的案例进一步介绍递归,例如汉诺塔问题(Tower of Hanoi),这是目前在介绍递归的书中用的非常多的一个案例,它不仅是一个递归问题,而且通过计算我们不难发现,移动金片的次数,f(n)与宝石针上的金片个数n之间的关系是为:
f(n)=2n-1
因此当n=64时,f(n)的值将高达18,446,744,073,709,551,615,按移动一次花费1s计算,需要约5 845亿年才能完成,这样的问题在现实中几乎是无法实现的,但我们可以借用计算机的超高速,在计算机中模拟实现。由此可见,借助现代计算机超强的计算能力,有效地利用计算思维,就能解决之前人类望而却步的很多大规模计算问题。
相对于汉诺塔问题,斐波那契数列(Fibonacci Sequence)是更为简单、典型且易于接受的递归问题。斐波那契数列又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21……,即后一个数字是前两个数字之和,在数学上,斐波纳契数列直接被以递归的方法定义:
f(0)=0
f(1)=1
f(n)=f(n-1)+f(n-2)(n>=2,n∈N) 这个级数与大自然植物的关系极为密切,几乎所有花朵的花瓣数都来自这个级数中的一项数字。例如,菠萝表皮方块形鳞苞形成两组旋向相反的螺线,他们的条数必须是这个级数中紧邻的两个数字(如左旋8行,右旋13行),又如向日葵花盘(见图2)。它形成了一种自然规律,现在人们也将其应用于股票、期货技术分析中,在现代物理、准晶体结构、化学等领域也都有直接的应用,为此,美国数学会从1960年代起出版了Fibonacci Sequence季刊,专门刊载这方面的研究成果。有趣的是,随着数列项数的增加,前一项与后一项之比越来越逼近黄金分割的数值0618 033 988 7,这个数值的作用不仅仅体现在诸如绘画、雕塑、音乐、建筑等艺术领域,而且在管理、工程设计等方面也有着不可忽视的作用,另外在取石子的博弈游戏中按此规律必能获胜。利用这种规律,我们可以用计算机模拟自然、创建人机对战的博弈游戏,以及对金融走势的分析等。
此外,计算机中文件夹的复制也是一个递归问题,因为文件夹是多层次性的,需要读取每一层子文件夹中的文件进行复制。扫雷游戏中也有递归问题,当鼠标单击到四周没有雷的点时往往会打开一片区域,因为在打开没有雷的四周区域时,如果其中打开的某一点其四周也没有雷,那么它的四周也会被打开,以此类推,就能打开一片区域。这些问题用递归方法实现既清晰易懂,还能通过较为简单的程序代码实现。
计算思维的要素还有很多,以上我们以递归为例介绍了如何通过学生喜欢并易于接受的案例将递归的概念、思维方法显现出来,并应用于各种现实的应用和问题解决中。根据计算思维的要素构造案例时,最好能够构造出3种不同层次的案例(见图3),驱动学生主动思考并领会计算思维。这3个层次包括简单的计算问题案例、与
通过案例的驱动、问题的解析,在强化计算思维要素的同时,也经由3种不同层次案例的递进关系逐步深化对学生计算思维能力的培养。
4 程序设计与计算思维
计算思维也可以体现在程序设计中,如经典的证比求易算法――“国王的婚姻”。这是一个很有意思的故事:一个酷爱数学的年轻国王向邻国一位聪明美丽的公主求婚,公主出了这样一道题:求出48,770,428,433,377,171的一个真因子。若国王能在一天之内求出答案,公主便接受他的求婚。国王回去后立即开始逐个数地进行计算,他从早到晚共算了3万多个数,最终还是没有结果。国王向公主求情,公主告知223,092,827是其中的一个真因子,并说,我再给你一次机会,如果还求不出将来,你只好做我的证婚人了。国王立即回国并向时任宰相的大数学家求教,大数学家在仔细地思考后认为,这个数为17位则最小的一个真因子不会超过9位。于是他给国王出了一个主意,按自然数的顺序给全国的老百姓每人编一个号发下去,等公主给出数目后立即将它们通报全国,让每个老百姓用自己的编号去除这个数,除尽了立即上报赏金万两。最后国王用这个办法求婚成功。实际上这是一个求大数真因子的问题,由于数字很大,国王一个人采用顺序算法求解,其时间消耗非常大。当然,如果国王生活在拥有超高速计算能力的计算机的现在,这个问题就不是什么难题了,而在当时,国王只有通过将可能的数字分发给百姓,才能在有限的时间内求取结果。该方法增加了空间复杂度,但大大降低了时间的消耗,这就是非常典型的分治法,将复杂的问题分而治之,这也是我们面临很多复杂问题时经常会采用的解决方法,这种方法也可作为并行的思想看待,而这种思想在计算机中的应用比比皆是,如现在CPU的发展就是如此。同样,计算机基础教学在介绍各个知识点时,往往也是由简人难、不断深入的,随着问题复杂度的逐步提升,需要让学生掌握如何采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法。这些思想方法和思维能力是一通百通的,也是如今计算机基础教学中真正希望学生能够掌握的。
在日常的教学过程中,介绍这些经典的算法后,需要通过一种具体的程序设计语言将算法转换为计算机可以执行的程序,了解如何将具体问题抽象化后由计算机实现的过程,并从程序的执行效率中让学生感性地判断出算法的好坏,从而对各种算法进行评价分析,体现出在时间和空间之间,在计算机处理能力和存储容量之间需要进行折衷的思维方法。当计算机基础教育界在热议计算思维的同时,“Machine Thinking”在管理学界也成为时下最流行的词汇之一,他们认为编程特别是其思想正在成为数字时代的一项基本技能,对新时代的知识工作者而言,编程早已不是程序员的必修课,而是营销人员、业务人员甚至CEO的必修课,一些必要的编程知识成为更好地理解新技术、新服务和新商业模式的第3只眼睛。因此,对于各种专业的学生,无论文理,都应当学习一些基本的算法和程序设计,虽然很多非计算机专业的学生将来可能很少进行程序设计和系统构建这样直接应用计算科学的实践,但是在其接触到的信息技术中,计算科学的应用和计算思维的体现无处不在,而且由于计算机科学技术的发展,可以在不同的逻辑层次进行定制与开发,这也为非计算机专业学生进行计算思维培养相关的实践活动提供了可能性。对于理工科学生可以学习C、Visual Basic、Visual C++、Java、c≠}、Fortran、Python等高级程序设计语言,而对于文科专业学生可以选择学习的程序设计语言也很多,例如可以选择文科专业需要掌握的某项技能软件之上的二次开发,例如在EXCEL、WORD中的宏编程(Visual Basic Application),或者网页开发中的脚本语言VB Script或JavaScript等。而且随着程序语言向自然语言编程方向的不断发展,还可以选用起点很低的完全可视化编程语言,如RAPTOR(the Rapid AlgorithmicPrototyping Tool for Ordered Reasoning)、MIT开发的Scratch、Google开发的Blockly等,这些可视化编程语言和环境可通过简单直观的图谱结构实现编程,通过它们设计的程序和算法亦可直接转换成为c++、c#、Java等高级程序语言,为程序和算法设计的基础课程提供教学实验环境。程序设计课程应当从复杂的语法规则中解放出来,将内容重点转移到问题的抽象,算法的构造,程序的实现和评价等知识上,让学生不仅能掌握一门算法语言,更重要的是可以加深他们对相关软件实现的理解,从而进一步理解计算科学的本质――抽象和自动化。
以上就是关于编程的科普小知识全部的内容,包括:编程的科普小知识、菜鸟如何学习计算机编程如何快速学习计算机编程、c++是 等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)