1 存储程序概念1.1 我们现在的绝大多数电脑都是冯·诺依曼的“存储程序”电脑要实现全过程的自动化,冯·诺依曼的设想是将解决问题的整个过程用具体架构的CPU框架指令集的指令全部描述出来,保存为二进制的磁盘文件,执行时读入内存,并为需要处理的数据分配内存(或寄存器),由控制电路逐条读取指令、解释指令或读入数据并送入运算电路或存储电路,最后根据指令将结果送到输出设备或磁盘文件,下面我们就来说一说关于常见的程序设计?我们一起去了解并探讨一下这个问题吧!

常见的程序设计(程序设计语言随想)

常见的程序设计

1 存储程序概念

1.1 我们现在的绝大多数电脑都是冯·诺依曼的“存储程序”电脑。要实现全过程的自动化,冯·诺依曼的设想是将解决问题的整个过程用具体架构的CPU框架指令集的指令全部描述出来,保存为二进制的磁盘文件,执行时读入内存,并为需要处理的数据分配内存(或寄存器),由控制电路逐条读取指令、解释指令或读入数据并送入运算电路或存储电路,最后根据指令将结果送到输出设备或磁盘文件。

1.2 冯·诺依曼电脑分为五个部分:输入设备、存储设备、控制器、运算器、输出设备。其思路就是将解决问题的方案按步骤尽可能无歧义地细分,定义需要的数据和指令语句,也就是所谓的程序代码,这些代码存入到可随机访问的存储电路(存储器),这样可由控制电路(控制器)随机访问存储器中存储的数据和指令、解释指令,将需要进行的运算通过控制电路送入运算电路(运算器)进行运算,通过输出数据的代码将处理后的数据呈现给用户。所以,C语言程序设计的基本步骤有以下4个步骤:

1.2.1 定义需要的变量或数据结构;

1.2.2 输入数据或变量赋初值;

1.2.3 完成具体的处理(调用函数或实例化对象);

1.2.4 输出数据。

以上也是C语言主函数main()或其它函数的主要组成部分。

2 指令抽象

上述的存储电路、控制电路、运算电路都是由晶体管实现的开关电路,自然,与二进制的机器语言有对应关系。二进制的机器语言只有"0,1"两个符号,所以由"0,1"符号组成的代码不管是编写、阅读、和维护都是很困难的,通过建立"0,1"符号组成的指令用有意义的字母组合去表示(汇编语言),并建立二者一一对应的关系,可以用字母组合去编写代码(叫汇编代码),由“汇编器”去翻译,这相对于直接用二进制去编码来说是一个进步。当然,可以再进一步抽象,用更接近自然语言的字母组合(高级语言)与汇编语言建立对应关系,用高级语言编写代码,由“编译器”或“解释器”翻译成汇编代码,然后再由“汇编器”翻译到机器语言。上述的“汇编器”、“解释器”、“编译器”都是所谓的“翻译”程序,最初出现的这些“翻译”程序一般都由语言创建者编写。之所以有高级语言的存在和应用,还是以程序读、写的便捷为目的。

我们说电脑的功能一般包括自动控制和数据处理,对于自动控制,一般不需要或只有很简单的输入、输出设备或界面。对于数据处理(数值与非数值),则包括有数据的定义和对数据的操作。数据,就是你定义的变量、数据结构、容器。对数据的操作,就是你对定义的数据构造的表达式、函数、算法。传统的结构化程序设计就是把这些内容都写在一起,或按各部分的功能归集为函数。而对象化程序设计方法则是更进一步的归集分类为对象。数据的操作或处理,包括数据的输入(将需要处理的数据放入内存的容器中)、处理、输出(显示到屏幕或保存到文件);处理主要分为文字的处理和数值的计算。计算主要是加减乘除等,而文字或文本的处理也就是增查删改。

3 输入、输出在程序设计中的理解

数据的输入输出,要区分输入输出的设备与界面。输入输出的界面分两种,一种是命令用户界面,一个是图形用户界面。在C 中,开发的控制台程序就是前者,而MFC应用程序则是后者,通常是通过插入的控件进行输入和输出,通过事件决定代码何时执行。也包括外存储器内保存的“数据文件”与内存的输入输出。操作系统把各种输入/输出设备统一作为文件来处理,每一个与主机相连的输入设备(键盘、鼠标)都看作一个输入文件,每一个输出设备(显示器、打印机等)都看作一个输出文件,称为标准输入\输出文件。磁盘文件是指存储在外部介质(硬盘、光盘或U盘)上的文件。

