程序设计基础

程序设计方法与风格

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. jmeter中一次运行多条sql语句

    操作比较简单,主要就分两步: 第一步:在JDBC Connection Configuration中设置,主要见下图标注部分增加:?allowMultiQueries=true 第二步:在JDBC R ...

  2. Io 异常: The Network Adapter could not establish the connection

    新接触一个项目,导入源码,在本地启动的时候后台报了一个错误: Could not discover the dialect to use. java.sql.SQLException: Io 异常: ...

  3. SQL基础学习_04_视图

    视图 1. 视图的创建     视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作:     由于 ...

  4. Java学习笔记-嵌套类

    嵌套类 嵌套类有两种类别:static and non-static,分别对应为静态嵌套类和内部类. class OuterClass { ... static class StaticNestedC ...

  5. [SharePoint]解决用户权限被无缘无故自动删除的问题

    前几天在维护公司内网的时候接到了一个case, 说是某个用户的权限无缘无故的就会被SharePoint自动去掉. 刚开始我还不愿意相信这个用户的说法,认为可能是权限赋的方法不对,有可能是被其他人误删了 ...

  6. flask-form用户登录与注册

    用户登录 #!/usr/bin/env python # -*- coding:utf- -*- from flask import Flask, render_template, request, ...

  7. 【转】LDA数学八卦

    转自LDA数学八卦 在 Machine Learning 中,LDA 是两个常用模型的简称: Linear Discriminant Analysis 和 Latent Dirichlet Alloc ...

  8. 内核知识第八讲,PDE,PTE,页目录表,页表的内存管理

    内核知识第八讲,PDE,PTE,页目录表,页表的内存管理 一丶查看GDT表. 我们通过WinDbg + 虚拟机可以进行双机调试.调试一下看下GDT表 我们知道,GDT表中.存储的是存储段信息. 保存了 ...

  9. Java中的集合框架(上)

    Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...

  10. 《SpringMVC从入门到放肆》一、概述

    一.SpringMVC概述 View Service Dao DB Spring MVC interface interface Mysql impls impls SpringMVC也叫Spring ...