lunes, 17 de junio de 2013

Curso programación desde 0 - Tema 5 - Usando condicionales

Como podréis imaginar en la programación no va a ser todo líneas unas debajo de otras, usando distintas operaciones; una de las cosas más utilizadas son los condicionales, lo cual es simplemente eso, una condición en algún lugar del programa, cuando la condición que escribimos se cumple, el programa sigue por el camino marcado, si no se cumple, sigue por el camino alternativo, lo cual se representaría así:

Si (se cumple la condición)
                Sigo por aquí;
Si no
                Sigo por aquí;

Como la mejor manera de entender las cosas es verlas y después probarlas nosotros mismos, aquí vamos con un ejemplo, vamos a coger el ejemplo del tema 2, el ejercicio de tenemos sed, vamos a mejorarlo, utilizando todo lo aprendido hasta ahora

Var TenemosSed Verdadero/Falso; //declaro la variable
Var NumVasosLimpios Número;

TenemosSed = true (Verdadero);
NumVasosLimpios = 3;
Si (TenemosSed)
Nos levantamos;
Vamos hasta la cocina;
Abrimos la vitrina;
Si (NumVasosLimpios > 0)
Cogemos un vaso;
                Si no
                               FregamosUno;
                               Cogemos el vaso limpio;
Dejamos el vaso en un lugar seguro;
Vamos hasta la nevera;
Cogemos la botella de agua (o líquido a nuestro gusto);
Cerramos la nevera;
Abrimos la botella;
Llenamos el vaso;
Cerramos la botella;
Volvemos hasta la nevera;
La abrimos;
Guardamos la botella;
Cerramos la nevera
Volvemos hasta el vaso;
Bebemos;

En este ejemplo podemos ver fácilmente que lo primero que hacemos es declarar la variable TenemosSed y la declaramos como verdadero o falso, esta variable cojera un valor en concreto que cambiara al ser ejecutada por un evento, como puede ser hablar mucho, pero los eventos, funciones y otras cosillas las veremos en temas más avanzados, de momento solo nos interesa entender que es y cómo funciona un condicional, justo debajo declaramos otra variable NumVasosLimpios esta variable en vez de darle un valor como también hacemos con TenemosSed también deberíamos recogerla en una función, Si pudiéramos probar el programa tan solo deberíamos cambiar los valores y ejecutarlo. A TenemosSed le damos el valor de verdadero, así que el programa cuando comprueba Si TenemosSed ve que es verdadero, por lo que se cumple la condición, y sigue por debajo, ojo aquí tenemos 2 condicionales, el primero: Si (TenemosSed) no tiene un SI NO al final, por lo que no ejecutara nada si no se cumple la condición, el bloque SINO no es obligatorio.

Después hacemos algunas acciones que ya quedaron comentadas temas atrás, y tenemos otra condición en la que miramos el valor de NumVasosLimpios, como más arriba le hemos dicho que tenemos 3 vasos limpios el ordenador mirara si (3 > 0) o en otras palabras, si 3 es mayor a 0; en este caso sí, es decir verdadero, así que al ser verdadero, cogeremos un vaso.

Si le hubiéramos dado un 0 al número de vasos limpios la condición seria Si (0>0) y seria falso, por que 0 no es mayor que 0; 0 es igual a 0, pero no mayor, así que se iría a donde fregamos un vaso, y no ejecutara el paso de Cogemos uno; si quisiéramos que coja un vaso si tenemos 1 o más la condición seria así:

 Si (NumVasosLimpios => 1)
                Lo que sea

Con eso decimos si tenemos 1 o más vasos limpios, el resto del código; un punto a tener en cuenta es que si os fijáis, tenemos todas las líneas una debajo de otra, pero una vez metemos un condicional dejamos un espacio delante de las siguientes ordenes, así hasta llegar a la condición de SI NO, esto está hecho a propósito, a esto se le llama Indentar el código, o tabularlo, diciéndolo más coloquialmente, y tan solo consiste en dar una vez al tabulador, para dejar ese espacio en concreto; en la mayoría de lenguajes no es obligatorio, pero si es una buena costumbre y casi una necesidad, ya que de un solo vistazo podemos ver que parte del código se va a ejecutar cuando se cumple una condición, también se usa para marcar el código que va dentro de funciones, o de bucles repetitivos, y no afecta al rendimiento del programa, por lo que es casi obligatorio hacerlo; lenguajes como Python obligan a indentar el código, en caso de que no esté tabulado no funcionaria, son casos extraños, pero repito es buena costumbre.


