Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Meta en 29 Julio 2010, 19:39 pm



Título: Introducción a la programación
Publicado por: Meta en 29 Julio 2010, 19:39 pm
¿Cómo hablo con la máquina?

Pongamos que, un buen día, ante tus ojos, tienes una maravillosa máquina que la gente llama ordenador.

La miras con cautela (¿morderá?), y lo primero que tus ojos observan, es que consta de varios trozos. Uno de ellos, de verdad, es clavado a la tele de la salita (¿podré ver la peli de la 2 desde aquí?). Otro de esos trozos recuerda a las máquinas de escribir de nuestra infancia (¿le podré mandar una carta a mi abuela?; ¿y por dónde meto el papel?).

Sin embargo, en un ordenador "medio", suele haber algo más, que lo primero que recuerda es a una caja grande de zapatos, con la diferencia de que no tiene zapatos dentro.

Se le suele llamar "torre" (pues yo no veo ningún castillo) o, simplemente, caja. Si la abrimos, entre todo el maremágnum de cables existente, podemos ver unas plaquitas muy finas. Un consejo: no las rompas. Tienes ante ti, al cerebro pensante (es un decir) de la máquina, y a todos sus súbditos.

Entonces, como eres una persona emprendedora, te preguntas, "¿y cómo demonios le convenzo para que se ponga la peli de la 2?", "¿sabrá hacer ganchillo?", "¿podremos hacernos amigos?". Esto último depende de ti, y sólo de ti. Porque, lo primero que tienes que tener pero que muy claro es que la máquina hará única y exclusivamente lo que tú le digas. Lo segundo, es saber que tu máquina tiene limitaciones (lo siento mucho, pero sin brazos dudo mucho que pueda hacerte la comida) y que está diseñada para unas tareas concretas ("¡pero bueno, ¿puedo o no puedo ver la peli de la 2?!"). Lo tercero: tienes que aprender el lenguaje de la máquina. Porque, claro, si le recitas algún poema, nadie te salvará de su gesto de indiferencia: no te entiende. La pregunta lógica, pues, ¿y cuál es el idioma de la máquina? ("¿que no sabrá ruso y mira cómo se lo calla?").

Si eres despierto, habrás observado con especial atención cuando he dicho que hay un maremágnum de cables en alguna parte. No importa tanto lo de la parte como lo de los cables. Bien, veamos: cables. ¿Y yo para qué quiero un cable? Bueno, sí, puedo querer estrangular al perro de la vecina, vale, pero eso no me ayuda a saber cómo hablarle a mi máquina (ni siquiera al perro de la vecina). ¿Por dónde íbamos? Ah, sí... CABLES. Bueno, ahora que lo pienso, por los cables pasa la corriente. Uuummm... CORRIENTE, sí, vamos bien.

¿Y qué le pasa a la corriente? ("ah, yo no sé, pregúntale a ver"). Pues que, como el dinero, *está* o *no está*. Vale, vamos progresando.

Si te fijas más aún, en esas placas que te he sugerido que no rompas, hay dibujitos como los de las "pelis" futuristas con un montón de líneas, y hay como una cajita negra grandota con un montón de patitas ("¡Agh, por Diox, una cucaracha!, ¡Traedme el insecticida!") ¡Vaya, pero si de esas patitas salen más de esas líneas!

No te engañes: esas líneas son cables, y la cucaracha grande es la que manda. Esa cucarachita está preparada para entender un idioma (no tan rico como el castellano) que le permite hacer sus cuentas, encargarle a alguien que las haga por ella ("¿tiene una calculadora?"), y, lo más importante, por medio de esos cables, dar órdenes a diestro y siniestro a sus súbditos y recibir las respuestas de los mismos.

Tiene muchas responsabilidades encima, para ser una cosa tan chica. Y suele responder al nombre de "procesador" (aunque no se gira cuando le llamas).

Sus colaboradores se encargan (si están todos lo cables enchufados como toca, cosa que presuponemos) de hacer cuentas, de enviar señales de vídeo a esa cosa "clavada a la tele de la salita" para que puedas ver desde unas tristes letras blancas en fondo negro (aunque tienen su encanto) a la última novedad en 3D con muchos colorines, de permitirnos que al pulsar una tecla aparezca por esa pantalla, en fin... ¡todo un mundo!

Y el procesador, para que le hablen, simplemente necesita que le digas: "0" o "1". ("¡Pero bueno, ¿y para esto tanto rollo con que si lenguajes de programación que si historias?"). ¿Qué significa esto? ¿Por qué, de entre todas las posibles formas de comunicación, ha ido a elegir la más estúpida?

Bueno, en realidad no lo es tanto. Lo que quiere decir es, "0": ausencia de corriente. "1": presencia de corriente. Es la manera más fácil. Pero esto no acaba aquí. Como podrás imaginar, los 0 y 1 pueden aparecer de muchas maneras. Ah, ahí has dado con la clave de todo: 0 y 1 son "el alfabeto", pero todas las formas en que pueden aparecer son sus "palabras" (aunque no te recomendaría que asociaras palabra con esto).

Ya está claro: tengo que saber hablar en 0 y 1 si quiero tener algún tipo de relación con mi ordenador. Pero no es nada "humano", digamos intuitivo. Lo ideal sería que pudiera hablarle de forma que se parezca más a mi manera de hablar, puesto que no estamos ahora para ir aprendiendo idiomas tan "exóticos".

