Anuncios Google

¿Qué es eso de programar?

Tutoriales de Programaciones

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.
  • sentencias de control y de bucle.
  • funciones, métodos o procedimientos

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 condition do (mientras condicion hacer). Se realiza un bucle o ciclo mientras se cumpla la condición.
while temperatura > 0 do {
    LeerTemperatura()
}
print "El agua se ha congelado"

Aquí realizamos un bucle, comprobamos que la temperatura sea mayor que cero, si es así, volvemos a leer la temperatura con una función (veremos las funciones más adelante). Cuando no se cumpla la condición, se saldrá del bucle y se imprimirá el mensaje de que se han congelado el agua.   

*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_inicial to valor_final, incremento do (mientras valor_inicial hasta valor_final hacer): Esta quizás sea una de las más complicadas, se realiza un bucle en el que una variable toma un valor, en cada recorrido del bucle, ese valor aumenta "incremento" y se repite el bucle hasta que se llega o se pasa el valor_final. Aquí pongo un ejemplo, no te preocupes si no lo entiendes del todo.
for valor=1 to 10, +2 do {
    print valor
}
print "Hemos salido del bucle porque valor es >= 10"

Esto imprimiría
1
3
5
7
9
Hemos salido del bucle porque valor es >= 10
   
FUNCIONES, MÉTODOS O PROCEDIMIENTOS:
En realidad, es todo lo mismo, puede que según el lenguaje usado haya algunas diferencias, aquí voy a usar la palabra funciones. Una función, es un trozo de código que está aislado y puede "llamarse" para ejecutar sus intrucciones. Esta función, puede recibir datos, lo que se conoce como "pasar parámetros" y devolver ningún, uno o varios resultados. Lo normal en la mayoría de los lenguajes es uno o ninguno.

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

Ahora tenemos un programa que lee la temperatura 3 veces:
///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

He omitido las otras lineas, pero fíjate que hemos repetido 3 veces las mismas intrucciones. Además si la rutina de leer la temperatura estuviera mal, por ejemplo, se ha descubierto que la carcasa cierra pronto y golpea al sensor, hay que hacer una pausa antes de cerrarlo.
///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

Se ha añadido una linea que espera 3 segundos antes de cerrar la carcasa, en el ejempo anterior, habría que buscar entre más de 4000 lineas y añadir esta instrucción donde se lea la temperatura. Explico esto para que veáis cual es el motivo de usar funciones, "divide y venceras". De nuevo el ejemplo usando funciones.
///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

Las ventajas son evidentes, muchas menos lineas y cuando pongamos la instrucción "esperar 3 segundos", tan sólo tenemos que ir a la parte donde se definió la función, no buscar entre miles de lineas.

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  }

   
Voy a explicar el código un poco por encima para que veas que hasta la cosa más simple, requiere una serie de pasos estructurados para comunicarle a un computador lo que queremos que haga. No te preocupes si no lo entiendes del todo, la intención de este tutorial es que comprendas que a los ordenadores hay que darle las instrucciones muy desglosadas y que funcionan procesando dichas intrucciones una a una.

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.

4.72131
Tu voto: Ninguno Votos totales: 4.7 (61 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

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

Imagen de jose-14

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]

 

Imagen de xX_b-bo0y_Xx

tus tutos

tus tutos son geniales me estan ayudando mucho (:

 

Imagen de Arbër

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]]----

Imagen de pspgorrister

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.

Imagen de the dragon lives

Excelente

Otra de las muchas entregas que faltaban en Scenebeta, muchas gracias por ayudar a la comunidad y a sus usuarios.

Saludos.

Imagen de jose-14

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]

 

Imagen de the dragon lives

Lua

Creo que es Lua por el print.

Saludos.

Imagen de Monty - Calabato64

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)

Imagen de the dragon lives

¿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.

Imagen de ortegi

una pregunta

Que es LUA he leido algo pero no me ha quedado claro,definelo :)

Imagen de Monty - Calabato64

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)

Imagen de the dragon lives

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 ^^

Imagen de Monty - Calabato64

icon0 sin linkear

icon0 sin linkear

Imagen de P22

Gran tutorial

como todos los que has hecho hasta ahora :)

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.