同学们好,我是来自铜川市耀州中学的信息技术教师张富宁老师。今天我们一起来学习用计算机解决问题的过程。 交通信号灯是国际通用的道路交通信号设施,同学们在十字路口经常可以看到。请同学们思考,用计算机指挥的交通信号灯和交警指挥交通,哪一个效率更高呢? 很显然,用计算机指挥的交通信号灯效率会高很多,这是为什么呢?这得益于计算机本身所具有的优势。 计算机具有运算速度快、计算精度高、逻辑运算能力强等特点。随着计算机技术的发展,我国研制出了天河 号超级计算机,他以峰值计算速度每秒五点四九亿一次,持续计算速度每秒三点三九亿一次,双精度浮点运算的优异性能,成为全球最快的超级计算机。 近年来,在全球超级计算机五百强榜单中,我国天河二号多次位居榜首。他广泛应用于生物医药、新材料等领域。无论是计算机还是超级计算机,都广泛应用于实际解决问题。 那么用计算机解决问题是指什么呢?用计算机解决问题,即是指让计算机按照程序执行指令。我们平时大多是使用已有的程序来解决问题,如果 有的程序不能解决问题,我们需要怎么做呢?我们需要自己编写程序来解决问题。 上一节课我们通过交警指挥交通问题,了解了解决问题的一般过程。本节课我们通过红灯变绿灯问题来了解用计算机解决问题的过程。 用计算机解决问题主要经历以下几个步骤,首先我们提出问题,接下来分析问题,然后根据分析的情况设计方案。 设计完方案之后,我们则需要编程调试,如果编程调试没有错误,运行结果正确的话,我们就解决了这一问题。如果问题没有解决,我们则需要反 返回去查找是分析问题。设计方案,编程调试哪一步出现了错误,我们需要反复修改,直到解决问题为止。 刚才我们提出了红灯变绿灯问题,接下来我们来分析问题。分析问题就是对问题进行具体分析,明确目标与条件之间的关系, 然后对问题进行抽象,通过建模的方式界定和描述问题。有的问题可以通过数学模型来描述,有的问题可以通过文字表格、图形的方式来描述。 请同学们思考一下,红灯变绿灯问题应该如何来描述呢?红灯变绿灯问题 即是红灯和绿灯两种不同的状态,我们只需要两者之间间隔一定的时间即可。所以我们可以以表格的形式来呈现红灯变绿灯的分析情况。我们可以让初始状态显示为红灯变亮, 中间状态显示为红灯持续显示,然后中指状态为绿灯变亮即可。 接下来我们来设计方案,如果分析问题是我们要明确我们需要做什么的话,那么设计方案则是我们需要明确我们应该怎么来做。 在这一步里边,我们需要根据需求分析,将求解过程分解为若干个独立的功能。如果分解后的功能仍然比较复杂, 我们需要逐层继续分解,然后根据特定的功能实现算法。设计算法就是解决问题的明确的、有限的步骤。 在这里请同学们思考一下红灯变绿灯问题,我们应该如何来设计算法?我们的功能应该如何来分解呢?请同学们把你的想法写在学习任务单上。 同学们,写完了吗?红灯变绿灯问题,我们要实现的功能极致,先让红灯变亮,然后让红灯持续显示,最后呢,让绿灯变亮。 同学们,你们写对了吗?我们接下来则需要编程来实现这三个功能, 这就到了第四步,编程调试。编写程序是利用计算机程序设计语言来描述算法实现问题求解的过程,而调试程序是发现错误,分析其产生的原因并进行改正, 对运行的结果进行分析和验证,判断题是否正确和完整。首先我们来了解编写程序, 程序是一组可执行的指令程序设计语言是编写程序所用的计算机语言。 在前面数字转换中,我们学习到计算机能够直接处理的是二禁止数,所以我们最初的程序设计语言是由零一代码所组成的机器 语言,机器语言人不容易读懂,而计算机可以直接执行,所以我们的程序设计语言继续发展到了第二代汇编语言。 汇编语言引入诸暨符描述指令功能,我们可以看到这个程序片段,它所实现的功能是求和,因为在第三个语句中有 and。 由于机器语言和汇编语言都属于低级语言,所以我们的程序设计语言继续发展到了第三代高级语言。高级语言的语法结构类似于人类自然语言,他容易理解,容易编写。 我们常用的高级语言有 see 语言、 see 加加、 jar、 python 同学们可以看到老师给大家呈现 一个高级语言的程序片段,它的功能即是求和,它的描述方式更为简单。本节课我们就以 python 语言为例来了解程序编写的过程。 python 语言是荷兰人极多范罗苏姆开发的一款程序语言,它是一款免费开园的编程软件。 python 语言具有以下几个特点, python 语言简洁易用。如果用 say 语言, java 要实现某一个功能需要几十行甚至上百行语句,那么 python 语言只需要不到十行语句就可以实现。 第二, python 语言应用广泛。 python 语言广泛应用于 web 开发、游戏开发和人工智能 等领域。第三, python 语言有丰富的第三方库,实现一些功能,我们不必从零开始,只需直接引入第三方库即可。 第四, python 语言支持跨平台,它有很好的可移植性。首先,请同学们运行红灯变绿灯程序,阅读程序代码,参照注释一句,分析程序的功能,并思考, 如果将红灯的持续显示时间改为三十秒,应该如何来修改程序呢?请将你的答案写在学习任务单上。 同学们,写完了吗?老师带同学们一起来分析这段程序。首先, import turtle, import time 是指引入了 toto 和泰木模块。同学们,在英语中 toto 是指什么意思呢? toto 是指海龟,在这里 toto 是指海龟绘图体系,相当于引入了一个小海龟在画布上移动来实现绘画。 然后我们根据注视语句可以知道下面的这段程序语句是实现初始化红绿灯。第一个语句的功能是 初始化画笔,第二个语句是隐藏绘图标识,第三个语句我们根据注视可以知道它的含义。接下来这个程序片段所实现的功能是红灯变亮, 同学们请看第一个语句 light your color red red。 第一个 red 指的是画笔的绘图颜色为红色,第二个 red 是指的填充色 为红色。请同学们注意看这两个语句, begin feel 和 interview。 根据我们学习的英语知识,大家知道 begin feel 是开始填充, interview 是结束填充。如果没有这两个语句的话呢?我们根据中间的思考, 大家可以知道是画一个圆,我们画的是一个空心的圆,正因为有了 big and feel 和 under feel, 所以我们画出来的是一个实心圆,这就是我们的红灯。 接下来同学们可以看到红灯持续显示的语句是 time sleep 十五,然后是绿灯变亮的程序语句。绿灯变亮的程序语句和红灯变亮的程序语句基本相同,只是我们 light 灯的颜色由 red 改为了 gray。 那么同学们根据老师的分析,你知道如何让红灯持续显示的时间改为三十秒吗?对,我们只需要将 time sleep 语句里边的十五秒改为三十即可。 接下来我们来看一下这个程序的运行情况。首先我们输入程序语句,接下来点击运行,然后在画布中心显示红灯, 在红灯持续显示十五秒之后,他就会变为绿灯,然后我们关闭。接下来在程序语句中 将 time to sleep 改为三十秒,继续运行, 就可以实现红灯持续显示三十秒。同学们,在实际生活中,红灯变绿灯不是简单的一个灯变绿,而是红灯先亮,红灯不亮,绿灯变亮的过程。 请同学们参考老师给出的图,思考一下这个功能如何来实现呢?在这里老师给同学们提供一些帮助。在默认状态下,偷偷画笔的位置位于画布的中心,他的坐标为原点零零。 所以我们在实践任务一中是在画布的中心画了一个半径为二十的圆。 在这里我们需要在红灯的下方画一个绿灯,我们需要将画笔的位置由圆 点变到我们绿灯的圆心。同学们,那这个时候画笔的坐标应该改为多少呢? 在这里,老师给同学们提供三个函数。首先喷 up 函数是指提起画笔,也就是提起画笔之后,我们的画笔不会在画布上留有任何痕迹。 接下来我们可以通过勾 two 函数,让我们的画笔在 x 轴和 y 轴移动一定的位置。勾 two 括号 x, 逗号 y q b 指的是在 x 轴移动 x 像素,在 y 轴移动 y 像素。 譬如说,我们将我们的画笔放到这样一个位置,那么 x y 的坐标即为负一百,负一百。然后我们 放下画笔,接下来就可以继续绘画了。同学们,参照老师给大家提供的帮助,思考一下这个程序如何来实现呢?请将你的答案写在学习任务单上。 同学们,写完了吗?我们一起来看一下这个程序的实现。首先我们先让红灯变亮, 然后这段语句是让红灯变为黑色,即为 black。 接下来提起画笔, 然后勾住零负五十,将我们的画笔放到绿灯的圆心位置,然后放下画笔,然后进行绿灯的绘制。同学们,你写对了 吗?接下来我们来看一下这个程序的运行情况。我们首先输入程序已去, 然后点击运行,然后在画布中心会出现红灯, 在红灯持续显示十五秒之后,他会变黑,然后显示绿灯,这就是这个程序执行的过程。 现实生活中除了有红灯,绿灯还有黄灯,那么如何来实现由绿灯变为黄灯的情况呢?这作为同学们的课后作业,请同学们课后来完成。 细心的同学会发现,在我们的程序中,红灯和绿灯显示的时长是一样的,那么在现实生活中是一 样的吗?在现实生活中是不一样的。目前,西安市各个路口红绿灯正在进行智能化改造,实现信号灯可调、可控、可看,也给我们的信号灯装上了大脑, 他会根据车流量来调控我们红绿灯显示的时长,这体现了我们计算机的另外一个优势,他具有智能化。 到此,本节课的内容就结束了,我们一起来回顾一下本节课的内容。本节课学习了用计算机解决问题的优势, 也了解了用计算机解决问题的过程。用计算机解决问题,首先提出问题,接下来分析问题,然后设计方案,编程调试,直到解决问题为止。最后呢,我们通过拍森语言 体验了编程的过程。同学们,我们的人生中也会遇到红灯, 当我们遇到红灯时,只要我们分析问题,设计方案,找到一定的解决途径,也定能解决问题,迎来我们人生的绿灯。同学们,本节课就到这里,再见!
粉丝1997获赞8983

