1.程序设计面向的问题

一切可计算问题都可以用程序的方法解决。ps:这样程序与计算有关了

1.1程序设计的五个步骤:

a.确定问题可以计算;(问题是可计算)

b.建立问题的数学模型;(不懂)

c.设计算法和数据结构;(好奇啊)

d.选择合适的计算机语言编写程序;

e.调试运行程序分析结果。

1.2学习程序设计的目的

a.培养基于计算机进行计算思维的意识;

b.培养用计算机语言求解问题的能力;

2.关于计算

计算机就是一个数据加工厂,如何加工便是通过计算完成的。

2.1什么是计算

程序设计就是依据问题来选择我们要进行的计算。

计算是基于规则的符号集合的变换过程。

详细的解释是:从一个按规则组织的符号集合开始,再按照既定的规则一步步地改变这些符号集合,经过有限步骤之后得到一个确定的结果。

2.2可计算与不可计算

如果输入参数与输出参数是对应关系是明确的,则说明这个问题是可计算的。

也有不可计算的问题,比如(图灵机停机问题,旅行家问题……)

计算机只能完成可计算问题。

2.3计算复杂性

衡量计算的复杂性,从时间复杂度和空间复杂度两个方面。

计算机只适合可计算并且有限步骤能够结束的计算

所以,实际问题中比较复杂的问题要分解,分解到计算机可有限步骤内完成的程度。

3.关于算法

3.1什么是算法

是有穷规则的集合,规则规定了解决某一特定类型问题的运算序列。PS:计算的方法,哈哈

运算序列是解决问题的有限步骤。

对实际问题的抽象和形式化表达,或者对复杂问题要分解;

一般问题:分析--抽象--建立模型

事例(两杯水交换问题)

3.2算法的特性

算法是人的思维,不是计算机的思维。

a.有穷性:有限步骤

b.确定性:含义确切,不要有二义性

c.有效性:比如不要0除什么

d.输入:有时候可以没有,但很少

e.输出:必须要有输出。

事例(三个套娃),人排序套娃和计算机排序套娃是思维不一样的,计算机得每个都要比。这样可以引出对算法的描述问题

3.3算法的表示方法

算法的描述问题是程序设计中非常重要的方面

算法的描述方法有六种,分别是自然语言、程序语言、伪代码、流程图、N-S图和PAD图

通常描述算法的方式有两种,一种是流程图,另一种是N-S图。

伪代码随意但不严谨的方法

3.3.1流程图

流程图算是比较好的。PS:老大之前也这样说过,他有不少经验,所以建议画流程图

流程图通用的符号有,起止框,输入输出框,处理框,判断框,注释框和流程限,还有连接线。PS:没有遇到过连接线啊!

3.3.2画流程图

任何程序的三部曲:输入--处理--输出,而且还必须有开始和结束,所以,开始--输入--处理--输出--结束。往往处理框的内容是最多,而且要分解。

3.3.3一定要画流程图

流程图即使算法的设计,正确的表达算法。对于复杂问题,不可能拿上代码就写程序。PS:这点对我来说,很有启示,一定要画流程图,在写代码之前,无论是什么问题

算法是解题步骤,设计取决于人的创造;

实际问题需要首先分析--抽象--建模,才能有设计算计,那么抽象和建模怎么理解呢?问题一

3.4算法的优化

算法有很大的优化空间,而优化体现了人的聪明才智。

4.结构化程序设计方法

什么是好的程序,第一是可读性好,第二是效率高,这里着重说第一点,毕竟排得第一。

4.1可读性好

让别人看得清晰,过段时间便于读懂,而且容易扩展。

4.2如何做到可读性好

用三种基本结构、取消goto和结构化设计方法。

任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成,每一种结构都是一个入口和一个出口,即单入口单出口。

程序设计方法:

要自顶而下,逐步求精(一步一步分解)

上面的三个结构,然后结构都是独立存在,任何结构只能有一个输入和一个输出,这要好好理解。