Un buen ejercicio de ejemplo podría ser un programa que pida la edad del usuario, y si es menor de edad le muestre un mensaje diciéndole que no puede entrar, si es mayor, le muestre otro dándole la bienvenida

Recuerda que el mejor modo para la corrección es publicarlo como comentario debajo del ejercicio, así tú y todos tus compañeros podréis aprender y ayudaros los unos a los otros, pero estoy disponible en el email rogamainformatica@gmail.com

Tema 8 - Programación Orientada a Objetos POO
Tema 7 - Funciones
Tema 6 - Bucles Repetitivos
Tema 5 - Usando condicionales (Tema actual)
Tema 4 - Arrays
Tema 3 - Pensando con variables
Tema 2 - Pensando como Programadores

Tema 1 - ¿Que es la programacion?

miércoles, 12 de junio de 2013

X-UA-Compatible en apache

<IfModule mod_headers.c>
   BrowserMath MSIE ie
   Header set X-UA-Compatible "IE=edge" env=ie
</IfModule>

este pequeño codigo pegado en nuestro .htaccess o en la configuracion e apache obliga a IE a comportarse como Chrome, siempre que el usuario tenga el plugin adecuado instalado en IE

cargar distintos JS segun navegador

Tengo que mirar como es, pero con modernizr se puede. intentare subir ejemplo en los proximos dias

JQuery 2.0 comparibilidad con IE

Todos los dias se aprende algo nuevo y acabo de aprender que JQuery 2.0 no es compatible con IE inferior a 8

lunes, 10 de junio de 2013

Curso programación desde 0 - Tema 4 - Arrays

Ahora que hemos visto las variables http://robertogascon.blogspot.com.es/2013/06/curso-programacion-desde-0-tema-3.html es bueno que conocer los arrays; Hemos visto a las variables como cajas que almacenan un dato, siguiendo con ese ejemplo podremos ver un array como una estantería que almacena cajas; en esa estantería tendremos un numero de huecos para guardar cajas, y sabiendo a que hueco mirar, podremos recoger el valor de esa caja, así de simple.

Unos habréis imaginado un tipo de estantería, otros, otros tipos distintos y ninguna estantería tiene nada que ver con la anterior; con los arrays pasa más o menos lo mismo no siempre vamos a necesitarlos del mismo tipo, los arrays se clasifican en dimensiones; las dimensiones en un array se pueden entender como el “numero de estantes” para hacernos una idea, así por ejemplo, un array de una dimensión tendrá una única tabla, en la que guardaremos los datos en línea, uno tras otro, pero ojo, un array de 2 dimensiones, no tendrá 2 estantes, un array de 2 dimensiones puede tener muchas cajas una detrás de otra, y muchos estantes, ahora os pondré un ejemplo para entenderlo mejor;
Vamos a declarar y ver un array de una dimensión:

Var ArrayDeEjemplo [] texto;

Ahora que está declarado, veis que es casi igual que las variables, tan solo les diferencia los corchetes del final, los cuales indican el tamaño del array, al dejarlo en blanco no le damos ningún tamaño y el solo se va agrandando según sea necesario, aunque esta es la manera que más recursos consume, lo ideal habría sido:

Var ArrayDeEjemplo [5] texto;

Así le decimos que almacenaremos 6 variables, y si 6, no es un error, los arrays comienzan su índice en 0, por lo que podremos guardar cajas en el hueco 0, en el 1, en el 2, y así hasta el 5, que hacen un total de 6 huecos

Si vemos el interior del array después de haberle guardado 6 datos será algo parecido a esto
0
1
2
3
4
5
Texto de ejemplo
Otro texto
563
Hola soy el cuarto
Y yo el 5
89798

