Anda di halaman 1dari 73

Cmo aprender a programar y no morir en el intento: Parte 1 Antes de comenzar, para dejar todo bien claro: Nota: En Como

Lo Hago no somos ni grus ni profesionales de la programacin, por lo que no nos atreveramos a ofrecer estas guas como un mtodo seguro llame sha, 100% garantizado, un abdomen ms plano en 7 das ni infalible. No utilizamos ninguna gua ni manual oficial para redactar esto, pero lo haremos lo ms completo posible, a partir de las experiencias personales de como aprendimos a programar e intentaremos traspasar todo eso en las siguientes lneas, por lo que estn en todo su derecho de disputar los contenidos de este y los tutoriales siguientes y obviamente de seguir sus propios mtodos si los estiman convenientes. Con eso claro, veamos lo que cubriremos en la primera parte de este tutorial: Contenidos:

1. Qu es la programacin?. 2. Qu necesito para aprender a programar?.


3. Primeros pasos para aprender. 4. Los algoritmos: la base de todo. Puede parecer poco, pero creanme que no lo es. As que ya con todo eso definido, no hay ms excusas, vamos. Esto es como andar en bicicleta, una vez que se aprende nunca se olvida.

1.- Qu es la programacin?
Hum que pregunta ms amplia. La verdad es que definir que es la programacin puede enfocarse desde una serie de aspectos: Desde uno netamente tcnico hasta uno ms abstracto o conceptual, pero veamos. Mirandolo desde un aspecto netamente tcnico o computacional, la programacin es la realizacin de programas (dah!), es decir, la realizacin de una serie de instrucciones que interactuarn tanto con el hardware de nuestro computador, como con otras aplicaciones y/o el usuario que las maneje. En aspectos ms simples an, al programar en la mayora de los casos lo que hacemos queda tan reducido como a preparar una serie de instrucciones y operaciones que nos permitan hacer una recoleccin de datos, operar con esos datos de alguna forma y luego presentar una serie de resultados producto de esas operaciones. Y finalmente mirandolo desde un aspecto ms conceptual, la programacin se refiere netamente a la resolucin de problemas. Cuando programamos lo que queremos hacer es otorgar una solucin a una inquietud, abordando aquel problema desde distintos puntos de vista hasta encontrar la respuesta ms ptima y/o efectiva. De a poco iremos comprendiendo ms esta definicin. En los computadores, todo se maneja a base de nmeros binarios (1s y 0s), por lo que cuando por ejemplo queremos realizar una suma, nuestro equipo no entiende si le decimos suma 2 + 2 sino que entendera una instruccin o serie de instrucciones en binario que le permita realizar la operacin. Por eso cuando nosotros programamos, lo que hacemos es crear un intermediario entre el usuario que usa un lenguaje real y nuestro equipo que utiliza un lenguaje de mquina.

Cmo

hacemos esto?, bueno muy fcil (aunque no tanto): Los entornos de programacin (tema que abordaremos ms

adelante en detalle) se encargan de realizar esa traduccin de lenguaje real a lenguaje de mquina de las instrucciones que programamos y luego de vuelta la traduccin de lenguaje mquina a lenguaje real de los resultados de las operaciones. As que cuando vemos el resultado 4 en pantalla es que nuestro equipo ha mandado el mensaje en binario y ha sido traducido por el programa que hicimos. Hasta ahora hemos visto conceptos algo complejos, pero no se preocupen, de a poco se irn entendiendo y en el fondo si no llegan a entender eso no limitar su capacidad de programacin.

2.- Qu necesito para aprender a programar?


Bueno tiempo. Hablando un poco ms en serio, podemos definir las necesidades en 2 tipos: las fsicas y laspersonales. a) Necesidades fsicas:

Fsicas?, Say what?, Es un concurso de popularidad?. No, en verdad por necesidades fsicas nos refermos de cierta
forma a implementos reales o computacionales que se utilizarn para empezar a programar. Para las primeras guas solo necesitaremos de nosotros mismos y a lo ms una hoja de papel y un lpiz. (para jugar al gato en los ratos de ocio. No, ya vern porque). Eventualmente cuando nos adentremos ms necesitaremos de estas cosas: 1. Un computador (que si estn leyendo me imagino que ya lo tienen). 2. Un entorno de programacin (que depender del lenguaje en el que decidamos programar. Ya lo veremos con ms calma ms adelante). 3. Una conexin a Internet (no es de vida o muerte, pero si ayuda). Como pueden apreciar, no necesitamos nada de otro mundo. Son cosas que estn accesibles a solo unos clicks de distancia (a menos que no tengan computador, ya que no pueden ir clickeando por la vida para comprarse uno. O sea pueden, pero cuesta ms). Pero en todo caso no se preocupen por esos tems an, ya lo veremos con ms calma cuando sea necesario. b) Necesidades personales: Personales es un trmino que utilizamos con bastante cuidado, ya que en verdad a lo que nos referimos es a una serie de caractersticas y habilidades (natas y/o adquiridas) personales que ayudan mucho en el aprendizaje. Si bien el no tener alguna de estas puede que termine por no ser un impedimento si sirve de mucho tenerlas. Nos referimos a:

1.

Paciencia, y mucha: Y hacemos mucho hincapi en este punto, por eso lo hemos puesto al tope de la lista. La programacin puede llegar a ser muy frustrante y en muchas ocasiones podemos quedarnos pegados por un buen rato en la busqueda de una solucin a un problema, por muy pequeo que sea. Ms adelante daremos algunos consejos sobre esto. Lo importante es tener paciencia y entender que siempre hay baches en el camino, por muy buenos que lleguemos a ser. Perseverancia: Va ligado netamente al punto anterior. En la programacin siempre hay que ser perseverante para poder lograr los objetivos que nos proponemos. En muchas ocasiones nos encontraremos con distintos problemas que van desde: no saber como afrontar un problema, hasta bloqueos mentales o desconocimiento. Saldremos adelante solo siendo perseverantes y solo continuando cuando pensemos que ya debemos tirar la esponja. Estas ltimas 2 cualidades es lo que separa a los buenos programadores de los malos. No los conocimientos de lenguajes, sino la paciencia y la perseverancia es lo que los llevar a ser buenos. Mirar las situaciones desde distintos puntos: Esto es muy til y nos refleja a nosotros mismos de como enfrentamos la vida. Cuando se nos presenta una situacin de cualquier tipo, mientras de ms puntos o lados la miremos y obtengamos ciertas conclusiones, aumentamos ms la posibilidad de encontrar una buena solucin. Debemos siempre tener en cuenta que todas las personas piensan de distinta forma y por lo tanto todos pensamos distintas soluciones y ms an, distintas formas de implementar estas soluciones. Si bien es siempre bueno definir hacia nosotros mismos una metodologa para resolver los problemas, es muy til tener la habilidad de abstraerse y mirar la situacin desde otro lado. En ms de alguna ocasin con esto obtendremos mejores soluciones que las que habiamos pensado originalmente. Pensar lgica y bsicamente: Algn tiempo atrs, cuando estaba en la universidad, un profesor nos dijo Seores, les contar algo que nadie se ha atrevido a decirles hasta ahora: Estas mquinas que estn frente a Uds. que son conocidas mundialmente como computadores capaces de hacer cosas que la mente humana no puede, son en verdad tremendamente bsicas y tontas. Curioso, no?. Es una tremenda verdad. Los computadores son mquinas tremendamente estpidas que saben realizar solo un par de operaciones bsicas como cargar, grabar o sumar. Todo lo dems que pueden hacer es, o bien una combinacin de esas operaciones, o el producto de otros

2.

3.

4.

5.

programadores que han desarrollado aplicaciones que les permiten a estas mquinas realizar otros trabajos. A qu vamos con esto?, a que siempre hay que tener presente lo bsico de la forma de pensar de los computadores cuando programamos y por eso muchas veces debemos pensar igual de bsico que ellos. Cuando necesitamos encontrar una solucin, debemos enfrentar la situacin como un computador lo hara sin saber otro tipo de informaciones que nosotros sabemos y debemos disear nuestras soluciones de la forma ms bsica para poder implementarlas. Ser estructurado: A pesar de que los programadores tienen la fama de ser medios locos y volados para encontrar solucin a las respuestas, tambin son tremendamente estructurados. Y es que cuando pensemos una solucin a implementar mediante programacin, debemos pensarla estructurada de la forma: Bueno, para hacer esto, primero hay que hacer esto, luego esto, luego esto y finalmente esto. Ese orden y esa estructuracin nos ir ayudando a no tener que volver sobre el mismo camino hecho para agregar cosas que deberan haber estado ah. Conocimientos matemticos: Si bien no es extremadamente necesario y no necesitamos ser unos magos de los nmeros, ya que hoy con Internet tenemos acceso a la informacin de manera rpida y sencilla, si es bueno tener nociones matemticas sobre operaciones, conocimientos algebraicos, geomtricos ya que al programar utilizaremos uno o varios de estos conceptos en ocasiones. Ser curioso y tener disposicin a resolver problemas: La programacin nos presenta problemas, problemas y ms problemas. Por eso es bueno tener curiosidad de como resolverlos de distintas formas y siempre tener la disposicin a encontrar soluciones, en especial la ms adecuada. Es nuestra curiosidad y nuestro espritu de superacin lo que eventualmente nos ir convirtiendo en mejores programadores.

6.

7.

Es por esto que en las carreras relacionadas con el rea de la computacin e informtica, previo a la programacin siempre nos pasan (muchas veces odiandolo y sin entender bien porque) Clculo y lgebra. El primero nos ensea a expandir la mente y mirar los problemas desde distintos puntos y el segundo nos ensea a establecer una estructura de pensamiento. As que ya saben, a dejar de odiar a esos viejos pelados (referencia personal?) que nos llenan de funciones, sistemas de ecuaciones y grficos. Y finalmente un detalle a siempre tener en consideracin: En la programacin, siempre hay ms de una forma de resolver los problemas.

3.- Primeros pasos para aprender


Si hemos aguantado leer los primeros extensos parrafos llegamos al punto de: Ok, creo que tengo todo. Ahora Cmo parto?. Bueno partamos con una pregunta que quizs no nos hemos hecho hasta ahora:

Cualquier persona puede aprender a programar?


Bueno, si y no. Segn muchos expertos, hay gente que no sirve para programar. Si bien tienen razn hasta cierto punto creo, sin considerarme en lo ms mnimo experto en el tema, que cualquier persona que tenga el inters y deseo de aprender puede llegar a hacerlo. Quizs no se puede garantizar a que llegue a ser realmente bueno, pero creo que teniendo las ganas, la paciencia, la perseverancia y el espritu de superacin se puede llegar muy cerca. Eso y harta prctica, que bueno, como para todo en la vida, nunca est dems. Entonces, Por donde partimos?, por el principio por lo ms bsico. Partimos por empezar a preguntarnos Cmo funcionan las cosas?. Me explico: Debemos empezar a entrenar nuestra mente y forma de pensar a descubrir como funcionan las cosas y como se resuelven los problemas. Para hacer esto hay una serie de formas y mtodos, pero en el fondo debemos encontrar el que ms nos acomode. Desde sentarnos en la vereda y ver como un conductor est haciendo funcionar su automvil hasta abrir la calculadora de Windows y ver como es el modo de interpretar una operacin que le indiquemos realizar. No necesitamos intentar descifrar el procedimiento exacto y detallado, si no que plantearnos esas inquietudes y ver como funcionan. Por ejemplo, cuando le decimos a la calculadora de Windows que realice una suma y le damos los datos, esta lo que hace es leer los datos que le dimos, interpretar cuales son nmeros y cuales signos. En base al signo, ve la factibilidad de realizar la operacin y la hace. As de simple.

Una vez que empecemos a entrenar nuestra forma de pensar de esa manera, podemos empezar a entrar a cosas mucho ms concretas como el punto que viene a continuacin.

4.- Los algoritmos: La base de todo.


Los algo-qu?. Algoritmos. Chanfle.
Los algoritmos son la base de la programacin. Antes de entrar de lleno, pasemos a una definicin:

Qu es un algoritmo?
Muchas veces se tiende a confundir un algoritmo con algo netamente computacional o tecnolgico. En el fondo no es as. Un algoritmo es bsicamente una lista definida, ordenada y finita que nos indica como resolver un problema determinado (Grande Wikipedia!), o sea un how-to bien bsico y definido para una operacin determinada. Si no qued muy claro, utilizaremos otro ejemplo que nos ocurri en la Universidad: El mismo profesor que nos indic la estupidez de nuestros queridos computadores, el da que nos quis ensear lo que eran los algoritmos, nos pidi el primer da de clases y sin darnos explicacin alguna que definieramos el algoritmo para hacer un huevo frito. La cara de duda era unnime en los rostros presentes, ya que todos nosotros, sin experiencia previa, relacionabamos los algoritmos con procesos netamente computacionales, entonces no tena lgica alguna. Luego nos otorg la ayuda necesaria diciendonos: Lo que necesito es que me definan lo que Uds. haran desde un principio para hacer un huevo frito. Fue ah donde nos dimos cuenta que uno puede definir algoritmos para cualquier tipo de procesos, desde los de la vida misma hasta cosas ms evolucionadas y tecnolgicas. Ahora, a diferencia de como uno ve los problemas en la vida real, al realizar un algoritmo sobre cualquier cosa, siempre es bueno plantearse los supuestos de cualquier problema que pudiese ocurrir y que soluciones se pueden establecer al respecto.

qu vamos con esto?, a darnos cuenta de que los algoritmos son la premisa bsica de cualquier solucin de

programacin que vayamos a implementar. Con sus operaciones, sus supuestos, su contingencia y su desarrollo estructurado. Mientras ms completos sean los algoritmos que nos planteamos, mejor ser nuestra programacin propiamente tal. Veamos un ejemplo, les parece?, ya que despus de tanta teora vamos a marearnos un poco. Viendo la misma historia antes mencionada, intentemos hacer un algoritmo (bsico) de como haramos un huevo frito: Algoritmo para hacer un huevo frito: 1. 2. 3. 4. 5. 6. 7. Voy a la cocina. Saco un huevo del refrigerador. Saco una sartn. Pongo un poco de aceite en la sartn. Hecho el huevo a la sartn. Lo fro. Me lo como.

Si bien tenemos los pasos bsicos establecidos de forma correcta, podemos empezar a ver de que nuestro algoritmo tiene ciertas fallas, como por ejemplo: Qu pasa si no hay huevos?, Qu pasa si no hay aceite?, Qu pasa si no hay gas?. Pueden ser preguntas y respuestas algo bsicas, pero reflejan lo que decamos de plantearnos supuestos. Cuando programamos siempre tenemos que cubrir todos los aspectos necesarios, ya que por muy bien que conozcamos nuestro programa, el usuario puede no saberlo todo, y es por esto que debemos estar preparados para cubrir cualquiera de estas situaciones. Una versin mejorada del algoritmo sera: Algoritmo para hacer un huevo frito 2.0:

1. Voy a la cocina. 2. Veo si hay huevos en el refrigerador. 3. Si hay, saco un huevo y salto al paso 8 4. Si no hay, voy a comprar. 5. Para comprar, voy a buscar plata. 6. Si hay plata, saco y voy al paso 8 7. Si no hay plata, no se hace el huevo frito. 8. Veo si hay gas. 9. Si hay, prendo la cocina y voy al paso 14. 10. Si no hay, busco dinero para pedir gas. 11. Si no hay dinero, no hago el huevo. 12. Si hay, encargo y salto al paso 14. 13. Espero que llegue el gas. 14. Saco una sartn. 15. Si no hay sartn, no hago el huevo. 16. Etc, etc. Creo que la idea se entiende. Si, es cierto, puede parecer excesivo ponerse en todos los supuestos y quizs estemos cubriendo aspectos sumamente extraos, pero mientras ms situaciones que puedan ocurrir consideremos y tengamos soluciones presentes para eso, ms completo ser nuestro algoritmo y por ende nuestro programa. En el fondo siempre debemos pensar que existe la mala intencin de los usuarios, un concepto que ms adelante veremos en detalle y que es una de las cosas ms importantes a tener en consideracin por parte de los programadores. Es una excelente prctica empezar con el tema de los algoritmos. Empezar a plantearnoslos para resolver distintas situaciones, desde la vida cotidiana, hasta situaciones computacionales, lingusticas, de lgica, matemtica, en realidad para todo. Siempre que hay un problema, hay un algoritmo que se pueda realizar para encontrar la solucin. As que los instamos a practicar un poco este tema, mientras nosotros vamos desarrollando la que ser la segunda parte de esta gua para aprender a programar y no morir en el intento. Por ahora lo dejaremos hasta aqu, ya que hemos cubierto los aspectos ms bsicos y necesarios y han ledo bastante. Es momento de descansar la vista un poco y seguir pensando, que es la mejor prctica posible. En la prxima edicin de Como aprender a programar y no morir en el intento:

1.

reas de memoria alias Como almacena la informacin una mquina.

2. Introduccin al Pseudo-cdigo. 3. Haciendo nuestro primer programa. Todo, a la misma batihora, en el mismo baticanal. Como siempre, este tutorial ha sido desarrollado mediante un complejo algoritmo y documentado (no hemos podido determinar su efectividad en general, al menos con nosotros funcion), por el equipo de Como Lo Hago, por lo que cuenta con nuestro infalible, siempre seguro, con un poquito de gusto a limn y establecido Sello de Garanta. Cualquier problema, duda o comentario, sientanse libres de realizarlos en el rea habilitada a continuacin. Asistiremos sus dudas a la brevedad posible. Y recuerden, que pronto, conocern a las mentes maestras. Esperamos que este tutorial haya sido de utilidad para Uds.

Con las Fiestas Patrias ya quedando atrs, y luego de una tonelada algunos tutoriales de cocina que les dejamos en estos das, volvemos un poco ms a la normalidad en Como Lo Hago, y que mejor que trayndoles la segunda parte de esta saga de tutoriales que hemos estado preparando para aquellos que quieren adentrarse en el mundo de la programacin. Bueno sin ms preambulo les digo, que como siempre, todo el detalle est despus del salto. Cmo aprender a programar y no morir en el intento Parte 2 Nota: Si por alguna razn se perdieron la primera parte de esta saga, pueden leerla en este enlace. Tenemos harto que aprender hoy, y un recuento de lo pasado sera solo acumular lneas, as que vamos, manos a la obra: Contenidos: Tal como lo prometimos en el tutorial anterior, hoy veremos los siguientes temas: 1. reas de memoria alias Como almacena un computador la informacin. 2. Introduccin al Pseudo-Cdigo. 3. Haciendo nuestro primer programa.

