程序设计基础

程序设计方法与风格

1.程序设计方法

程序设计: 指设计、编制、调试程序的方法和过程。

程序设计方法是研究问题求解如何进行系统构造的软件方法学。常用的程序设计方法有:结构化程序设计方法、软件工程方法和面向对象方法。

2.程序设计风格

程序设计风格:指编写程序时所表现出的特点、习惯和逻辑思路。

良好的程序设计风格可以使程序结构清晰合理,程序代码便于维护。因此,程序设计风格深深地影响着软件的质量和维护。以下例举的是一些良好的程序设计风格,也是程序设计时应遵循的规范。

(1)源程序文档化。

源程序文档化是指在源程序中应包含一些内部文档,以帮助阅读和理解源程序。

(2)数据说明方法。

  ①次序应规范化:是数据说明次序固定,使数据的属性容易查找,也有利于测试、排错和维护。

  ②变量安排有序化:当多个变量出现在同一说明语句中时,变量名应按字母顺序排序,以便于查找。

  ③使用注释:在定义一个复杂的数据结构时,应通过注释来说明该数据结构的特点。

(3)语句的结构。

为使程序简单易懂,语句构造应该简单直接,每条语句都能直截了当地反映程序员的意图,不能为了提高效率而把语句复杂化。

(4)输入和输出。

输入和输出信息是用户最关心的,系统能否被用户接受,往往取决于输入和输出的风格。

结构化程序设计

1.结构化程序设计的原则

由于软件危机的出现,人们开始研究程序设计方法,其中最受关注的是结构化程序设计方法,其重要原则一下几点:

◎自顶向下:设计的原则是先总体,后细节;先全局目标,后具体问题。

◎逐步求精:对复杂问题,应设计一些小问题做过渡,细分为逐个的小问题依次求解。

◎模块化:把程序要解决的总目标分解为若干目标,再进一步分解为具体的小目标,每个小目标称为一个模块。

◎限制使用goto语句:滥用goto语句将导致程序结构混乱的现象,应尽量避免使用。

2.结构化程序设计的基本结构

(1)顺序结构。

顺序结构是指按照程序语句行的先后顺序,自始至终一条语句一条语句地顺序执行,它是最简单也是最常用的基本结构。

如图所示。顺序结构中在执行A中的运算后,必然执行B中的运算,然后执行C中的运算,没有分支,也没有转移和重复。

(2)选择结构。

选择结构又称分支结构,简单选择结构和多分支选择结构都属于这类基本结构。如下图中A语句和B语句只会执行一个,在程序执行中出现了分支,即选择结构。

                                                                                                           顺序结构( 图例)                                                        简单选择结构(图例)

(3)循环结构。

循环结构又称重复结构,可根据给定条件,判断是否需要重复执行某一部分相同的运算(循环体)。利用重复结构可以大大简化程序的语句,有两类主要的循环结构:当型(WHILE型)循环结构和直到型(UNTIL型)循环结构。

                                                                                                  WHILE型循环结构                           (UNTIL型)循环结构(do-while)

3.结构化程序设计的原则和方法的应用

结构化程序设计是一种面向过程的程序设计方法。在结构化程序设计的具体实施中,需要注意以下几个问题:

◎使用程序设计语言的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;

◎选用的控制结构只能有一个入口和一个出口;

◎用程序语句组成容易识别的块,每块只有一个入口和一个出口;

◎应用嵌套的基本控制结构进行组合嵌套来实现复杂结构;

◎采用前后一致的方法来模拟语言中所没有的控制结构;

◎严格控制goto语句的使用。

编程范式

编程范式

编程: 程序员   用  语法+数据结构+算法组成的代码,告诉计算机如何执行任务

更具设计的思路分成两种范式: 面向对象和面向过程

面向过程

通俗概念:通过计算机指令告诉计算机一步一步的做

        procedures      top-down languages

优点:清晰计算机执行的每一个步骤、效率高、适合小脚本   缺点:维护难度高,程序越来越大

面向对象

基本概念:面对对象方法的本质就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域。简单来讲就是通过我们能感知到的事物,利用“类”、“对象”来创建模型,使人更容易理解你的代码逻辑,从而是团队开发变得更从容。

世间万物,皆可分类

世间万物,皆为对象

只要是对象就肯定属于某种类

只要是对象就肯定有属性