3.1 其对象同样包括数据和操作数据的代码。

3.2 硬件的输入(键盘、鼠标)、输出(显示器、打印机)。

3.3 磁盘文件的输入(外部存储器上的磁盘文件→内存)、输出(内存→外部存储器上的磁盘文件);

3.4 输入、输出的界面,控制台程序一般通过命令界面的控制台,VC的MFC程序通过控件布局界面,网页程序一般通过表单布局界面。

3.4 数据输入内存(或寄存器)的时间

3.4.1 编译时即完成了数据的输入或初始化;

3.4.2 程序运行时输入;

4 数据在内存中的存储与数据结构

当今的操作系统都会给应用程序的每一个进程分配独立的“虚拟地址空间”,操作系统将物理内存分配给虚拟地址空间。

数据的抽象机制是高级程序设计语言一个很重要的概念,程序设计语言会特意追求其在某个领域的效率,追求程序的易写、易读、或易维护,但也不可能面面俱到。

C语言中malloc()大体的实现是,从操作系统一次性地取得比较大的内存,然后将这些内存“零售”给应用程序。

5 数据的归集

数据在电脑中的定义,一般包括地址、变量名、变量值三个部分,为什么会有数组的概念,关键是其地址是连续的(数组名就是元素首地址),这就是规律,可以通过循环对其进行定义及其它各种操作。一条指令实际上包括两种信息即操作码和地址码。操作码(OperationCode,OP)用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数。地址码用来描述该指令的操作对象,它或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址(即寄存器名)。变量的4个属性:变量名称、数据类型、变量地址、变量的值;变量地址由系统分配给变量一个内存单元编号。C 可以用&(地址运算符)加变量名称得到一个变量的地址。

6 代码的归集

程序设计语言的着眼点是大程序,而学习的起点是从小程序开始的,所以对一些程序设计语言的思路或概念如果只是站在写小程序的角度,可能很难理解。

电脑的硬件和软件都会考虑“模块化”。电脑硬件的“模块化”就是将部件或零件的按模块生产、组装。而软件模块化的思想体现在函数、类、对象等概念方面。

函数一般分为三个部分,函数的声明、函数的定义、函数的调用。声明和定义中的参数相当于变量的声明,而函数调用时的参数相当于变量的赋值。变量可以在程序内的三个地方进行定义:函数内部、函数的参数(形参)、所有函数的外部。

类同样也是三部曲。

7 编程的思维方式

过程化思维:描述数据以及数据的处理过程。

描述数据:说明求解问题需要哪些数据,这些数据的规格是什么样的。

描述数据的处理过程:说明数据如何输入、如何加工处理以及如何输出处理结果的过程,包括输入数据、处理数据和输出结果三个环节。

针对描述数据,C语言首先提供了变量的概念,用来记住数据所在的存储空间的地址,通过变量我们可以方便地对数据进行存取访问。指针的概念可以直接访问操作系统和编译器分配的堆内存。

8 其它

选择结构和循环结构都会跟一个表达式,这个表达式中会包含一个或多个变量,这个变量通常也会包含在的复合语句中,表示对数据的处理。

计算机完成任务的特点是不怕步骤多,但要求每一步足够简单,且相互之间有规律可循,规律不明显时要创建条件让其更有规律。足够多的步骤可以应用循环结构去完成。计算机与人脑相比有速度快、容量大的特点,计算机可以高速地、不厌其烦地进行大量的重复操作,处理大量数据信息。

对数据的操作或对数据库中数据记录的操作都是“增、查、删、改”,同时对数据的处理要考虑一个效率的问题,包括空间(存储)的效率和时间的效率。为什么有不同的数据结构和窗口的存在,就是因为他们在“增、查、删、改”等方面的效率各有效率和优势。

程序设计语言一般由其创建者提供给用户的有三个部分:语法手册、函数库或类库、编译器或解释器;由程序设计语言提供给你的函数库或类库一般都是由其自身的语言实现的高效率的代码,拿过来就可以使用,你也就没必要自己重新再写。

程序设计语言写代码、计算机执行代码的概念与工厂的产品与工艺设计、输入、加工、输出的概念进行类比很合适。数据的存储可以类比为物料的存储、数据的容器可以类比为物料的容器。

对计算机语言的了解:知道语言设计者为解决何种问题而创造了这种语言,以及这种语言经历过怎么样的历史变迁后,慢慢就能理解为什么需要有这种功能。

,