martes, 29 de octubre de 2013

pl04 - variables numéricas

buenas, perdón por la demora de esta clase, pero aveces las circunstancias cotidiana requieren mantenernos mas tiempo offline.
pero con un poco de paciencia, continuamos adelante.
 
vimos en la clase anterior como definir una variable y como con la función inputBox podemos pedirle datos al usuario, ahora bien vamos a ver como manipular esos datos guardados.
 
crearemos una variable llamada contenedor, y guardaremos el número 5 en ella.
$contenedor=5
 
como es una variable del tipo numérica, no lleva comillas.
Vamos a utilizar un MsgBox para mostrar el contenido de la variable, entonces el código queda:
 
$contenedor=5
MsgBox(0, "contenedor", $contenedor)
 
si lo ejecutamos vamos a ver el 5, que es el contenido de la variable.
 
una de las tantas formas de manipular las variables es utilizando operadores matemáticos. como por ejemplo la suma, vamos a sumarle un número a esta variable:
$contenedor+3
 
obviamente si al resultado no lo guardamos en ningún lado se perderá, así que utilizaremos la variable info para guardar el resultado de la suma, lo haremos de esta forma:
$info=$contenedor+3
 
como vemos en el código tenemos la variable info que guarda el resultado de la suma de la variable mas  3.
vamos a ejecutar el siguiente código para verlo en funcionamiento:
 
$contenedor=5
MsgBox(0, "contenedor", $contenedor)
$info=$contenedor+3
MsgBox(0, "resultado", $info)


 
si, primero muestra el contenido de la variable, y luego le suma 3 y lo vuelve a mostrar.
 
en el caso de la resta funciona de la misma forma, probemos este código que en este caso le resta 3:
 
$contenedor=5
MsgBox(0, "contenedor", $contenedor)
$info=$contenedor-3
MsgBox(0, "resultado", $info)
 
de la misma forma podemos operar con la multiplicación, multipliquemos por 3:
 
$contenedor=5
MsgBox(0, "contenedor", $contenedor)
$info=$contenedor*3
MsgBox(0, "resultado", $info)
 
o lo dividimos por 2
 
$contenedor=6
MsgBox(0, "contenedor", $contenedor)
$info=$contenedor/2
MsgBox(0, "resultado", $info)
 
aquí ya aprendimos a operar con las operaciones matemáticas: suma, resta, multiplicación y división.
 
vamos a ver otro ejemplito y ya luego a las tareas:
 
vamos a preguntarle un número y luego vamos a mostrar la suma, la resta  y la multiplicación del número ingresado.
 
$contenedor=InputBox("matemática", "ingrese un número:", "")
MsgBox(0, "el número ingresado es", $contenedor)
$info=$contenedor+10
MsgBox(0, "si le sumamos 10 es:", $info)
$info=$contenedor-4
MsgBox(0, "si le restamos 4 es:", $info)
$info=$contenedor*2
MsgBox(0, "y si lo multiplicamos por 2 es:", $info)
 
ya con esto podemos hacer muchos script, es cuestión de largar la imaginación a correr.
 
tarea 1:
 
1. crear una variable numérica con el valor de 5.
2. irla multiplicando por 1, 2, 3...hasta 10 y mostrar en pantalla la tabla del 5.
 
tarea 2:
 
1. pedir un número al usuario
2. irlo multiplicando por 1, 2, 3...hasta 10 y mostrar la tabla del número ingresado.
 
saludos!.




sábado, 26 de octubre de 2013

pl03help - utilización de las variables

Buenas a todos, como veía que esta semana fue clara la clase, ya que no se presentaron dudas, decidí demorar un poco mas el post de ayuda.
 
Espero pronto tener mas novedades de este curso, ya que sigue adelante, y el proyecto programación-libre sigue creciendo gracias a la participación de todos, y a los que aportaron pagando la tutoría. gracias a todos. Próximamente: nuevas herramientas y material de estudio, que iremos probando en días.
 
contenido de las variables:
 
  Como dijimos en la anterior clase, la variable guarda datos, esos datos pueden ser categorizado de varias formas, los que estamos utilizando actualmente son los numéricos y los strings (cadena de texto).
 
Variables numéricas:
 
  pueden ser enteros positivos o negativos, o número decimales o reales. Para aquellos que no entienden mucho de matemática: las variables numeric son aquellas que guardan un valor numérico, por ejemplo:
$numeric=5
$numeric=-10
$numeric=11.3
 
y las variables del tipo string, son aquellas variables denominadas cadena de texto, es un conjunto de caracteres alfanuméricos encadenados, las variables del tipo string siempre van entre comillas, si ponemos una palabra como valor de variable sin las comillas autoit intentará tomarlo como numérica y tirará un error, así que siempre prestar atención de ponerle comillas de inicio y cierre si es una cadena de texto.
$texto="hola mundo"
 
Como podremos notar, los parámetros de una función también son variables, así que llevan la misma sintaxis:
* si es string: entre comillas
* y si no tiene comillas es numérico.
 
Ya en la siguiente clase veremos como manipular esos datos de las variables.
 
Excelente los trabajos que fueron entregando, veo que ahi gente que sigue la clase muy aplicadamente, un trabajo que me gustaría destacar esta semana, es el de Toni arenas que nos manda una aplicación para escuchar el canto de las aves del parque:
 
lo pueden descargar de aquí:
 
Son muy interesante las tareas de todos!, y quiero dejar en manifiesto que guardo todos los algoritmos y todo el material enviado, así que eso es lo que quiero activar en estos días, un espacio donde se pueda descargar y observar las tareas de los compañeros de clase.
 
Solo algunas observaciones en general:
 
Función MsgBox
 
Cuando queremos realizar una ventana sin tiempo de espera, no es necesario poner el 0 como cuarto parámetro, ya lo toma por default, así que solo ponemos los 3 primeros parámetros y la ventana queda sin espera. ejemplo:
en vez de poner:
MsgBox(0, "titulo", "texto", 0)
ponemos:
msgbox(0, "titulo", "texto")
 
Función SoundPlay
 
