[Tutorial] Aprende a programar en PS3 fácilmente (Parte 3ª)
Hola a tod@s, hoy nos toca aprender más cosas sobre Lua, y ya sabéis, nadie se acuesta sin saber nada nuevo. Hoy nos tocan las funciones, algo muy simple. Para saber de que hablamos necesitamos los conocimientos de la Parte segunda.
Para empezar, como siempre, vamos a ver que es una función. Según wikipedia, como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Sí, yo también tengo los ojos como platos al ver tal frase malsonante, así que resumo: una función no es nada más que un trozo de código que nos ayuda a una determinada tarea. Una utilización seria cuando tenemos un programa de 100000 lineas (Veremos como simplificar aun más en un próximo tutorial) y tenemos un código que esta repetido 30 veces y nos ha dado un error. ¿Te atreves a cambiarlo? Para eso están las funciones, que las vamos a ver ahora.
Para crearlas (declararlas) tenemos que escribir el nombre que queremos que tome, como si fuera una variable, después el código y al final un end. Aquí tenéis ejemplos:
nombre = function([argumento]) código end function nombre() código end
Es muy fácil. Pues saber que también se le puede enviar argumentos (variables) que a lo mejor necesitemos en la función. Mirar estos ejemplos:
nombre = function(a, b, c) -- a, b y c son variables código end -- function(a, b, c) -- a, b y c son variables código end
También podemos recibir argumentos (retornar argumentos) de las funciones. Mira esto:
function nombre() Draw.Text(10,10, "Hola") end -- function nombre() return hola end
Como veis, se puede retornar directamente a pantalla con una función o si queremos, mediante return a una variable.
Muy bien, ahora vamos a pasar a la practica... ¿Os acordáis del miniprograma que hicimos en la anterior entrega? Pues vamos a abrirlo y a modificarlo, así lo ordenamos un poco. Por si no sabéis por donde cojerlo, os pongo el código:
InitGFX(720, 480) -- Con esto iniciamos la pantalla en 540p initPads(7) -- Con esto leeremos las pulsaciones de los 7 mandos -- Variables datos = {} datos[1] = 10 datos[2] = 2 datos[3] = 6 datos[4] = 10 datos[5] = "Hola mundo!" datos[6] = "Hola PS3!" datos[7] = "Hola mundo!" datos[8] = nil -- Funciones function PrintHola() --Mensaje de bienvenida DrawText(30, 10, "Bienvenido a [Tutorial] Aprende a programar en PS3 facilmente (Parte 3a) Ejemplo 1") DrawText(60, 50, "Vamos a hacer un programa con lo aprendido") DrawText(60, 70, string.format("A: %i B: %i C: %i D: %i E: %s F: %s G: %s", datos[1], datos[2], datos[3], datos[4], datos[5], datos[6], datos[7])) end function Cuentas() -- Cuentas variable = datos[1]+datos[2] DrawText(70, x, string.format("A + B: %i", variable)) -- Suma x = x +20 variable = datos[1]-datos[3] DrawText(70, x, string.format("A - C: %i", variable)) -- Resta x = x +20 variable = datos[2]*datos[3] DrawText(70, x, string.format("B x C: %i", variable)) -- Multiplicación x = x +20 variable = datos[4]/datos[2] DrawText(70, x, string.format("D / B: %i", variable)) -- División x = x +20 variable = datos[2]^datos[3] DrawText(70, x, string.format("B^C: %i", variable)) -- Potencia x = x +20 end function Condiciones() -- Condiciones if datos[5] == datos[6] then -- condicion, igual a DrawText(70, x, "Es E igual a F? Si") else DrawText(70, x, "Es E igual a F? No") end x = x +20 if datos[5] ~= datos[7] then -- Distinto de DrawText(70, x, "Es E distinto de G? Si") else DrawText(70, x, "Es E distinto a G? No") end x = x +20 if datos[1] > datos[2] then -- Mayor que DrawText(70, x, "Es A mayor que B? Si") else DrawText(70, x, "Es A mayor que B? No") end x = x +20 if datos[4] < datos[3] then -- Menor que DrawText(70, x, "Es D menor que C? Si") else DrawText(70, x, "Es D menor que C? No") end x = x +20 if datos[4] >= datos[1] then -- Mayor o igual que DrawText(70, x, "Es D igual o mayor que A? Si") else DrawText(70, x, "Es D igual o mayor que A? No") end x = x +20 if datos[2] <= datos[3] then -- Menor o igual que DrawText(70, x, "Es B menor o igual que C? Si") else DrawText(70, x, "Es B menor o igual que C) No") end x = x +20 if datos[8] == nil then -- Haber que responde lua DrawText(70, x, "Esta H vacio? Si") else DrawText(70, x, "Esta H vacio? No") end end -- Iniciamos el bucle principal while true do beginGFX() -- Iniciamos las funciones de pantalla x = 100 PrintHola() -- Ponemos el mensaje inicial Cuentas() -- Ponemos las cuentas Condiciones() -- Ponemos las condiciones -- Si pulsamos start o entre si estamos en el emulador, saldremos del programa if start(0) >= 1 then break end endGFX() -- Finalizamos las funciones de pantalla end
Ejecutarlo y veréis que se muestra lo mismo, pero ahora el código esta más ordenado.
Saludos y hasta la próxima.
Archivo listo para probar: Ejemplo3.zip
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
podrias hacer un tuto en c?
podrias hacer un tuto en c? gracias
Mmm, nose
Lo siento, pero en C soy un principiante, no quiere decir que en lua tambien lo sea, lo que pasa que ya llevo tiempo en Lua y se bastante más que en C, que no se nada.
Y otra cosa, no te lo tomes a mal, pero esto es un tuto de lua, asi solo comenta si quieres decir algo de este. Si necesitas ayuda para programar en C o quieres documentación, buscalo en buscar contenido o postea tu mismo en programación pidiendo ayuda, así mantenemos limpio el foro y no mezclamos cosas.
Saludos
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
vale gracias si algun dia
vale gracias si algun dia aprendes C haz un tuto que te lo agradecere