导图社区 编程程序设计方法思维训练教案思维导图
编程程序设计方法思维训练教案思维导图,一张图带你完全了解相关内容,包含了字符流、字符流的拷贝、其他流、设计模式。帮你提高效率,赶紧来试一试吧~
编辑于2023-02-22 23:24:25 广东编程程序设计方法思维训练教案思维导图
第1讲 前言
自我介绍
我的QQ号
QQ教学群号
从今天开始我将给大家带来一个系列课程:课程的名字是,。。。,今天是第一讲
既然是一个系列课程的第一讲,当然这节课要把整个系列课程设计的初衷给大家做一番交代
背景介绍
不会编程序
老师教编程的时候也很少讲方法
学习方法不对
注重语法的学习
应付期末考试和计算机二级考试
编程方法之类的知识在教科书上讲的也很少
很多人学网络课程不学开发课程
原因学不会
其实就业岗位开发比网络管理的多
开发和管理的比喻
开车和造车
编程锻炼的是数学思维、逻辑思维和理性思维
对提升科学素养是很有必要的
课程目标
提高编程兴趣
训练思维方法
对编写程序有思路
让大家对社会现象有一些深入的看法
课程特色
不讲语法,只讲方法
2/8原理
C语言语法可以参考51CTO上面武永亮老师的课程和成少雷老师的课程
show 一下课程页面
武永亮老师和成少雷老师介绍一下,自己和这些人的关系,给自己宣传一下
VC++ 6.0 开发环境,可以看我的课程
show 一下
或者是Visual Studio.net 2005以上版本
show一下
从一个有趣的编程问题出发
说明一下这些题目的来源
show 一下这些题目
揭开程序设计的神秘面纱
课程结构
程序题(尽可能的有趣)
分析问题
show一下
解决问题
方法总结
方法在现实生活中的应用
教学进度计划
一周录一个视频
问题反馈
课程的讨论区
QQ教学群
下一讲预告
第2讲 法老的金字塔
开场白
从程序设计方法到思维训练
大家好我叫王顶
今天给大家带来系列课程的第2讲,法老的金字塔
编程方法预告
这一讲将给大家介绍两个程序设计方法:
分别是:伪代码法和分解法
至于分解法和伪代码法到底是怎么回事?
别着急,我先给大家看一个具体的编程问题
等咱们开始写程序时,我再把这两个方法介绍给大家
程序题
程序题目的名字叫:法老的金字塔,是不是很有意思啊?
我们看一下问题描述
show 法老的金字塔题目第一关、第二关、第三关
  
