Si estás interesado en la programación, o sencillamente siempre te has preguntado cómo se le dan órdenes a un ordenador, espero que este tutorial te sirva de ayuda. No voy a usar ningún tecnicismo más allá del realmente necesario, pretendo que esto sea una lectura amena, lo menos aburrida posible y que cuando termines, te haya quedado un poco más claro "qué es eso de la programación" y "cómo se le dicen las cosas a los ordenadores".
Antes de nada, hay que decir que el cerebro humano funciona de manera diferente al de una computadora. Tenemos este simple texto:
Que por mayo era, por mayo, cuando hace la calor, cuando los trigos encañan y están los campos en flor (...)
Un ordenador, tendría que procesar cada carácter uno a uno, Q-u-e-(ESPACIO)-p-o-r-(ESPACIO)-m-(...). Una vez que tiene el texto recorrido, separará las palabras según los espacios: Que(ESPACIO)por(ESPACIO)mayo(...). Luego con cada palabra, buscará en un diccionario si se trata de un verbo, pronombre, hasta dar sentido a la frase.
Parece un método lento, pero todo esto se procesa tan rápido, en milisegundos, que da la sensación de que un ordenador lee "de golpe" como nosotros. Si aún dudas que nuestro cerebro no procesa las letras una a una, aquí tienes un ejemplo:
Sgeun un etsduio de una uivenrsdiad ignlsea, no ipmotra el odren en el que las ltears etsan ersciats, la uicna csoa ipormtnate es que la pmrirea y la utlima ltera esten ecsritas en la psiocion cocrrtea. El rsteo peuden estar ttaolmntee mal y aun pordas lerelo sin pobrleams. Etso es pquore no lemeos cada ltera por si msima snio la paalbra cmoo un tdoo.
¿Puedes leerlo verdad? :D.Lo mismo sucede cuando reconocemos una cara, no vamos "pixel a pixel", buscando un ojo, la nariz, la boca, para luego juntarlos igual que con las letras. Sino que miramos "un todo" de la cara y nuestro cerebro lo procesa de esta manera.
Bien, todo esto ha sido para que comprendas lo más importante: A UN ORDENADOR HAY QUE DECIRLE TODO PASO A PASO MEDIANTE UN "LENGUAJE DE PROGRAMACIÓN", no procesan la información como nosotros.
Un lenguaje de programación (LP) es "el idioma" que se usa para dar ordenes a una computadora. Hay muchísimos, seguramente os suenen algunos como "basic" o "c". Si estás pensando cual lenguaje es "el mejor", piensa en cada LP, como un tipo de zapatos. ¿Cómo puedes decir cual es el mejor zapato?. Hay que decir "para qué". Unas botas de trekking pueden ser las mejores para hacer senderismo, pero si lo que quieres es estar cómodo en casa, las pantuflas serían la mejor opción, es decir no hay "el mejor zapato", tan sólo el mejor para una situación determinada y aún así seguro que habrá más de una variedad y la decisión será difícil.
Por eso, hay LP que te facilitan mucho la tarea si estás usando gráficos tridimensionales y otros con los que seguramente será imposible, o para procesar una base de datos, etc. De momento, basta con que sepas que hay muchísimos lenguajes y unos son mejores para ciertas cosas que otros.
Antes de poner un ejemplo de programa, voy a decir las partes básicas que suele tener cualquier lenguaje de programación, que son:
VARIABLES:
Una variable, es una zona de la memoria, en la cual se guarda un dato o grupo de datos. Para acceder a esos datos, en vez de decir la posición de la memoria (como la posición 1289232), se usa lo que podríamos decir un nick o tag. Por ejemplo:
total = 37
Esto crea una variable, que tiene nombre "total" y guarda el valor "37". Podría estar en la posición de memoria 1289232 o en la 58, eso da lo mismo porque el valor de una variable se averigua accediendo a su "nick", no a su posición de memoria. Este ejemplo imprimiría 37:
print total
Imagináos un edificio que se llame "Edificio los claveles". Nosotros si conocemos su nombre, podemos ir a ese sitio, no hace falta usar un GPS e ir a la coordenada xxxx,yyyy, para ir al edificio y ver quién está dentro.
SENTENCIAS DE CONTROL Y DE BUCLE:
Esto es el término que se suele usar para instrucciones que comprueban una determinada condición, o que ejecutan un bucle hasta que cierta condición se cumple. Un bucle es un "ciclo". Vamos a ver las más comunes:
*if then else (si entonces sino). Esta no necesita explicación, se puede ver con el ejemplo.
if total > 100 then print "El total supera los 100Euros" else print "El total es igual o menor que 100Euros"
while temperatura > 0 do { LeerTemperatura() } print "El agua se ha congelado"
*do while condition (hacer mientras condición). Esta es similar a la anterior, sólo que la comprobación se hace "al final" del bucle, no al principio. Lo que tiene es que al menos la primera vez se ejecuta el bucle aunque no se cumpla la condición, ya que se comprueba al final.
do { LeerTemperatura() } while temperatura > 0 print "El agua se ha congelado"
for valor=1 to 10, +2 do { print valor } print "Hemos salido del bucle porque valor es >= 10"
1 3 5 7 9 Hemos salido del bucle porque valor es >= 10
Para que veas la utilidad de una función imagina el ejemplo de la temperatura del bucle while. Ahí usé una función llamada LeerTemperatura() (las funciones generalmente suelen llevar paréntesis al final). Imagina que para leer la temperatura hay que hacer una serie de pasos.
///Esto es lo que hay que hacer para leer la temperatura abrir carcasa del sensor sacar sensor guardar lectura de sensor en variable "temperatura_tomada" meter sensor cerrar carcasa del sensor
///Aquí van 400 lineas de código abrir carcasa del sensor sacar sensor guardar lectura de sensor en variable "temperatura_tomada" meter sensor cerrar carcasa del sensor ///Aquí tenemos otras 800 lineas de código abrir carcasa del sensor sacar sensor guardar lectura de sensor en variable "temperatura_tomada" meter sensor cerrar carcasa del sensor ///Aquí 1000 lineas de código más abrir carcasa del sensor sacar sensor guardar lectura de sensor en variable "temperatura_tomada" meter sensor cerrar carcasa del sensor ///2000 lineas más y acaba el programa
///Lectura de temperatura con la pausa implementada abrir carcasa del sensor sacar sensor guardar lectura de sensor en variable "temperatura_tomada" meter sensor esperar 3 segundos cerrar carcasa del sensor
///Aquí se define la función function LeerTemperatura() { abrir carcasa del sensor sacar sensor guardar lectura de sensor en variable "temperatura_tomada" meter sensor cerrar carcasa del sensor } ///Aquí van 400 lineas de código LeerTemperatura() ///Aquí tenemos otras 800 lineas de código LeerTemperatura() ///Aquí 1000 lineas de código más LeerTemperatura() ///2000 lineas más y acaba el programa
Espero que esto no haya sido muy aburrido, ni muy técnico, creo que es necesario para que comprendas el ejemplo de programa que voy a poner. Vamos a hacer un programa que durante 24 horas, realice mediciones de temperatura, una vez cada hora. Si la temperatura está por debajo de 0, se muestra un mensaje y el programa termina, si está subiendo desde la última medición o está bajando, se muestra un mensaje en consecuencia. Así de simple :D.
Cuando se trata de comunicarle a un ordenador, hay que acordarse que hay que ir paso a paso, y "plantearselo" bien, o lo que es lo mismo, decirle las variables, datos y funciones que vamos a usar. En este caso, vamos a usar nuestra función "LeerTemperatura()", otra que llamaremos "EsperarUnaHora()", que se queda detenida durante una hora y las siguientes variables, que usará para guardar temporalmente distintos datos:
lecturas ///Contendrá las cantidad de lecturas realizadas temperatura_actual ///La temperatura leída actualmente temperatura_anterior ///La temperatura anterior.
1 Function LeerTemperatura() { 2 abrir carcasa del sensor 3 sacar sensor 4 guardar lectura de sensor en variable "temperatura_tomada" 5 meter sensor 6 esperar 3 segundos 7 cerrar carcasa del sensor 8 devolver el valor de "temperatura_actual" 9 } 10 11 lecturas = 1 12 t_actual 13 t_anterior 14 while lecturas <= 24 { 15 t_actual = LeerTemperatura() 16 if t_actual < 0 then 17 print "Por debajo del punto de congelación, se termina la medición" 18 end_of_program 19 if lecturas == 1 then 20 t_anterior = t_actual 21 if t_anterior < t_actual then 22 print "La temperatura está subiendo" 23 if t_anterior > t_actual then 24 print "La temperatura está bajando" 25 t_anterior = t_actual 26 lecturas = lecturas + 1 27 if lecturas <= 24 then 28 EsperarUnaHora() 29 }
Entre la linea 1 y 9, está la definición de la función LeerTemperatura(), sólo que en la linea 8, le he añadido que devuelva el valor leído.
En las linea 11, definimos una variable contador, que llevará las lecturas realizadas, comenzamos con el valor 1 que es la primera lectura que vamos a hacer. en 12 y 13, tenemos t_actual y t_anterior, que llevarán las temperatura que se acaba de leer y la leída en la hora anterior respectivamente. No se inicializan con ningún valor como el contador lecturas, esto se hará en el programa.
En 14 creamos un bucle, que se cumplira mientras el núm. de lecturas sea menor o igual a 24. En 15, guardarmos en la variable t_actual la temperatura leída. Si está por debajo de cero, termina el programa, y si es la primera lectura, como no tenemos una lectura anterior todavía, igualamos ambas, es decir, la anterior y la actual, son la misma.
Las lineas hasta la 25 creo que están claras, en 25 la temperatura anterior, pasa a ser la actual, así en la próxima lectura, ya estará guardada.
En 26, incrementamos en uno el número de lecturas. Por último en 27, esperamos una hora para realizar la siguiente medición, excepto la última vez, que no hace falta esperar, terminará el "bucle while" y acabará el programa
Espero haber aclarado alguna dudas sobre "el misterio" de la programación.
Comentarios
Claro esta explicacion es muy
Claro esta explicacion es muy buena, para los lenguajes de programacion de Alto Nivel (Mas cercanos a la comunicacion humana que a la comunicacion de la maquina), que los otros... bien gracias =S
solo lo decia como
una "broma"(si se puede llamar asi)
ya sabia que no era ningun codigo de programacion lo e dicho porque si fuera un codigo de programacion de verdad seria muy facil aprender a programar.por lo menos se algo nuevo: estos ejemplos se llaman pseudocódigos
salu2
[url=http://valid.canardpc.com/show_oc.php?id=1384748][img]http://valid.canardpc.com/cache/banner/1384748.png[/img][/url]
tus tutos
tus tutos son geniales me estan ayudando mucho (:
Y yo pensando...
Y yo pensando hasta ahora que sabía programar... =P Bromas a parte, esto me habría venido a mi muy bien hace un par de años Gorrister, pero de esta froma esperemos que la gente comprenda como funciona un lenguaje de programacion y como esta todo organizado. Me gusta mucho que lo hayas hecho tan sencillo de entender para cualqueira (ya que esa es su finalidad ^^).
Como siempre un tutorial de 5 estrellas.
Un saludo.
-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----
Sobre el lenguaje usado
Aclarar a los comentarios de abajo, que no es ningún lenguaje en concreto, como alguien ha dicho, es un pseudocódigo, está claro que se parece a decenas de lenguajes, pero no es ninguno de ellos.
He querido usar llaves para cerrar las sentencias, también podría haber usado un "end if", "end while", etc. La finalidad de este modesto tutorial, más que aprender la sintaxis de un lenguaje, es tomar contacto de la forma que tiene de trabajar un ordenador.
Un saludo y gracias por los comentarios.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Excelente
Otra de las muchas entregas que faltaban en Scenebeta, muchas gracias por ayudar a la comunidad y a sus usuarios.
Saludos.
buen tuto
muy bien redactado y supongo que me servira para iniciarme en esto
por cierto ¿como se llama ese lenguage de programacion?¿le a puesto alguien algun nombre?
salu2
[url=http://valid.canardpc.com/show_oc.php?id=1384748][img]http://valid.canardpc.com/cache/banner/1384748.png[/img][/url]
Lua
Creo que es Lua por el print.
Saludos.
Lua no es
Está hablando de forma general que sirve para todos los lenguajes.
De todas formas, en Lua se inicia algo sin { ni nada de eso y se acaba con un simple "end" sea lo que sea. En el código ese he visto inicio { y acabados }.
Saludos
- Monty (anteriormente, Calabato64)
¿Tu crees?
Yo no he dicho que sea un LUA puro, he dicho que creo que utiliza Lua para algunas funciones, pero si te pones así mejor te digo que no es ningún lenguaje, es un pseudocódigo y ahora intenta demostrarme lo contrario.
una pregunta
Que es LUA he leido algo pero no me ha quedado claro,definelo :)
Respuesta
Yo no he dicho que sea un LUA puro, he dicho que creo que utiliza Lua para algunas funciones - La verdad, no lo sé, esperemos a que conteste Gorriester
pero si te pones así - ¿Cómo me he puesto?
no es ningún lenguaje, es un pseudocódigo - Cierto, no puedo demostrarte lo contrario.
- Monty (anteriormente, Calabato64)
Respuesta
Con lo de "si te pones así" me refería negar algo desde el desconocimiento.
Niegas que sea Lua porque utiliza los "{ y }", supongo que es porque no sabes que en Lua si se pueden utilizar, otra cosa es que la gente le de poco uso o no lo vean practico.
Simplemente utilice esa frase para lanzar lo del pseudocódigo.
Lenguaje de programación
es claramente Visual Basics, concretamente quizas seria Visual Basics para aplicaciones... algo diseñado para integrarse con Excel, Access y demás.
Yo he aprendido Visual Basics "trasteando" en mi trabajo con una base de datos que me estoy creando y puedo asegurar que es un lenguaje rapido, sencillo y facil de aprender si te quieres iniciar en la programacion, eso si a veces soy un poco burro y me las apaño como puedo, aqui teneis un ejemplo muy divertido xDD.
Resulta que queria escribir la ruta del archivo que tengo abierto, es decir la dirección de la carpeta donde está... pues bien por internet no he encontrado nada parecido asi que se me ocurrió algo un tanto rudimentario pero que funciona, reiros de las vueltas que doy, (En Visual Basics al poner una comilla de estas ' todo lo que escribas detras es un comentario y no lo detecta como codigo... hasta la siguiente linea.
Me.diredelacarpeta = objVBE.ActiveVBProject.FileName 'dentro del campo diredelacarpeta escribe la ruta completa del archivo abierto
Me.diredelacarpeta = StrReverse(Me.diredelacarpeta) 'a ese mismo campole le digo que su texto será dado la vuelta
Me.diredelacarpeta = Mid(Me.diredelacarpeta, 25) 'me cargo las 25 primeras letras
Me.diredelacarpeta = StrReverse(Me.diredelacarpeta) 'se le vuelve a dar la vuelta y por tanto me he cargado las 25 ultimas letras, ya ke sabia cuantas letras tenia ese archivo xDDD
Resumiendo: tienes un Campo al que le pones un nombre.... luego usas ese nombre para usarlo en el codigo, y le dices lo que el codigo hará con ese nombre, lo que yo he hecho ha sido cambiar lo que hay escrito dentro de ese campo con el nombre "diredelacarpeta" 4 veces, pero como aqui nos ha explicado nuestro amigo, un ordenador lo procesa todo tan rapido ke esos 4 cambios no han sido ni una milesima de una milesima de segundo, por lo que lo UNICO que vemos los humanos será el resultado final ^^
icon0 sin linkear
icon0 sin linkear
Gran tutorial
como todos los que has hecho hasta ahora :)