1.  关于函数function调用,总结两个要点:

1.  函数调用一般产生一个值,这个值被赋值给某个变量

2.  函数所返回的值只能是一个,不可以是多个,不能像C语言中采用指针的方式返回多个值。因此,如果想产生多个结果则需要采用别的方式,实际上就是任务:

下面给出一段具体的代码(虽然很简单),体会函数的作用:

图1  函数调用图

这个函数的功能是完成了输入的三位二进制数的阶乘和,比如输入6,则完成1!+2!+3!+4!+5!+6!,。而sum_factorial(in)中的in就是要求的最大阶乘值,比如这里的6,sum_factorial则是函数名,通过函数可以发现,最终的结果实际上付给了函数名,即一般使用时,认为函数名就是函数的输出,因此有必要对函数名的数据格式进行声明,使得它能够和被赋值的变量的类型格式一致,比如这里的out。在这里,我们发现,函数的作用,突出产生了一个值,即我们要产生一个值,然后赋给一个变量。这里也体现了函数也是为了完成一个功能,但他强调这个功能的单值结果是什么。并且我们需要这个结果去干别的事情,即被赋值。并且,函数只能返回一个值!!!

2.关于任务的调用总结如下:

2.1  任务的调用强调完成一个功能,并不产生赋值作用

2.2  任务调用可以产生多个结果(类似于C语言中函数中的指针)

下面举例说明任务:

图2  任务调用图

从图中可以看出,任务完成了两个数交换的功能,而且并不赋值;说明了任务核心在于完成功能;在此需要这里这里的一个细节。任务中的x,y变量被定义成了inout双向形式的变量,这是因为,x,y实际上是相当于形参,最终还要将计算的结果返回去,送出去。即任务就像,送进来东西,经过加工,再送回去。

关于function和task的说明的更多相关文章

  1. (原创)task和function语法的使用讨论(Verilog,CPLD/FPGA)

    1. Abstract function和task语句的功能有很多的相似之处,在需要有多个相同的电路生成时,可以考虑使用它们来实现.因为个人使用它们比较少,所以对它们没有进行更深的了解,现在时间比较充 ...

  2. 在Grunt task中集成Protractor

    Protractor是专为AngularJS应用程序编写的UI自动化测试框架.前端构建有很多构建工具,比如Grunt.Gulp等.一般我们会把这些构建工具作为集成集成的脚本执行工具.所以如果把Prot ...

  3. 【手记】MTK之TASK创建及使用

    首先来看看task的数据类型声明,在config\include\hal\task_config.h中对task和module类型进行了定义. /*************************** ...

  4. C# Task ContinueWith的实现

    看了上一篇C# Task 是什么?返回值如何实现? Wait如何实现 我们提到FinishContinuations方法中会调用TaskContinuation实例,那么我们的ContinueWith ...

  5. grunt入门讲解4:如何创建task(任务)

    每当运行Grunt时, 你可以为其指定一个或多个任务, 这些任务用于告诉Grunt你想要它做什么事情. 如果你没有指定一个任务,并且你已经定义一个名为 "default" 的任务, ...

  6. [Compose] 10. Capture Side Effects in a Task

    We examine the data structure Task, see some constructors, familiar methods, and finally how it capt ...

  7. Multi-tasking RTOS for microprocessors with limited memory by saving only a single return address per task during context switching

    A real-time operating system (RTOS) for use with minimal-memory controllers has a kernel for managin ...

  8. [源码解析] 并行分布式任务队列 Celery 之 Task是什么

    [源码解析] 并行分布式任务队列 Celery 之 Task是什么 目录 [源码解析] 并行分布式任务队列 Celery 之 Task是什么 0x00 摘要 0x01 思考出发点 0x02 示例代码 ...

  9. ECMAScript 6 扫盲

    ECMAScript 6 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ES6 中 ...

随机推荐

  1. js 实现动态时间

    <span id="timebox"></span>                   //承载时间的span $(function () { var o ...

  2. IL范围不正确

    一.昨晚在改过一个bug之后在本机测试没问题,于是提交代码在测试服务器上发布之后测试的也没问题. 既然测试的都没问题,那就要往正式环境中发布咯,然而,发布到正式环境中就报错:IL范围不正确,这个错是打 ...

  3. intellij IDEA导入java源码

    第一步: 从安装的jdk目录中找到src.zip文件, 这里是java源码的压缩包 第二步: 打开IDEA, 随便一个java相关项目,打开右上角的project structure 第三步: 点开源 ...

  4. 十大PHP程序员必备工具

    十大PHP程序员必备工具 1.Notepad++ 总结来说就是小而精,7.4版本的软件包只有2.9M,比一般的IDE小数十倍,但是Notepad++的功能确是很全面的,代码高亮,语法折叠,宏功能,内置 ...

  5. 去除列表中的\n 和空字符

    s=['\n', 'magnet:?xt=urn:btih:060C0CE5CFAE29A48102280B88943880689859FC\n'] 上面是目标代码,一个列表,中间有\n,我们现在将其 ...

  6. P2068 统计和(树状数组模板)

    这是一道树状数组题 #include<iostream> using namespace std; ; int tree[maxn], n, m; char h; int x, y; vo ...

  7. 「PSR 规范」PSR-2 编码风格规范

    所有 PSR 规范请见:https://learnku.com/docs/psr  https://learnku.com/laravel/t/2079/psr-specification-psr-2 ...

  8. Python socket之tftp协议

    1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: ...

  9. (二 -0) 天猫精灵接入Home Assistant-安装MQTT服务器

    ubuntu 1604  阿里云 学生版轻型服务器 1 安装MQTT 进入官网 http://emqtt.com/ 点击下载 找到  ubuntu 1604  右键-复制链接 粘贴办理内容是下载链接第 ...

  10. Python框架学习之Flask中的常用扩展包

    Flask框架是一个扩展性非常强的框架,所以导致它有非常多的扩展包.这些扩展包的功能都很强大.本节主要汇总一些常用的扩展包. 一. Flask-Script pip install flask-scr ...