首页 > 其他分享 >泛语言计划 第二弹 函数

泛语言计划 第二弹 函数

时间:2024-07-04 21:52:22浏览次数:1  
标签:function 函数 text 第二 C++ 语言 返回值 name

开始之前,我们先复习一下数学中是怎么定义函数的。

数集A和B,如果A所有数在B中都存在且只有一个数与之对应,则称B是A的函数

由此,我们可以看出一个关键词:对应。

编程中的函数也一样,只是编程中不一定是数,也可以是布尔值、字符串,甚至操作。

这个A集,我们叫他参数,B集,叫他返回值。如果B是操作,相当于没有返回值,A一般不能是操作。

那么,知道函数的大致概念后,我们开始吧。

泛语言计划 第二弹 函数

本次举例使用语言:Scratch,C/C++,C#,Java,JavaScript,Kotlin,Python,Visual Basic,Swift 排名不分先后
(别问我为什么有Scratch,根据Tiobe语言排行榜,Scratch市场份额现在占所有编程语言的1.17%,排名第十六,三月份的时候甚至更高)
顺便祝贺C++成功超过C语言,晋升排行榜第二!

先从Scratch开始大家玩Scratch的时候,应该都注意到这个“自定义模块”吧
image
这就是函数,只是他只能对应一种操作。

比如,我没要让角色说出Hello World,就可以这么写
image
image
image
从这里,我们也可以看出编程中函数必须具备的两个东西:

一个是定义,相当于数学函数的解析式。一个是调用,就是使用函数。

定义函数,就是定义对应关系。比如说这个函数就定义了什么都对应说Hello World
image
而这个就定义了输入什么参数,就说什么
image
在调用下面这个函数的时候,就需要把字符串作为参数传给函数。
image
那么,参数是怎么传递的呢?

我记得整个公众号的第一篇文章,我就讲过关于变量的内容。我们再用Mind+上传模式(类似与Scratch)来讲解
image
可以看到,这里变量有了三种类型,数字型(其实更准确的说叫浮点型,可以理解为小数)、字符串类型,列表型。所有编程语言都有变量类型,只是有的语言可以自动识别变量类型,不用手动指定。变量可以储存一个值,你可以随时设置变量的值,也可以读取变量的值。

函数的这些参数,其实都是变量。调用函数时,实际发生的,就是把你输入进去的值,赋值给参数变量。
image

这些参数变量只是一个壳子,一个形式,并不是你实际输入的东西(值相等,但不是一个东西)。

因此,我们叫他形式参数,简称形参

而你调用函数时输入的就叫实际参数,简称实参
image
好了,Scratch部分结束,接下来正式开始敲代码。

函数的定义

由于函数的英文是function,大部分语言定义函数都是用fun/func/function等关键字,在需要手动定义类型的语言,往往还需要指定返回值类型。

除了特别特殊的Python

def funtion_name():
	pass

Python
注:Python中pass是占位符号,别的语言没有东西可以空着,但Python不行

接下来,是其他不需要手动定义类型的语言。

function function_name(){
}

javascript

Visual Basic函数有两种,没有返回值的称为“子程序”,有返回值的才被称作“函数”。我们先讲子程序,函数我们后面讲到返回值了再讲。

Sub sub_name()
End Sub

Visual Basic

接下来是需要手动定义类型的语言,均以没有返回值举例

fun function_name():Unit{
}

kotlin
Unit可以省略

fun function_name():Unit{
}

kotlin

func function_name(){
}

swift
swift中,没指定就是没有返回值

C/C++,C#,Java的写法比较类似,这里合起来讲

void function_name(){
}

C/C++/C#/Java

添加参数

我们还是举之前Scratch的那个例子
image
这里的说我们用各编程语言的“输出”来代替。

首先是不需要指定类型的

def function_name(text):
	print(text)

python
当然,最好还是指定一下类型

def function_name(text:String):
	print(text)

python

function function_name(text){
	alert(text);
}

javascript

Sub sub_name(text)
	msgbox(text)
End Sub

visual basic

需手动指定类型

fun function_name(text:String){
	print(text)
}

kotlin

func function_name(text:String){
	print(text)
}

swift

#include <iostream>
using namespace std;
void function_name(string text){
	cout << text;
}

C++

#include <string.h>
#include <stdio.h>
void function_name(string text){
	printf("%s",text);
}

C

void function_name(String text){
	Console.WriteLine(text);
}

C#

void function_name(String text){
	System.out.println(text);
}

Java

添加返回值

这里我们就用数学题最常见的二次函数:y=x²+2x+3举例吧

首先是不需要指定类型的

def y(x):
	return x*x+2*x+3

python
当然,最好还是指定一下类型

def y(x:int)->int:
	return x*x+2*x+3

python

function y(x){
	return x*x+x*2+3;
}

javascript

前面我们说过,有返回值在visual basic中,就要用函数,也就是Function

Function y(x)
	function_name=x*x+x*2+3
End Function

visual basic

需手动指定类型

fun y(x:Int):Int{
	return x*x+x*2+3
}

kotlin

func y(x:Int)->Int{
	return x*x+x*2+3
}

swift

void y(int x){
	return x*x+x*2+3;
}

C/C++/C#/Java
这里再次四个一起讲

调用函数