Algunas veces y por casos extraños algunos sonidos no se reproducen si son demasiado cortos, debe ser algún tema con el sistema operativo, tener en cuenta este detalle.
Un error común que lo vi en una tarea:
si ponemos un sonido y luego un MsgBox de 1 segundo, el sonido lo mas común que no suene, ya que el script finaliza antes que reproduzca el sonido, si quieres que el sonido se escuche antes que se muestre la ventana utilizar como segundo parámetro del SoundPlay el 1. Ahora si ponemos 0, poner mas tiempo al MsgBox para que permita reproducir el sonido.
 
Autoit y accesibilidad en Windows 7:
 
Para aquellos usuarios que utilizan screen readers como el jaws en el windows 7, es común que algunos MsgBox no los lea en algunas ocasiones, es un error del jaws. si no lee automáticamente utilizar cursor del jaws. o bien me han comentado que el NVDA no tiene ese problema, lee perfectamente.
Para los que utilizan xp, no tienen ese problema de accesibilidad.
 
Tarea!:
 
  Para aquellos que no se quieren aburrir en el fin de semana y quieren jugar un poco mas con la programación tengo una pequeña tarea:
Si no lo probaron: el SoundPlay reproduce un sonido a la vez, si activamos y o lanzamos otro SounPlay sin que se termine el anterior el sonido es remplazado, porque utiliza el mismo canal de audio, así que empieza a reproducir el nuevo.
vamos a probarlo:
 
algoritmo de la tarea:
1. muestren una ventana MsgBox con una pregunta.
2.. Reproduzcan un sonido un poco largo, 1 min por ejemplo con el parámetro 0 para que continúe el script.
3. Soliciten la respuesta con un inputBox
4. luego pongan otro SoundPlay para que el sonido anterior se corte, pongan algún efecto para darle fin a la canción anterior.
5. Muestren la respuesta con otro MsgBox.
 
Ahora a probar y jugar con esto nuevo, sean original y los invito a crear mas script con este juego de sonidos, para que los sonidos sean interrumpidos al cambiar la ventana.
 
Buen finde!

lunes, 21 de octubre de 2013

pl03 - variables y ingreso de datos

Buenas!, continuamos con la tercera parte de este curso de programación, ya en anteriores clases vimos que es una función, que son sus parámetros y utilizamos algunas de ellas.
  Hoy empezaremos a ver que es una variable, y para que se utiliza.
 
  Arrancaremos con un poco de teoría: como decíamos la informática estudia como automatizar la información, todo es información (datos) lo que se guarda o manipula en la pc. Esos datos lo guardamos en el disco rígido, lo almacenamos en memoria para ser utilizados, lo procesamos y lo volvemos a guardar. En la programación utilizamos las variables para almacenar datos para ser procesados posteriormente.
 
¿qué es una variable?:
 
  Para entender que es una variable apelamos a la imaginación: es como una cajita que definimos para guardar datos ahí dentro. La definición técnica sería: porción de memoria predefinida para guardar datos.
  Ejemplo: queremos realizar un programa que te salude personalizadamente, pero para ello antes debemos conocer tu nombre, así que utilizamos el siguiente algoritmo:
1. definimos una variable nombre
2. preguntamos el nombre, y guardamos la respuesta en la variable nombre
3. saludamos utilizando el dato almacenado en la variable nombre.
 
¿cómo utilizamos las variables en autoit?
 
  Definir una variable en autoit es muy censillo, para ello tenés que poner un nombre y antecederla con el símbolo "$". ejemplo: vamos a definir la variable caja, se realiza con la siguiente sintaxis:
$caja
 
  Todo lo que se defina en autoit debe tener un significado, una utilización, si ponemos solo ese código en autoit tirará un error, ya que dirá: bien, tengo una variable pero que hago con ella?.
  Como decíamos: toda variable es una cajita para guardar datos, así que ahi que asignarle que datos guardará, para ello se pone el signo igual "=", y luego el valor que le asignas a esa variable. Ejemplo:
$caja="manzana"
 
ahí definimos que $caja guardará como dato la palabra manzana, osea que pusimos manzana dentro de esa cajita.
 
¿Alguien imagina porque se llama variable?:
 
  Se denomina variable porque es un dato que puede sufrir modificaciones, que puede variar, ejemplo:
$caja="manzana"
en la caja tenemos manzana
$caja="limón"
ahora en la caja tenemos limón, el dato manzana se perdió
$caja="naranja"
ahora en la caja tenemos naranja, los anteriores datos fueron remplazados.
 
  Como vimos en el anterior ejemplo, al poner un nuevo dato en la variable, remplaza al dato anterior, osea que el valor se borra y toma el nuevo valor asignado.
 
AAggrrm, la teoría te aburre?, es útil pero si, es aburrida, así que vayamos a la acción, a utilizar esas variables!
  Vimos que la función MsgBox le podemos pasar parámetros, esos parámetros pueden ser fijos:
1. definidos: como los hicimos en clases anteriores.
2. variables: definir una variable para que tome el parámetro el valor de esa variable.
 
¿cómo que el parámetro toma el valor de la variable?
 
  Así es, para entenderlo, vamos a ver un ejemplo, copiemos este código y lo ejecutamos haber cual es el valor:
 
$caja="manzana"
MsgBox(0, "contenido de la caja", $caja)
 
  Ahora guardemos las 2 anteriores líneas en un archivo y lo guardamos como: caja.au3, lo ejecutamos con autoit y veamos haber que sucede.
exacto:
* en el título vemos: el contenido de la caja
* y en el texto a mostrar vemos el valor de la variable, que en este caso es manzana.
 
Decíamos que el valor de la variable se remplaza, veamos haber si es verdad, probemos este código:
 
Código 2:
 
$caja="manzana"
MsgBox(0, "contenido de la caja", $caja)
$caja="naranja"
MsgBox(0, "contenido de la caja", $caja)
 
  Como vemos en el código el contenido de la variable se modifica en la línea 3, pero la línea 2 y la 4 son exactamente igual, ya que el MsgBox no se modifica, solo el valor de la variable. vamos a probar un código mas largo:
 
