程序设计中的流程控制

问说网 · 发布于 2015-01-31 · 字数3265 · 浏览 1303 · 评论 0

大多一门语言都提供了流程控制,形成了各自的语言关于流程语句的语法要素(更高级的跳转机制有异常等)。

设计即逻辑的逻辑,而且是面向人的控制逻辑的抽象即设计的第四种意思是让抽象以人。需要的方式进行组织,即人影响抽象的能力。

实际上设计无所不在,从你写第一行控制流程代码开始,你就在设计了,只不过是隐式的,机器并不会流程控制,是语言赋于你能以人类看得明白的流程设计逻辑向机器发令的。如果说流程控制设计是细小的,那么OO 是一种显式化的设计,当你用OO 来写代码时你就在设计,虽然你写的是实现,设计与实现间无明显分界,你照样是在设计,因为你用到了OO 的三重思想,继承,泛化,封装,这就是控制逻辑的逻辑,是设计因素。一句话,设计无所在不在,即使在C 那样的紧实现的语言中也存在设计。

上面谈到的设计是代码抽象,代码结构,也是设计的一种。

其实循环,跳转这些东西来自于汇编语言 ,高级语言接纳了这些理念(因为汇编语言几乎就是机器逻辑,高级语言提供类汇编语言这样的机制是为了符合平台逻辑,况且高级语言最终要编译成汇编语言和平台逻辑,循环语言要最终被还原成汇编语言的形式,这些处理速度就可大大加快),发展出了它们关于循环,跳转封装了的语言机制。

C 语言最终要编译成汇编语言和平台逻辑,循环语言要最终被还原成汇编语言的形式,这就是调试的由来,调试分语法级调试和语义级运行期的错误。

对语言机制的理解,应该始于编译后端,再终于其语法对应的语义。为什么控制结构如此重要呢,因为它代表语法和语义方面的要求。比如布尔条件式,语义允许短路的语言会直接编译出条件判断后的结果。有时如果语法语义允许,语法上布尔运算也可等同算术运算。因为布尔结果用数值可表示。C 语言就是这样

C 语言字符串有大量指针这说明了与C++ 的抽象字符串不一样,说明C 是用底层来描述问题和设计的。

这些说明,要更好地了解一门语言,最好要上升到他的语法规范。联系编译原理知识来了一解一些东西。以及编译实现时是如何满足这些规范的。

for 的条件表达式可能短路(可以借由它的这种能力实现一定程序上的延迟求值),它的update 部分可以是任何算式,甚至不要updata 部分一般把最常发生case 的情况放在最后面,如果你学过汇编就知道,编译器是从后到前搜索的。

注意汇编是没有逻辑运算符的,只有移位运算符(而往往C++中把它们同用)有三种,逻辑(与,或,异或,取反),移位(无符号左移,右移,高位补0 等等)。

在汇编中,contine 和break 的区别, contiune 放在循环语句的某一具体层中,当满足条件时,继续执行下一个当前循环(即重新判断条件),而break 可以放在一个循环的任何地方,是跳出当前循环(注意因为循环可能是嵌套的,所以这个当前循环是指break 所在的那一个嵌套层次),然后继续执行这个循环外的第一条语句(即结束循环)。

C 语言中的信号是什么东西呢?

C 语言中的信号是一种高级的跳转机制,语言的流程控制结构。

高级语言在封装机器汇编逻辑上损失了一定的灵活性(因为只有汇编才是与机器逻辑一一对应的)

而高级语言的流程控制,分支逻辑等,终归是某种抽象品,只能提供有限的If Else形式,这些封装了的高级语言关于流程的逻辑(其实判断,循环都是流程控制逻辑)。

这就是封装,抽象,与原来可获得到底层灵活性的矛盾所在。

第一个if 往往是最基本的条件逻辑,else 是一种变相的if 逻辑,是针对于已提出的if的反面,是if 正好相反的条件,而其它的if,在一个if 存在的条件下,相当于else if。

一定要明白这里的区别,这些语言逻辑产生的对应的汇编码的绝对性决定我们得明白这些细微的差别。

理解这一类汇编逻辑时,我们得理解intel 平台的逻辑,条件指令逻辑,和分支逻辑这二大部分典型的有,高级语言的条件逻辑转化为汇编逻辑时是它的倒装形式,而且else 部分是放在所有分支逻辑前面的。