但是都涵盖对象及对象属性与方法、类、继承、多态性几个基本要素。

(1)对象(Object)

面对对象方法中最基本的概念。对象可以用来表示客观世界中的任何实体,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。例如,书本、课桌、老师、电脑等都可看做是一个对象。

对象有以下基本特点:

◎标识唯一性:是指改对象是可以区分的,并且由对象的内在本质来区分,而不是简单描述来区分。

◎分类性:指可以将具有相同属性和操作的对象抽象成类。

◎多态性:指同一个操作可以是不同对象的行为,也可以是不同对象执行同一操作产生不同的结果。

◎封装性(Encapsulation):从外面看只能看到对象的外部特性,对象的内部对外是不可见的。

◎模块独立性好:由于完成对象功能所需的元素都被封装在对象内部,所以模块独立性好。

(2)类(Class)和实例(Instance)

类,是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,它反映属于该对象类型的所有对象的性质。实例是一个具体的对象,它是其对应类的一个实例。

注意:实例必然是指一个具体的对象。对象则既可以指一个具体的对象,也可以泛指一般的对象。

类是关于对象性质的描述,它同对象一样,包括一组数据属性和在数据上的一组合法操作。

简单讲类就是一个模型

(3)消息(Message)

消息传递是对象间通信的手段,一个对象发送消息给另一对象来请求其服务。消息只告诉接收对象需要完成的操作,消息完全由接收者解释,独立决定采用什么方法来完成所需的操作。

(4)继承

广义地说,继承是指能够直接获得已有的性质和特征,而不必重复地定义它们。

继承是面向对象软件技术的最强有力的功能和突出的优点。继承是使用已有的类定义作为基础建立新类的定义技术。在面向对象技术中,类组成为具有层次结构的系统:一个类的上层可有父类,下层可有子类;一个类直接继承其父类的描述(数据和操作)或特性,子类自动地共享基类中定义的数据和方法。

例如,“四边形”类是“正方形”类的父类,“四边形”类可以有“顶点坐标”等属性,有“移动”、“旋转”、 “求周长”等操作。而“正方形”类除了继承“四边形”类的属性和操作外,还可定义自己的属性和操作,“边长”属性和“求面积”等操作。

继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A。因此,一个类实际上继承了它上层的全部基类的特性,即属于某类的对象除了具有该类定义的特性外,还具有该类上层全部基类定义的特性。一个子类只有唯一的一个父类,这种继承称为单继承。一个子类也可以有多个父类,它可以从多个父类中继承特性,这种继承称为多重继承。

例如,“水陆两用交通工具”类既继承“陆上交通工具”类的特性,又继承“水上交通工具” 类的特性。

(5)多态性

多态性,是指对象根据所接收的消息而做出的动作,同样的消息被不同的对象接收时可导致完全不同的行为。

例如:一堂体育课,老师说自己去把,同学们会更具自己的心中要做的动作自己执行了,有的去乒乓、有的篮球、有的下象棋。

多态性机制不仅使得面向对象软件系统更加灵活,减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。

2.面向对象方法的优点

面向对象方法有以下主要优点:

◎与人类习惯的思维方法一致;

◎稳定性好;

◎可重用性好;

◎易于开发大型软件产品;

◎可维护性好。