Listos?, Fueron a buscar bebida?, yo no he ido, as que esperenme -> !.

1.-reas de memoria.
Quizs para gente ms experimentada en el tema de la programacin, pueda parecer algo repentino entrar a esto tan luego, pero hay una razn de fondo que es empezar a relacionarnos con el concepto de las variables de cierta forma. Pero bueno, Qu son las reas de memoria?. Para contestar esta pregunta, nos haremos otra, Cmo almacena la informacin una mquina/equipo/computador?. Bsicamente lo hace de 2 formas, o mediante el uso de 2 tipos de memoria: la voltil y la no voltil. La memoria voltil es toda aquella que una vez que apagamos el computador se vaca (Ej: Memoria RAM). Tiene la ventaja de ser de mayor acceso (lectura/escritura) y obviamente la desventaja de que su almacenamiento no es permanente.

Por su lado la memoria no voltil es justamente lo contrario a la anterior, ya que una vez que almacenamos informacin ah, quedar hasta que decidamos borrarla o alguien lo decida por nosotros. Ejemplos de memoria no voltil son los almacenamientos magnticos (discos duros) o los pticos (CD, DVD, etc). En la programacin se utilizan ambos tipos de memoria. Por un lado se utiliza la memoria voltil para el trabajo con variables (explicaremos eso en detalle) y por otro lado la memoria no voltil cuando estamos trabajando con archivos o en otras situaciones que iremos viendo a medida que ocurran. En una representacin grfica, la memoria voltil que utiliza la programacin (RAM), sera algo como esto, guardando las proporciones:

Cada cuadradito representa un rea de memoria, el cual posee una direccin expresada en valores hexadecimales (algo por ejemplo como FA2246) la cual se llama direccin de memoria, y es utilizada cuando se quiere acceder a los datos almacenados en ese cuadradito.

Se acuerdan esa vez que les dijimos que explicaramos las variables en detalle?, que tiempos aquellos no?, bueno el
momento es ahora. Las variables Esta definicin no intenta ser tcnica ni mucho menos. Solo pretendemos que el concepto quede claro para que lo intentamos lograr. Una variable es un enlace contenedor de y a un dato. Por qu enlace contenedor?, porque una variable esta relacionada a una direccin de memoria, por ende enlace, y contiene un valor correspondiente a un dato que podemos recibir o tomar de otro lado (usuario, otra variable, el resultado de una operacin, etc), ergo contenedor. Esta definicin se ir haciendo ms clara a medida que vayamos avanzando. Las variables tienen ciertas caractersticas, como son: Nombre: Corresponde al identificador de la variable. Los nombres de variables dentro de un programa deben ser nicos, no empezar con un nmero, no contener smbolos y respetar las palabras reservadas dentro de un lenguaje de programacin (Por ej: En Java, la palabra new es reservada, por lo que no se puede nombrar una variable as). Tipo: Corresponde al tipo de datos que podrn almacenarse en la variable. Si bien en lenguajes como PHP no es necesario definir el tipo, la mayora de los otros lenguajes lo piden. Los tipos ms comunes son:

1. 2. 3. 4. 5.

Int: Corresponde a nmeros enteros (correspondiente al universo Z de las matemticas). El rango que abarca (valores mximos y mnimos que se les puede dar) vara del lenguaje en uso. Existen 2 variaciones comunes como son el short int o short y el long int o long. Varan en el rango. Float: Corresponde a valores de punto flotante (nmeros decimales correspondientes al universo Q de las matemticas). En algunos lenguajes se puede utilizar como double, short double o long double. Su rango difiere del lenguaje a utilizar. Char: Corresponde a valores de caractres alfanumricos (0 a 9 y abecedario). Solo se puede almacenar un valor dentro de este tipo de variables. Boolean: Corresponden a valores de tipo lgico. Almacenan slo 2 posibles valores: true o false. String: Corresponde a una cadena de caractres, por ejemplo una palabra o frase. Su rango depende de cada lenguaje.

Adems debemos tener presente que las variables pueden cambiar su valor a lo largo del programa (a no ser que sean definidas como constantes, ya veremos eso ms adelante) y existen observaciones sobre las operaciones que ejecutamos sobre ellas. Estos puntos los detallaremos ms adelante. Dejando esa definicin un poco ms clara, volvemos al tema de las reas de memoria. Cuando creamos una variable, o bien la definimos, el equipo le asigna automticamente un rea de memoria en la cual almacenar su valor. En caso de sobrepasar el rea asignada, se le asignar una nueva rea de memoria, y as sucesivamente. Esta seccin de las reas de memoria ir quedando cada vez ms clara segn vayamos avanzando.

2.- Introduccin al Pseudo-Cdigo


El Pseudo-Cdigo, como su nombre lo indica, es una especie de lenguaje de programacin utilizado para introducir a los futuros programadores a la estructura de la realizacin de programas. En l, se utilizan todos los recursos de un lenguaje de programacin normal, a pesar de que los nombres y conceptos puedan variar dependiendo de quien lo ensee, y se busca principalmente practicar un poco la lgica que posteriormente debemos implementar. Lo principal que se debe entender, es que a pesar de establecer algunas reglas sobre como se operar con el pseudocdigo, los nicos errores que se pueden cometer son de lgica y no como expresamos las distintas funcionalidades del programa, as que hay que irse sintiendo lo suficientemente libres para experimentar. Antes de entrar de lleno a este tema, es bueno detenernos y explicar un poco el tema de los paradigmas de programacin. Paradigmas de programacin En la programacin existen una serie de paradigmas que se refieren principalmente al enfoque que le daremos a un problema para solucionarlo o bien la forma en que veremos las cosas. Los paradigmas ms comunes son: 1. 2. 3. 4. Paradigma de programacin estructurada. Paradigma de programacin orientada a objetos. Paradigma de programacin orientada a eventos. Paradigma de programacin orientada a aspectos.

Para las primeras etapas de estas guas nos enfocaremos en el paradigma estructurado. A medida que vayamos avanzando nos interiorizaremos ms en esto. Volviendo al tema del Pseudo-cdigo, y habiendo establecido el punto de los paradigmas, veamos el formato clsico y bsico de un programa: Inicio Definicin/declaracin de variables

Cuerpo del programa Fin A medida que vayamos haciendo programas ms complejos veremos como este formato se va a ampliando. Una explicacin de las partes:

1. 2. 3. 4.

Inicio: Se refiere al comienzo del programa. Definicin/declaracin de variables: Aqu indicamos todas las variables que utilizaremos para la realizacin de nuestro programa, junto con su tipo y en algunos casos, su valor inicial. Cuerpo del programa: Aqu ir el desarrollo de nuestro programa, indicando informacin que recolectaremos, operaciones y salidas (entrega de informacin). Fin: Se refiere al fin del programa.

Cumpliendo esos pasos bsicos, podemos empezar a hacer nuestros primeros programas. As que a tomar una hoja de papel, un lpiz y una goma, porque de seguro deberemos borrar ms de alguna cosa por ah.

3.- Haciendo nuestro primer programa


Para hacer nuestro bautizo oficial en el mundo de la programacin, partiremos por realizar el ejercicio ms clsico que aparece en todos los libros de programacin de aqu a la eternidad, el famoso Hola mundo. En este programa lo que haremos ser simplemente mostrar un mensaje en pantalla que diga Hola Mundo. El cdigo a continuacin, y los comentarios van en negritas, cursiva y entremedio de /* y */. Ejercicio 1: Hola Mundo

Inicio

/* Establecemos el inicio del programa */

Principal( )

/*

Definimos la funcin Principal que es donde ir el cuerpo del programa. Ya adentraremos el

tema de las funciones */

mostrar Hola Mundo;

/* Utilizamos la sentencia mostrar para enviar un mensaje que se despliegue en pantalla y entre
comillas la frase que mostraremos, en este caso Hola Mundo. Luego de la sentencia ponemos un punto y coma para indicar el fin de esta, algo que utilizaremos mucho cuando estemos programando en algn lenguaje, ya que eso le indica al entorno de programacin que es el fin de la sentencia */

Fin

/* Finalizamos el programa */
Y as de simple. Hemos hecho nuestro primer programa enviando un mensaje Hola Mundo que se mostrar en la pantalla. Para este programa, como solo mostramos un mensaje, podrn ver que no hicimos uso de variables, por eso nos saltamos la parte de la definicin de ellas. En posteriores ejercicios haremos uso de eso. Por hoy ya hemos visto bastante, as que es momento de asimilar la informacin y descansar un poco. Para recapitular, hoy hemos aprendido sobre: 1. 2. 3. 4. 5. reas de memoria. Variables. Pseudo-cdigo. Paradigmas de programacin. Hicimos nuestro primer programa.

Bastante, no?, pues bueno, en la prxima gua nos enfocaremos principalmente en ms sobre Pseudo-cdigo:
1. 2. 3. 4. Definicin de variables. Leyendo datos desde teclado (ingresados por el usuario). Iteraciones condicionales (Si, Si no). Ciclos o bcles.

En una prxima edicin, a la misma batihora y en el mismo baticanal. Por ahora es mi deber recordar que como siempre, este tutorial ha sido desarrollado, probado y documentado por el equipo de Como Lo Hago por lo que cuenta con nuestro infalible y a veces programable Sello de garanta. Cualquier comentario, problema o duda que puedan tener, sientanse libre de dejarnos unas lneas en el rea habilitada a continuacin. Esperamos que este tutorial haya sido de utilidad para Uds.

Continuando con esta saga, hoy les traemos la 3a edicin de estas guas donde estamos cubriendo el tema de la programacin paso a paso desde sus principios ms bsicos.

Ya hemos visto en los dos nmeros anteriores toda la informacin bsica antes de empezar a llevar cdigo a papel, por lo que de este nmero en adelante nos dedicaremos de lleno a la programacin en s. Todo el detalle, como siempre, despus del salto. Cmo aprender a programar y no morir en el intento Parte 3 Nota: Recomendamos leer las primeras 2 partes de esta gua si no lo han hecho, las cuales pueden encontrarlas en:

Parte 1. Parte 2.

Como es habitual, partamos por revisar los contenidos de esta edicin: Contenidos: 1. 2. 3. 4. Definicin de variables. Leyendo datos desde teclado. Operaciones matemticas. Iteraciones condicionales.

Es harta informacin, as que vamos de lleno a los temas:

1.- Definicin de variables


En el tutorial anterior ya dimos una explicacin de lo que son las variables y como se encuentran involucradas en los procesos de la programacin, por lo que hoy nos enfocaremos solamente a su definicin y uso dentro del cdigo propiamente tal. Las variables tienen lo que se llama un ciclo de vida, que representa toda la duracin de una variable a travs de un programa. Este ciclo de vida se inicia con la definicin o creacin de la variable y termina con la finalizacin del programa o la liberacin del rea de memoria donde estaba contenida. Para crear o definir una variable en pseudocdigo siempre se utiliza la siguiente sintaxis, la cual representa fielmente la utilizada en los lenguajes de programacin reales: Tipo Nombre Valor Inicial (opcional) Tal como vimos en el tutorial anterior, en los lenguajes de programacin se utilizan ciertos tipos para definir los tipos (valga la redundancia) de informacin que puede almacenar la variable en cuestin. Les recomiendo revisar ese tutorial como recordatorio de los tipos que vimos. En pseudocdigo utilizaremos los siguientes tipos:

1.

Nmero: Este tipo de variables almacenarn cualquier valor de tipo nmero, ya sea entero (conjunto Z) o bien real (conjunto R del universo de las matemticas, o sea, enteros ms decimales). Cabe recordar que en los lenguajes reales hay distintos tipos para los enteros y para los decimales, pero aqu los agruparemos todos dentro de este mismo tipo. Letra: Este tipo de variables almacenarn cualquier valor de tipo alfanumrico, ya sean caracteres (0-9 o A-Z) o palabras y/o frases (como gato, o la casa roja). Tal como en el tipo anterior, hay que recordar que en los lenguajes de programacin reales hay distintos tipos para tratar los caractres y las cadenas de palabras, pero aqu los agruparemos dentro de un mismo tipo. Lgico: Este tipo de variables almacenarn valores de tipo lgico (verdadero o falso). En vez de almacenar las palabras verdadero o falso le asignaremos un 0 si se trata del primero y un 1 si se trata del segundo.

2.

3.

Vale la pena mencionar, que a pesar de que las variables de tipo Letra puedan almacenar caracteres correspondientes a nmeros, no podremos realizar operaciones matemticas sobre ellos, por lo que si necesitamos este tipo de operaciones es recomendable almacenar en variables de tipo Nmero.

Durante el ciclo de vida de la variable (periodo entre su declaracin y su fin) podemos modificar su contenido cuantas veces queramos, siendo bastante til al momento de querer reciclar una variable para no tener que crear otra del mismo tipo, hecho que nos termina ayudando a ahorrar memoria en uso. Tal como indicamos en la sintaxis, toda variable debe llevar un nombre, el cual puede ser cualquiera, pero debe respetar los siguientes criterios:

1. 2. 3.

Debe ser nico. No pueden haber 2 variables con el mismo nombre. No puede empezar con un nmero ni un underscore. Sin embargo pueden contenerlos dentro de su nombre. Si bien no se puede nombrar variables como 2auto o _perro si podemos tener otras como auto2 o perro_. No pueden llevar como nombre una palabra reservada del lenguaje. Todos los lenguajes tienen ciertas palabras reservadas que son utilizadas para definir tipos de variables o funciones del lenguaje propiamente tal. Por ejemplo, nunca podramos nombrar una variable como while ya que los lenguajes reservan esa palabra para una funcin de tipo ciclo. De a poco iremos conociendo las palabras que estn reservadas para cada lenguaje, aunque no hay de que preocuparse, ya que siempre nos avisar al momento de compilar el programa y nos obligar a cambiarla para que no hayan conflictos.

Adems, indicamos en la sintaxis que a una variable podemos asignarle opcionalmente un valor inicial. Elopcionalmente se debe a que al momento de crear la variable podemos asignarle un valor, pero si no lo hacemos no afecta, ya que lo podemos hacer ms adelante. Lo nico en lo que hay que fijarse es que la variable contenga ya algn valor cuando queramos operar con ella. Por ejemplo, si deseamos sumar un valor almacenado en una variable, esta no puede estar en blanco. Veremos a continuacin, algunos ejemplos que cubren todo lo que hemos visto en las lneas anteriores: Retomando el ejemplo del hola mundo que vimos en el tutorial anterior, ahora en vez de desplegar directamente el mensaje, lo desplegaremos con el uso de una variable. (comentarios en negrita, cursiva y entre /* y */):

Inicio

/* Establecemos el inicio del programa */

Letra mensaje=Hola mundo;

/*

A continuacin definimos una variable de tipo Letra, de nombre

mensaje y le damos un valor inicial de Hola mundo, el mensaje que queremos mostrar. Luego de la sentencia ponemos un punto y coma para indicar el fin de esta, algo que utilizaremos mucho cuando estemos programando en algn lenguaje, ya que eso le indica al entorno de programacin que es el fin de la sentencia */

Principal( )

/*

Definimos la funcin Principal que es donde ir el cuerpo del

programa. Ya adentraremos el tema de las funciones */

mostrar mensaje;

/*

Utilizamos la sentencia mostrar para enviar un mensaje que se

despliegue en pantalla y luego la variable que contiene el mensaje, en este caso mensaje. Cerramos la sentencia con un punto y coma para indicar que se ejecute la lnea */

Fin

/* Finalizamos el programa */
Como podemos ver, en este ejemplo hemos definido una variable de tipo Letra, llamada mensaje y le hemos asignado como valor inicial el mensaje que vamos a mostrar por pantalla. Ahora, Qu pasa si no queremos asignar un valor inicial, y se lo damos ms adelante?, sera algo como esto:

Inicio

/* Establecemos el inicio del programa */

Letra mensaje;

/*

A continuacin definimos una variable de tipo Letra, de nombre

mensaje. Luego de la sentencia ponemos un punto y coma para indicar el fin de esta, algo que utilizaremos mucho cuando estemos programando en algn lenguaje, ya que eso le indica al entorno de programacin que es el fin de la sentencia */

Principal( )

/*

Definimos la funcin Principal que es donde ir el cuerpo del

programa. Ya adentraremos el tema de las funciones */

mensaje=Hola mundo;

/*

Asignamos el valor Hola mundo a la variable mensaje y cerramos

con punto y coma*/

mostrar mensaje;

/*

Utilizamos la sentencia mostrar para enviar un mensaje que se

despliegue en pantalla y luego la variable que contiene el mensaje, en este caso mensaje. Cerramos la sentencia con un punto y coma para indicar que se ejecute la lnea */

Fin

/* Finalizamos el programa */
Esos son los pasos fundamentales para ir trabajando con variables. Todo esto se ir haciendo cada vez ms claro a medida que vayamos desarrollando nuestros programas.

2.- Leyendo datos desde teclado


Hasta ahora, toda la informacin que hemos ido desplegando en nuestros programas ha sido proporcionada por nosotros mismos, algo que cuando estemos realizando programas para tercerosnunca ser suficiente, ya que muchas veces deberemos operar con informacin proporcionada por los usuarios que utilizan los programas o por fuentes de datos externas. Para esto se utiliza el trmino Leer datos. Leer datos se refiere a recopilar informacin desde una fuente externa, ya sea un usuario que los ingrese va teclado, o de una fuente de datos como un archivo con registros o una base de datos. En esta primera etapa nos centraremos en la lectura de datos desde teclado, o sea, proporcionada por los usuarios. Los datos se leen y se almacenan en una variable de tipo concordante al dato que se ingresa, por lo que es muy importante definir el tipo de dato correcto, ya que si indicamos una variable de tipo letra y el usuario ingresa un nmero, se guardar como caracter. Ya veremos esto en ms detalle en el ejemplo. Esta informacin podemos manipularla de la forma que estimemos conveniente y despues desplegarla en pantalla de la misma forma que lo hemos hecho hasta ahora. Veamos un ejemplo, basandonos en el mismo ejercicio Hola mundo que hemos visto hasta ahora. En vez de desplegar nosotros el mensaje, le diremos al usuario que ingrese un mensaje para mostrar.(comentarios en negrita, cursiva y entre /* y */):

Inicio

/* Establecemos el inicio del programa */

Letra mensaje;

/*

A continuacin definimos una variable de tipo Letra, de nombre

mensaje. Luego de la sentencia ponemos un punto y coma para indicar

el fin de esta, algo que utilizaremos mucho cuando estemos programando en algn lenguaje, ya que eso le indica al entorno de programacin que es el fin de la sentencia */

Principal( )

/*

Definimos la funcin Principal que es donde ir el cuerpo del

programa. Ya adentraremos el tema de las funciones */