Código 3:
 
$caja="manzana"
MsgBox(0, "contenido de la caja", $caja)
$caja="ubas"
MsgBox(0, "contenido de la caja", $caja)
$caja="naranjas"
MsgBox(0, "contenido de la caja", $caja)
$caja="manzana"
MsgBox(0, "contenido de la caja", $caja)
 
  Aquí vemos que el contenido de la variable $caja se modifica 4 veces y termina teniendo el mismo valor que al inicio, porque el valor fue remplazado otra vez.
 
Tarea 1:
Realizar una variable parque, y darle diferente valor de algún nombre de animal que esté en ese parque, luego mostrar con un MsgBox el contenido de la variable parque. Y para los que se anima, agregarle el efecto de sonido de ese animalito.
 
Función InputBox:
 
  Para los que saben inglés creo que se imaginarán para que sirve esta función.
INput: entrada
box: caja
  así es, es una caja de entrada de datos.
 
Esta función lleva 3 parámetros:
1. "título de la ventana
2. Texto de la ventana: que es la pregunta en cuestión
y 3. valor por defecto: si quieres poner algún valor escrito ya en la respuesta.
 
osea su sintaxis sería así:
InputBox("titulo", "texto", "valor")
 
  Como no queremos influir en la respuesta de los usuarios, en el valor por defecto no pondremos nada, dejemos el valor vacío.
 
nota: recuerden que todo parámetro que sea texto tiene que ir entre comillas "".
 
pero si utilizamos el INputBox simplemente, pedirá los datos pero luego los perderá, así que para conservar esos datos utilizaremos variables, osea creamos una variable dato para guardar ahí su valor, entonces la variable dato lo igualamos a la función inputbox, para que el resultado de la función (osea lo que escriba el usuario) se guarde en la variable dato.
  para entender codificaremos el ejemplo que dimos primero, le preguntaremos su nombre:
 
$dato=InputBox("mi soft", "¿cuál es tu nombre?", "")
 
Si probamos esta linea en autoit, lo guardamos en un archivo: nombre.au3 y lo ejecutamos. vemos que sale una ventana preguntando nuestro nombre.
 
¿y porque luego de ingresar nuestro nombre y darle enter se cierra?:
porque no le codificamos nada mas, y autoit solo hará lo que vos le digas, si no le dijiste que haga nada mas se terminó.
así que ahora codificaremos que lo salude:
 
$dato=InputBox("mi soft", "¿cuál es tu nombre?", "")
msgbox(0, "hola", $dato)
 
aquí si lo probamos vamos a ver que lo saluda con el nombre ingresado, porque es el valor que guardamos en la variable dato.
 
tarea 2:
realizar un script que pida el nombre, la edad y el signo zodiacal, y luego mostrar esos valores ingresados en diferentes ventanas, saludándolo por el nombre, mostrándole la edad, y diciéndole tu signo es.
 
Hasta aquí la clase de hoy, mucho para aprender y mucho para practicar!, sentite libre de probar y ejercitar, y cualquier duda me contactas.
Si este curso te sirvió puedes aportar pagando una tutoría vía paypal o western union. y tendrás un seguimiento personalizado y una clase de apoyo todos los jueves. Consulta por otros métodos de pago en tu país o tu moneda local.
twitter: @barrazamiguel

viernes, 18 de octubre de 2013

PL02Help mas sobre funciones

Buenas, me pone muy feliz que muchos puedan seguir el curso y recibir sus tareas. Debido a problemas técnicos ando sin pc, así que el post del elefante tendrá que esperar porque ahi algunos algoritmos que no los tengo, ya los subiré a todos y mostraré el ejemplo que quería mostrar, gracias por sus ingeniosas tareas.
 
Creo que en la clase anterior no quedaron muchas dudas, porque todos realizaron las tareas muy bien. para ejemplificar quiero dejar el script de Jonatan donde utilizó diferentes sonidos, y las ventanas automáticas, pueden descargarlo, probar y ver su código:
 
al fin del post estará el código pegado.
 
Pasaremos a hablar un poco mas de las funciones, pero antes recordar que no tengan miedo de enviar sus dudas: si no respondo es porque se me entremezcló el mail, reenvíen la consulta que todas serán respondidas.
Además recuerdo que está la opción de la tutoría: si tienes dudas, y quieres un seguimiento personalizado, el costo de la tutoría es muy económico, ayudas a que este curso siga adelante.
 
Mas sobre funciones:
 
  Como vimos en las 2 primeras clases, las funciones es algo muy útil y que las usamos continuamente. Autoit trae ciento de ellas y además permite crear las nuestras propias (ya aprenderemos a como crearlas).
 
Incluso la comunidad de autoit es muy activa, se crean ciento de funciones y se comparten por internet, dichas funciones se la denominan UDF
(Funciones definidas por el usuario). Tienes UDF para todo lo que te puedas imaginar, y si no existe aún esa UDF, la puedes crear tu para sumarla a la comunidad. Existen funciones para manipular imágenes, comprimir archivos, automatizar internet explorer, firefox, trabajar con el office, skype, o con otros programas.
 
En general en la programación un conjunto de funciones se la llaman librerías, ejemplo:
creo un conjunto de funciones para manipular archivos:
* abrir un archivo
* leer un archivo
* escribir en un archivo
entonces sería una librería de archivo, ya que contiene un conjunto de funciones para trabajar con él.
 
En la última clase vimos la Función: SoundPlay, esta función se encuentra en una librería de sonido, en la cual contiene varias funciones para manipular el sonido con autoit, funciones que las iremos estudiando mas adelante.
 
La diferencia de autoit, con otros lenguajes, es que no es case sensitive, osea no es sensible a mayúsculas. En el lenguaje c o php ejemplo no es lo mismo poner:
* hola
* Hola
* hoLa
* HOLA
serían 4 cosas diferentes, porque la mayúsculas es un carácter diferente a la minúscula.
 
En autoit puedes poner:
* soundplay
o puedes poner:
* SoundPlay
y autoit lo interpreta de la misma forma, es recomendado utilizar la segunda para aquellos que utilizan lectores de pantallas como el (jaws o el NVDA) puede leer bien y interpretar bien la diferencia de la función.
 