Así cuando queramos ver los datos del array en la ubicación numero 3 deberemos llamarlo así
ArrayDeEjemplo [3];
Y veremos el mensaje Hola soy el cuarto

Vamos a complicarlo un poco más, y a ver un array de 2 dimensiones, en el anterior veíamos una única balda con algunos huecos, en este veremos una estantería con muchas baldas las cuales tienen muchos huecos, lo declaramos:

Var ArrayDe2Dimensiones [3,4] Numero;

Hemos declarado un array de 4 baldas y 5 huecos cada una, lo cual es algo parecido a esto:

0
1
2
3
4
0
3
5
56
48
76
1
20
90
150
70
80
2
35
20
15
32
14
3
98
63
57
41
01

Como vemos es una estantería, con varias baldas (filas) y varios huecos (columnas), estoy seguro de que con este ejemplo os a resultado fácil entenderlo.

Ahora me diréis ¿¿solo hay arrays de una y 2 dimensiones?? Pues no, hay arrays de tantas dimensiones como nuestra imaginación alcance, pero los más comunes son los de 1 y los de 2 dimensiones, en juegos de 3 dimensiones, también se utilizan los de 3 dimensiones, pero poco, un array de 3 dimensiones estaría declarado con el siguiente código:

Var ArrayDe3Dimensiones [2, 2,2] texto;

Y podríamos imaginarlo como un cubo, es más, el array anterior podría ser perfectamente el cubo de rubick


Con todas sus caras, cada una almacenaría un número, correspondiente con un color, así los huecos s
ArrayDe3Dimensiones [0, 0,0] podría ser un 1, que corresponde al amarillo
ArrayDe3Dimensiones [0, 1,0] podría ser un 2, que corresponde al blanco
ArrayDe3Dimensiones [0, 0,1] podría ser un 3, que corresponde al azul
…..

Un ejercicio de practica puede ser que hagáis un programa que almacene en 2 huecos distintos el nombre y el apellido de vuestros vecinos(los datos pueden ser ficticios) teniendo un vecino por balda

Recuerda que el mejor modo para la corrección es publicarlo como comentario debajo del ejercicio, así tú y todos tus compañeros podréis aprender y ayudaros los unos a los otros, pero estoy disponible en el email rogamainformatica@gmail.com

Tema 8 - Programación Orientada a Objetos POO
Tema 7 - Funciones
Tema 6 - Bucles Repetitivos
Tema 5 - Usando condicionales
Tema 4 - Arrays (Tema actual)
Tema 3 - Pensando con variables
Tema 2 - Pensando como Programadores
Tema 1 - ¿Que es la programacion?

domingo, 9 de junio de 2013

Proteger ataques de inyeccion SQL

Una buena costumbre es usar la siguiente orden en todos nuestros formularios
mysql_real_escape_string()

Escribiendo entre parentesis la variable a pasar en las consultas que hagamos, para así poder evitar ataques de inyección SQL en PHP


viernes, 7 de junio de 2013

Curso programación desde 0 - Tema 3 - Pensando con variables

En el tema anterior http://robertogascon.blogspot.com/2013/06/curso-programacion-desde-0-tema-2.html vimos como empezar a pensar como programadores, en este tema avanzaremos un poco más, vamos a ver algo que es imprescindible en la programación las variables; entendamos una variable, como una cajita, en la que vamos a guardar algo, mas tarde llamando a esa cajita podremos ver lo que tiene guardado, cambiarlo, e incluso eliminarlo.

Programando, al usar una variable se guarda en memoria del ordenador, suele ser RAM, por lo que en el momento que cierras el programa, o se apaga el ordenador se pierde todo lo que este hay guardado, para hacerlo permanente hay que meterlo en una base de datos, o crear un archivo con los valores, pero es un tema avanzado que veremos mucho más adelante, ahora entendamos que es una variable y su funcionamiento

