1 / 17

问题求解与计算思维

问题求解与计算思维. 合肥工业大学 计算机与信息学院 王浩 jsjxwangh@hfut.edu.cn. 计算思维的研究. Wing J M. Computational Thinking. Communications of the ACM , 2006 , 49 (3) Wing J M. Computational Thinking and Thinking about Computing[ EB/ OL ] . 2008. ht tp :/ / www. cs. cmu. edu/ ~ wing/ publications/ Wing08a. pdf

cruz
Download Presentation

问题求解与计算思维

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 问题求解与计算思维 合肥工业大学 计算机与信息学院 王浩 jsjxwangh@hfut.edu.cn

  2. 计算思维的研究 • Wing J M. Computational Thinking. Communications of the ACM , 2006 , 49 (3) • Wing J M. Computational Thinking and Thinking about Computing[ EB/ OL ] . 2008. ht tp :/ / www. cs. cmu. edu/ ~wing/ publications/ Wing08a. pdf • 周以真. 计算思维. 中国计算机学会通讯,2007 ,3 (11) • 王飞跃. 从计算思维到计算文化[J]. 中国计算机学会通讯,2007,3(11). • 董荣胜,古天龙.计算思维与计算机方法论. 计算机科学, 2009 , 36(1) • 朱亚宗.论计算思维——计算思维的科学定位、基本原理及创新路径. 计算机科学, 2009, 36(4) • 郭喜凤, 孙兆豪, 赵喜清. 论计算思维工程化的层次结构. 计算机科学, 2009, 36(4) • 张晓如,张再跃. 再谈计算机思维 计算机教育 2010/23 • 牟琴, 谭良. 计算思维的研究及其进展. 计算机科学, 2011, 38(3) • ……

  3. 计算思维在计算机课程教学中的应用 • 许宏丽,周筱来,赵 耀. 基于创新意识培养的“多媒体技术应用”课程教学实践 . 计算机教育. 2011/08 • 曹江莲,谢慧萍. 新测试方式下非计算机专业程序设计课程教学探讨. 计算机教育. 2011/04 • 陈杰华, 戴丽娟. 以培养计算思维为核心的程序设计实验教学.实验技术与管理. 2011, 28(1) • 赵岭忠, 钱俊彦, 蔡国永. 算法设计策略与计算思维.企业科技与发展. 2010/08 • 范莉莉, 王忠群. 在《编译原理》课程教学中探索专业素质和能力的培养.现代计算机(专业版) . 2010/07 • 王甲海, 印 鉴. 人工智能教学与计算思维培养 . 计算机教育. 2010/19 • 陈杰华. 程序设计课程中强化计算思维训练的实践探索 .计算机教育. 2010/20 • 朱立平. 论程序设计课程“实验导学”教学模式的构建 .计算机教育. 2010/20 • 王 挺, 李梦君,周会平. 对编译原理课程教学中计算思维培养的探讨. 计算机教育. 2010/21 • 廖伟志,李文敬,王汝凉. 基于培养学生计算思维的任务驱动式“离散数学”教学模式研究 .计算机教育. 2010/21 • ……

  4. 计算思维与大学计算机基础教育 • 陈国良, 董荣胜. 计算思维与大学计算机基础教育.中国大学教学. 2011/01 • 董荣胜.《九校联盟(C9)计算机基础教学发展战略联合声明》呼唤教育的转型. 中国大学教学. 2010/10 • 何钦铭, 陆汉权, 冯博琴. 计算机基础教学的核心任务是计算思维能力的培养——《九校联盟(C9)计算机基础教学发展战略联合声明》解读. 中国大学教学. 2010/09 • 董荣胜. 计算思维与计算机导论 . 计算机科学, 2009, 36(4) • 何昭青.《计算机导论》课程内容体系构建的研究与实践. 湖南第一师范学院学报. 2010/05

  5. 存在的问题 • 计算思维、计算机思维、信息学思维? • 计算思维研究的内容和范围? • 计算思维如何体现在课程体系中? 计算科学 学科的3个形态:理论、抽象、设计(对应于本学科中问题求解的3个典型过程) 12个基本概念:绑定、大问题的复杂性、概念和形式模型、一致性和完备性、效率、演化、抽象层次、按空间排序、按时间排序、重用、安全性、折衷与结论 • 计算机基础课程教授计算思维的那些内容?

  6. 问题求解 计算思维(Computational Thinking,CT)是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为。 基本概念:约简、嵌入、转化、仿真、递归、并行、多维分析、类型、抽象、分解、SoC,保护、冗余、容错、纠错、系统恢复、启发式、规划、学习、调度、折衷

  7. 问题求解 • 问题表示(如何建立模型) • 问题求解(如何设计算法) • 效率(如何有效地求解)

  8. 问题求解 • 例题 1 有13个乒乓球,其中有一个是坏的,其质量与其它球不同,请设计算法将其挑出。 建模与设计

  9. 问题求解 • 例题 2 下列语句完成两个变量a,b中数值的交换: c=a; a=b; b=c; 能否不借助变量c完成两个数的交换呢? 算法与效率

  10. 问题求解 • 例题 3 编程求解一元二次方程的根 ax2+bx+c=0 要求:设计完备的测试数据集,考虑a, b, c各种取值对根的影响 容错、纠错

  11. 问题求解 • 例题 1 解答1: • 步骤1:将13个球分成4,4,4,1四份,分别记为a,b,c,d组; • 步骤2:先比较a,b两组的轻重,若a与b一样重,取c中任意4个球与a或b比较,若都一样重,则d组为次品,若不一样重,则可知次品在c组取出的4个球中,并且可判断次品是轻还是重;若a与b不一样重,取c组与a或b进行称量对比,得出含有次品组为a组或者b组以及判断出次品是轻还是重。 • 步骤3:从步骤2中得到含有4个球的次品组,将这4个球平分成2组称量,根据次品是轻或重得到含有次品组e,再将次品组e中2个球分别放置天平两端,根据次品轻重判断得到次品球。

  12. 问题求解 • 例题 1 解答2: • (1)将13个球分为三个部分,6,6, 1,将6,6两部分进行称量,若平衡,则1所代表物品为次品;否则(2) • (2)取一组6,将其平分为两组计为a,b;另一组6再平分为c,d;取a,b,c两两称量,若都平衡则次品在d中,转到(3);若有一次不平衡,则次品在a,b,c之中,转到(3) • (3)将三个任取两个称量,若平衡,则次品为未称量的物品;若不平衡,则转到(4) • (4)若不平衡再测一次即可得次品。

  13. 问题求解 • 例题 1 解答3: • 将13个球记为1,2,3,4,5,5,6,7,8,9,10,11,12,13。1~6记为A, 7~12号记为B; • 步骤1:将A B组球放在天平上,若天平平衡,则次品为13号球;若不平衡,则转向步骤2; • 步骤2:取较轻的一组,不妨设为A,将A组重新分成两组放在天平两端,若平衡,则转向步骤3,不平衡转向步骤4; • 步骤3:将B组分成两组记为a,b,放在天平两端,(由步骤2值次品较重),取较重的一组,不妨设其为a,任取两个球放在天平两端,若天平平衡,则为a中的另一个球;若不平衡,则较重的为次品; • 步骤4:将A组分成两组,取较重的一组(三个球),任取两个放在天平两端,若平衡,则为三个中的另一个,若不平衡,则为较重的的球;

  14. 问题求解 • 例题 1 解答4: • 步骤1:从这堆产品中任意拿出2产品,放在天平两端; • 步骤2:记下天平两端是否相平;相平执行步骤3;否则执行步骤5; • 步骤3:从天平的右端拿下产品,再从剩余产品中任意拿出一个放在右端,记下是否相平; • 步骤4:若相平,重复步骤3,直到不平为止,则此时右端产品为劣质; • 步骤5:拿下右端产品,再从剩余产品中任意拿出放在右端,若相平,则之前拿下的为劣质;否则左端为劣质。

  15. 问题求解 • 例题 2 解答1: b=a*b;a=b/a; b=b/a; 解答2: a=a+b; b=a-b; a=a-b; 解答3: a=a-b; b=a+2b; a=(b-a)/2; b=b-a;

  16. 问题求解 • 例题 3 解答1: #include <iostream.h> #include <math.h> void main() { float a,b,c,t,x1,x2,real,imag; cout<<"输入系数:"; cin>>a>>b>>c; if(a==0) cout<<"这个方程不是二次方程!"<<endl; else { t=b*b-4*a*c; if(t<0) { real=-b/(2*a); imag=sqrt(-t)/(2*a); cout<<”这个方程有两个复数根:x1="<<real<<'+'<<imag<<"i x2="<<real<<'-'<<imag<<'i'<<endl; } else if(t==0) cout<<"这个方程有两个相等的根:x1=x2="<<-b/(2*a)<<endl; else { x1=-b/(2*a)+sqrt(t)/(2*a); x2=-b/(2*a)-sqrt(t)/(2*a); cout<<"这个方程有两个不相等的实数根:x1="<<x1<<" x2="<<x2<<endl; } }

  17. 问题求解 • 例题 3 解答2: #include<iostream.h> #include<math.h> void main() { float a,b,c,d,x1,x2,x; cout<<"请输入a,b,c的值:"<<a<<b<<c<<endl; cin>>a>>b>>c; d=b*b-4*a*c; if(a==0) { cout<<"该函数的解为x=:"<<(-c/b)<<endl;} else{ if(d<0) { cout<<"该函数无解!"<<endl;} if(d==0){ x=(-b)/(2*a); cout<<"该函数的解x为:"<<x<<endl;} if(d>0){ x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); cout<<"该函数的解x1,x2为:"<<x1<<","<<x2<<endl;} } }

More Related