伪代码block转换成程序流程图_程序设计基础

1、程序与程序设计语言的基本知识

1)程序:为解决某一问题而采用程序设计语言编写的一个指令集合。

程序=算法(对操作的描述)+数据结构(对数据的描述)+程序设计语言+语言工具和环境。

2)程序的特点:目的性、有序性、分步性、有限性、操作性。

3)程序设计语言---按发展过程分类

(1)机器语言

由一连串的0和1二进制代码组成,能被计算机直接理解和执行的指令集合。

指令格式:

操作码操作数

(2)汇编语言

使用“助词符”来表示指令的操作码,使用存储单元或寄存器的名字表示地址码。

可读性好,易查错,方便修改,占存储空间少,执行速度快。

(3)高级语言

与机器指令系统无关,独立于机器的程序设计语言,所使用的符号接近人类的自然语言,表达形式接近于被描述的问题。

高级程序设计语言分类:

面向过程的语言:程序不仅要说明做什么,还要详细说明如何做,程序需要详细描述解题的过程和细节;目的在于高效的实现各种算法。

面向问题的语言:又称为非过程化语言或第四代语言,只需指出要计算机做什么、数据的输入和输出形式,就能得到所需结果;目的在于高效、直接地实现各种应用系统。

面向对象的语言:将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性和行为,形成类,通过继承和多态重用。

4)翻译程序(编译器)

(1)定义:其他编程语言必须经过一个翻译过程才能转换成机器语言,实现编译过程的工具是语言处理程序。

(2)汇编程序

定义:将汇编语言编制的程序(称源程序)翻译成机器语言程序(称目标程序)的工具。

翻译工作的步骤:

用机器操作码代替符号化的操作符。

用数值地址代替符号名称。

将常数翻译为机器的内部表示。

分配指令和数据的存储单元。

作用:

f7e228e5376093db21d984b2c5b55f71.png

(3)翻译程序

定义:将高级语言编写的源程序翻译成目标程序的工具。

工作方式:

解释方式:解释程序

解释程序对源程序逐条地解释执行,不产生目标代码,程序执行时,解释程序和源程序一起参加运行。

4cbcf70c3c74b577ccfc4e3bed7fc656.png

解释方式执行速度较慢的原因:

每次运行需重新解释。

若程序较大,且错误发生在程序后面,则前面的运行是无效的。

解释程序只看到一句语句,无法对整个程序优化。

编译方式:编译程序

对整个源程序经过编译处理后,产生一个与源程序等价的目标程序。

c571e74d062fdb902f9dab7ce208d021.png

编译过程的六个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。

5)程序设计语言的支持环境

操作系统是各种软件的核心和基础,是整个系统的控制管理中心,为其他软件提供运行环境。

10c8c998f6222abdd55100f5e897d910.png

6)程序设计语言的基本成分和语法

(1)程序的基本语法单位

定义:程序是由语句构成的,而语句又是由数据、表达式、函数等基本语法单位组成的,构成表达式、函数等的最小单位是字符。

字符集:

定义:字符是构成程序设计语言的最小语法单位,每一种程序设计语言都有自己的合法字符集。

基本字符集:数字:0-9

字符:a-z,A-Z

分隔符:,;

运算符:+,-,*,/

数据类型:

定义:数据就是描述客观事物的数字、字符、图片等,即所有能输入到计算机中并能被计算机处理的符号的集合。

分类:基本数据类型:程序设计语言系统内置的。

特点:其值不可再分解。整数类型、实数类型、字符类型、逻辑类型等。

构造数据类型:由基本数据类型按某种方式组合而成的。

数组类型、记录类型、枚举类型、集合类型、字符类型、文件等。

使用数据类型的目的:

决定该类型数据的取值形式、范围和在计算机中的存储和表示方式。

决定了该类型的数据所能执行的操作种类,即能够施加到不同类型数据上的运算是不同的。