各位同学大家好,今天我们进入到选修课程的学习算法与程序设计。那首先的话我们需要先了解一下那如何利用计算机去解决问题。这章节的话主要涉及到两块内容,一个的话就是计算机解决问题的过程是怎样的, 第二的话是算法,他是怎样描述,以及算法究竟是什么。我们先来看一下第一块。首先我们先思考一下这个我们日常生活中在解决问题的时候是怎样去解决的。我们先看一下第一个 求解一元二次方程 x 平方加上二 x 减十五等于零的过程。我们在解这个一元二次方程的时候,我们会怎样解呢? 对,首先我们需要先判断一下这个方程属于什么方程,我们知道他属于是一元二次方程。接下来我们需要思考一元二次方程他的求解方法是怎样的? 对,然后我们在这样的一个求解方法下得出来的 x 可能有一个解,也可能没有解,也可能有两个解,这三种情况,对吧?那我们在获得一个 x 的时候,我们需要在返回验证下获得的这 x 满足不满足我们这个方程的需求。 这个就是我们解预言二次方程的过程。其次,我们再来想一下这个日常生活中的一个问题啊。我们想一下我们课代表在收作业的这个过程中,他是如何收起所有同学的作业的呢? 对,他可能会给大家规定一个时间,所有的同学必须在这个时间段里面把作业交到我这里来。 那不排除就有一些同学这作业就是迟迟交不上来,那怎么办呢?语文课代表可能就会去温馨提醒,这个语文节制时间要到了,你要不要交作业 对吧?那这时候可能有的同学我只是忘记了,那就交给语文课代表就好了。有的有的情况下他就是没有写完的。语文课代表可能需要询问一下为什么没有写完的这些原因什么的。 最终呢?啊,需要数一下我这个所收上来的语文作业数量是不是满足我所有同学都已经交上来了,然后再把这些语文作业转交给我的语文老师。对,这个就是收语文作业的 这个过程。那这个过程的话,我们可以发现,不管是解决这个数学问题,还是日常生活中遇到的这些问题,首当其耳的,我们都需要先对这个问题进行一个分析,确定一下这是一个怎样的问题。 其次的话,就需要寻找解决这个问题的途径和方法是怎么样的。最后呢,解决完这个问题,我还需要验证一下我这个解决问题的成果是不是有效的。对,很一般情况下,我们就分为这三类。那我们再来看一下。