Y entonces llega el ser humano con su ingenio, y decide inventarse un lenguaje más sencillo con el que hablarle a la máquina: y nació el ensamblador. Pero, para una persona cuyo objetivo más ambicioso (por ahora) es escribir un "Hola Mundo", resulta demasiado complicado. ¿Por qué? Pues porque requiere conocer a la máquina como a uno mismo, y si uno mismo no llega a conocerse bien, qué me direis de su máquina.

Así, en un alarde de ingenio, el ser humano repite jugada, y se inventa otros lenguajes que, ahora sí, son más parecidos a nuestra forma de pensar.

Estos lenguajes, como todo, hay que aprendérselos, pero tienen una ventaja, y es que hay varios puntos en común.

Todos constan de unos determinados tipos de variables. Una variable es como una caja, donde ahora puedo meter un zapato y mañana un tomate. Ahora, yo puedo haber etiquetado mis cajas y decir "aquí sólo fruta": será una variable de tipo FRUTA. O, "aquí sólo legumbres": será una variable de tipo LEGUMBRE. Esto es interesante, porque en el momento en que yo vea FRUTA, ya sé que dentro no hay cerveza (y tendré que buscar en otro sitio, jo, qué sed...). Pero no sólo eso: yo sé que tengo muchas cajas para frutas, pero puedo querer bautizarlas ("tú serás la caja de frutas Juana"), y así llamarlas por su nombre. Podré cambiar (o no) su contenido (hoy Juana tiene un melón pero mañana le pondré ciruelas), pero NO lo que puede contener: FRUTA.

Esto también lo tiene en común los lenguajes de programación. Sólo que sus variables son de otro TIPO. Pueden ser enteros (sí, como los números que nos enseñaron en la infancia), números con decimales, cadenas de caracteres (no es más que un caracter detrás de otro) y otros que ahora no comentamos (quedan para más adelante).

Lo normal es declarar las variables al principio de un programa. Declarar no es más que decir "mira, yo quiero tres variables enteras, y quiero que una se llame Pepi, otra Juani y otra Yoli". A partir de este momento, podrás meter un -4 en Pepi, un 2 en Yoli, y hacer Pepi+Yoli. El resultado será -2.

Vaya, esto se pone interesante. ¿Qué más cosas me permite hacer un lenguaje de programación? Pues me permite hacer operaciones conocidas por todos como sumar, restar, multiplicar y dividir.

Los lenguajes de programación, cuentan todos en su haber con un juego de "instrucciones". Una instrucción no es más que una orden que nosotros le damos a la máquina.

Y es que, al fin y al cabo, un PROGRAMA no es más que una secuencia de instrucciones (escritas en algún lenguaje de programación) pensado para RESOLVER algún tipo de PROBLEMA. Si no sabemos resolver este problema, no podremos escribir el programa.

A ti se te puede ocurrir una manera de resolverlo. A tu vecino, otra. Este METODO con el que resolveis el problema, es lo que se llama ALGORITMO, y es lo que vamos a ver en este cursito cómo se hacen.

Un algoritmo no es más que una secuencia de pasos que, seguidos uno a uno, me permiten resolver un problema.

Por ejemplo, cuando quiero ver una película de vídeo, podría hacer:

   1. Elijo una película de las de mi colección.
   2. Compruebo SI TV y vídeo están conectados a la red (y procedo).
   3. SI la TV está apagada, la enciendo, SI NO, pues no. Y lo mismo con el vídeo.
   4. Abro el estuche de la película.
   5. Saco la película de su estuche.
   6. Introduzco la película en el vídeo. Dejo el estuche sobre el vídeo.
   7. SI la TV no está en el canal adecuado, la cambio, SI NO, pues no.
   8. Cojo los mandos a distancia (el del TV y el del vídeo).
   9. Me pongo cómodo.
  10. Pulso PLAY en el mando del vídeo.


¿A qué no se os había ocurrido?

Fijaos bien en unos detalles que son fundamentales y que aparecen en este algoritmo:

   1. La descripción de cada paso no me lleva a ambigüedades: los pasos son absolutamente explícitos y no inducen a error.
   2. El número de pasos es finito.

Y es que no puedes tener eternamente pensando a la máquina si pretendes que te dé algún resultado en algún momento.

Podría poner una definición rigurosa de lo que es un algoritmo, pero me parece que con esto se coge la idea.

Notar también que he escrito en mayúsculas las palabras SI y SI NO. Como podeis imaginar, formar parte de la manera en que se escriben algoritmos.

Por ahora, os invito a que describais algorítmicamente situaciones cotidianas de vuestra vida. En la próxima entrega haré un resumencito escribiendo las cosas de forma algo más rigurosa (al principio lo que importa es que se entiendan las ideas), completaré lo dicho sobre las variables, y seguiremos por esos pecaminosos senderos del mundo de la programación: las instrucciones de control de un programa.

Fuente:
http://www.programacion.com/articulo/introduccion_a_la_programacion_205


Título: Re: Introducción a la programación
Publicado por: forever77 en 23 Agosto 2010, 13:48 pm
Hazte esta pregunta:

kien está en posesion de la verdad? la maquina,el inventor,el pensadorel desarroyador,