程序三大结构-系统学习一

简介: 编程从三大结构考虑问题,这样的思考方式、学习方式也有了更加深刻的认识与理解

一、背景介绍


1.经过高人指路,略有通透;潜心苦学,终有所成。

2.自此将自己的感受进行记录;所谓世间万物都可以通过公理+逻辑进行推理出来,那么程序中的公理是什么呢?对了,您猜对了,就是我下面要介绍的三大结构。

3.计算机科学家Corrado Bohm和Giuseppe Jacopini证明,使用顺序(sequencing),选择(alternation)和循环(iteration)这三种结构就足以表达所有程序的本质(《编程导论(Java)·3.1.1 三种结构、Java语句》 严千钧 著.编程导论(Java).北京:清华大学出版社)。


二、学习思路


1.绘制图

2.查阅资料、并完善图

3.编写代码

4.代码和图对比理解,图中每一个箭头每一个拐角在代码中的对应关系

5.过程中提出问题,用示例和书中的描述来解答问题


三、学习过程


1.下面为三大结构图


20210425140312690.png


2.下面为三大结构对应的代码


package com.a1threeStructures;
/**
 * 功能描述:顺序结构
 *
 * @Author:makang
 * @Date: 2021/4/16 9:30
 */
public class a1_sequencing {
    public static void main(String[] args) {
        //以下在眼睛可见的过程中是执行3行语句
        //如果加上汇编语言可就不是三句了,
        String who = "我";
        String what = "是一个顺序结构";
        System.out.println(who+what);
    }
}


package com.a1threeStructures;
/**
 * 功能描述:选择结构
 *
 * @Author:makang
 * @Date: 2021/4/16 9:30
 */
public class a2_alternation {
    public static void main(String[] args) {
        //if else实现
        System.out.println("一、小马开始利用if else 来实现三大结构中选择结构的作用与意义");
        //1.单选
        ifSingleChoice();
        //2.双选
        ifDoubleChoice();
        //3.多选
        ifMultipleChoice();
        //4.嵌套判断
        ifNestingJudgment();
        // switch case的示例
        System.out.println();
        System.out.println("二、小马开始利用switch case来实现三大结构中选择结构的作用与意义");
        //switch 单选
        switchSingleChoice();
        //switch 双选
        switchDoubleChoice();
        //switch 多选
        switchMultipleChoice();
        System.out.println("小马开始利用switch case来实现三大结构中选择结构的作用与意义——结束");
    }
    /**
    * if单选
    *@param
    *@return
    */
    public static void ifSingleChoice(){
        String name = "小马";
        if(name== "小马")
        //交汇点(圆圈)
        {
            System.out.println("1."+name+",实现了if else中的单选结构");
        }
        //18行
        System.out.println("小马写的程序继续跑。。。。");
    }
    /**
    * 方法描述:if双选
    *@param
    *@return
    */
    public static void ifDoubleChoice(){
        String name = "小马";
        if(name == "小马"){
            System.out.println("2."+name+",实现了if else 中的双选结构true情况");
        }else{
            System.out.println("2."+name+",实现了if else 中的双选结构false情况");
        }
        System.out.println("小马写的程序继续跑。。。。");
    }
    /**
    * 方法描述:if多选
    *@param
    *@return
    */
    public static void ifMultipleChoice(){
        String name = "小马";
        if(name == "小马"){
            System.out.println("3."+name+",实现了if else 中的多选结构;当名称等于小马的时候");
        }else if(name == "小张"){
            System.out.println("3."+name+",实现了if else 中的多选结构;当名称等于小张的时候");
        }else{
            System.out.println("3."+name+",实现了if else 中的多选结构;当名称不是小马、小张的时候");
        }
        System.out.println("小马利用if else 来实现三大结构中选择结构的作用与意义;结束");
    }
    /**
    * 方法描述:if嵌套判断
    *@param 
    *@return 
    */
    public static void ifNestingJudgment(){
        String name = "小马";
        if(name.contains("小")){
            System.out.println("4."+name+",进入了第一层判断,"+name+"的名字中包含小");
            if(name.contains("马")){
                System.out.println("4."+name+",进入了第二层判断,"+name+"的名字中包含马");
            }else{
                System.out.println("4."+name+",进入了第二层判断,"+name+"的名字中不包含马");
            }
        }else{
            System.out.println("4."+name+",进入了第一层判断,"+name+"的名字中不包含小");
        }
    }
    /**
     * switch单选
     *@param
     *@return
     */
    public static void switchSingleChoice(){
        String name = "小马";
        System.out.println("小马写的程序继续跑。。。。");
        switch(name){
            case "小马" :
                System.out.println("1."+name+",实现了switch case中的单选结构;当名称等于小马的时候");
                break;
        }
        System.out.println("小马写的程序继续跑。。。。");
    }
    /**
     * 方法描述:switch双选
     *@param
     *@return
     */
    public static void switchDoubleChoice(){
        String name = "小马";
        switch(name){
            case "小马" :
                System.out.println("2."+name+",实现了switch case中的双选结构;当名称等于小马的时候");
                break;
            case "小张":
                System.out.println("2."+name+",实现了switch case中的双选结构;当名称等于小马的时候");
                break;
        }
        System.out.println("小马写的程序继续跑。。。。");
    }
    /**
     * 方法描述:switch多选
     *@param
     *@return
     */
    public static void switchMultipleChoice(){
        String name = "小马";
        switch(name){
            case "小马" :
                System.out.println("3."+name+",实现了switch case中的多选结构;当名称等于小马的时候");
                break;
            case "小张":
                System.out.println("3."+name+",实现了switch case中的多选结构;当名称等于小张的时候");
                break;
            default:
                System.out.println("3."+name+",实现了switch case中的多选结构;当名称等于小马&小张的时候");
        }
    }
}