En la vida real, si tu guardas algo en una caja, esa caja te ocupara un espacio, en la programación también es así, toda variable ocupa un espacio de memoria, por lo es recomendable utilizar el menor número posible, y lo más adecuadas, con esto último quiero decir que para guardar un boli, nadie utilizaría una caja de 2 metros de largo, por 2 de ancho, por 2 de alto, programando debemos hacer algo parecido, casi todos los lenguajes necesitan que se le diga el tipo de dato que va a guardar esa variable, aquí lo vamos a simplificar en 3, cuando entremos en materia de programación los veremos todos según el lenguaje con el que programemos, pero recordar que lo que veamos aquí nos valdrá para cualquier lenguaje actual.
Así que vamos a clasificar las posibles variables, en:

  • Texto
  • Numero
  •  Verdadero/Falso


Sus nombres prácticamente lo dicen todo de ellas, aun así una pequeña descripción:

·         Texto: En una variable de tipo texto, comúnmente llamadas String podremos almacenar cualquier tipo de texto, como podría ser “Hola mundo” después cambiarlo, mostrarlo por pantalla o trabajar como mas nos convenga, esto suele usarse para guardar el nombre del usuario, o los datos que nos pueden teclear por pantalla, aunque en realidad sirven para guardarlo casi todo, también podremos guardar “2348” y diréis, pero eso es un número, no habría que guardarlo en la del tipo número?? Pues sí, y no quizás estas desarrollando un videojuego y te interesa mostrar en pantalla la puntuación, para ello lo mejor es sacar un mensaje “puntuación: ” al que le juntes la puntuación, por lo que se convertiría en texto.
“Puntuación: 2348” tiene parte numérica y parte texto, pero se usa como si solo fuera texto.

Otro ejemplo, quizás más claro seria si a nuestro “2348” queremos no sumarle; si no ponerle un 0 mas eso con variables tipo numéricas, deberíamos multiplicar por 10, es algo no muy complicado, pero, y si queremos ponerlo un 11 al final? Es decir sacar el numero “234811” en pantalla, ¿que operación habría que hacer para eso? Si juntamos 2 textos se logra fácilmente.

Otro caso muy común que tiene, es guardar los datos que vienen por la URL en aplicaciones web, siempre que se recoge un dato es de tipo texto, si mas tarde necesitamos hacer una suma por ejemplo, deberemos convertirlo a numero, ya que los textos no pueden hacer operaciones matemáticas
Conclusión: una variable de tipo texto puede almacenar cualquier cosa, números, textos… aunque no es recomendable usarla, excepto en casos realmente necesarios, para nada que no sea un texto, son el tipo de caja más grande.


·         Numero: este tipo variable consume mucha menos memoria que las de tipo texto, y son las encargadas de almacenar únicamente números, con ellas podremos hacer operaciones matemáticas; sumar, multiplicar, restar, dividir y modulo son las más habituales; muchos diréis las 4 primeras bien, ¿¿pero modulo?? No hay que asustarse, no es hora de aprender nuevas operaciones matemáticas, en realidad ya la conocéis, el modulo es simplemente el resto de una división.

Por ejemplo, si dividimos 5/2 nos dará como resultado 2, con resto 1, ese resto es el modulo, por lo que modulo de 5/2 es 1, esto tiene infinidad de funcionalidades, pero una de las más comunes es ver si un numero es par o impar.

·         Verdadero/Falso: este tipo de variables es la más liviana que existe, ya que ocupa únicamente un bit, si, ni siquiera un byte, y a pesar de lo pequeña que es no podríamos desarrollar ningún programa sin ella, o seria un infierno, lo que almacena en realidad es un 0, o un 1, lo que en nuestro idioma puede ser un sí o un no, este tipo de variables comúnmente es llamado boolean, en nuestro programa del tema pasado, el de quitarnos la sed, podríamos utilizarlo para comprobar  si tenemos el vaso en la mano, y que cuando lo tengamos cogido, lo dejemos en lugar seguro antes de coger también la botella, aunque, aquí estamos metiendo condiciones, y no quiero adelantarme, eso lo veremos en el siguiente tema.