表达式:

10c8c998f6222abdd55100f5e897d910.png

定义:表达式由变量、常量、函数调用和运算符组成。

常量和变量:数据存入内存→存放数据的内存单元命名→内存单元名来访问其中的数据

常量:在程序运行中数据不变的量。

变量:在程序运行中数据变化的量。

变量在使用前必须声明其类型和名称,编译程序根据其数据类型,在内存中分配相应的存储空间,以存储该变量的值。

运算符:

算术运算:加减乘除和乘方。

字符运算:连接、取子串

关系运算:大于、大于等于、小于、小于等于、等于、不等于

逻辑运算:与、或、非

内部函数:按功能分为数学函数、字符串函数、日期函数、转换函数。

赋值语句:表达式和赋值号构成了程序设计的一条赋值语句。

(2)数据的输入和输出

一类:程序之间以文件形式传送数据。

二类:人机交互,将人们可以识别的形式按一定格式输入到程序的变量中,输出则相反,按用户的要求格式将变量或常量的值显示或打印。

(3)基本控制结构

顺序结构:指程序的执行按照语句出现的先后顺序一次执行。

选择结构:根据条件判断,决定程序的执行顺序。

循环结构:指重复执行某个操作。

(4)过程:指重复处理的程序段或者分解的子功能编写成一个逻辑上独立的过程,当程序需要该过程时进行调用。

2、算法的基本知识

1)算法的描述:程序---计算机语言表述的算法。

流程图---图形化的算法。

2)计算机的算法

(1)数值计算算法

目的:求数值解。

特点:少量输入、输出,复杂的运算。

(2)非数值计算算法

目的:对数据的处理。

特点:大量输入、输出,简单的运算。

3)算法的定义:是解决问题方法的精确描述,但算法并不给出问题的精确解,只是说明怎样才能得到解。

4)算法的性质:有穷性、确定性、有效性、零个或多个输入、一个或多个输出

5)算法=数据对象的运算和操作(算数运算、逻辑运算、关系运算、数据运算)+控制结构(顺序结构、选择结构、循环结构)。

6)描述算法的方法

(1)自然语言

优点:通俗易懂

缺点:易产生歧义,往往根据上下文才能判断其含义,不严格;语句繁琐、冗长,很难清楚地表达算法的逻辑流程。

(2)流程图法

定义:用图框、线条、文字说明,形象直观的描述算法。

流程图符号:

9177d6fd971d3d8edc90be801bbd079a.png

---起止框:表示流程的开始或结束。

ac64db07adef0e713de03c409de9bfd2.png

---输入输出框:表示输入数据或输出结果。

e3013b9a16252b42b78fc0e49234d7c4.png

---判断框:根据条件判断,决定算法的继续执行的走向。

edf7c12ee49daa93c7359003f373b88c.png

---处理框:表示基本功能的处理的描述。

538fb1bbc7b65cce6c7d5251d4d23810.png

---流程线:表示流程的路径和方向。

7336bffa3572ab9dc919577e2c43d5e9.png

---连接点:表示流程中“向”和“来自”其他地点的输出或输入。

(3)N-S流程图法:全部算法以一个大的矩形框表示,内包含一些从属于它的小矩形框。

顺序语句:

e9fb4cb430b71ed2c2c1d03af70cc741.png

选择语句:

a5c68b63ce3174ae94fea181aae5b3d2.png

循环语句:

d72b37b7aa459afcf484ab7862e391cb.png

fcf2b7e3ce96445fbb8af0d3e9654a82.png

(4)伪代码法:简称伪码,伪代码是介于自然语言和计算机语言之间的文字和符号来描述算法。

7)算法评价

(1)正确性:设计和评价算法的首要条件。

(2)算法的时间特性:指依据算法编制成程序后在计算机中运作所耗费时间的长短。

算法的时间复杂度:把程序中语句重复执行次数之和作为程序运行时的时间特性。

