Sei sulla pagina 1di 39

Cmo aprender a programar y no morir en el

intento: Parte 2

Nota: Si por alguna razn se perdieron la primera parte de esta saga, pueden leerla en este enlace.

Tenemos harto que aprender hoy, y un recuento de lo pasado sera solo acumular lneas, as que vamos,
manos a la obra:

Contenidos:

Tal como lo prometimos en el tutorial anterior, hoy veremos los siguientes temas:

1. reas de memoria alias Como almacena un computador la informacin


2. Introduccin al Pseudo-Cdigo.
3. Haciendo nuestro primer programa.

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

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
conarchivos 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 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.
2. 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 almacenar un valor
dentro de este tipo de variables.
4. Boolean: Corresponden a valores de tipo lgico. Almacenan slo 2 posibles valores: true o false.
5. 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.

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 lgicaque
posteriormente debemos implementar.

Lo principal que se debe entender, es que a pesar de establecer algunas reglas sobre como se operar con elpseudo-
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. Paradigma de programacin estructurada.


2. Paradigma de programacin orientada a objetos.
3. Paradigma de programacin orientada a eventos.
4. 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. Inicio: Se refiere al comienzo del programa.


2. Definicin/declaracin de variables: Aqu indicamos todas las variables que utilizaremos para la realizacin de
nuestro programa, junto con su tipo y en algunos casos, su valor inicial.
3. Cuerpo del programa: Aqu ir el desarrollo de nuestro programa, indicando informacin que recolectaremos,
operaciones y salidas (entrega de informacin).
4. 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.

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

dijo: 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 */

[/quote]

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. Variables.
3. Pseudo-cdigo.
4. Paradigmas de programacin.
5. Hicimos nuestro primer programa.

Bastante, no?, pues bueno, en la prxima gua nos enfocaremos principalmente en ms sobre Pseudo-
cdigo:

1. Definicin de variables.
2. Leyendo datos desde teclado (ingresados por el usuario).
3. Iteraciones condicionales (Si, Si no).
4. Ciclos o bcles.

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

Por ahora es mi deber recordar que como siempre, este tutorial ha sido desarrollado, probado y documentado
por el equipo de Como Lo Hago por lo que cuenta con nuestro infalible y a veces programable Sello de
garanta. Cualquier comentario, problema o duda que puedan tener, sientanse libre de dejarnos unas lneas en
el rea habilitada a continuacin.

Esperamos que este tutorial haya sido de utilidad para Uds.


Muchas gracias por leer y ser hasta una prxima oportunidad.

Parte3

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.

Como es habitual, partamos por revisar los contenidos de esta edicin:


Contenidos:
1.Definicin de variables.
2.Leyendo datos desde teclado.
3.Operaciones matemticas.
4.Iteraciones condicionales.
Es harta informacin, as que vamos de lleno a los temas:
1.- Definicin de variables
En el tutorial anterior ya dimos una explicacin de lo que son las variables y como se encuentran involucradas en los
procesos de la programacin, por lo que hoy nos enfocaremos solamente a su definicin y uso dentro del cdigo
propiamente tal.
Las variables tienen lo que se llama un ciclo de vida, que representa toda la duracin de una variable a travs de un
programa. Este ciclo de vida se inicia con la definicin o creacin de la variable y termina con la finalizacin del
programa o la liberacin del rea de memoria donde estaba contenida.
Para crear o definir una variable en pseudocdigo siempre se utiliza la siguiente sintaxis, la cual representa fielmente la
utilizada en los lenguajes de programacin reales:
Tipo Nombre Valor Inicial (opcional)
Tal como vimos en el tutorial anterior, en los lenguajes de programacin se utilizan ciertos tipos para definir los tipos
(valga la redundancia) de informacin que puede almacenar la variable en cuestin. Les recomiendo revisar ese tutorial
como recordatorio de los tipos que vimos. En pseudocdigo utilizaremos los siguientes tipos:
1.Nmero: Este tipo de variables almacenarn cualquier valor de tipo nmero, ya sea entero (conjunto Z) o bien real
(conjunto R del universo de las matemticas, o sea, enteros ms decimales). Cabe recordar que en los lenguajes
reales hay distintos tipos para los enteros y para los decimales, pero aqu los agruparemos todos dentro de este mismo
tipo.
2.Letra: Este tipo de variables almacenarn cualquier valor de tipo alfanumrico, ya sean caracteres (0-9 o A-Z) o
palabras y/o frases (como gato, o la casa roja). Tal como en el tipo anterior, hay que recordar que en los lenguajes
de programacin reales hay distintos tipos para tratar los caractres y las cadenas de palabras, pero aqu los
agruparemos dentro de un mismo tipo.
3.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.Debe ser nico. No pueden haber 2 variables con el mismo nombre.
2.No puede empezar con un nmero ni un underscore. Sin embargo pueden contenerlos dentro de su nombre. Si bien
no se puede nombrar variables como 2auto o _perro si podemos tener otras comoauto2 o perro_.
3.No pueden llevar como nombre una palabra reservada del lenguaje. Todos los lenguajes tienen ciertaspalabras
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 terceros nunca 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.+: Suma.
2.-: Resta.
3.*: Multiplicacin.
4./: Divisin.
5.Raz cuadrada (la sentencia depende de cada lenguaje).
6.Potenciacin (la sentencia depende de cada lenguaje).
7.%: Mdulo de la divisin (resto).
8.++: Incremento.
9.: Decremento.
10.<: Menor a.
11.>: Mayor a.
12.==: Igual a. (Se debe usar doble signo ya que el signo simple es para asignar valores).
13.!=: Distinto de.
14.&&: Y.
15.||: .
Hay algunas otras que iremos viendo ms adelante.
Ahora veremos un ejemplo donde operaremos con un nmero ingresado por teclado (comentarios en negrita, cursiva y
entre /* y */):
Inicio
/* Establecemos el inicio del programa */
Numero edad;
Numero resultado;
/* A continuacin definimos una variable de tipo Numero, de nombre edad y luego una variable de tipo Numero, de
nombre resultado. Luego de la sentencia ponemos un punto y coma para indicar el fin de esta, algo que utilizaremos
mucho cuando estemos programando en algn lenguaje, ya que eso le indica al entorno de programacin que es el fin
de la sentencia */
Principal( )
/* Definimos la funcin Principal que es donde ir el cuerpo del programa. Ya adentraremos el tema de las funciones
*/
mostrar(Ingrese su edad: );
leer(%numero,edad);
/* Utilizamos la funcin mostrar para desplegar un mensaje por pantalla . Luego con la funcin leer indicamos entre
parentesis el tipo de dato que recolectaremos, en este caso numero (acompaado de un porcentaje, esto es netamente
para ir acostumbrndonos a como leeremos los datos en lenguajes reales) y luego de la coma el segundo parmetro,
correspondiente a la variable donde almacenaremos la informacin, o sea, edad. Terminamos todo con un punto y
coma. */
resultado=edad + 10;
/* En la variable resultado ahora almacenamos lo que nos dar el sumarle 10 al valor ingresado para edad */
mostrar (Su edad en 10 aos sera: %numero,resultado);
/* Utilizamos la sentencia mostrar para enviar un mensaje que se despliegue en pantalla, seguido del tipo de variable
que desplegaremos, o sea numero y luego la variable que contiene la informacin, en este caso edad. Cerramos la
sentencia con un punto y coma para indicar que se ejecute la lnea */
Fin
/* Finalizamos el programa */
De esta forma desplegaremos un resultado de operar con un dato ingresado por el usuario. Dentro de esas
operaciones podemos hacer todas las detalladas con anterioridad.
4.- Iteraciones condicionales
Dentro de la programacin, en muchas ocasiones nos encontraremos con situaciones en donde se deber seleccionar
uno de dos o varios caminos a seguir dependiendo de los datos con los que se este trabajando. Para esto se cuenta
con lo que se llama iteraciones condicionales, lo que bsicamente nos dar el pie de tomar un camino a seguir
dependiendo de una condicin que indiquemos. Cada uno de estos caminos puede incluir una serie de operaciones
que perfectamente pueden ser distintas las unas de las otras.
La iteracin condicional por excelencia es, en el caso del pseudocdigo el Si y Si no(if y else en los lenguajes
reales). Un Si puede o no llevar un Si no, mientras que un Si no debe ir necesariamente a continuacin de unSi
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.

Bueno los espero en la cuarta edicion, no se olviden de comentar, seguir y dar puntos!!!

Ah les recuerdo que son 11 partes en donde veremos pseudocodigo , C y algo de C++
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 chispas muchos
esperaban, en la cual seguiremos viendo el maravilloso mundo de la programacin de una manera sencilla.

Continuaremos justo desde donde terminamos la ltima vez, as que sin ms que decir, los esperamos despus del
salto.

Cmo aprender a programar y no morir en el

intento: Parte 4

Nota: Si es primera vez que entran en estos tutoriales, les recomendamos leer las partes anteriores para estar al da
con lo que ya hemos cubierto:

Parte 1.
Parte 2.
Parte 3.

Y tal como es costumbre, partiremos por revisar los contenidos de esta edicin:

Contenidos:

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


2. Switch: Otra iteracin condicional.
3. Ciclos o bcles.
As que sin ms que decir, manos a la obra:

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:

dijo:Si (condicin)
sentencia 1;
Si no
Si(condicin)
sentencia 2;
Si no
sentencia 3;[/quote]

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 (edad > 18 && nombre==Juan)


sentencia 1;
Si no
sentencia 2;

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 || nombre==Juan)