计算机是怎样解决问题的?我们先来思考一下日常生活中我们常见的计算机,比如说这个手机解码过程,上下联铃声,他能够准时想起来他这个过程。 我们先想第一个手机解码。对,现在手机解码的话有很多种方式,比如说啊,从这种数字密码,图像类的密码就画图形的对吧?除此之外,还有说现在比较常用的整点识别指纹识别。 那我们就拿一个例子来取下指纹识别,你觉得他这个过程是怎么样的?想一下你使用指纹识别的时候,前期你先做了一个什么样的工作? 对,在前期的时候,我们先把自己的指纹录入到手机,告诉这个手机我是你的主人,你只能解我这个指纹才能解开你, 对吧?其次,之后的话,手机就很听话啊,这是我主人的指纹,如果我遇到这个指纹的话,我就开锁,我没有遇到这个指纹,我绝对不开锁,对不对? 这就是手机解码的这个过程。其次,我们再来想一下上下铃铃声,上下课这个铃声以前的时候可能人工的,这种打铃方式还不精准,现在我们都是自动化的,这种准时他会准时的打铃,他是怎样的呢?对, 我们上课的话,其实一般就是四十分钟,一节课,课间十分钟。按照这样的一个规律,四十分钟我打 下可令,十分钟之后我打上可令,那他只要一直执行这样的一个步骤,执行这样的过程,他就能够实现我们的铃声准时打起的这样一个效果。 那我们可以可以看到,计算机其实相对于人来说的话,他做的工作更多是重复性的工作,更多是有步骤性的这种工作。那他是怎么样去解决这些问题呢?他其实也是需要先去分析问题。我们看 ppt 哈,首先需要先去分析问题, 其次他在寻找这个解决问题的途径和方法的时候,他需要人类先给他设计一个算法。就是说我们的程序员设计一个算法之后,再把这个算法转变成程序录入进去,然后对这个程序进行一个编译,之后确保一下看他问题能不能 得到解决。这个就是计算机它解决问题的过程。这个过程中有几个点大可能不理解算法是什么,程序是什么,算法是程序吗?对,这就引出了我们下一个要探讨的问题,什么才是算法。

按照哪一些步骤做绘制正多边形这样一个小程序,我们一起来体验。那么绘制正多边形的这个小程序是个什么样的结果呢?我们可以一起来体验。 输入正多边形的边处,这里是正多边形,我们认为可以输多少?输个六吧。 然后呢边长一个小,大一点的一百二,看得清楚一些,回车,这个结果呢?看到没有?在这里,在这里啊,刚才有个人我还没 看清楚,那我们再看一遍绘制正多边形这一个程序,我们打开它很方便,我们观察这里边数呢?假设刚才是六,我们是呢八,然后 输入边长还是一百二,然后回车, 看见了绘制过程了吗?好,退出。现在我们就以这一个小程序为练,一起来看一下 这个计算机编制程序解决问题的一般过程。绘制正拖边行 小程序的设计就是这个项目,那么这一个设计他有哪一些步骤呢?嗯,在这里老师先就我的经验跟大家提醒一下,我们一起再来体验。第一个首先要出现线索,像刚才我们正。

这一节我们讲一下必修一第二章,第一节计算机解决问题的过程,这一节中的最强大脑游戏的程序解读,下面我们运行一下程序 显示规则编号及 o 品名称,延时十秒钟, 下来就是清屏。他车道的第一勾平是铁观音,铁观音的编号是七,输入回车毛笔的编号八回车橙子的编号啊回车柚子的编号 五回车宣纸的编号九回车。 好,这样呢,他就显示了答题结构,我们一共答对了五次, 我们看一下他的原程序。首先呢,导入了三个模块,分别是随机速模块 radom, 时间模块 time 和操作系统模块 os 这个成语里面呢,我们稍后还会用到这一个三个模块里面的几个功能。接下来他用 print 语句呢打出了游戏的规则。 接下来程序呢,把这个十个物品存放在一个列表里面,翻过号表示列表的数据结构,列表 的缩影,里面的元素的缩影是从零开始的。接下来把这个列表付给 since 变量,这样呢, since 就是一个包含了十个物品的十个元素的一个列表。 接下来我们用否循环来打印出编号及物品名称, 这里的外积石呢,就是生成一个零到九的一个序列,我们这里注意到这个编号物品的编号和他的序列是一致的, 编号就是序列,序列就是编号,他们是一致的。然后呢,循环十次 dci 去零, sing 是零呢, 就是性实力表里面缩影为零的元素就是苹果,打出来就是零,冒号苹果。接下来 i 取一就是一冒号香蕉。 然后呢就是通过时间模块 sleep 十,延时十秒钟,然后清屏,下面进入答题环节,一开始呢,设置一个变量 n 来记录我们答题的答对的提速,我们促使话是零。 然后呢,用随机速模块里面的三步函数呢,从胜似列表里面随机车五高频形成一个新的表给 tr, 接下来就是循环结构,从 tr 表里面依次取随机抽到五个品,假如我们第一次抽到的是香蕉 i 呢,就代表香蕉, 用英普特函数呢,提示我们输入内容,这里的 i 就是香蕉,香蕉的编号是将来我们把输入的答案付给变量,这个 i i 应该是 onser, 你答完之后呢,他程序还要进行一次判断你答的对不对。接下来就是分支结构, 我们判断条件呢就是比如说这个是香蕉,然后呢,我们跟女的答题编号也就跟他的缩影是一致的, 香蕉的编号,假如你打的话,你打零的话,那么我们根据你的编号啊, sing 四零,我们找到的物品呢,是苹果,说明你打的不对, 这两个不能答的不对的话呢,也就无法再进行累加加硬,只有你答对的话才能进来加一次。 然后呢,再次取 t r 列表里面的第二个物品,再次出题作答啊,我们还是根据你的答案, 从信息列表里面找下他对应的物品是不是我们问你的物品, 如果你答对了就加一,这样出了五道题之后退出循环,输出你的答题结果,爱你。