(3)算法的空间特性:指依据算法编制成程序后在计算机中运行所占用空间的大小。

算法的空间复杂度:在计算机上运行所占用的空间同样也是问题规模n的一个函数。

(4)算法的易理解性。

3、程序设计的过程。

1)程序设计步骤

383b7fa64d7adac3c555b4f9f7c8cdd9.png

2)测试的前提:程序通过编译,没有语法和连接上的错误。

3)测试用例:为了发现程序中的错误而设计的测试数据。

4)黑盒测试:又称功能测试或数据驱动测试,不考虑程序的内部结构和处理过程,只对程序的接口进行测试,检查程序是否能适当地接受输入数据并产生正确的输出信息。

黑盒测试技术有事务处理流程测试、等价类划分、边界值分析。

5)白盒测试:又称结构测试或逻辑驱动测试,检验程序内部的逻辑来测试,检查程序中每条通路是否正确工作。

百合测试有路径测试、语句测试、分支测试、条件组合测试。

4、程序设计思路

1)三种基本程序结构

(1)顺序结构:

特点:只有一个入口点和一个出口点。

组成:说明语句、赋值语句、输入输出语句、子函数调用语句、返回语句。

(2)选择结构:

特点:程序的处理步骤出现分支,根据某一特定的条件选择其中的一个分支执行。

形式:单选泽、双选择、多选择。

(3)循环结构

当型循环:先判断后执行。

直到型循环:先执行后判断。

2)结构化程序设计的基本思想

采用“自顶向下,逐步求精”(基本原则)的程序设计方法,结构化设计以模块化设计为中心,每个模块各个击破,最后再统一组装。

3)结构化程序设计的特征

(1)以三种基本结构的组合来描述程序

(2)整个程序采用模块化结构。

(3)以控制结构为单位,每个结构只有一个入口一个出口,各单位之间接口简单,逻辑清晰。

(4)采用结构化程序设计语言书写程序,并采用一定的书写格式使程序结构清晰,易于阅读。

(5)注意程序设计风格。

(6)有限制地使用转移语句,在非用不可的情况下,只限于在一个结构内部跳转,不允许从一个结构跳到另一个结构。

4)良好的设计风格

语句形式化、程序一致性、结构规范化、适当使用注释、标识符贴近实际。

5)面对对象的基本概念

(1)对象(object)---最简单的实体

对现实世界中对象的模式化,是数据和代码的组合,具有自己的特征和行为。

对象的特征用数据来表示,称属性。

对象的行为用对象中的代码来实现,称为对象的方法。

任何对象都由属性和方法组成的。

将反映对象的属性和行为封装在一起,是面向对象编程的基本元素,是面向对象设计的核心。

(2)类(class)

类是创建对象实例的模板,是同种对象的集合与抽象,它包含所创建对象的属性描述和行为特征的定义,对象是类的实例。

(3)属性(property)

属性用来表示对象的特征,不同的对象有不同的属性。

(4)方法(method)

方法是对对象的属性的各种操作。

(5)事件、事件过程和事件驱动

事件是面向对象程序设计中对应于“消息”的术语。

对象的事件是指系统事先设定的,能被对象识别和响应的动作。

事件过程:应用程序处理事件的步骤。

事件驱动的编程机制是程序执行后系统等待某个事件的发生,然后去执行处理此事件过程,待事件过程执行完后,系统又处于等待某事件发生的状态。

(6)封装

封装机制将数据和代码捆绑在一起,避免了外界的干扰和不确定性。一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体,封装的目的在于将对象的使用者和对象的设计者分开。

封装一方面通过数据抽象把相关的信息结合在一起,另一方面简化了接口。

封装性可降低开发过程的复杂性,提高效率和质量,同时也保证了程序中数据的完整性和安全性。

(7)继承

继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。

(8)多态性

