Continuando con nuestra interminable reconocida y solicitada saga orientada a quienes se empiezan a adentrar al mundo de la programación, hoy les traemos una nueva edición, realmente la última que veremos sobre Pseudo lenguajes y además las últimas consideraciones previas a la entrada a los lenguajes reales.
Todo el detalle, como siempre, después del salto.
Nota: Tal como dice el título, esta es la 6ta parte de estas guías. Para un completo entendimiento, recomendamos, si no lo han hecho, leer las partes anteriores, las cuales pueden ser encontradas en la categoría de Programación de nuestros tutoriales.
Con eso claro, veamos los contenidos que cubriremos hoy:
Como pueden apreciar, hay harto que cubrir, así que vamos directo a eso:
El último tema que cubriremos sobre programación en pseudo-código propiamente tal, será el de las funciones, el cual es un elemento de suma importancia tanto para estas etapas tempranas como para cuando nos adentremos aun más en la programación.
Intentaremos simplificar este tema lo que más podamos. De cualquier forma, a pesar de la complejidad que puede presentar, no se preocupen si no lo entienden a la perfección en un comienzo, ya que a medida que vayamos viendo los ejemplos y en otros contenidos más avanzados iremos comprendiendo bien este tema.
Hasta ahora, cada vez que escribíamos un programa y dentro de el necesitábamos tener procedimientos de cálculo o manipulación de datos, los escribíamos línea por línea estructuradamente dentro del principal de nuestro programa, algo así:
Definición de variable / asignación de valor Operación 1 Operación 2 Operación 3 Asignación de resultados
Si las operaciones anteriores las necesitamos utilizar más de una vez o para distintas variables, adicionalmente podíamos añadirlas dentro de un ciclo, si el tipo de variables nos lo permiten, o bien repetir las operaciones dentro del programa las veces que sean necesarias.
Ahora, si la operación es de una sola línea, como una operación matemática por sí sola, no presenta mayores complejidades ni costos repetirla todas las veces que sean necesarias. Sin embargo, cuando hablamos ya de un proceso que contiene varias operaciones, y por ende varias líneas de código, es cuando el tema se vuelve mucho más complejo y engorroso, ya que nuestros programas empiezan a aumentar de tamaño y será mucho más costoso (computacionalmente hablando) ejecutarlos.
Para esto es que se definen las Funciones, las cuales, como su nombre lo indica, ofrecen la funcionalidad de agrupar y ejecutar una serie de operaciones, tanto por si solas como dependiendo de ciertos parámetros que les entreguemos, y a la vez dándonos la opción de retornarnos un valor que puede ser constante o variable dependiendo de los resultados de las operaciones y cálculos internos de la función.
La programación está compuesta fundamentalmente de funciones, y hasta ahora, a través de los contenidos y ejemplos, hemos utilizado una serie de ellas. Por ejemplo, la parte principal que declaramos en cada programa que hacemos es una función, es la que contiene los contenidos principales del programa que escribimos, valga la redundancia. A esa función no le entregamos ningún tipo de parámetros y no nos retorna nada. Otras funciones que hemos utilizado hasta ahora son las iteraciones condicionales (Si, Si no), los ciclos (mientras, para, haga mientras) y otras como leer, mostrar, etc.
¿Qué ventajas presentan las funciones?
Principalmente orden, comodidad y economía. El uso de funciones nos permite no tener que repetir operaciones según el número de veces que las vayamos a necesitar y en vez de eso solo definirlas una vez y llamarlas cuando sea necesario. Eso también implicará que nuestro programa sea mucho más liviano al momento de ejecutarse. Existen una serie de otras ventanas que iremos descubriendo más adelante.
Las funciones se escriben fuera de la función principal (normalmente por orden, se escriben después) y se definen de acuerdo a la siguiente estructura:
tipo nombre_función(parámetro 1, parámetro 2, etc.) { operación 1; operación 2; sentencia 1; sentencia 2; retorno de variable; }
Donde:
Con toda la definición ya más clara, veremos un ejemplo de declaración y uso de funciones:
Ejemplo: Realizaremos un programa en donde crearemos una función que defina que número es mayor entre 2 entregados como parámetros. Los comentarios, como siempre, en negrita, cursiva y entre /* y */:
Inicio /* Damos inicio al programa */ Numero num1, num2, mayor; /* Declaramos 3 variables de tipo Número: num1 y num2 que serán 2 números que el usuario ingresará por teclado, y mayor, que será donde se almacenará el número mayor después de que la función nos devuelva el resultado */ principal ( ) { /* Declaramos la función principal del programa */ mostrar("Por favor ingrese el número 1: "); leer(%numero, &num1); mostrar("Por favor ahora ingrese el número 2: "); leer(%numero, &num2); /* Mediante mostrar y leer, recibimos por teclado los 2 números ingresados por el usuario */ mayor = numero_mayor(num1, num2); /* A la variable mayor, le asignamos el resultado de llamar a la función numero_mayor, especificada luego de la función principal, pasándole como parámetros las variables num1 y num2 */ mostrar("El número mayor de los que ingreso es: %numero", mayor); /* Nuestra variable mayor ya recibió el resultado de la función, así que lo desplegamos */ } numero numero_mayor(numero valor1, numero valor2) { /* Declaramos una función de tipo numero, llamada numero_mayor y que recibe como parámetro 2 variables de tipo numero, llamadas valor1 y valor2, que corresponden a los num1 y num2 enviados desde arriba */ Si(valor1 > valor2) { retornar valor1; } Si no { retornar valor2; } /* Mediante una iteración condiciional, hacemos una comparación entre los 2 números y retornamos el mayor de los 2 para que se le asigne a la variable mayor y se muestre por pantalla al usuario. */ } Fin
Con este simple ejemplo hemos podido apreciar un poco el funcionamiento y uso de las funciones en la programación. Hay un importante concepto que hemos utilizado ahora, pero que detallaremos más en profundidad cuando estemos hablando de lenguajes reales, que es el paso de parámetros desde una función a otra (lo que hicimos cuando llamamos a la función y lo que esta recibe por el otro lado). Por ahora no vale la pena entrar en esos detalles, pero ya los veremos más completamente.
Con las funciones sucede lo mismo, esta pasada que le hemos dado ahora es bastante superficial, pero iremos cubriendo otros aspectos y descubriendo sus usos completos y más complejos a medida que vayamos programando más y más. Por ahora es una buena técnica ir combinando los otros contenidos que hemos visto en los capítulos anteriores con esto e ir practicando. Por ahora, al siguiente tema.
En estos momentos que estamos llegando al final de nuestra cobertura sobre el pseudo-código o pseudo-lenguaje, es bueno repasar algunas consideraciones antes de adentrarnos al lenguaje real en el que decidamos programar, por ejemplo:
1.- Recordemos que el pseudo-lenguaje no es un lenguaje de programación real, y por ende, lo que hemos cubierto hasta acá no lo encontrarán en libros o puede que aparezca de forma distinta. No se preocupen, el objetivo nunca ha sido ni será que nos convirtamos en expertos de pseudo-código, si no que entendamos como se desarrollan los procedimientos en la programación y como plantearnos soluciones a los problemas mediante el entendimiento de la estructura de los programas.
2.- El pseudo-código, a pesar de no ser un lenguaje real, utiliza un paradigma estructurado y por la forma y palabras que normalmente se uilizan, se asemeja bastante al lenguaje C, por lo que es la opción natural para seguir. Veremos más de esto en el próximo punto.
3.- Lamentablemente, al no tratarse de un lenguaje real, no existe ningún software que podamos utilizar para programar y así ver nuestros errores para poder solucionarlos. Esto por un lado es bueno, ya que agudiza nuestra forma para leer el código y detectar errores, algo que nos servirá de sobremanera más adelante.
4.- Es recomendable que repasemos e intentemos entender de la mejor forma todos los puntos explicados en esta y pasadas ediciones de esta saga. Si bien hemos cubierto una pequeña parte de todo lo que comprende la programación, hasta ahora hemos visto las bases fundamentales para entender los lenguajes reales y todo el resto de aplicaciones dentro de la programación, por lo que entender de la mejor manera estas bases será esencial para que la enseñanza no se complique más adelante.
Ahora que hemos de alguna forma “terminado” con el pseudo-lenguaje ha llegado un momento importante: Decidir el lenguaje de programación que empezaremos a aprender.
Esta decisión no es sencilla, y depende de varios factores, entre ellos el paradigma de programación, la facilidad del lenguaje, la extensibilidad y funcionalidades, actualización con los tiempos e incluso preferencia personal entre muchas otras razones.
Al momento de elegir debemos tomar esas consideraciones, aunque también fijarnos en otras como la documentación disponible, grupos de usuarios y todo lo que nos pueda apoyar a que el aprendizaje sea más sencillo.
Como experiencia personal, y el camino que seguiremos en esta saga de tutoriales, una de las mejores opciones para continuar es el lenguaje C, esto debido a lo similar que es al pseudo-código que hemos visto y porque ambos comparten el mismo paradigma estructurado, con lo que la transición se hace mucho más sencilla y así es posible pasar a otros lenguajes con mayor facilidad en el futuro. Así que prepárense, que para allá vamos.
Tal como veíamos en este tutorial, actualmente existen 4 paradigmas comunes de programación, como son (ojo que son definiciones básicas, para que nos hagamos la idea de cada uno):
Con esto podemos tener un poco más claro por qué existen distintos lenguajes de programación y que los diferencia, es principalmente su paradigma.
Para casos de esta saga, por las razones antes descritas, seguiremos con el lenguaje C, el cual nos servirá de base para todo el aprendizaje que tendremos que hacer.
Por ahora lo dejaremos hasta aquí, ya que hemos cubierto suficiente y es momento de tomar un descanso hasta tutoriales futuros donde ya empezaremos a utilizar un lenguaje real de programación.
En la próxima edición:
Como siempre recuerden que este tutorial ha sido:
Esperamos que este tutorial haya sido de utilidad para Uds.
Muchas gracias por leer y será hasta una próxima oportunidad.
2:59:27 pm
Hola Juan Xabadu
Primero dejame darte las gracias por que gracias a ti y a todo tu staff, estoy aprendiendo mucho con estos manuales, otra cosa quiero preguntarte, el proximo tutorial va a ser Introduccion a c que como lo mencionas nos vamos ir encaminando hacia ese lenguaje, le pregunta es : es lo mismo o mas dificil java, puedo ir leyendo manuales en java mientras desarrollan el otro tutorial o cres que me confunda?
Otra cosa Juan yo se que ustedes son gente demasiado ocupada pero, por favor no demoren tanto en publicar los tutoriales, ya que este ultimo tardo hasta un mes y creo que con dos dias de estudio es suficiente para pasar al otro no cress?Gracias….
11:36:57 pm
@Miguel: Muchísimas gracias por tu comentario y la buena onda expresada.
Sobre tus consultas del lenguaje, sí, ahora cubriremos lenguaje C porque es bastante similar al Pseudo-código que vimos acá y de esa forma la transición será más sencilla.
Sobre Java, no es que sea más o menos dificil. Son simplemente distintos ya que se enfocan en distintos paradigmas (C es estructurado mientras Java es orientado a objetos).
Sobre si se puede hacer paralelamente, no te podría decir ni que sí ni que no. Hay gente a la que se le hace más fácil y a otros más díficil, depende de varios factores. Para la creación de estas guías estoy aplicando un método de como me enseñaron a mi programación en la Universidad, esto es:
Pseudo-codigo > Lenguaje C > Java
Creo que de esa forma uno en las 2 primeras partes se preocupa de fortalecer los fundamentos de la programación para que el aprendizaje en Java sea lo más sencillo posible. De cualquier forma, si quieres partir paralelamente con Java, te incentivamos a hacerlo. Acá lo cubriremos, pero más adelante.
Sobre la frecuencia de los tutoriales, la verdad es que no podemos lanzar número trás número por un tema de ir mezclando estos y otros contenidos. Sin embargo puedo asegurarte que de aquí al próximo número no pasará tanto tiempo como el que paso entre este y la versión pasada, ese fue un tema que se nos escapó de las manos.
Agradezco nuevamente tu buena onda y seguiremos preparando material.
Saludos
4:09:30 pm
amigo este tutorial me ayudado mucho a entender algo sobre que es programacion y como se deben llevar cirtos pasos algunas ocaciones quede con inquietudes pero no desespero ya que se que en la practica puedo entenderlas mejor muero de ancias por empesar a practicar y hacer algun programilla asi sea muy basico estoy super motivado y estoy dispuesto hacer lo que sea para comvertirme en uno de los mejores hasta ahora no habia conseguido algo para aprender como este tutorial, las bromas es buena estrategia ya que hace mas entuciasta las guias, ahora dices que hay que aprender a programar en C pues estare esperando la guia y seria bueno que dieras unos ejemplos para ponerlos en practica asi motivar mas.
5:32:45 pm
@neo: Muchas gracias por tu comentario y buena onda.
Pronto se viene la próxima parte de este tutorial donde empezaremos con programación en C, así que atento.
Saludos
8:06:05 pm
gracias por la informacion super
12:48:02 am
Buenisimo este manual, estas 6 partes + codigoreal, es lo que me han enseñado en 2 años de grado medio pagando 300€ aprox. cada mes xD. Y empezaron enseñandonos a programar con Qbasic (aunque eso no fuera programar xD).
Saludos y seguir asi ;).
P.D: Y al final no tokamos el C++ xD.
1:00:27 pm
[…] la Parte 6 de esta saga, veíamos en una primera instancia lo que eran las funciones cuando hablabamos de […]
1:14:09 am
trate de hacer el codigo de la funcion en devc++ pero algo anda mal.
no entiendo mucho nada de funciones, a ver si puedes ayudarme por favor.
¿se supone que cuando llamo a una funcion no debo declarar el tipo de variable ?
mayor=numero_mayor(num1, num2);
en cambio cuando ha sido llamada ¿si debe declararse?
numero numero_mayor(numero valor1, numero valor2)
el codigo es este:
int main ()
{
int num1, num2, mayor;
cout<<“ingrese el numero 1”;
cin>>num1;
cout<<“ingrese el numero 2”;
cin>>num2;
mayor=numero_mayor(num1, num2);
cout<<“el numero mayor es”<<mayor;
}
int numero_mayor(int num1, int num2);
{
if (valor1>valor2)
{
return valor1;
}
else
{
return valor2;
}
getch();
}
12:35:45 pm
@Chileno: Cuando llamas a una función, solo debes enviar como parámetro las variables que contienen los valores con los que se trabajará.
Por otro lado, en la función en sí, debes especificar que tipo de dato recibe y asignarle un nombre de variable (que puede ser el mismo o distinto, ya que es un paso por parámetro).
¿Qué error te aparece?
Saludos
6:11:36 pm
buenas q pena la molestia pero es q esa funcion leer lo q hace es almacenar dentro de la variable oke
muchas gracias ojala me puedan responder