欢迎大家回到和老宋一起学心理技术,今天我们来一起来看一看计算机解决问题的过程。 计算机解决问题的一般过程,我们一般把它分成四步,分析问题、设计算法、编写程序和呃,调试维护。 这个不要把计算机解决问题想当然想成哎,只要编程序就可以了,但是我们为了把一个程序写好,必须分成几步啊?分析问题,设计算法、编写程序,然后调试维护, 下面我们来来看一下这几个过程啊。 呃,首先我们了解什么是算法,算法是什么?算法就是解决问题的方法和步骤啊。算法有几个特性, 一个叫做有穷性,也就是说,呃,你能算得出来的,如果说他有无限不,哎,根本就没有结果的,这就,哎没有意义了。另外有确定性哎,不是一个什么可能都有的,对吧? 那么还有一个叫做输入项,但是他可以是零输入啊,没有任何输入,但是输出项一定要赢的。 另外一个最后一个很重要的就是说啊,需要一个可行性,也就是说是有效的。好,我们下面看描述算法 有什么方法呢?第一种方法是自然语言或者是流程图。什么是自然语言呢?就是我们使用日常生活中学习的语言,比如说汉语啊,英语啊等等,这些都叫做自然语言, 那么最大的特点就是容易理解,但是也有问题。什么问题呢?这个表述有的时候比较啰嗦啊,所以说为了更准确的来描述这个问题,我们有的时候用流程图, 呃,不光在编程的时候用在很多事情的步骤上,比如说到外面办事,大厅办事的时候,人家为了清楚的了解办事的步骤,也可以画一个什么流程图出来,他是算法那个图形化表示的方法, 目前呢,它是也有个同一代标准的,我们看一看同一的标准是什么?那么首先它有一个中指框,开始或者结束的时候采用这个圆角举行, 用这个平行四边形表示输入和输出,也就说你在程序中说要输入或者输出的时候,要平行四边形, 采用这个长方形表示负责和计算,也就是说你在里面做一些自行处理工作的时候,就用这样的图形。 另外一个重要的判断,这个判断就这个条件啊,他有两个出口啊,一个是条件成立,怎么样?条件不成立出口我们采用的是菱形,这几个基本的图形 清楚啊。然后我们看算法呢,三种基本结构,一种叫做顺序结构,一种叫做分子结构,一种叫做循环结构,所有的算法呢,都是这三种结构重合而成,那么无论哪种语言都是这最基本的三种结构。 首先看什么是顺序结构,哎,从上往下依次的执行英语句成为逗逼,对吧?比如我们这边计算两个数的和 开始,然后输入两个数,分别给变量 a 和变量 b, 对吧?然后计算 a 加 b 的值,并且把这个值给 c, 然后输出水,最后结束,这个就是一个从上到下的一个顺序结构啊,哎,没有任何变化,从上往下一条一条的走 啊。第二种结构叫做分子结构,分子结构跟刚才一点不太一样的地方在哪里?他这边有个条件,不是一条说往下,而是有了一个分子,当条件满足的时候我们执行。哎,这边写错了啊, 当条件满足的时候只行一个框,当条件不满足的时候,只行另一个框,两条路只走一条,这就是一个分支机构。比如说我们这边我要猜数字啊, 首先要输入,还记得输入用平行字变形,这边就有那个菱形,判断是不是等于八, 跟你讲,老子是不是写错了,多写了个等于,写了两个等于的啊?这个我们在后面讲啊,这边就是应该写两个等于, 当如果你输的数恰好是八的时候,就输出,恭喜你答对了,而如果说输错了呢?不是把不等于把,那我们这边就会输出一个回答错误,那么恭喜你答对了,这条路就不走了,就走了另外一条。哎,这就是一个分子几个。 那么还有一种结构叫做循环结构,循环结构是什么意思呢?是重复执行这部分内容,哎,重复执行只要满足条件就不停的做,不满足条件呢就退出来啊,这就是循环结构。 循环就跟我们这边一样,拆数字啊,比如说如果数字不等于八十八的时候,请你重新输入,给你很多次机会输入,一直输到什么时候位置呢? 一直输到你恰好猜的这个数等于八十八位置,所以这部分就是反复制型的部分。哎,这就是种结构,这叫做循环结构啊。 那么问题的解决我们来看一看,那么流程图可以对算法进行描述,但是流程图不能直接运行啊,那我们需要程序设计语言来实现算法。程序设计语言有哪些呢?我们看看它的发展史, 最早是机器语言啊,有二点至零一代码指定构成,计算机能够直接识别,但是呢, 这个学习比较难,记忆或者理解都很困难,容易出错,效率低。那么为了提高效率,我们想做的会边缘采用符号化的 机器语言,采用英文驻地词这个代替英文指令,然后再翻译成机器语言,然后才能被识别,这过程比较复杂, 那么发展到现在达到了高级语言,他更接近我们的自然语言,会依赖任何的计算机系统,容易理解通用信号, 比较流行的有 cc 加加, vb 加入,还有拍摄,就是我们下面要学的拍摄就是这个。呃,高级语言哈,这是计算机的发展史,你要 我们要记清楚,把记者记语言的发展词啊,程序,机器语言,汇编语言,高级语言,这样的顺序要记住啊。呃,今天我们就讲到这下课。