因为第一关很简单一条打印语句就可以搞定,所以我们把问题的焦点集中在第二关
这样一个编程题目,大家拿到后有思路吗?
可能程度比较好的同学,很快就能写出程序
但是也有很多同学看到题目后无从下手
伪代码法
那好,现在我教给大家程序设计的第一个绝招,伪代码法
伪代码法顾名思义写的不是程序代码而是伪代码,假程序
伪代码有很多写法,我们就用汉语写好了
既然是自然语言写的代码,计算机或者集成开发环境一定是不能理解了
没有关系,这个代码本来就不是给计算机看的,伪代码是给人看的,是给程序员看的
伪代码是用来描述程序思路的
从软件工程的角度来说,写伪代码是在做详细设计
todo 好,现在我把程序的伪代码写出来
为了保证程序能够正常运行,我们把伪代码写到注释里
伪代码的好处是,我们把原来的一个大问题变成了n个小问题,每一个小问题的复杂度降低了
这样我们在一个时间单位里只要解决一个小问题,而不是面对一个完整的复杂问题
伪代码写好了,下一步干什么呢?
伪代码写好之后,我们就给伪代码写真实的代码,如果感觉写真实的代码还有困难
则继续写伪代码,直到你感觉能直接写出程序代码为止
todo 好,咱们现在把输入部分的代码写出来
是不是打印金字塔部分的代码还是比较复杂啊
下面我给大家介绍一下分解法,其实伪代码法和分解法这两个方法是分不开的
分解法
分解就是把一个大的问题分成小的问题
这个方法其实在介绍伪代码法的时候已经隐约的提到了,现在我们把它正式提出来
其实这个方法很简单
我经常给我的学生说,我说大学的每一门课程里面都有方法学,只是我们不知道总结
不知道提炼,我们都学过高等数学,高等数学里面主要讲微分和积分,合起来称作微积分
现在我们工作了,如果微积分公式记不住没有关系,因为,很少有工作场合需要计算一个微分或者积分
但是微分的思想很重要,那就是分解
积分的思想就是聚合
这些思想就是方法
todo 好,我们来看看金字塔这部分伪代码怎么实现
我们来对问题描述做进一步的分析:
UI
GUI
CUI
CUI 的本质就是字符串
金字塔的每一层都是字符串
伪代码细化1
进一步分解:每一层的字符串都是由连续的空格和连续的*组成
伪代码细化2
进一步找数学规律
完成代码的编写
方法总结
第3讲 旅游良伴(上)
开场白
PPT第1页
从程序设计方法到思维训练
大家好我叫王顶
今天给大家带来系列课程的第3讲,旅游良伴
编程方法预告
切换到PPT第2页
这一讲将给大家介绍两个与程序设计相关的话题:
分别是:数学与编程的关系以及程序结构
在PPT的T1和T2上打勾
这两个话题虽然不是具体的编程方法
但是通过这两个话题的讨论可以提升我们对程序的认识和理解
有助于我们更好、更快的写出程序
咱们还是先从一个具体的编程问题入手
程序题
切换到PPT第3页
程序题目的名字叫:旅游良伴,一个很有趣的程序题目
在题目的下面画波浪线
题目总共有三关,这是第一关、第二关、第三关
从PPT第3页,切换到第4页,切换到第5页
今天只讨论第一关
切换到第6页
咱们来一块看看问题描述,故事情节略过,咱们只看具体要求
输入摄氏温度,计算输出华氏温度
在题目上框选重点文字
公式已经给出:
框选公式
大家有编程思路吗?
数学与编程
这个程序比较简单,我就直接把代码给出来,咱们一起看一下程序
切换到VC 6,运行一下,输入212,查看结果
main是程序的入口函数,里面定义了一个变量f,表达式计算摄氏度,并输出
框选代码三个颜色:红、绿、蓝
下面跟大家聊一聊数学与程序的关系
切换到PPT上,在标题下面画波浪线
我经常在上课的时候问学生
程序设计里有变量、运算符和函数,就像我们刚才看的程序
在数学课程里也有类似的概念
举个例子:y=f(x)具体一点,比如:y=x^2,这里f(x)是函数,x是自变量,y是应变量
PPT右侧空白处写函数,写注解
这个函数我们都学过,这是一个幂函数,函数曲线是个抛物线
请问大家,数学中的变量、运算符和函数与程序中的变量、运算符和函数这些概念相同吗?
很多同学可能会这样想,我的数学是张老师教的,我的程序是李老师教的
张老师和李老师不同,讲的课程也不同,东西能一样吗?
我们学习的东西都是孤立的,没有建立起关联关系,这是我们在学习中经常犯的错误
程序设计中的变量、运算符和函数与数学中的完全相同
这里我提出:同名即同质,质就是本质,名称相同,则本质相同
在“质”下画波浪,在右边写“本质”
数学与程序本质上是相同
其实计算机之所以称为计算机,刚开始研制出来就是为了进行计算
计算是数学里一个重要的话题,大家上小学就学加减乘除四则运算,背九九乘法表,这都是在计算
可以肯定最初设计计算机的人都是数学家
如果明白这一点了,你就会发现所有编程问题里,最好写的一类程序是有数学公式的程序
因为数学公式基本上可以直接转化成程序代码,即,程序公式可以直接转换成变量和运算符组成表达式
我们看一下旅游良伴这个编程题目
切换到VC6
我们把代码稍微修改一下,程序代码确实和数学公式长得很像啊
定义变量c,增加c的复制表达式,打印c 然后在VC空白处写上数学公式 把程序代码和数学公式用两个颜色表示,并框选,画箭头去对比
当然如果我们碰到的编程问题都这么简单就好了,就不需要我开这个系列讲座了
其实很多编程问题,都没这么直接
比如让我们写一个排序程序;比如写一个求积分的程序;再比如写一个人机对战的下棋程序
这些问题有现成的数学公式吗?
大家见过排序的数学公式吗?大家见过人机对战的数学公式吗?
你可能会说求积分有公式啊,但是没有积分的运算符啊,还需要把积分转换成基本的四则运算
因此,这里我把程序按难度分成三类
数学计算,广义计算和人工智能
数学计算的问题是最简单的一类
广义计算的问题就是很多算法课程面要讲的内容
类似的课程有:数据结构,刚才说的排序问题是数据结构中的经典问题
刚才说的,积分的算法在数值计算或计算方法课程里有介绍
其他还有,类似图形学这样的课程里,也有很多算法
数据结构课程我过去讲过,留有完整的课程视频,大家可以在51CTO上找来看看
数据结构里涉及的算法是做软件开发必须要熟悉的算法,这是计算机专业很重要的一门课程
尤其是对于程序员来说
刚才说的数值计算和图形学中的算法还是有些专业性的,不是一般编程能涉及到的
最后一大类程序就是人工智能程序,像我刚才说的人机对战的下棋程序
如果你不学习人工智能的课程,这样的程序你是写不出来的
这种程序的基本原理是搜索,我这里就不详细展开了
为了保证一个课程的时间比较合理,第二个话题“程序结构”我再为大家单独录制一个的视频
第4讲 旅游良伴(下)
开场白
PPT第1页
从程序设计方法到思维训练
大家好我叫王顶
今天给大家带来系列课程的第4讲,旅游良伴
编程方法预告
切换到PPT第2页
这一讲将延续上一讲,继续为大家介绍程序设计相关的第二个话题:
程序结构
在PPT的T1和T2上打勾
这个话题我们将为大家剖析程序的构成
很多同学不会写程序,很大一部分原因是不了解程序,不了解程序的构成
编程问题上一讲已经介绍过了,旅游良伴,这里我们就不再花时间介绍了
程序结构
我们直接进入正题,介绍程序结构
提到程序结构大家可能首先就会想到:顺序、分支和循环,这三种程序结构
这是教科书上讲解编程语法时经常讲的内容,这不是我这一讲的重点
但是我还是要强调两点:
1. 顺序结构是一切结构的基础;
2. 不要认为顺序结构很简单,真正理解了顺序结构,一定会调试程序
关于这两点,我给大家解释一下
第一点,顺序结构是一切结构的基础
为什么这么说呢?请大家看看分支结构和循环结构
是不是在判断的表达式下面都有一个执行的语句块啊,这个语句块就是顺序的
所以我说顺序结构是一切结构的基础
关于第二点调试程序的问题比较复杂,需要专门的课程来讲,这里就不多说了
因为,在第2课,我们讲过伪代码法和分解法
那么大家想没想过,拿分解法,来对程序分解一下?以程序作为分解对象,探究一下程序的构成
本次课程将从两个角度来对程序做分解和剖析
先看第一个角度:语法的角度
从语法的角度,来为大家对程序做一个分解和剖析
我们以C语言的程序为例,请问大家C语言程序最大的组成单元是什么呢?
有的同学可能会说是函数,当然,这里我的答案不作为标准答案
我认为最大的单元是文件
也就是说一个程序是由多个代码文件组成的,当然简单程序一个代码文件可以搞定
一个代码文件就是一个扩展名为.c的文本文件
那为什么说这是一个最大的单元呢?
一般我们写程序的时候,会把功能相关或接近的函数放到一个文件里
就是这个道理,你可以看看C++里,是不是一个类的代码,包括多个成员函数的实现
都放到了一个CPP文件里,其实C语言也可以做类似的封装,只是类似啊
下一层是函数、函数再下一层是语句块
语句块再下一层是语句,语句在下一层就是表达式和运算符以及变量
到这里就不能再分了。
反过来,再跟大家讲一遍,那就是变量、表达式和运算符组成语句
若干语句组成语句块,语句和语句块组成函数,同类函数放到一个代码文件
若干代码文件组成程序
第二个分解的角度:功能的角度
从功能的角度,我们的程序可以分成三大块:输入、运算和输出
因为整个程序是一个main函数
所以,整个程序可以分成这三块,而任何一个函数都可以分成这三块
我们分别来介绍一下这三块
输入
在输入数据前可能要显示提示信息(可以没有)
输入数据
CUI或GUI的用户交互式输入
函数入口参数
命令行参数
文件读取
其他设备
数据合法性校验或断言
每一种输入方式它的代码怎么写呢?大家找一找,把这些代码收集起来积累起来
将来碰到类似的问题就可以重复使用
计算(或处理)
广义计算
狭义计算
算术运算
逻辑运算
关系运算
输出
屏幕打印输出
打印机输出
函数返回值
函数出口参数
文件输出
以上就是第二个角度对程序的分解,程序按功能可以分解成:输入、运算和输出
大家听明白了吗?
可能有同学会问,你说的我都明白,可是了解了程序的结构对写程序有什么帮助呢
我跟大家说一说这个话题的意义,为什么要了解程序的结构
我想问大家,我讲程序的结构时讲具体的编程问题了吗?
换句话说,我从第一节课到现在,我讲的各种方法和各种技术
都是通用的,也就是说不管你写什么功能的程序,你都可以试着
把程序分成三个部分,输入、处理和输出
那接下来的问题就是输入怎么写、处理怎么写、输出怎么写
输入是哪一种输入方式?
类似输入方式的代码你在哪里见过,想想怎么写?
然后实在不知道怎么写的时候,写写伪代码
把伪代码能不能直接写成语句
如果不能直接写成语句
把伪代码再分解一下,能不能再分解成输入、处理和输出
最后能写出语句的时候,是不是需要考虑一下用什么变量和运算符
如果你学会这样思考问题了,你是不是在运用程序构成的知识在思考问题?
方法总结
第10讲 各种方法汇总
M1:伪代码法(第2讲)
M2: 分解法(第2讲)
分类
模拟现实法(第5讲)
现实世界到计算机世界的映射
数学模型
T1:数学与编程的关系(第3讲)
三种程序的难度差异
T2:程序结构(第4讲)
输入
提示信息(可以没有)
输入数据
CUI或GUI的用户交互式输入
函数入口参数
命令行参数
文件读取
其他设备
数据合法性校验或断言
计算(或处理)
广义计算
狭义计算
算术运算
逻辑运算
关系运算
输出
屏幕打印输出
打印机输出
函数返回值
函数出口参数
文件输出
增量式开发
抽象
实例化
程序的输入种类
CUI
函数入口参数
命令行参数
一般的函数参数
控制台函数读取用户交互式输入
文件读取
GUI