sentencia 1;
Si 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.

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 x:
Sentencia 1;
Salir;
Si la variable es y:
Sentencia 2;
Salir;
Si la variable es z:
Sentencia 3;
Salir;

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 una opcin: n);


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

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

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

caso 1: mostrar(Ingrese el nombre del usuario: );


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

salir;
/* Luego definimos el caso 2, tal como el anterior */
caso 3: mostrar(Los usuarios 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:

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

Las diferencias quedarn claras en los ejemplos que daremos ms adelante. Tal como en el caso de las iteraciones
condicionales, existen situaciones ideales para el uso de cada uno de ellos. Sin embargo, hay una serie de casos
donde podemos usar cualquiera de ellos de forma eficiente.

Ahora, cuando usamos un ciclo, debemos definir ciertas cosas, como:

1. Una variable a utilizar en la condicin que definir la duracin del ciclo, la cual puede ser definida por nosotros o por
un dato ledo desde teclado.
2. Un valor inicial para esa variable, una vez ms, definido por nosotros o por el usuario.
3. Una condicin para evaluar esa variable y que definir la duracin de la ejecucin del ciclo.
4. Una instancia de cambio de la variable. Esta instancia, debe ir modificando el valor de la variable para que en algn
momento cumpla la condicin que define la duracin del ciclo, de lo contrario, el ciclo se ejecutar infinitamente.

La diferencia entre cada tipo de ciclo se ve principalmente en la forma en que definimos y utilizamos las cosas de la
lista anterior.

Veamos unos ejemplos para que esto quede ms claro:

Haremos un programa donde enumeremos del 1 al 100, utilizando los 3 tipos de ciclos descritos con
anterioridad.(comentarios en negrita, cursiva y entre /* y */ )

Inicio
/* Damos inicio al programa */

Numero num=1;
/* Declaramos una variable de tipo Numero y nombre num, y le damos el valor inicial 1, que es desde donde
partiremos a enumerar */
Principal( )
{
/* Definimos la funcin Principal que es donde ir el cuerpo del programa y abrimos llaves. Ya adentraremos
el tema de las funciones */

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

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

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

Fin

Como podemos ver, hemos declarado la misma operacin mediante 3 ciclos distintos. Cada uno de ellos desplegar el
mismo resultado, los nmeros de 1 a 100, pero la forma en que definimos estos ciclos es diferente. Con ms prctica
podremos ir viendo que tipo de ciclo es adecuado para que situacin. Idealmente a la sentencia mostrar en los 3 casos
podramos haberle aadido un salto de lnea, porque como esta declarado mostrar los nmeros uno al lado del otro.
Como es un ejemplo no es necesario que lo definamos.

Es bueno aadir que dentro de un ciclo, cualquiera de ellos, podemos definir todas las operaciones que estimemos
conveniente, incluidas iteraciones condicionales y todo lo que hemos visto hasta ahora como muestra de datos,
lectura de datos de teclado, etc.

Adems es bueno tambin recordar que todo ciclo debe tener un fin, por eso debemos ser cuidadosos al momento de
definir las condiciones de duracin, ya que un ciclo que corr eternamente matar nuestro programa.

Tal como debemos definir cuidadosamente el fin, un punto a considerar es que un ciclo no necesariamente debe
siempre ejecutarse, es por eso que definimos la condicin de inicio y duracin. Por ejemplo, podemos condicionar el
inicio de un ciclo a que cierta variable porte cierto valor y en caso de que no lo tenga, el ciclo nunca se ejecute.

El trabajo con los ciclos puede presentar cierta complejidad en sus inicios, pero a medida que vayamos avanzando se
ir simplificando.

Con esto cerramos la lista de contenidos de esta edicin del tutorial, definiendo que para el prximo nmero,
veremos:

1. Introduccin a los arrays o arreglos.


2. Arreglos unidimensionales: Vectores.
3. Arreglos bidimensionales: Matrices.

Todo a la misma batihora, en el mismo baticanal.

Como siempre, este tutorial ha sido desarrollado, probado y documentado por el equipo de Como Lo Hago, por
lo que cuenta con nuestro Sello de Garanta. Cualquier duda, problema o comentario, pueden dejarnos unas
lneas en el rea habilitada a continuacin.
Lo prometido es deuda, as que llegamos con una nueva edicin de esta gua en la que se intenta ayudarlos a
adentrarse al mundo de la programacin de la mejor manera posible.

En esta edicin, cubriremos las ltimas temticas relativas a programacin en pseudo-cdigo para ya a partir de
las prximas entrar de lleno en los lenguajes reales.

Todo el detalle, como siempre, despus del salto.

Cmo aprender a programar y no morir en el

intento: Parte 5

Como es habitual, veamos lo que cubriremos en esta ocasin:

Contenidos

1. Introduccin a los arrays

2. Vectores

3. Matrices

As que con todo especificado, vamos, a seguir aprendiendo:

Introduccin a los arrays

Hasta ahora, todos los datos con los que hemos trabajado los hemos almacenado en variables, las cuales entre sus
caractersticas podemos indicar que son capaces de almacenar un valor simple, o sea un nmero (de uno o ms
dgitos) o un carcter (o cadena de ellos) o un valor booleano. De cualquier forma siempre almacenan solamente un
y nada ms que un valor a la vez.

Pero, qu pasa si es que necesitamos almacenar ms de un valor?. Podramos usar ms variables, sin embargo,
cuando los valores necesarios de almacenar son 10 o ms, disponer de tantas variables, y ms importante an,
recordar sus nombres y manipularlas, puede ser bastante engorroso.

Para esto es que en la programacin disponemos de los arrays o arreglos, los cuales son variables que nos permiten
almacenar ms de un valor del mismo tipo y manipularlos, todo dentro de la misma variable.

Comunmente en los lenguajes de programacin, los arreglos solo pueden contener mltiples valores del mismo
tipo y hasta una longitud finita indicada al momento de su declaracin. Sin embargo, en algunos lenguajes especificos,
existen tipos de arrays que no se apegan a estas reglas (ya sea almacenando valores de distinto tipo o siendo
dinmicos, o sea, creciendo a medida que decidimos almacenar un nuevo valor en ellos).

Los arreglos pueden ser unidimensionales o bidimensionales. Los primeros en la programacin son conocidos
como vectores, y los segundos como matrices.

Independiente de su dimensionalidad, los arrays deben cumplir con ciertas caractersticas, algunas similares a las
variables que hemos visto hasta ahora y otras no tanto.

1. Nombre: Todo array debe tener un nombre, el cual debe cumplir con las mismas caractersticas de los nombres de
variable, o sea, debe ser nico, no debe ser una palabra reservada del lenguaje, ni empezar con nmeros, guiones o
underscores (pueden llevar alguno de los 3 ltimos entremedio).

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

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

Veremos algunos esquemas ahora que especificaremos los tipos de arrays.

Vectores

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

Numero vector[5];

Tipo nombre[largo];

El largo indicara cuantas posiciones tendr el vector, y por ende, cuantos datos se podrn almacenar.

Antes de seguir, debemos hacer una salvedad. En el mundo de la computacin, siempre se empieza a contar desde
el cero y no el uno. Eso debemos tener en cuenta cuando queramos acceder a una posicin, ya que estaremos
accediendo al nmero correspondiente a si empezramos a contar desde el cero. Por ejemplo, con ese vector que
recin declaramos, tendramos algo como esto:

_______
01234

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++;
}

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 %numero del vector, i);
leer(vector, &numero);
i++;
i=0;
}
mostrar(Los valores ingresados fueron: );

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, 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 lascolumnas. 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[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 matriz[4][4];
Numero 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 el valor correspondiente a la fila %numero y la columna %numero,i,j);


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