明白这些,将有助我们理解高级语言汇编出来的逻辑,从而更好明白高级语言的这些关于流程的语言机制。

本文系作者 问说网 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

相关文章

  • 2015-11-16[转]基于Backbone的复杂SPA架构
  • 2017-01-19用JavaScript实现给出的盒子的序列是否可连为一矩型
  • 2016-03-13资源管理设计之资源查找
  • 2016-12-02Response JS创建高性能的支持移动设备的网站
  • 2016-05-14设计师注意了!10个最常见的PHOTOSHOP误区
  • 2016-07-06JBoss下WebService开发
  • 2016-08-05十款Chrome扩展帮助前端设计师提升编码效率
  • 2016-07-15Python中给多维数组赋值之前判断Key是否存在的方法
  • 发布评论

    为您推荐

    问说网 · 发布于 2015-02-20

    纯CSS生成导航菜单圆形多彩通知标识徽章

    Menu With Notification Badges With CSS 纯CSS生成导航菜单圆形多彩通知标识徽章,一个实用的代码片段用来生成带有通知标识的…

    十分钟搞清字符集和字符编码
    问说网 · 发布于 2016-07-15

    十分钟搞清字符集和字符编码

    在介绍字符集之前,我们先了解下为什么要有字符集。我们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流。

    用JavaScript实现给出的盒子的序列是否可连为一矩型
    AustenJuliet · 发布于 2017-01-19

    用JavaScript实现给出的盒子的序列是否可连为一矩型

    by cpglkg <script>var arr=[5,10,15];function rect(arr,width){ arr.sort(fun…

    问说网 · 发布于 2016-03-11

    如何让DIV中的内容垂直居中

    虽然Div布局已经基本上取代了表格布局,但表格布局和Div布局仍然各有千秋,互有长处。比如表格布局中的垂直居中就是Div布局的一大弱项,不 过好在千变万化的CS…

    问说网 · 发布于 2016-12-02

    FlyJSONP轻量级的跨域AJAX请求插件

    FlyJSONP是一个JavaScript库,用于实现跨域GET和POST请求服务,支持JSONP,并取得一个JSON格式的数据响应,这个Library具有易于…

    使用纯CSS3代码创建手风琴菜单效果

    在本教程中我们将学习如何创建一个纯CSS3的手风琴菜单。这个菜单的灵感来自Futurico UI Pro by Vladimir Kudinov。我们将创建CS…

    • 使用纯CSS3代码创建手风琴菜单效果
    • 使用纯CSS3代码创建手风琴菜单效果
    • 使用纯CSS3代码创建手风琴菜单效果
    • 使用纯CSS3代码创建手风琴菜单效果
    问说网 · 发布于 2016-05-05 · 浏览 1050 · 评论 0

    实用设计指南!IOS8 最新设计参考指南

    这份IOS8 快速设计参考指南是百度无果后,偶然间在cssway上面发现的,现在分享给设计师朋友们,为了不让伙伴们到处寻找,我花点时间整理下分享给同学们,做成图…

    • 实用设计指南!IOS8 最新设计参考指南
    • 实用设计指南!IOS8 最新设计参考指南
    • 实用设计指南!IOS8 最新设计参考指南
    • 实用设计指南!IOS8 最新设计参考指南
    马达 · 发布于 2016-05-16 · 浏览 1013 · 评论 0
    Vincent · 发布于 2016-07-06

    Java接口和抽象类

    抽象类 抽象类中的方法既可以有抽象方法,也可以有非抽象方法,可以全部都是抽象方法,也可以全部都是非抽象方法 抽象方法只能出现在抽象类或接口中,不能出现在非抽象类…

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    问说网

    问说网分享与设计有关的文章素材界面和作品,提供设计教程、素材分享、界面欣赏、编程设计、设计书籍、设计师导航等内容,你可以在这里阅读、学习、分享、交流。

    13130 文章
    495 评论
    2019 人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 2474

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 2327

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 2376

    图片素材

    关注 图片素材

    文章 29463 · 浏览 1864

    高清图片

    关注 高清图片

    文章 26530 · 浏览 2032

    更多 推荐作者

    关注 怎麽继续

    文章 90 · 评论 2

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 走了留下什么

    文章 110 · 评论 0

    关注 籹孒不认输

    文章 94 · 评论 0

    关注 思念像咒语

    文章 102 · 评论 0

    关注 呼吸快窒息

    文章 104 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

    感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

    您的反馈我们已收到!

    感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!