白话编程--函数

发布时间:2024年01月22日

前言

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

引入

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

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

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

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

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

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

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

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

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

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

定义

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

白话定义

? ? ? ? "我想做一件事"

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

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

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

函数格式

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

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

? ? ? ? ? ? ? ? ? ? 语句;

? ? ? ? ?????????return? 返回值变量

? ? ? ? }

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

????????

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

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

? ? ? ? ? ? ? ? ? ? ?语句;

? ??? ? ? ? }

分析

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

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

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

数据可见性? ? ? ? ?

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

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

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

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

更加灵活的函数

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

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

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

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

? ? ? ? 二.函数重载.

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

文章来源:https://blog.csdn.net/jllws1/article/details/135735631
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。