Otro factor importante, es que los parámetros van separados por coma, no importa los espacios, ejemplo si tenemos una función para pintar de rojo, azul y verde de esta forma:
pintar(2,1,3)
eso se interpretaría pintar 2 de rojo, 1 de azul y 3 de verde. como verán no tiene espacio de separación, podríamos poner también:
pintar(2 ,1    ,3 )
también autoit lo interpretaría, pero aquí ahi mas espacios, aveces antes y aveces después de la coma, no importa la cantidad de espacios para autoit, importa el parámetro que le pasas.
 
pero por standar siempre es mejor respetar un formato, porque si no sería un tremendo lío entender. lo recomendado sería no poner espacios antes de la coma, si no después, y con un solo espacio de separación es suficiente, poner lo de esta forma:
pintar(2, 1, 3)
de esa forma un lector de pantalla lo lee correctamente, y una persona que lo sigue con la vista entiende perfectamente la separación de los parámetros.
 
Esto es parte de la teoría inicial, comprender bien estas cosas hará que nuestra base sea mas firme, y en las siguientes clases que empezaremos a programar mas nos ayudará mucho entender todos estos conceptos.
Estamos solo a un paso de meternos en la programación pura, ya en 2 o 3 clases mas ya estaremos creando nuestras propias aplicaciones funcionales.
 
un abrazo a todos, futuros programadores!
 
Código del script de Jonatan:
SoundPlay("Train swoosh.mp3", 1)
msgbox(0, "sounds", "1", 6)
SoundPlay("time05.wav", 0)
msgbox(0, "sounds", "2", 5)
SoundPlay("TruckCrash.wav", 1)
msgbox(0, "sounds", "3", 4)
SoundPlay("Vibrating swish.mp3", 0)
msgbox(0, "sounds", "4", 3)
SoundPlay("Truck.wav", 0)
msgbox(0, "sounds", "fin!", 9)

lunes, 14 de octubre de 2013

pl02 - funciones y sus parámetros

Buenas a todos, hoy en esta segunda clase avanzaremos mas en el mundo de la programación.
En la clase anterior instalamos el autoit y realizamos nuestra primera aventura escribiendo:
 
msgbox(0, "mi soft", "hola mundo")
 
Como dijimos en la introducción, autoit es un lenguaje de programación, cada lenguaje tiene una estructura (una forma de escribirlo), a esas estructura se le llama sintacsis. si no se respeta la sintacsis de cada lenguaje, no veremos el resultado, si no un error. para ejemplificar eso, tomemos la anterior línea de código y borrale alguna coma (,) o alguna comilla (") y verás un error en tu script.
 
¿cual es la diferencia entre script y soft?.
 
El script es un guión, un conjunto de comandos que ejecutado continuamente realizan una función. El soft es un programa compilado (archivo.exe) en windows, que realiza una tarea. para entenderlo mejor: cuando escribimos un código y lo guardamos como file.au3, es un script. cuando lo compilamos y queda como file.exe, es un soft. Esta definición tiene un fundamento mucho mas técnico, pero que lo iremos perfeccionando mas adelante, con quedarse inicialmente con esta idea es mas que suficiente.
 
introducción a las funciones:
 
  Antiguamente en los lenguajes de programación se tenía que escribir todo el código, imaginate si para cocinar tuvieras que forjar tu propio cuchillo, armar tu propia cocina, crear tu propia bandeja, etc etc, para cocinar un simple pollo tardarías meses. Para eso se dieron cuenta que podían armar pequeñas porciones de código en funciones que se pueden reutilizar. Si quieres comer, no te pongas a crear tu plato como todo un artesano, comprate uno y a comer. De eso se trata los lenguajes de programación modernos, no inventemos la rueda, ya está creada, fabriquemos el auto.
 
vamos a ver el ejemplo con código de programación, veamos la siguiente sintacsis:
 
msgbox(0, "mi soft", "hola mundo")
 
Ya sabemos que esa sintacsis crea una ventana en pantalla, con un botón aceptar, con un título "mi soft", y un texto en pantalla: "hola mundo".
como decíamos en la primera clase, siempre ahi que preguntarse: ¿porqué?, ¿como crea esa ventana con tan poco código?.
la respuesta está en autoit: si analizamos bien la linea vemos que tiene una palabra inicial: "MsgBox", y luego valores entre paréntesis, exactamente esa es la estructura de una función.
 
Si estás en lo correcto, MsgBox, es una función. y para los que saben inglés pudieron deducir lo que significa:
* msg: mensaje
* box: caja
* MsgBox: caja de mensaje
 
Siempre al crear una función ahi que darle un nombre relativo a lo que realiza, esta función MsgBox, crea una caja de mensaje )(o una ventana con un mensaje) en pantalla, por eso se llama así.
 
¿cual es la sintacsis de una función?
 
Como dijimos, la sintacsis es una estructura a seguir siempre, y una función se expresa de esta forma:
NombreDeLaFunción(valor1, valor2, valor3)
 
el nombre de la función al inicio, y entre paréntesis los valores que le pasas a esa función para que realice su tarea, cada valor debe ir separado por una coma (,). esos valores se denominan parámetros, osea que cada función para que realiza su tarea necesita parámetros.
 
Para entenderlo, vamos a llevarlo a un caso de la vida real:
imaginemos que programamos la función cocinar en el microondas, y la llamamos "CocinarMicroondas", a esta función le ponemos 2 parámetros:
valor1: que deseamos cocinar
valor 2: cuanto lo deseamos cocinar, indicado en minutos.
 
entonces si ponemos esta sintacsis:
 
CocinarMicroondas("pollo", 15)
 
Con esa función estaríamos indicando que al pollo queremos cocinarlo 15 minutos.
con esta otra:
 
CocinarMicroondas("pan", 10)
 
con esta otra estamos indicando que queremos cocinar el pan 10 minutos.
 
Bien, ahora que entendemos que es una función y que son los parámetros de la función veamos mas a fondo la sintacsis de la función MsgBox:
 
