程序设计与计算思维 课件 【ch01】引论_第1页
程序设计与计算思维 课件 【ch01】引论_第2页
程序设计与计算思维 课件 【ch01】引论_第3页
程序设计与计算思维 课件 【ch01】引论_第4页
程序设计与计算思维 课件 【ch01】引论_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计与计算思维引论第一章案例1:设计加法表01一、案例1:设计加法表一、案例1:设计加法表注释:(1)计算机俗称“电脑”,是用以代替人脑思维的工具。该程序的设计思想是通过9个printf()函数打印与人的“印记”相同的“加法表”,描述过程较为粗放。Prog1.1一、案例1:设计加法表(2)执行printf("1+1=2\n");,打印加法表的第一行,输出:1+1=2。执行printf("1+2=3

2+2=4\m");,打印加法表的第二行,输出:1+2=32+2=4。依次类推,执行printf(“1+9=10

2+9=113+9=12

4+9=135+9-146+9=157+9=68+9=179+9=18\n");,打印加法表的第九行,输出:1+9=10

2+9=113+9=124+9=135+9=146+9=157+9=168+9=179+9=18,如图1.1所示。(3)美国卡内基梅隆大学周以真教授提出,计算思维是指运用计算机科学的基础概念去求解问题、设计系统和理解人类行为,它涵盖了计算机科学的一系列思维活动。“计算思维”的理论,通俗地说,就是用计算机科学与技术来解决问题的方法和途径:程序设计是人通过计算机语言将人的思维传递给计算机的过程,使计算机模仿人的思维方式。Prog1.1一、案例1:设计加法表注释:(1)int

i定义变量i;设计for(i=l;i<=?;i++)循环结构,通过循环变量i控制列的变化条件i<=?控制每行输出的算式的个数,例如,条件i=1控制打印第一行,·······”,条件i<=9控制打印第九行。Prog1.2一、案例1:设计加法表(2)执行for(i=1;i<=1;i++)循环结构,打印加法表的第一行,输出:1+1=2。执行for(i=1;i<=2;i++)循环结构,打印加法表的第二行,输出:1+2=3

2+2=4。依次类推,执行for(i=1;i<=9;i++)循环结构,打印加法表的第九行,输出:1+9=102+9=113+9=124+9=13

5+9=14

6+9=15

7+9=16

8+9=17

9+9=18,如图11所示。(3)该程序构造了for循环结构模型,将人解决问题的思想抽象成一致的“接口”。Prog1.2一、案例1:设计加法表注释:(1)voidfn1(int

j)定fun()函数,fun1()函数的功能是打印加法表形参变量j描述的行,主函数main()调用fun1()函数帮助完成任务。Prog1.3一、案例1:设计加法表(2)主函数main()调用fun1(1);,打印加法表的第一行,输出:1+1=2。主函数main()调用fun1(2);,打印加法表的第二行,输出:12=32+2=4。依次类推,主函数main()调用fn1(9);,打印加法表的第九行,输出:1+9=102+9=113+9=124+9=135+9=14

6+9=15

7+9=16

8+9=179+9=18,如图1.1所示(3)函数fun10将人解决问题的思想抽象成一致的“接口”voidfun1(int

j)。Prog1.3一、案例1:设计加法表注释:(1)自定义头文件fun1.h,将在该文件中定义voidfun1(int

j),主函数所在文件Prog1.4通过#include"fun1.h"就可以使用fun1h文件中的fun1函数。(2)文件Prog1.4中main()函数调用fun1.h文件中fun1()函数的过程与文件Prog1.3实现的功能相同。(3)一个程序由若干源文件组成,本程序是由prog1.4.c、stdio.h、fun1.h等源文件组成的,有的是库文件,有的是程序员自定义的源文件。该问题的解决体现了文件的工具融合“数学思维”与“工程思维”,达到了智慧传递的特征。Prog1.4案例2:一组数据的“逆序”输出02二、案例2:一组数据的“逆序”输出输入:23456712

89输出:89

12

67

4523Prog2.1二、案例2:一组数据的“逆序”输出注释:(1)人的智慧就是追求问题的“本质”。(2)现象级解决方法:执行printf("输入:2345671289\n");,输出:“输入:23

45671289”,这是“原始”数据序列。执行printf("输出:8912

6745

23\n");,输出:“输出:8912674523",该数据序列与原始数据序列是“逆序”关系,如图1.2所示。(3)这是一种简单粗放的解决问题方法,设计与构造方式单一,解决类似问题的可信度不高。Prog2.1二、案例2:一组数据的“逆序”输出Prog2.2二、案例2:一组数据的“逆序”输出注释:(1)inta1,a2,a3,a4,a5;定义五个整型数据变量,变量a1、a2、a3、a4、a5各代表内存中的一个存储单元,这五个存储单元可以存储五个整数。(2)执行a1=23;a2=45;a3=67;a4=12;a5=89;,则变量a1存储单元中存储的是23,变量a2存储单元中存储的是45,变量a3存储单元中存储的是67,变量a4存储单元中存储的是12,变量a5存储单元中存储的是89。执行printf("输入:%d%d%d%d

%d\n",a1,a2,a3,a4,a5);,输出:“输入:23456712

89”,这是“原始”数据序列。执行printf("输出:%d

%d%d

%d

%d\n",a5,a4,a3,a2,a1);,输出:“输出:8912

674523",该数据序列与原始数据序列是“逆序”关系,如图1.2所示。(3)思维的基础是人脑有记忆空间,计算思维的基础是构造可识别、能运算的存储空间。该程序通过五个变量“记住”要加工处理的五个数据。有了这五个变量,程序不仅可以处理2345671289这个数据序列,也可以处理其他数据序列。Prog2.2二、案例2:一组数据的“逆序”输出Prog2.3二、案例2:一组数据的“逆序”输出Prog2.3注释:(1)函数scanf()可以实现在程序“运行”阶段让用户随机录入数据,处理数据的对象不是在程序设计的前期事先提供的。(2)执行scanf("%d%d

%d%d%d",&a1,&a2,&a3,&a4,&a5);,用户输入:23

456712

89,输入后变量a1、a2、a3、a4、a5的值分别为23、45、67、12、89,但该程序处理的数据也可以是其他数据序列。(3)程序就是计算机指令的集合,程序设计前期可以定义数据的形式(抽象),在程序执行期间可以输入具体数据。二、案例2:一组数据的“逆序”输出Prog2.4二、案例2:一组数据的“逆序”输出注释:(1)实现“逆序”可以通过数据序列首尾相应位置交换实现,五个数据中,第一个数据和第五个数据交换,第二个数据与第四个数据交换,这样就达成了目标。(2)执t=a1;al=a5;a5=t,这是将a1和a两个数据交换,同理,执行t=a2;a1=a4;a4=t是将a2和a4两个数据交换。执行printf("输出:%d%d%d%d%dn"a1,a2,a3,a4a5);输出:89

12

6745

23(原始数据序列:2345671289)如图1.2所示。(3)计算思维的核心是抽象,即把人解决任务的方法抽象成可描述的语言。Prog2.4二、案例2:一组数据的“逆序”输出Prog2.5二、案例2:一组数据的“逆序”输出注释:(1)inta[N]定义数组a,用一个名字a描述一组数据,数组a把数据以“集合”形式进行管理,建立了数据之间的联系。inta1,a2,a3,a4,a5定义五个变量,变量之间是独立的,不能形成联系。inta[N];,数组a中有五个存储单元,存储单元的名称分别是a[0]、a[1]、a[2]、a[3]、a[4],这五个单元与变量a1、a2、a3、a4、a5一样,每个单元均能存储一个整型数据。(2)执行scanf(“%d

%d%d%d%d”,&a[0],&a[1],&a[2],&a[3],&a[4]);,输入:23

45

6712

89,则单元a[0]的值是23,单元a[1]的值是45,单元a[2]的值是67,单元a[3]的值是12,单元a[4]的值是89。执行t=a[0];a[0]=a[4];a[4]=t;,实现a[0]与a[4]交换,a[0]的值由23变成89,a[4]的值由89变成23。执行t=a[1];a[1]=a[3];a[3]=t;,实现a[1]与a[3]交换,a[1]的值由45变成12,a[3]的值由12变成45。(3)丰富的数据格式可以让人的思维方式变得灵活,数据的存储形式能决定算法,算法一般要依赖具体的数据格式。Prog2.5二、案例2:一组数据的“逆序”输出Prog2.6注释:(1)inta[N]定义了数组a,存储单元的名称a[0]、a[1]、a[2]、a[3]、a[4]就表现出一定的规律性,“编号”从0依次变化到N-1。程序设计时可以利用结构化程序设计中的“循环”结构依次访问数组a中的存储单元。二、案例2:一组数据的“逆序”输出Prog2.6(2)执行for(i=0;i<N;i++)scanf("%d",&a[i]);,实现给数组存储单元a[0]、a[1]、a[2]、a[3]、a[4]输入数据。执行for(i=0;i<N/2;i++){t=a[i];a[i]=a[N-i-1];a[N-i-1]=t;},当i=0时,N-i-1的值为4,即a[0]与a[4]交换;当i=1时,N-i-1的值为3,即a[1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论