i=0;

j=0;

mostrar(Los valores ingresados son: );

Avisaremos que mostraremos los valores

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

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

mostrar(%numero,matriz[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.

Continuando con nuestra interminable reconocida y solicitada saga orientada a quienes se empiezan a adentrar al
mundo de la programacin, hoy les traemos una nueva edicin, realmente la ltima que veremos sobre Pseudo
lenguajes y adems las ltimas consideraciones previas a la entrada a los lenguajes reales.

Todo el detalle, como siempre, despus de la barra separadora.


Cmo aprender a programar y no morir en el

intento: Parte 6

Nota: Tal como dice el ttulo, esta es la 6ta parte de estas guas. Para un completo entendimiento, recomendamos, si
no lo han hecho, leer las partes anteriores, las cuales pueden ser encontradas en mis posts.

Con eso claro, veamos los contenidos que cubriremos hoy:

Contenidos

1. Funciones.

2. Ultimas consideraciones sobre Pseudo-cdigo.

3. Entrando a un lenguaje real.

4. Ms sobre los paradigmas de programacin.

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

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 1
Operacin 2
Operacin 3
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 1;
operacin 2;
sentencia 1;
sentencia 2;

retorno de variable;
}

Donde:

1. Tipo: Detalla el tipo de valores que devuelve la funcin. Estos tipos pueden ser los mismos que los de las variables,
los cuales han sido especificados en los nmeros anteriores de esta saga. Sin embargo, no hay que confundirse, ya
que por el hecho de que una funcin sea de un determinado tipo, no significa que dentro de las operaciones no puedan
declararse y usarse variables de otros tipos, solo debemos fijarnos que las variables que retornamos si lo sean. Se
debe definir un tipo para la funcin obligatoriamente.
2. Nombre de la funcin: Es un nombre nico, tal como si estuvisemos definiendo una nueva variable. El nombre de
la funcin puede ser cualquiera, pero es recomendable, por orden, darle un nombre adecuado. Por ejemplo si
definimos una funcin que encuentre el nmero mximo entre una serie de valores, es recomendable nombrar a esa
funcin como numero_maximo. De esa forma, siempre podremos ver que hace cada parte de nuestro programa
rpidamente cuando lo estemos revisando.
3. Parmetros: Tal como hemos definido en distintas partes de esta saga de tutoriales, los parmetros que recibe una
funcin son los que utilizar para operar dentro de ella y devolver resultados. Normalmente las operaciones declaradas
en una funcin son procedimientos estndar que varan dependiendo de los valores que manejamos. En una funcin
podemos recibir mltiples parmetros y estos pueden ser de distintos tipos, solo debemos asegurarnos de escribir
primero el tipo y luego el nombre de ese parmetro, tal como si definiramos variables. Estos nombres no pueden
repetirse dentro de la funcin.
4. Operaciones y sentencias: Bsicamente podemos hacer lo mismo que hacemos dentro de nuestros programas, ya
sea usar operadores matemticos, iteraciones condicionales, ciclos, mostrar, leer, etc. Todo est permitido.
5. 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 favor ingrese el nmero 1: );


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

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

