编程原理

简介: 编程原理 一、问题求解 1、问题求解(Problem Solving):指描述问题,以及开发计算机程序来解决问题的整个过程。 这个过程经历多个阶段,包括理解待解决问题、设计概念化解决方案,以及用计算机程序实现解决方案。

编程原理


一、问题求解
1、问题求解(Problem Solving):指描述问题,以及开发计算机程序来解决问题的整个过程。
这个过程经历多个阶段,包括理解待解决问题、设计概念化解决方案,以及用计算机程序实现解决方案。
2、解决方案(solution)通常由“算法”和“数据存储方式”两部分组成。
“算法”是对于在有限时间内问题求解方法的分布描述。算法常执行的操作是在数据集合上进行的。
3、在构建解决方案时,必须组织数据集合,从而按算法要求的方式简单地操作数据。
二、软件的生命周期
软件生命周期(software's life cycles):该过程以初始规划起,经历程序编写和调试,最后修改和增强。
描述-->设计-->风险分析-->验证-->编码-->测试-->完善-->生产-->维护
以“文档记录”为核心。
三、优秀解决方案的定义
要评估一个好的解决方案,必须考虑开发解决方案的各阶段,以及在编写出实现解决方案的原始程序后的各阶段。
这些阶段都需要考虑成本。解决方案的总成本必须考虑开发、完善、编码、调试和测试人员的时间价值,以及维护、修改和扩展软件的成本。
如果一个解决方案在生命周期所有阶段引发的总成本最低,则这个方案就是一个“好”的解决方案。
时代的发展摒弃了“效率最高的解决方案一定最优”的观念。
解决方案的成本应看作是多元成本。
四、模块化设计
1、抽象和信息隐藏
“抽象”分离模块的功能和实现;模块化和抽象相辅相成。
模块化将解决方案分解为若干各模块;抽象在用编程语言实现模块前明确指定各个模块。
信息隐藏限制了处理方法和数据所需要的方式。
2、面向对象的设计
1)封装:对象组合数据和操作;
2)继承:累可从其它类继承属性;
3)多态:对象可在执行时确定适当操作。
3、自上而下的设计(top-down design,TDD):在逐级下降的明细级别完成任务。
4、一般设计原则
1)同时使用OOD和TDD,生成模块化的解决方案;
2)为主要设计数据的问题使用OOD;
3)使用TDD,为对象操作设计算法;
4)使用TDD,为强调算法的问题设计解决方案;
5)在设计ADT和算法时,侧重“做什么”,而不是“如何做”;
6)考虑将前面编写的软件组合包含到设计方案中。
五、关键编程问题
有六点:
1)模块化;
2)可修改;
3)易用;
4)防故障编程;
5)风格;
6)调试。
六、总结
1)循环不变式是一个算法属性,在循环每次迭代前后为true。
2)在评估解决方案质量时,必须考虑各组因素:解决方案的正确性、效率、进入开发的时间、易用性及修改和扩展成本。
3)面向对象与自上而下设计技术相辅相成,相互促进,生成了模块化解决方案。
4)要谨慎设计,尽量提高最终解决方案的可修改性。
5)方法要尽可能独立,并执行一个意义明确的任务。
6)方法一定要包含初始注释,声明方法的作用、初始条件和结束条件。
7)程序应尽可能预防故障的发生。
8)已有诊断工具的有效使用是调试的一个关键。
9)为便于在调试时分析数组和其它更复杂数据结构的内容,应编写转储方法来显示数据结构的内容。

目录
相关文章
|
5月前
|
存储 Java
JAVA并发编程AQS原理剖析
很多小朋友面试时候,面试官考察并发编程部分,都会被问:说一下AQS原理。面对并发编程基础和面试经验,专栏采用通俗简洁无废话无八股文方式,已陆续梳理分享了《一文看懂全部锁机制》、《JUC包之CAS原理》、《volatile核心原理》、《synchronized全能王的原理》,希望可以帮到大家巩固相关核心技术原理。今天我们聊聊AQS....
|
9月前
|
Python
正则表达前一个元素出现零次或多次
正则表达前一个元素出现零次或多次
332 3
|
数据可视化 数据中心 开发者
Terraform Module 可视化正式发布
阿里云正式发布 Terraform Module 的可视化操作界面,在命令行操作模式的基础上,增加了基于 Terraform 的在线资源编排的能力,持续帮助开发者和企业降低 Terraform Module 的使用门槛。
5749 0
|
9月前
|
Rust 前端开发 JavaScript
前端技术的未来:WebAssembly与JavaScript的融合之路
【2月更文挑战第12天】本文旨在探讨WebAssembly(以下简称Wasm)与JavaScript(以下简称JS)的结合如何为前端开发带来革命性变化。传统上,JS一直是前端开发的核心,但随着Wasm的出现,我们看到了前端性能和功能的新天地。文章首先介绍Wasm的基本概念,然后分析其对前端开发的影响,包括性能提升、新功能实现以及开发模式的变化。最后,探讨了Wasm与JS融合的未来趋势,以及这种融合如何推动前端技术的进步。
|
开发框架 人工智能 运维
蓝鲸自动化运维平台
蓝鲸自动化运维平台 1.蓝鲸简介 官网:https://bk.tencent.com/docs/ 腾讯蓝鲸智云,简称蓝鲸,是腾讯互动娱乐事业群(Interactive Entertainment Group,简称 IEG)自研自用的一套用于构建企业研发运营一体化体系的 PaaS 开发框架,提供了 aPaaS(DevOps 流水线、运行环境托管、前后台框架)和 iPaaS(持续集成、CMDB、作业平台、容器管理、数据平台、AI 等原子平台)等模块,帮助企业技术人员快速构建基础运营 PaaS。
2410 0
蓝鲸自动化运维平台
|
6月前
|
开发者 Python
深入解析Python `requests`库源码,揭开HTTP请求的神秘面纱!
深入解析Python `requests`库源码,揭开HTTP请求的神秘面纱!
243 1
|
9月前
|
前端开发
IDEA中如何自定义注释模板
IDEA中如何自定义注释模板
218 0
|
运维 Kubernetes 负载均衡
Docker不香吗?为什么还要用k8s
Docker不香吗?为什么还要用k8s
Docker不香吗?为什么还要用k8s

热门文章

最新文章