zoukankan      html  css  js  c++  java
  • 编程语言中三大语句结顺序、判断、循环结构本质是什么?

    以下探讨的是计算机本质问题,省略了无关过程。

    什么是顺序结构

    所谓顺序结构就是自上而下一条一条执行,为什么是一条一条的,因为存储设备物理上是串行的,存储的指令也是一个一个摆放的。顺序执行时计算机的本能不用做过多解释。

    什么是判断结构

    IF结构=CMP比较结构+GOTO有条件的跳转结构,这里不同的cpu比如arm和x86设计实现不同但原理相同。GOTO就是跳转到任意的代码位置。你可以将早期的计算机里可以执行的代码的执行理解成为打孔纸带的读取,计算机只能一个一个读取不能跳到之前的位置读取执行,GOTO语句就是可以跳转到纸带的任何位置再执行。

    分为两步

    1.将两个数字做比较,将比较结果放置在临时的寄存器里保存下来

    2.依据之前保存的内容做跳转

    什么是循环结构

    这种结构实现比较复杂,我们先看一个例子,就是求一个数字的前n项和的C表示方法

    int s=0;
    int i=0;
    for(;i<=a;i++){
    s=s+i;
    }
    return s+b;

    在汇编结构下表示的是

    int i; // r1@2
    int s; // r0@2
    int a_1; // r2@2

    if ( a < 0 )
    {
    s = 0;
    }
    else
    {
    i = 0; //就是原值
    s = 0; ////就是原值
    a_1 = a + 1; //预构造判断条件
    do
    s += i++; //这里的i++就是for中的第三个控制语句
    while ( i != a_1 ); //判断条件,原值是i<=a,它与i !=a + 1等价
    }
    return s + b;

    要知道在汇编语言里是没有循环结构的,只有顺序和判断结构,那为什么在汇编结构下有do while结构,那是因为表示方便,其实还是if结构,

    因此我们可以得出结论,for结构=两个if结构嵌套,与之不同的是内部的一条if结构的一条分支指向前面的代码,形成一个循环体。当我们看到有一个向前跳转时候基本可以断定这里有循环。

  • 相关阅读:
    C# ConfigMan.cs
    C# 反序列化JSON
    C#求数组最大值或最大值位置索引
    C#获取DataGridView数据源DataSource类型
    C#动态添加DataGridView列和行
    C# WinForm 检测文件是否被占用
    C#开源组件NPOI处理Excel导入DataTable数据至Sheet
    C# WinForm 扩展指定列宽适应DataGridView显示行数(二)
    C# WinForm 扩展指定列宽适应DataGridView显示行数
    VFP9 对 SqlServer Image字段的图片存取处理
  • 原文地址:https://www.cnblogs.com/GKLBB/p/14865083.html
Copyright © 2011-2022 走看看