mostrar(El nmero mayor de los que ingreso es: %numero, mayor);


/* Nuestra variable mayor ya recibi el resultado de la funcin, as que lo desplegamos */
}

numero numero_mayor(numero valor1, numero valor2)

/* Declaramos una funcin de tipo numero, llamada numero_mayor y que recibe como parmetro 2 variables de
tipo numero, llamadas valor1 y valor2, que corresponden a los num1 y num2 enviados desde arriba */
Si(valor1 > valor2)

{
retornar valor1;
}
Si no
{
retornar valor2;
}
/* Mediante una iteracin condiciional, hacemos una comparacin entre los 2 nmeros y retornamos el mayor
de los 2 para que se le asigne a la variable mayor y se muestre por pantalla al usuario. */
}

Fin

Con este simple ejemplo hemos podido apreciar un poco el funcionamiento y uso de las funciones en la
programacin. Hay un importante concepto que hemos utilizado ahora, pero que detallaremos ms en profundidad
cuando estemos hablando de lenguajes reales, que es el paso de parmetros desde una funcin a otra (lo que hicimos
cuando llamamos a la funcin y lo que esta recibe por el otro lado). Por ahora no vale la pena entrar en esos detalles,
pero ya los veremos ms completamente.

Con las funciones sucede lo mismo, esta pasada que le hemos dado ahora es bastante superficial, pero iremos
cubriendo otros aspectos y descubriendo sus usos completos y ms complejos a medida que vayamos programando
ms y ms. Por ahora es una buena tcnica ir combinando los otros contenidos que hemos visto en los captulos
anteriores con esto e ir practicando. Por ahora, al siguiente tema.

ltimas consideraciones sobre el Pseudo-cdigo:

En estos momentos que estamos llegando al final de nuestra cobertura sobre el pseudo-cdigo o pseudo-lenguaje, es
bueno repasar algunas consideraciones antes de adentrarnos al lenguaje real en el que decidamos programar,
por ejemplo:

1.- Recordemos que el pseudo-lenguaje no es un lenguaje de programacin real, y por ende, lo que hemos cubierto
hasta ac no lo encontrarn en libros o puede que aparezca de forma distinta. No se preocupen, el objetivo nunca ha
sido ni ser que nos convirtamos en expertos de pseudo-cdigo, si no que entendamos como se desarrollan los
procedimientos en la programacin y como plantearnos soluciones a los problemas mediante el entendimiento de la
estructura de los programas.

2.- El pseudo-cdigo, a pesar de no ser un lenguaje real, utiliza un paradigma estructurado y por la forma y palabras
que normalmente se uilizan, se asemeja bastante al lenguaje C, por lo que es la opcin natural para seguir. Veremos
ms de esto en el prximo punto.

3.- Lamentablemente, al no tratarse de un lenguaje real, no existe ningn software que podamos utilizar para
programar y as ver nuestros errores para poder solucionarlos. Esto por un lado es bueno, ya que agudiza nuestra
forma para leer el cdigo y detectar errores, algo que nos servir de sobremanera ms adelante.

4.- Es recomendable que repasemos e intentemos entender de la mejor forma todos los puntos explicados en esta y
pasadas ediciones de esta saga. Si bien hemos cubierto una pequea parte de todo lo que comprende la
programacin, hasta ahora hemos visto las bases fundamentales para entender los lenguajes reales y todo el resto de
aplicaciones dentro de la programacin, por lo que entender de la mejor manera estas bases ser esencial para que la
enseanza no se complique ms adelante.

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

