白话编程--函数

前言

        程序的核心之一,计算机表达逻辑的实现

引入

        ---程序=数据结构+算法. 这是关于"计算机编程到底是在做什么"最经典的描述.

                但对于一个想用白话快速理解程序作用的人,一个初学者来说,有些过于高大上了.

        ---程序是逻辑的语言 这是较为"亲近"的说法

        ---逻辑是什么?逻辑是因果关系

        ---注意:逻辑本身并不分"正确"或者"错误"的逻辑, 所谓正确或者错误是程序员自己定义的.

                程序运用"函数"来表达逻辑,更进一步说:用数据的变化来表示逻辑.

                "函数"一词来自数学里的定义.y=f(x).其中x是自变量,y是因变量. 程序引用了这个概念.

        ---逻辑是怎样实现的?

                程序通过编写函数(或者类方法)和调用函数(或者类方法)来实现逻辑.

                所以,函数是程序的实体.

定义

        函数是计算机表达逻辑的实现

白话定义

        "我想做一件事"

举例
        int add_int(int x, int y){
            return x+y;
        }

说明:这是一个函数,想做的是以下的事情:

        一个整数加法,输入两个整数,得到一个整数结果.

函数格式

        返回值类型   函数名(形参类型1 形参, 形参类型2 形参......){

                   调用其他函数;        //调用自己--递归;

                    语句;

                 return  返回值变量

        }

如果没有返回值, 则需要用void替代,即

        

      void   函数名(形参类型1 形参, 形参类型2 形参......){

                     调用其他函数;        //调用自己--递归;

                     语句;

            }

分析

        你想做一件事,你想表达一种因果关系. 其中"因"在形参当中,"果"在返回值当中.

        如果没有返回值,那么数据的变化应该出现在函数语句中.

        总之,函数会引起数据变化,并且用数据变化表达逻辑

数据可见性         

        此外,函数内部使用数据,涉及到数据可见性的问题.

        函数内可以使用的数据包括传入的形参,全局数据,局部变量,静态局部变量这几种.

         函数也可以调用其他函数,或者调用自己(递归)

         所以,函数是非常灵活的程序组织方式.

更加灵活的函数

        问题:如果写函数--想做一件事,追求的结果相同,但是给的条件不同,传入的形参不一样,又该如何解决呢?

        在面向过程的语言中,例如C语言,是无法解决的,只能定义多个函数,以不同的函数名相区分,调用函数时程序员做选择.显然这有些不方便.

        在面向对象的语言中,例如C++,有两种解决方案,虚方法和函数重载

        一.虚方法是非常重要的概念,他是接口的核心所在.虚方法将抽象和实现分离.对外调用虚方法,对内单独实现.

        二.函数重载.

        函数名相同,参数不同(形参顺序和形参个数不一致都算不同)可以直接定义,调用函数时自动查询并调用对应函数.

你可能感兴趣的:(c++)