msgbox(0, "mi soft", "hola mundo")
 
La función MsgBox vimos que tiene 3 parámetros:
1. El tipo de ventana: que vimos si cambiamos el número nuestra diferente ventanas con diferentes imagenes y botones.
2. el título de ventana
y 3. el texto de la ventana.
 
toda función puede tener valores obligatorios y opcionales.
En este caso, estos 3 valores son obligatorios. Pero la función MsgBox tiene un cuarto parámetro que es opcional:
4. valor que desees que la ventana se mantenga en pantalla, indicado en segundos.
 
ejemplo:
 
msgbox(0, "mi soft", "hola mundo", 10)
 
si guardamos este código en un archivo y lo ejecutamos veremos que luego de 10 segundos, sin tocar nada, la ventana se cierra.
 
veamos ahora este otro ejemplo:
 
msgbox(0, "mi soft", "hola mundo 1", 5)
msgbox(0, "mi soft", "hola mundo 2", 5)
msgbox(0, "mi soft", "hola mundo 3", 5)
 
copiemos las 3 líneas de código y lo ejecutamos. cuando aparezca la ventana no toquen ningún botón y verán que las ventanas se cambian sola y se cierra luego solo.
 
le puse un periodo de 5 segundos a la ventana, entonces:
1. muestra hola mundo 1, espera 5 segundos
2. muestra hola mundo 2, espera 5 segundos
3. muestra hola mundo 3, espera 5 segundos, y se cierra el script.
 
Entonces, con esto no tenemos que saber como programar una ventana en windows, ni tanto código para una simple tarea, solo con una línea de código autoit te ahorra el trabajo de crear una ventana con todas esas funciones.
 
Autoit tiene ciento de funciones para todas las tareas que te puedas imaginar, y si no la tienes puedes crear vos tus propias funciones, mas adelante veremos como hacerlo.
 
Y creo que ya fue mucho para una clase, para no seguir mareándolos mas. vamos a terminar como a todos nos gusta: programando.
 
hoy vamos a aprender una nueva función, una función que seguro a mas de uno nos parecerá interesante.
 
La función SoundPlay:
 
Si, como su nombre lo dice: es para darle play a un sonido. Reproduce un sonido indicado.
Vamos a probar el siguiente código solo en modo ejemplo:
 
SoundPlay(@WindowsDir & "\media\tada.wav",1)
msgbox(0, "mi soft", "hola mundo")
 
si copiamos estas 2 lineas y lo ejecutamos podremos escuchar un sonido antes que salga el "hola mundo".
 
Vamos a entenderla:
como ya dijimos, el nombre de la función va primero, y entre paréntesis sus parámetros separado por coma (,).
En este caso tiene 2 parámetros:
1. el nombre del archivo wav o mp3.
2. un valor que indica el tipo de reproducción.
 
si queremos reproducir el archivo: sonido.wav, ponemos así la sintacsis:
 
SoundPlay("sonido.wav", 0)
 
nota: tener en consideración lo siguiente:
1. el nombre del archivo va siempre entre comillas ("")
y 2. para las pruebas, si el script no tiene nada mas que hacer que un sonido no suele escucharse, así que si vas a probar esta función siempre agregarle un MsgBox (al final), así mientras muestra una ventana reproduce el sonido, porque si el script finaliza corta el sonido.
 
El segundo parámetro puede tomar 2 valores: 1 o 0.
 
si es 0: reproduce el sonido y continúa con el script. osea si se pone un MsgBox luego: reproduce el sonido y muestra la ventana, todo a la vez.
si es 1: primero reproduce el sonido, y luego continúa con el script, osea: primero reproduce el sonido, cuando el sonido termina recién muestra la ventana.
 
si el sonido está en la misma carpeta donde guardaste el script, solo pones el nombre del archivo (es lo recomendado).
si está en otra carpeta, pones la ruta, ejemplo: c:\sonidos\sonido.mp3.
 
tarea:
modificar el script realizado en la anterior clase (o crear uno nuevo original) agregando sonidos para que quede mas divertido, comprimir la carpeta con el script y los sonidos y enviarla por e-mail.
 
Espero que se diviertan!.

viernes, 11 de octubre de 2013

pl01help ventana de texto y algoritmos

Hola!, gracias a todos los que participaron en la clase 1, y enviaron muy juiciosamente las tareas. También Gracias a los que ya abonaron la tutoría por apoyar este curso a que siga adelante.
Recuerdo que todos los que tienen la tutoría paga tendrán un seguimiento personalizado, para marcarle bien la evolución y ayudarlo paso a paso.
 
nota sobre la instalación de autoit:
 
los que tienen sistema de 64 bits, el autoit le dirá este mensaje durante la instalación:
You are running a 64-bit Operating System. You can use native x64 versions of AutoIt but some scripts may not work as expected.Use native x64 tools by default where possible?
y como opciones da esto.
Use native x64 tools by default.
y.
Use x86 tools by default (recommended for compatibility).
 
que significa?: autoit trabaja bajo plataformas de 64 bits y de 32, pero tenés que indicarle cual es la base. como ya detecta que tu sistema es de 64 bits te consulta si querés tener como base a 64.
si elegimos:
Use native x64 tools by default.
trabajaremos sobre plataforma de 64 bits siempre. entonces por default desarrollaremos siempre programas para 64 bits, programas que no podrán correr en 32. si instalamos esta podemos generar luego programas para 32, pero por default haremos siempre para 64.

para generar menos problemas y mas comodidad elegimos:
Use x86 tools by default (recommended for compatibility).
que como dice en inglés: se recomienda por compatibilidad.
ya que tendrá como base desarrollar siempre en 32 bits, y los programas serán compatibles para todo el mundo, ya que se podrán correr tanto en 32 como en 64.
 
nota de la clase anterior:
 
  En la primera clase aprendimos a utilizar el MsgBox, que como lo indica en la palabra es box (caja) msg (mensaje) una caja de mensaje. Que crea una típica ventana en windows: un cuadro donde muestra una información (un título y un texto)
  Al modificar los números del tipo de ventana va mostrando diferentes botones.
 
