程序设计中的流程控制

问说网 · 发布于 2015-01-31 · 字数3265 · 浏览 1296 · 评论 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-08-31通过命令行访问苹果系统相机Camera
  • 2017-01-19用JavaScript实现给出的盒子的序列是否可连为一矩型
  • 2016-12-02FlyJSONP轻量级的跨域AJAX请求插件
  • 2016-04-03使用原生的JavaScript操作DOM节点
  • 2016-12-02Response JS创建高性能的支持移动设备的网站
  • 2016-05-16缤纷上新!30个美艳绝伦的葡萄酒网站设计欣赏
  • 2016-05-16吐血推荐!300+值得收藏的设计师资源站
  • 2016-05-17梦寐以求!如何使用PS打造唯美的梦幻仙女
  • 发布评论

    为您推荐

    问说网 · 发布于 2015-11-15

    Bootstrap源码中的LESS变量详解

    Bootstrap 3以前版本的核心是用less来编写的,bootstrap对less进行了二次封装,提供了很多基础的less变量和函数,个人觉得非常有用,下面…

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

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

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

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

    Response JS创建高性能的支持移动设备的网站

    Response JS 是一个轻量级的 jQuery 插件,用来创建高性能的支持移动设备的网站。它提供了一套语法用来根据不同的设备环境动态替换HTML代码。例如…

    像艺术家学习!10条没人告诉过你的创意秘诀

    《像艺术家一样去偷:10条没人告诉过你的创意要诀》篇幅不长,却给初出茅庐的艺术家们提供了许多有益的指导,积极的鼓励和真知灼见,不乏风趣幽默。继续往下看,总能学到…

    • 像艺术家学习!10条没人告诉过你的创意秘诀
    • 像艺术家学习!10条没人告诉过你的创意秘诀
    • 像艺术家学习!10条没人告诉过你的创意秘诀
    • 像艺术家学习!10条没人告诉过你的创意秘诀
    BronteJacob · 发布于 2016-05-16 · 浏览 830 · 评论 0

    AI制作长投影效果图标

    AI制作长投影效果图标 在Dribbble、Behance等各大设计社区经常可以看到长投影设计,它看起来像是对“扁平化”风格的一种强化,特别是在设计图标或简单的…

    • AI制作长投影效果图标
    • AI制作长投影效果图标
    • AI制作长投影效果图标
    • AI制作长投影效果图标
    BloomerWillie · 发布于 2016-05-17 · 浏览 1152 · 评论 0
    问说网 · 发布于 2016-06-02

    C语言Side effect和Sequence point副作用

    访问易变对象,修改对象或文件,或者调用包含这些操作的函数都是副作用,它们都会改变执行环境的状态。计算表达式也会引起副作用。

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

    详解C语言中Volatile关键字的使用

    Volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。

    分享20款优秀的Web移动开发框架
    问说网 · 发布于 2016-06-25

    分享20款优秀的Web移动开发框架

    移动开发框架可以帮助开发者快速开发出满足需求的Web移动应用和网站,本文收集了20款针对开发者的移动开发框架,供开发者借鉴使用。

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    问说网

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

    13130 文章
    494 评论
    1949 人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 1848

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 1777

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 1784

    图片素材

    关注 图片素材

    文章 29463 · 浏览 1277

    高清图片

    关注 高清图片

    文章 26530 · 浏览 1482

    更多 推荐作者

    关注 秋天的孤寂

    文章 99 · 评论 0

    关注 倾听寂寞

    文章 83 · 评论 0

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 走了留下什么

    文章 110 · 评论 0

    关注 莪很迷茫

    文章 97 · 评论 0

    关注 呼吸快窒息

    文章 104 · 评论 0

    顶部 反馈 评论 底部

    意见反馈

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

    您的反馈我们已收到!

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