大家好,这节课我们来学习用广度优先搜索算法来解决民工问题。 首先我们来看一下问题描述,民工由 n 行 m 店的大员可组成, n 和 m 都小于等于五十, 每个单元格要么是空地,要么是障碍物。现在请您找到一条从起点到终点的最短路径长度。 我们看右边这个地图,他的起点在第一行第一列的位置,终点在第四行第三列。图中蓝色区域表示的是空地 可以行走,黄色区域表示的是障碍物不能够通行。现在要我们求起点到终点的最短路径长度,我们来看一下该如何用广度优先算法来求解这种题型, 我们来演示一下。首先我们现在在起点的位置,我们看一下算法,第一步,将起点入对,第二步,对手结点,可扩展的点入对。 好,我们首先将起点的位置,第一行第一列的信息以及他的步数,因为是起点位置,所以他的步数为零,我们将这三种信息把他 入队,就是第一行第一列,他的步数为零, 那么我们来看一下他可以扩展的点有右边和下面,那么我们现在约定他的一个顺序为顺时针去拓展,就是右下左上, 那么很明显他右边这个点可以到达,可以经过一步可以到达,那么下面这个点也可以通过一步到达,那么我们需要依次将这两个点进行入队。 好,我们来看一下,首先将起点入队,就是一一零,然后将这个起点拓展的点也需要入队,就是我们右边这个点,那么右边 这个点他的信息为第一行第二点。好,我们把他的信息给填进去, 好,就是第一行第二点它的步数为一,那么同理将下面这个点也进行入队, 那么是我们的第二行第一列 他的步数为一。那么我们来看一下,这个时候起点把他所拓展的点都已经拓展完了,所以我们这个时候呢,需要将起点给出对,也就是将我们这个对手的节点进行出对, 好,我们来搓对,那么现在对列里面还剩于两个节点元素,好,我们把它给放左边一点点, 那么我们现在再回到队列里面,将对手可拓展的点进行入队, 好,我们来看一下,这个时候对手是我们的这个点,就是第一行第二点 就是我们的这个点,那么第一行第二列这个点它可以扩展的点就只有一个点,就是往下面,因为右边是障碍物,不能够通行, 所以我们这个地方呢,通过他所到达的点是我们的第二个步骤第二步,所以我们需要将这个点 进行入队,就是第二行第二列,好,我们来进行入队, 好,这个时候是第二行第二列,他的故事为二,那么因为这个时候我们将这个点他已经拓展完了,所以我们需要将对手元素进行出对, 那么我们现在呢?对列里面还剩于两个元素,那么我们继续按照这样的思维,将对手元素第二行第一列,就是我们的这个点进行拓展,那么他只能够往下拓展。 喂,第二步好,我们将这个点进行入队, 好,这个是为第三行第一列,它的步数为二,那么同理我们需要将对手元素进行出对,因为这个点已经拓展完毕,所以需要 出对,那么大家还需要明白的是,我们一定要将入队的点设置为已经访问, 这一点很重要。好,我们继续来看一下,这个时候呢,我们的对手元素就是我们的 第二行第二列。好,我们还是把它放左边一点点 好,我们来看一下第二行第二点就是这个点,那么这个点可以扩展的点就是 you 下好,我们这个时候呢,就是三三,依次将这两个点进行入对好, 就是第二行第三列。三,我们再加 好是第三行第二点,他的护士为三。那么同理将这个点进行出对,将对手元素进行出对 好,那么现在他的对手元素就是我们的第三行第一列的点就是我们的这个点,那么他可以扩展的点就是我们的往下拓展为第三步 好,我们将这个点进行入队, 那么这个时候呢,就是我们的第四行第一列,这个点它的故事为三。同理,将我们的对手元素进行出对,那么这个时候对立里面还剩余三个元素。 好,我们继续来看一下对手原数为第二行第三列, 所以是这个点,那么他可以扩展的点是右边这个点,所以呢将这个点入对 好,是第二行第四列,它的步数呢为四。那么这个时候我们需要将对手元素进行 出对,好,我们再来看一下他的对手元数为第三行,第二列就是我们的这个点,那么这个点很明显不能够拓展,所以我们需要将他进行出对。 好,我们再来看一下,对手元数为第四行,第一列就是我们的这个点,那么这个点可以往下拓展, 就是第四步。好,我们将这个点入对, 好,就是我们的第 五行第一列,它的步数为四,那么同理我们需要将这个点 进行出对,因为他已经拓展完毕。好,我们再来看一下,对手原数为第二号第四点, 那么为这个点,那么这个点很明显可以往下拓展和往上拓展为第五步第五步,我们需要依次将这两个点进行入队, 好,将这两根入队,分别为我们的第三行第四列为五。 好,还有一个 第一行 第四列,步数为五,同理我们需要将这个点进行 出对,那么我们现在对手原数为第五行第一列就是我们这个点,那么它可以扩展的点为右边这个点就是我们的第五步。好,我们需要将这个点呢入对, 好,就是第五行第二列,它的步数为五,然后需要将对手元素进行出对,好,那 我们再来看一下,对手元数为第三行第四列这个点,那么很明显他可以往下进行拓展,所以呢,我们需要将往下这个点进行 入队,所以是我们的第四行第四列,他的一个部署为 六,所以这个思维六按摩桶里加这个对手元数出对。 好,再来看一下,这个时候对手原数为第一行第四列,那么第一行第四列为这个点,这个点肯定不可以拓展,所以我们需要将这个点进行出对,好,那我们再来看一下,这个时候 对手原数为第五行第二点为这个点,那么他可以拓展的点为右边这个点。第六步。好,我们需要将这个点入对, 好,就是第五行第三列,它的步数为六,然后我们需要将这个对手元数出对, 好,那么我们这个时候他的对手元素为第四行,第四列为这个元素,那么他可以拓展的点为左边这个点,所以是第七步, 我们需要将这个点进行入队。 好,这个时候 是第四行第三列,他的步数为七步,我们再将他的一个对手元素进行出对,哈,那么我们再来看一下,这个时候他的对手元素为第五行第三列 为这个元素,那么很明显他不可以拓展,所以我们需要的将他进行出对, 好,那我们再来看一下,这个时候对手元数为第四行第三列, 那么很明显我们的对手元素和终点位置是一模一样的,所以我们已经达到了终点的一个位置,所以程序就结束。好,我们再来看一下这个算法的一个秒数。 第一步,将起点入对。第二步,对手节点可拓展的点入队,如果没有可扩展的点,将对手节点出对,重复该步骤,直到 到达目标位置,或者对列为空位置,这就是我们的一个详细的演示过程,我们来看一下代码该如何去实现。

