当前课程知识点:C语言程序设计(上) >  从问题到C语言程序设计 >  1.1 计算机的问题求解方法 >  1.1.4-2-程序设计方法

返回《C语言程序设计(上)》慕课在线视频课程列表

1.1.4-2-程序设计方法在线视频

1.1.4-2-程序设计方法

下一节:讨论题:数学模型

返回《C语言程序设计(上)》慕课在线视频列表

1.1.4-2-程序设计方法课程教案、知识点、字幕

我们

最后要讨论的是关于程序设计风格

这么几种特性

一种是

什么正确

另外一个 可读性 也就是

为了什么 为了

那其次的一个词

有点怪 叫健壮性

有时候还叫柔韧度

它是说什么呢

说你这个算法

对人机的交互

或者对你程序里边环境的改变

你的反映和处理能力要有

怎么讲呢

比如说 我们

你在键盘上怎么敲的时候

你敲错了

这个软件没有垮

没有死机

就说 这个软件的柔韧度比较好

或者说 它的健壮性比较好

那更好的是什么

比如说 我们在输入一个日期

我们把日期输成了一个月38天

最好计算机能提醒你说

一个月没有38天

你把一个星期输入成了9天

它会告诉你没有9天

这就是健壮性更好

健壮性就是这个意思

另外一个是高效率

这就是我们说的

你要达到所需要的时空性能

就是 不仅是时间的复杂性

你要考虑空间的复杂性 也要考虑

这就是高效率的问题

那么 我们这里边其实

在我们这门课程里边

大家更多的能关注到的

或者能考虑到的

是健壮性

也就是说

我们能做到的 至少必须做到的是

对正确的输入

你要有正确的结果

这时程序必须做到的

对于不正确的输入

能够有相应的提示

告诉它 怎么办

告诉它回去重新做

而不是说给了不正确的输入

就死机了

那良好的程序设计风格

应该是怎么样的呢

应该是

什么叫实际 比如说

我求一个圆面积 我说个π

我非把π写成a

我求一个欧姆定律

我非得把这个R

说成x

这样不是不可以

但是 就是跟你实际的

不贴近 就让读程序的人不理解

还有最后一个

这个相当重要

这尤其是在开始写程序的

初学者都不习惯的

觉得程序很短 用不着注释

这里边 我们再把它说的具体一些

说少一些

四点

我们把刚才的四句话再具体一下

比如说 源程序文档化

什么意思

就是用有意义的符号名

不要正好拧着

写好你的注释

程序采用缩进的格式 等等

这个 我们这不一个一个念了

课件留给大家

下去自己看 但是这个很重要

程序设计风格

实际上

程序不是仅仅你跟计算机交流

你更多的还是要跟人交流

而跟人交流 我们所有的东西

就需要规范 便于交流

我们看一下边上的这个程序

这是 求圆的直径和面积

大家不管是学过C的 还是没学过C的

我们先来说没学过C的

我们现在看这段代码

其实 你差不多也能看明白了

大家稍微仔细看一下

第一

它开始就给你写了是

求圆的直径和面积 给了你引导

中间有两个注释

告诉你要输入圆的半径r

还有

说 那个π是个什么意思

将来会用3.14去替换

这样在剩下来的 有几个你不懂

根据上下文也差不多懂了

这样的交流就会比较方便

这个程序的写法

在我们看整个结构

谁和谁对题

是要不要缩进

看上去整整齐齐

我们再来看这两个程序 程序A B

其实 大家看一下程序A和程序B

写的是一件事

是同一个程序

只是说 我们看程序A

它是这样写

这个对齐 是这样子

这样的对齐是这样子

然后 后边

给了注释

说 循环从哪里开始

这句话说的是 循环开始

下来是判断 下来是输出

即便是没学过C语言

我们也看个差不多

但是 我们再看这个程序B

这一块

整个看上去 就不是那么清楚

整个这样下来

结构看上去

让人读起来 层次不那么分明

所以 程序设计风格

还是非常重要的一件事

做好了 大家的交流就会比较畅通

自己的修改 以及

这个如果形成一个软件或者程序

一个实用的程序

后期的维护也会比较方便

结构化程序的设计的特征

就我们说的那三种基本结构

你可以嵌套

可以视独立的

但是 每个结构只能有一个入口

一个出口

还有不是结构化程序设计语言吗

当然有

只不过C是结构化程序设计语言

并且采用一定的书写格式使程序

结构清晰 易于阅读

最后

我们对第一节讨论过的四个问题

总体来讲是

用计算机求解问题的一般方法

这个方法 我们给一个归纳总结

整个 过程 应该是这样的

那么这个从问题到程序的

这个过程 通常会被我们

会 忽略成认为是

只有程序设计

直接进行程序设计

其实在这个 之前

应该有一个 非常重要的工作是

对实际问题的抽象和建模

所以应该是

才等于从问题到程序的一个过程

再接下来

那抽象建模 要注意什么

两个问题非常重要

那这里边

我们 首先会判断

什么问题 可计算

那么 它的计算复杂性

是不是 能够是我们在

有限 步骤内 得到解

那 程序设计包含什么

但是 我们的课程

因为课时的问题

我们的关注点会在算法和方法上

数据结构

我们只是算法涉及到的部分

我们会进行讨论

因数据结构

是一门 单独的课

那大家可以在后续的

课程里边继续学习

我们的课程学习相关的

与算法相关的部分

还 那关于算法

当然是我们这门课程的主体

而对程序的实现

当然首先是语言的支持

其次是

支持这个语言的环境

我们第一节

给大家呈现了 这么多

概念上的 也是基础方面的东西

大家一定会觉的

到现在还没看见程序写啥样

然后这么多概念要不要我们记住

其实 不要

我们说的过程里边

大家一定有一点印象

在后续的各个章节

的学习的过程里边

我们会逐步的对它

领会 和应用

那后边

我们会给大家一些作业题

讨论题

希望大家结合

这些讨论题作业题

逐步的去 理解

这些概念或者这些基础的知识

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

1.1.4-2-程序设计方法笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。