Lo que necesitas saber para empezar a programar: Parte 2

Lo que necesitas saber para empezar a programar: Parte 2


EL MUNDO DE LA PROGRAMACIÓN








Después de una década he vuelto a hacer la parte 2 . Si quieren pueden pasar por la primera parte que está aquí:


http://www.taringa.net/posts/ciencia-educacion/10952281/Lo-que-necesitas-saber-para-empezar-a-programar-Parte-1.html








Para refrescar la memoria vamos a hacer un repaso ligero:

Vimos a la memoria de la compu como un montón de "cajitas". Esas cajitas les expliqué que se llaman "VARIABLES" y que les podíamos dar un nombre.


Lo que necesitas saber para empezar a programar: Parte 2



De esa manera, cuando guardábamos algún dato dentro de una variable, podíamos indicarle a la PC a qué variable nos referíamos llamándola por su nombre. Luego la PC nos devuelve el valor que contenía esa variable.

Vimos cómo crear una variable, asignarle un nombre y un valor (dato).


c



Aprendimos que existen distintos tipos de datos. Números, strings (texto), booleanos (true, false), que son los datos "nativos" y que existían más pero eran derivados de estos primeros.


facil



Después vimos los operadores + - * / % para realizar operaciones entre los datos que contenían dichas variables.


visual



Vimos el operador de asignación =.

Y por último los operadores condicionales para comparar los valores que contienen las variables.


aprender



Ahora que ya conocemos lo más básico podemos aventurarnos en aprender algo más complejo.





Javascript



FUNCIONES. PARTE 1.

Basic


Las funciones son un conjunto de una o más órdenes que se le dan a la compu. Como vimos anteriormente, la compu es estúpiday sólo podía hacer 3 cosas (operaciones matemáticas, comparar y guardar información). Por lo que las órdenes van a basarse en éstas 3.

programación


Por lo general las funciones vienen delimitadas por llaves { } . Ocurre que en algunos lenguajes no se utilizan, y en ese caso se comienza a escribir la función y se señala el fin anteponiendo la palabra END.

Lo que necesitas saber para empezar a programar: Parte 2


Por ejemplo podemos crear una función que al "ejecutarse" cree una variable del tipo String y le asigne el valor HOLA.

Pero debemos darle un nombre a esa función. Ya que cuando queramos ejecutarla debemos decirle a la PC: -Quiero ejecutar ésta función y luego esta otra...-

Para ello usaremos la palabra clave que el lenguaje disponga a la hora de crear funciones.

En C sería algo así.

void Asignar ()
{

char saludo;

saludo = "hola";

}


La función empieza con la palabra clave "VOID" que explicaré más adelante.El nombre de la función es "ASIGNAR". El "cuerpo" de la función es el que está encerrado entre las llaves. Los dos paréntesis nos van a permitir hacer cosas interesantes cuando aprendamos a usarlos.

Por ahora quiero que sepan que la compu se va a "dar cuenta" que estamos escribiendo una función por los siguientes detalles:

1- Inmediatamente después del nombre de la función hay dos paréntesis ( ). Si esto no estuviera sería una declaración de una variable.

2- Inmediatamente después de los paréntesis hay una llave de apertura "{" y luego al final del cuerpo, una de cierre "}".

Esto es fundamental. En otros lenguajes como JavaScript es mucho más fácil hacer la distinción, pero en C no.



Dentro de las llaves tenemos las órdenes o SENTENCIAS si hablamos apropiadamente.

La primera, pide que se cree una variable de tipo "char" (abreviatura de character) que es para guardar cadenas de carácteres, o sea, texto. También se está dando la órden de asignarle el nombre "saludo" a tal variable.

La segunda le asigna a través del operador "=" la cadena de carácteres HOLA a la variable cuyo nombre es saludo.

Si se fijan, la palabra HOLA la escribí entre comillas. Esto lo voy a explicar después. Por ahora sepan que tienen que poner el texto entre comillas cuando quieran guardarlo en una variable.