a continuación una lista con los botones mostrado por cada tipo de ventana:
0
botón ACEPTAR
1
ACEPTAR y Cancelar
2
Anular,omitir y reintentar
3
Si, No, y Cancelar
4
Si y No
5
Reintentar y Cancelar
6
Continuar reintentar y cancelar.
 
Además de diferencias de botones, también algunas ventanas muestra imagen en la ventana típicas al mostrar ciertas información en windows, además suelen tener algunos sonidos de alertas, si no lo han probado, pueden probar los siguientes números:
 
0
(No ícono)
16
Icono del Signo de Detener (típica ventana para mostrar error)
32
Icono de Signo de Interrogación
48
Icono de signo de Exclamación
64
Icono del signo de Información que consiste en una 'i' en un círculo (ventana para solicitar información)
 
Porqué luego de mi "hola mundo" el programa se cierra?:
porque no ahi nada mas codificado, y
como aprendimos en la primera clase: la pc es una caja boba, si no le
indicas nada no hará nada, y como no tiene mas código que el "hola mundo",
interpreta que el código terminó y el soft terminó así que se cierra.
si le agregamos la segunda linea: "adios mundo", entonces ejecuta el hola
primero y luego el adiós, y se cierra, porque hasta ahí llega el programa.
es perfecto lo que está pasando, con esta linea de c´código solo indicamos
que se muestre una ventana con un texto y al darle en algún botón se cierra.
 
Si le agregamos mas líneas de código el programa continuará realizando mas tareas. Ejemplo se podría capturar que botón presionó para brindarle una respuesta mas personalizada.
 
ejemplo laura programó un chiste y yo lo mejoré para que tenga mas funciones, no se lleven del código porque no es necesario que lo aprendan aún, solo para entender para que sirve el msgbox, así que este programa solo será en fin ilustrativo:
lo pueden descargar de aquí y ejecutarlo:
https://dl.dropboxusercontent.com/u/100311958/taller-programacion-libre/aula/chiste.au3
 
Como verán, aquí la ventana que te pregunta: si / no, personaliza la respuesta, si presionas no, da una respuesta diferente a si presionas si. mas adelante veremos como realizar esto.
También las vventanas de aceptar son automática, cada vez que te tire un cuadro aceptar no presiones el botón, si no que espera, la pc sola lo presionará.
estas son algunas de las genialidades que aprenderemos en las siguientes clases, y esto sirve para entender que se puede llegar a hacer con el MsgBox.
 
Algoritmia:
 
La algoritmia es la parte de la informática que estudia como realizar los algoritmos: esta es la función mas importante ya que te forma como programador.
La tarea de llegar a pensar como programador es la parte mas complicada, porque ahi que llegar a romper la lógica humana y adquirir la lógica máquina.
A que nos referimos como lógica:
la lógica es la ciencia de la matemática que estudia paradigmas razonales, ejemplo:
si tenemos una manzana, y nos regalan otra: tendremos 2 manzanas.
¿porqué?: porqué así nos enseña a razonar la lógica-.
 
La lógica máquina (o lógica informática) en algunos casos rompe esos paradigmas humanos, no todo es igual y iremos viendo cada uno de los casos.
Solo un adelanto, que lo iremos viendo con ejemplos y ejercicios mas adelante:
en humano: si te digo contá estos elementos contarías: 1, 2, 3, 4, etc.
en máquina: las máquinas toman el 0 como primer elemento, así que empezaría a contar desde el 0 como primer elemento: 0, 1, 2, 3, etc.
 
Entre los alumnos anotados en el taller tenemos a una psicóloga, así que será trabajo para ella sanarnos luego o si no seremos informáticos para toda la vida, jajaja.
Dicen que los programadores ya somos locos de naturaleza, así que a vivir esa locura no mas.
 
Volviendo a los algoritmos, en la programación como en la vida real ahi varias formas de llegar a un mismo resultado y vamos a verlo con un caso real:
 
Realizar y enviar vía mail el siguiente algoritmo:
Cómo capturar un elefante y tenerlo como mascota.
 
poner en práctica la imaginación y enviar sus ingeniosos algoritmos.
 
Luego de recibir haré un post de los algoritmos recibidos.

martes, 8 de octubre de 2013

la programación, una solución para todos

Hoy leía esta noticia, muy interesante para reflexionarla:
 Patrick McConlogue es un joven programador que vive y trabaja en Nueva York. En su camino para ir al trabajo cada mañana se encuentra con Leo, un desamparado que se mueve por los alrededores del río Hudson. Pero Patrick pronto entiende que no se trata de un indigente como los demás, sino que él parece sobrio, bien cuidado y deportista, como dejó constancia en su blog.
 
Este era por tanto el candidato ideal para su "experimento". Una mañana del pasado mes de agosto, Patrick McConlogue decidió pararse delante de Leo para hacerle dos propuestas: "O vuelvo a pasar mañana por la mañana y te doy 100 dólares o te traigo tres libros de programación en Java, una notebook usada y durante una hora al día te enseño cómo funciona el lenguaje de programación". Leo eligió la segunda opción.
 
Fiel al principio de Confucio "No le des peces, enséñale a pescar", Patrick empezó a impartir lecciones de Java al joven que vivía en la calle, que no tenía ninguna noción de informática previa. "Con 100 dólares puedo vivir durante cuatro días o quizás una semana, nada más", contó Leo en una entrevista al portal Business Insider.
 
De este modo, el joven regaló a Leo una Samsung Chromebook 3G, un cargador de baterías de energía solar y tres libros de Javascript, cada uno con un nivel diferente de dificultad. Después de cuatro semanas de trabajo ya casi había desarrollado su primera aplicación sobre el calentamiento global y el cambio climático, aunque por el momento no han querido revelar más detalles.
 
Mientras tanto, con el pseudónimo de Journeyman, el indigente ya ha creado su propia página en Facebook en la que consiguió tener casi 30.000 seguidores gracias al impacto de su historia en la red.
 
