Lua for TerraME: A Short Introduction Pedro Ribeiro de Andrade Münster, 2013.

Slides:



Advertisements
Similar presentations
Introducing JavaScript
Advertisements

Programming Languages and Paradigms The C Programming Language.
Roberto Ierusalimschy PUC-Rio, Brazil
12-Jun-15 JavaScript Language Fundamentals I. 2 About JavaScript JavaScript is not Java, or even related to Java The original name for JavaScript was.
Working with JavaScript. 2 Objectives Introducing JavaScript Inserting JavaScript into a Web Page File Writing Output to the Web Page Working with Variables.
10 November JavaScript. Presentation Hints What do YOU think makes a good presentation Some of my suggestions Don’t write full sentences on slides Talk,
Program Design and Development
XP 1 Working with JavaScript Creating a Programmable Web Page for North Pole Novelties Tutorial 10.
CS-341 Dick Steflik Introduction. C++ General purpose programming language A superset of C (except for minor details) provides new flexible ways for defining.
Javascript II Expressions and Data Types. 2 JavaScript Review programs executed by the web browser programs embedded in a web page using the script element.
Fundamental Programming Structures in Java: Comments, Data Types, Variables, Assignments, Operators.
Chapter 2 - Java Programming Fundamentals1 Chapter 2 Java Programming Fundamentals.
Guide To UNIX Using Linux Third Edition
JavaScript, Third Edition
Chapter 8: Introduction to High-level Language Programming Invitation to Computer Science, C++ Version, Third Edition.
VB .NET Programming Fundamentals
Programming Concepts MIT - AITI. Variables l A variable is a name associated with a piece of data l Variables allow you to store and manipulate data in.
Spatial Dynamical Modeling with TerraME Tiago Carneiro Gilberto Câmara Pedro Andrade Licence: Creative Commons ̶̶̶̶ By Attribution ̶̶̶̶ Non Commercial.
Python quick start guide
Introduction to Python Basics of the Language. Install Python Find the most recent distribution for your computer at:
Munster Programming Training
By Nicholas Policelli An Introduction to Java. Basic Program Structure public class ClassName { public static void main(String[] args) { program statements.
ASP.NET Programming with C# and SQL Server First Edition Chapter 3 Using Functions, Methods, and Control Structures.
XP Tutorial 10New Perspectives on Creating Web Pages with HTML, XHTML, and XML 1 Working with JavaScript Creating a Programmable Web Page for North Pole.
November 2003Bent Thomsen - FIT 6-11 IT – som værktøj Bent Thomsen Institut for Datalogi Aalborg Universitet.
Introduction to Scheme Lectures on The Scheme Programming Language, 2 nd Ed. R. Kent Dybvig.
How to Create a Videogame By: Connor McCann. Java Java is one of many programming languages Java is used to run web browsers and most PC video games I.
Basics of Java IMPORTANT: Read Chap 1-6 of How to think like a… Lecture 3.
Meet Perl, Part 2 Flow of Control and I/O. Perl Statements Lots of different ways to write similar statements –Can make your code look more like natural.
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
CPS120: Introduction to Computer Science Decision Making in Programs.
JavaScript Syntax and Semantics. Slide 2 Lecture Overview Core JavaScript Syntax (I will not review every nuance of the language)
Fantasy && Smart 吴航.  Some concepts  Differences between Lua & C++  Application.
7 1 User-Defined Functions CGI/Perl Programming By Diane Zak.
XP Tutorial 10New Perspectives on HTML and XHTML, Comprehensive 1 Working with JavaScript Creating a Programmable Web Page for North Pole Novelties Tutorial.
Chapter 3 Functions, Events, and Control Structures JavaScript, Third Edition.
C463 / B551 Artificial Intelligence Dana Vrajitoru Python.
JavaScript Scripting language What is Scripting ? A scripting language, script language, or extension language is a programming language.
Introducing Python CS 4320, SPRING Lexical Structure Two aspects of Python syntax may be challenging to Java programmers Indenting ◦Indenting is.
1 CS 177 Week 2 Recitation Slides Introduction. 2 Announcements.
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
More Lua. Expressions Arithmetic operators */-+ “real” numbers only ^ exponentiation a%b == a - floor(a/b)*b x%1 gives fractional part, x-x%1 integer.
4. Javascript M. Udin Harun Al Rasyid, S.Kom, Ph.D Lab Jaringan Komputer (C-307) Desain.
VISUAL C++ PROGRAMMING: CONCEPTS AND PROJECTS Chapter 2A Reading, Processing and Displaying Data (Concepts)
General Computer Science for Engineers CISC 106 Lecture 12 James Atlas Computer and Information Sciences 08/03/2009.
Language Find the latest version of this document at
Introduction to Programming Oliver Hawkins. BACKGROUND TO PROGRAMMING LANGUAGES Introduction to Programming.
Today… Preparation for doing Assignment 1. Invoking methods overview. Conditionals and Loops. Winter 2016CMPE212 - Prof. McLeod1.
PHP Tutorial. What is PHP PHP is a server scripting language, and a powerful tool for making dynamic and interactive Web pages.
XP Tutorial 10New Perspectives on HTML, XHTML, and DHTML, Comprehensive 1 Working with JavaScript Creating a Programmable Web Page for North Pole Novelties.
JavaScript Tutorial. What is JavaScript JavaScript is the programming language of HTML and the Web Programming makes computers do what you want them to.
1 Agenda  Unit 7: Introduction to Programming Using JavaScript T. Jumana Abu Shmais – AOU - Riyadh.
Lua for TerraME: A Short Introduction Pedro Ribeiro de Andrade Tiago G. S. Carneiro Gilberto Câmara Münster, 2014.
Prepared by Mustafa CAMURLI.  Lua was created in 1993 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes, members of the Computer.
Introdução a Linguagem de Modelagem TerraML Dr. Tiago Garcia de Senna Carneiro TerraLAB - Laboratório INPE/UFOP para Simulação e Modelagem dos Sistemas.
Lua for TerraME: A Short Introduction Pedro Ribeiro de Andrade São José dos Campos, 2011.
PHP using MySQL Database for Web Development (part II)
Introdução a Linguagem de Modelagem TerraML
Programming Languages and Paradigms
JavaScript Syntax and Semantics
بسم الله الرحمن الرحیم.
Programming Paradigms
Lua for TerraME: A Short Introduction
The structure of computer programs
PHP.
T. Jumana Abu Shmais – AOU - Riyadh
PHP an introduction.
CIS 136 Building Mobile Apps
Python Basics. Topics Features How does Python work Basic Features I/O in Python Operators Control Statements Function/Scope of variables OOP Concepts.
Introduction to Python
Presentation transcript:

Lua for TerraME: A Short Introduction Pedro Ribeiro de Andrade Münster, 2013

What is Lua?  Yet another scripting language  Simple and flexible  “Simple things simple, complex things possible”  Small, Efficient, Portable  Whole library written in ANSI C, compiles the same source code in all platforms  The tarball for Lua takes 860K uncompressed. The source contains around lines of C. Under Linux, the interpreter takes 153K and the library, 203K.  Several benchmarks show Lua as the fastest language in the realm of interpreted scripting languages.  Free and distributed under MIT license

Lua and the Web Where is Lua?  Inside Brazil  Petrobras, the Brazilian Oil Company  Embratel (the main telecommunication company in Brazil)  many other companies  Outside Brazil  Lua is used in hundreds of projects, both commercial and academic  CGILua still in restricted use  until recently all documentation was in Portuguese Lua is the language of choice for computer games [Ierusalimschy et al, 1996] source: the Lua team

Variables and Values  Case sensitive  semicolon may optionally follow any statement a = 1 b = a*2 print(a) print(b)

Comments  double hyphen (--) until the end of the line.  block comments start with --[[ and run until ]] print("hello") -- my comment -- print("hello") --[[ print(10) -- no action (comment) --]]

Types  nil  boolean  number  string  table  function print(type(3))

nil  Everything that does not exist print(c) c = 10 print(type(c)) c = nil print(type(c)) print(type("a string!!")) print(type(print))

boolean  false/true  nil and false are false, everything else is true  zero and the empty string are true  operators and, or, and not (and) (or) print(true) print(true and false) print(true and (false or true)) print(false or (true and false) or (true and true))

number  the only type for numeric values  double-precision floating-point number  arithmetic operators: +, –, *, /  exponent (^) and modulus (%)  boolean operators (, =, ~=, and ==) A = * 4e+3 a = A ^ 2 b = A % 7 print(a) print(b) print(a > b) print(b ~= 2)

Parentheses  Always optional (except in the case of function call)  When in doubt, use parentheses a+-i (a+(-i)) < ((b/2)+1) 5+x^2*8 5+((x^2)*8) a (a < y) and (y <= z) –x^y^z –(x^(y^z))

string  single or double quotes  operator.. print("hello") print('hello') x = 2 print ("x = "..x)

if statement  An if statement tests condition and executes its then-part or its else-part (optional) accordingly a = 6; b = 5 if a < 0 then print("a < 0") end if a = b") end if a < b then print("a < b") elseif a < b + 5 then print("b <= a < b+5") else print("a > b+5") end

for statement  A statement to repeat other statements, with the following syntax: for var = exp1, exp2, exp3 do something end  That loop will execute something for each value of var from exp1 to exp2, using exp3 as the step to increment var. This third expression is optional (default is 1). for i = 1, 10 do print(i) end for i = 1, 10, 2 do print(i) end

table  The only structured data type  Can implement arrays x = {7, 3, 2, 6, 4, 3, 9} print(x[1]) x[1] = x[2] + x[3] print(x[1]) print(#x) for i = 1, #x do print(i.." "..x[i]) end

table  Tables can be indexed not only with numbers, but also with strings or any other value of the language, except nil loc = { cover = "forest", distRoad = 0.3, distUrban = 2 } print(loc["cover"]) print(loc.cover) loc.distRoad = loc.distRoad^2 loc.distTotal = loc.distRoad + loc.distUrban print(loc.distTotal) loc.deforestationPot = 1/loc.distTotal print(loc.deforestationPot)

Tables within tables loc = { cover = "forest", dist = {road = 0.3, urban = 2} } print(loc.dist.road) loc.dist.total = loc.dist.road + loc.dist.urban print(loc.dist.total)

function  A function can carry out a specific task (commonly called procedure) or compute and return values.  A function is a first-class value in Lua.  Functions can be stored in variables and in tables, can be passed as arguments, and can be returned by other functions, giving great flexibility to the language. myprint = print print = nil myprint(2) print = myprint

Standard libraries  Basic (print, type, tostring, tonumber, …)  String (string.find, string.gsub, string.format, …)  Table (table.insert, table.remove, table.sort, …)  Math (math.random, math.sin, math.exp, …)  IO (io.open, io.read, io.close, …)  OS (os.clock, os.execute, …)  Debug (debug.getinfo, debug.getlocal, …) print(8*9, 9/8) a = math.sin(3) + math.cos(10) print(a) print(os.time()) print(string.find("pattern", "tt"))

Definition of a function function add(a, b) return a + b end print(add(2, 3)) add = function(a, b) return a + b end print(add(2, 3))

Parameters of a function function f(a, b) return a and b end CALLPARAMETERS f(3)a = 3, b = nil f(3, 4)a = 3, b = 4 f(3, 4, 5)a = 3, b = 4 (5 is discarded)

High-order Functions  Functions can also be parameters to other functions. This kind of function is what we call a higher-order function. function foreach(tab, func) for position, value in pairs(tab) do func(value, position) end x = {7, 3, 2, 6, 4} foreach(x, function(element) print(element) end) foreach(x, function(value, position) print(position, value) end)

Tables with functions  Table may have their own functions. loc = { cover = "forest", distRoad = 0.3, distUrban = 2, deforestPot = function(myloc) return 1/(myloc.distRoad + myloc.distUrban) end } print(loc.deforestPot(loc)) print(loc:deforestPot())

Tables with functions  We can declare a “class” in Lua by creating a function that takes a table constructor as argument. function MyLocation(locdata) locdata.covertype = "forest" locdata.deforPot = function(self) return 1/(self.distRoad + self.distUrban) end return locdata end loc = MyLocation({distRoad = 0.3, distUrban = 2}) loc = MyLocation{distRoad = 0.3, distUrban = 2} print(loc.covertype) print(loc:deforPot())