Espero que no les haya resultado complicado. De aquí en más cada vez que llamemos a la función ASIGNAR se van a ejecutar esas dos sentencias.


---------------------------------------------------------------------------------------------------------------------------------------------------------------------


Como vimos, la declaración de una función tiene un grado mayor de complejidad que la de la variable. De hecho la función es un tipo de dato complejo y lo que hicimos es declarar una variable compleja.

Pero para no confundirnos vamos a separar las variables de las funciones. Sólo por el hecho de hacerlo más sencillo a las funciones no le vamos a llamar variables.

Vamos a ver un ejemplo más sencillo de cómo declarar una función, utilizando otro lenguaje: JavaScript o ActionScript.

public function Asignar ()
{

var saludo:String;

saludo = "hola";

}


No podemos negar que este lenguaje es más instuitivo. Sabemos que es una función porque tiene la palabra clave "FUNCTION" y sabemos que en el cuerpo estamos creando una variable por que está la palabra clave "VAR". Lo que no sabemos es qué significa public pero es muy fácil y lo veremos después.

¿Y cómo sería en Visual Basic?

Public Function Asignar()

dim saludo As String

saludo = "hola"

End Function


Vemos que en VB no están las llaves, tampoco hace falta señalar el fin de las sentencias con un punto y coma, y para finalizar simplemente usamos la palabra clave "END". En este caso como es una función el final es End Function.



Bueno todo bien, pero quedaron muchas cosas que no explicaste.


Lo primero que voy a explicar es por qué cuando asignamos texto lo tenemos que poner entre comillas.





c



ASIGNACIÓN DE UNA VARIABLE A OTRA VARIABLE

facil


Muchas veces nos va a tocar tener que crear una variable y guardar en ella el valor que otra variable contenía....

Por ejemplo vamos a tener una variable llamada MANZANAS, que va a contener el valor 3, y otra llamada BANANAS que va a contener el valor 4. Luego creamos la variable TOTALDEFRUTAS para guardar el total de frutas que tenemos.

visual


En C:

int totalDeFrutas;

En JavaScript:

var totalDeFrutas: int;

En Visual Basic:

dim totalDeFrutas As Integer

Bueno lo más sencillo sería hacer ésto. Creamos la variable y directamente le asignamos el total de frutas:

totalDeFrutas = 7;

Pero van a haber situaciones en las que no vamos a saber cuántas manzanas y bananas tenemos, pero sí vamos a querer que se nos muestre el total de ellas. En ese caso (aunque reconozco que para este ejemplo es una pérdida de tiempo) podríamos hacer lo siguiente obteniendo el mismo resultado:

totalDeFrutas = bananas + manzanas;

Como se acaba de mostrar, los operadores no sólo trabajan con números, también con variables. Se puede usar también el operador + para enlazar dos sílabas y formar una palabra.

Pero ¿qué sucede si hacemos esto?

totalDeFrutas = "bananas"+"manzanas"

En primer lugar nos saltaría un error. Pero obviando ese error cuando le pidamos a la máquina que nos devuelva el valor de la variable "TOTAL DE FRUTAS" vamos a obtener un resultado inesperado:

bananasmanzanas

Lo que sucedió es que en vez de asignarle el valor que contiene la variable bananas y manzanas, le asignamos la PALABRA bananas y manzanas, y, al haber un signo más, la computadora estúpida unió las dos palabras.

En muchos casos esto no se podría hacer, ya que totalDeFrutas es una variable del tipo entero y estamos "forzando" la conversión a tipo cadena de carácteres, lo que nos llevaría a un error.

aprender


Espero haber explicado por qué el texto debe llevar comillas cuando se asigna a una variable.





Javascript



ÁMBITO DE UNA VARIABLE

Para seguir aprendiendo sobre funciones debemos ver este concepto.