Sin embargo, lo que para muchos usuarios de internet se convirtió en una hazaña conmovedora podría tratarse, según algunos blogueros americanos y sitios de tecnología, es una campaña de marketing viral o de publicidad del propio McConlogue.
 
Fuente: ABC.es
Excelente historia, si se puede, se quiere.
y no aunque estemos en situaciones críticas ahi que ir por las soluciones fáciles: la programación siempre es una buena salida, y mas si podemos unirnos para desarrollar cosas útiles.
esta puede ser una campaña de marketing o no, pero ahi que seguir el ejemplo, no ir por los 100$, si no por la aventura de ser developers y programar nuestros propios sueños.

lunes, 7 de octubre de 2013

pl01 - conceptos y primeros pasos en la programación

  Bienvenidos al taller "pl" (programación libre), iniciaremos viendo algunos conceptos previos y luego pasaremos a la acción. Iba copiar algunos conceptos previos de la wikipedia pero me parecieron muy técnicos y no quiero marear con esas definiciones todavía, a lo largo de este curso iremos adquiriendo términos técnicos y a utilizar esas palabras que deben estar en todos los programadores. Recuerdo que la lista de alumnos estará en este link:
https://dl.dropboxusercontent.com/u/100311958/taller-programacion-libre/alumnos.txt
y los que aún no enviaron los datos o no completaron el examen inicial lo pueden descargar de aquí:
https://dl.dropboxusercontent.com/u/100311958/taller-programacion-libre/examen.txt
Desde esta semana se procesará la lista de quienes abonaron la tutoría así pueden acceder a mas información del curso, estará indicado en la lista de alumnos.
 
Para empezar debemos tener en cuenta 3 cosas:
* conocer el entorno
* dominar las herramientas
* y comprender nuestras capacidades.
 
que son items que trabajaremos a lo largo de este taller.
 
1. conocer el entorno: todo programador trabaja con un entorno preciso, en este caso será la pc con sistema operativo windows. iremos viendo poco a poco que es la pc, como está compuesta, y como funciona.
ahi una frase muy repetida:
"la magia es para los magos, nosotros somos programadores"
Nada en la pc es por arte de magia, debemos comprender bien cual es el proceso, y que está haciendo la pc para realizar esa acción, si algo se nos escapa lo debemos conocer para ser excelentes developers (desarrollador de software).
Si aún estamos en el comienzo, tengamos paciencia, vayamos adquiriendo conocimientos a cuenta gota para no saturarnos de información, y ir escalando paso a paso. despacito y con confianza llegaremos mucho mas alto en nuestra escalada hacia el conocimiento.
 
2.  dominar las herramientas: en este caso vamos a contar con 3 herramientas fundamentales:
* el blog, en:
http://barrazamiguel.blogspot.com
Estará publicado todo el taller, si algo no entendí o me quedó dudas, puedes revisar todos los artículos y encontrar tu respuesta, además iré publicando otros post con otros temas que pueden llegar a ampliar mas tus conocimientos, en caso de no encontrar la respuesta puedes optar por la herramienta siguiente.
* google: este magnífico buscador es la herramienta de todo informático, aprende a dominarlo, a realizar búsquedas, a encontrar tus respuestas, te aseguro que es sorprendente ver que no eres el único con esa duda, que seguro que ya hubo otro con la misma inquietud y que ya le respondieron en la red. y si tu duda es muy compleja, de seguro que encuentras un apoyo en la comunidad del lenguaje que utilizas.
* autoit: dominar el lenguaje es fundamental, saber que se puede hacer con él, que no, estar al tanto de sus actualizaciones, liberar tus programas y sus códigos, leer los códigos de los demás que también liberaron sus programas y participar en su comunidad es muy importante.
 
3. comprender nuestras capacidades: ya si iniciaste este curso considerate un programador newbie (novato / aprendiz). intenta adquirir poco a poco los términos técnicos, resuelve todos los ejercicios proporcionados en el curso, y en lo posible intenta crear tus propios ejercicios para resolver.
la creatividad es el factor mas importante de todo programador, anímate a ir mas allá de lo que te explican y topate con esos problemas o errores que no esperabas. si encuentras un error o algo que no entiendes, vas por buen camino, cuanto mas participes mas cerca estarás del camino de un buen programador: "de la práctica se hacen los maestros".
 
que es un newbie?:
 
La palabra "Newbie" se refiere a un recién iniciado en la informática. Y hace referencia a las personas realmente interesadas en aprender, y que no buscan que los demás integrantes de la comunidad o foro a la que pertenecen solucionen sus problemas. Es muy utilizado en las comunidades informáticas, aunque también se lo puede denominar como: "Noob", o "Newb" que son bastante usadas como insulto, ya que se refieren a aquel novato que solo busca que lo ayuden a resolver su problema sin intentar aprender cual es el proceso para solucionarlo, ejemplo:
tengo este código, no me funciona, me lo pueden reparar?.
en vez de preguntar:
no entiendo mi error, ya lo busqué por google y no lo logro comprender, necesitaría ayuda sobre este problema, pego mi código a continuación.
 
Si prefijamos la meta de ser programadores y nos empezamos a sentir como tal, vayamos al tema entonces:
 
¿Qué es la informática?:
 
Ajá!, una pregunta muy buena, que estuve muy tentado de ponerla en el examen de ingreso, te invito a que detengas la lectura aquí y te respondas esa pregunta, cuando estés seguro de tu respuesta sigas leyendo.
 
Es una pregunta que suelo hacerla a todos aquellos que dicen ser informáticos, pero no saben definir bien los conceptos, ahi que entender bien las bases para poder construir arriba.
 
La informática es una ciencia que estudia métodos, procesos, técnicas, con el fin de almacenar, procesar y transmitir información y datos en formato digital,
en resumen: La informática es una ciencia que estudia la metodología de organizar la información.
 
Está compuesta de 2 palabras:
"infor": información
"mática": automática
osea informática significa: información automatizada.
 