当我们的目前为止啊,我们已经将这个呃从事的这三种基本最后一步说了啊,那么我们先对之前学过的知识进行一个简单。 好,我们来看一下啊。首先第一个啊,他描述的是什么结构呢?呃,那么呃 为了这个公平起见呢, 啊哈哈哈哈。 啊对顺序啊,请坐啊。那么第一个这个刘翔平呢?他两次就是顺序结构啊,顺序结构呢,是我们这个视频是 流程里面呢啊,包含了一种最基本的节奏啊,就是我们去执行都是按顺序进行的对吧?好,那么我们再来看一下啊。第二个,那么这个流程度啊,描述的是什么节奏啊? 好好,不错啊,不错。那么这个呢啊,就是在讲那个 d n i 计算的时候,就像那个用麦吗?对,那么这个问题对吧?那么这个呢?就是我们的选择节奏啊, 通过这个调节风,然后呢,呃,会有不同的选择,实行不同的工具。好,那么我们再来看一下第三个结构,这个结构呢是好在行为, 哈哈哈哈。那么我们来看一下啊,那么这个呢?呃,就是我们这个 这两个星期啊,一直代表的这个循环结构是吧?好,那么我们已经将这个程序设计的三种结构结构学完了,那么我们就可以根据在 来完成很多这样的程序了。那么今天我们要做一个什么样的程序呢?啊,就是呃,要做呃,我刚才用到的这个,这个机点名气啊 好。那么如果我们要做这样的一个集体器的话,呃,我们应该怎么做呢?请律师要知道 用这个计算器解决问题的这个基本的步骤是什么?好,我们先来看一下。首先我们必须要先分析问题,不要分析我们到底要做一个什么样子的程序啊。 那么分析问题之后呢,我们就可以啊把它设计出相应的算法是吧?那么根据这个算法呢,我们就可以将它啊转化成相对应的这个程序,就可以开始编程了 啊。那么写完程序之后呢,我们就可以一次就能够成功的。所以呢,还是要不断的啊,运行,调试,修改啊。那么经过这几个步骤呢,我们才能够完成一个完整的程序。好,首先我们先来看啊分析问题。 嗯,接下来呢,给大家几分钟的时间,请同学们打开桌面上的呃围巾,点燃气啊,一个城市。我们就帮大家说说话了。那么请同学们好观察体验一下程序,并且思考一下这几个问题。 有一个协议点一切 啊,就是 桌面上有一个装饰摄影。 好 好,你们在体验这个吃的时候啊,顺便。

计算机大学生寒假在家最应该学习的四门课,不管是考研还是工作都很有用。第一,计算机组成原理。当面咨询你电脑问题的时候,答案就藏在这门课里面。视频可以看哈工大刘宏伟。第二,操作系统。工作中遇到了问题,操作系统基本上都能帮你解决。视频可以看清华大学项羽、陈宇和哈工大。 数据结构与算法程序等于数据结构加算法,在笔试和面试的时候也是重点考察方向。数据结构可以看青藏大学王卓和浙江大学陈跃。算法题的话可以刷 扣的。第四,计算机网络在工作时使用频率还是挺高的,毕竟 cld 工程师总是在处理 api 相关的业务。视频可以看博客大教书匠计算机网络微课堂和网道考研。

什么是一个好的算法,或者是一个好的计算过程?这件事并不容易回答。我们也可以能从不同的侧面听到过不同的回答。 比如说他必须是刚才说的正确的,他应该有足够的能力来处理各种规模的,包括可能是一些特殊,也可能是一些一般性的问题,实力也可能是退化的或正常的输入,以及所有合法的那些输入。 我们说这确实是好的算法的一方面,但是很遗憾,这不是我们这里最在意的。也可能有的人会提到,我们不光是要对合法的输入能处理, 对不合法的输入也需要能够处理,也就是所谓的需要见证。很遗憾,这部分也不是我们这里最强调的。虽然我们在做题的时候,在完成一个数据结构的时候要考虑这些,但是首先考虑的并不是这些。还有一部分呢,是说一个好的 程序或者好算法需要是可读的,这个也是很重要的一方面。虽然也不是我们最重要的方面,但是我们要强调这一点。所谓的程序是你作为人去指挥计算机的途径,也是你和计算机相互沟通的一个渠道。 我们说这很重要是对的,但不完全是这样。我们说还有一方面,也就是说程序语言实际上像自然语言一样,他也是人与人之间打交道的一个很重要的部分。所以可读性是非常强调的一条。 也就说你所设计出来的算法,在形式上必须是结构清晰的,所有有的变量和有些有羽翼的对象的命名都应该是准确的,同时还应该准备足够多的注视宝贵的文档等等,这个很重要,但还不是最重要的。那我们这里头最最重要的到底是什么呢? 说最最重要的,其实就是这样两个字效率。也就是说,我们需要不仅能够指挥计算机进行计算,而且希望计算的速度要尽可能的快,同时消耗的资源,比如空间的资源要尽可能的少, 既要马儿跑,又要马儿不吃草,做不到。我们这里所努力的方向是既要马儿快快跑,又要马儿吃的少。有一个很著名的公式,大家都应该听过,也就是说 算法和数据结构的结合就可以得到解决问题的程序。那正如我们刚才所说的,程序未必能够有效的进行计算。 所以这里狗尾虚叼对这个公式略做一点大胆的修改。我们说,在算法和数据结构这两个因素都兼具之后,我们还需要 使得它具有效率。而前提是这两部分不是一般的简单的堆砌,而是能够有机的融合结合。只有在这样的情况下,我们才能够写出高效的程序和算法,从而高效率的来完成计算 这样一个过程。这正是我们在这一节里希望告诉大家的几个重要概念及观念。

