zoukankan      html  css  js  c++  java
  • 小菜的前端编程散谈(3)

    小菜的前端编程散谈(3)

    数据类型

    在程序中要存储和表示不同的数据,这当然要使用不同的数据类型,所谓的类型就好像是一个数据的容器一样。打个比方,在日常生活中,我们使用杯子装水,使用碗盛饭,不同的东西使用不同的容器。计算机的世界里也是一样。
    计算机的世界只有二进制,而二进制来存储数据,当然就是存在0和1的位(Bit)上,所以不同的类型的主要差异在于位上面的区别。这是类型的第一重意义。类型的第二个意义在于,明确表示数据的含义。比如整型类型用来表示数据,字符类型表示字符描述。
    一般的程序中,会使用最基本的一些类型,比如 bool(有的也叫boolean)、int(有的也叫integer)、char或者string(字符串,也就是一段文本),这里大概说一下这几个类型:

    1. bool布尔类型,布尔类型一般表示真(true)或者假(false),也就是说,布尔类型实际上只描述两个值,所以,使用一个位(Bit)就够了(比如0表示false,1表示true)
    2. 整型,整型分常规整型和长整型,一般编程语言把常规整型定义为32位的长度,默认是有符号整数,最高一位表示正负,剩余31位表达0到2的31次方减1的整数范围。不过需要注意的是,比如,最大的32位整数2的31次方减1位2147483647,那么如果这个数加1会如何呢?这实际上等于越界,超过了最大数会变成最小数(改变了最高的正负位),而有的编程语言直接会报出越界错误。作为开发人员,需要时刻谨防数据越界,使用合理的方式进行数据检查
    3. 字符和字符串,字符在上一张就说过,每个字符为一个byte(字节),一个字节包含8个位。可以表达255种含义,对应ASCII编码表或者Unicode字符集合表。而一个字符串其实就是字符的集合(或者叫数组),比如“Hello World”这个字符串,其实就是由11个字符组成。

    程序结构

    函数

    程序结构指的是一个程序是如何组成和如何执行的,在传统的C语言环境中,程序由一系列的定义组成,定义包含类型(自定义类型、后面会讲到)定义和函数定义。而程序的执行就是从Main函数开始。函数是程序的基本执行单元。所谓函数就是定义了一个名称,定义了一组参数(输入),定义了返回类型(输出,也可以不用返回数据,就是void),然后函数体里面进行处理。函数可以嵌套和递归,嵌套就是函数里面调用其他函数,递归就是函数调用自己的过程。这些都有必要了解一下。我举个现实中的例子:

    string A(string message){
      return B(message);
    }
    string B(string message){
      return C(message);
    }
    string C(string message){
      return "This is your brick";
    }

    注意,这里我演示的例子是一个函数嵌套的例子,首先我们看定义,我们定义了三个函数,我把他们叫搬砖头,每个函数接受一个名字为message类型为string的参数用来表示接收的指令,返回string表示砖头结果。(明显看出函数3大要素,函数名,参数名和参数类型,返回类型),说完了函数定义再说函数实现,A接收到一个指令说要搬一块砖头,然后A把指令告诉B让B搬一块砖头,然后B又把指令转给C,然后C就返回This is your brick。这个结果实际上又往回传递给B然后传递给A最后传递给调用A函数的那个人。
    在真正的程序中,函数的结构往往都比这个复杂,比如A中调用B,然后做一些事情然后调用C最后再返回。
    还有一种情况,那就是函数调用自己,这个叫递归函数,递归函数是一种非常好用的比较实用型的容易理解的函数。具体含义(应该是有3个要素,才能符合一个标准的递归函数)去网上搜一下。我这里举一个例子来理解,拿最著名的斐波那契数列举例,求第N个数是多少?

    int Fib(int n){
      if(n<=1){
        return 1;
      }
      return Fib(n-1) + Fib(n-2);
    }

    看上去应该很容易理解吧,你可以发现递归函数的一些特征,比如必须有一个基准点可以返回一个值,比如函数调用自己,并且逐渐靠近基准点。

    其实关于函数的调用,在计算机中的处理指令一般都是入栈出栈操作,进入一个新的函数调用等于是压入一个函数栈,调用完一个函数等于是出栈操作。关于栈是什么后面会讲到。现在最好的是体会这个过程,在大脑中想象一颗倒着的树,最上层是函数调用者,往下就是各个子调用。自己想象一下,可以把函数调用理解成一棵树吗?我们生活中做的很多事情,你把它画成图,其实也可以是一棵树,好好发挥想象力想一下吧!

    今天就到这里,提示一下:如果有了一点积累有了一点理解,不妨马上用代码把它写出来吧,光说没用光读没用,必须要写代码!

    ps:下一次说一下程序控制流程了

  • 相关阅读:
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    Java实现 LeetCode 803 打砖块 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    Java实现 LeetCode 803 打砖块 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    英文标点
    post sharp 与log4net 结合使用,含执行源码 转拷
  • 原文地址:https://www.cnblogs.com/fecktty2013/p/4812768.html
Copyright © 2011-2022 走看看