diff --git a/1-ProceduralProgramming/4-Functions.ipynb b/1-ProceduralProgramming/4-Functions.ipynb index 19a94d783f2b88a793d602bfd674bfb4bcaca98f..27d1ccf7b720b7eafb1b5b7f857ab40b1ad1c94a 100644 --- a/1-ProceduralProgramming/4-Functions.ipynb +++ b/1-ProceduralProgramming/4-Functions.ipynb @@ -14,7 +14,7 @@ }, "source": [ "<h1>Table of contents<span class=\"tocSkip\"></span></h1>\n", - "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Function-definition\" data-toc-modified-id=\"Function-definition-1\">Function definition</a></span><ul class=\"toc-item\"><li><span><a href=\"#Passing-arguments-by-value\" data-toc-modified-id=\"Passing-arguments-by-value-1.1\">Passing arguments by value</a></span></li><li><span><a href=\"#Passing-arguments-by-reference\" data-toc-modified-id=\"Passing-arguments-by-reference-1.2\">Passing arguments by reference</a></span></li><li><span><a href=\"#A-bit-of-wandering:-using-C-like-error-codes\" data-toc-modified-id=\"A-bit-of-wandering:-using-C-like-error-codes-1.3\">A bit of wandering: using C-like error codes</a></span></li><li><span><a href=\"#Passing-arguments-by-pointers\" data-toc-modified-id=\"Passing-arguments-by-pointers-1.4\">Passing arguments by pointers</a></span></li></ul></li><li><span><a href=\"#Function-with-return-value\" data-toc-modified-id=\"Function-with-return-value-2\">Function with return value</a></span></li><li><span><a href=\"#Alternate-function-syntax\" data-toc-modified-id=\"Alternate-function-syntax-3\">Alternate function syntax</a></span></li><li><span><a href=\"#Function-overload\" data-toc-modified-id=\"Function-overload-4\">Function overload</a></span><ul class=\"toc-item\"><li><span><a href=\"#The-easy-cases:-arguments-without-ambiguity\" data-toc-modified-id=\"The-easy-cases:-arguments-without-ambiguity-4.1\">The easy cases: arguments without ambiguity</a></span></li><li><span><a href=\"#[WARNING]-Return-type-doesn't-count!\" data-toc-modified-id=\"[WARNING]-Return-type-doesn't-count!-4.2\">[WARNING] Return type doesn't count!</a></span></li><li><span><a href=\"#Good-practice:-don't-make-signature-vary-only-by-a-reference-or-a-pointer\" data-toc-modified-id=\"Good-practice:-don't-make-signature-vary-only-by-a-reference-or-a-pointer-4.3\">Good practice: don't make signature vary only by a reference or a pointer</a></span></li><li><span><a href=\"#Best-viable-function\" data-toc-modified-id=\"Best-viable-function-4.4\">Best viable function</a></span></li><li><span><a href=\"#Advice:-use-overload-only-when-there-is-no-ambiguity-whatsoever\" data-toc-modified-id=\"Advice:-use-overload-only-when-there-is-no-ambiguity-whatsoever-4.5\">Advice: use overload only when there is no ambiguity whatsoever</a></span></li></ul></li><li><span><a href=\"#Optional-parameters\" data-toc-modified-id=\"Optional-parameters-5\">Optional parameters</a></span></li><li><span><a href=\"#Lambda-functions\" data-toc-modified-id=\"Lambda-functions-6\">Lambda functions</a></span></li><li><span><a href=\"#Passing-a-function-as-a-an-argument\" data-toc-modified-id=\"Passing-a-function-as-a-an-argument-7\">Passing a function as a an argument</a></span></li><li><span><a href=\"#A-very-special-function:-main\" data-toc-modified-id=\"A-very-special-function:-main-8\">A very special function: <strong>main</strong></a></span></li><li><span><a href=\"#inline-functions\" data-toc-modified-id=\"inline-functions-9\"><code>inline</code> functions</a></span></li></ul></div>" + "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Function-declaration-and-definition\" data-toc-modified-id=\"Function-declaration-and-definition-1\">Function declaration and definition</a></span><ul class=\"toc-item\"><li><span><a href=\"#Function-declaration\" data-toc-modified-id=\"Function-declaration-1.1\">Function declaration</a></span></li><li><span><a href=\"#Function-definition\" data-toc-modified-id=\"Function-definition-1.2\">Function definition</a></span><ul class=\"toc-item\"><li><span><a href=\"#A-terminology-note:-parameter-and-argument\" data-toc-modified-id=\"A-terminology-note:-parameter-and-argument-1.2.1\">A terminology note: <em>parameter</em> and <em>argument</em></a></span></li><li><span><a href=\"#Functions-can't-be-nested,-or-declared-within-blocks\" data-toc-modified-id=\"Functions-can't-be-nested,-or-declared-within-blocks-1.2.2\">Functions can't be nested, or declared within blocks</a></span></li></ul></li></ul></li><li><span><a href=\"#How-to-pass-arguments\" data-toc-modified-id=\"How-to-pass-arguments-2\">How to pass arguments</a></span><ul class=\"toc-item\"><li><span><a href=\"#Passing-arguments-by-value\" data-toc-modified-id=\"Passing-arguments-by-value-2.1\">Passing arguments by value</a></span></li><li><span><a href=\"#Passing-arguments-by-reference\" data-toc-modified-id=\"Passing-arguments-by-reference-2.2\">Passing arguments by reference</a></span></li><li><span><a href=\"#A-bit-of-wandering:-using-C-like-error-codes\" data-toc-modified-id=\"A-bit-of-wandering:-using-C-like-error-codes-2.3\">A bit of wandering: using C-like error codes</a></span></li><li><span><a href=\"#Passing-arguments-by-pointers\" data-toc-modified-id=\"Passing-arguments-by-pointers-2.4\">Passing arguments by pointers</a></span></li></ul></li><li><span><a href=\"#Function-with-return-value\" data-toc-modified-id=\"Function-with-return-value-3\">Function with return value</a></span></li><li><span><a href=\"#Alternate-function-syntax\" data-toc-modified-id=\"Alternate-function-syntax-4\">Alternate function syntax</a></span></li><li><span><a href=\"#Function-overload\" data-toc-modified-id=\"Function-overload-5\">Function overload</a></span><ul class=\"toc-item\"><li><span><a href=\"#The-easy-cases:-arguments-without-ambiguity\" data-toc-modified-id=\"The-easy-cases:-arguments-without-ambiguity-5.1\">The easy cases: arguments without ambiguity</a></span></li><li><span><a href=\"#[WARNING]-Return-type-doesn't-count!\" data-toc-modified-id=\"[WARNING]-Return-type-doesn't-count!-5.2\">[WARNING] Return type doesn't count!</a></span></li><li><span><a href=\"#Good-practice:-don't-make-signature-vary-only-by-a-reference-or-a-pointer\" data-toc-modified-id=\"Good-practice:-don't-make-signature-vary-only-by-a-reference-or-a-pointer-5.3\">Good practice: don't make signature vary only by a reference or a pointer</a></span></li><li><span><a href=\"#Best-viable-function\" data-toc-modified-id=\"Best-viable-function-5.4\">Best viable function</a></span></li><li><span><a href=\"#Advice:-use-overload-only-when-there-is-no-ambiguity-whatsoever\" data-toc-modified-id=\"Advice:-use-overload-only-when-there-is-no-ambiguity-whatsoever-5.5\">Advice: use overload only when there is no ambiguity whatsoever</a></span></li></ul></li><li><span><a href=\"#Optional-parameters\" data-toc-modified-id=\"Optional-parameters-6\">Optional parameters</a></span></li><li><span><a href=\"#Lambda-functions\" data-toc-modified-id=\"Lambda-functions-7\">Lambda functions</a></span></li><li><span><a href=\"#Passing-a-function-as-a-an-argument\" data-toc-modified-id=\"Passing-a-function-as-a-an-argument-8\">Passing a function as a an argument</a></span></li><li><span><a href=\"#A-very-special-function:-main\" data-toc-modified-id=\"A-very-special-function:-main-9\">A very special function: <strong>main</strong></a></span></li><li><span><a href=\"#inline-functions\" data-toc-modified-id=\"inline-functions-10\"><code>inline</code> functions</a></span></li></ul></div>" ] }, { @@ -187,6 +187,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "## How to pass arguments\n", + "\n", "### Passing arguments by value\n", "\n", "In the simple example above, we passed the arguments by value, which is to say the values passed by the arguments were copied when given to the function:" @@ -1095,9 +1097,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "#include <iostream>\n",