Você está na página 1de 70

Cmo aprender a programar y no morir en el intento: Parte 1

Extrado de Como Lo Hago!

Ok, ok. Sabemos que el ttulo de este tutorial es tremendamente sensacionalista, algo extremo y har que
ms de alguno no quiera hacer click en el vinculo Leer ms, pero nos arriesgaremos.
Dando vuelta por Internet, nos dimos cuenta de que, a pesar de estar lleno de manuales sobre lenguajes de
programacin (C, C++, Java, PHP, ASP, .NET, etc), muy pocos sitios se enfocan a dar informacin para las
personas que les interesa adentrarse en el mundo de la programacin y desean saber como hacerlo y por
donde partir.
Es por esto que hoy, con el apoyo de nuestro buen Topher, damos inicio a una saga polmica y
complicada que esperamos hacer muy completa y lo ms simple que se pueda sobre como aprender a
programar, desde una introduccin con los conceptos ms bsicos hasta entrar de lleno a la programacin en
s.
Lo que buscamos en el fondo es que quienes esten interesados, a travs de estas guas puedanaprender a
programar y no solo aprender a hacer programas.
Estn listos?, el viaje es largo y hoy solo es la primera parada, as que busquen algo para comer, para
tomar, armen una mochila de campamento y empaquen un par de calcetines, ya que nadie sabe lo que nos
espera por delante.
Toda la informacin, como siempre (y si se atreven), despus del salto.
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.
4.

Primeros pasos para aprender.


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

2.

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

3.

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

4.

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
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
5.

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

6.

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,

7.

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.

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.
A 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.

Voy a la cocina.

2.
3.

Saco un huevo del refrigerador.


Saco una sartn.

4.
5.

Pongo un poco de aceite en la sartn.


Hecho el huevo a la sartn.

6.
7.

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.
2.

Voy a la cocina.
Veo si hay huevos en el refrigerador.

3.
4.

Si hay, saco un huevo y salto al paso 8


Si no hay, voy a comprar.

5.
6.

Para comprar, voy a buscar plata.


Si hay plata, saco y voy al paso 8

7.
8.

Si no hay plata, no se hace el huevo frito.


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.
Muchas gracias por leer y ser hasta una prxima oportunidad.

Cmo aprender a programar y no morir en el intento Parte 2


Extrado de Como Lo Hago!

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
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.
3.

Introduccin al Pseudo-Cdigo.
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.

Int: Corresponde a nmeros enteros (correspondiente al universo Z de las matemticas). El rango

2.

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.

3.

Char: Corresponde a valores de caractres alfanumricos (0 a 9 y abecedario). Solo se puede

4.
5.

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
pseudo-cdigo, 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.

Paradigma de programacin estructurada.


Paradigma de programacin orientada a objetos.

3.
4.

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.

Inicio: Se refiere al comienzo del programa.


Definicin/declaracin de variables: Aqu indicamos todas las variables que utilizaremos para la

3.

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

4.

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.

reas de memoria.

2.
3.

Variables.
Pseudo-cdigo.

4.
5.

Paradigmas de programacin.
Hicimos nuestro primer programa.

Bastante, no?, pues bueno, en la prxima gua nos enfocaremos principalmente en ms sobre Pseudocdigo:
1.

Definicin de variables.

2.
3.

Leyendo datos desde teclado (ingresados por el usuario).


Iteraciones condicionales (Si, Si no).

4.

Ciclos o bcles.

En una prxima edicin, a la misma batihora y en el mismo baticanal.

Cmo aprender a programar y no morir en el intento Parte 3

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.

Definicin de variables.
Leyendo datos desde teclado.

3.
4.

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

2.

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

3.

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.

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.

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

3.

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.

+: Suma.
-: Resta.

3.
4.

*: Multiplicacin.
/: Divisin.

5.
6.

Raz cuadrada (la sentencia depende de cada lenguaje).


Potenciacin (la sentencia depende de cada lenguaje).

7.
8.