En varias situaciones se nos da que necesitamos guardar un dato en una variable, pero este dato lo necesitamos en el momento y luego no nos sirve más. Por el contrario también sucede que manejamos datos importantes durante toda la ejecución del programa, y necesitamos crear una variable que exista "siempre".

Basic


Depende en qué lugar de nuestro código creemos la variable el "tiempo de vida" que ésta tendrá. Cuando la variable deje de existir el "cuadradito" de memoria queda limpio y sin nombre para ser reutilizado después.

Como regla general vamos a decir que:

"La duración de una variable depende del tiempo que se esté ejecutando la función en la cual está declarada dicha variable".

Este es un concepto importantísimo. A veces vamos a tener funciones dentro de funciones y estas dentro de otras funciones (funciones anidadas) y las variables creadas dentro de cada una de esas funciones van a desaparecer cuando tales funciones dejen de ejecutarse.

Supongamos este ejemplo en C: (He agregado puntos a la izquierda para tabular el código pero no deberían estar)

Void CalcularTotal ()
{

...Void SumarBananas ()

...{

...}

}


La función SumarBananas está dentro de la función CalcularTotal, o lo que es lo mismo, está ANIDADA.

Función 1
---------------Función 2
---------------Función 3
-----------------------------Función 4
---------------Función 5
-----------------------------Función 6

Ejemplo de anidados. La función 2, 3 y 5 están dentro de la función 1. La función 4 está a su vez dentro de la 3 y la 6 dentro de la 5.

Agreguémosle un par de cosas

Void CalcularTotal ()
{

...int total;

...Void SumarBananas ()

...{

......int totalBananas;

...}

}


Cuando llamamos a la función CalcularTotal, se crea la variable total, luego se llama a la función SumarBananas y se crea la variable totalBananas.



Si luego queremos hacer lo siguiente:


Void CalcularTotal ()
{

...int total;

...Void SumarBananas ()

...{

......int totalBananas;

......total = totalBananas; //Nueva sentencia

...}

}



En efecto comprobaremos que a total se le asignó el valor de totalBananas. Pero si hacemos esto:


Void CalcularTotal ()
{

...int total;

...Void SumarBananas ()

...{

......int totalBananas;

...}

...total = totalBananas; //Nueva sentencia fuera de la función SumarBananas()

}


El resultado será que ahora total es una variable vacía. Se le asignó el valor de una variable que no existe porque está fuera de su ÁMBITO que era la función SumarBananas().

Este error es muy frecuente y me arriesgo a decir que a todos nos ha pasado por lo menos una vez.

Por último, sé que algunos notaron que escribí dos slash "//" en el código. Con estas barras le indicamos a la compu que lo que continúa en el renglón no es código, así que no debe interpretarlo así. Estas barras diagonales se usan para hacer comentarios si queremos aclarar algo en el programa.

También se utilizan /* y */ cuando el comentario ocupa más de una línea. Los ejemplos los vamos a ver mientras sigamos con el post.

¿Quedó claro?





programación



FUNCIONES. PARTE 2.

Lo que necesitas saber para empezar a programar: Parte 2


Podemos decir que un programa está compuesto por un conjunto de funciones, las cuales contienen sentencias.

Muchos lenguajes de programación exigen la declaración de una función principal que es la primera que se va a ejecutar cuando inicie el programa.

En el caso de C la función principal se llama Main().

A veces esta función se encuentra al inicio del código, a veces no. A veces encierra todo el código y a veces no.

¿De qué manera se relacionan estas funciones entre sí y con el resto del código?

Ya vimos un caso. Podemos anidar una función o más funciones dentro de una.

Ahora supongamos que queremos una función que sume. Sólo eso. Pero sería aburrido y además inutil que la función sume siempre lo mismo. ¿Cómo hacemos para que sume valores distintos?

Creamos una función capaz de recibir valores distintos y sumarlos entre sí.

Esto se hace agregando a la función PARÁMETROS.

