《中职 信息技术(基础模块)(下册)任务1了解程序设计理念教学课件.pptx》由会员分享,可在线阅读,更多相关《中职 信息技术(基础模块)(下册)任务1了解程序设计理念教学课件.pptx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章 程序设计入门目录目录目录目录Contents5.1.1 了解程序设计基础知识5.1.2 了解常见的程序设计语言5.1.3 理解用程序设计解决问题的逻辑思维理念第5章 程序设计入门 了解程序设计理念程序设计的理念是程序设计的基础,程序是解决某个问题所需的一系列指令序列集合,程序设计语言是人们与计算机进行沟通的工具。运用程序设计解决问题的过程和方法是程序设计理念中最重要的部分,它是一种逻辑思维理念,不仅体现在程序设计中,也可以迁移运用到其他问题的解决中。算法是求解问题的一系列计算步骤,这些计算步骤可能是顺序执行、选择执行或循环执行的,这也正是一个程序中常出现的三种基本结构。第5章 程序设计
2、入门任务情景情景1:在开始之前,让我们先来玩一个游戏盲人指路。请同学两两组队,其中一人需戴上眼罩扮演盲人,另外一人需用语言指挥同伴绕过障碍物到达终点。比比看哪支队伍最先到达终点。情景2:数学课上,老师讲解概率的含义,为了让同学们更好地理解,老师拿出了一枚硬币,让同学们抛100次这枚硬币,并记录下每次硬币落地后的正反面,然后统计出100次中抛出正面的概率。小华心想:抛100次硬币太费时,听说计算机是个运算速度特别快的家伙,它可以帮忙“抛”硬币吗?第5章 程序设计入门任务分析情景1:在“盲人指路”的游戏中,负责指路的同学所发出的一系列指令就是一个“程序”,比如“前进”“左转”“右转”“停”等,这些
3、指令所组成的序列最终让“盲人”同学顺利到达终点。通过“盲人指路”的游戏,模拟了一个最简单的“程序”。计算机程序设计就是让计算机按照一定步骤去解决某个问题或者完成某项任务。情景2:计算机自诞生之日起就是以其超强的“计算”能力而著称。我国自主研制的神威太湖之光超级计算机中安装了40960个“申威26010”众核处理器,每秒能运行九亿亿次。所以,即使让计算机“抛”1000次硬币,它也可以在不到1秒的时间内完成。不过,如何让计算机完成“抛”硬币的过程呢?我们需要先利用计算思维,将现实生活中的问题转化成计算机所能处理的形式,然后设计算法并编写程序来实现。第5章 程序设计入门说一说 请结合生活经验,谈一谈
4、对程序设计的理解。第5章 程序设计入门5.1.1 了解程序设计基础知识1指令和程序指令(Instruction)是给计算机下达的一个基本命令,它是一条语句或代码。例如“在输出窗口打印出hello world!”是一条指令;“计算20除以4的商”也是一条指令。程序(Program)是为实现特定目标的一条或多条编程指令序列的集合。在“盲人指路”游戏中,指挥“盲人”从起点到终点所发出的一系列指令序列(例如:前进2步-左转-前进3步-右转-前进1步)是一个程序;抛硬币并计算抛出正面的次数占比的过程也是一个程序。事实上,生活中很多事情都有程序:一份菜谱里记录着这道菜的制作程序;一本活动策划书里记录着某个
5、活动的流程;早上起床洗脸、刷牙、吃早餐的过程是一个程序;制作板凳时的打眼、组装、打磨也是一个程序当计算机运行一个程序时,程序中的指令就会被连续自动执行,就像我们获得一份如图5-2所示的菜谱之后,能自动按着菜谱中的操作步骤做出双面煎蛋一样,对于计算机来说,根据人设定好的程序自动完成一系列指令,叫作“自动化”。今天我们能很方便地使用一些计算机软件或App,是因为程序员编写了程序来告诉设备应该怎样做。第5章 程序设计入门2程序设计计算机是一个没有生命的机器,是一个不知道自己该做什么、但却十分愿意服从命令的机器。手机如果没有“程序”,就是一堆没有用的零件,我们无法用它通话、上网和玩游戏。程序设计(Pr
6、ogram Design)就是将问题解决的方法步骤编写成计算机可执行的程序的过程。简单来说,就是告诉计算机要做什么,并且每一个行为的细节和顺序都要说清楚、可执行。这样,计算机就能够很快速地、正确地完成所有“指令”,最终解决问题或完成任务。第5章 程序设计入门说一说 请说一说什么是程序员思维?第5章 程序设计入门5.1.2 了解常见的程序设计语言1低级语言和高级语言我们和计算机沟通的语言就是程序设计语言,程序设计语言包括低级语言和高级语言。最开始的程序设计语言只有两个符号,要么是1,要么是0,它们分别代表电路“开”和“关”,这是一种比较底层的语言,称为二进制语言,又称为机器语言。虽然它能够实现我
7、们与计算机的沟通,但是面对一大串毫无可读性的01代码,人们显然非常希望能够找到一种更加简便的方法来告诉计算机要做什么。为了降低程序编写和维护的难度,人们又发明了汇编语言,利用特定的助记符来帮助程序员记忆机器指令。但是,利用汇编语言编写的程序通常不能是大规模的,它和机器语言一样,都是直接面向机器的,与人们使用的自然语言有很大区别,机器语言和汇编语言统称为低级语言。后来,随着计算机语言的发展,高级语言终于诞生了。高级语言是以人们的日常语言为基础的一种编程语言,是能够直接表达运算操作和逻辑关系的语言,大大增强了程序代码的可读性和易维护性。例如,曾经我们想让计算机在输出窗口打印出“前进!”,写下的程序
8、可能是无序的01代码;而如今我们想让计算机进行同样的操作,写下的程序就可以像表5-1右列这样,简洁且具有很强的可读性。现在,人们已经发明了很多高级语言了,比如C、C+、Java、Python等,它们有着各自不同的语法和特点,而Python凭借着它明确、简单、可扩展性强等特点,逐渐成为世界上最受欢迎的程序设计语言之一。第5章 程序设计入门2常见的高级程序设计语言C语言:C语言是一门通用计算机编程语言,功能丰富,使用灵活。同时,C语言还具有汇编语言的许多特点,比如能直接访问物理地址、进行位操作、直接对硬件进行操作等,因此,C语言也称为“中级语言”。C语言是编写应用软件、操作系统和编译程序的重要语言
9、之一。C+语言:C+语言是在C语言基础上开发的一门中级语言,既可以进行C语言的过程化程序设计,又可以进行面向对象的程序设计。C+的应用领域很广,是受广大程序员喜爱的编程语言之一。Java语言:Java语言是一门面向对象的编程语言,不仅吸收了C+语言的各种优点,还删减了C+里难以理解的概念,功能强大,简单易用。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。Python语言:Python语言是一种面向对象的解释型编程语言,语法简洁清晰,是完全面向对象的语言,函数、模块、数字、字符串都是对象。Python拥有强大的标准模块和第三方模块,能够快速开发出功能丰富的应用程
10、序。此外,Python常被称为胶水语言,能够把用其他语言(如C和C+)制作的模块轻松联结在一起。常见的一种应用情形是,使用Python搭建程序框架,若对其中有特别要求的部分,可用更适合的语言改写,比如3D游戏中的图形渲染模块性能要求很高,就可以用C或C+重写,而后封装为Python可调用的扩展模块就可以了。第5章 程序设计入门5.1.3 理解用程序设计解决问题的逻辑思维理念利用程序设计解决问题的过程和我们人类解决问题的过程有很大的相似之处。比如,当我们解决问题时,首先会观察、分析问题,收集必要的信息,然后根据已有的知识、经验进行判断和推理,接着尝试按照一定的方法和步骤去解决问题。而要通过程序设
11、计来解决问题,也需要经历类似的思维过程,我们将这种运用信息技术解决问题的思想方法称为计算思维。计算思维让我们能够:运用所学知识和技能,通过界定问题、抽象特征、建立模型和组织数据等,将一个抽象的问题转化成计算机等信息技术可以处理的形式;通过判断、分析和综合各种信息,运用信息技术工具和信息资源,设计算法形成解决问题的方案;总结信息技术应用的方法和技巧,并迁移到与之类似的相关问题的解决过程中,包括自己的职业岗位和生活情境。计算思维不仅体现在程序设计中,在我们的学习、生活和工作中,计算思维也同样重要,它能帮助我们去发现问题、分析问题和解决问题,是一项重要的思维能力。第5章 程序设计入门5.1.3 理解
12、用程序设计解决问题的逻辑思维理念利用程序设计解决问题的过程和我们人类解决问题的过程有很大的相似之处。比如,当我们解决问题时,首先会观察、分析问题,收集必要的信息,然后根据已有的知识、经验进行判断和推理,接着尝试按照一定的方法和步骤去解决问题。而要通过程序设计来解决问题,也需要经历类似的思维过程,我们将这种运用信息技术解决问题的思想方法称为计算思维。计算思维让我们能够:运用所学知识和技能,通过界定问题、抽象特征、建立模型和组织数据等,将一个抽象的问题转化成计算机等信息技术可以处理的形式;通过判断、分析和综合各种信息,运用信息技术工具和信息资源,设计算法形成解决问题的方案;总结信息技术应用的方法和
13、技巧,并迁移到与之类似的相关问题的解决过程中,包括自己的职业岗位和生活情境。计算思维不仅体现在程序设计中,在我们的学习、生活和工作中,计算思维也同样重要,它能帮助我们去发现问题、分析问题和解决问题,是一项重要的思维能力。第5章 程序设计入门1将抽象问题转化成计算机能处理的形式将一个问题转化成计算机能处理的形式,首先需要抽象出问题中的关键对象和对象之间的关系,然后建立起合适的模型,并用计算机语言表达出来。简单来说,这是一个对问题进行重新表述的过程。问题的类型千千万万,其表述方式并不唯一,有的问题可以用数学模型来表述,有的问题可以用文字、表格或图形等形式表述。每次抛硬币,落地后要么是正面,要么是反
14、面,这便是硬币落地后的两种状态。在计算机中,我们可以用两个数字来表示两种不同的状态,这种方法也可称为“编码”。例如,我们用数字1表示抛出正面,用数字0表示抛出反面(当然,你也可以用其他数字或其他计算机能处理的形式分别表示正面和反面状态)。第5章 程序设计入门抛硬币的结果具有随机性,每次可能出现正面,也可能出现反面,就好比“抽签”一样。在Python程序设计语言中,提供了一个用于“抽签”的工具箱random随机数模块,其中提供了一些用于产生随机数的“工具”。我们将“工具箱”random模块导入程序,就可以使用其中的所有“工具”了。例如,randint(a,b)是random模块中的一个“工具”,
15、用于从ab中随机产生一个整数,因此,“抛硬币”的过程可以用下面这行语句进行表达:操作过程Python语句抛硬币result=random.randint(0,1)第5章 程序设计入门注:result代表抛硬币的结果,result=random.randint(0,1)表示01中随机产生一个数,并把这个随机数赋给result。result的值要么是0,要么是1。当result的值是0时,代表抛硬币的结果是反面;当result的值是1时,代表抛硬币的结果是正面。在Python中,可以用关系运算符“=”来表达两个对象之间的相等关系,因此,抛硬币的结果可以表述为Python逻辑表达式。这样,我们就通过
16、编码、程序语句和逻辑表达式,将“抛硬币”问题用一种计算机能够处理的形式进行了重新表述。接下来,需要着手设计具体的解决方案,即设计算法。第5章 程序设计入门2设计算法在程序设计中,算法(Algorithm)就是程序执行的流程,是解决问题的步骤。(1)问题分解。对于较为复杂的问题,可以首先根据功能、流程或从其他角度将问题分解,并且分解出的子问题也可以根据需要进一步分解;之后,再对每个子问题设计详细的解决步骤,各个击破。第5章 程序设计入门思维拓展:事实上,在很多时候,问题分解都能帮助我们更好地找到解决问题的办法。例如,作家写一本书之前,会先确定大纲,列出一级标题、二级标题之后再对各个部分进行具体写
17、作;做一项旅行攻略时,我们会将攻略分为景点、交通、住宿、用餐等几个模块,然后再针对各个模块进行详细规划。抛硬币抛出正面的概率可以根据以下公式进行计算:抛出正面的概率=抛出正面的次数实验总次数已知:实验总次数为100次。于是,可根据计算公式将问题分解为两个子问题:“计算抛出正面的次数”和“计算抛出正面的概率”,如图所示。当然,也可以从其他角度进行问题分解,或者也可以不分解。第5章 程序设计入门(2)子问题1:计算抛出正面的次数。为计算抛出正面的次数,我们可以这样来设计算法,用自然语言描述为:在开始“抛硬币”之前,将正面次数设为0。执行“抛硬币”操作。如果抛出正面,则正面次数+1,实验次数+1;如
18、果抛出反面,则仅实验次数+1。然后继续执行下一次“抛硬币”操作。我们可以用流程图来描述这个算法,如图所示。其中,用圆角矩形表示“开始”,之后,程序将顺着箭头指引的方向进行;用菱形表示“判断”,在该判断条件下,有两条分支,一条是抛出正面之后要进行的操作(正面次数+1,然后进行下一次抛硬币),另一条是抛出反面之后要进行的操作(直接进行下一次抛硬币)。然而,仔细分析一下绘出的流程图,将发现这个流程并没有出口。第5章 程序设计入门事实上,当抛完第100次硬币后,就可以不再继续抛硬币,进而结束流程。因此,需要在每次抛硬币之前,判断是否已经抛了100次,如果还没有抛够100次,就继续抛硬币;否则,就结束流
19、程,进行下一个步骤。如果不判断实验次数是否达到100次,程序就会永不停止地“抛硬币”,陷入“死循环”。此外,每抛一次硬币,都应更新实验次数,以记录当前是第几次抛硬币。这样,我们可以在之前算法的基础上,增加对实验次数的判断,用自然语言描述新的算法:在开始抛硬币之前,将正面次数设为0,将实验次数设为0。判断实验次数是否100,如果是,则执行“抛硬币”操作。如果抛出正面,则正面次数+1,实验次数+1;如果抛出反面,则仅实验次数+1。继续判断实验次数是否100,如果是,则执行“抛硬币”操作。如果抛出正面,则正面次数+1,实验次数+1;如果抛出反面,则仅实验次数+1。直到某次判断发现实验次数100,结束
20、“抛硬币”操作。第5章 程序设计入门说一说 请根据上面的流程图,描述一下计算机抛100次硬币的具体过程,包括正面次数和实验次数的变化情况。第5章 程序设计入门(3)子问题2:计算抛出正面的概率。经过了100次抛硬币之后,我们可以得到抛出正面的次数,接下来,就可以根据概率计算公式计算抛出正面的概率了。第5章 程序设计入门3反思和迁移下载并运行下面的示例程序tossCoin.py,体会一下用计算机解决“抛硬币”问题的过程,看看抛100次硬币得到正面的概率是多少?当抛硬币的次数更多时,抛出正面的概率接近于哪个数?import random up_n=0#记录抛出正面的次数total_n=100#代表
21、实验总次数cnt=0#记录实验次数 while cnttotal_n:result=random.randint(0,1)print(result)if result=1:up_n=up_n+1 cnt=cnt+1 p=up_n/total_nprint(抛出正面的频率为:+str(p)第5章 程序设计入门说一说 用计算机解决问题有什么优势?生活中还有什么问题可以用类似的方法解决?第5章 程序设计入门4算法、程序流程图和程序基本结构(1)算法。算法(Algorithm)是求解问题的一系列计算步骤,我们计算抛100次硬币抛出正面的概率所采用的计算步骤就是解决这个问题的一个算法。解决不同的问题可能
22、需要不同的算法,同一个问题也可能有不同的解决方案或算法。算法是软件的核心,无论是解决简单问题的程序,还是制造芯片的软件,都依靠算法。对于一些经典的问题,人们提出了很多解决办法,并总结成了经典的算法,如枚举算法、二分查找法、排序算法、递归算法、回溯算法等。一个算法应该具有以下几个重要特征:有穷性确切性输入项输出项可行性程序是算法和数据结构的总和,其中,算法是程序的“灵魂”,数据结构是对数据的表达和处理。因此,算法独立于任何具体的程序设计语言之外,一个算法可以用多种程序设计语言来实现。我们可以用自然语言来描述一个算法,也可以用程序流程图来表示一个算法。第5章 程序设计入门(2)程序流程图。程序流程
23、图是把计算机的主要运行步骤和顺序呈现出来的一种工具,是整个程序的一张蓝图,能够清晰直观地体现出程序的逻辑性和处理顺序。当然,这张蓝图并不唯一,对于同一个问题,按不同的算法就会画出不同的流程图。为方便程序员对输入输出和数据处理过程进行分析,也便于程序员之间进行交流,程序流程图用统一规定的标准符号和图形来表示,通常包括处理框、判断框、输入输出框、起止框、连接点和流程线。第5章 程序设计入门“抛硬币”问题的流程图第5章 程序设计入门说一说 在上面的流程图中,每个步骤被执行的次数一样吗?有哪些步骤被多次执行了?如果实验总次数变为1000次或更多,每个步骤被执行的次数会发生什么变化呢?第5章 程序设计入
24、门(3)程序基本结构在程序设计中,不总是顺次执行每个步骤,有时需要在两个步骤中选择其中一个执行,有时需要连续多次执行某些步骤。程序中每个步骤的执行顺序构成了程序的结构,常见的程序结构包括顺序结构、选择结构和循环结构。第5章 程序设计入门 顺序结构。从上往下,一步一步顺次往下执行。在选择结构和循环结构中也会有顺序结构。选择结构。在“抛硬币”程序中,判断是否抛了100次硬币、判断抛硬币结果是否是正面,并根据判断结果从接下来的步骤中选择其中一个执行,这便是选择结构。循环结构。在“抛硬币”程序中,程序并不是从上到下地顺序执行,在100次抛硬币的过程中,每一次都需要先判断抛硬币的次数是否小于100,然后给result随机赋值为数字0或数字1,并判断正面次数是否加1等,这些步骤将被循环执行100次,这便是循环结构。程序就像我们的人生一样,不会永远一帆风顺、顺序执行。有时我们会面临选择,有时可能会在一个地方原地打转,但也正是因为有了这些时刻,生命才更加精彩。在程序的世界里,也正因为有了选择和循环,程序设计也才更加有趣,更加便捷高效。第5章 程序设计入门说一说 在“抛硬币”学习概率的活动中,每次抛硬币,硬币落地后有哪几种状态?在计算机中如何表示硬币的状态?如何体现“抛硬币”的随机性?第5章 程序设计入门