Vamos a ver un par de ejemplos de programas sencillos en los que usemos variables; por cierto, esto que hacemos de escribir los programas aunque sea de un modo básico en nuestro lenguaje, se llama pseudocódigo, es un paso entre medias de nuestro lenguaje y el del ordenador, lo que estamos escribiendo no cumple las “reglas” de pseudocódigo, pero este es un curso de programación no de pseudocódigo, solo os voy a enseñar a gatear, no a que ganéis carreras gateando, al fin y al cabo todos queremos correr y no quedarnos a cuatro patas, así que es interesante que lo conozcáis, para ir acostumbrándoos y cogiendo ritmo a lo que va a venir después, pero no necesitáis dominarlo, de hecho llevo años programando y no he conocido aun a nadie que utilice el pseudocódigo, aunque también sirve de ayuda, cuando estas atascado y no sabes por dónde tirar, escribírtelo en una “servilleta” para después transformarlo a código.

Un ejemplo de lo visto seria:



Un programa que nos muestre la tabla del 3 y al resultado le sume 2;

Var numero Numero; //declaro la variable
Numero = 3*1; // multiplico 3 x 1
Numero = Numero + 2; // le sumo 2 al valor que tiene numero guardado
Muestro Numero;

Numero = 3*2;
Numero = Numero + 2;
Muestro Numero;

Numero = 3*3;
Numero = Numero + 2;
Muestro Numero;


Numero = 3*4;
Numero = Numero + 2;
Muestro Numero;

……….
……..
……


No vamos a seguir con el ejemplo hasta el final ya que veis que se repite todo una y otra vez solo cambiamos el número que multiplica, y se haría muy largo este programa; más tarde veremos cómo simplificar programas de este tipo que se repiten una y otra vez lo mismo, o con un pequeño cambio.

Podéis ver en el ejemplo superior un par de cosillas nuevas, y es que al lado de las 3 primeras líneas he escrito:
//* Un comentario*
Este es el modo de comentar el código en pseudocódigo, algunos lenguajes de programación también utilizan esta simbología.

Los comentarios son algo muy importante en programación, se pueden hacer en nuestro idioma, y podemos poner tantos como queramos, no existe ninguna regla ni norma que impida ponerlos, ni tampoco que nos obligue, pero son recomendables, por una sencilla razón, a la que haces un programa de unos cientos de líneas, si no tienes comentarios, es complicado saber que parte del código hace que.
Aun así, si has sido tú el que lo ha programado, seguramente en cuanto lo veas te suene y sepas donde buscar, para modificar algo, o reparar un bug, pero si estas en un equipo, y alguien coge tu código, seguramente no sabrá ni por dónde empezar, lo mismo sucederá si te toca coger el código de otra persona, por eso mismo es una buena costumbre comentar nuestro código, los comentarios son ignorados por el ordenador por lo que no afectan al rendimiento, pero si comentas cada línea de código se volverá un poco pesado a la hora de leerlo y buscar una parte en concreto, lo suyo es comentar solamente aquellas partes que son tan complejas que de un vistazo no se sabe que hacen, si buscáis sobre este tema en internet, encontrareis mucha polémica, y la verdad es que el mejor comentario, es el que no necesita escribirse, con esto quiero decir que si tu código es sencillo, claro, esta indentado (en España lo solemos llamar tabulado, veremos cómo tabular el código en el siguiente tema); y demás no será necesario comentarlo, excepto en funciones complejas.

Otro ejemplo seria un programa que le pida al usuario su nombre, y apellidos por separado, y después le muestre su nombre completo

Var Nombre, Apellido, Apellido2  Texto; //declaro 3 variables a la vez
Muestro “Introduce tu nombre”;
Nombre = TextoIntroducido;

Muestro “Introduce tu apellido”;
Apellido = TextoIntroducido;


Muestro “Introduce tu Segundo Apellido”;
Apellido2 = TextoIntroducido;

Muestro “tu nombre es: “+ Nombre + “ “+ Apellido + “ “+ Apellido2;


