从问题到C语言程序设计

1.1计算机的问题求解方法

程序设计面向的问题

  1. 什么问题可以用程序的方法解决?

    • 打印九九乘法表

    • 图形变换

    • 文件压缩问题

    • .......

    • 一切可计算的问题

  2. 如何解决?

    1. 确定问题可计算

    2. 建立问题的数学模型

    3. 设计算法和数据结构

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

    5. 调试运行程序分析结果

关于计算

  1. 什么是计算

    • 基于规则符号集合的变换过程,有限的步骤

  2. 可计算和不可计算

    • 可计算:输入与输出是明确的

    • 不可计算:旅行家问题

    • 理论上可计算的问题,实际上不一定有解

  3. 计算的复杂性

    • 时间复杂度:受问题规模影响(如:梅森素数)

    • 空间复杂度(不讨论)

关于算法

  1. 什么是算法

    • 有穷规则的集合,规则规定了解决某一特定类型的问题的运算序列(是解决问题的有限步骤)

  2. 算法的特征

    • 有穷性:有限步骤

    • 确定性:含义确切

    • 有效性:有效执行

    • 有零个或多个输入

    • 有一个或多个输出

  3. 算法描述方法:

    • 自然语言

    • 程序语言

    • 流程图----->传统方法

    • N-S图------->结构化程序设计方法(待补充

    • PAD图

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

  4. 算法优化:

    • 减少判断次数

  • 无效输出减少

  1. 总结:

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

    • 实际问题需要首先分析----抽象----建模,才能设计算法

    • 算法的5个特征,设计时必须满足

    • 基于计算机的问题求解和数学方法有很大不同

    • 算法需要用工程化的方法表达

    • 算法有很大的优化空间

结构化程序设计方法

  • 自顶向下,逐步求精

  • 单入口单出口

  1. 什么是好程序

    • 可读性好

    • 效率高

  2. 写好一个程序

    • 三个基本结构构成(顺序,选择,循环待补充

    • 不用GOTO语句(原则不用,适当使用)

  3. 良好的程序设计代码特点:

    • 正确性----正确实现功能

    • 易读性----易于阅读和理解,便于调试、修改和扩充

    • 健壮性----算法对交互和环境的反应或处理能力

    • 高效率----所需时空都小

  4. 良好的程序设计风格

    • 源程序文档化

    • 数据说明标准化

    • 语句规范化

    • 输入输出格式化

总结

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

  • 从问题到程序---->抽象、建模+程序设计

  • 抽象、建模=可计算+计算复杂性

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

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

  • 程序实现=语言+环境

C语言01的更多相关文章

  1. c语言01次作业--分支,顺序结构

    C语言--第01次作业 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本章学习让我体会良多.首先,不得不承认自己是一个非常马虎的人.常见的问题就是输出格式上常因为没有与题目要 ...

  2. C语言 01 形参实参

    之前的都在印象笔记记录 continue 结束本轮循环体,进入下一次循环.break 直接结束整个while循环 形参:定时函数时函数名后面中的参数实参:调用函数时传入的具体数据基本数据类型作为形参, ...

  3. C语言-01基础语法

    1)         总结常见文件的拓展名 .c 是C语言源文件,在编写代码的时候创建 .o 是目标文件,在编译成功的时候产生 .out 是可执行文件,在链接成功的时候产生 2)         总结 ...

  4. 重学C语言---01概述

    1.什么是C语言 C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.计算机语言是从第二次世界大战以后,经历了戏剧性的发展过程.从机器语言到汇编语言和高级语言.C语言是与硬件 ...

  5. C语言 · 01背包

    最近老碰到DP问题,没整过,在网上有不少资料,转载此篇自:http://blog.csdn.net/libin56842/article/details/9338841 有N件物品和一个容量为V的背包 ...

  6. c语言-01背包问题

    01背包问题 问题:有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 分析: 这是最基础的背包问题,特点是:每种物品仅有一件,可以选 ...

  7. OC语言-01类和对象

    // cc 文件名.m -framework Foundation 编译链接 #import <Foundation/Foundation.h> //枚举性别 typedef enum{ ...

  8. 算法实现c语言--01

    打印九九乘法表 #include<stdio.h> #include<stdlib.h> int main() { , j = ; ; i <= ; i++) { ; j ...

  9. Django之模板语言(三)------>自定义filter

    1.自定义filter: 1.在app01下面新建一个templatetags的python package包. 如果没有app01的话,可以通过命令行在manage中进行创建:python mana ...

随机推荐

  1. 【数论】莫比乌斯反演Mobius inversion

    本文同步发布于作业部落,若想体验更佳,请点此查看原文.//博客园就是渣,连最基本的符号都打不出来.

  2. Android The layout "activity_main" in layout has no declaration in the base layout folder

    报错: The layout "activity_main" in layout has no declaration in the base layout folder; thi ...

  3. golang gorm 基本使用

    原文链接:golang orm 框架之 gorm gorm 用法介绍 库安装 go get -u github.com/jinzhu/gorm 数据库连接 import ( "github. ...

  4. Vue管理系统前端系列六动态路由-权限管理实现

    目录 为什么要使用动态路由? 主流的两种实现方式 前端控制 后端控制 后端控制路由 实现 添加菜单接口 及 菜单状态管理 根据得到的菜单生成动态路由 根据 vuex 中的暂存的菜单生成侧边菜单栏 退出 ...

  5. promise和async await的区别

    在项目中第一次遇到async await的这种异步写法,来搞懂它 项目场景 :点击登录按钮后执行的事件,先进行表单校验 this.$refs.loginFormRef.validate(element ...

  6. Mysqldump备份提示没有权限

    在使用mysqldump备份的时候如果提示没有权限,执行以下命令 grant select on mysql.proc to 'your-mysqldump-user' 转自https://stack ...

  7. Serializers组件详解

    Serializers组件 使用背景 因为每个语言都有自己的数据类型,不同语言要想数据传输,就必须指定一种各种语言通用的数据类型,如json,xml等等 序列化器允许把像查询集和模型实例这样的复杂数据 ...

  8. Python爬取网易云音乐歌手歌曲和歌单

    仅供学习参考 Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做 ...

  9. Promise、Generator,Async/await

    我们知道JavaScript是单线程语言,如果没有异步编程非得卡死. 以前,异步编程的方法有下面四种 回调函数 事件监听 发布/订阅 Promise对象 现在据说异步编程终极解决方案是——async/ ...

  10. Mysql性能参数优化

    1.Max_connections (1)简介 Mysql的最大连接数,如果服务器的并发请求量比较大,可以调高这个值,当然这是要建立在机器能够支撑的情况下,因为如果连接数越来越多,mysql会为每个连 ...