Una computadora lo único que guarda en su interior es información: fotos, videos, música, textos, etc. pueden imaginarse cuanta información ahi en el mundo, o cuanta información maneja las corporaciones?, para llevar esto a algo mas entendible: veamos facebook:
tiene mas de 150 millones de usuarios, que suben fotos todo el tiempo y publican comentarios, están generando tonelada de información todo el tiempo, lleven eso a algo tangible: imaginen que cada foto es un ladrillo, ese ladrillo ahi que guardarlo, ordenarlo, almacenarlo todo en un depósito, y luego al pedirte traeme el ladrillo 23421 tienes que ir corriendo rápidamente sin perderte, tomarlo y traerlo.
Esa es la tarea del informático, intentar procesar la información en forma ordenada para poder brindar la comunidad de todos los usuarios de poder escuchar música o ver sus fotos solo con un botón sin tener que saber que ahce la pc de fondo.
 
uno de los papeles mas importantes en esta area es el del programador: que es el encargado de desarollar aplicaciones / software que se encargan de organizar toda esa información.
 
pero no asustarse!, no todo el mundo estamos encargados de manejar tanto volumen de datos, ni todos tenemos que lidear con esos problemas, verán a lo largo de este curso como hai tareas super fácil de realizar.
 
Conociendo a la computadora:
El ordenador o computadora es el escenario que debemos conocer, sobre él trabajaremos, pelearemos, nos enamoraremos, y aunque nos de dolores de cabeza tenemos que llegar a amarlo, tenemos que ser parte de él, como la pc es parte de nuestra vida. Una de las principales tareas del programador es pensar como si fuese una máquina, como si vos fuese la computadora y que el usuario te está manejando a ti. ya que la computadora aunque muchos dicen que es un dispositivo inteligente, no es verdad, los informáticos la denominamos: caja boba, ya que no hará nada que no le hayas indicado.
si tu no le dices: guardame la info y apagate, la pc quedará prendida eternamente sin saber que hacer.
por lo tanto debemos indicarle paso a paso que debe hacer la computadora, a eso lo denominamos algoritmos.
 
¿que es un algoritmo?:
 
es la forma de indicar un proceso paso a paso.
 
ejemplo:
 
hagamos un algoritmo de como tomar la sopa:
 
si ya tenemos la sopa servida en la mesa entonces:
1. agarrar la cuchara
2. acercarla al plato
3. coger un poco de sopa con la cuchara
4. hacercarla a la boca y absorverla
5. repetir del paso 2 al 4 hasta que se termine la sopa
6. dejar la cuchara
7. tomar una servilleta para limpiarse la boca
fin del algoritmo.
 
tarea 1: pongamos en práctica la imaginación
realizar 2 algoritmos diferentes sobre una tarea cotidiana que realizamos, por ejemplo: como cocinar un poyo, o como es mi día cotidianamente. y enviarlo vía e-mail.
 
¿como entiende la pc mi algoritmo?:
 
para que la máquina comprenda las órdenes debemos codificarlo en un lenguaje de programación, a esta técnica se le llama programar.
 
¿que es un lenguaje de programación?:
 
es la forma de comunicarnos humanamente con la máquina, ahi varios tipos de lenguajes, que lo veremos mas a profundidad en la próxima clase, ahora solo nos ocuparemos en ver una introducción a autoit, que es el lenguaje de programación que utilizaremos en este curso.
 
¿qué es autoit?:
 
Es un lenguaje interpretado de automatización, su autor es JONATHAN BENNETT. Fue creado con la idea de poder automatizar tareas en windows aunque fue avanzando mucho a lo largo de su desarrollo, hoy en día es un lenguaje bastante potente, con una corta curba de aprendisaje y que sirve para múltiples propósitos:
* crear aplicaciones de escritorio o online
* crear juegos
* gestionar datos
* automatizar tareas
* entre otras.
 
¿Cómo se programa en autoit?.
 
es muy sencillo, como primer paso debemos bajar el interprete / compilador de autoit, es un programa que se instala muy simple: solo siguiente siguiente siguiente, finalizar, como cualquier programa de windows, podés bajar de este link:
http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe
 
una vez que lo hayamos bajado e instalado ya estamos listos para comenzar.
Recuerdo que esta semana se dará la tutoría via zello agregando el canal: "programacionlibre", todos aquellos que hayan abonado la tutoría recibirán la conttraseña para ingresar al canal, nos encontraremos el jueves 10/10/2013 desde las 18 hs hasta las 20 (horario argentina), resolviendo cualquier duda o pregunta. Para los que siguen en modo gratuito se publicará un post de ayuda el viernes.
 
Bien, vayamos a lo nuestro, a programar:
para escribir el código utilizaremos block de notas, por lo tanto vayamos a abrir el block de notas y escribamos la siguiente linea de código
 
msgbox(0, "mi soft", "hola mundo")
 
guardemos este código como:
misoft.txt
luego vamos a buscarlo y renombralo a: misoft.au3
 
la extensión au3 es la extensión de autoit 3,  al dar enter sobre el archivo au3 se ejecutará con autoit.
si lo ejecutamos misoft.au3 veremos una ventana con el título: "mi soft", y en el texto veremos un "hola mundo", el primer programa de todo programador.
si vemos lo que ahi entre los paréntesis veremos 3 valores separados por coma.
el primero un número, y luego 2 valores entre comillas.
 
el primer valor entre comillas es el título de la ventana
y el segundo: es el texto de la ventana
el valor numérico es el tipo de ventana.
 
tarea 2:
modificar el 0 por otro número y ver que diferencias ahi en las ventanas que aparecen, escribir que significa cada número en un texto y enviarlo vía mail.
 
este código puede ser repetido todas las veces que quieras, por ejemplo, abramos un block de notas y pongamos el siguiente código:
 
msgbox(0, "mi soft", "hola mundo")
msgbox(0, "fin de mi soft", "adios mundo")
 
tarea 3:
crear un programita que vaya tirando mensajes divertidos, ejemplo: que cuente un cuento, diga chistes o cosa parecido, a poner en juego la creatividad. los mas originales serán publicados en el artículo del viernes.
 
con 3 tareas y mucho por procesar damos fin a esta primera clase. gracias por participar.