尤其是对复杂问题分解的时候,要分解分解再分解,细化到程序可以执行的程序,然后每一步的分解都能用三种基本结构去描述

5总结

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

过程:问题-程序-指令序列-结果

从问题到程序,应该是先对实际问题抽象、建模,然后再是程序设计。

回答问题一,抽象、建模=可计算+计算复杂性

程序设计=数据结构+算法+方法

算法=问题分解+算法表达+程序实现

程序实现=语言+环境

如果想真正使用计算机,就需要学习程序设计;程序设计的结果最终是需要计算机语言来实现的

==============================================================================================================================

问题二:为啥cpu对判断和赋值的运行不同?要看那本教材?

学习C程序设计(一)第一节总览的更多相关文章

  1. python学习:模块(第一节)

    1.什么是模块? 如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了.为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这 ...

  2. JAVAscript学习笔记 js事件 第一节 (原创) 参考js使用表

    <!DOCTYPE html> <html lang="en" onUnload="ud()"> <head> <me ...

  3. tensorflow2.0学习笔记第二章第一节

    2.1预备知识 # 条件判断tf.where(条件语句,真返回A,假返回B) import tensorflow as tf a = tf.constant([1,2,3,1,1]) b = tf.c ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 20145127 《Java程序设计》第一周学习总结

    通过第一周的Java程序设计的学习,听了娄老师的第一堂课,虽然课堂上老师并没有一开始就讲许多专业的知识,而是带领着我们对于Java这门语言,并不仅仅是一门语言,经行了初步的认识与了解,并且对于Java ...

  6. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结

    20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...

  7. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第一周学习总结

    20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大 ...

随机推荐

  1. HDU - 3973 AC's String(Hash+线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=3973 题意 给一个词典和一个主串.有两种操作,查询主串某个区间,问这主串区间中包含多少词典中的词语.修改主串某一 ...

  2. scipy笔记—scipy.misc.imresize用法(方便训练图像数据)

    scipy.misc.imresize 不同于普通的reshape, imresize不是单纯的改变图像矩阵的维度,而是能将图片重采样为指定像素,这样给深度学习中训练图像数据带来方便. import ...

  3. ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解

    一.ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的.只要按照规范定义,都可以实现自动加载.        公共类库 公共类库通常是指ThinkPHP/Library ...

  4. 集大软件工程15级个人作业Week1

    集大软件工程15级个人作业Week1 孙志威 201521123077 博客园主页 码云地址 阅读参考材料,并回答下面几个问题 (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络 ...

  5. Java EE 之Hibernate异常总结【1】org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    字面意义就是不能被初始化. 简单理解就是因为,你使用了lazy=true,这样hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用getXXX()调 ...

  6. luogu P1081 开车旅行

    传送门 这题的暴力做法显然是照题意模拟,从每个点出发暴力跳.而这个暴跳显然是可以倍增优化的,就是预处理出从每个点,(一开始是A)往后跳\(2^k\)步,能到哪里,以及\(A\)和\(B\)的路程,然后 ...

  7. 课程2:《黑马程序员_Java基础视频-深入浅出精华版》-视频列表-

    \day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...

  8. Activity生命周期详解

    http://blog.csdn.net/liuhe688/article/details/6733407 onPause 回到 onResume 的过程“在一般的开发中用不上”,但是作为开发者还是有 ...

  9. 编写灵活、稳定、高质量的 css代码的规范

    语法 用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法. 为选择器分组时,将单独的选择器单独放在一行. 为了代码的易读性,在每个声明块的左花括号前添加一个空格. 声 ...

  10. K-means聚类算法原理和C++实现

    给定训练集$\{x^{(1)},...,x^{(m)}\}$,想把这些样本分成不同的子集,即聚类,$x^{(i)}\in\mathbb{R^{n}}$,但是这是个无标签数据集,也就是说我们再聚类的时候 ...