学而精计算机公共基础学习之路TEST2(程序设计基础)的更多相关文章

  1. 学而精计算机公共基础学习之路TEST1

    算法 一:算法基本概念 算法是个什么概念学了这么久的程序尽然没有听说过,其实算法就是为了解决问题那么怎么准确完整的解决这个问题就是算法.所以我们所写的程序就可以说为对算法的描述,但是程序编制是不能有于 ...

  2. “戏精少女”的pandas学习之路,你该这么学!No.5

    如果文章图片无法观看,请前往CSDN博客观看 https://blog.csdn.net/hihell 戏精博主即将上线 就在上一篇,梦想橡皮擦这位博主经过艰苦的努力 终于能创建一个dataframe ...

  3. python 零基础学习之路 02-python入门

    不知不觉学习python已经两个月了,从一开始不知道如何对print的格式化,到现在可以手撸orm,这期间真的是 一个神奇的过程.为了巩固自己的基础知识,为后面的拓展埋下更好的伏笔,此文当以导师的博客 ...

  4. 【jq】c#零基础学习之路(1)Hello World!

    从今天起我会持续发表,这个就是一个日记型的,学习编程是枯燥的,况且我们还是零基础. 学前准备 1.编译环境 vs2010.vs2012.vs2015...(本人用的是vs2010旗舰版).vs2010 ...

  5. Android 零基础学习之路

    第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正則表達式. 3.面向对象的抽象.封装,继承,多态.类与对象.对象初始化 ...

  6. python基础学习之路No.3 控制流if,while,for

    在学习编程语言的过程中,有一个很重要的东西,它就是判断,也可以称为控制流. 一般有if.while.for三种 ⭐if语句 if语句可以有一个通俗的解释,如果.假如 如果条件1满足,则…… 如果条件2 ...

  7. JAVA基础学习之路(五)数组的定义及使用

    什么是数组:就是一堆相同类型的数据放一堆(一组相关变量的集合) 定义语法: 1.声明并开辟数组 数据类型 数组名[] = new 数据类型[长度]: 2.分布完成 声明数组:数据类型 数组名 [] = ...

  8. JAVA基础学习之路(一)基本概念及运算符

    JAVA基础概念: PATH: path属于操作系统的属性,是系统用来搜寻可执行文件的路径 CALSSPATH: java程序解释类文件时加载文件的路径 注释: 单行注释  // 多行注释 /*... ...

  9. 【jq】c#零基础学习之路(5)自己编写简单的Mylist<T>

    public class MyList<T> where T : IComparable { private T[] array; private int count; public My ...

随机推荐

  1. Android破解学习之路(六)——Android游戏 方块冒险 破解

    前言: 可能大家看到标题会有些懵逼,以为我发错了,这应该是五才对吧,其实,五我已经发了,不过被管理大大移出首页了,不知道这一篇是不是也会是同样的命运.. 今天所写的是关于支付宝内购的破解 原版 链接: ...

  2. jQuery 属性(十二)

    属性 描述 context 在版本 1.10 中被弃用.包含传递给 jQuery() 的原始上下文. jquery 包含 jQuery 版本号. jQuery.fx.interval 改变以毫秒计的动 ...

  3. HTML、CSS、JS 复习——序

    HTML在MVC中担任着M的角色.由HTML组成的节点称之为HTML DOM.要想成为一流的大神,就必须能分分钟建立起一个强大的HTML DOM.而要做到这点,就必须了解甚至精通HTML. CSS在M ...

  4. micropython TPYBoard v202 超声波测距

    实验目的 了解超声波模块的工作原理 学习使用超声波模块测量距离 实验器材 TPYBoard v202 1块 超声波模块(HC-SR04)1个 micro USB数据线 1条 杜邦线 若干 超声波模块的 ...

  5. 10个优秀个android项目,精选|快速开发

    1.Android-FilePicker-android图片和文档选择器 项目地址 https://github.com/DroidNinja/Android-FilePicker 2.ViewPag ...

  6. KMP算法讲解

    老规矩,讲算法前,先说一道小问题吧 给你一个长串和短串,求短串在长串中出现的次数和位置. 设长串长度为len1,短串长度为len2. 如果len1*len2<=108,那就很简单了,直接暴力枚举 ...

  7. Java学习笔记24(Integer类)

    这里介绍基本数据类型包装类,Integer是int的包装类, 其他的基本数据类型的包装类的方法和Integer的方法几乎一致,会一种即可全会 基本数据类型包装类的特点:用于在基本数据类型和字符串之间进 ...

  8. C/C++知识点清单02-上

    第二章 预处理.const.static与sizeof (上) 在这章编写时,发现了一个不错的帖子.其中对程序预处理语句的基本概念写得还是十分清晰的. (http://www.runoob.com/c ...

  9. 从 0 到 1,Java Web 网站架构搭建的技术演进

    初始搭建 最开始,就是各种框架一搭,然后扔到 Tomcat 容器中跑,这时候我们的文件.数据库.应用都在一个服务器上. 服务分离 随着系统的上线,用户量也会逐步上升,很快一台服务器已经满足不了系统的负 ...

  10. python中的与 和 或

    上周五写程序碰到需要处理多重判断的一个逻辑,一般正确的写法是: if a or b or (c and d) or e: pass 因为变量很长,看上去比较杂乱,自己灵机一动写成了如下的样子: if ...