多态机制使具有不同内部结构的对象可以共享相同的外部接口,虽然针对不同对象的具体操作不同,但通过一个公共类,他们可以通过相同的方式调用。

优点:大大提高程序的抽象程度和简洁性,降低类和模块之间的耦合性,有利于程序的开发和维护。

(9)消息传递

6)OOP的基本过程

(1)分析现实问题。

(2)建立模型(类属性/方法的确定及类之间关系的确定)。

(3)编程建立数据模型(属性、方法)。

(4)用类声明对象,通过对象间传递信息(方法调用)完成预订功能。

7)OOP的优点

(1)通过继承,减少多余的代码并扩展现有代码。

(2)在标准的模块上构建自己的程序,减少软件开发时间并提高生产效率。

(3)数据隐藏---保护程序免受外部代码的侵袭。

(4)允许一个对象的多个实例同时存在,彼此之间相互不干扰。

(5)允许将问题空间中的对象直接映射到程序中。

(6)基于对象的工程可以很容易地分割为独立部分。

(7)以数据为中心的设计方法允许我们抓住可实现模型的更多细节。

(8)面向对象的系统很容易从小到大逐步升级。

(9)对象间通信所使用的消息传递技术与外部系统接口部分描述更简单。

(10)便于控制软件复杂度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 内联函数_C++之内联函数

C继承C的一个重要特性是效率,在C中保护效率的一个方法是使用宏(macro),宏的实现是使用预处理器而不是编译器,预处理器直接用宏代码替换宏调用,所以就没有了参数压栈、生成汇编语言的CALL、返回参数、执行汇编语言的RETURN的时间花费&#xff…

10桌面管理文件收纳_二十余件精选桌面好物推荐,让学习工作生活满满正能量!...

这些提升办公桌幸福感的好物,能让你的学习与工作正能量满满!01 笔记本支架笔记本是为了人们出行方便而设计的,显示器的位置并没有照顾到长期对着显示器码字的人群,许多以笔记本为主力的办公族也被迫成为了低头族。绿巨能(llano)笔…

hash 值重复_面试题:HashSet是如何保证元素不重复的

面试官:你能简单介绍List和Set有什么区别吗?小憨:List是一个有序的集合,在内存是连续存储的,可以存储重复的元素,List查询快,增删慢;Set是一个无序的集合,在内存中不连续…

RabbitMQ 原文译03--发布和订阅

发布/订阅 在之前的案例中我们创建了一个工作队列,这个工作队列的实现思想就是一个把每一个任务平均分配给每一个执行者,在这个篇文章我们会做一些不一样的东西,把一个消息发送给多个消费者,这种模式就被称作"发布/订阅". 为了说明这个模式,我们将要创建一个简单的日…

html富文本编辑器插件_vue中使用vuequilleditor富文本编辑器

点击上方“小姚同学技术栈”快速关注我哟!vue-quill-editor是一个基于quill、适用于vue的富文本编辑器开源项目,支持服务端渲染和单页应用。目前项目热度还算可以,如果不考虑使用markdown,vue-quill-editor是一个比较好的选择。本…

二元函数图像生成器_GAN生成图像综述

点击上方“CVer”,选择加"星标"或“置顶”重磅干货,第一时间送达作者:YTimo(PKU EECS) 研究方向:深度学习,计算机视觉本文转载自:SIGAI摘要生成对抗网络(Generative adversarial network, GAN)…

设计模式之禅读书笔记

》设计原则《 》Single Responsibility Principle(单一职责原则)类只有一个修改的原因。 ●类的复杂性降低,实现什么职责都有明确的定义。 ●可读性高 ●可维护性高 ●变更引起的风险降低。 PS:基本不可能实现 》里氏替换原则&…

mysql mysql_set_charset_SQL注入攻击之 mysql_set_charset [转]