这里我们就用上面定义的函数,又有参数,又有返回值。我们就输入1,输出那个返回值。

python/kotlin/swift差不多,这里直接合起来讲

print(y(1))

python/kotlin/swift

cout << y(1);//记得在头文件写上#include <iostream>

C++

printf("%d",y(1));//记得在头文件写上#include <stdio.h>

C

Console.WriteLine(y(1));

C#

System.out.println(y(1));

Java

alert(y(1));

javascript

msgbox(y(1))

visual basic
Visual Basic中,如果函数没有返回值,还可以使用Call关键字

Call y(1)

visual basic
或者直接省略Call

y 1

visual basic

上面的输出结果都是6

不过再次强调,实际参数不等于形式参数,比如下面的程序(C++举例)

#include <iostream>
using namespace std;
void change(int a){
	a=a+1;
}
int main(){
	int a=1;
	change(a);
	cout << a;
	return 0;
}

C++
上面程序输出结果是1而非2。毕竟只有形式参数a加了1变成了2,实际参数仍然是1。
在C++中,加上&就可以让形式参数和实际参数一致,其他语言也可以使用指针。这里就不细讲了,指针我们会单独开一个专题的。

#include <iostream>
using namespace std;
void change(int &a){
	a=a+1;
}
int main(){
	int a=1;
	change(a);
	cout << a;
	return 0;
}

C++
结果为2

本期教程到此结束,我还要忙着做球说化学第零集呢
小预告:
image
(右上角不要管他,是我视频播放器的窗口,实际视频里没有)

标签:function,函数,text,第二,C++,语言,返回值,name
From: https://www.cnblogs.com/eason66-blog/p/18284742/function1

相关文章

  • 7.1.SQL注入-基于函数报错的方式来利用updatexml()
    基于函数报错的方式来进行利用-字符型(本页updatexml())前提条件是后台数据库没有屏蔽数据库语法报错信息updatexml()方法详解注释:第一个参数,意思就是xml文档的名称第二个参数,意思就是定位到xml文档中指定的某一个位置的更新第三个参数,意思就是将文档中指定某一个位置......
  • 7.2.SQL注入-基于函数报错extractvalue(),floor()
    注入基于函数报错extractvalue(),floor()-字符型基于extractvalue()爆出数据库版本payload语句:kobe'andextractvalue(0,concat(0x7e,version()))#爆出数据库版本基于floor()floor()函数就是取整数爆出数据版本信息kobe'and(select2from(selectcount(*),......
  • C语言数据类型和变量(三)
    目录1.赋值操作符=1)连续赋值2)复合赋值符2.单目操作符:++、--、+(正号)、-(负号)1)++和--2)+和-3.强制类型转换4.printf()函数1)基本语法 2) 占位符3)占位符列举4)输出格式5.scanf()函数1)基本用法2)scanf的返回值3)占位符4)赋值忽略符*1.赋值操作符=在变量......
  • YOLOv5改进 | 损失函数 | EIoU、SIoU、WIoU、DIoU、FocuSIoU等多种损失函数
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转   ......
  • Python学习笔记28:进阶篇(十七)常见标准库使用之质量控制中的代码质量与风格第二部分
    前言本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。根据模块知识,一次讲解单个或者多个模块的内容。教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html质量控制质量控制(QualityControl,QC),主要关注于提高......
  • 「代码随想录算法训练营」第二天 | 数组 part2
    977.有序数组的平方题目建议:本题关键在于理解双指针思想题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/题目难度:简单文章讲解:https://programmercarl.com/0977.有序数组的平方.html视频讲解:https://www.bilibili.com/video/BV1QB4y1D7ep题目状态:通过......
  • 使用go语言实现快速排序、归并排序、插入排序、冒泡排序、选择排序
    冒泡排序(BubbleSort):原理:比较相邻的元素,如果前一个比后一个大,就交换它们。这个过程会使得每一轮最大的元素“冒泡”到数组的末尾。时间复杂度:O(n^2)稳定性:稳定//BubbleSort函数使用冒泡排序算法对数组进行排序funcBubbleSort(arr[]int){ n:=len(arr) fori:=0......
  • C语言程序是怎么在计算机中运行起来的
    hello.c#include<stdio.h>intmain(){ printf("hello,world\n"); return0;}这段C语言程序的代码能被编程人员读懂,但是计算机系统读不懂。C语言、C++、java这些高级编程语言本质上还是人类用的语言而不是计算机用的语言。为了能在计算机上运行这个C语言程序,需......
  • C语言控制流练习题
    当用户输入5的时候,使用嵌套循环产生下列图案(5行美元符号,每行递增一个字符#include<stdio.h>intmain(void){intline;//输入行数scanf("%d",&line);inti;for(i=1;i<=line;i++)//从每行开始打印{for(intj=1;j<=i;j++)//每一行需要打印数{......
  • C语言课设-电话订餐管理系统
    一、设计需求        某餐厅有大、中、小三种餐桌各5个,餐桌号分别为A1-A5,B1-B5,C1-C5,大餐桌可供8-10人用餐,中餐桌可供5-7人用餐,小餐桌可供1-4人用餐。电话订餐信息包括:订餐编号、订餐者姓名、订餐者电话、用餐时间、用餐人数、订餐是否成功,如下表所示。订餐编号订......