Functional programming concepts. And applications on GDScript
|
|
- Darrell Lynch
- 3 years ago
- Views:
Transcription
1 Functional programming concepts And applications on GDScript
2 George Marques Godot contributor since 2015 Member of the project s leadership since 2017 Worked at Javary Games and IMVU (using Godot) Hired by Godot since November 2019 Co-author of the book Godot Engine Game Development in 24 Hours, published by Pearson Responsible for the UWP port and typed GDScript
3 Topics Introduction to functional programming Monad Functional programming characteristics Functions Applications (in general and on GDScript) Other resources
4 What is functional programming? Everything is a function Declarative instead of imperative Application of mathematical concepts Avoids changing external state (pure functions) Functions are also values (higher-order functions)
5 Let s talk about monad? A monad is a monoid in an endofunctor category - Rúnar Bjarnason
6 Or will we? Okay, let s not talk about monad
7 Disadvantages Declarative code is not always the most readable It s hard to combine pure functions and intended side-effects Immutability and recursion can lead to performance penalties The functional paradigm avoids loops in favor of recursion
8 Vantages Implementation of pure functions are easier to understand Looking at a function signature may be enough to know what it does Easier to run things in parallel (no need for locks) Testing functions in isolation is more straightforward Also easier to debug
9 Side effects By definition: changes in objects outside the function scope Change of global state Input and output Yes, this includes keyboard input and video output Changes in the object that contains the function (instance members)
10 Immutability Variables are treated as constants Forbidden to re-assign a value to a variable Forbidden to change properties of an object (Okay to change a local object for the sake of initialization) Instead of changes, make copies func nope(obj_to_change: Object) -> void func yep(obj_to_update: Object) -> Object
11 Pure function Don t have side effects All parameters are immutable A call with the same arguments return the same value every time Similar to the mathematical definition
12 First-class functions Function is also a value It can be assigned to a variable It can be passed as arguments to other functions It can be the return value of a function Everything that can be done with a value can also be done with a function Including putting them in arrays and dictionaries
13 First-class functions in GDScript Well, we re not there yet, but will soon
14 FuncRef to the rescue Exclusive Godot type that allows a function reference Then you can treat the reference as a value And call it later (with arguments) Making it in GDScript: Calling: var my_func = funcref(self, "my_method") my_func.call_func("an argument")
15 Higher-order functions Functions are first-order by default They re higher-order if they receive a function as an argument Or return a function as a result It s not mandatory that they are pure But we like them more if they are
16 Higher-order functions Examples map filter reduce Still not available in GDScript for now, but not hard to implement in script
17 Map Take an array and a unary function, returns a copy of the array with the function applied to every element Signature: func map(input: Array, function: FuncRef) -> Array Equivalent to: var my_arr := [1, 2, 3] var mapped := [] for element in my_arr: mapped.append(some_func(element))
18 Map Example 1 func half(num: int) -> int: return num / 2 func half_array(numbers: Array) -> Array: return map(numbers, funcref(self, "half")) func _ready() -> void: var numbers := [2, 4, 6] var halves := half_array(numbers) # [1, 2, 3]
19 Map Example 2 func get_id(user: User) -> int: return user.id func list_user_ids() -> Array: var users: Array = fetch_users() return map(users, funcref(self, "get_id"))
20 Map Possible implementation func map(input: Array, function: FuncRef) -> Array: var result := [] result.resize(input.size()) for i in range(input.size()): result[i] = function.call_func(input[i])
21 Filter Takes an array and a unary function, returns a new array with only the elements to which the function returns true Signature: func filter(input: Array, function: FuncRef) -> Array Equivalent to: var my_arr := [1, 2, 3] var filtered := [] for element in my_arr: if some_func(element): filtered.append(element)
22 Filter Example 1 func is_even(num: int) -> bool: return num % 2 == 0 func get_evens(numbers: Array) -> Array: return filter(numbers, funcref(self, "is_even")) func _ready() -> void: var numbers := [1, 2, 3, 4] var evens := get_evens(numbers) # [2, 4]
23 Filter Example 2 func is_active(user: User) -> bool: return user.active func list_active_users() -> Array var users: Array = fetch_users() return filter(users, funcref(self, "is_active"))
24 Filter Possible implementation func filter(input: Array, function: FuncRef) -> Array: var result := [] for element in input: if function.call_func(element): result.append(element) return result
25 Reduce Takes an array, a binary function, and a value, returns a single value with the function applied to each element and the previous result Signature: func reduce(input: Array, function: FuncRef, base) Equivalent to: var my_arr := [1, 2, 3] var reduced = base for element in my_arr: reduced = some_func(reduced, element)
26 Reduce Example 1 func sum(num1: int, num2: int) -> int: return num1 + num2 func array_sum(numbers: Array) -> int: return reduce(numbers, funcref(self, "sum"), 0) func _ready(): var numbers := [1, 2, 3, 4] var sum: int = array_sum(numbers) # 10
27 Reduce Example 2 func larger(num1: int, num2: int) -> int: return num1 if num1 > num2 else num2 func get_user_age(user: User) -> int: return user.age func get_highest_user_age() -> int: var user_ages: Array = map(fetch_users(), \ funcref(self, "get_user_age")) # Base value is omitted here return reduce(user_ages, funcref(self, "larger"))
28 Reduce Possible implementation func reduce(input: Array, function: FuncRef, base = null): var accumulator = base var index := 0 if not base and input.size() > 0: accumulator = input[0] index = 1 while index < input.size(): accumulator = function.call_func(accumulator, input[index]) index += 1 return accumulator
29 Lambda Function definition where a value (expression) is expected Helps in cases where the function is simple or doesn t need to be reused in another context Example: var result := map([2, 4, 6], x => x / 2) print(result) # [1, 2, 3]
30 Lambdas in GDScript Well, we re not there yet, but will soon Seriously!
31 Let s talk a bit about theory I promise it s only a bit
32 Functor (No need to flee, it s not that hard) Functor is a type that can be mapped, that is, there s a map function applicable to the type Yes, that s it As we say, Array is a functor because it has* a map function *Technically the function isn t in the Array class, but it doesn t matter conceptually.
33 Monoid Monoid is a type that has a function with three properties: Binary Has two parameters Associative function(a, function(b, c)) == function(function(a, b), c) Has a neutral (identity) element function(a, identity) == function(identity, a) == a It doesn t need to be commutative (function(a, b)!= function(b, a))
34 Monoid Example: integers with sum as the function Binary: (two arguments: 3 and 4 ) Associative: (1 + 2) + 3 = 1 + (2 + 3) = 6 Identity element: = = 2
35 Monoid Array is also a monoid! What s the function that makes it a monoid? Concatenation: Binary: [1, 2] + [3, 4] == [1,2,3,4] Associative: ([1,2] + [3,4]) + [5,6] == [1,2] + ([3,4] + [5,6]) == [1,2,3,4,5,6] Identity element: [] + [1,2] == [1, 2] + [] == [1, 2]
36 Monad Yes, let s talk about monad! As said: A monad is a monoid in an endofunctor category In other words: Monad is a monoid that is also an endofunctor In the context of programming, every functor is an endofunctor Which means...
37 Array is monad! Yes, that s it It s a functor (can be mapped) It s a monoid (regarding the concatenation function) So it s also a monad
38 Promise Encapsulates asynchronous operations Allows to maintain the chain of operations while we wait the promise to be fulfilled That is, the asynchronous operation complete The promise can be treated as the value that it contains Suppress side effects
39 Promise Example: HTTP request (promise implementation) class_name Promise signal success(value) # probably want error and done signals too var done: bool = false func _success(value): done = true emit_signal("success", value)
40 Promise Example: HTTP request (kitten request class) var promise: Promise = null func kitten_request(width: int, height: int) -> Promise: var http := HTTPRequest.new(); add_child(http) http.request(" % [width, height]) http.connect("request_completed", self, "_on_request_completed") promise = Promise.new() return promise func _on_request_completed(result, response_code, headers, body): var image := Image.new() image.load_jpg_from_buffer(body) var texture := ImageTexture.new() texture.create_from_image(image) promise._success(texture)
41 Promise Example: HTTP request (using promises) func _ready(): var kitten_promise: Promise = kitten_request(800, 600) kitten_promise.connect("on_success", self, "on_get_kitten") func on_get_kitten(kitten: Texture): $KittenSprite.texture = kitten
42 Promise
43 Promise in functional programming Promise is also a monad! Monad can also be seen as encapsulation inside a context In an Array, the context is the multiplicity of values In Promise, the context is the promise of a future resolution To put in the context is usually called Lift
44 Promise as a functor The mapping in promise means applying the function to the final resolved value Like the kitten picture It s possible to define Promise.map() which applies the function only when it resolves (that is, when the async operation completes) Remember that map() returns the value inside the context, so Promise.map() also returns a Promise In turn, it s possible to apply other pure operations to a Promise before it is fullfilled
45 Promise map Example var users: Promise = request_users() # Promise of array of users var active_users: Promise = users.map(funcref(self, "filter_active_users")) active_users.connect("success", self, "print_users") func filter_active_users(users: Array) -> Array: return filter(users, funcref(self, "is_active")) func print_users(users): print(users)
46 Monad as side effect isolation Like Promise encapsulates an asynchronous operation, Monads can also encapsulate side effect It s possible to operate with the values inside the lifted context (i.e. inside the Promise) without depending on its effects Example: operating in a text input before the user types anything The function needs only to get the text as argument, not wait for the side effect Keeping side effects and shared state only in a small and specific part of the code
47 Learn a functional language At first it may be hard to assimilate the concepts But the patterns can be applied in other languages and be used to increase code quality Examples of functional languages: Elm, Elixir, Haskell, Clojure, Scala, F#
48 Questions? github.com/vnen twitter.com/vnen
49 Thank you! github.com/vnen twitter.com/vnen
Unit 8: Immutability & Actors
SPP (Synchro et Prog Parallèle) Unit 8: Immutability & Actors François Taïani Questioning Locks Why do we need locks on data? because concurrent accesses can lead to wrong outcome But not all concurrent
More informationSources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
More informationMoving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
More informationby Mario Fusco mario.fusco@gmail.com twitter: @mariofusco Monadic
by Mario Fusco mario.fusco@gmail.com twitter: @mariofusco Monadic Imperative languages Java C# C / C++ Fortran Add abstractions Scala F# Subtract abstractions Hybrid languages Algol Lisp ML Haskell Functional
More informationName: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
More informationVHDL Test Bench Tutorial
University of Pennsylvania Department of Electrical and Systems Engineering ESE171 - Digital Design Laboratory VHDL Test Bench Tutorial Purpose The goal of this tutorial is to demonstrate how to automate
More informationPART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
More informationMultichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is
Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is preceded by an equal sign d. its name has undereline 2. Associations
More informationProgramming Languages
Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately
More informationFunctional Programming. Functional Programming Languages. Chapter 14. Introduction
Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The
More informationBusy Java Developer's Guide to Functional Programming. Ted Neward Neward & Associates http://www.tedneward.com
Busy Java Developer's Guide to Functional Programming Ted Neward Neward & Associates http://www.tedneward.com Who is this guy? Principal Consultant: architect, mentor, free agent coach BEA Technical Director,
More informationLambda Architecture. CSCI 5828: Foundations of Software Engineering Lecture 29 12/09/2014
Lambda Architecture CSCI 5828: Foundations of Software Engineering Lecture 29 12/09/2014 1 Goals Cover the material in Chapter 8 of the Concurrency Textbook The Lambda Architecture Batch Layer MapReduce
More informationClasses and Objects in Java Constructors. In creating objects of the type Fraction, we have used statements similar to the following:
In creating objects of the type, we have used statements similar to the following: f = new (); The parentheses in the expression () makes it look like a method, yet we never created such a method in our
More informationAP Computer Science Java Mr. Clausen Program 9A, 9B
AP Computer Science Java Mr. Clausen Program 9A, 9B PROGRAM 9A I m_sort_of_searching (20 points now, 60 points when all parts are finished) The purpose of this project is to set up a program that will
More informationKITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
More informationFirst Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science
First Java Programs V. Paúl Pauca Department of Computer Science Wake Forest University CSC 111D Fall, 2015 Hello World revisited / 8/23/15 The f i r s t o b l i g a t o r y Java program @author Paul Pauca
More informationProgramming Fundamentals. Lesson 20 Sections
Programming Fundamentals Lesson 20 Sections Today, we will Study sections, in Haskell. Sections are another class of expressions that represent functions. A section is a binary operation where one of the
More informationBasics of I/O Streams and File I/O
Basics of This is like a cheat sheet for file I/O in C++. It summarizes the steps you must take to do basic I/O to and from files, with only a tiny bit of explanation. It is not a replacement for reading
More informationPure and functional JavaScript Developer Conference 2013. Jakob Westhoff (@jakobwesthoff) November 7th, 2013
Pure and functional JavaScript Developer Conference 2013 Jakob Westhoff (@jakobwesthoff) November 7th, 2013 I am Jakob Westhoff Senior PHP professional Senior JavaScript professional Open source enthusiast
More informationCourse Title: Software Development
Course Title: Software Development Unit: Customer Service Content Standard(s) and Depth of 1. Analyze customer software needs and system requirements to design an information technology-based project plan.
More informationSection IV.1: Recursive Algorithms and Recursion Trees
Section IV.1: Recursive Algorithms and Recursion Trees Definition IV.1.1: A recursive algorithm is an algorithm that solves a problem by (1) reducing it to an instance of the same problem with smaller
More informationLecture Notes on Linear Search
Lecture Notes on Linear Search 15-122: Principles of Imperative Computation Frank Pfenning Lecture 5 January 29, 2013 1 Introduction One of the fundamental and recurring problems in computer science is
More informationDigital System Design Prof. D Roychoudhry Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
Digital System Design Prof. D Roychoudhry Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 04 Digital Logic II May, I before starting the today s lecture
More informationFunctions Recursion. C++ functions. Declare/prototype. Define. Call. int myfunction (int ); int myfunction (int x){ int y = x*x; return y; }
Functions Recursion C++ functions Declare/prototype int myfunction (int ); Define int myfunction (int x){ int y = x*x; return y; Call int a; a = myfunction (7); function call flow types type of function
More informationCS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013
Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More informationCHAPTER 2. Logic. 1. Logic Definitions. Notation: Variables are used to represent propositions. The most common variables used are p, q, and r.
CHAPTER 2 Logic 1. Logic Definitions 1.1. Propositions. Definition 1.1.1. A proposition is a declarative sentence that is either true (denoted either T or 1) or false (denoted either F or 0). Notation:
More informationApplication Layer -1- Network Tools
EITF25 Internet: Technology and Applications Application Layer -1- Network Tools 2015, Lecture 08 Kaan Bür Previously on EITF25 Addressing above IP Ports, sockets Process-to-process delivery Transport
More informationC Programming. for Embedded Microcontrollers. Warwick A. Smith. Postbus 11. Elektor International Media BV. 6114ZG Susteren The Netherlands
C Programming for Embedded Microcontrollers Warwick A. Smith Elektor International Media BV Postbus 11 6114ZG Susteren The Netherlands 3 the Table of Contents Introduction 11 Target Audience 11 What is
More informationCAs and Turing Machines. The Basis for Universal Computation
CAs and Turing Machines The Basis for Universal Computation What We Mean By Universal When we claim universal computation we mean that the CA is capable of calculating anything that could possibly be calculated*.
More informationA binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
More informationASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters
The char Type ASCII Encoding The C char type stores small integers. It is usually 8 bits. char variables guaranteed to be able to hold integers 0.. +127. char variables mostly used to store characters
More informationParameter Passing. Standard mechanisms. Call by value-result Call by name, result
Parameter Passing Standard mechanisms Call by value Call by reference Other methods Call by value-result Call by name, result Terms Function definition where the details of the function are presented (type,
More information1 Description of The Simpletron
Simulating The Simpletron Computer 50 points 1 Description of The Simpletron In this assignment you will write a program to simulate a fictional computer that we will call the Simpletron. As its name implies
More informationTutorial on Writing Modular Programs in Scala
Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 13 September 2006 Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 1 of 45 Welcome to the
More informationPROFESSIONAL. Node.js BUILDING JAVASCRIPT-BASED SCALABLE SOFTWARE. Pedro Teixeira WILEY. John Wiley & Sons, Inc.
PROFESSIONAL Node.js BUILDING JAVASCRIPT-BASED SCALABLE SOFTWARE Pedro Teixeira WILEY John Wiley & Sons, Inc. INTRODUCTION xxvii CHAPTER 1: INSTALLING NODE 3 Installing Node on Windows 4 Installing on
More informationTypeScript for C# developers. Making JavaScript manageable
TypeScript for C# developers Making JavaScript manageable Agenda What is TypeScript OO in TypeScript Closure Generics Iterators Asynchronous programming Modularisation Debugging TypeScript 2 What is TypeScript
More informationThe Tower of Hanoi. Recursion Solution. Recursive Function. Time Complexity. Recursive Thinking. Why Recursion? n! = n* (n-1)!
The Tower of Hanoi Recursion Solution recursion recursion recursion Recursive Thinking: ignore everything but the bottom disk. 1 2 Recursive Function Time Complexity Hanoi (n, src, dest, temp): If (n >
More information1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
More informationMXwendler Javascript Interface Description Version 2.3
MXwendler Javascript Interface Description Version 2.3 This document describes the MXWendler (MXW) Javascript Command Interface. You will learn how to control MXwendler through the Javascript interface.
More informationKotlin for Android Developers
Kotlin for Android Developers Learn Kotlin in an easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published
More informationBrent A. Perdue. July 15, 2009
Title Page Object-Oriented Programming, Writing Classes, and Creating Libraries and Applications Brent A. Perdue ROOT @ TUNL July 15, 2009 B. A. Perdue (TUNL) OOP, Classes, Libraries, Applications July
More informationPOLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/
More informationCSE 1223: Introduction to Computer Programming in Java Chapter 2 Java Fundamentals
CSE 1223: Introduction to Computer Programming in Java Chapter 2 Java Fundamentals 1 Recall From Last Time: Java Program import java.util.scanner; public class EggBasket { public static void main(string[]
More informationChapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
More informationLab 4.4 Secret Messages: Indexing, Arrays, and Iteration
Lab 4.4 Secret Messages: Indexing, Arrays, and Iteration This JavaScript lab (the last of the series) focuses on indexing, arrays, and iteration, but it also provides another context for practicing with
More informationUnderstanding 7z Compression File Format written by gordon@romvault.com
Understanding 7z Compression File Format written by gordon@romvault.com To understand the data structures used in the 7z file format you must first understand how 7z internally works. 7z has 2 concepts
More informationThe PHP 5.4 Features You Will Actually Use
The PHP 5.4 Features You Will Actually Use About Me Lorna Jane Mitchell PHP Consultant/Developer Author of PHP Master Twitter: @lornajane Website: http://lornajane.net 2 About PHP 5.4 New features Traits
More informationCRM Rules! User Guide. Version 3.0.2 Prepared October, 2012 By: David L. Carr, President, Visionary Software
CRM Rules! User Guide Version 3.0.2 Prepared October, 2012 By: David L. Carr, President, Visionary Software Table Of Contents Chapter 1: Overview... 5 What s a CRM Rule?... 5 What Can I Do With CRM Rules!?...
More informationIVR Studio 3.0 Guide. May-2013. Knowlarity Product Team
IVR Studio 3.0 Guide May-2013 Knowlarity Product Team Contents IVR Studio... 4 Workstation... 4 Name & field of IVR... 4 Set CDR maintainence property... 4 Set IVR view... 4 Object properties view... 4
More informationHow to design and implement firmware for embedded systems
How to design and implement firmware for embedded systems Last changes: 17.06.2010 Author: Rico Möckel The very beginning: What should I avoid when implementing firmware for embedded systems? Writing code
More informationWhat Is Recursion? Recursion. Binary search example postponed to end of lecture
Recursion Binary search example postponed to end of lecture What Is Recursion? Recursive call A method call in which the method being called is the same as the one making the call Direct recursion Recursion
More informationQt Signals and Slots. Olivier Goffart. October 2013
Qt Signals and Slots Olivier Goffart October 2013 About Me About Me QStyleSheetStyle Itemviews Animation Framework QtScript (porting to JSC and V8) QObject, moc QML Debugger Modularisation... About Me
More information3. Mathematical Induction
3. MATHEMATICAL INDUCTION 83 3. Mathematical Induction 3.1. First Principle of Mathematical Induction. Let P (n) be a predicate with domain of discourse (over) the natural numbers N = {0, 1,,...}. If (1)
More informationFunctional Programming in C++11
Functional Programming in C++11 science + computing ag IT-Dienstleistungen und Software für anspruchsvolle Rechnernetze Tübingen München Berlin Düsseldorf An Overview Programming in a functional style
More informationStatements and Control Flow
Contents 1. Introduction 2. Types and Variables 3. Statements and Control Flow 4. Reading Input 5. Classes and Objects 6. Arrays 7. Methods 8. Scope and Lifetime 9. Utility classes 10. Introduction to
More informationChapter 5 Functions. Introducing Functions
Chapter 5 Functions 1 Introducing Functions A function is a collection of statements that are grouped together to perform an operation Define a function Invoke a funciton return value type method name
More informationQUIZ-II QUIZ-II. Chapter 5: Control Structures II (Repetition) Objectives. Objectives (cont d.) 20/11/2015. EEE 117 Computer Programming Fall-2015 1
QUIZ-II Write a program that mimics a calculator. The program should take as input two integers and the operation to be performed. It should then output the numbers, the operator, and the result. (For
More informationCSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
More informationOutline Basic concepts of Python language
Data structures: lists, tuples, sets, dictionaries Basic data types Examples: int: 12, 0, -2 float: 1.02, -2.4e2, 1.5e-3 complex: 3+4j bool: True, False string: "Test string" Conversion between types int(-2.8)
More informationOracle Forms Services Secure Web.Show_Document() calls to Oracle Reports
Oracle Forms Services Secure Web.Show_Document() calls to Oracle Reports $Q2UDFOH7HFKQLFDO:KLWHSDSHU )HEUXDU\ Secure Web.Show_Document() calls to Oracle Reports Introduction...3 Using Web.Show_Document
More informationLecture Notes on Binary Search Trees
Lecture Notes on Binary Search Trees 15-122: Principles of Imperative Computation Frank Pfenning Lecture 17 March 17, 2010 1 Introduction In the previous two lectures we have seen how to exploit the structure
More informationNUMBER SYSTEMS APPENDIX D. You will learn about the following in this appendix:
APPENDIX D NUMBER SYSTEMS You will learn about the following in this appendix: The four important number systems in computing binary, octal, decimal, and hexadecimal. A number system converter program
More informationChapter 7: Additional Topics
Chapter 7: Additional Topics In this chapter we ll briefly cover selected advanced topics in fortran programming. All the topics come in handy to add extra functionality to programs, but the feature you
More informationProgramming Autodesk PLM 360 Using REST. Doug Redmond Software Engineer, Autodesk
Programming Autodesk PLM 360 Using REST Doug Redmond Software Engineer, Autodesk Introduction This class will show you how to write your own client applications for PLM 360. This is not a class on scripting.
More informationProgramming Database lectures for mathema
Programming Database lectures for mathematics students April 25, 2015 Functions Functions are defined in Postgres with CREATE FUNCTION name(parameter type,...) RETURNS result-type AS $$ function-body $$
More informationRecursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., 2001. 1995-2001 Barnette ND, McQuain WD
1 Slides 1. Table of Contents 2. Definitions 3. Simple 4. Recursive Execution Trace 5. Attributes 6. Recursive Array Summation 7. Recursive Array Summation Trace 8. Coding Recursively 9. Recursive Design
More informationTranslating to Java. Translation. Input. Many Level Translations. read, get, input, ask, request. Requirements Design Algorithm Java Machine Language
Translation Translating to Java Introduction to Computer Programming The job of a programmer is to translate a problem description into a computer language. You need to be able to convert a problem description
More informationHadoop + Clojure. Hadoop World NYC Friday, October 2, 2009. Stuart Sierra, AltLaw.org
Hadoop + Clojure Hadoop World NYC Friday, October 2, 2009 Stuart Sierra, AltLaw.org JVM Languages Functional Object Oriented Native to the JVM Clojure Scala Groovy Ported to the JVM Armed Bear CL Kawa
More informationChapter 8: Bags and Sets
Chapter 8: Bags and Sets In the stack and the queue abstractions, the order that elements are placed into the container is important, because the order elements are removed is related to the order in which
More informationI PUC - Computer Science. Practical s Syllabus. Contents
I PUC - Computer Science Practical s Syllabus Contents Topics 1 Overview Of a Computer 1.1 Introduction 1.2 Functional Components of a computer (Working of each unit) 1.3 Evolution Of Computers 1.4 Generations
More informationData Structures. Algorithm Performance and Big O Analysis
Data Structures Algorithm Performance and Big O Analysis What s an Algorithm? a clearly specified set of instructions to be followed to solve a problem. In essence: A computer program. In detail: Defined
More informationLogic in Computer Science: Logic Gates
Logic in Computer Science: Logic Gates Lila Kari The University of Western Ontario Logic in Computer Science: Logic Gates CS2209, Applied Logic for Computer Science 1 / 49 Logic and bit operations Computers
More informationKeil C51 Cross Compiler
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
More informationBuilding a Multi-Threaded Web Server
Building a Multi-Threaded Web Server In this lab we will develop a Web server in two steps. In the end, you will have built a multi-threaded Web server that is capable of processing multiple simultaneous
More informationDIGITAL-TO-ANALOGUE AND ANALOGUE-TO-DIGITAL CONVERSION
DIGITAL-TO-ANALOGUE AND ANALOGUE-TO-DIGITAL CONVERSION Introduction The outputs from sensors and communications receivers are analogue signals that have continuously varying amplitudes. In many systems
More informationLecture 22: C Programming 4 Embedded Systems
Lecture 22: C Programming 4 Embedded Systems Today s Goals Basic C programming process Variables and constants in C Pointers to access addresses Using a High Level Language High-level languages More human
More informationChapter 6: Programming Languages
Chapter 6: Programming Languages Computer Science: An Overview Eleventh Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Chapter 6: Programming Languages 6.1 Historical Perspective
More informationStep : Create Dependency Graph for Data Path Step b: 8-way Addition? So, the data operations are: 8 multiplications one 8-way addition Balanced binary
RTL Design RTL Overview Gate-level design is now rare! design automation is necessary to manage the complexity of modern circuits only library designers use gates automated RTL synthesis is now almost
More informationData Structures and Algorithms Written Examination
Data Structures and Algorithms Written Examination 22 February 2013 FIRST NAME STUDENT NUMBER LAST NAME SIGNATURE Instructions for students: Write First Name, Last Name, Student Number and Signature where
More informationLecture Notes on Binary Search Trees
Lecture Notes on Binary Search Trees 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 17 October 23, 2014 1 Introduction In this lecture, we will continue considering associative
More informationMoving from C++ to VBA
Introduction College of Engineering and Computer Science Mechanical Engineering Department Mechanical Engineering 309 Numerical Analysis of Engineering Systems Fall 2014 Number: 15237 Instructor: Larry
More informationC++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
More informationPaper 2917. Creating Variables: Traps and Pitfalls Olena Galligan, Clinops LLC, San Francisco, CA
Paper 2917 Creating Variables: Traps and Pitfalls Olena Galligan, Clinops LLC, San Francisco, CA ABSTRACT Creation of variables is one of the most common SAS programming tasks. However, sometimes it produces
More informationIntroduction to CloudScript
Introduction to CloudScript A NephoScale Whitepaper Authors: Nick Peterson, Alan Meadows Date: 2012-07-06 CloudScript is a build language for the cloud. It is a simple Domain Specific Language (DSL) that
More informationPython Evaluation Rules
Python Evaluation Rules UW CSE 160 http://tinyurl.com/dataprogramming Michael Ernst and Isaac Reynolds mernst@cs.washington.edu August 2, 2016 Contents 1 Introduction 2 1.1 The Structure of a Python Program................................
More informationBasic Logic Gates. Logic Gates. andgate: accepts two binary inputs x and y, emits x & y. orgate: accepts two binary inputs x and y, emits x y
Basic andgate: accepts two binary inputs x and y, emits x & y x y Output orgate: accepts two binary inputs x and y, emits x y x y Output notgate: accepts one binary input x, emits!y x Output Computer Science
More information13 Classes & Objects with Constructors/Destructors
13 Classes & Objects with Constructors/Destructors 13.1 Introduction In object oriented programming, the emphasis is on data rather than function. Class is a way that binds the data & function together.
More informationCOMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms.
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms 1 Activation Records activation declaration location Recall that an activation
More informationIS0020 Program Design and Software Tools Midterm, Feb 24, 2004. Instruction
IS0020 Program Design and Software Tools Midterm, Feb 24, 2004 Name: Instruction There are two parts in this test. The first part contains 50 questions worth 80 points. The second part constitutes 20 points
More informationBasic Object-Oriented Programming in Java
core programming Basic Object-Oriented Programming in Java 1 2001-2003 Marty Hall, Larry Brown http:// Agenda Similarities and differences between Java and C++ Object-oriented nomenclature and conventions
More informationIntro to Web Programming. using PHP, HTTP, CSS, and Javascript Layton Smith CSE 4000
Intro to Web Programming using PHP, HTTP, CSS, and Javascript Layton Smith CSE 4000 Intro Types in PHP Advanced String Manipulation The foreach construct $_REQUEST environmental variable Correction on
More informationPRI-(BASIC2) Preliminary Reference Information Mod date 3. Jun. 2015
PRI-(BASIC2) Table of content Introduction...2 New Comment...2 Long variable...2 Function definition...3 Function declaration...3 Function return value...3 Keyword return inside functions...4 Function
More informationADL User Guide for Open AT V4.10
ADL User Guide for Open AT V4.10 Revision: 002 Date: September 2006 ADL User Guide for Open AT V4.10 Revision: 002 Date: Reference: WM_DEV_OAT_UGD_019 Confidential Page: 1 / 220 Document History Index
More informationPassing 1D arrays to functions.
Passing 1D arrays to functions. In C++ arrays can only be reference parameters. It is not possible to pass an array by value. Therefore, the ampersand (&) is omitted. What is actually passed to the function,
More informationDeveloping a Web Server Platform with SAPI Support for AJAX RPC using JSON
Revista Informatica Economică, nr. 4 (44)/2007 45 Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Iulian ILIE-NEMEDI, Bucharest, Romania, inemedi@ie.ase.ro Writing a custom web
More informationFacebook Twitter YouTube Google Plus Website Email
PHP MySQL COURSE WITH OOP COURSE COVERS: PHP MySQL OBJECT ORIENTED PROGRAMMING WITH PHP SYLLABUS PHP 1. Writing PHP scripts- Writing PHP scripts, learn about PHP code structure, how to write and execute
More informationSoftware Engineering Techniques
Software Engineering Techniques Low level design issues for programming-in-the-large. Software Quality Design by contract Pre- and post conditions Class invariants Ten do Ten do nots Another type of summary
More informationBoolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
More information