%: Mdulo de la divisin (resto).


++: 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.
3.

Switch: Otra iteracin condicional.


Ciclos o bcles.

As que a armarse de paciencia, que hemos avanzado bastante pero an queda un largo camino por recorrer.

Cmo aprender a programar y no morir en el intento Parte 4


Extrado de Como Lo Hago!

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.
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.
3.

Switch: Otra iteracin condicional.


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

(condicin)

sentencia
Si

1;
no

Si(condicin)
sentencia

2;

Si
sentencia 3;

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

(edad

>

18

&&

Si
sentencia 2;

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

(edad

>

18

sentencia
Si

||

nombre==Juan)
1;
no

sentencia 2;
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

la

variable

es

Sentencia
Salir;
Si
Sentencia
Salir;
Si

x:
1;

la

variable

es

y:
2;

la

variable

es

z:

Sentencia
Salir;

3;

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:
leer(%letra,nombre);

mostrar(Ingrese

el

nombre

del

usuario:

);

.
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,
caso

tal

como

2:

lo

mostrar(Ingrese

el

explicamos
nombre

anteriormente.

del

usuario

/*

borrar:

);

anterior

*/

leer(%letra,nombre);

salir;
/*
caso

Luego

definimos
3:

el

caso

mostrar(Los

2,

tal

como

usuarios

el
son:

);

.
salir;
/* A continuacin el caso 3 */
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.

Mientras (o while en los lenguajes reales): Se ejecuta si es que la condicin dada se cumpla y

2.

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

3.

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

2.

nosotros o por un dato ledo desde teclado.


Un valor inicial para esa variable, una vez ms, definido por nosotros o por el usuario.

3.
4.

Una condicin para evaluar esa variable y que definir la duracin de la ejecucin del ciclo.
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.
3.

Arreglos unidimensionales: Vectores.


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.
Muchas gracias por leer y ser hasta una prxima edicin.

Cmo aprender a programar y no morir en el intento Parte 5


Extrado de Como Lo Hago!

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.
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

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

Numero j=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
leer(%numero,

el

valor

correspondiente

j++;
}
i++;
}
i=0;
j=0;
mostrar(Los valores ingresados son: );
Avisaremos que mostraremos los valores
mientras(i<4)
{
mientras(j<4)
{

la

fila

%numero

la

columna

%numero,i,j);
&matriz[i][j]);

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.
Muchas gracias por leer y ser hasta una prxima oportunidad.

Cmo aprender a programar y no morir en el intento Parte 6


Extrado de Como Lo Hago!

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.
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.

Funciones.
Ultimas consideraciones sobre Pseudo-cdigo.

3.
4.

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

variable

asignacin

de

valor

Operacin
Operacin

1
2

Operacin
Asignacin de resultados

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
{

nombre_funcin(parmetro

1,

parmetro

2,

etc.)

operacin
operacin

1;
2;

sentencia
sentencia 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

2.

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

3.

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

4.

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.

5.

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.

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
leer(%numero,

favor

ingrese

el

nmero

mostrar(Por
favor
ahora
ingrese
el
nmero
leer(%numero,
/* Mediante mostrar y leer, recibimos por teclado los 2 nmeros ingresados por el usuario */

1:

);
&num1);
2:

);
&num2);

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 pseudolenguaje, 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 pseudolenguaje 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,

2.

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

3.

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

4.

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.

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.

Introduccin al lenguaje C.

2.
3.

Variables en C.
Funciones bsicas.

4.

Iteraciones condicionales.

Como siempre recuerden que este tutorial ha sido:

Cmo aprender a programar y no morir en el intento Parte 7


Extrado de Como Lo Hago!

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.
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.

Introduccin al lenguaje C.
Libreras.

3.
4.

Variables en C.
Funciones bsicas.

5.

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.

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

2.

rango permitido.
char: Se utilizan para almacenar caracteres, tal como el tipo Letra de Pseudo-cdigo.

3.

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

4.

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

main(

{
cdigo

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 pseudocdigo, 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
%f: Si

la

la
variable

variable
es
un

es
decimal

un
punto

entero (int).
flotante (float).

%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 */
int
{
printf(Hola

main() /*

Declaramos
Mundo); /*

la
Mostramos

funcin
el

<stdlib.h>
<stdio.h>

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>
int

<stdlib.h>

main()

{
printf(Hola

mundo);

getch();
}
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.
3.

Iteraciones condicionales.
Ciclos o bcles.

Por ahora, recuerden que como siempre, este tutorial ha sido:

Cmo aprender a programar y no morir en el intento Parte 8

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.
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.

Comentarios.
Leyendo datos desde teclado.

3.
4.

Iteraciones condicionales.
Ciclos o bcles.

5.

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, Pseudocdigo 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

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

2.

entre otras.
El smbolo %: Este smbolo siempre debe ir por obligacin acompaando a los smbolos indicados

3.
4.

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.

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

<stdio.h>
<stdlib.h>

#include <conio.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

el

numero

%d,

numero);

getch();
/* 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
}

1;
2;

else
{
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

<stdlib.h>

#include
#include <conio.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
{

de

variable

condicin

aumento

decremento

de

la

variable)

sentencia
sentencia

1;
2;

sentencia
}

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

1;
2;

sentencia
}while(condicin);

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

<stdlib.h>

#include
#include <conio.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

<stdlib.h>
<stdio.h>

#include <conio.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.

Iteracin Switch.
Vectores.

3.
4.

Matrices.
Terminal de venta 2da parte.

Cmo aprender a programar y no morir en el intento Parte 9


Extrado de Como Lo Hago!

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.
Si recuerdan el nmero anterior, en esta ocasin veremos:

Contenidos:
1.
2.

Iteracin Switch.
Vectores.

3.
4.

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 pseudo-lenguaje, 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

<stdlib.h>
<stdio.h>

#include <conio.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

<stdlib.h>

#include
#include <conio.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

<stdlib.h>

#include
#include <conio.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

<stdlib.h>

#include
#include <conio.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.

Mtodo de ordenamiento: El mtodo de la burbuja.

2.
3.

Mtodo de busqueda: Bsqueda secuencial.


Funciones.

4.

Continuacin del trminal de ventas: Aadiendo un men.

Cmo aprender a programar y no morir en el intento Parte


10
Extrado de Como Lo Hago!

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..
Tal como adelantbamos en el nmero anterior, los contenidos de hoy:

Contenidos
1.
2.

Mtodos de ordenamiento: Mtodo de la burbuja.


Mtodos de bsqueda: Mtodo secuencial.

3.
4.

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.

Un vector o matriz donde estn almacenados los datos.


Una variable que recorre el vector.

3.
4.

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
int main()
{

<stdio.h>
<conio.h>

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.

Va a la posicin 1.
Compara el valor de esa posicin con el ingresado a buscar.

3.
4.

Si son iguales lanza un mensaje o guarda la posicin para futuras referencias.


De lo contrario pasa a la posicin siguiente.

5.

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
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]);

<stdio.h>
<conio.h>

// 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 pseudo-cdigo. 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

1,

valor

operacin
operacin

valor

n)
1;
2;

.
.
operacin n;
retorno
}

de

valor;

Veamos un ejemplo para dejar todo ms claro:


Ejemplo: Determinar el mayor entre 2 nmeros mediante el uso de una funcin:
#include
#include
#include <stdlib.h> // Incluimos las libreras
int numero_mayor(int valor1, int valor2); // Declaramos inicialmente la funcin
int main()
{
int num1, num2, mayor; //Declaramos las variables que utilizaremos

<stdio.h>
<conio.h>

// 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

<stdlib.h>

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

<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 dowhile 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.-

Mdulo

de
Administrar
Administrar
Cerrar

printf(Ingrese
scanf(%d,&menu);

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

opcin:

);

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.
3.

Estructuras.
Recursividad.

Você também pode gostar