Ms sobre los paradigmas de programacin:


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

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

Cmo aprender a programar y no morir en el

intento: Parte 7

Viendo que ahora ingresaremos a la programacin propiamente tal, es bueno indicar los:

Implementos necesarios:

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. Introduccin al lenguaje C.
2. Libreras.
3. Variables en C.
4. Funciones bsicas.
5. Primer programa en C.

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.

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.

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:
int: Se utilizan para almacenar y operar con nmeros enteros (correspondiente al conjunto Z de las matemticas).
Pueden almacenar tanto enteros positivos como negativos hasta un cierto rango (-32768 a 32767). Existen 2
variaciones que son el short int y el long int, los cuales varan en el rango permitido.
char: Se utilizan para almacenar caracteres, tal como el tipo Letra de Pseudo-cdigo.
float: Se utilizan para almacenar y operar con nmeros decimales (correspondiente al conjunto Q de las matemticas).
Adicionalmente se pueden utilizar para almacenar nmeros enteros, pero no es lo recomendable. Su rango va entre 3,4
*E-38 (elevado a) hasta 3,4 * E+38 (elevado a).
boolean: Almacenan datos de tipo booleano. Pueden tener 2 valores: true o false.
Esas son las variables principales que utilizaremos al programar. Iremos conociendo otras y viendo variaciones de
estas mismas a medida que vayamos adentrndonos ms y viendo ms ejemplos.

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 pseudo-cdigo,
utilizabamos la sentencia mostrar. En C, utilizaremos printf, la cual se utiliza de la misma forma que la venamos
utilizando hasta ahora, es decir:

printf(mensaje);

o bien

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

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

%d: Si la variable es un entero (int).


%f: Si la variable es un decimal o punto 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.

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 <stdlib.h>
#include <stdio.h>
/* Partimos por incluir las libreras stdlib.h y stdio.h mediante #include */

int main() /* Declaramos la funcin principal */


{
printf(Hola Mundo); /* Mostramos el 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 <stdlib.h>
#include <stdio.h>

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

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 numero anterior, nos adentramos en nuestro primer lenguaje real, C, haciendo una larga introduccin y
comparacin con lo que habamos visto hasta ahora, terminando con nuestro primer programa. En esta ocasin,
seguiremos adentrndonos ms en el tema y terminaremos con la confeccin de un programa algo ms complejo.

As que sin ms espera, los invitamos a seguirnos despus del salto, que no es en verdad un salto, sino que un leer
ms.

Cmo aprender a programar y no morir en el

intento: Parte 8

Nota: Como es habitual, les recomendamos, si no lo han hecho ya, leer los nmeros anteriores de esta saga, que
pueden encontrar en la lista de mis posts.

Tal como prometimos en el nmero anterior, en este veremos los siguientes contenidos:

Contenidos:

1. Comentarios.
2. Leyendo datos desde teclado.
3. Iteraciones condicionales.
4. Ciclos o bcles.
5. Ejercicio: Programando un terminal de venta simple.

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

Comentarios

Si nos hemos fijado hasta ahora, siempre que realizamos algn ejemplo o ejercicio de cdigo, en C, Pseudo-cdigo o
bien en nuestros tutoriales de PHP, siempre ponemos las explicaciones entre unos smbolos /* y */.

Esto, junto a otros smbolos, es lo que en la programacin (a todo nivel) se conoce como comentarios.

Los comentarios en la programacin, si bien no son obligatorios, se convierten en una herramienta util y su mayor
funcin es entregarnos la posibilidad de aadir pequeas anotaciones sobre lo que estimemos conveniente, ya sea
sobre el cdigo propiamente tal u otras cosas como notas de autora o funcionamiento del programa en s.

Por qu usar comentarios?

Principalmente por un tema de orden. Tenemos que pensar de que si bien nuestra memoria puede ser excelente, en
ms de alguna ocasin nos tocar revisar cdigos que hayamos realizado hace algn tiempo y puede que en ese
programa hayamos utilizado alguna funcin o lgica que no tiene sentido en este momento. Por eso el uso de
comentarios nos simplifica el tener que estar mucho tiempo deduciendo lo que alguna vez hicimos. Lo mismo se presta
para cuando nuestro cdigo es revisado por terceros o bien nosotros revisamos cdigos hechos por alguien ms.

Hay 2 formas de comentarios: los de lnea simple y los de mltiples lneas. La nica diferenciacin es en los smbolos
que utilizamos para iniciar y terminar los comentarios.

Cuando los comentarios son de lnea simple solo debemos aadir al principio de la lnea el smbolo // . Debemos tener
en cuenta de que solo ser vlido como comentario lo que escribamos en la misma lnea. Si pasamos a otra lnea lo
tomar como cdigo y nos lanzar error, por lo que debemos utilizar smbolo de comentario de mltiples lneas.

Para mltiples lneas, utilizamos el mismo que hemos usado hasta ahora, o sea al principio del comentario ponemos /*
y al final del comentario cerramos con */. Todo lo que escribamos entremedio ser considerado como comentario.

De cualquier forma, si es que les complica recordar los smbolos para cada caso, pueden utilizar siempre el formato de
mltiples lneas, que cubre comentarios ya sea en 1 lnea o en varias.

Leyendo datos desde teclado

Cuando trabajabamos en Pseudo-cdigo, una de las funcionalidades que ms utilizabamos, era la lectura o recepcin
de datos ingresados por un usuario va teclado. Eso nos permita interactuar de una mayor forma con quien utilizaba el
programa y realizar procesamientos mucho mejores y personalizados.

Pues bien, en C tambin podemos leer datos desde teclado, de una forma tan similar como en pseudolenguaje. Si
recordamos el tutorial anterior, hablbamos de la funcin scanf, la cual nos permita realizar esa tarea y que se utiliza
de la siguiente forma:
scanf(%tipodevariable, &nombredelavariable);

Como podemos observar, esta funcin presenta 2 parmetros: %tipodevariable (entre


comillas) y&nombredelavariable, los cuales a su vez presentan 2 signos: % y &. Vamos por parte explicando:

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

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.

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 1;
sentencia 2;
}
else
{
sentencia 3;
sentencia 4;

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

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 1;
sentencia 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 o decremento de la variable)