Los parámetros son variables que existen dentro de la función que los contiene. Se diferencian de las otras variables en que se declaran en un lugar especial de la función, y en que su tarea es recibir datos mandados por quien llamó a la función.

Para que quede claro (y siempre en C)

//Creamos una función global llamada Main

Void Main
{
...//Creamos una variable global que va a contener los valores a sumar

...int num1;

...int num2;

...//Asignamos a cada una de esas variables un valor

...num1 = 1;

...num2 = 2;

... //Aquí llamamos a la función sumar. Observen cómo se llama a una función, algo que aún no he explicado.

...Sumar(num1, num2);

... /*
...Ahhhhhhhhhhhh!!! ¡Para eso eran los paréntesis! Sí, los paréntesis son el lugar donde se envían y se reciben las
...variables. Acabamos de llamar a la función Sumar y le pasamos dos PARÁMETROS, num1 y num2. De paso
...vamos entendiendo el sistema de comentarios multilínea
...*/


... //Aquí tenemos a la función Sumar

.../* Lo primero que vemos es que dentro de los paréntesis estamos declarando dos variables n1 y ...n2, las dos contienen valores enteros y son las que van a alojar los valores de num1 y num2 respectivamente. ...*/

...Void Sumar ( int n1, int n2)
...{

......int res;

......res = n1 + n2

...} //Final de la función Sumar.

} //Final de la función Main.



Como vemos la función sumar va a crear la variable res y le va a asignar la suma de num1 y num2.

Pero acá tenemos un problema. El ámbito de la función res. Cuando la función termine de sumar res desaparece... ¿Y entonces? Esto se soluciona muy fácil. Busquen la diferencia entre el código de arriba y éste.


Void Main
{

...int num1;

...int num2;

...int res; //Creamos la variable res fuera del ámbito de Sumar.

...num1 = 1;

...num2 = 2;

...Sumar(num1, num2);

...Void Sumar ( int n1, int n2)

...{

......res = n1 + n2

...}

}



Quiero que sepan que no interesa si llaman a la función antes o después de declararla. Es indistinto. Para terminar esta parte quería decirles que también se usa la palabra ARGUMENTOS en vez de PARÁMETROS a aquellas variables que se encuentran dentro de los paréntesis en una función.





c



FUNCIONES. PARTE 3.

facil



¿De qué otra manera podríamos hacer la suma del ejemplo anterior?

Ahora van a aprender el significado de la palabra clave VOID.

Las funciones pueden devolver o no valores. En el ejemplo anterior hicimos un trampita para hacer que una función que no devuelve valor nos devuelva uno.

Lo cierto es que si una función (hablando en lenguaje C) empieza con la palabra Void (el cual es un tipo de dato), esa función no devuelve ningún valor. Por el contrario si una función comienza con otro tipo de dato (int, float, char) la función devuelve un valor correspondiente a ese tipo de dato.

La palabra Void significa vacío, lo que nos da una idea clara que la función no devuelve NADA.

Voy a declarar una función que devuelve un valor int y abajo voy a declarar una variable int para que vean la importancia de los paréntesis.

//función en blanco sin nada en el cuerpo. Por eso no le puse llaves { }

int Sumar ();

//variable en blanco.

int Sumar;

//OJO que la diferencia es muy pequeña.


Bien ahora que se vió la diferencia, voy a explicarles cómo usar una función que devuelve un valor.


int Sumar (int n1, int n2)
{

return n1+n2

}


La palabra RETURN es una palabra clave en C que le dice a la compu que return (devuelva) la suma de n1 y n2.


¿Y dónde se guarda el valor de esa suma?

En donde va a ser.... En una variable.


//Fijense como declaro una variable y le asigno el valor en la misma línea

int num2 = 2;
int num1 = 1;
int res;

//Observen como llamo a la función sumar desde una variable

res = Sumar(num1, num2);


Es importante que noten que la variable res es del mismo tipo que el valor que devuelve la función Sumar.... Si no van a obtener otro tipo de error bastante frecuente.





visual