package com.a1threeStructures;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/**
 * 功能描述:循环结构
 *
 * @Author:makang
 * @Date: 2021/4/16 9:30
 */
public class a3_iteration {
    public static void main(String[] args) {
        //1.for      当
        forType();
        //2.foreach  当
        System.out.println();
        foreachType();
        //3.while    当
        System.out.println();
        whileType();
        //4.do while 直到
        System.out.println();
        doWhileType();
        //5.迭代器    当
        System.out.println();
        iteratorType();
    }
    /**
    * 方法描述:for循环
    *@param
    *@return
    */
    public static void forType(){
        String name = "小马";
        System.out.println("一、"+name+",开始用for来实现三大结构中的循环结构了");
        for (int i = 0; i < 3; i++) {
            System.out.println(name+",循环了第"+i+"次");
        }
    }
    /**
    * 方法描述:foreach循环
    *@param
    *@return
    */
    public static void foreachType(){
        String name = "小马";
        System.out.println("二、"+name+",开始用foreach来实现三大结构中的循环结构了");
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        for (int i:list) {
            System.out.println(name+",循环的内容为:"+i);
        }
    }
    /**
    * 方法描述:while循环
    *@param
    *@return
    */
    public static void whileType(){
        String name = "小马";
        System.out.println("三、"+name+",开始用while来实现三大结构中的循环结构了");
        int i = 0;
        while (i < 3){
            System.out.println(name+",循环次数为第"+i+"次");
            i++;
        }
    }
    /**
    * 方法描述:do while 循环
    *@param
    *@return
    */
    public static void doWhileType(){
        String name = "小马";
        System.out.println("四、"+name+",开始用do while来实现三大结构中的循环结构了");
        int j = 0;
        do {
            System.out.println(name+",循环次数为第"+j+"次");
            j++;
        }while (j < 3);
    }
    /**
    * 方法描述:迭代器循环
    *@param
    *@return
    */
    public static void iteratorType(){
        String name = "小马";
        System.out.println("五、"+name+",开始用Iterator来实现三大结构中的循环结构了");
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        Iterator<Integer> integerIterator =list1.iterator();
        while (integerIterator.hasNext()){
            System.out.println(name+",循环次数中的值为:"+integerIterator.next());
            integerIterator.remove();
        }
    }
}