{
sentencia 1;
sentencia 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 1;
sentencia 2;
sentencia 3;
}while(condicin);

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

int numero;

int main()
{
numero=1; // Asignamos el valor inicial a la variable
while(numero<=10) // Partimos con un ciclo while
{
printf(%dn,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(%dn,numero); // Mostramos el nmero
}
numero=1; // Reinicializamos el nmero a 1

do // Terminamos con un ciclo do-while


{
printf(%dn,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.

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 <stdlib.h>
#include <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 productosn); /* Partimos por listar los productos, utilizamos t para separar los textos, tal
como si utilizaramos la tecla TAB */
printf(Codigot Nombret Precion);
printf(1t Sillat 100n);
printf(2t Puertat 350n);
printf(3t Sillont 200n);

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.

Hoy, en la parte 9, seguiremos viendo contenidos del lenguaje C, as como el programa que empezamos a
confeccionar en la edicin pasada.

As que los invitamos a seguirnos, como siempre, despus del salto.

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


Nota: Los nmeros anteriores de este curso de programacin han sido borrados temporalmente por los problemas que
atraviesa Taringa!

Si recuerdan el nmero anterior, en esta ocasin veremos:

Contenidos:

1. Iteracin Switch.
2. Vectores.
3. Matrices.
4. Continuacin de la confeccin de un terminal de venta.

As que vamos de lleno a la gua de hoy:

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 switch debe 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 <stdlib.h>
#include <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.

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 <stdio.h>
#include <conio.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(%dt,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.

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 por su unidimensionalidad, para las matrices aplicamos una definicin del
tipomatriz , 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 <stdio.h>
#include <conio.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 ma
triz */
{
for (int j=0; j<3; j++)
{
printf(%dt,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.

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

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

int main()
{
printf(t Lista de productosn);
printf(Codigot Nombret Precion);
printf(1t Sillat 100n);
printf(2t Puertat 350n);
printf(3t Sillont 200n);

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 <stdlib.h>
#include <stdio.h>
#include <conio.h> /* Incluimos las libreras */

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 productosn); /* Listamos los productos */
printf(Codigot Nombret Precion);
printf(1t Sillat 100n);
printf(2t Puertat 350n);
printf(3t Sillont 200n);
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 cantida
d, 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.

Bienvenidos a una nueva edicin de Como aprender a programar y no morir en el intento. Soy su anfitrin, Juan
Xabadu, y tal vez me recuerden de pelculas como: Querida, me ca del Taxi y Jurassic Park vs Forrest Gump como
siempre, los acompaare en esta gran aventura en que nos hemos embarcado hace bastante tiempo, dando nuestros
primeros pasos en el mundo de la programacin.

Hoy veremos los primeros contenidos sobre mtodos de bsqueda y ordenamiento, as como funciones y
continuaremos con nuestro ejemplo del terminal de venta.

El detalle, como siempre, despus del salto.


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

Tal como adelantbamos en el nmero anterior, los contenidos de hoy:

Contenidos

Mtodos de ordenamiento: Mtodo de la burbuja.


Mtodos de bsqueda: Mtodo secuencial.
Funciones.
Aadiendo un men al terminal de venta.
Vamos, manos a la obra:

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

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

Ahora, en un escenario ms normal an, estos datos nunca estarn necesariamente ordenados bajo algn criterio en
particular, por lo que si necesitaramos acceder a ellos bajo un orden especial, sera imposible lograrlo por si solo.
Para esto es que en la programacin existen los mtodos de ordenamiento, los cuales son bsicamente algoritmos que
realizan una lectura de una serie de datos y un posterior ordenamiento de acuerdo a ciertos criterios (alfabeticamente,
menor a mayor, etc).

Existen una serie de mtodos de ordenamiento como el de la burbuja, quicksort, insercin, seleccin, etc. Cada uno de
ellos se diferencia del otro tanto en su funcionamiento como en el costo (de ejecucin) que significan para el programa
en s.

Qu mtodo utilizar?

Si bien, como decamos, cada mtodo presenta ciertas ventajas por sobre otro, en ningn caso son diferencias
radicales y en estricto rigor no se notan a menos que trabajemos con cantidades msivas de datos, por lo que el
consejo por ahora es utilizar el mtodo que encontremos ms sencillo y/o nos acomode ms. A pesar de esto hay
escenarios que presentan una mejor adaptabilidad a un mtodo en particular. Ya iremos viendo ms de esto en futuras
guas.

Partiendo veremos uno de los mtodos ms conocidos y utilizados como es el mtodo de la burbuja, llamado de esta
forma por la forma en que se realiza el ordenamiento de datos, emulando una burbuja.

Cmo funciona el mtodo de la burbuja?

Este mtodo, utilizado comunmente cuando se necesita ordenar datos dentro de un vector o una matriz, funciona
mediante el uso de 4 variables:

Un vector o matriz donde estn almacenados los datos.

Una variable que recorre el vector.

Una variable que recorre el vector una posicin ms adelante que la variable anterior.

Una variable auxiliar

La forma de funcionamiento es bastante simple: Nuestro vector es recorrido por una variable (la definida en el nmero
2) y por otra en una posicin ms adelante. Vamos realizando una comparacin entre las 2 variables y si se cumple el
criterio establecido se hace un movimiento circular: El valor ms adelantado pasa a la variable auxiliar, el valor ms
atrasado pasa a la posicin adelantada y el valor de la variable auxiliar pasa a la posicin retrasada. Esto se realiza
hasta que se alcanza el final del vector en cuestin.

Veamos un ejemplo de este mtodo de ordenamiento:

Ejemplo: Ordenar un vector de tamao 5 de menor a mayor mediante el mtodo de la burbuja (los comentarios, como
siempre, en negrita, cursiva y entre /* y */):

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

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

arreglo = Un vector de 5 posiciones donde tendremos los valores.


i,j = Variables para recorrer el vector.
aux = Variable para guardar un valor mientras lo ordenamos
*/

printf (Ingrese valores para llenar el vector:n);


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

/* 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 > arreglo[i+1])
{
aux = arreglo;
arreglo = 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] = %dn, i, arreglo);

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:

Va a la posicin 1.

Compara el valor de esa posicin con el ingresado a buscar.

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

De lo contrario pasa a la posicin siguiente.

Repite pasos 2,3,4.

Como podemos apreciar, es un funcionamiento simple y bsico, pero que funciona. El gran problema radica cuando
estamos operando con una cantidad masiva de datos, ya que los accesos a memoria seran demasiados y el costo de
ejecucin (algo que los programadores siempre deben tener en cuenta) sera alto.

Adicionalmente es bueno aadir que ese ejemplo referencia a un escenario ideal donde los cdigos no estn repetidos.
En caso de que lo estuviesen, deberamos avisar en cada posicin que se encuentre una coincidencia.

Veamos un ejemplo de bsqueda secuencial:

Ejemplo: Llenar un vector de tamao 5 con nmeros y luego buscar algn valor y mostrar por pantalla la posicin en la
que se encuentra:

#include <stdio.h>
#include <conio.h>
#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);

// 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 == 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 2 valor n)


{
operacin 1;
operacin 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 <stdio.h>
#include <conio.h>
#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

// 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 <stdio.h>
#include <conio.h> /* Incluimos las libreras */

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 productosn); /* Listamos los productos */
printf(Codigot Nombret Precion);
printf(1t Sillat 100n);
printf(2t Puertat 350n);
printf(3t Sillont 200n);
printf(nPara cerrar la venta, presione 4); /* Aadimos la opcin para cerrar la venta */

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

if(codigo==1) /* Igualamos el cdigo para asignar el precio */


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

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

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

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

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

llamado a libreras

declaracin de variables

inicio de funcin main

do
{
printf(1.- Mdulo de ventasn);
printf(2.- Administrar productosn);
printf(3.- Administrar clientesn);
printf(4.- Cerrar sisteman);
printf(Ingrese opcin: );
scanf(%d,&menu);

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:

Paso de parmetros por valor y por referencia.


Estructuras.
Recursividad.
Cualquier duda que puedan tener, los invitamos a dejarnos un comentario 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.

Potrebbero piacerti anche