从问题到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. 安装centos7显示器分辨率不适配的解决方法

    1,系统读取安装信息后,选择Install Centos7 然后Tab调出参数行 2,在quiet后空格输入nomodeset回车即可

  2. JavaScript的数据类型判断学习理解和数据处理

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. docker run 创建容器

    docker run常用命令 docker run :创建一个新的容器并运行一个命令 - 语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 1.OPTI ...

  4. Kafka工作流程

    Kafka生产过程分析 1 写入方式 producer采用推(push)模式将消息发布到broker,每条消息都被追加(append)到分区(patition)中,属于顺序写磁盘(顺序写磁盘效率比随机 ...

  5. 自己搭建的集群,启动hadoop时slave节点的datanode没有启起来怎么办?

    自己搭建的集群,启动hadoop 集群是,发现slave节点的datanode没有启动,查了资料发现是因为我在启动集群前,执行了这个命令: hadoop namenode -format 这个指令会重 ...

  6. 区块链入门到实战(20)之以太坊(Ethereum) – 虚拟机(E.V.M.)

    作用:执行智能合约代码的引擎 以太坊(Ethereum)虚拟机是执行智能合约代码的引擎. 可以用某种语言,例如Solidity语言,开发智能合约程序,编译成以太坊(Ethereum)虚拟机支持的字节码 ...

  7. LG P6788 「EZEC-3」四月樱花

    Description 在樱花盛开的四月,Muxii 望着满天飘落的樱花,向身旁的 ZZH 问道: “究竟有多少朵樱花在这个四月飘落?” ZZH 答道:“樱花飘落的朵数  $s$与时间 $t$ 有如下 ...

  8. 【Android】Android开发启动app弹出一张广告图片,Dialog可以查看大图,查看某个图片功能

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...

  9. 银行应用USB Key身份认证方案

    前言:本文为USB Key的厂商SafeNet公司提供的宣传稿件,并不代表本博客作者的观点和看法. 本文的技术解决方案使用的是SafeNet自身的产品,虽然这个产品支持数字签名和PKI体系,可生成并储 ...

  10. oeasy教您玩转linux010109clear清屏

     回忆上次内容 上次讲了灵魂三问 whatis whereis which 通过这三个问题,可以对命令基本了解,我们来试一下!!