Como veis cada vez que quiero mostrar un texto que no está almacenado en ninguna variable lo escribo entre “” es el modo habitual de escribir los textos, para no confundirlo con posibles variables o funciones después concateno (junto) el texto que escribo yo, con la variable Nombre utilizando el símbolo de + pero no sumo nada, solo junto los textos, recordemos que los textos no pueden sumarse, solo juntarse; a su vez le sumo un espacio en blanco, y a este le sumo el primer apellido; etc.

Como ejercicio estaría bien que hicierais un programa que pida el nombre de 3 usuarios, uno detrás de otro, a la que tienes los 3 nombres; les haces 3 preguntas a cada uno; pero estas preguntas deben ser personalizadas; con esto quiero decir que debes preguntar algo al estilo: Cuál es tu edad pepe? Una vez la conteste, pasar al siguiente usuario: Cuál es tu edad Juan? Y así las 3 preguntas para los 3 usuarios, termina el programa sumando las 3 edades, y mostrándolo por pantalla.


Recuerda que el mejor modo para la corrección es publicarlo como comentario debajo del ejercicio, así tú y todos tus compañeros podréis aprender y ayudaros los unos a los otros, pero estoy disponible en el email rogamainformatica@gmail.com

Tema 8 - Programación Orientada a Objetos POO
Tema 7 - Funciones
Tema 6 - Bucles Repetitivos
Tema 5 - Usando condicionales
Tema 4 - Arrays
Tema 3 - Pensando con variables (Tema actual)
Tema 2 - Pensando como Programadores
Tema 1 - ¿Que es la programacion?

jueves, 6 de junio de 2013

Acceder a la carpeta Config en Symfony 2

Hoy he tenido un gran comedero de cabeza, estoy usando una API externa a Symfony, la cual requiere un archivo de configuración, la forma mas sencilla de usarlo es copiar y editar ese archivo de configuración en la carpeta Vendor del mismo, pero como sabemos los vendor se instalan y actualizan por separado, así que eso para hacer pruebas esta genial, pero no para trabajar, así que e pensado que lo mas correcto seria almacenar ese archivo de configuración dentro de la carpeta app/config de Symfony, el problema me lo he encontrado al decirle al controlador donde estaba ese archivo.

En symfony (1) tenemos la orden: sfConfig::get('sf_app_config_dir')
Pero en Symfony2 no existe así que debemos decírselo a mano, por lo que el siguiente código podría decirse que es su equivalente; una vez sepamos como es muy sencillo, pero no hay demasiada información en la red, así que aquí os lo dejo, y espero que os resulte de gran utilidad, como a mi cuando hoy he dado con ello.

$ConfigFile = $this->get('kernel')->getRootDir() . '/config';

Aumentar / Disminuir Fuente en NetBeans

Una pregunta muy común en la red, es la de como aumentar o disminuir la el tamaño de la fuente en NetBeans; esto es tan sencillo como mantener pulsada la tecla Alt y a la vez girar la rueda del ratón

Probado en NetBeans 7.2 , 7.4  y 8

Espero os sirva de ayuda ;)

martes, 4 de junio de 2013

Curso programación desde 0 - Tema 2 - Pensando como programadores

Vamos a ir entrando un poquito en materia, ahora que ya Vimos en el tema anterior http://robertogascon.blogspot.com/2013/05/curso-programacion-desde-0-tema-1-que.html que es la programación y algunas características generales, como la programación a bajo y a alto nivel, también hemos visto algunas características de los lenguajes más utilizados hoy día, y en que entorno se pueden usar.

Ahora podremos hacer 2 cosas, escoger un lenguaje de programación, algún manual, curso o tutorial, y empezar a aprenderlo, esto puede parecer lo más lógico, e incluso puede que lo más rápido, pero es aquí en donde fracasa la mayoría de la gente que intenta empezar a programar sin nociones previas; al que de verdad a nacido para esto, lo vive y pone todo el empeño en ello lo acaba logrando, pero después de sudar mucha sangre y horas y horas, para entender por un lado los ejemplos, por otro el lenguaje que haya elegido, y por último el IDE (un IDE es un entorno de desarrollo, que nos ayudara en la tarea de programación, mas adelante veremos cómo, y cuáles son los más populares para según qué lenguaje).
Es decir si elegimos ahora aprender un lenguaje, deberemos aprender a usar un programa para ello, los cuales normalmente son inmensos, aunque los hay muy ligeros, el lenguaje que elijamos y la lógica de programación, esto viene siendo como si al poco de nacer quisiéramos decir nuestra primera palabra, en 2 idiomas, y andar a la vez, todo ello sin gatear, ni balbucear, tarea casi imposible.