FUNCIONES. PARTE 4.

aprender


Por allí un poco más arriba en el post quedó la palabra clave "PUBLIC" por explicar. Al igual que las variables, las funciones también tienen su ámbito. Aunque es un tema complejo para tratarlo ahora, podemos adelantarnos y decir que el atributo public (así como private y protected) son la forma en la que le decimos a la PC el ámbito o rango de acción de una función.

En esta parte voy a mostrarles que existen funciones propias del lenguaje en el que estamos trabajando. Son funciones predeterminadas que facilitan nuestra tarea.

Funciones trigonométricas como seno, coseno y tangente.
Funciones estadísticas para calcular un número aleatorio. Piensen en un juego de cartas o dados
Funciones para mostrar videos, dibujos, fotos, cajas de texto, etcétera en pantalla....

Queda en cada uno de ustedes al elegir un lenguaje, el aprender los nombres de estas funciones. En cada lenguaje varían, aunque los cálculos son casi siempre los mismos.

Por ejemplo en C la función printf() muestra en pantalla el contenido de una variable.

La función cos() devuelve el coseno de un ángulo que se pasa como argumento. Este tipo de función devuelve un valor por lo que sería correcto llamarla desde una variable.


Javascript



Por último voy a aclarar que existen funciones RECURSIVAS. Estas funciones contienen en su interior llamadas a la misma función en la que está la llamada.

Este es el principio de un tipo "especial" de función llamada bucle que veremos después.

Es importante tener mucho cuidado al crear estas funciones. Ya que corremos el riesgo que se ejecuten infinitamente congelando el ordenador y obligando a reiniciar la máquina. (Error bastante frecuente).

Esta función por ejemplo se ejecutaría infinitamente y agotaría nuestra memoria.

Void FuncionRec ( )

{
...FuncionRec ( );
}






Basic



Hasta aquí llegamos con la segunda parte. Hemos aprendido bastante sobre funciones lo que nos va a abrir las puertas a todo lo que veremos después. Sabiendo como hacer una función, lo que antes hubiese sido imposible de entender ahora va a ser mucho más fácil.

En otro post veremos los condicionales, los bucles, los objetos y las clases. Esperemos terminar con la introducción al mundo de la programación en la tercera parte.

Saludos y a esperar el nuevo post. Gracias.

8 comentarios - Lo que necesitas saber para empezar a programar: Parte 2

@sxbxsxixn +4
Esta buena la info te falto un par de cosas pero aun asi esta bien

programación
@arandir +2
@viroguitar Nu, buen trabajo. Siempre me gusta entrar a estos post a mirar todas las veces, me da mucha alegría contar con gente como tu siempre. Esto no puede hacer mas que embellecer nuestro mundo mas, aunque suene salamero, ¬¬ ...pero alguien tiene que decirlo.
@sxbxsxixn +1
@arandir LA programacion nos permite conocer un mundo diferente en el cual tenemos nuestro propio lenguaje y nuestra propia forma de pensar
@arandir
@charly2007 +1
Buen aporte: gracias por compartir: fav +10
@Soviet2 +1
me pase para aca luego de leer el primer post, esperando el 3ro, mientras tanto para q te animes te dejo 10
@JJEAC +1
Ya Terminaste la 3ra parte?
@MerMussano +1
¿Y la tercera parte? ¿Cuándo se viene? Al menos tiranos una data.
@viroguitar
Algún día. Hace tiempo que les debo ese post.
@MerMussano
@viroguitar Ohhhh oka! Pero ¿podes pasarme los temas que le siguen a este? así al menos los busco por mi cuenta. No me gusta quedarme con la mitad de la información
@viroguitar
@MerMussano El tema que sigue es el más complcado para entender. Clases.
@nosion +1
che me da mucho gusto que todavía halla gente como tú en este sitio tan mierdero. En donde solo usan esto ó para crapear ó para quejarse de todo.
Mejor que apendan a programar y se ocupen en algo tanto nini.