这个里面把这个,把这个拧开,把这个线解开吗?你说呢?你觉得呢? 这不一扭不就掉了吗? 这个叫什么呀?主板后面电源二十八四十的,是不是听到了?没有? 这个,这个叫啥?是不是一般的数据线,对吧?要不然弄个嘴角压弯了是吧?这个是把这个盖子打开好黑。嗯什么的好,推进去再往外, 大家啊,这才对的。这个是啥 啊?螺丝我出来了, 这个叫什么呢?硬盘,座驾罗定。 这是加啥举报的。哪个报的?一般里面有啥? 有谁啊?他有谁?他有谁?

好,这个同学们大家好,欢迎回到这个家的课堂,那么这节课呢,我们来继续跟大家讲解这个 gdp 用来解决我们啊系统中那个比较常见的问题,那就是我们的系统不知道啊,为什么 不知道是由什么程序造成,导致了我们系统的 cpu 啊,占到了百分之百,在运行的时候,也就说我们的 cpu 啊,一直处在非常忙碌的状态啊, cpu 执行的时候呢啊,占满了,占了百分之百,那么我们就要找出这个原因是什么,就说是由哪个程序造成的,对不对 啊?这种问题呢,实际上在我们的这个啊,实际的项目工作项目中呢,是经常常见的啊,突然某一天我们收到这个报警短信了,哎,说我们的某一台机器对不对 cpu 占满了, cpu 在不断的这个执行啊,不断的这个运行,导致我们 cpu 的这个达到了百分百分之百啊,因此呢,我们就必须要针对这个问题提出一个解决方法啊,找到出问题的啊地方。 我们遇到这种问题的话,实际上呢,我们一般啊都是按照这种思路来解决的,就说首先呢,我们是要找出这个系统中有哪个程序啊,占了我们这个 cpu 的大部分运行时间,找到,先把进程找到 啊,然后找到进程之后呢,我们再来确定,哎,这个进程中的哪一个县城啊,占据了我们 cpu 的大部分这个执行事件啊, 最后呢,我们再进入这个县城啊,利用我们之前学习到的 gdp 调试县城的方法啊,来定位这个县城究竟在什么地方频繁执行这个单 啊,所以呢,我们是这样来啊,这个解决这种啊, cpu 占百分之百,运行的时候占百分之百这样一一个问题的啊,这是一个常见的思路,因此呢,我们在啊解决这个问题的时候呢,我们当然就要进入相应的这个系统, 然后呢我们要啊,结合一个 top 命令,先找到相应的进程和进程中的线程,然后呢再进入这个用 gdb 进入这个线程啊去定位问题, 所以呢,那么现在呢,我们就开发出了这样一个例子啊,就写了这样一个例子,那么这 这个例子呢,实际上它就是在运行期间会导致我们这个 cpu 啊执行呢会占百分之百啊,那么我们现在呢,就来给大家演示一下啊,给大家演示一下我们是怎么去定位这个问题的。首先呢,我们 啊,这是我们这个 cpu 占百分之百的这样一个项目啊,这是我们写的代码,现在我先不给大家看这个代码,我们直接把这个程序运行起来啊,然后呢我们再来观察它, 来大家看一下啊,我在这个地方我来直接运行 cpu 啊,一百 demo 这个程序 啊,运行起来之后呢,我们在另一个终端上,我们来看一下,我们运行一个什么呢?运行一个 top 命令最大,哎,大家看一下,运行了 top 命令之后呢,我们这个这个 突破命令,他默认就是按 cpu 来进行排序的, cpu 的这个利用率来进行排序的,但是很显然通过这一列我们就可以看到 cp 我们的 cpu 已经达到了百分之百, 哎,对应的进程的 pad 是二五二,说明呢啊,这个进程的名称叫 cpu 一百点五,对不对?是这个进程导致了我们的 cpu 占百分之百啊,运行的这个利用率已经达到了百分之百, 就说明这个 cpu 啊,一直非常忙,一直在执行代码,是不是这个对我们普通的这个系统来说是不可能的,一定是某个程序出了问题了 啊,我们的 cpu 不可能就是说啊,长期处在这样大的一个运行这个状态,对不对?好,那么我们确定了这个二五二 cpu dem 一百 demo 这个进程造成的啊,那么我们现在呢,要 需要进一步确定二五二这个进程中哪个线程造成的?是不是?哎,所以呢,我们先按 q 退出这个命令,然后呢我们再执行一个啊,带上一个参数叫 ph, 大写的 p, 小写的 h top 减 ph, 后面跟上我们这个二五二这个什么呢?这个进程的 p i d, 然后回车啊, top 啊,拖不见 h p, 不是 p h h p, 二五二回车。好,大家看一下啊, 在这个里面我们就看到了,实际上呢啊,我们二五二这个进程中,你看这个线程他占的 cpu 的啊,利用率达到了百分之九十九点九,说明是他造成的,那么这个线程的 id 是什么呢?是二五五啊,是二五二五二这个进程中 县城 id 为二五五这个县城造成了我们 cpu 的这个啊,占用率达到了百分之啊九十九点九,说明是他造成的,是不是?现在我们已经大致了解清楚了,好,现在我们退出这个突破迷,你现在我们直接上 gdp 啊 touch, 后面跟上我们这个进场的 p i d, 那就是什么呢?就是二不二,是不是二不二推车, 好,大家看一下啊,现在我们已经啊用 gdp 而踏启到我们这个,呃,进程上 啊,啊,踏起了我们这个进程上,现在呢,我们啊,比如说我们可以直接来 infra 的一下,就可以看出我们系统中有多少个现成,是不是?然后我们找到二五二这个现成,你看这就是啊,我们来看一下,就是,呃,我们在上面看, 看到主要是二五五这个线程,是不是,所以呢,我们要在这里面找到二五五这个线程是谁,是他,是他 看到没有,是这个线层造成的,所以呢,我们就要啊切换到我们的这个四号线层去,二五五对应的这个线层的 id 是四,所以呢我们用 sprite 四进去,进去看看,进去看看之后呢,然后呢我们来看一下这个 bt, 看一下他运行的账, 但是呀,这就是我们啊这个线,这个,呃,进入四号现场看到的这个运行的站,这个站里面呢,我们看到啊,这个地方是我们 mt 点 cpp, 这是我们自己的代码 啊,我们原文件中代码是不是在这个地方呢?我们看一下,我们看一下这块啊,就是 m t 点 c p p 中的第十二行啊,对应的是二,对不对? 我们用 f 迷你 f 跟二看一下这个位置是什么,哎,我们就可以看到啊,在 mt 点 cpbd 第十二行就是 print thread 这个线层里面,哎,恰好十二行的这个地方在进行外循环, 那么看到这儿地方,我们就大致的清楚说明,可能在这个县城里面这个地方是一个循环,那么这个循环有可能就是一个什么,就是一个死循环啊,或者说我们在这个循环里面没有进行一个啊睡眠, 所以呢导致了这个死循环呢,这个循环呢在这里一直空转,是不是啊?导致了他啊,使得我们的 cpu 的这个利用率达到了百分之百啊?我们看一下,所以呢我们 大概明白了这个原因了,所以呢我们啊,现在呢,我们就退出调试,回到我们的这个代码中来,我们来看一下这个结果啊, 我们把这个新程序退出,然后呢我们看一下 m 七点 c p p 中的第十二行,是不是啊?幺二,哎,看一下,在这, 这其实就是一个新的线的一个 printfree 的这样一个线层,在这个线层里面呢,同学们看一下,在十二行就这个地方啊,这个地方恰好是一个外循环,而且这个外循环里面确实是在一个,做一个什么呢?做一个 空转,对不对?这个地方是一个空语句,所以这个地方这个循环一直在这啊执行,一直在这执行, 所以他造成了一个死循环啊,这个循环呢,导致了我们 cpu 达到了百分之百啊,这个执行的时候利用率已经达到了百分之百,是不是?这是不被允许的,你看这样一来,我们通过 gdp, 那我们先通过托普迷你 找出了系统中占用 cpu 过高的进程啊,然后再次通过 c 这个 top 找出了这个系统中啊占用 cpu 过高的线层, 然后呢我们用 gdp 进入这个进程啊,切换到对应这个线程中,就可以定位到这个线程中具体的代码, 哎,然后我们回到原代码,看到这一行的代码,我们就基本上就可以把这个问题搞清楚了,是不是搞清楚了之后呢?那我们要做一个什么事情呢?像这种死循环的话,我们其实呢啊可以在里面加一个睡眠的语句 啊,加一个睡眠的语句,我们把这个空语句现在把它啊暂停啊,把它取消掉,然后我们再编一下,哎,这个时候呢,我们来执行一下,好,我们通过 gdb 的调试找 到了这个系统 cpu 啊利用率达到了百分之百,这样一个问题所在,是不是并且呢我们做出了修改,修改之后,我们现在啊再来运行一下 top 命,哎,你看这下的话,那么我们这个 cpu 一百点五, 哎,他就正常了,是不是他的 cpu 这个占用率就变得非常低了啊?基本上我们看不出他的这样一个效果,但是这个地方我们运行 top 命令的话,哎,他实际上他可以按照 啊 cpu 的占用率来进行排序,也可以按照内存的占用率来进行排序,这是内存就是 cpu。 那么我们怎么做的呢?你可以按 x, 在我们键盘上啊,按下 x, 他会 以高亮的形式显示,告诉我们哪一列是目前我们排序的标准,你看我们按下 x 这一列就变亮了,所以呢,这 也是我们现在排序的标准啊。默然,他就是按照 cpu 占用率来进行排序的,每个进程执行的时候占多少 cpu 是不是?然后我们再按 x, 他就按下去了,但我们还可以按 shift 和左箭头号和右箭头号啊, 就是大大于号,小于号,跟我们键盘上大于号小于号来切换这个排序的列,你看我现已经按下了这个,这个大于号就是左箭头号啊,就是右箭头号的话, 按下来右键的话,所以呢,这个时候呢,哎,我们按下 x, 你看他就按照 mam 这一列啊, mam 这一列已经高亮了,所以他按照内存的这个占用率来进行排序了,你看啊,这个进程,这个进程啊,占用的内存的这个 百分比好,比如说我再按一个大于符号,哎,他就按照时间来进排序了,看见没有, 那我按一个小于符号,哎,他又回到我们这个面目了,对不对?再按一个小于符号呢,哎,他又这个切换到我们这个 cpu 这个地方来排进排序了,所以 top 迷你进排序的话,我们可以通过 x 按下 x 键和按下大于号和小于号来进行切换 啊,按下 s, 我们可以看到目前是哪一列作为我们这个系统资源的一个啊,系系统数据的一个排序这个标准,然后按大于号,小于号呢,可以切换这个排序的这个列数,是不是? 好,那么同学们大家看一下这个问题呢,我们啊这个 c 程序执行的时候 cpu 占百分之百,这种问题呢,我们就通过这样一个啊,非常方便的找到了这个问题所在,并且呢,哎,得到了解决,对不对? 好,那么这就是我们给大家演示的这个啊,我们系统中发现,如果我们的 cpu 啊,它的利用率达到了百分之百的话啊,我们怎么去啊?以一个什么样的思路啊去解决这个问题, 我们就给大家讲到这,主要的就是结合 top 命令和这个我们的 gdp 啊,来进行这个定位的,对不对?好,那么这节课呢,我们就给大家讲到这啊,如果同学们想后期更多学习资料,欢迎访问我们官网部的各点 com, 或者做国家 it 点 com, 欢迎通过 qq 三幺七九零八九九五联系我们。同学们,我们下次再见,拜拜!

网络安全学习,独立思考过程很重要啊。比如说我总秒数有多少秒了,我就说六百秒,六百取六十的膜,余下的是不是就换算出来的?这个秒数能够算的出来?除以六十的话,满了六十是不是就算分钟了? 分钟满了再除以六十是不是就是小时了?所以说,亲爱的朋友们,我现在不剧透哈,你们要自己去思考。我们说了课前讲和课后讲,这有很大的区别。 那有同学说老师,我这个没思路,你为啥不给我讲了,我再去做,对不对?你要非等我做了,你看脑壳的头发都掉了好几根哈。做好了这个第第二天你再来讲来。亲爱的朋友们,思考这个过程是不能少的。