La otra opción que tenemos es ir por partes; eso es lo que vamos a hacer en este curso, poquito a poco, sin prisas, y cada uno a su ritmo.

En este tema, os voy a enseñar a pensar como programadores, lo cual aunque no es muy complejo, si necesita de un previo aprendizaje, y por supuesto, vamos a hacerlo en castellano, que es nuestro idioma.

Lo primero, es, vamos a pensar como programadores, pero ¿como? Pues como vimos en el anterior tema la programación consiste en resolver problemas, así que vamos con un problema de lo más cotidiano, tenemos sed:
Muchos diréis, pues bebemos, y eso como respuesta final, no está mal, pero recordemos que los ordenadores son tontos, solo cumplen ordenes, ¿si nosotros fuéramos un ordenador que orden nos tendrían que dar, para quitarnos la sed?

Si quisiéramos hacer un programa para resolver el problema de cuando tenemos sed, tendríamos que teclear paso a paso, por lo que un ejemplo de programa que resuelva tener sed puede ser algo así:

Sentimos sed;
Nos levantamos;
Vamos hasta la cocina;
Abrimos la vitrina;
Cogemos un vaso,
Vamos hasta la nevera;
Cogemos la botella de agua (o líquido a nuestro gusto);
Cerramos la nevera;
Abrimos la botella;
Llenamos el vaso;
Cerramos la botella;
Volvemos hasta la nevera;
La abrimos;
Guardamos la botella;
Cerramos la nevera
Volvemos hasta el vaso;
Bebemos;

Como podemos ver una tarea cotidiana a la hora de hacerla un programa se ha convertido en algo complejo, largo y algo tedioso, este programa para beber en realidad esta simplificado, y tiene un fallo, hemos cogido el vaso, la botella, y abierto el frigorífico, todo ello sin soltar el vaso, ay dependerá de la habilidad de cada uno, pero existen muchas posibilidades de que se nos caiga el vaso, o de lo que es lo mismo en programación, un bug, ya que cuando intentemos llenar el vaso, no va a existir, y el ordenador no sabrá donde echar el agua, pero esto es materia un poco más avanzada; de momento vamos a dejar aquí nuestro programa para beber, y voy a explicar de nuevo lo mismo con otro ejemplo:

Esta vez, estamos en casa, y tenemos que salir y coger el coche, para ir hasta el súper a hacer la compra.

Nos levantamos;
Buscamos las llaves;
Vamos hasta la puerta;
La abrimos;
Salimos;
La cerramos;
Vamos hasta la calle;
Buscamos el coche;
Lo abrimos;
Nos montamos;
Lo cerramos
Metemos la llave en el contacto;
La giramos para arrancar;
Salimos del aparcamiento (Utilizando los pedales de la manera necesaria);
Conducimos hasta el súper;
Aparcamos;
Paramos el motor;
Abrimos la puerta;
Nos bajamos;
Cerramos el coche;
Caminamos hasta el súper;
Compramos;

Os recomiendo leer un par de veces ambos ejemplos para terminar de entenderlo bien, no es algo demasiado difícil, pero es importante entenderlo bien para seguir entrando en materia.

Algunos ejercicios para practicar pueden ser:
-Hacer un programa para poner nuestra emisora favorita de música.
-Un programa que nos saque de la cama cada mañana para ir al trabajo.

Recuerda que el mejor modo para la correccion es publicarlo como comentario debajo del ejercicio, asi tu y todos tus compañeros podeis aprender y ayudaros los unos a los otros, pero estoy disponible en el email rogamainformatica@gmail.com