mostrar(Ingrese un mensaje para mostrar: );

leer(%letra,mensaje);

/* Utilizamos la funcin mostrar para desplegar un mensaje por pantalla .


Luego con la funcin leer indicamos entre parentesis el tipo de dato que recolectaremos, en este caso letra (acompaado de un porcentaje, esto es netamente para ir acostumbrndonos a como leeremos los datos en lenguajes reales) y luego de la coma el segundo parmetro, correspondiente a la variable donde almacenaremos la informacin, o sea, mensaje. Terminamos todo con un punto y coma. */

mostrar mensaje;

/*

Utilizamos la sentencia mostrar para enviar un mensaje que se

despliegue en pantalla y luego la variable que contiene el mensaje, en este caso mensaje. Cerramos la sentencia con un punto y coma para indicar que se ejecute la lnea */

Fin

/* Finalizamos el programa */
Con esto podemos recibir toda la infromacin que necesitemos por parte del usuario y desplegarla sin problemas en pantalla.

3.- Operaciones matemticas


En los lenguajes de programacin, una forma de realizar operaciones con los valores almacenados en las variables es mediante las operaciones matemticas. Los lenguajes soportan las operaciones ms comunes que podemos utilizar en la

matemtica y con ellas se puede trabajar tanto variable vs variable, como variable vs constante, y constante vs constante. Las operaciones ms comunes soportadas son:

1. 2. 3. 4.

+: Suma. -: Resta. *: Multiplicacin. /: Divisin.

5. Raz cuadrada (la sentencia depende de cada lenguaje). 6. Potenciacin (la sentencia depende de cada lenguaje). 7. %: Mdulo de la divisin (resto).

8. ++: Incremento. 9. : Decremento. 10.<: Menor a. 11.>: Mayor a. 12.==: Igual a. (Se debe usar doble signo ya que el signo simple es para asignar valores). 13.!=: Distinto de. 14.&&: Y. 15.||: .
Hay algunas otras que iremos viendo ms adelante. Ahora veremos un ejemplo donde operaremos con un nmero ingresado por teclado (comentarios en negrita, cursiva y entre /* y */):

Inicio

/* Establecemos el inicio del programa */

Numero edad;

Numero resultado;

/*

A continuacin definimos una variable de tipo Numero, de nombre

edad y luego una variable de tipo Numero, de nombre resultado.Luego de la sentencia ponemos un punto y coma para indicar el fin de esta, algo que utilizaremos mucho cuando estemos programando en algn lenguaje, ya que eso le indica al entorno de programacin que es el fin de la sentencia */

Principal( )

/*

Definimos la funcin Principal que es donde ir el cuerpo del

programa. Ya adentraremos el tema de las funciones */

mostrar(Ingrese su edad: );

leer(%numero,edad);

/* Utilizamos la funcin mostrar para desplegar un mensaje por pantalla .


Luego con la funcin leer indicamos entre parentesis el tipo de dato que recolectaremos, en este caso numero (acompaado de un porcentaje, esto es netamente para ir acostumbrndonos a como leeremos los datos en lenguajes reales) y luego de la coma el segundo parmetro, correspondiente a la variable donde almacenaremos la informacin, o sea, edad. Terminamos todo con un punto y coma. */

resultado=edad + 10;

/*

En la variable resultado ahora almacenamos lo que nos dar el

sumarle 10 al valor ingresado para edad */

mostrar (Su edad en 10 aos sera: %numero,resultado);

/*

Utilizamos la sentencia mostrar para enviar un mensaje que se

despliegue en pantalla, seguido del tipo de variable que desplegaremos, o sea numero y luego la variable que contiene la informacin, en este caso edad. Cerramos la sentencia con un punto y coma para indicar que se ejecute la lnea */

Fin

/* Finalizamos el programa */
De esta forma desplegaremos un resultado de operar con un dato ingresado por el usuario. Dentro de esas operaciones podemos hacer todas las detalladas con anterioridad.

4.- Iteraciones condicionales


Dentro de la programacin, en muchas ocasiones nos encontraremos con situaciones en donde se deber seleccionar uno de dos o varios caminos a seguir dependiendo de los datos con los que se este trabajando. Para esto se cuenta con lo que se llama iteraciones condicionales, lo que bsicamente nos dar el pie de tomar un camino a seguir dependiendo de una condicin que indiquemos. Cada uno de estos caminos puede incluir una serie de operaciones que perfectamente pueden ser distintas las unas de las otras.

La iteracin condicional por excelencia es, en el caso del pseudocdigo el Si y Si no(if y else en los lenguajes reales). Un Si puede o no llevar un Si no, mientras que un Si no debe ir necesariamente a continuacin de un Si ya que trabaja a partir de la condicin especificada ms arriba. Adems es bueno indicar que dentro de un Si no, pueden ir infinitos Si y Si no. Ejemplificando un poco esto, podra ser algo as:

Recogemos un dato respectivo a la edad de un usuario.

Si (edad cumple una condicin)

sentencia 1;

sentencia 2;

Si no

sentencia 3;

sentencia 4; Veamos un ejemplo prctico sobre el uso de estas iteraciones condicionales, basndonos en el ejemplo anterior:

Inicio

/* Establecemos el inicio del programa */

Numero edad;

/*

A continuacin definimos una variable de tipo Numero, de nombre

edad. Luego de la sentencia ponemos un punto y coma para indicar el fin de esta, algo que utilizaremos mucho cuando estemos programando en algn lenguaje, ya que eso le indica al entorno de programacin que es el fin de la sentencia */

Principal( )

/*

Definimos la funcin Principal que es donde ir el cuerpo del

programa. Ya adentraremos el tema de las funciones */

mostrar(Ingrese su edad: );

Si (edad > 18)

mostrar Ud. es mayor de edad;

Si no

mostrar Ud. es menor de edad;

/*

Utilizamos la iteracin condicional Si con la condicin si la edad es

mayor a 18, y en caso de que sea desplegamos el mensaje Ud. es mayor de edad con la funcin mostrar. Luego utilizamos Si no lo que significa Si no es mayor a 18 y mostramos el mensaje Ud. no es mayor de edad con la funcin mostrar. */

Fin

/* Finalizamos el programa */
Claramente el ejemplo anterior presenta una de las iteraciones condicionales ms bsicas. Pueden realizarse modificaciones para hacer iteraciones multiples e incluso ms de una condicin, ya sea excluyente o no excluyente, pero eso lo veremos en una prxima edicin, ya que hoy hemos cubierto ms que suficiente. En la prxima edicin de Como aprender a programar y no morir en el intento Parte 3: 1. Iteraciones condicionales multiples y uso de ms de una condicin. 2. Switch: Otra iteracin condicional. 3. Ciclos o bcles. As que a armarse de paciencia, que hemos avanzado bastante pero an queda un largo camino por recorrer. Como siempre este tutorial ha sido desarrollado, probado y documentado por el equipo de Como Lo Hago, por lo que cuenta con nuestro Sello de Garanta. Cualquier consulta o problema que puedan tener, no duden en dejarnos unas lneas a continuacin. Esperamos que este tutorial haya sido de utilidad para Uds.

Es la hora, es la hora!, es la hora de seguir programando.


Tal como lo prometimos, ahora les traemos la cuarta parte de esta gua que est sacando chispasmuchos esperaban, en la cual seguiremos viendo el maravilloso mundo de la programacin de una manera sencilla. Continuaremos justo desde donde terminamos la ltima vez, as que sin ms que decir, los esperamos despus del salto. Cmo aprender a programar y no morir en el intento Parte 4 Nota: Si es primera vez que entran en estos tutoriales, les recomendamos leer las partes anteriores para estar al da con lo que ya hemos cubierto:

Parte 1. Parte 2. Parte 3.

Y tal como es costumbre, partiremos por revisar los contenidos de esta edicin: Contenidos: 1. Iteraciones condicionales mltiples y uso de ms de una condicin. 2. Switch: Otra iteracin condicional. 3. Ciclos o bcles. As que sin ms que decir, manos a la obra:

1.- Iteraciones condicionales mltiples y uso de ms de una condicin.


En la edicin anterior de esta saga, comenzamos a ver lo que son las iteraciones condicionales y como aplicarlas cuando dentro de un programa necesitamos tomar un camino u otro, en su mayora mutuamente excluyente, a partir de una condicin dada. La simpleza de su utilizacin pudimos apreciarla a travs de los ejercicios resueltos. Pero la programacin, como la vida, siempre se complica, y eso es lo que haremos ahora. En los ejercicios anteriores hicimos uso de condiciones excluyentes para las iteraciones, o sea, algo como Si se da esta condicin, haga esto, si no, haga esto otro, lo cual es bastante sencillo de entender y aplicar. Sin embargo, cuando estemos realizando programas a ms alto nivel comunmente nos encontraremos con situaciones donde debamos evaluar multiples iteraciones, como por ejemplo Si se da esta condicin, haga esto, si no se da, pero se da esta otra, haga esto y si no se da ninguna de las 2, haga esto otro. Con palabras es algo complicado, pero viendo segn sentencias, sera algo as:

Si sentencia Si Si(condicin) sentencia Si sentencia 3;

(condicin) 1; no 2; no

Ahora, tal como mencionamos en el tutorial anterior, dentro de un Si, pueden ir una infinidad de Si y Si no, lo mismo dentro de un Si no. Sin embargo, lo nico que debemos recordar es que siempre un Si no debe ir precedido de un Si. Teniendo eso claro, Qu pasa ahora si dentro de nuestro Si debemos evaluar ms de una condicin o bien una de 2 posibles?. Ah es donde empezamos a utilizar el concepto de ms de una condicin. Dentro de un Si, podemos evaluar el nmero de condiciones que nosotros queramos, utilizando los operadores && para y, y || para. Por ejemplo, si dentro de un Si necesitaramos evaluar la condicin de que una persona tuviese ms de 18 aos y su nombre fuera Juan, utilizaramos algo como esto:

Si sentencia Si sentencia 2;

(edad

>

18

&&

nombre==Juan) 1; no

Por otro lado, si quisieramos evaluar alguna de las 2 condiciones como ciertas, bien que su edad sea mayor a 18, o su nombre fuese Juan, haramos algo como esto:

Si sentencia Si sentencia 2;

(edad

>

18

||

nombre==Juan) 1; no

De esta forma, mediante esos operadores, podemos evaluar una serie de condiciones, tanto excluyentes, como adherentes. Esta evaluacin puede mezclarse con iteraciones mltiples, segn lo necesitemos.

2.- Switch: Otra iteracin condicional.


A pesar de que el Si y Si no (if y else en los lenguajes reales) es la iteracin condicional ms utilizada, existe una bastante til al momento de evaluar distintos escenarios dentro de un programa, la cual es el famoso Switch, el cual evala el valor de una variable y a partir de ese valor presenta distintas sentencias a partir de posibles casos que se puedan dar. Su funcionamiento es bastante parecido a la iteracin anterior, pero en este caso lo que basicamente se hace es:

Evaluacin de la variable:

Si Sentencia

la

variable

es

x: 1;

Salir; Si Sentencia Salir; Si Sentencia Salir;

la

variable

es

y: 2; z: 3;

la

variable

es

Dentro de una iteracin condicional Switch, podemos presentar todos los escenarios que deseemos. Lo nico a tener en consideracin es que debemos conocer todos los posibles valores que pueda tomar la variable para as plantear sus posibles desenlaces. Adems incluimos una nueva sentencia: Salir. Esta es utilizada debido a que por defecto, una iteracin condicional de tipo Switch recorre siempre todos los posibles escenarios (a pesar de que no ejecuta las sentencias correspondientes a escenarios donde el valor no corresponde), por lo que al agregar Salir, ejecutar las sentencias correspondientes y luego saldr de la iteracin, ahorrando tiempo de ejecucin. Adicionalmente es bueno aadir un escenario de tipo defecto (default en los lenguajes reales de programacin), al cual se ingresar si el valor ingresado en la variable no corresponde a ninguno de los escenarios posibles planteados. Esto quedar mucho ms claro ms adelante cuando Las iteraciones condicionales de tipo Switch son especialmente ideales al momento de plantear mens dentro de un programa, ya que el usuario ingresar una opcin y conoceremos todos los posibles valores para plantear sus sentencias. Existen una gran cantidad de casos donde podemos utilizar Si y Si no, o Switch, eso depender del gusto de cada uno. Sin embargo en algunos casos no podremos utilizar Switch, ya que la evaluacin de valor se debe hacer con comparaciones exactas (Si el valor es igual a 1 por ejemplo) y no comparaciones mediante operadores (Si el valor es mayor a cierto valor). Veamos ahora un ejemplo para que todo esto quede ms claro. Utilizaremos un Switch (llamndolo evaluar) para determinar opciones de un men. (comentarios en negrita, cursiva y entre /* y */).

Inicio /* Damos inicio al programa */

Numero opcin; Letra nombre; /* Declaramos una variable de tipo nmero y de nombre opcin la cual utilizaremos para que el usuario ingrese la opcin del men a la cual quiere ingresar, y tambin una variable de tipo letra y de nombre nombre la cual usaremos dentro de las opciones del men como ya veremos. */

Principal( ) { /* Definimos la funcin Principal que es donde ir el cuerpo del programa, adems abrimos parentesis de llaves para incluir dentro todo lo concerniente a esta funcin. Ya adentraremos el tema de las funciones. */

mostrar(Seleccione mostrar(1.-

una Ingresar

opcin: usuario

\n); \n);

mostrar(2.Borrar usuario \n); mostrar(3.Listar usuarios \n); /* Mediante la sentencia mostrar, desplegamos un mensaje en pantalla para que el usuario sepa que debe ingresar su opcin y luego vamos mostrando las opciones con la misma opcin. Utilizamos \n para indicarle al programa que haga un salto de lnea */

leer(%numero, opcion); /* Mediante la sentencia leer, recabamos el dato que quiere ingresar el usuario. A leer le damos como parmetro primero el tipo de valor que queremos recolectar, o sea nmero con un % antes para acostumbrarnos al formato de lenguajes reales y luego le damos la variable donde almacenaremos el valor, o sea, opcion */

evaluar(opcion) { /* Llamamos a la iteracin evaluar y le damos como parmetro el dato en el cual nos basaremos, o sea, opcion, luego abrimos llaves para dar inicio al contenido de la iteracin */

caso 1: mostrar(Ingrese el nombre del usuario: ); leer(%letra,nombre); . salir; /* Definimos el caso 1, que es decirle al programa en caso de que la evaluacin nos diga que la opcin seleccionada fue 1, haga esto y luego definimos las sentencias a ejecutar, finalizando con salir, tal como lo explicamos anteriormente. /* caso 2: mostrar(Ingrese el nombre del usuario a borrar: ); leer(%letra,nombre); salir; /* Luego definimos el caso 2, tal como el anterior */ caso 3: . salir; /* A continuacin el caso 3 */ mostrar(Los usuarios son: );

caso defecto: mostrar(Seleccion una opcin no vlida); salir; /* Y finalmente el caso defecto en caso de que haya seleccionado una opcin no definida para el men. Luego de esta ltima definicin, cerramos el parntesis de llave correspondiente a la iteracin evaluar y el parntesis correspondiente a la funcin principal, y finalizamos el programa mediante Fin. */ } } Fin

Como podemos ver, hemos utilizado el nuevo tipo de iteracin y definido todos sus posibles escenarios. Tal como indicamos anteriormente, en las iteraciones de este tipo solo podemos evaluar valores fijos y no hacer comparaciones mediante operadores. Esto nos dar la pauta sobre que tipo de iteracin utilizar para cada caso. Hora de pasar al ltimo punto del tutorial de hoy:

3.- Ciclos o Bcles


Un aspecto importantsimo de la programacin, es el uso de ciclos o bcles, los cuales son utilizados en el 99,9% de los programas de alto nivel, ya veremos porque. Hasta este momento, hemos desarrollado una serie de programas donde damos inicio, ejecutamos algunas sentencias de forma ordenada, secuencial y estructurada y los finalizamos. Con los conocimientos que poseemos hasta este punto, si quisieramos ejecutar una operacin un determinado nmero de veces, tendramos que definir una lnea para cada vez que queramos ejecutar la operacin, lo cual si el nmero de repeticiones es largo, se convertira en una operacin tediosa y tendramos un programa con un gran nmero de lneas. Para economizar este proceso y hacer todo mucho ms sencillo es que aparecen los ciclos, los cuales nos permiten ejecutar una sentencia un nmero de veces que nosotros determinemos a partir de una condicin dada. Existen 3 ciclos comunes que se utilizan, cada uno de ellos con caractersticas especiales e ideales para cierto tipo de usos:

1. 2. 3.

Mientras (o while en los lenguajes reales): Se ejecuta si es que la condicin dada se cumpla y correr tantas veces segn se respete esa condicin. Haga Mientras (o do-while en los lenguajes reales): Se ejecuta tantas veces segn se respete la condicin dada. A diferencia del Mientras, este ciclo se ejecuta al menos una vez. Para (o for en los lenguajes reales): Se ejecuta si es que la condicin dada se cumple inicialmente y mientras se siga cumpliendo. A diferencia de los 2 anteriores, en sus parmetros definimos todas las condiciones necesarias.

Las diferencias quedarn claras en los ejemplos que daremos ms adelante. Tal como en el caso de las iteraciones condicionales, existen situaciones ideales para el uso de cada uno de ellos. Sin embargo, hay una serie de casos donde podemos usar cualquiera de ellos de forma eficiente. Ahora, cuando usamos un ciclo, debemos definir ciertas cosas, como: 1. Una variable a utilizar en la condicin que definir la duracin del ciclo, la cual puede ser definida por nosotros o por un dato ledo desde teclado. 2. Un valor inicial para esa variable, una vez ms, definido por nosotros o por el usuario. 3. Una condicin para evaluar esa variable y que definir la duracin de la ejecucin del ciclo. 4. Una instancia de cambio de la variable. Esta instancia, debe ir modificando el valor de la variable para que en algn momento cumpla la condicin que define la duracin del ciclo, de lo contrario, el ciclo se ejecutar infinitamente. La diferencia entre cada tipo de ciclo se ve principalmente en la forma en que definimos y utilizamos las cosas de la lista anterior. Veamos unos ejemplos para que esto quede ms claro: Haremos un programa donde enumeremos del 1 al 100, utilizando los 3 tipos de ciclos descritos con anterioridad. (comentarios en negrita, cursiva y entre /* y */ )

Inicio /* Damos inicio al programa */

Numero num=1; /* Declaramos una variable de tipo Numero y nombre num, y le damos el valor inicial 1, que es desde donde partiremos a enumerar */