本文转载地址:http://hi.baidu.com/cuttinger/blog/item/e9a93901934755147bec2cb0.html1。老话题,mysql_real_escape_string单引号,大多数情况下,防止sql注入攻击足够了。$mysql mysql_connect("host","user&quo…

idea导入maven项目依赖报错_解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?

1、何为依赖冲突Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的项目中,使用了两个Jar包,分别是A和B。现在A需要依赖另一个Jar包C,B也需要依赖C。但…

java线程创建方式_Java创建线程安全的方法

原文链接 译者:秦建平 校对:方腾飞首先来看一个问题:下面这个方法是线程安全的吗?如何才能让这个方法变成线程安全的?public class MyCount {private static int counter 0;public static int getCount(){return coun…

win7 能下node什么版本_微软从未公开的win10版本,3GB+极度精简,老爷机有救了

在windows家族中,最好用的就是win7和XP系统。堪称经典,而且还是发展最成功的系统版本。前几天韩博士也发布一篇关于XP系统的文章,评论区引发极大争论。大家众说纷纭,觉得XP系统是顺畅,但是很多软件硬件都不支持&#x…

【Swift学习】Swift编程之旅(一)

学习一门新语言最经典的例子就是输出“Hello World!” print("Hello World!")  swift就是这样来输出的。 如果你使用过其他语言,那么看上去是非常的熟悉吧。但比一些c要简单的多吧 1、不需要导入一些单独的库,比如输入/输出或字符…

孔夫子二手书采集

文章目录 项目演示软件采集单本数据网页搜索数据对比 使用场景概述部分核心逻辑Vb工程图数据导入与读取下拉框选择参数设置线程 使用方法下载软件授权导入文件预览处理后的数据 项目结构附件说明 项目演示 操作视频详见演示视频,以下为图文演示 软件采集单本数据 …

为什么用redis做缓存而不是mybatis自带的缓存_如何用Java设计一个本地缓存,涨姿势了...

最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能。当然如果拿来和专门的缓存框架如ehcache来对比可能…

process 类 java_编写可执行jar——java的Process类的使用(二)

你知道怎么在控制台使用ping吗?那你知道怎么在java中使用ping吗?1.批处理文件批处理文件大家一定不陌生。接触最多的应该就是tomcat中的start.bat或者start.sh了。bat是在windows环境下运行的批处理文件,sh则是linux的shell脚本。2.adb指令安…

2782: [HNOI2006]最短母串

2782: [HNOI2006]最短母串 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3 Solved: 2[Submit][Status][Web Board]Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,…

c java 内部类_java程序中能否在内部类当中再定义一个内部类?

展开全部我被你的想62616964757a686964616fe78988e69d8331333363386664法震撼了,哈哈.亏你想的出来...这么弄代码不好理解,Java看起来醒目,也是Java中的一个规范!可以吗?必须可以..看代码演示...声明下,我也第一次,多次嵌套,看你想法后去试验下是可行的我用的两种办法!不多说看…

数据库分区分表以及读写分离

谈谈怎么实现Oracle数据库分区表 Oracle数据库分区是作为Oracle数据库性能优化的一种重要的手段和方法,做手头的项目以前,只聆听过分区的大名,感觉特神秘,看见某某高手在讨论会上夸夸其谈时,真是骂自己学艺不精&#x…

JSP Workshop

http://www.cnblogs.com/ITtangtang/p/4126395.html 发现http://www.tutorialspoint.com/里的资料很全也很不错啊! 资料:http://www.tutorialspoint.com/jsp/jsp_tutorial.pdf 另外,http://www.runoob.com/jsp/jsp-tutorial.html 中关于JSP…

h5页面不可 移动_H5营销|为什么H5适合于微信营销

随着互联网技术的不断发展,更新在移动互联网时代,网络营销也开始越来越新颖化,而微信H5就是其中的佼佼者。它的出现满足了用户视觉上的审美要求,并且可以使营销方式变得更加的美观整洁,那么这里就有一个问题。为什么微…