3.下面为学习过程中产生的问题

顺序的作用与意义?

三大结构的边界?


四、学习总结


1.三大结构在编程中的意义更加明确了

2.编程从三大结构考虑问题,这样的思考方式、学习方式也有了更加深刻的认识与理解


五、升华


1.代码如人生:

人生中又何尝不是顺序的执行,遇到路口进行选择,选择完之后又继续无限的循环进行。

2.然而在选择的时候我们可以详细考虑清楚,一旦选择了之后就要坚定不移的执行下去,终能达到自己所期望的结果。

3.发现事情的本质,编程是如此简单;通过知识的学习,建立自信人生。

相关文章
|
JavaScript
Vue项目中使用wangEditor富文本输入框(推荐)
Vue项目中使用wangEditor富文本输入框(推荐)
|
数据采集 数据可视化 数据挖掘
Python数据挖掘项目实战——自动售货机销售数据分析
Python数据挖掘项目实战——自动售货机销售数据分析
|
测试技术 程序员 Go
Go语言测试简明指南:深度解读go test命令
总的来说,go test是 Go 语言中一个强而有力的工具,每个 Go 程序员都应该掌握并把它融入到日常的开发和调试过程中。就像是一个眼镜过滤出的太阳,让我们在宽阔的代码海洋中游泳,而不是淹没。用好它,让我们的代码更健壮,让我们的生产力更强效。
907 23
|
弹性计算 容灾 对象存储
阿里云2核4G5M服务器一年和五年价格表_轻量和ECS租用费用
2023阿里云2核4G5M服务器一年和五年价格表_轻量和ECS租用费用
830 0
阿里云2核4G5M服务器一年和五年价格表_轻量和ECS租用费用
|
存储 人工智能 安全
《鸿蒙系统AI技术:筑牢复杂网络环境下的安全防线》
鸿蒙系统通过微内核架构、可信执行环境、数据保护机制、应用跟踪管理、智能检测与防护及安全沙盒等技术,构建了全方位多层次的安全防护体系。微内核精简稳定,缩小攻击面;可信执行环境保障敏感数据安全;数据分级防护和密钥管理确保信息安全;应用跟踪管理保护用户隐私;智能检测实时应对威胁;安全沙盒隔离风险。鸿蒙系统为复杂网络环境下的用户提供强大的安全保障,提升智能应用体验。
436 7
|
数据可视化 Python
流形学习(Manifold Learning)是一种非线性降维方法
流形学习(Manifold Learning)是一种非线性降维方法
713 24
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】自然语言处理(NLP)的突破,关注NLP在机器翻译、情感分析、聊天机器人等方面的最新研究成果和应用案例。
自然语言处理(NLP)作为人工智能的一个重要分支,近年来取得了显著的突破,特别在机器翻译、情感分析、聊天机器人等领域取得了显著的研究成果和广泛的应用。以下是对这些领域最新研究成果和应用案例的概述,并附带相应的代码实例。
1704 1
|
机器学习/深度学习 存储 算法框架/工具
【深度学习】猫狗识别TensorFlow2实验报告
本文介绍了使用TensorFlow 2进行猫狗识别的实验报告,包括实验目的、采用卷积神经网络(CNN)进行训练的过程,以及如何使用交叉熵作为损失函数来识别猫狗图像数据集。
835 1
|
Java 测试技术
深入理解Logback异步日志配置及性能优化
深入理解Logback异步日志配置及性能优化
1137 2
|
机器学习/深度学习 数据采集 算法
利用机器学习进行客户细分的技术解析
【5月更文挑战第17天】运用机器学习进行客户细分是提升企业精准营销和竞争力的关键。通过聚类分析、决策树、支持向量机和神经网络等算法,可深入理解客户需求和偏好。关键步骤包括数据收集预处理、特征选择、模型训练与优化,最终实现客户群体的精准划分,助力定制个性化营销策略。随着技术发展,机器学习在客户细分中的应用将更加广泛。
1014 1

热门文章

最新文章