INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN. DIVIDE Y VENCERÁS
EN PRIMER LUGAR:
Antes de intentar resolver un problema, párate a pensar en los pasos que necesitas seguir para resolverlo, si es
demasiado complicado, divídelo en problemas más sencillos y resuelve cada uno de ellos por separado, cuando
sepas resolver los problemas sencillos podrás resolver el problema inicial.
INTRODUCCIÓN A LA PROGRAMACIÓN. DIVIDE Y VENCERÁS
EN SEGUNDO LUGAR:
Traduce al lenguaje que hayas elegido tu secuencia de instrucciones para resolver el problema
Para hablar en inglés primero hemos de tener claro lo que queremos decir, a continuación buscamos los
'palabros' y normas del idioma inglés para que nos entienda nuestro interlocutor inglés
En programación, los modos de resolver problemas son casi más importantes que el lenguaje en el que luego
plasmes esa solución, vamos a trabajar esos modos de resolver problemas en general; una vez entendamos el
proceso, lo 'traduciremos' a nuestro lenguaje: Lua
INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
En un mismo instante, no necesitamos más de un valor para numPasos, por tanto definiremos (reservaremos
espacio) para una única variable numPasos.
Definimos una única variable numPasos y le vamos asignando los valores que vayamos necesitando
INTRODUCCIÓN A LA PROGRAMACIÓN EN [Link]
Al definir una variable lo que haremos será reservar un espacio para guardar un dato, a este espacio le
asignaremos una etiqueta (nombre de variable)
Imaginemos que tenemos un cajón con una etiqueta en el frontal: el cajón es la variable, la etiqueta es el nombre
de la variable y el contenido del cajón es el dato guardado en esa variable
PROGRAMACIÓN LUA. ALGUNOS OPERADORES...
Para relacionar nuestras variables con otras variables u otros
datos, usamos operadores
De asignación =
Cuando asignamos estamos guardando un valor en una variable
De concatenación ..
Concatenar es unir (lo vemos con más detalle a continuación)
De comparación ==, !=, <=, >=, >, <
Aritméticos +, -, /, *, % (% significa módulo o resto)
Lógicos AND, OR, NOT
Darán un resultado cierto o falso (lo vemos con más detalle a continuación)
PROGRAMACIÓN LUA. OPERADOR DE ASIGNACIÓN (=)
numPasos = 7
En la caja con etiqueta 'numPasos' guardamos valor 7
a partir de ahora:
'a la variable numPasos le asignamos valor 7'
numPasos
----------
7
PROGRAMACIÓN LUA. OPERADOR DE ASIGNACIÓN (=)
numPasos = 9
En la caja con etiqueta 'numPasos' guardamos valor 9
Qué ocurre con el valor anterior?...
Se pierde
numPasos
----------
9
PROGRAMACIÓN LUA
Sentencias. Asignación.
a=5 curso = "Lua"
print (a) --salida: 5 print (curso) --salida: Lua
a = a +1 horasCurso = 40
print (a) --salida: 6 print (horasCurso) --salida: 40
a = a *2 curso = "iOS"
print(a) --salida:12 print(curso) --salida:iOS
b=4 horasCurso = 20
c=a+b print(horasCurso) --salida 20
print(c) --salida 16
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Cadenas (Strings). Operador concatenación en Lua (..)
nombre = "Pepe"
apellido = "Garcia del Monte"
print(nombre) --Pepe
print(apellido) --Garcia del Monte
print(nombre .. apellido) --PepeGarcia del Monte
print(nombre .. " ".. apellido) --Pepe Garcia del Monte
print(apellido ..", ".. nombre) --Garcia del Monte, Pepe
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Expresiones. Operador de comparación (==, ~=)
La evaluación de una expresión siempre da un valor 'cierto' o 'falso' Diferenciemos...o mejor...DIFERENCIEMOS
local nombre = "Pepe" --a la variable nombre le asignamos el valor "Pepe"
nombre == "Pepe" --¿la variable nombre tiene valor Pepe?
nombre = "Pepe": sentencia de asignación (en nombre guardo
"Pepe"
nombre == "Pepe": expresión de comparación (¿nombre está
guardando "Pepe"?)
SENTENCIAS DE COMPARACIÓN (==, ~=)
local estado = "ok"
print (estado == "ok") --dime si la variable estado guarda valor "ok"
local valor = "ok"
print (valor ~= "ok") --dime si la variable estado guarda valor distinto de "ok"
CONVENCIONES LÉXICAS. PALABRAS RESERVADAS.
En Lua los identificadores para las variables (nombre de la variables), pueden estar formados por cualquier
secuencia de letras, dígitos y underscores ('_'), no siendo válidos los identificadores que comiencen por dígito.
Un nombre de variable tiene que comenzar con una letra o underscore. No se permite comenzar por un
número ni contener signos de puntuación.
Debemos evitar los identificadores que comiencen por '_' seguido de una o más letras mayúsculas, ya que este
tipo de identificadores están reservados para identificadores internos de Lua (ej. _VERSION).
Se recomienda nombrar a las variables con identificadores en minúscula y, en caso de que corresponda a más
de una palabra podemos seguir la regla del 'Camel case' (nombreAlumno) o unir con
under_score(nombre_alumno).
Los punto y coma al final de sentencia son opcionales.
PALABRAS RESERVADAS
Las palabras que siguen son 'Palabras Reservadas', no podemos usarlas como identificadores porque ya las usa
Lua.
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Qué tipos de datos podemos guardar en una variable?
Tipos de datos:
nil :indica que a una variable no se le ha asignado todavía ningún valor.
boolean : puede ser true o false (cierto o falso).
number : todos los números son reales, punto flotante doble precisión.
string : es una cadena de caracteres (secuencia de caracteres).
function : un bloque de código con nombre.
table : es similar a los objetos en otros lenguajes de programación(se verán más
adelante).
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Operadores relacionales
<=
a=6
b=4
print(a <= b)
>=
>
<
~=
==
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Operadores relacionales
num1
num1 = 3
num2 = 5
num1 < num2 --true
num1 > num2 --false
num1 == num2 --false
num2 = 1
num1 > num2 --true
num1 < num2 --false
num1 ~= num2 --true
num1 == num2 --false
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Operadores lógicos
si (te presentas a un examen) y (sacas nota>=5) has aprobado ------------and
si (te presentas a un examen) o (sacas nota>=5) has aprobado ------------or
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Operadores lógicos
Los operadores lógicos nos van a permitir construir expresiones compuestas de varias condiciones, tantas como
sean necesarias
and: se evalúa a cierto sólo si todas las condiciones son ciertas,
en el resto de casos se evalúa a falso
a=6
b=4
print(a>10 and b>3) --salida: false
a = 12
print(a>10 and b>3) --salida: true
b =2
print(a>10 and b>3) --salida: false
a=5
print(a>10 and b>3) --salida: false
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Operadores lógicos
or: se evalúa a cierto si alguna de las condiciones es cierta
a=6
b=4
print(a>10 or b>3) --salida: true
a = 12
print(a>10 or b>3) --salida: true
b =2
print(a>10 or b>3) --salida: true
a=5
print(a>10 or b>3) --salida: false
INTRODUCCIÓN LENGUAJE DE PROGRAMACIÓN LUA
Operadores lógicos
not: da como resultado el valor lógico contrario al evaluado.
a = true
print(not a) --salida: false
a = false
print(not a) --salida: true
SENTENCIAS. SENTENCIAS CONDICIONALES
Condicional simple: if
a=3
if ( a <= 5 ) then
print("El valor de a ="..a.."es menor o igual que 5")
--El valor de a = 3 es menor o igual que 5
a = a +2
end
print("Valor de a = "..a) --Valor de a = 5
SENTENCIAS. SENTENCIAS CONDICIONALES
Condicional compuesto: if..else
a=3 a=7
if ( a<=5 ) then if ( a<=5 ) then
print("a ="..a.."es menor o igual que 5") print("a ="..a.."es menor o igual que
a = a +2 a = a +2
else else
print("Valor de a = "..a) print("Valor de a = "..a)
end end
EJEMPLOS CONDICIONAL COMPUESTO (IF..ELSE)
local estado= "ready"
if (estado =="ready") then
print("Tarea finalizada")
else
print("Tarea pendiente de finalización")
end
local valor= "ready"
if (valor ~="ready") then
print("Tarea pendiente de finalización")
else
print("Tarea finalizada")
end
SENTENCIAS CONDICIONALES Y OPERADORES LÓGICOS
nombre = "Ana"
apellido = "Martinez"
if (nombre == "Ana" and apellido =="Martinez")
print("Encontrada")
if(nombre =="Ana" or apellido == "Mas")
print("O se llama "..nombre.." o su apellido es "..apellido)
¿COMO AVERIGUAMOS SI UNA NOTA QUE ME HAN PUESTO ES
APROBADO O SUSPENSO?
'Si la nota es mayor o igual que 5 entonces he aprobado, sino he suspendido'
Ya tenemos clara la resolución del problema, únicamente ahora tendremos que 'traducirlo' al lenguaje de
programación que estemos utilizando (Lua)
Supongamos que tenemos una nota:
local nota = 4.5
¿Cómo escribimos en Lua 'Si la nota es mayor o igual que 5 entonces he aprobado, sino he suspendido'???
if (nota >= 5.0) then
print("Aprobado")
else
print("Suspenso")
end
ÁMBITO DE UNA VARIABLE. SCOPE. CHUNKS
Variables globales y locales
Una variable global es accesible en cualquier punto
Una variable local únicamente es accesible dentro del bloque (scope, chunk) donde fue
definida
a=3
if (a<5) then
local a =7
a=a+2
print('Valor de a = '..a)
else
print('Valor de a = '..a)
end
print('Valor de a = '..a)
ÁMBITO DE UNA VARIABLE. SCOPE. CHUNKS
¿Qué salida dará este código?
a=3 --variable global
if (a<5) then
a =7
a=a+2
print('Valor de a = '..a)
else
print('Valor de a = '..a)
end
print('Valor de a = '..a)
ÁMBITO DE UNA VARIABLE. SCOPE. CHUNKS
¿Salida?
a=6 --variable global
if (a<5) then
local a =7
a=a+2
print('Valor de a = '..a)
else
print('Valor de a = '..a)
end
print('Valor de a = '..a)