Principal( ) { /* Definimos la funcin Principal que es donde ir el cuerpo del programa y abrimos llaves. Ya adentraremos el tema de las funciones */

mientras(num<=100) { mostrar(%numero, num++; }

num);

/* Definimos un ciclo de tipo mientras y le decimos que la condicin es que se ejecute mientras num sea menor o igual a 100, dentro de el mediante la sentencia mostrar desplegamos el valor actual de la variable y luego con el operador de incremento lo aumentamos en uno y se vuelve a ejecutar. De esta forma la primera vez que entre mostrar 1 y luego ir aumentando y mostrando hasta que llegue a 100 */

haga { mostrar(%numero, num); num++; }mientras(num<=100); /* Ahora hacemos la misma operacin pero usando un ciclo de tipo haga-mientras. Definimos las mismas operaciones pero a diferencia del caso anterior, ahora declaramos la condicin al final. Como requisito de este tipo de ciclos, el mientras del final debe ir con un punto y coma al final. Recordemos que este ciclo se ejecutar al menos una vez */

para(num=1;num<=100;num++) { mostrar(%numero, num); } /* Y finalmente hacemos el mismo proceso con un ciclo de tipo para. La diferencia con los 2 anteriores es que ahora dentro de sus parametros establecemos toda las condiciones para la ejecucin de este ciclo. Partiendo por un valor inicial para num, en este caso 1, la condicin de duracin que es mientras sea menor o igual a 100 y el incremento para que se cumpla esta condicin. Dentro del ciclo solo ponemos la sentencia mostrar porque ya hemos definido lo dems */

Fin Como podemos ver, hemos declarado la misma operacin mediante 3 ciclos distintos. Cada uno de ellos desplegar el mismo resultado, los nmeros de 1 a 100, pero la forma en que definimos estos ciclos es diferente. Con ms prctica podremos ir viendo que tipo de ciclo es adecuado para que situacin. Idealmente a la sentencia mostrar en los 3 casos podramos haberle aadido un salto de lnea, porque como esta declarado mostrar los nmeros uno al lado del otro. Como es un ejemplo no es necesario que lo definamos. Es bueno aadir que dentro de un ciclo, cualquiera de ellos, podemos definir todas las operaciones que estimemos conveniente, incluidas iteraciones condicionales y todo lo que hemos visto hasta ahora como muestra de datos, lectura de datos de teclado, etc. Adems es bueno tambin recordar que todo ciclo debe tener un fin, por eso debemos ser cuidadosos al momento de definir las condiciones de duracin, ya que un ciclo que corr eternamente matar nuestro programa. Tal como debemos definir cuidadosamente el fin, un punto a considerar es que un ciclo no necesariamente debe siempre ejecutarse, es por eso que definimos la condicin de inicio y duracin. Por ejemplo, podemos condicionar el inicio de un ciclo a que cierta variable porte cierto valor y en caso de que no lo tenga, el ciclo nunca se ejecute. El trabajo con los ciclos puede presentar cierta complejidad en sus inicios, pero a medida que vayamos avanzando se ir simplificando. Con esto cerramos la lista de contenidos de esta edicin del tutorial, definiendo que para el prximo nmero, veremos: 1. Introduccin a los arrays o arreglos. 2. Arreglos unidimensionales: Vectores. 3. Arreglos bidimensionales: Matrices. Todo a la misma batihora, en el mismo baticanal. Como siempre, este tutorial ha sido desarrollado, probado y documentado por el equipo de Como Lo Hago, por lo que cuenta con nuestro Sello de Garanta. Cualquier duda, problema o comentario, pueden dejarnos unas lneas en el rea habilitada a continuacin. Esperamos que este tutorial haya sido de utilidad para Uds.

Lo prometido es deuda, as que llegamos con una nueva edicin de esta gua en la que Como Lo Hago intenta ayudarlos a adentrarse al mundo de la programacin de la mejor manera posible. En esta edicin, cubriremos las ltimas temticas relativas a programacin en pseudo-cdigo para ya a partir de las prximas entrar de lleno en los lenguajes reales. Todo el detalle, como siempre, despus del salto. Cmo aprender a programar y no morir en el intento Parte 5 Como es habitual, veamos lo que cubriremos en esta ocasin: Contenidos

1.- Introduccin a los arrays 2.- Vectores 3.- Matrices


As que con todo especificado, vamos, a seguir aprendiendo: Introduccin a los arrays Hasta ahora, todos los datos con los que hemos trabajado los hemos almacenado en variables, las cuales entre sus caractersticas podemos indicar que son capaces de almacenar un valor simple, o sea un nmero (de uno o ms dgitos) o un carcter (o cadena de ellos) o un valor booleano. De cualquier forma siempre almacenan solamente un y nada ms que un valor a la vez. Pero, qu pasa si es que necesitamos almacenar ms de un valor?. Podramos usar ms variables, sin embargo, cuando los valores necesarios de almacenar son 10 o ms, disponer de tantas variables, y ms importante an, recordar sus nombres y manipularlas, puede ser bastante engorroso. Para esto es que en la programacin disponemos de los arrays o arreglos, los cuales son variables que nos permiten almacenar ms de un valor del mismo tipo y manipularlos, todo dentro de la misma variable. Comunmente en los lenguajes de programacin, los arreglos solo pueden contener mltiples valores del mismo tipo y hasta una longitud finita indicada al momento de su declaracin. Sin embargo, en algunos lenguajes especificos, existen tipos de arrays que no se apegan a estas reglas (ya sea almacenando valores de distinto tipo o siendo dinmicos, o sea, creciendo a medida que decidimos almacenar un nuevo valor en ellos). Los arreglos pueden ser unidimensionales o bidimensionales. Los primeros en la programacin son conocidos como vectores, y los segundos como matrices. Independiente de su dimensionalidad, los arrays deben cumplir con ciertas caractersticas, algunas similares a las variables que hemos visto hasta ahora y otras no tanto.

1.-

Nombre: Todo array debe tener un nombre, el cual debe cumplir con las mismas caractersticas de los nombres de

variable, o sea, debe ser nico, no debe ser una palabra reservada del lenguaje, ni empezar con nmeros, guiones o underscores (pueden llevar alguno de los 3 ltimos entremedio).

2.- Tipo: Todo array debe tener un tipo, que corresponde al tipo de valores que se podrn almacenar en el. Pueden ser los
mismos tipos que para las variables vistas hasta ahora.

3.-

Posicin: Aqu entra la diferencia. Para facilitar la visualizacin, imaginmonos que una variable comn y corriente es

una cajn en el que guardamos algo. Ahora, cuando pensamos en un array, pensemos que es una cajonera, con un nmero de cajones, dentro de los cuales se pueden almacenar varias cosas. Cada uno de estos cajones corresponde a una posicin del array. Cada posicin es como si fuera una variable dentro del array y almacena un valor. Despus cuando queramos rescatar ese valor, se accede a la posicin necesaria.

Veremos algunos esquemas ahora que especificaremos los tipos de arrays. Vectores Los vectores en la programacin, son arrays unidimensionales en los cuales se pueden almacenar mltiples valores (finitos) y que cuentan con las caractersticas anteriormente definidas. Para declarar un vector, en pseudocdigo, lo hacemos de la siguiente forma:

Numero vector[5];

Tipo nombre[largo]; El largo indicara cuantas posiciones tendr el vector, y por ende, cuantos datos se podrn almacenar. Antes de seguir, debemos hacer una salvedad. En el mundo de la computacin, siempre se empieza a contar desde el cero y no el uno. Eso debemos tener en cuenta cuando queramos acceder a una posicin, ya que estaremos accediendo al nmero correspondiente a si empezramos a contar desde el cero. Por ejemplo, con ese vector que recin declaramos, tendramos algo como esto:

Si nos fijamos, a pesar de ser un vector de largo 5, sus posiciones van desde el 0 a la 4, siendo estas a las que debemos acceder si queremos recuperar la informacin almacenada ah. Para almacenar valores en un vector los asignamos de la misma forma que a una variable comn y corriente, a diferencia de que ahora debemos indicar el indice correspondiente a la posicin donde almacenaremos el valor, por ejemplo, si queremos almacenar el valor 2 en la tercera posicin de un vector de 5 posiciones:

Vector[2]=2; Y si queremos leer el valor de un vector, lo hacemos de la misma forma. Por ejemplo, si queremos comprobar un valor en un Si:

Si(vector[2]==2) Tanto para ingresar datos, como para leerlos, una operacin comn es recorrerlos mediante ciclos, ya sea con un ciclo de tipo Mientras o uno de tipo Para. Al hacer esto, declaramos una variable para utilizar como indice, la cual se ir moviendo a lo largo del vector. Por ejemplo, si quisieramos llenar un vector con nmeros iguales a su indice, haramos algo como esto, asumiendo que el vector es de largo 5:

i=0;

mientras(i<5) { vector[i]=i;

i++; } Si en vez de ingresar datos, quisiramos leerlos, lo hacemos de la misma forma. Para resumir, veamos un ejemplo. En este caso lo que haremos ser declarar un vector, decirle al usuario que llene los valores para sus posiciones y luego las mostraremos por pantalla.

Inicio

Damos inicio al programa

Numero vector[5];

Numero i=0;

Declaramos el vector y la variable que utilizaremos como ndice para recorrerlo.

principal()

mientras(i<5) {

Mediante un ciclo mientras, le mostramos un mensaje al usuario para que ingrese el valor correspondiente a la posicin del vector y luego leemos el dato.

mostrar(Ingrese el valor leer(vector[i], i++; i=0; } mostrar(Los valores ingresados fueron: );

%numero

del

vector,

i); &numero);

Mostramos el mensaje avisando que desplegaremos los valores.

mientras(i<5) {

Dentro de un ciclo mientras, mostramos todos los valores almacenados en el vector.

mostrar(%numero, i++; }

vector[i]);

Fin Trabajar con vectores lleva un poco de costumbre, pero con prctica nos veremos utilizndolos ms y ms a menudo y viendo como nos facilitan todo. Matrices Al igual que los vectores, las matrices son arrays. Sin embargo, a diferencia de ellos, son bidimensionales, o sea operan en 2 dimensiones, a las cuales nos referiremos como filas y columnas, como si fueran una especie de tabla. Algo as:

Para declarar una matriz se hace igual que un vector, pero ahora en vez de indicar el largo, debemos indicar el nmero de filas y el nmero de columnas. Como ejemplo:

Numero matriz[4][4]; Esa es una matriz cuadrada, de 4 filas y 4 columnas. No es necesario que siempre tengan el mismo nmero de filas y de columnas. Al igual que en el lgebra, pueden variar. Para el proceso de ingreso de datos en una posicin de la matriz, debemos indicar su posicin relativa con respecto a filas y columnas. Por ejemplo, si quisieramos almacenar el valor 8 en la segunda fila y primera columna, diramos algo como esto:

matriz[1][0]=8; Al igual que en los vectores, cuando queremos ingresar o leer mltiples datos, hacemos uso de ciclos. La diferencia ahora es que para las matrices debemos utilizar 2 ciclos, uno que recorra las filas y otro las columnas. Sera ejemplificado algo as, con una matriz de 4 x 4 y llenando todas sus posiciones con un 8:

i=0;

j=0;

mientras(i<4) {

mientras
{

(j<4)

Matriz[i][j]=8; j++: } i++; } Para recorrer sera el mismo proceso, pero en vez de ingresar datos, los leemos. Veamos ahora un ejemplo, donde primero declararemos una matriz, luego le diremos a un usuario que ingrese valores y finalmente los mostraremos:

Inicio

Damos inicio al programa.

Numero Numero Numero j=0;

matriz[4][4]; i=0;

Declaramos la matriz y las variables que utilizaremos para recorrerlas.

Principal()

mientras(i<4) { mientras(j<4) {

Dentro de los 2 ciclos necesarios para recorrer filas y columnas en la matriz, mostramos un mensaje para que ingresen un valor a esa posicin y luego lo leemos.

mostrar(Ingrese el valor correspondiente a la fila %numero y la columna %numero,i,j); leer(%numero, &matriz[i][j]); j++; } i++; }

i=0;

j=0;

mostrar(Los valores ingresados son: );

Avisaremos que mostraremos los valores

mientras(i<4) { mientras(j<4) {

Mostramos los valores recorriendo la matriz con los 2 ciclos necesarios.

mostrar(%numero,matriz[i][j]); j++; } i++; }

Fin Como podemos apreciar, es un proceso bastante sencillo. La mayor complejidad se presente en poder entender el tema de los ndices, pero una vez que lo logramos, todo se vuelve muy simple. Con este ultimo tema estamos llegando al final de esta edicin, en la cual hemos cubierto el tema de los arrays por completo, desde sus declaraciones hasta usos variados. En la prxima edicin:

1.- Funciones 2.- Ultimas consideraciones de Pseudo-codigo 3.- Entrando a un lenguaje real. 4.- Mas sobre los paradigmas de programacin.
Y recuerden que como siempre, este tutorial ha sido desarrollado, probado y documentado por el equipo de Como Lo Hago, por lo que cuenta con nuestro Sello de Garanta. Cualquier duda pueden consultarnos en el rea habilitada a continuacin. Esperamos que este tutorial haya sido de utilidad para Uds.

Continuando con nuestra interminable reconocida y solicitada saga orientada a quienes se empiezan a adentrar al mundo de la programacin, hoy les traemos una nueva edicin, realmente la ltima que veremos sobre Pseudo lenguajes y adems las ltimas consideraciones previas a la entrada a los lenguajes reales. Todo el detalle, como siempre, despus del salto. Cmo aprender a programar y no morir en el intento Parte 6 Nota: Tal como dice el ttulo, esta es la 6ta parte de estas guas. Para un completo entendimiento, recomendamos, si no lo han hecho, leer las partes anteriores, las cuales pueden ser encontradas en lacategora de Programacin de nuestros tutoriales. Con eso claro, veamos los contenidos que cubriremos hoy: Contenidos: 1. 2. 3. 4. Funciones. Ultimas consideraciones sobre Pseudo-cdigo. Entrando a un lenguaje real. Ms sobre los paradigmas de programacin.

Como pueden apreciar, hay harto que cubrir, as que vamos directo a eso:

1.- Funciones.
El ltimo tema que cubriremos sobre programacin en pseudo-cdigo 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 ms en la programacin. Intentaremos simplificar este tema lo que ms podamos. De cualquier forma, a pesar de la complejidad que puede presentar, no se preocupen si no lo entienden a la perfeccin en un comienzo, ya que a medida que vayamos viendo los ejemplos y en otros contenidos ms avanzados iremos comprendiendo bien este tema. Hasta ahora, cada vez que escribamos un programa y dentro de el necesitbamos tener procedimientos de clculo o manipulacin de datos, los escribamos lnea por lnea estructuradamente dentro del principal de nuestro programa, algo as:

Definicin de Operacin Operacin Operacin Asignacin de resultados

variable

asignacin

de

valor 1 2 3

Si las operaciones anteriores las necesitamos utilizar ms de una vez o para distintas variables, adicionalmente podamos aadirlas 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 operacin es de una sola lnea, como una operacin matemtica 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 lneas de cdigo, es cuando el tema se vuelve mucho ms complejo y engorroso, ya que nuestros programas empiezan a aumentar de tamao y ser mucho ms 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 parmetros que les entreguemos, y a la vez dndonos la opcin de retornarnos un valor que puede ser constante o variable dependiendo de los resultados de las operaciones y clculos internos de la funcin. La programacin est compuesta fundamentalmente de funciones, y hasta ahora, a travs 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 funcin, es la que contiene los contenidos principales del programa que escribimos, valga la redundancia. A esa funcin no le entregamos ningn tipo de parmetros 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 economa. El uso de funciones nos permite no tener que repetir operaciones segn el nmero de veces que las vayamos a necesitar y en vez de eso solo definirlas una vez y llamarlas cuando sea necesario. Eso tambin implicar que nuestro programa sea mucho ms liviano al momento de ejecutarse. Existen una serie de otras ventanas que iremos descubriendo ms adelante. Las funciones se escriben fuera de la funcin principal (normalmente por orden, se escriben despus) y se definen de acuerdo a la siguiente estructura:

tipo { operacin

nombre_funcin(parmetro

1,

parmetro

2,

etc.) 1;

operacin sentencia sentencia 2;

2; 1;

retorno de variable; } Donde:

1.

Tipo: Detalla el tipo de valores que devuelve la funcin. Estos tipos pueden ser los mismos que los de las variables, los cuales han sido especificados en los nmeros anteriores de esta saga. Sin embargo, no hay que confundirse, ya que por el hecho de que una funcin sea de un determinado tipo, no significa que dentro de las operaciones no puedan declararse y usarse variables de otros tipos, solo debemos fijarnos que las variables que retornamos si lo sean. Se debe definir un tipo para la funcin obligatoriamente. Nombre de la funcin: Es un nombre nico, tal como si estuvisemos definiendo una nueva variable. El nombre de la funcin puede ser cualquiera, pero es recomendable, por orden, darle un nombre adecuado. Por ejemplo si definimos una funcin que encuentre el nmero mximo entre una serie de valores, es recomendable nombrar a esa funcin como numero_maximo. De esa forma, siempre podremos ver que hace cada parte de nuestro programa rpidamente cuando lo estemos revisando. Parmetros: Tal como hemos definido en distintas partes de esta saga de tutoriales, los parmetros que recibe una funcin son los que utilizar para operar dentro de ella y devolver resultados. Normalmente las operaciones declaradas en una funcin son procedimientos estndar que varan dependiendo de los valores que manejamos. En una funcin podemos recibir mltiples parmetros y estos pueden ser de distintos tipos, solo debemos asegurarnos de escribir primero el tipo y luego el nombre de ese parmetro, tal como si definiramos variables. Estos nombres no pueden repetirse dentro de la funcin. Operaciones y sentencias: Bsicamente podemos hacer lo mismo que hacemos dentro de nuestros programas, ya sea usar operadores matemticos, iteraciones condicionales, ciclos, mostrar, leer, etc. Todo est permitido. Valor a retornar: Esto es opcional, una funcin puede o no retornar un valor, ya que muchas veces el resultado podemos mostrarlo directamente en pantalla con la funcin mostrar. Si decidimos devolver un valor, lo hacemos mediante la sentencia retornar junto al valor o variable que enviemos. Solo debemos recordar que el valor o variable retornado tiene que coincidir con el tipo de la funcin.

2.

3.

4. 5.

Con toda la definicin ya ms clara, veremos un ejemplo de declaracin y uso de funciones: Ejemplo: Realizaremos un programa en donde crearemos una funcin que defina que nmero es mayor entre 2 entregados como parmetros. Los comentarios, como siempre, en negrita, cursiva y entre /* y */:

Inicio /* Damos inicio al programa */

Numero num1, num2, mayor; /* Declaramos 3 variables de tipo Nmero: num1 y num2 que sern 2 nmeros que el usuario ingresar por teclado, y mayor, que ser donde se almacenar el nmero mayor despus de que la funcin nos devuelva el resultado */

principal { /* Declaramos la funcin principal del programa */

mostrar(Por favor ingrese el nmero 1: ); leer(%numero, &num1); mostrar(Por favor ahora ingrese el nmero 2: ); leer(%numero, &num2); /* Mediante mostrar y leer, recibimos por teclado los 2 nmeros ingresados por el usuario */

mayor=numero_mayor(num1, num2); /* A la variable mayor, le asignamos el resultado de llamar a la funcin numero_mayor, especificada luego de la funcin principal, pasndole como parmetros las variables num1 y num2 */

mostrar(El nmero mayor de los que ingreso es: %numero, mayor); /* Nuestra variable mayor ya recibi el resultado de la funcin, as que lo desplegamos */ }

numero numero_mayor(numero valor1, numero valor2)

/* Declaramos una funcin de tipo numero, llamada numero_mayor y que recibe como parmetro
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 iteracin condiciional, hacemos una comparacin entre los 2 nmeros 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 programacin. Hay un importante concepto que hemos utilizado ahora, pero que detallaremos ms en profundidad cuando estemos hablando de lenguajes reales, que es el paso de parmetros desde una funcin a otra (lo que hicimos cuando llamamos a la funcin y lo que esta recibe por el otro lado). Por ahora no vale la pena entrar en esos detalles, pero ya los veremos ms 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 ms complejos a medida que vayamos programando ms y ms. Por ahora es una buena tcnica ir combinando los otros contenidos que hemos visto en los captulos anteriores con esto e ir practicando. Por ahora, al siguiente tema.

2.- ltimas consideraciones sobre el Pseudo-cdigo:


En estos momentos que estamos llegando al final de nuestra cobertura sobre el pseudo-cdigo 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 programacin real, y por ende, lo que hemos cubierto hasta
ac no lo encontrarn 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-cdigo, si no que entendamos como se desarrollan los procedimientos en la programacin y como plantearnos soluciones a los problemas mediante el entendimiento de la estructura de los programas.

2.-

El pseudo-cdigo, 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 opcin natural para seguir. Veremos ms de esto en el prximo punto.

3.- Lamentablemente, al no tratarse de un lenguaje real, no existe ningn 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 cdigo y detectar errores, algo que nos servir de sobremanera ms 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 pequea parte de todo lo que comprende la programacin, hasta ahora hemos visto las bases fundamentales para entender los lenguajes reales y todo el resto de aplicaciones dentro de la programacin, por lo que entender de la mejor manera estas bases ser esencial para que la enseanza no se complique ms adelante.

3.- Entrando a un lenguaje real:


Ahora que hemos de alguna forma terminado con el pseudo-lenguaje ha llegado un momento importante: Decidir el lenguaje de programacin que empezaremos a aprender. Esta decisin no es sencilla, y depende de varios factores, entre ellos el paradigma de programacin, la facilidad del lenguaje, la extensibilidad y funcionalidades, actualizacin con los tiempos e incluso preferencia personal entre muchas otras razones. Al momento de elegir debemos tomar esas consideraciones, aunque tambin fijarnos en otras como la documentacin disponible, grupos de usuarios y todo lo que nos pueda apoyar a que el aprendizaje sea ms 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-cdigo que hemos visto y porque ambos comparten el mismo paradigma estructurado, con lo que la transicin se hace mucho ms sencilla y as es posible pasar a otros lenguajes con mayor facilidad en el futuro. As que preprense, que para all vamos.

4.- Ms sobre los paradigmas de programacin:


Tal como veamos en este tutorial, actualmente existen 4 paradigmas comunes de programacin, como son (ojo que son definiciones bsicas, para que nos hagamos la idea de cada uno):

1.

Paradigma estructurado: Es el paradigma que hemos estado viendo hasta ahora con el pseudo-lenguaje y que luego veremos con C. Este paradigma, como su nombre lo indica, expresa una declaracin y funcionamiento estructurado para sus programas, en donde desde arriba a abajo en una misma plantilla de programa debe estar el inicio, la declaracin de las variables del programa y las funciones (la principal y otras funciones). Todo definido desde su inicio a su final. Adems, los lenguajes estructurados se enfocan principalmente en el tratamiento de datos, recibindolos, operando con ellos y mostrando resultados. No tienen ms profundidad que eso. Paradigma orientado a objeto: A diferencia del estructurado, en este paradigma, todo se trata como un objeto, cada uno de ellos con atributos, tal como si hablramos de objetos del mundo real. Los lenguajes de POO (programacin orientada a objetos), operan mediante distintas clases, que son plantillas que determinan el comportamiento de un objeto. Pueden haber clases donde se determine un objeto, sus atributos y los mtodos (parecido a las funciones) que se aplican a ellos y otras clases donde solo se encuentre el mtodo principal (como la funcin principal). Este es un paradigma mucho ms complejo que no queremos detallar por ahora para no confundirnos, porque el paso desde un lenguaje estructurado a uno POO complica al principio, pero no se preocupen, ya lo veremos. Paradigma orientado a eventos: En este paradigma se habla de lenguajes que dentro de un programa, presentan una serie de acciones que estn siempre listas y se encuentran en espera para dispararse de acuerdo a un evento que ocurra (normalmente ejecutado por un usuario). Por ejemplo, tenemos programas como Word o Excel, que en sus mens y botones cuentan con mltiples mini-programas listos para ejecutarse cuando el usuario presione el botn o seleccione el men. Por ahora no adentraremos ms en esto, por las mismas razones el caso anterior. Paradigma orientado a aspectos: Este es un paradigma que actualmente se encuentra bajo investigacin, por lo que no hay gran informacin disponible. Decidimos mencionarlo ms por ancdota que por cubrirlo propiamente tal. Quizs cuando estemos en nmeros futuros de esta saga podamos ir adelantando ms informacin.

2.

3.

4.

Con esto podemos tener un poco ms claro por qu existen distintos lenguajes de programacin 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 programacin. En la prxima edicin: 1. 2. 3. 4. Introduccin al lenguaje C. Variables en C. Funciones bsicas. Iteraciones condicionales.

Como siempre recuerden que este tutorial ha sido:

Esperamos que este tutorial haya sido de utilidad para Uds.

En la ltima edicin de esta saga, dimos por concludo el aprendizaje de Pseudo-cdigo, un paso importante al momento de aprender a programar. Tan importante como el que prometimos que daramos ahora, el ingreso al mundo de los lenguajes reales de programacin. Hoy, y en las prximas ediciones, nos adentraremos de lleno en la programacin en C, donde intentaremos cubrir todo lo posible para que podamos convertirnos en unos aces de la programacin. Todo el detalle, como siempre, despus del salto. Cmo aprender a programar y no morir en el intento Parte 7 Viendo que ahora ingresaremos a la programacin propiamente tal, es bueno indicar los:

Implementos necesarios:

1.

Un entorno de programacin en C (recomendamos Dev C/C++ de Bloodshed, un buen entorno de programacin que adems es gratuito. Ese es el que utilizaremos a travs de los siguientes tutoriales. Pueden descargarlo en este enlace).

Con todo eso claro, vamos a los contenidos que cubriremos hoy: Contenidos: 1. 2. 3. 4. 5. Introduccin al lenguaje C. Libreras. Variables en C. Funciones bsicas. Primer programa en C.

1.- Introduccin al Lenguaje C:


Nota: La instalacin del entorno de programacin, hemos decidido no cubrirla, ya que es bastante estndar en lo que a instalaciones de programas se refiere. Les recomendamos hacer la instalacin de forma normal, dndole siguiente en las ventanas y dejando las opciones que vienen por defecto. Ms adelante indicaremos si es necesario hacer cambios sobre esto. Y bueno, llegamos al momento que tanto esperabamos: Empezar a trabajar con lenguajes reales de programacin. Para comenzar, hemos optado por el lenguaje C, debido a que por su forma y paradigma, es un buen y simple lenguaje para continuar el aprendizaje. Adems, como iremos viendo a medida que nos adentremos en los siguientes capitulos, tiene mucha similitud con el Pseudo-cdigo que hemos visto hasta ahora. C es un lenguaje de programacin que fue creado en 1972 en los laboratorios Bell. Utiliza un paradigma estructurado (tambin denominado como imperativo y/o procedural) y presenta una eficiencia notable en su cdigo, adems de caractersticas de bajo nivel que permiten controlar algunos aspectos de memoria y perifericos, por lo que se convierte en la eleccin favorita e idnea al momento de desarrollar aplicaciones e incluso desarrollos para Sistemas Operativos. Los programas desarrollados en C, presentan una estructura bastante similar a la que habamos visto hasta el momento en Pseudo-cdigo, con algunas adiciones (como las libreras, que ya veremos) y uno que otro cambio, sobretodo en las palabras reservadas y algunas formas de definir cosas. Todo esto lo iremos viendo a su debido tiempo. En resumen, algunos puntos a considerar para el futuro: Los programas en lenguaje C, se escriben en entornos de programacin, en realidad si queremos podemos escribirlos en block de notas, pero los entornos de programacin presentan funcionalidades que nos hacen la vida mucho ms fcil, desde la deteccin de errores hasta la orientacin sobre algunas palabras reservadas y/o comandos. En C, tal como en otros lenguajes, al momento de terminar nuestros programas, en el entorno de programacin podemos compilarlos, lo que significa que el entorno har una revisin del programa completo en busca de errores y nos advertir sobre ellos para poder corregirlos.

Entre los tipos de errores que se pueden presentar al momento de compilar o terminar un programa, principalmente tenemos 2: los lxicos y los sintcticos. Los primeros se refieren a cuando tenemos algo dentro de nuestro programa que est mal escrito, por ejemplo si en vez de un ciclo while escribimos whlie. Por otro lado tenemos los errores sintcticos, que se refieren a cuando lo que hemos escrito no tiene sentido, por ejemplo el querer asignar un valor numrico a una variable de tipo carcter o algo por el estilo.

Iremos viendo ms sobre estas y otras consideraciones y detalles a medida que vayamos avanzando en nuestro aprendizaje.

2.- Libreras:
Un punto muy importante dentro de la programacin, en especial en el lenguaje C, son las famosas y nunca bien ponderadas libreras.

Qu es una librera?
Una librera es una plantilla que contiene una serie de funciones, las cuales pueden ser utilizadas por un programa que ha invocado esta librera al inicio. Las libreras normalmente representan una categora de funciones (por ej. existe una librera donde estn todas las funciones matemticas ms comunes) y de acuerdo a eso las invocamos.

El lenguaje C nos proporciona mltiples libreras para nuestras necesidades, por lo que cada vez que necesitemos realizar una determinada accin, podemos hacer una bsqueda de la funcin y por ende librera correspondiente. Adicionalmente, podemos crear nuestras propias libreras y utilizarlas libremente (as como otras que han sido creadas por otros usuarios y puestas a disposicin en Internet).

Podemos reconocer las libreras por su extensin que es la letra h. Por ejemplo, si tuviramos la librera comolohago, la encontraramos como comolohago.h. Estas libreras se encuentran en el directorio include de nuestra instalacin correspondiente al entorno de programacin. Tal como indicabamos en la definicin, las libreras deben ser invocadas o en estricto rigor incluidas en el programa donde las vayamos a utilizar. Para esto, al inicio, en las primeras lneas de nuestro programa, debemos utilizar la sentencia #INCLUDE y el nombre de la librera entre < y >. Por ejemplo, si quisiramos incluir la librera ejemplo.h, pondramos al inicio de nuestro programa:

#INCLUDE <ejemplo.h>
Podemos incluir las libreras que queramos (siempre que existan). Sin embargo, no es recomendable incluir libreras que no vayamos a utilizar, ya que es un gasto extra sobre el programa. En caso de que alguna de las funciones, o sentencias de nuestro programa necesite de una librera que no hayamos incluido, al momento de compilar nos lanzar un error avisndonos del hecho. Antes de concluir con el captulo sobre las libreras, es bueno aadir que las ms comunes que se usan en prcticamente el 100% de los programas en C son las librerias stdlib.h y stdio.h, por lo que siempre es bueno aadirlas. Otra de las comunes es la conio.h, pero no es utilizada todo el tiempo y probablemente no la requeriremos hasta que vayamos mucho ms adelante.

3.- Variables en C:
Al igual que en Pseudo-cdigo, en lenguaje C, as como en otros lenguajes, contamos con variables para almacenar, operar y mostrar datos.

No entraremos en detalles sobre definiciones de que es una variable, porque esos temas ya los hemos cubierto en nmeros anteriores. Nos dedicaremos de lleno a cubrir las variables en C, las cuales son muy similares a las que utilizabamos en Pseudo-lenguaje. Entre las ms comunes que utilizaremos:

1. 2. 3. 4.

int: Se utilizan para almacenar y operar con nmeros enteros (correspondiente al conjunto Z de las matemticas). Pueden almacenar tanto enteros positivos como negativos hasta un cierto rango (-32768 a 32767). Existen 2 variaciones que son el short int y el long int, los cuales varan en el rango permitido. char: Se utilizan para almacenar caracteres, tal como el tipo Letra de Pseudo-cdigo. float: Se utilizan para almacenar y operar con nmeros decimales (correspondiente al conjunto Q de las matemticas). Adicionalmente se pueden utilizar para almacenar nmeros enteros, pero no es lo recomendable. Su rango va entre 3,4 *E-38 (elevado a) hasta 3,4 * E+38 (elevado a). boolean: Almacenan datos de tipo booleano. Pueden tener 2 valores: true o false.

Esas son las variables principales que utilizaremos al programar. Iremos conociendo otras y viendo variaciones de estas mismas a medida que vayamos adentrndonos ms y viendo ms ejemplos.

4.- Funciones bsicas:


En nuestros primeros programas de Pseudo-cdigo, utilizamos una serie de funciones bsicas para leer datos desde teclado o mostrarselos al usuario, as como operaciones matemticas y otras cosas similares que nos ayudaron a llevar a cabo nuestros programas ms simples. En C tenemos estos mismos operadores y funciones, con unas leves diferencias como veremos a continuacin: a) La Funcin Principal: En Pseudo-cdigo utilizabamos la funcin principal ( ) que era donde escribamos el cuerpo del programa. En C tambin tenemos una funcin principal, pero la diferencia es que aqui tiene un tipo (tipo int) y su nombre es main. Entonces, para declarar la funcin principal decimos:

int { cdigo }

main( del

) programa

Adicionalmente, podemos decir que la funcin main de C, cuenta con 2 parmetros como argc (de tipo int) y argv (de tipo char, es un vector). Estos parmetros corresponden a argumentos que nosotros le podemos dar a un programa particular, siendo el primero un entero que indica el nmero de argumentos, y el segundo un vector de tipo char que contiene en cada posicin los argumentos que enviamos. Esto es un poco avanzado, as que no lo veremos an, pero podremos apreciar que es bastante til. b) Mostrando informacin por pantalla: Cuando queramos mostrar algn tipo de informacin en pseudo-cdigo, utilizabamos la sentencia mostrar. En C, utilizaremos printf, la cual se utiliza de la misma forma que la venamos utilizando hasta ahora, es decir:

printf(mensaje);

o bien

printf(%tipo de variable,nombre de la variable);

Se puede utilizar una combinatoria de ambas. En la parte de %tipo de variable, utilizamos los tipos definidos en el lenguaje C, como por ejemplo:

%d: Si

la

variable es un

es decimal o

un punto

entero (int). flotante (float).

%f: Si la variable %c: Si la variable es un caracter (char).

c) Leyendo informacin desde teclado: Tal como debemos recordar, en pseudo-cdigo utilizabamos la sentencia leer. En lenguaje C, utilizaremos scanf, que funciona de la misma forma que la hemos utilizado hasta ahora, es decir:

scanf(%tipo de variable,&nombre de la variable); Como podemos apreciar, hay una diferencia con el caso de printf, y es que ac al momento de hacer un scanf, al lado del nombre de la variable aadimos un &. Esto es necesario, ya que as le decimos al programa que guarde la informacin en el rea de memoria que asignamos para esa variable cuando la declaramos. A esa rea de memoria accedemos con &. Cuando incluimos una sentencia de tipo scanf, el programa se detiene hasta que el usuario ingresa datos y presiona enter, por lo que tenemos la seguridad que el resto del programa no se ejecutar hasta que se cumpla esa accin. d) Operadores matemticos y lgicos: Son bastante similares a los que utilizabamos en pseudolenguaje, o sea:

+: Suma. -: Resta. *: Multiplicacin. /: Divisin. <: Menor que. >: Mayor que. ==: Igual a. (un solo igual es asignacin de valor, no comparacin). !=: Distinto que. %: Mdulo, o resto de la divisin. ++: Incremento en uno. : Decremento en uno.

Existen otros que iremos viendo a medida que los vayamos necesitando.

5.- Primer programa en C:


Para terminar con el capitulo de hoy, nos tomaremos un pequeo descanso de tanta teora, y realizaremos nuestro primer programa en C. Para eso, crearemos un archivo fuente donde estar nuestro cdigo en nuestro entorno de programacin (Si instalaron Dev-C++ vamos al men Archivo > Nuevo > Archivo Fuente o bien presionamos CTRL + N) con lo que se abrir una plantilla en blanco. Ah es donde escribiremos el cdigo. Entonces bien, tal como fue clsico en pseudo-cdigo, aqu lo seguir siendo, as que haremos nuestro nunca bien ponderado Hola Mundo, pero ahora en C. El cdigo a continuacin, y los comentarios como siempre, en negrita, cursiva y entre /* y */:

#include
#include /* Partimos por incluir las libreras stdlib.h y stdio.h mediante #include */

<stdlib.h> <stdio.h>

int main() /* Declaramos la { printf(Hola Mundo); /* Mostramos }

funcin el

principal mensaje

*/ */

Con el cdigo escrito, no nos queda ms que probar nuestro programa. As que primero vamos al menEjecutar > Compilar o bien presionamos CTRL + F9 en nuestro teclado. Esto nos pedir guardar el programa y se abrir una ventana, ah colocamos como nombre holamundo.c (o bien el que uds quieran pero con la extensin .c) y en tipo seleccionamos C source files (*.c). Guardamos y el entorno de programacin compilar (o sea revisar el programa que escribimos en busca de errores). Si encuentra algn error, nos indicar abajo donde est la falla. De lo contrario nos dir que est listo y sin errores, por lo que presionamos Cerrar en la ventana de aviso. Luego, vamos al men Ejecutar > Ejecutar o bien CTRL + F10 en nuestro teclado, y nuestro programa correr (no saldr corriendo, sino que se ejecutar).

Funcion?,

Se ejecut y desapareci?, no se asusten. No hay nada malo con el programa. Es el entorno de

programacin que por defecto cuando un programa termina, cierra la ventana de ejecucin. Por ahora haremos un pequeo truco para poder visualizar nuestro programa de forma correcta. Aadiremos luego del mensaje, una funcin bsica de C llamada getch();, la cual cumple la funcin de dejar el programa en espera hasta que el usuario presione una tecla, as podremos ver el resultado. As que nuestro nuevo cdigo quedara de la siguiente forma:

#include
#include <stdio.h>

<stdlib.h>

int { printf(Hola getch(); }

main() mundo);

Compilamos y ejecutamos de nuevo y veremos la ventana con el resultado de nuestro programa, o sea, el mensaje Hola Mundo. Para cerrar solo presionamos una tecla. Y con eso terminamos por hoy, donde hemos dado nuestros primeros pasos en el lenguaje C e incluso hemos realizado nuestro primer programa. En la prxima edicin: 1. Leyendo datos de teclado. 2. Iteraciones condicionales. 3. Ciclos o bcles. Por ahora, recuerden que como siempre, este tutorial ha sido:

Cualquier duda o comentario, pueden dejarnos unas lneas en el rea habilitada a continuacin. Esperamos que este tutorial haya sido de utilidad para Uds.

Ya dejando un poco atrs la locura navidea, y preparndonos para recibir este ao 2009, hemos decidido hacer un alto de las festividades (en confabulacin con nuestro maravilloso servicio de hosting que nos ha fallado a diestra y siniestra, por lo que ofrecemos nuestras disculpas) y traerles un nuevo nmero de esta gran saga que ha sacado chispas busca darles una pequea manito durante sus primeros pasos del mundo de la programacin. En el nmero anterior, nos adentramos en nuestro primer lenguaje real, C, haciendo una larga introduccin y comparacin con lo que habamos visto hasta ahora, terminando con nuestro primer programa. En esta ocasin, seguiremos adentrndonos ms en el tema y terminaremos con la confeccin de un programa algo ms complejo. As que sin ms espera, los invitamos a seguirnos despus del salto, que no es en verdad un salto, sino que un leer ms. Cmo aprender a programar y no morir en el intento Parte 8 Nota: Como es habitual, les recomendamos, si no lo han hecho ya, leer los nmeros anteriores de esta saga, que pueden encontrar en la categora de Programacin de CLH. Tal como prometimos en el nmero anterior, en este veremos los siguientes contenidos: Contenidos: 1. 2. 3. 4. 5. Comentarios. Leyendo datos desde teclado. Iteraciones condicionales. Ciclos o bcles. Ejercicio: Programando un terminal de venta simple.

Veremos bastante hoy, as que vamos, manos a la obra:

1.- Comentarios.
Si nos hemos fijado hasta ahora, siempre que realizamos algn ejemplo o ejercicio de cdigo, en C, Pseudo-cdigo o bien en nuestros tutoriales de PHP, siempre ponemos las explicaciones entre unos smbolos /* y */. Esto, junto a otros smbolos, es lo que en la programacin (a todo nivel) se conoce como comentarios. Los comentarios en la programacin, si bien no son obligatorios, se convierten en una herramienta util y su mayor funcin es entregarnos la posibilidad de aadir pequeas anotaciones sobre lo que estimemos conveniente, ya sea sobre el cdigo propiamente tal u otras cosas como notas de autora o funcionamiento del programa en s.

Por qu usar comentarios?


Principalmente por un tema de orden. Tenemos que pensar de que si bien nuestra memoria puede ser excelente, en ms de alguna ocasin nos tocar revisar cdigos que hayamos realizado hace algn tiempo y puede que en ese programa hayamos utilizado alguna funcin o lgica que no tiene sentido en este momento. Por eso el uso de comentarios nos simplifica el tener que estar mucho tiempo deduciendo lo que alguna vez hicimos. Lo mismo se presta para cuando nuestro cdigo es revisado por terceros o bien nosotros revisamos cdigos hechos por alguien ms. Hay 2 formas de comentarios: los de lnea simple y los de mltiples lneas. La nica diferenciacin es en los smbolos que utilizamos para iniciar y terminar los comentarios. Cuando los comentarios son de lnea simple solo debemos aadir al principio de la lnea el smbolo // . Debemos tener en cuenta de que solo ser vlido como comentario lo que escribamos en la misma lnea. Si pasamos a otra lnea lo tomar como cdigo y nos lanzar error, por lo que debemos utilizar smbolo de comentario de mltiples lneas. Para mltiples lneas, utilizamos el mismo que hemos usado hasta ahora, o sea al principio del comentario ponemos /* y al final del comentario cerramos con */. Todo lo que escribamos entremedio ser considerado como comentario. De cualquier forma, si es que les complica recordar los smbolos para cada caso, pueden utilizar siempre el formato de mltiples lneas, que cubre comentarios ya sea en 1 lnea o en varias.

2.- Leyendo datos desde teclado.


Cuando trabajabamos en Pseudo-cdigo, una de las funcionalidades que ms utilizabamos, era la lectura o recepcin de datos ingresados por un usuario va teclado. Eso nos permita interactuar de una mayor forma con quien utilizaba el programa y realizar procesamientos mucho mejores y personalizados. Pues bien, en C tambin podemos leer datos desde teclado, de una forma tan similar como en pseudolenguaje. Si recordamos el tutorial anterior, hablbamos de la funcin scanf, la cual nos permita realizar esa tarea y que se utiliza de la siguiente forma:

scanf(%tipodevariable, &nombredelavariable); Como podemos observar, esta funcin presenta 2 parmetros: %tipodevariable (entre comillas) y&nombredelavariable, los cuales a su vez presentan 2 signos: % y &. Vamos por parte explicando:

1.

tipodevariable: Tal como hemos visto en numerosas ocasiones, cada variable que definimos en un programa contiene un tipo de datos que puede almacenar (int, float, char, etc). A su vez, el lenguaje C utiliza unos simbolos que representan esos tipos y que se incluyen en las funciones scanf y printf para decirle al compilador que tipo de dato es el que estamos leyendo/mostrando. Estos simbolos son la d para variables de tipo int, la f para variables de tipo float y la c para variables de tipo char entre otras. El smbolo %: Este smbolo siempre debe ir por obligacin acompaando a los smbolos indicados en el punto anterior, de esta forma el compilador comprender que estamos hablando de un tipo de dato y no de una consonante por s sola. nombredevariable: Es el nombre que le damos a una variable en particular cuando la definimos. El smbolo &: En el lenguaje C, cuando utilizamos el smbolo & junto al nombre de una variable, le estamos diciendo al compilador que nos estamos refiriendo al rea de memoria en el que esa variable almacena su informacin. Como dijimos hace algn tiempo, toda variable al momento de ser creada, apunta a un rea de memoria interna del computador para manipular su informacin. A esta rea accedemos con el smbolo & cuando leemos un dato.

2. 3. 4.

Con esas definiciones claras, veamos un pequeo ejemplo, para lo que utilizaremos el entorno de programacin que instalamos en el nmero anterior: Ejemplo: Realizar un programa que lea un dato numrico por teclado y luego mostrarlo por pantalla. (La explicacin del cdigo, como siempre en negrita, cursiva y entre /* y */.

#include
#include #include <conio.h>

<stdio.h> <stdlib.h>

/*

Partimos por agregar las libreras necesarias para nuestro programa, incluida la conio.h para

hacer uso de la funcin getch( ); */

int numero;

/* Declaramos una variable llamada numero de tipo int */

int { /* Declaramos la funcin main o principal */

main(

printf(Ingrese un numero del 1 al 10: ); /* Mostramos un mensaje al usuario para que ingrese un numero del 1 al 10 */

scanf(%d, &numero); /* Con scanf leemos el dato, indicando con %d que es un dato de tipo int e indicamos que guardaremos la informacin en el rea de memoria de la variable numero poniendo &numero */

printf(Ingreso getch();

el

numero

%d,

numero);

/* Mostramos el numero que ingreso el usuario, poniendo un mensaje con printf y en la posicin donde mostraremos el nmero ponemos el smbolo correspondiente al tipo de dato, o sea %d, y luego de la coma la variable que mostraremos. En la lnea siguiente ponemos un getch ( ); para que el programa quede en espera hasta que presionemos una tecla y as podamos ver el resultado antes que se cierre */

} // Cerramos llave de la funcin main.


Compilamos el programa y no deberamos tener errores. Lo ejecutamos y probamos que funcione. As de simple es la captura de datos va teclado.

3.- Iteraciones condicionales.


Las iteraciones condicionales en C son bastante similares a las que vimos en pseudocdigo (Si y Si No, Switch) y cumplen exactamente la misma funcin, esto es, ejecutar una serie de acciones a partir del cumplimiento de una condicin. No entraremos en mayor detalle, pues lo vimos de forma bastante completa en el pasado. En lo que si adentraremos es en como se usan en C: Si y Si no En C se utiliza de la misma forma, radicando la diferencia en que en vez de ser Si y Si no, hablamos de if yelse. Esta iteracin tiene las mismas caractersticas que en pseudo, o sea, todo else debe ir luego de un if y dentro de un if y de un else pueden ir mltiples if y elses. La forma de declaracin es:

if(condicin) { sentencia sentencia } else {

1; 2;

sentencia sentencia 4;

3;

}
Cuando utilizamos if y else, podemos o no usar llaves para abrir y cerrar el if. Cuando un if y/o un else tienen solo una sentencia a ejecutar, podemos escribirlos sin llaves para abrir y cerrar. Si es ms de una sentencia, necesariamente deben llevar llaves. Si desean, para evitar confusiones, podemos utilizar siempre las llaves. Veamos un ejemplo ampliando el caso anterior. Tambin pediremos un dato al usuario, pero en vez de mostrarlo lo someteremos a un simple if y else para ver si el nmero es mayor a 5:

#include
#include #include <conio.h>

<stdlib.h> <stdio.h>

int numero;

int main() { printf(Ingrese un numero del 1 al 10: ); scanf(%d,&numero);

/* Primero vemos con un if si el numero es igual a 5. Recordemos que para comparar utilizamos
doble signo igual */ if(numero==5) printf(El numero ingresado es 5); else // Si no es igual a 5 if(numero > 5) // Si es mayor a 5 mostramos el mensaje printf(El numero ingresado es mayor a 5); else // Si es menor a 5 mostramos el mensaje printf(El numero ingresado es menor a 5); getch();

}
A medida que vayamos avanzando, el uso de if y else ser ms complejo y largo, pero la lgica es bsicamente la misma. La iteracin switch la veremos en el prximo nmero, ya que implica un mayor nivel de detalle y no queremos extendernos por sobre los dems contenidos de momento.

4.- Ciclos o bcles.


Tal como las iteraciones, en pseudolenguaje tambin definimos y utilizamos ciclos y bcles que cumplen la misma funcionalidad que en C, por lo que no nos desviaremos definiendo nuevamente esos temas, si no que veremos cada caso para C y luego un ejemplo que los reune a todos. Mientras El ciclo mientras que usabamos en Pseudocdigo, en C (y otros lenguajes) es conocido como while y es uno de los ms usados. La forma de utilizarlo es la misma, o sea:

while(condicin) { sentencia sentencia }

1; 2;

Tal como en Pseudo, este ciclo slo se ejecutar (y se mantendr en ejecucin) mientras la condicin se cumpla. Para Este ciclo en lenguaje C es conocido como for y se utiliza de la misma forma, o sea:

for(inicializacin { sentencia sentencia sentencia }

de

variable

condicin

aumento

decremento

de

la

variable) 1; 2; 3;

Tal como en el caso del ciclo while, este ciclo se continuar ejecutando mientras se cumpla la condicin, pero a diferencia del anterior, este siempre se ejecutar, ya que la variable para la condicin se inicializa dentro del propio ciclo. Haga mientras Corresponde al ciclo do-while, bastante similar al caso del while pero con 2 diferencias. Este ciclo se ejecutar al menos 1 vez aunque la condicin no se cumpla y el while del final debe ir con punto y coma, o sea:

do { sentencia sentencia sentencia }while(condicin);

1; 2; 3;

Tal como en pseudolenguaje, hay ocasiones ideales para el uso de cada tipo de ciclo, pero en muchas ocasiones podemos usar cualquiera de los 3 y depender ms que nada del gusto personal. A continuacin veremos un ejemplo en donde utilizaremos los 3 ciclos para resolver un mismo problema.

Ejercicio: Enumerar del 1 al 10 utilizando los 3 ciclos vistos hasta ahora.

#include
#include #include <conio.h>

<stdlib.h> <stdio.h>

int numero;

int main() { numero=1; // Asignamos el valor inicial a la variable while(numero<=10) // Partimos con un ciclo while { printf(%d\n,numero); /* Mostramos el nmero y utlizamos \n para hacer salto de lnea */ numero++; // Incrementamos el valor }

for(numero=1;numero<=10;numero++) // Seguimos con un ciclo for especificando los parmetros { printf(%d\n,numero); // Mostramos el nmero } numero=1; // Reinicializamos el nmero a 1

do // Terminamos con un ciclo do-while { printf(%d\n,numero); // Mostramos el nmero numero++; // Incrementamos el valor }while(numero<=10); // Definimos la condicin getch(); // Dejamos el programa en espera

}
Luego de compilar y ejecutar podemos ver que como resultado se enumerar del 1 al 10, 3 veces seguidas, 1 por cada ciclo que definimos.

5.- Ejercicio: Programando un terminal de venta simple.


Ahora que hemos visto aspectos bsicos del lenguaje C, desarrollaremos un ejercicio en el que combinaremos todos los conocimientos adquiridos hasta ahora. Lo que haremos ser programar un terminal de venta simple, en donde primero desplegaremos una lista de productos, luego pediremos el cdigo del producto, la cantidad que se desea llevar y mostraremos el total a cancelar. No nos complicaremos mucho y en el futuro iremos aadiendo nuevas funcionalidades. As que manos a la obra:

#include
#include #include <conio.h>

<stdlib.h> <stdio.h>

int codigo, cantidad, valor, total, vuelto, pago; /* Declaramos las variables que usaremos, todas de tipo int */

int main() { printf(\t Lista de productos\n); /* Partimos por listar los productos, utilizamos \t para separar los textos, tal como si utilizaramos la tecla TAB */ printf(Codigo\t Nombre\t Precio\n); printf(1\t Silla\t 100\n); printf(2\t Puerta\t 350\n); printf(3\t Sillon\t 200\n);

printf(\nIngrese el codigo del producto que desea llevar: ); /* Solicitamos el cdigo del producto*/ scanf(%d,&codigo); /* Leemos el cdigo */ printf(\nIngrese la cantidad que desea llevar: ); /* Solicitamos la cantidad que llevarn */ scanf(%d,&cantidad); /* Leemos la cantidad */

if(codigo==1) /* Comparamos mediante iteraciones el cdigo para asignar el valor total */ valor=100; if(codigo==2) valor=350; if(codigo==3) valor=200;

total=valor*cantidad; /* Multiplicamos el valor por la cantidad para obtener el total */

printf(\nEl total es de: %d,total); /* Mostramos el total */ printf(\nIngrese el pago: ); /* Solicitamos el pago */ scanf(%d,&pago); /* Leemos el pago */ if(pago<total) /* Vemos mediante un if si el pago es suficiente */ printf(\nEl pago no es suficiente); else { vuelto=pago-total; /* Obtenemos el vuelto */ printf(\nEl vuelto es de: %d,vuelto); /* Mostramos el vuelto */ } printf(\nVenta finalizada); /* Damos el mensaje de despedida */ getch();

}
Y as tenemos nuestro simple terminal de venta. Como podemos apreciar, este programa no es lo suficientemente ptimo, ya que solo podemos realizar 1 venta por sobre 1 slo producto, as que su aplicacin es bastante limitada. Para poder realizar mltiples ventas o 1 venta de mltiples productos es necesario el uso de ciclos para poder repetir las acciones necesarias. Desde ya los incentivamos a que vayan modificando este programa y agregando esa funcionalidad. De cualquier forma en las prximas lecciones le iremos aadiendo ms y ms cosas a este programa para crear una aplicacin mucho ms completa. Con esto damos por terminada la leccin de hoy, hemos cubierto bastante y an nos queda un largo camino por recorrer, as que mucha paciencia. En la prxima edicin de Como aprender a programar y no morir en el intento veremos: 1. 2. 3. 4. Iteracin Switch. Vectores. Matrices. Terminal de venta 2da parte.

Recuerden que como siempre, este tutorial ha sido:

Esperamos que este tutorial haya sido de utilidad para Uds. Muchas gracias por leer, y ser hasta una prxima oportunidad.

Empezamos ya de lleno el 2009, y que mejor que seguir con lo que el 2008 nos di tantos dolores de cabeza ayud a entrar de mejor forma al mundo de la programacin. Hoy, en la parte 9, o primera del 2009, seguiremos viendo contenidos del lenguaje C, as como el programa que empezamos a confeccionar en la edicin pasada. As que los invitamos a seguirnos, como siempre, despus del salto. Cmo aprender a programar y no morir en el intento Parte 9 Nota: Como siempre, les recomendamos, si es que no lo han hecho, leer los nmeros anteriores de esta gua, los cuales pueden ser encontrados en nuestra categora de programacin. Si recuerdan el nmero anterior, en esta ocasin veremos: Contenidos: 1. 2. 3. 4. Iteracin Switch. Vectores. Matrices. Continuacin de la confeccin de un terminal de venta.

As que vamos de lleno a la gua de hoy:

1.- Iteracin Switch:


En el nmero anterior, veamos las iteraciones condicionales if y else, las cuales nos permitan tomar distintos caminos dentro de un programa, dependiendo de una condicin determinada. Adems, cuando veamos los nmeros sobre pseudolenguaje, conocmos una iteracin llamada Switch, la cual presentaba una funcionalidad bastante similar, pero tal como explicbamos aquella vez, es bastante mejor para usar en casos determinados. El funcionamiento de esta iteracin, ya lo hemos detallado en nmeros anteriores, por lo que no adentraremos en repetir lo mismo, si no que veremos como funciona en lenguaje C. Ahora, una buena pregunta, es Cundo usar if/else y cundo usar switch?. La verdad, es que como todo en la programacin, es cosa de gustos. A pesar de que pueden haber casos en los que sea ms cmodo y/o ordenado usar una iteracin sobre otra, las 2 cumplen la misma funcionalidad, por lo que pueden ser usadas sin problemas. En lo personal, lo cual en ningn sentido es un estndar, prefiero usar iteraciones de tipo Switch cuando en los programas definimos algn tipo de men, por un tema de orden. En un ejemplo ms adelante podremos apreciar porque.

Entonces, usando switch en C, lo primero que necesitamos es una variable que tome un valor (todo switchdebe ser inicializado por una variable) y conocer los valores, o la mayora de ellos, que pudise tomar, como veremos en el siguiente ejemplo. Adems, dentro de los casos, podemos definir un caso por defecto, el cual cubrir todas las opciones no definidas. Esto es muy til para prevenir que el usuario ingrese un valor que no tenemos cubierto dentro de nuestras opciones. Veamos un ejemplo. Ejemplo: Plantearemos un pequeo men, y definiremos cada caso, utilizando una iteracin de tipo switch.

#include
#include #include <conio.h>

<stdlib.h> <stdio.h>

int opcion;

int main() { /* A continuacin escribimos nuestro men, tabulando y dando saltos de lnea */ printf(\tMenu); printf(\n1.- Mostrar hola mundo); printf(\n2.- Dar los buenos dias); printf(\n3.- Salir); printf(\nIngrese su opcion: ); scanf(%d,&opcion); /* Leemos la opcin que ingrese el usuario */

switch(opcion) // Activamos el switch con la variable opcin. { case 1: printf(\nHola mundo); /* En el caso que ingrese 1 */ break; case 2: printf(\nBuenos dias); /* En el caso que ingrese 2 */ break; case 3: break; /* En el caso que ingrese 3 */

default: printf(\nOpcion no valida); /* Caso por defecto */ break; } getch(); /* Ponemos el programa en pausa hasta que se presione una tecla */ } Como podemos ver, al final de cada caso, debemos incluir la sentencia break;, que indicar que despus de ejecutar las sentencias correspondientes al caso, se debe salir del switch.

Compilamos y probamos. Ahora, como podrn apreciar, este switch solo se ejecuta una vez. En caso de que quisieramos hacerlo repetitivo hasta que se diga salir, podemos insertarlo dentro de un ciclo y poner como condicin que se ejecute mientras no se seleccione la opcin de salida. As de simple es la iteracin switch. Es de gran utilidad para ordenar nuestras opciones y en especial para utilizarlo con mens, as que es muy recomendable aprender a usarlo y manejarlo para los programas que vayamos a desarrollar.

2.- Vectores:
Tal como veamos en pseudo-lenguaje, en la programacin existen unas variables especiales conocidas como arreglos, las cuales presentan la facultad de almacenar mltiples valores, ya sea unidimensionalmente o bidimensionalmente. Los vectores representan los primeros. En C, tambin podemos utilizar vectores, de la misma forma en la que los planteabamos para pseudocdigo, es decir, declarndolos y rellenndolos segn su posicin, as como las mismas condiciones para recorrerlos y leerlos. Tal como en todos los casos, no entraremos a repetir las definiciones que hemos hecho en guas anteriores y slo nos preocuparemos de su uso en lenguaje C. Veamos un pequeo ejemplo, para que nos quede todo ms claro: Ejemplo: Declararemos un vector, lo rellenaremos y luego mostraremos su contenido:

#include
#include #include <conio.h>

<stdlib.h> <stdio.h>

int vector[5]; // Declaramos el vector

int main() { for(int i=0; i<5; i++) /* Definimos un ciclo para llenar el vector */ { printf(\nIngrese el valor de la posicion %d del vector: ,i); scanf(%d,&vector[i]); /* Leemos los datos de cada posicin */ } printf(\nLos valores ingresados fueron: ); /* Mostramos los valores */ for(int i=0;i<5; i++) { printf(%d\t,vector[i]); } getch(); /* Ponemos el programa en pausa hasta que se presione una tecla */ } Como podemos ver, el procedimiento es el mismo que usabamos para pseudo-cdigo, utilizando ciclos tanto para rellenar posiciones secuencialmente, como para leerlas, accediendo mediante el ndice que marcamos con la variable i, que se va moviendo a lo largo del vector. Ahora, si nos fijamos en el ejemplo, podemos ver que dentro del ciclo for, hemos definido la variable i y no al principio del programa. Esto es posible en este tipo de ciclos, pero esa variable solamente vive dentro del bcle y no despus (por eso la

volvemos a declarar en el segundo ciclo). Esta es una gran forma de matar variables rpidamente despus de su uso y no gastar espacio innecesariamente.

3.- Matrices:
En el caso de las matrices, utilizamos procedimientos bastante similares a los de los vectores, salvo que, siendo arreglos bidimensionales, para recorrer una matriz necesitaremos de 2 ciclos, uno para las filas, y 1 para las columnas. La definicin tambin vara en el nmero de dimensiones que declaramos. Si para los vectores hacamos una declaracin del tipo vector [5] por su unidimensionalidad, para las matrices aplicamos una definicin del tipo matriz [5[[5], la primera relacionada con sus filas, y la 2da con sus columnas. Veamos un ejemplo para que nos quede ms claro. Ejemplo: Repetiremos el ejemplo anterior, pero en este caso utilizaremos una matriz:

#include
#include #include <conio.h>

<stdlib.h> <stdio.h>

int matriz[3][3]; // Declaramos la matriz

int main() { for(int i=0; i<3; i++) /* Definimos un ciclo para las filas */ { for(int j=0; j<3; j++) /* Otro ciclo para las columnas */ { printf(\nIngrese el valor para la fila %d y la columna %d: ,i,j); scanf(%d,&matriz[i][j]); } } printf(Los valores ingresados son:\n ); for (int i=0; i<3; i++) /* Mostramos los valores ingresados, tabulando y dando salto de lnea para hacer la forma de la matriz */ { for (int j=0; j<3; j++) { printf(%d\t,matriz[i][j]); } printf(\n); } getch(); /* Ponemos el programa en pausa hasta que se presione una tecla */ } El procedimiento es el mismo, pero solo nso enfocamos en recorrer 2 dimensiones en vez de una. A medida que vayamos utilizando vectores y matrices en nuestros programas nos iremos acostumbrando cada vez ms a su funcionamiento.

4.- Terminal de venta:


Si recuerdan, al final del nmero anterior, realizamos la confeccin de un terminal de venta, en el cual listabamos unos productos y realizabamos una venta, especificando el vuelto correspondiente al cliente. Hoy, seguiremos trabajando sobre ese terminal, aadiendo la funcionalidad de poder vender ms de un producto en una venta y de realizar ms de una venta. Si recordamos, tenamos este cdigo:

include #include #include <conio.h>

<stdlib.h> <stdio.h>

int codigo, cantidad, valor, total, vuelto, pago;

int main() { printf(\t Lista de productos\n); printf(Codigo\t Nombre\t Precio\n); printf(1\t Silla\t 100\n); printf(2\t Puerta\t 350\n); printf(3\t Sillon\t 200\n);

printf(\nIngrese el codigo del producto que desea llevar: ); scanf(%d,&codigo); printf(\nIngrese la cantidad que desea llevar: ); scanf(%d,&cantidad);

if(codigo==1) valor=100; if(codigo==2) valor=350; if(codigo==3) valor=200;

total=valor*cantidad;

printf(\nEl total es de: %d,total); printf(\nIngrese el pago: ); scanf(%d,&pago); if(pago<total) printf(\nEl pago no es suficiente); else

{ vuelto=pago-total; printf(\nEl vuelto es de: %d,vuelto); } printf(\nVenta finalizada); getch();

}
Y ahora, aadiendole algunos ciclos, tendremos un cdigo como este:

#include
#include #include <conio.h> /* Incluimos las libreras */

<stdlib.h> <stdio.h>

int codigo, cantidad, valor, total, vuelto, pago; /* Declaramos las variables que usaremos en el proceso */ int ok=1; /* Adicionalmente declaramos una variable ok, que nos servir de bandera para un ciclo que usaremos */ int opcion=1; /* Declaramos una variable opcion, que regulara si queremos hacer ms de una venta */

int main() { while(opcion==1) { while(codigo!=4) /* Definimos un ciclo que se ejecute siempre que el usuario no presione la tecla para finalizar la venta */ { printf(\t Lista de productos\n); /* Listamos los productos */ printf(Codigo\t Nombre\t Precio\n); printf(1\t Silla\t 100\n); printf(2\t Puerta\t 350\n); printf(3\t Sillon\t 200\n); printf(\nPara cerrar la venta, presione 4); /* Aadimos la opcin para cerrar la venta */

printf(\nIngrese el codigo del producto que desea llevar: ); /* Pedimos el cdigo del producto */ scanf(%d,&codigo); /* Leemos el cdigo del producto */ if(codigo==4) /* Si el cdigo es igual a 4, significa que la venta est finalizada, as que cerramos el proceso de venta */ break; printf(\nIngrese la cantidad que desea llevar: ); /* Pedimos la cantidad */ scanf(%d,&cantidad); /* Leemos la cantidad */

if(codigo==1) /* Igualamos el cdigo para asignar el precio */ valor=100; if(codigo==2) valor=350; if(codigo==3) valor=200;

total=total+(valor*cantidad); /* A total le asignamos, el total acumulado hasta ahora, ms el nuevo valor y nueva cantidad, multiplicados entre s */

}
printf(\nEl total es de: %d,total); /* Saliendo de la venta, indicamos el total */ while(ok==1) /* Declaramos un ciclo con la variable ok, para el proceso de pago y vuelto, as se ejecutar hasta que se pague la cantidad correcta */ { printf(\nIngrese el pago: ); /* Solicitamos el pago */ scanf(%d,&pago); /* Leemos el pago */ if(pago<total) /* Si el pago es inferior al total, mostramos un mensaje de error */ printf(\nEl pago no es suficiente); else /* De lo contrario, cambiamos el valor de ok para romper el ciclo y mostramos los mensajes de vuelto */ { ok=0; vuelto=pago-total; printf(\nEl vuelto es de: %d,vuelto); } } printf(\nDesea hacer otra venta? (1=Si , 0=No): ); /* Preguntamos si desea hacer otra venta */ scanf(%d,,&opcion); /* Leemos la respuesta */ } printf(\nVenta finalizada); /* Mensaje final */ getch(); /* Programa en pausa hasta pulsar una tecla */

}
Como podemos apreciar en esta nueva versin, hacemos uso de algunos ciclos. De esta forma, podemos hacer una venta de mltiples productos, y validamos el pago hasta que sea el correcto, para as completar de forma correcta la venta. Adems, luego de finalizar una venta, podemos hacer otra automticamente al sealarlo y de esta forma no necesitamos volver a ejecutar el programa cada vez que queramos vender algo. Recordemos que nuestro programa lo vamos construyendo de a poco, an hay muchos puntos que pueden ser mejorados y eso es lo que iremos haciendo en los prximos nmeros. Por ahora lo dejaremos aqu, pero los incentivamos a que vayan aadiendo nuevas cosas de lo que hemos ido aprendiendo. En la prxima edicin de Cmo aprender a programar y no morir en el intento:

1. 2. 3. 4.

Mtodo de ordenamiento: El mtodo de la burbuja. Mtodo de busqueda: Bsqueda secuencial. Funciones. Continuacin del trminal de ventas: Aadiendo un men.

Se nos acabaron las imgenes humorsticas Bienvenidos a una nueva edicin de Como aprender a programar y no morir en el intento. Soy su anfitrin, Juan Xabadu, y tal vez me recuerden de pelculas como: Querida, me ca del Taxi y Jurassic Park vs Forrest Gump como siempre, los acompaare en esta gran aventura en que nos hemos embarcado hace bastante tiempo, dando nuestros primeros pasos en el mundo de la programacin. Hoy veremos los primeros contenidos sobre mtodos de bsqueda y ordenamiento, as como funciones y continuaremos con nuestro ejemplo del terminal de venta. El detalle, como siempre, despus del salto. Cmo aprender a programar y no morir en el intento Parte 10 Tal como adelantbamos en el nmero anterior, los contenidos de hoy: Contenidos 1. 2. 3. 4. Mtodos de ordenamiento: Mtodo de la burbuja. Mtodos de bsqueda: Mtodo secuencial. Funciones. Aadiendo un men al terminal de venta.

Vamos, manos a la obra:

1.- Mtodos de ordenamiento: Mtodo de la burbuja.


En un escenario normal, el 99,9% de los programas que realicemos operan con una cantidad de datos mediana a alta, los cuales pueden ser o no ingresados por un usuario y son almacenados en distitnos medios, ya sea en variables, arreglos o archivos entre otras cosas.

Ahora, en un escenario ms normal an, estos datos nunca estarn necesariamente ordenados bajo algn criterio en particular, por lo que si necesitaramos acceder a ellos bajo un orden especial, sera imposible lograrlo por si solo. Para esto es que en la programacin existen los mtodos de ordenamiento, los cuales son bsicamente algoritmos que realizan una lectura de una serie de datos y un posterior ordenamiento de acuerdo a ciertos criterios (alfabeticamente, menor a mayor, etc). Existen una serie de mtodos de ordenamiento como el de la burbuja, quicksort, insercin, seleccin, etc. Cada uno de ellos se diferencia del otro tanto en su funcionamiento como en el costo (de ejecucin) que significan para el programa en s.

Qu mtodo utilizar?
Si bien, como decamos, cada mtodo presenta ciertas ventajas por sobre otro, en ningn caso son diferencias radicales y en estricto rigor no se notan a menos que trabajemos con cantidades msivas de datos, por lo que el consejo por ahora es utilizar el mtodo que encontremos ms sencillo y/o nos acomode ms. A pesar de esto hay escenarios que presentan una mejor adaptabilidad a un mtodo en particular. Ya iremos viendo ms de esto en futuras guas. Partiendo veremos uno de los mtodos ms conocidos y utilizados como es el mtodo de la burbuja, llamado de esta forma por la forma en que se realiza el ordenamiento de datos, emulando una burbuja.

Cmo funciona el mtodo de la burbuja?


Este mtodo, utilizado comunmente cuando se necesita ordenar datos dentro de un vector o una matriz, funciona mediante el uso de 4 variables: 1. 2. 3. 4. Un vector o matriz donde estn almacenados los datos. Una variable que recorre el vector. Una variable que recorre el vector una posicin ms adelante que la variable anterior. Una variable auxiliar.

La forma de funcionamiento es bastante simple: Nuestro vector es recorrido por una variable (la definida en el nmero 2) y por otra en una posicin ms adelante. Vamos realizando una comparacin entre las 2 variables y si se cumple el criterio establecido se hace un movimiento circular: El valor ms adelantado pasa a la variable auxiliar, el valor ms atrasado pasa a la posicin adelantada y el valor de la variable auxiliar pasa a la posicin retrasada. Esto se realiza hasta que se alcanza el final del vector en cuestin. Veamos un ejemplo de este mtodo de ordenamiento: Ejemplo: Ordenar un vector de tamao 5 de menor a mayor mediante el mtodo de la burbuja (los comentarios, como siempre, en negrita, cursiva y entre /* y */):

#include
#include #include <stdlib.h> // Incluimos las libreras

<stdio.h> <conio.h>

int main() { int arreglo[5], aux, i, j; /* Declaramos las siguientes variables:

arreglo = Un vector de 5 posiciones donde tendremos los valores. i,j = Variables para recorrer el vector.

aux = Variable para guardar un valor mientras lo ordenamos */

printf (Ingrese valores para llenar el vector:\n); // Mostramos un mensaje e introducimos valores al vector for (i=0; i< 5; i++) scanf(%d,&arreglo[i]);

/* Luego, ordenamos el vector mediante el algoritmo de burbuja:

Recorremos el vector con una variable ms adelantada que la otra y comparamos. Si el valor de la posicin actual es mayor al de una posicin ms, guardamos el valor actual en la variable auxiliar, luego en la posicin actual ponemos el valor de la posicin siguiente y en la posicin siguiente guardamos el valor de la variable auxiliar*/

for (j=1; j <= 5; j++) for (i=0; i< 4; i++) if (arreglo[i] > arreglo[i+1]) { aux = arreglo[i]; arreglo[i] = arreglo[i+1]; arreglo[i+1] = aux; }

printf (\nValores ordenados exitosamente!\n); // Mostramos el vector ordenado for (i=0; i< 5; i++) printf (arreglo[%d] = %d\n, i, arreglo[i]);

getch(); } Como podemos ver, es un algoritmo bastante simple que cumple la funcin solicitada, ordenar de menor a mayor aplicando el mtodo de la burbuja. Existen otros mtodos que sern de mayor utilidad cuando trabajemos con una cantidad de datos mayor, pero por ahora con este podremos cumplir el objetivo sin problemas.

2.- Mtodos de bsqueda: Mtodo secuencial


Una funcionalidad que siempre es til al momento de hacer un programa, es la de poder buscar un dato especfico del que necesitamos saber informacin o bien trabajar con el.

En lenguajes de programacin de 3a generacin, orientados al proceso, como C, existen una serie de mtodos de bsqueda que nos permiten cumplir esa tarea, entre ellos podemos destacar la bsqueda secuencial, la binaria, acceso directo y el trabajo mediante ndices.

En que se diferencian?, tal como en el caso de los mtodos de ordenamiento, cada uno de estos mtodos se separa de
otro por la forma en la que trabajan y el costo de ejecucin que implica para el programa en s. Todas a su vez tienen una serie de ventajas y desventajas, siendo la ms costosa de todas la bsqueda secuencial, debido a que su forma de trabajo es buscar una referencia indicada registro por registro, uno a la vez como si examinramos una serie de filas una por una hasta encontrar lo que buscamos. Sin embargo, es esta ltima, la ms sencilla de implementar y la que menos requerimientos tiene. Su funcionamiento se explica mediante el siguiente algoritmo: Consideremos que tenemos un vector, el cual est lleno de cdigos numricos de productos de un supermercado y necesitamos buscar un producto en particular. Al ingresar el cdigo a buscar y decirle al programa que lo ubique en tal vector, operara de la siguiente manera: 1. 2. 3. 4. 5. Va a la posicin 1. Compara el valor de esa posicin con el ingresado a buscar. Si son iguales lanza un mensaje o guarda la posicin para futuras referencias. De lo contrario pasa a la posicin siguiente. Repite pasos 2,3,4.

Como podemos apreciar, es un funcionamiento simple y bsico, pero que funciona. El gran problema radica cuando estamos operando con una cantidad masiva de datos, ya que los accesos a memoria seran demasiados y el costo de ejecucin (algo que los programadores siempre deben tener en cuenta)sera alto. Adicionalmente es bueno aadir que ese ejemplo referencia a un escenario ideal donde los cdigos no estn repetidos. En caso de que lo estuviesen, deberamos avisar en cada posicin que se encuentre una coincidencia. Veamos un ejemplo de bsqueda secuencial: Ejemplo: Llenar un vector de tamao 5 con nmeros y luego buscar algn valor y mostrar por pantalla la posicin en la que se encuentra:

#include
#include #include <stdlib.h> // Incluimos las libreras

<stdio.h> <conio.h>

int main() { int arreglo[5],i,valor,x; /* Declaramos las siguientes variables:

arreglo = Un vector de 5 posiciones donde tendremos los valores. i = Variable para recorrer el vector. valor = Variable para guardar el valor a buscar x = Bandera que utilizamos para marcar que hayan valores. */ x=0; // Dejamos como 0 a x, lo que significa que no se han encontrado coincidencias printf (Ingrese valores para llenar el vector:\n);

// Mostramos un mensaje e introducimos valores al vector for (i=0; i< 5; i++) scanf(%d,&arreglo[i]);

// Solicitamos que se ingrese un valor a buscar


printf(\nIngrese un valor a buscar: ); scanf(%d,&valor);

/* Recorremos el vector y vamos comparando las posiciones con el valor a buscar,


si hay una coincidencia, mostramos la posicin por pantalla y marcamos la variable x con un 1 para indicar que se encontro valor */ for (i=0; i < 5; i++) if (arreglo[i] == valor) { printf(\nEl valor se encuentra en la posicion %d,i); x=1; } if(x==0) printf(\nNo se encontraron coincidencias);

getch();

3.- Funciones
En la Parte 6 de esta saga, veamos en una primera instancia lo que eran las funciones cuando hablabamos de pseudocdigo. Los conceptos son exactamente los mismos, as como la forma de funcionamiento y operacin de la funcin en s, es decir:

tipo nombre_funcion(valor { operacin operacin . . operacin n;

1,

valor

valor

n) 1; 2;

retorno } Veamos un ejemplo para dejar todo ms claro:

de

valor;

Ejemplo: Determinar el mayor entre 2 nmeros mediante el uso de una funcin:

#include
#include #include <stdlib.h> // Incluimos las libreras

<stdio.h> <conio.h>

int numero_mayor(int valor1, int valor2); // Declaramos inicialmente la funcin int main() { int num1, num2, mayor; //Declaramos las variables que utilizaremos

// Pedimos que se ingresen los numeros


printf(\nIngrese Numero 1: ); scanf(%d,&num1); printf(\nIngrese Numero 2: ); scanf(%d,&num2);

// A mayor le asignaremos el resultado de la funcin


mayor=numero_mayor(num1,num2);

// Mostramos el resultado por pantalla


printf(\nEl numero mayor es: %d,mayor);

getch();

int numero_mayor(int valor1, int valor2) // Recibimos los valores { // Comparamos cual es mayor y lo retornamos if(valor1>valor2) return valor1; else return valor2; }

4.- Aadiendo un men al terminal de venta


Siguiendo con nuestro clsico ejemplo del terminal de ventas, si recordamos, la ltima vez habamos dejado nuestro ejemplo adaptado para poder realizar ms de una venta y vender en cada una de ellas ms de un producto.

Bueno, el trabajo que realizaremos hoy ser confeccionar un men para que la aplicacin sea ms completa y la funcin de ventas solo sea una parte de ese men. Como recordaremos, al final del ejemplo anterior, tenamos el siguiente cdigo:

#include
#include #include <conio.h> /* Incluimos las libreras */

<stdlib.h> <stdio.h>

int codigo, cantidad, valor, total, vuelto, pago; /* Declaramos las variables que usaremos en el proceso */ int ok=1; /* Adicionalmente declaramos una variable ok, que nos servir de bandera para un ciclo que usaremos */ int opcion=1; /* Declaramos una variable opcion, que regulara si queremos hacer ms de una venta */

int main() { while(opcion==1) { while(codigo!=4) /* Definimos un ciclo que se ejecute siempre que el usuario no presione la tecla para finalizar la venta */ { printf(\t Lista de productos\n); /* Listamos los productos */ printf(Codigo\t Nombre\t Precio\n); printf(1\t Silla\t 100\n); printf(2\t Puerta\t 350\n); printf(3\t Sillon\t 200\n); printf(\nPara cerrar la venta, presione 4); /* Aadimos la opcin para cerrar la venta */

printf(\nIngrese el codigo del producto que desea llevar: ); /* Pedimos el cdigo del producto */ scanf(%d,&codigo); /* Leemos el cdigo del producto */ if(codigo==4) /* Si el cdigo es igual a 4, significa que la venta est finalizada, as que cerramos el proceso de venta */ break; printf(\nIngrese la cantidad que desea llevar: ); /* Pedimos la cantidad */ scanf(%d,&cantidad); /* Leemos la cantidad */

if(codigo==1) /* Igualamos el cdigo para asignar el precio */ valor=100; if(codigo==2) valor=350; if(codigo==3) valor=200;

total=total+(valor*cantidad); /* A total le asignamos, el total acumulado hasta ahora, ms el nuevo valor y nueva cantidad, multiplicados entre s */

}
printf(\nEl total es de: %d,total); /* Saliendo de la venta, indicamos el total */ while(ok==1) /* Declaramos un ciclo con la variable ok, para el proceso de pago y vuelto, as se ejecutar hasta que se pague la cantidad correcta */ { printf(\nIngrese el pago: ); /* Solicitamos el pago */ scanf(%d,&pago); /* Leemos el pago */ if(pago<total) /* Si el pago es inferior al total, mostramos un mensaje de error */ printf(\nEl pago no es suficiente); else /* De lo contrario, cambiamos el valor de ok para romper el ciclo y mostramos los mensajes de vuelto */ { ok=0; vuelto=pago-total; printf(\nEl vuelto es de: %d,vuelto); } }

printf(\nDesea hacer otra venta? (1=Si , 0=No): ); /* Preguntamos si desea hacer otra venta */ scanf(%d,,&opcion); /* Leemos la respuesta */ } printf(\nVenta finalizada); /* Mensaje final */ getch(); /* Programa en pausa hasta pulsar una tecla */

}
Todo aquel cdigo se refiere a lo que nombraramos como mdulo de ventas, que es la funcionalidad principal del programa. Para confeccionar un men, algo muy conveniente es hacer uso de un ciclo tipo do-while y un switch, de la siguiente forma, utilizando una nueva variable llamada menu para recoger la opcin elegida, nuestro programa quedara as:

llamado a libreras

declaracin de variables

inicio de funcin main

do {

printf(1.printf(2.printf(3.printf(4.printf(Ingrese scanf(%d,&menu);

Mdulo Administrar Administrar Cerrar opcin:

de

ventas\n); productos\n); clientes\n); sistema\n); );

switch(menu) { case 1: Aqu insertaramos nuestro cdigo anterior del mdulo de ventas break; case 2: Por ahora en blanco, pero ira el cdigo para administrar los productos break; case 3: Por ahora en blanco, pero ira el cdigo para administrar los clientes break; case 4: break; } }while(menu!=4);

fin de funcin main Con ese cdigo, que dejaramos al principio de nuestro programa, insertando el cdigo anterior en el caso 1 del switch, le diramos al men que se ejecutase hasta que se seleccione la opcin 4, que es cerrar sistema. No es un cdigo difcil de implementar, solo debemos fijarnos en el orden y no tendremos problemas. Y eso sera en la edicin de hoy de Como aprender a programar y no morir en el intento. En el prximo nmero cubriremos: 1. Paso de parmetros por valor y por referencia. 2. Estructuras. 3. Recursividad. Como siempre, les recordamos que este tutorial ha sido:

Bueno, bueno, bueno. Nos demoramos un poco (casi 13 meses), pero lo prometido es deuda: Volvemos con la saga que intenta guiarlos por el largo y complejo camino de la programacin.

Por

qu nos demoramos tanto? Es una buena pregunta, gracias por hacerla -> !. La verdad es que una vez que

terminamos la parte 10 y estaban definidos los contenidos para continuar nos dimos cuenta que estbamos entrando en temas bastante avanzados, lo que se alejaba de la intencin inicial de estas guas, por lo que decidimos pausar el tema y reconsiderar como seguir. Lamentablemente hubo otros temas que fue necesario cubrir en la cola de peticiones (nuestro buzn explota cada da con todo lo que llega) y el tiempo fue pasando hasta que llegamos a la fecha. Pero ha llegado el da de continuar y hemos reestructurado el modelo de esta saga para que tengamos una gran cantidad de nmeros por delante. Cmo? se preguntarn. Bastante simple: En las primeras 10 partes estuvimos viendo desde los conceptos ms bsicos de antes de programar hasta la base de desarrollo estructurado, por lo que empezando en este nmero, veremos algo completamente nuevo(probablemente hasta el nmero 20) para entregar las nociones necesarias y luego continuaremos con otro enfoque. Lo sabemos, es enredado, pero con el tiempo se ir entendiendo, confen en nosotros As que sin ms introduccin, los invitamos a seguirnos despus del salto, en esta edicin nmero 11 deCmo aprender a programar y no morir en el intento, en donde empezaremos a cubrir un nuevo paradigma de desarrollo: Programacin orientada a objetos. Cmo aprender a programar y no morir en el intento Parte 11 Nota: Si bien hoy comenzamos a trabajar con un paradigma nuevo, siempre recomendamos leer las partes anteriores de esta saga, las cuales pueden ser encontradas en nuestra categora deProgramacin. Pues bien, tal como anuncibamos, hoy comenzamos con programacin orientada a objetos. Esta parte de la gua ser mucho ms conceptual que tcnica, ya que hay varios contenidos que es bueno que aclaremos para establecer una base slida y poder trabajar de mejor manera a futuro. As que sin ms, vamos: Contenidos: 1. 2. 3. 4. 5. Introduccin a la programacin orientada a objetos. Programacin orientada a objetos vs Programacin estructurada. Hola, soy un objeto. Clases. Mtodos.

As que sin ms, vamos, manos a la obra:

1.- Introduccin a la programacin orientada a objetos:


La programacin orientada a objetos (o POO para los ms amigos), es un paradigma de desarrollo definido y utilizado por una serie de lenguajes de programacin que busca afrontar el desarrollo de aplicaciones desde un enfoque distinto al estructurado (que hemos visto hasta la fecha), mediante la definicin y uso de, valga la redundancia, objetos que operen bajo un prisma similar a como vemos, reconocemos y actuamos las situaciones de la vida real. A la fecha se ha convertido en el paradigma preferido por los principales lenguajes de programacin, debido a una serie de ventajas (que iremos viendo a medida que avancemos) que permiten que el desarrollo sea ms simple, seguro y completo. Si bien la transicin desde el inicio a esta parte puede ser un poco compleja, especialmente por el cambio en el enfoque que se hace, una vez que las bases se entienden y dominan se puede comprender que es bastante simple. Solo como referencia, algunos lenguajes que trabajan bajo este paradigma: C++. Java. PHP (Desde la versin 5) Ruby. Objective C. Python.

Iremos viendo nueva informacin en cada parte de esta nueva etapa con el fin de ir aprendiendo un poco ms y no extendernos en demasa en un solo nmero.

2.- Programacin orientada a objetos vs Programacin estructurada:


Es inevitable que al comenzar a aprender un nuevo paradigma, empiecen las comparaciones y diferenciaciones de lo que ya se sabe. Y en este caso no ser ninguna diferencia. A la fecha todo lo que hemos visto en esta saga es relacionado al desarrollo estructurado, en el cual basicamente nos dedicamos a escribir programas con una lgica directa en base a una plantilla, la cual contiene cdigo que es compilado y ejecutado desde un inicio hasta el final. Esta lgica opera bajo el uso de funciones y procesos que operan sobre una serie de datos de entrada y que finalmente nos despliegan resultados o salidas que dependen de cada tarea que se realiz. Bastante simple, de arriba a abajo, de principio a final. Por otro lado, en la POO, cambiamos el enfoque y comenzamos a hablar de objetos y clases. Si bien seguimos utilizando elementos clsicos de la programacin estructurada, o bien de la programacin propiamente tal como variables, ciclos e iteraciones, la base se rige por estos 2 elementos y es as como nuestras aplicaciones operan, lo que podremos ir viendo de forma clara a medida que vayamos desarrollando ejemplos. Si hicieramos un paralelo entre ambos paradigmas, algo que probablemente no sea correcto, pero a modo de ejemplo quizs nos aclare ms los conceptos, si en la programacin estructurada en ocasiones trabajamos con libreras, las cuales contienen funciones, en la programacin orientada a objetos trabajamos con clases, las cuales a su vez contienen mtodos, y estos operan sobre cada uno de los objetos que declaremos. Como indicbamos, lo anterior solo sirve para hacer un paralelo, ya que en lo real vara un poco. No obstante, a medida que nos adentremos ms en el tema, iremos viendo una serie de caractersticas en las que podremos ir estableciendo comparaciones y que finalmente nos servir para entender de mejor manera todo esto. Sin embargo, independiente de cuantas comparaciones o definiciones veamos, siempre llegaremos a las 2 unidades base que mencionbamos antes y que comenzaremos a ver a continuacin: Objetos y clases. A partir de esto, es posible ir escalando el conocimiento relacionado a la programacin orientada a objetos, y eventualmente empezar a desarrollar de aquella forma.

3.- Hola, soy un objeto:


Y llegamos a la unidad bsica que de ahora en adelante aparecer en cada cosa que veamos y en cada ejemplo que codifiquemos: Los objetos. Si entramos a la definicin ms purista del paradigma, es posible definir un objeto como todo lo que vemos en el mundo real. Desde una casa, hasta un perro o incluso una fruta, todo es reconocido de esta forma y como tal debe ser modelado para luego poder operar sobre el. Los objetos son la base de la POO, tal como indica el mismo nombre, y por ende es necesario cambiar la forma en que modelamos, diseamos y desarrollamos aplicaciones para ajustarnos a este nuevo enfoque. Desde el inicio ms bsico hasta lo ms avanzado, siempre operaremos en torno a ellos y sern lo que construirn y definirn los distintos procesos que utilizaremos. Un objeto es definido, y diferenciado de otros, por sus caractersticas o atributos, tal como lo vemos en la vida real. Por ejemplo, si tomamos dos casos arbitrarios que consideraramos objetos en la vida real, como una persona y un auto, es posible ver que cada uno de ellos posee atributos que lo diferencian el uno del otro:

Persona Sus atributos seran: Nombres, Apellidos, Edad, etc. Auto Sus atributos seran: Marca, color, patente, etc.

Si comparamos los ejemplos anteriores, sus atributos especficos son los que nos ayudan a diferenciar cuando hablamos de uno y cuando hablamos del otro. En el caso de la POO es exactamente lo mismo. Definimos objetos y los diferenciamos en base a sus atributos. Posteriormente, dependiendo del objeto que tratemos, operamos de acuerdo a sus caractersticas para ejecutar procesos y obtener resultados, tal como cualquier tipo de programacin. Como podemos ver, esta es una definicin bastante bsica, e intencionalmente ha sido as considerando que este es nuestro primer acercamiento al paradigma. A medida que vayamos avanzando iremos viendo otros detalles importantes. Pero no se preocupen, con esto por ahora podremos seguir avanzando sin problemas. La intencin es que vayamos comprendiendo cada concepto desde su punto de vista ms bsico y de a poco interiorizarnos en temas ms avanzados.

4.- Clases:
Hemos hablado de los objetos y ahora es momento de cubrir el otro punto base que habamos indicado.

Por dnde partir? Por lo ms bsico.


En su definicin ms bsica podemos decir que una clase es una plantilla que describe a un objeto. Cmo lo describe? con 2 partes: Sus caractersticas. Su comportamiento.

La manera en que una clase describe las caractersticas de un objeto es mediante la definicin de sus atributos. Si, exactamente los mismos atributos que mencionbamos ms arriba que ayudan a diferenciar a un objeto de otro. Al definirlos se nos dice que son estos, y solamente estos, los atributos reconocidos para tal objeto y los que nos servirn como base para operar en nuestras aplicaciones. Por otro lado, describe el comportamiento de un objeto mediante la definicin de mtodos, los cuales operan y ejecutan tareas sobre los atributos de un objeto en particular entregndonos resultados para su respectivo despliegue. La estructura bsica de una clase es como sigue: Definicin de la clase. Definicin de atributos. Mtodos.

Tan simple como eso. A medida que veamos ejemplos podremos ir desglosando cada una de esas partes para un anlisis ms detallado.

5.- Mtodos:
Un mtodo es una funcin, declarada en una clase, que tiene como fin operar sobre un objeto para ejecutar tareas sobre sus atributos y obtener resultados, ya sea para seguir operando, o bien para entregar una salida al sistema y desplegarla en pantalla al usuario de la aplicacin. Tal como cuando se definan funciones en el desarrollo estructurado, los mtodos corresponden a un tipo de dato que debe coincidir con el resultado que retornan. Por ej: Podemos definir un mtodo de tipo int que se llame retornaEdad y que devuelva un entero que contiene la edad de un objeto de tipo persona. Si este mtodo fue definido como entero, no puede devolver un tipo de dato distinto, debido a su definicin inicial. Todos los mtodos que definamos deben devolver un tipo de dato que coincida con su definicin, a excepcin de los tipo void, que tal como en la programacin estructurada, pueden no devolver nada. Tambin, al igual que en las funciones, los mtodos pueden recibir parmetros que pueden ser utilizados en sus operaciones internas para producir resultados. En una clase cualquiera, declararemos siempre como mnimo 2 tipos de mtodos: 1 que crea el objeto(constructor que veremos en el prximo nmero) y 1 o ms que operen sobre el objeto creado. Con esta definicin de los mtodos, daremos por concluida la parte 11 de Cmo aprender a programar y no morir en el intento. Sabemos que este nmero ha sido mucho ms conceptual que tcnico y prctico, pero tengan paciencia. Los conceptos explicados ac son necesarios de entender antes de empezar a meter mano de lleno, algo que haremos desde el prximo nmero cuando ya empecemos a codificar nuestra primera aplicacin. A contar de la parte 12 ya comenzaremos a operar bajo un modelo de una parte de conceptos y un ejemplo al final de cada nmero, con el fin de que vayamos soltando la mano y vayamos aplicando todo lo que veamos. En la prxima edicin de Cmo aprender a programar y no morir en el intento:

1.

El Constructor (Y no hablamos de Bob).

2. Permisos. 3. Clase principal. 4. Creando nuestra primera aplicacin en POO.

Anda mungkin juga menyukai