Está en la página 1de 206

FUNDAMENTOS

DE
PROGRAMACIN
Para principiantes
Primera edicin
Ral Antonio Zavala Lpez
Roberto Llamas Avalos
Derechos reserv ados 2013

Derechos y
condiciones
Fundamentos de programacin para principiantes
Derechos reserv ados 2013 por Ral Antonio Zav ala
Lpez y Roberto Llamas Av alos.

Agradecimientos
Nos gustara agradecer a todas aquellas personas que
compraron esta publicacin, con el f in de conocer un poco ms
en que consisten los fundamentos de programacin y sus
interacciones.

Regalo gratis
Colaboradores
As mismo quisiramos agradecer sin duda alguna al
maestro Lauro Enrique Soto Landeros que prest parte de su
tiempo en la rev isin y sugerencias de algunas de las
cuestiones planteadas en esta edicin.

ndice
Subportada
Derechos y condiciones
Agradecimientos
Regalo gratis
Colaboradores
Pref acio
1.- Conceptos bsicos
1.1.- Clasif icacin del sof tware
1.2.- Algoritmo
1.3.- Lenguaje de programacin
1.4.- Programa
1.5.- Programacin
1.6.- Paradigmas de la programacin
1.7.- Editores de texto
1.8.- Traductores
1.9.- Programa ejecutable
2.- Algoritmos
2.1.- Anlisis de problemas
2.2.- Representacin grf ica de los algoritmos
2.3.- Diseo de algoritmos
3.- Introduccin a la programacin
3.1.- Caractersticas del lenguaje de programacin
3.2.- Estructura bsica de un programa
3.3.- Interpretacin de un programa
3.4.- Ejecucin de un programa
3.5.- Elementos del programa
5

4.- Control de f lujo


4.1.- Estructuras secuenciales
4.2.- Estructuras selectiv as
4.2.1.- Selectiv a simple
4.2.2.- Selectiv a doble y compuesta
4.2.3.- Selectiv a anidada
4.2.4.- Selectiv a mltiple
4.2.5.- Selectiv a intenta (Try /Catch)
4.3.- Estructuras repetitiv as
4.3.1.- Repetir hacer-mientras (Do-While)
4.3.2.- Repetir mientras (While)
4.3.3.- Repetir desde (For)
5.- Arreglos
5.1.- Arreglos de dimensin uno (unidimensionales)
5.2.- Arreglos de dimensin dos (bidimensionales)
Autores
Bibliograf a

Prefacio
Todos en algn momento al utilizar una computadora, una tableta
o un celular nos hemos puesto a pensar en cmo es que la
sociedad actual ha logrado construir aplicaciones a
medida, de tal manera que se satisf aga la gran demanda de
aplicaciones que da con da se exigen a niv el mundial. (Que la
creacin de un documento, que la creacin de una base de
datos, que la creacin de un programa que calcule una tabla de
valores, etc ), en fin un abismo de aplicaciones.
Llev ando consigo esta demanda una serie de aplicaciones que
pueden ir desde un simple editor de texto hasta lo complejo,
como el diseo asistido por computadora (CAD - Computer
Assisted Design). Por destacar solo algunas de ellas.
A este tipo de cuestiones no es posible dar respuesta a simple
v ista la gran may ora de v eces, pues todo un sistema se
encarga de que as sea a f in de no daar la experiencia del
usuario.
Pues generalmente el usuario desea hacer lo suyo y nada ms,
por tanto existen excepciones donde el usuario desea conocer
ms all de lo que utiliza cotidianamente.
Es ah donde entra en detalle esta publicacin, cuy o f in es
ilustrar un poco al lector de los conceptos bsicos que
sustentan el pilar de las tecnologas en cuanto a la
programacin general se ref iere, es decir la lgica bsica
7

implcita dentro de los programas (Aplicaciones).


Abordando conceptos como: software, clasificacin de software,
lenguaje de programacin, programa, paradigmas de la
programacin, etc.
Para despus lograr construir un programa o al menos
tener idea de cmo es que se construyen.
Todo ello a travs de la dinmica de contenido: Concepto >>
Ejemplo >> Ejercicio.
Estas tres etapas han resultado ser muy ef ectiv as en un primer
y segundo semestre de ingeniera en sistemas
computacionales o en su equiv alente ciencias de la computacin
en algunos pases.
Como en lo personal hemos podido corroborar ambos autores.
En el captulo 1, se abordan todas aquellas cuestiones de
terminologa bsica y esencial para el correcto entendimiento de
conceptos un poco ms complejos como lo es la nocin de
algoritmo.
As mismo en el captulo 2 abordamos los detalles que rodean el
mundo del anlisis y construccin de un algoritmo, siendo esta la
parte ms importante del ncleo de la publicacin.
Para finalmente en los captulos 3 y 4, abordar lo que se
necesita conocer para sentar ya nuestros algoritmos creados en
algn lenguaje de programacin en concreto.
Detallando a manera de resumen aquello que se podr encontrar
8

en dicha publicacin a lo largo de su contenido.


Los ejemplos dictados en esta publicacin se encuentran
construidos en el lenguaje de programacin C# (Csharp), ms
esto no signif ica que no puedan ser construidos en cualesquier
otro lenguaje como: C, C++. Delphi, Java, etc. con tan solo unas
ligeras v ariaciones en la sintaxis. Pues cabe recordar que la
lgica de los programas es lo que dictamina realmente el ncleo
de estos por ello pueden construirse en cualquier otro lenguaje
de programacin con el correcto paradigma.
Cabe destacar que el objetiv o principal de dicha publicacin, es
incitar al lector a aprender la lgica que suby ace a los
programas y a inducirlo en el mundo de la programacin en
general, por ello es posible que algunos lectores no encuentren
como un reto los temas a abordar o bien los ejemplos
desarrollados en lenguaje C# en caso de poseer amplio
conocimiento en el sector de la programacin.
Por ello podemos afirmar que el contenido va dirigido a todas
aquellas personas que desee tener una nocin bsica de la
programacin lo suficiente para construir sus propias
aplicaciones.
As bien, dedicamos esta publicacin a un excelente educador y
amigo el maestro Lauro Enrique Soto Landeros quien nos ha
enseado bastante en mbito de la computacin. Esperamos
que el lector encuentre a manera de lectura cotidiana o por
ratos esta publicacin de gran ayuda, en lo que al camino
de su conocimiento se refiere.

1.- Conceptos
bsicos
(Qu es software?, Cules son los tipos?, etc.).
Un ser humano piensa y se comporta como tal siguiendo
una secuencia lgica de acciones. Esta misma asociacin
podra acoplarse en cuanto al rol de una computadora se
ref iere.
Af irmando que una computadora es una mquina electrnica
capaz de realizar y manejar datos en memoria siguiendo una
secuencia lgica de pasos, para aquellos que hay a sido
programada.
Tener nociones de la programacin de computadoras es
indispensable en cualquier sector de la vida hoy en da, ya que
existen distintos problemas que como tales no es posible
solucionarlos de la manera tradicional en la cual un ser humano
los realiza. Es ah donde entra el rol de la computadora, es decir
nos ay uda a resolv er estos problemas por as decirlo sin
solucin o con solucin aparentemente muy complicada para un
humano de manera rpida o con un margen de tolerancia
suf icientemente bueno.
Es por ello que se menciona en muchas ocasiones el concepto
de programacin en general.

10

Cabe destacar que la complejidad de la programacin de


computadoras depender del problema que trate de
solucionar, de tal manera que si abordamos un problema
extremadamente complicado a nivel tradicional es posible
que siga siendo en computacin de igual manera
complicado solo que con una tolerancia moderada.
Es importante comprender que toda esta idea de poder dar
solucin a problemas con may or rapidez y ef icacia se debe en
gran parte a los av ances y progresos de
la electrnica, la matemtica, la f sica, etc. Llegando al grado
de poder almacenar un programa.
Siendo justamente esta idea la pieza angular que sustenta los
datos en un programa o en s un programa. Desenvolviendo
hasta nuestros das est idea y llevndola a los lmites de lo
posible, es por ello que podemos ver reflejado muchas de las
actividades consideradas antes cotidianas en una aplicacin o
programa.
Qu es software?
La gran may ora de los usuarios tienen por idea ms o menos
de que se trata o en que consiste. Algunos dirn que son
los programas otros dirn que son un conjunto de instrucciones
con acciones definidas.
Ambas ideas podra v erse como ciertas, pero la v erdad es
que software como tal, es v isto de manera abstracta la gran
may ora de ocasiones es por ello que se def ine a tal como:
Todo aquel soporte lgico que podra proporcionarse a un
11

1.5.- Programacin
Consideramos como programacin aquella ciencia o arte que nos
permite en un momento dado programar una computadora con el
f in de resolv er o encontrar la solucin a un problema planteado.
Podemos ver as mismo, tambin este hecho como la accin de
expresar un procedimiento de solucin por medio de una mquina
capaz de procesar y otorgar soluciones.
Es por ello que un programa de computadora se puede def inir
por medio de una secuencia de instrucciones indicando las
tareas o acciones que han de realizarse para encontrar o dar
solucin a un problema.
De manera ms general puede v erse a la programacin como la
interpretacin o traduccin de un (Algoritmo) a un f ormato legible
para la mquina, en este caso la computadora.
Si un algoritmo a seguir es lo suficientemente bueno, la
programacin ser relativamente sencilla en trminos bsicos.
Podemos clasificar a la programacin de acuerdo a lo que
se conoce como: Paradigmas de la programacin.

1.6.- Paradigmas de la
programacin
Def inimos como paradigmas de la programacin aquellos
criterios o maneras en cual se tiende a abordar la construccin
16

cuando se requiera sin preocuparnos por def inir cmo llegar a lo


que deseado o como presentarlo.
Ejemplo:
SELECT * FROM Clientes WHERE PKCliente = 11210308
ORDER BY Nombre;
Funcional.
Este paradigma se centra en aquellos lenguajes, cuy o
f uncionamiento se basa en programas escritos nicamente por
definiciones de funciones, entendiendo por f unciones no
aquellas construidas de manera tradicional, es decir
(subprogramas) que es propiamente de los lenguajes
imperativ os sino que el contexto de la definicin de funciones se
centra en f unciones de carcter matemtico la gran may ora de
v eces.
En donde dichas deben cumplir ciertas propiedades a fin de
poseer una lgica en su definicin.
Cabe destacar que en lo que respecta a las caractersticas de
estos lenguajes, sobresalen la no existencia de asignaciones de
variables y la falta de estructuras como: la secuencia e
iteracin. Lo cual inclina a que el usuario por ejemplo emplee
f unciones recursiv as a f in de f ungir un bucle o ciclo, etc.
Entre los lenguajes que es posible encontrar en la actualidad que
utilizan un paradigma f uncional puro tenemos: Haskell, Miranda,
etc. Y aquellos lenguajes que utilizan un paradigma f uncional
hbrido: Lisp, Ocaml, Scheme, Scala, etc. por mencionar solo
19

1.7. Editores de texto


Denominamos como editores de texto aquellos programas que
nos permiten la entrada de caracteres, y a sea por medio de un
dispositiv o de entrada como lo es: un teclado, una pantalla
tctil, etc. Para su almacenamiento sin ejercer ningn tipo de
operacin compleja con tales caracteres.

1.8. Traductores
As como existen lenguajes de programacin dependiendo del
niv el de abstraccin del sof tware, existen div ersos
componentes dentro del rol de cada lenguaje que ay udan a que
s mismo cumpla con su objetiv o traduciendo o interpretando las
instrucciones de un lenguaje de programacin a otro.
Tales componentes son: intrprete y compilador.
Intrprete.
Def inimos como intrprete aquel componente que v a
traduciendo de lnea en lnea las instrucciones (cdigo de
programacin), sin dejar constancia de la misma traduccin.
Por lo cual cada v ez que se desee ejecutar un determinado
programa es necesario traducir todo de nuev o. Dicho de otro
modo, tal componente no construye un programa ejecutable.
Compilador.

22

2.- Algoritmos
(Qu son?, Cmo se construyen?, etc.).
Cada da como personas integras y derechas, tendemos a
desarrollar una serie de activ idades a lo largo del mismo.
Que tomamos el desayuno antes de asistir a la escuela, que
bebemos caf antes de acudir al trabajo, que tomamos una
pequea siesta a las 4 de la tarde, etc.
Todas estas activ idades generalmente y a se encuentran
programadas en nuestro cerebro, no porque las hay amos
memorizado sino porque tenemos entendimiento que debemos o
queremos realizarlas.
Ese mismo entendimiento es lo que nos permite alcanzar un
objetiv o o resultado en comn, que en este caso podra v erse
como el hecho: De tomar el desayuno, de tomar el caf, etc.
De tal manera que podemos resolver distintos problemas u
obstculos a lo largo del tiempo.
Conv irtindonos en personas capaces de resolv er problemas,
es decir personas capaces de implementar algoritmos a f in de
resolv er problemticas presentes.
Qu son? [Definicin].
Consideramos como algoritmo aquel conjunto de pasos o

24

instrucciones con un orden y una terminacin que nos conducen


a la solucin de un problema determinado.
El contexto de origen de aquellos problemas a abordar,
depender en s en que mbito se trate de dar solucin a los
problemas.
Es decir, si son problemas de carcter matemtico, problemas
de carcter lgico, problemas de carcter social, etc. De tal
manera que es este mismo origen, el cual delimita si es posible
por naturaleza dar solucin a un problema a trav s de una
computadora o no.
Ref erente a esta publicacin, nos limitaremos a emplear solo
aquellos algoritmos que puedan expresar soluciones dentro del
marco de la computacin, a estos algoritmos los denominados:
Algoritmos computacionales.
En el margen de lo f ormal el concepto de algoritmo es extendido
a la idea de un conjunto de acciones, procedimientos o pasos
con un orden y una terminacin que nos permiten formular o
alcanzar alguna solucin a un problema en concreto.
Cmo se construyen?
Suena increble que la construccin de s mismos muchas
v eces ocurre en lo v ago de nuestro subconsciente, de tal
manera que ejecutamos algoritmos de manera inconsciente o
inv oluntariamente casi por magia se podra decir. As de gran es
la razn pensante del ser humano.
Por otro lado esto no signif ica que la construccin de tales
25

ocurra de esta manera todo el tiempo, lo que pasa es que


cuando aplicamos un algoritmo de manera subconsciente es por
el hecho de que el problema asociado a la ejecucin del
algoritmo ha sido resuelto por nuestro cerebro un gran nmero
de ocasiones y pon ende solucionamos el problema
automticamente.
Esta situacin generalmente se presenta en lo que se conoce
como: Algoritmos cotidianos. Es decir, algoritmos que aplicamos
probablemente todo el tiempo pero pocas v eces nos ponemos a
pensar en las serie de pasos que conllev an estos.
Por ejemplo la misma accin de caminar, ahora no representa un
reto por lo cual en v eces mencionamos que lo hacemos por
inercia, pero basta nada ms con v er a un bebe para darse
cuenta si el mismo no ejecuta una serie de pasos antes de
poder caminar bien.
El hecho de aplicar un algoritmo no debe suponer hacer uso de la
intuicin o mejor an la creatividad, por lo cual cuando
apliquemos un algoritmo debemos llegar a la misma condicin de
solucin todo el tiempo.
De lo contrario si en un caso no llegramos a una misma
condicin de solucin entonces y a no se podra llamar a s
mismo un algoritmo tendramos que considerar otro trmino.
De dnde viene esta nocin de algoritmo?
Si nos disponemos a inv estigar de donde deriv a la palabra
algoritmo es muy probable que nos topemos con la idea de que
prov iene del nombre latinizado de un matemtico persa llamado
26

Mohamed Ibn Al Kow Rizmi, el cual recibe el crdito por haber


implementado una serie de reglas utilizadas para realizar
operaciones elementales (suma, resta, multiplicacin y divisin).
Casi en s, todo el origen de esta nocin est ligado con las
matemticas y su necesidad de dar solucin a problemas. Pues
en ellas se implica una serie de algoritmos todo el tiempo, por lo
tanto es muy probable que un excelente matemtico sea un
excelente creador y aplicador de algoritmos.
Contexto de aplicacin.
Dentro del rol de la computacin, es posible af irmar que un
algoritmo f orzosamente no es dependiente de un lenguaje de
programacin por tal motiv o que para resolv er un problema no
necesitamos tener un programa en C, C++, etc. Si lo
tuv iramos programado en cualesquier otro lenguaje de
programacin igualmente tendramos la solucin al problema de
todos modos.
Es por ello que generalmente se habla en las clases de
(fundamentos de programacin o introduccin a la programacin)
de la independencia de los algoritmos f rente a los lenguajes de
programacin.
As mismo son independientes a las computadoras de igual
manera (que si es una computadora con un procesador de 3.00
GHz y 2 ncleos o 1 ncleo, etc.), pues igualmente podemos ir
a otra computadora con las mismas o menores condiciones y
ejecutar el algoritmo y obtener la misma condicin de solucin.
Que un especfico algoritmo se ejecute ms rpido en
27

2.1.- Anlisis de problemas


Anlisis de los datos.
Es necesario cuando nos disponemos a solucionar un problema
hacer un anlisis de los datos, es decir reconocer con que datos
se cuentan y cules son los datos que se pretenden conseguir,
para despus lograr asociar algn proceso u operacin a f in de
obtener aquellos datos que deseamos conseguir (solucin).
Podra asociarse este mismo hecho, por ejemplo con la especie
de anlisis que se efecta al momento de tratar de dar solucin a
problemas en matemtica o fsica (determinacin de fuerza,
frecuencia, etc.).
Marco de solucin.
La razn del porqu aplicar un anlisis de los datos se debe a
que esto nos permite crear un marco de solucin en cuanto a la
solucin de un problema se ref iere delimitando un proceso a tres
etapas:
Etapa 1: La entrada de los datos (Datos de entrada).
Etapa 2: El procesado de los datos (Proceso).
Etapa 3: La salida de los resultados (Datos de salida).
Patrn de seguimiento.
Denominamos como patrn de seguimiento al f lujo o ejecucin

29

de las distintas etapas de un marco de solucin.


Etapa 1 >> Etapa 2 >> Etapa 3.
Datos de entrada >> Proceso >> Datos de salida.
A continuacin se cita un ejemplo que ilustra la utilizacin del
marco de solucin.
Ejemplo. Calcular el rea de un rectngulo.
Tenemos como (Datos de entrada) en la etapa 1:
La base del rectngulo (Base).
La altura del rectngulo (Altura).
Como (Proceso) en la etapa 2, tenemos la frmula para
calcular el rea del rectngulo:
rea = Base x Altura.
Y como (Datos de salida) en la etapa 3, tenemos:
rea. Es decir el rea ya en s.
Ejercicios
A f in de practicar el marco de solucin se enlistan los siguientes
problemas:
1. Calcular el rea de un rombo.
2. Convertir minutos a horas.

30

2.2.- Representacin grfica de


los algoritmos
Diagramas de flujo.
Tendemos a representar grf icamente un algoritmo mediante un
conjunto de smbolos, cuy o objetiv o es ilustrar los pasos a
seguir para llegar a la solucin de un problema.
Es decir, el conjunto de smbolos nos ay udan a representar
ciertas acciones, operaciones, datos o f lujos y a def inidos
dentro del contexto de un algoritmo en computacin.
Tales como por ejemplo:

El inicio de un programa.

La entrada de los datos.

Un proceso u operacin.

La salida de los datos.

El fin de un programa.

Entre otros El objetivo de utilizar este medio de


representacin se encuentra en el hecho de transmitir de
manera clara y concisa el propsito de un algoritmo.
A f in de ev itar una serie de lneas que otros medios de
representacin de algoritmos podran ocupar como por ejemplo
32

el (Pseudocdigo).
La representacin grf ica es uno de los ms antiguos dentro de
la computacin y a su v ez uno de los ms utilizados todav a.
Formalmente llamamos como diagrama de flujo aquella
representacin grfica utilizada para definir el algoritmo
de un problema a fin de representar las distintas
operaciones, datos o flujos mediante smbolos.
Un diagrama de f lujo utiliza unos smbolos considerados
estndar en la actualidad, como los que se muestran a
continuacin:

33

35

3.

4.

5.

6.

estandarizados para conectar los elementos como las


lneas de flujo en f orma horizontal o v ertical (Por
aquello que una persona puede utilizar sus propios
smbolos para definir un algoritmo de flujo, pero la
persona que interprete el diagrama no entender el
propsito del mismo).
Se debe hacer uso de conectores cuando as lo
requieran las dimensiones del diagrama de f lujo en una
hoja de papel o documento.
Debe de ev itarse a toda manera dejar alguna lnea de
f lujo sin asociar a algn proceso o accin (Es decir,
lneas de flujo sin conectar).
Es pref erente iniciar el dibujo o trazado de smbolos
desde una parte superior a inf erior, de igual manera a
f in de f acilitar la lectura del diagrama de f lujo desde
una parte izquierda a una parte derecha.
Cualesquier texto utilizado para expresar la accin de
un smbolo, es pref erente ser escrito de manera clara
y concisa, ev itando ambigedades con el uso de
muchas palabras en el texto esto (Siempre y cuando el
texto se pueda expresar en palabras breves y
concisas).

Por ejemplo, la estructura del diagrama de f lujo siguiente:


Diagrama de flujo:

38

Nota: Puede que se hay a empleado muchas palabras dentro de


los smbolos a criterio de algunos lectores, esto se realiz ms
que nada por el concepto de ilustrar mejor el diagrama de f lujo
ref erente al marco de solucin bsico.
Pseudocdigo o (Seudocdigo).
Denominamos como pseudocdigo o seudocdigo aquella f orma
alternativ a para representar un algoritmo. Que hace uso de
palabras reserv adas dentro del contexto de la computadora y el
lenguaje natural (Como el espaol, ingls, chino, etc ) a f in de
expresar o describir el algoritmo.
As mismo tambin, se le asocia u observ a como una especie
de mezcla entre un lenguaje de programacin general y un
lenguaje natural, se utiliza en div ersos paradigmas de
programacin debido a su ef ectiv idad.
En general, el pseudocdigo de un algoritmo nos ayuda
en ilustrar aquellos pasos a seguir en forma de listado con
el objetivo de llegar al resultado de un problema
(programa).
Por ejemplo, el siguiente pseudocdigo ref erente al diagrama de
f lujo prev io:
Pseudocdigo:
1. Inicio.
2. Leer datos.
3. Procesar datos.
40

2.3.- Diseo de algoritmos


Caractersticas de los algoritmos.
A continuacin se enlistan una serie de caractersticas que
establecen porque se def inen de tal manera, es decir porque los
llamamos algoritmos.
Determinacin: Un algoritmo con un conjunto de datos de
entrada (iguales), debe responder con los mismos resultados
todo el tiempo. De tal manera que si se sigue un nmero de
ocasiones se debe llegar al mismo resultado en cada ocasin.
Definicin y precisin: Las acciones, tareas o pasos
establecidos dentro de un algoritmo, deben estar def inidos de
manera clara y concisa. De tal manera que sea posible precisar
que se est haciendo en cada uno de los pasos.
Efectividad: Toda operacin implcita dentro de un algoritmo
debe ser de tal f orma que podamos llev arlas a cada de manera
manual y en un tiempo f inito por una persona (Aunque muchas
v eces las operaciones sea laboriosas).
Finitud: Un algoritmo independiente si este tiene un proceso
largo o complicado. Debe de tener un punto en el cual f inalice.
Nota: El orden de las caractersticas no se encuentra de
acuerdo a un orden en especfico dentro de las nociones de
definicin de un algoritmo.
Partes que dan descripcin a un algoritmo.
42

Recordemos por un momento el marco de solucin de un


problema, comentado con anterioridad.
Este contena tres etapas que nos ay udaban a construir el
proceso de solucin de un problema, pues resulta que estas tres
etapas justamente nos ay udan a def inir y construir nuestro
algoritmo de igual manera.
Estableciendo tres partes que describen un algoritmo:
Parte 1: La entrada de los datos (Datos de entrada).
Parte 2: El procesado de los datos (Proceso).
Parte 3: La salida de los resultados (Datos de salida).
Entrada de los datos (Parte 1):
Representa el hecho de permitir la introduccin de datos por
parte del problema hacia el algoritmo. Este puede tener muchas
entradas de datos o cero entradas, ref irindonos como entrada
aquel v alor que se le v a otorgar al algoritmo para la realizacin
de su proceso.
Procesado de los datos (Parte 2):
Representa el hecho de permitir realizar distintas operaciones o
acciones cuy o objetiv o es obtener la solucin de un problema.
Aqu generalmente se realizan operaciones de carcter
aritmtico o lgico, repetitiv as o selectiv as.
Salida de los resultados (Parte 3):

43

Representa el hecho de permitir la salida de los resultados


obtenidos, producto de la ejecucin del algoritmo. Es decir, da
salida a los resultados consecuencia de una entrada de datos y
un proceso.
Tipos de datos.
Entre las principales razones del xito de una computadora, se
encuentra en el hecho de que s misma permite la manipulacin
de datos de dif erentes clases. Es decir, datos numricos, datos
lgicos, caracteres, entre otros.
Dichos datos pueden ser producto de una transaccin bancaria,
el promedio de calif icaciones de alumnos en un aula, etc. Por
destacar algunas de sus aplicaciones.
Asociamos como dato aquella expresin en trminos generales
que nos permite describir los elementos con los cuales opera
una computadora.
En la actualidad las computadoras son capaces de trabajar con
dif erentes clases de datos y de dif erentes modos. Motiv o por el
cual se menciona que tanto los programas como algoritmos
trabajan sobre los mismos datos.
El hecho de ejecutar instrucciones en una computadora, es por
el motiv o de establecer div ersas modif icaciones o alteraciones
producto de las operaciones en los v alores entrantes. Por ello
los datos de entrada suf ren transf ormaciones a lo largo de la
ejecucin de un algoritmo debido a que est los altera, para
concluir saliendo los datos y a en f orma de resultados.

44

Reales: Son aquellos nmeros que representan tanto


nmeros enteros como aquellos nmeros que no son tomados
como enteros. De tal manera que dichos nmeros nos permiten
expresar nmeros con una parte f raccionaria o decimal, pues un
nmero real consta de una parte entera y una parte decimal.
IMPORTANTE: Cada lenguaje de programacin puede tener sus
distintos tipos de datos a emplear, tanto numricos como otros
tipos solo se mencionan estos de manera general para tener
nocin de las distinciones.
Datos de tipo lgico.
Son aquel tipo de datos, tambin conocidos como datos
booleanos que nos permiten expresar nmeros que solo pueden
tomar dos v alores: true o v erdadero o f alse o f also.
En la gran may ora de los casos empleamos este tipo de datos
para representar condiciones en las cuales tenemos nicamente
dos v as (Si) o (No) o bien para representar condiciones de
v alidacin de manera ms general.
Por ejemplo: El caso tpico podra ser cuando se nos pide
identif icar si un dgito representa un v alor numrico o una letra.
La respuesta ser v erdadero o f also, dependiendo de las
condiciones del problema.
Datos de tipo carcter.
Son aquel tipo de datos que una computadora es capaz de
reconocer. Es decir, es un conjunto ordenado y f inito en el que
la computadora tiene asociado un v alor o expresin para
46

reconocerlo. Algunos ejemplos son:

Caracteres numricos: (0,1,2,3,4,5, 9)

Caracteres alf abticos: (A, B, C, Z) o (a, b, c, z)

Caracteres especiales: (*, - , +, ^, <,)

Operadores y operandos.
Denominamos como operadores aquellos elementos que se
relacionan de una f orma distinta, es decir son aquellos
elementos que toman a los operandos y nos permiten construir
una expresin u operacin as como manipularla.
Llamamos operando aquellos elementos tomados por los
operadores pueden ser: v ariables, constantes, f unciones, etc.
Por ejemplo:
2+1
+ >> Sera el operador.
2 y 1 >> Seran los operandos.
Operadores aritmticos.
Consideramos como operadores aritmticos aquellos operadores
que nos permiten ef ectuar o realizar operaciones matemticas
con v alores (Constantes o v ariables). Estos pueden ser
utilizados mediante datos de tipo numrico como los enteros o
reales.

47

propsito de la asignacin.
Por ejemplo:
La operacin de asignacin B<- 2, signif ica que a la v ariable B
se le ha otorgado el v alor (2).
Por otro lado, la mera operacin de asignar se considera
destructiv a pues cuando se dispone a asignar un v alor
cualesquier nuev o prov oca que el anterior se pierda,
reemplazndose con este ltimo v alor.
Como podemos observ ar en las siguientes asignaciones:
B <- 1
B <- 4
B <- 6
En el momento en que estas asignaciones son llev adas a cabo
la v ariable B termina asignndosele el v alor de 6 y los dos
v alores anteriores, ref erentes a las asignaciones prev ias (1 y 4)
son perdidos.
La manera de realizar la asignacin de v alores en cuanto a
v ariables de carcter alf abtico se ref iere es distinta que en
v ariables con carcter numrico, por lo cual se realiza de la
siguiente f orma:
OBJETO <- Cuaderno
MEDIO <- Disco compacto
53

Identificadores como punto de localizacin en memoria.


Tanto los programas de computadora como los algoritmos de
manera ms general, poseen ciertos v alores que no suf ren
cambios a lo largo de su ejecucin.
Dichos v alores los llamamos: constantes. Por otro lado, existen
v alores que a lo largo de la ejecucin de un algoritmo o
programa, suf ren cambios. A este tipo de v alores los llamamos
variables.
Constantes.
Denominamos como constantes aquellos v alores que
permanecen inv ariantes durante la ejecucin de un programa o
desarrollo de un algoritmo. Por ejemplo, si tenemos la siguiente
expresin:
Z=2x-y
Independientemente de aquellos v alores que podramos asociar
a (x o y ), x siempre estar multiplicada por el (2), es decir una
constante y a que nunca cambiar su v alor.
Variables.
Denominamos como variables aquellos v alores que pueden
suf rir cambios durante la ejecucin de un programa o desarrollo
de un algoritmo. Por ejemplo, si tenemos la anterior expresin:
Z=5x-2y
Independientemente de aquellas constantes que puedan existir
54

dentro de la expresin como l (5) con la (x) o l (2) con la (y ),


tanto (x) como (y ) pueden tomar cualesquier v alor al principio,
durante o al f inal de la ejecucin del programa, es decir son
v ariables.
Es por ello que se habla del hecho de suf rir cambios en cuanto
a sus v alores se ref ieren.
Identificadores.
Asociamos como identificadores aquellos nombres que pueden
recibir tanto las v ariables como las constantes, dependiendo del
contexto del algoritmo.
Suelen estar constituidos por palabras de lenguaje comn o
v arios caracteres generalmente (letras).
Existen una serie de reglas en cuanto a la creacin de
identif icadores se ref iere, que son recomendadas (Como ms
adelante observaremos).
Reglas para crear y otorgar identificadores.
1.- Pueden contener tanto nmeros como letras en la creacin.
2.- Siempre debern comenzar por medio de una letra, pues al
iniciar con un nmero puede suceder que dependiendo del
lenguaje en que se exprese el programa, se compare con alguna
instruccin reserv ada y cause conf licto.
3.- No debern tener espacios en blanco, y a que puede suceder
el caso en que el identif icador sea tomado como una cadena,
palabra reserv ada, etc. Todo menos un identif icador y causar
55

conf licto de igual manera.


4.- No debern contener caracteres especiales. Salv o excepto
el nico alojado, que es: _.
5.- El nombre a asignarse a un identif icador debe ser
signif icativ o, es decir tener alguna relacin con lo que la
v ariable/constante que se trat de ilustrar, y a que puede
suceder el caso que al no guardar relacin el nombre de dicho
identificador sea conf undido con otra cosa y termine no siendo
utilizado o ref erenciado en un programa.
Ejemplos de identificadores (Siguiendo las reglas comentadas).
BMOV APELLIDO DIRECCION

NO_IDENT

COSTO

Ilustracin del objetivo de los identificadores.


DIRECCION: Puede representar una cadena de caracteres con
la direccin de una persona u organizacin.
APELLIDO: Puede representar una cadena de caracteres con el
apellido de una persona.
COSTO: Puede representar un v alor numrico con el costo de
un producto o serv icio.
BMOV: Puede representar un v alor numrico con el mov imiento
en una f ila determinada.
Por ejemplo: PI = 3.141592.
Como se puede observ ar, se puede asignar un nombre
56

cualesquiera aquellas constantes tpicas utilizadas en


matemticas a f in de f acilitar su utilizacin.
Ya para concluir dicho tema, imaginemos por un momento que
poseemos una f igura abstracta. Donde tal f igura justamente
representa la memoria principal de una computadora, en ella se
encuentran v arias constantes o v ariables almacenadas en
distintas direcciones, como es posible observ ar en la f igura
siguiente:

57

Esto se hace con el propsito de despejar aquellas dudas que


pueda tener el lector hasta este punto.
Ejercicios.
De los siguientes identif icadores, reconocer cuales son
correctos de acuerdo con el criterio de las reglas v istas:
1.
2.
3.
4.
5.
6.

1MOV
#ID
TELEFONO
COSTO_UNITARIO
COSTO-UNITARIO
NOMBRE.COMPLETO

Respuestas:
Correctas: 3 y 4.
Operaciones de (Entrada y Salida).
Entrada.
Consideramos como entrada aquella operacin que nos permite
leer un v alor o cualesquier cantidad en concreto, para despus
asignrsela a una v ariable o cualesquier cantidad de v ariables
determinadas.
Eso depende de en qu contexto sea vista la entrada, en una
variable o en mltiples variables.
En lo que a la creacin de algoritmos se ref iere, solemos
59

representar la operacin de la entrada por medio del f ormato


siguiente en pseudocdigo:
Leer (Variable de entrada).
O mediante el formato:
LEER (Variable de entrada).
Realmente no tiene tanta importancia si la palabra Leer esta en
minsculas o may sculas. Lo importante es que se ilustre la
palabra Leer, pues es la accin que se desea.
Por ejemplo:
Leer NOMBRE
Ilustra la accin de lectura de un (Nombre) para despus
asignrselo a la v ariable NOMBRE.
Salida.
Consideramos como salida aquella operacin que nos permite
dar escritura o impresin de un v alor o cualesquier cantidad en
concreto, con el f in de ilustrar al lector el resultado de una
v ariable o ms de manera general.
En lo que a la creacin de algoritmos se ref iere, solemos
representar la operacin de salida por medio del f ormato
siguiente en pseudocdigo:
Imprimir (Variable de salida).

60

O mediante el formato:
Escribir (Variable de salida).
Al igual manera realmente no tiene tanta importancia si las
palabras Imprimir o Escribir estn en minsculas o may sculas.
Lo importante es que se ilustre algunas de las dos palabras,
pues es la accin que se desea.
Por ejemplo:
Imprimir NOMBRE (Imprime el v alor contenido en la v ariable
NOMBRE, por medio de algn dispositiv o de salida).
Escribir NOMBRE (Visualiza en pantalla el v alor contenido en la
v ariable NOMBRE).
Un ejemplo y a en concreto de esta operacin podemos
encontrarlo en el siguiente diagrama de f lujo, perteneciente a un
algoritmo simple cuy o propsito es dar impresin al nombre
Antonio.
Ejemplo:
Pseudocdigo:
1. Inicio
2. Imprimir Antonio
3. Fin
Diagrama de flujo:

61

Declaracin de variables.
Cuando nos disponemos a utilizar una v ariable en un programa o
en un algoritmo debemos especif icar o def inir aquel nombre que
recibir la v ariable as como el tipo de dato que tendr dicha, a
esta accin es lo que conocemos precisamente como declarar
una variable.
En lo que respecta a las distintos tipos de v ariables (v ariables
numricas y v ariables alf abticas) la inicializacin (declaracin)
de las v ariables se realiza de modo dif erente.
Por ejemplo, para las v ariables numricas se utiliza un cero (0)
y para las v ariables alf abticas utilizamos (Un par de
comillas y un espacio).
Como se muestra, en los siguientes ejemplos:
APELLIDO <- (Variable alfabtica)
COSTO <- 0 (Variable numrica)
Un ejemplo y a en concreto, de esta declaracin/inicializacin de
v ariables podemos encontrarlo en el siguiente algoritmo:
Algoritmo que imprime el apellido de una persona. (Se
utiliza una variable nicamente).
Pseudocdigo:
1. Inicio
2. APELLIDO <-
63

3. Leer APELLIDO
4. Imprimir APELLIDO
5. Fin
Diagrama de flujo:

64

Nota: En este algoritmo no se conoca el v alor preciso de


salida, por lo cual se indic el identif icador de la v ariable (Sin
comillas) a f in de dar salida al correspondiente v alor de la
v ariable. Otro detalle a destacar es que en este algoritmo se
ilustro como se inicializa o declara una v ariable de tipo
alf abtica.
Para ello en primera instancia se indic en el pseudocdigo, y
posteriormente se indic en el diagrama de flujo, con el f in de
ev itar conf usiones en cualquiera de los dos mtodos de
representacin de algoritmos.
Existen ocasiones donde no es prctico y til colocar el
identificador de la variable solamente, pues el lector o
aquella persona que se encuentre ejecutando el algoritmo
puede no conocer precisamente el valor a introducir, es
por ello que se acude a colocar "letreros".
Para ilustrar tal hecho, supongamos que tenemos el anterior
ejemplo ms una modif icacin:
Pseudocdigo:
1.
2.
3.
4.
5.

Inicio
NOMAPE <-
Leer Apellido:, NOMAPE
Imprimir NOMAPE
Fin

Diagrama de flujo:

66

de la v ariable (NOMAPE) en este algoritmo no nos dice mucho


de que hay que introducir Por ello el letrero Apellido: resulta
ef icaz para conocer que introducir.
Cabe notar que al incluir un letrero es preciso indicar la v ariable
en la cual se asignara el contenido ledo, despus de una coma
(Como se muestra en el anterior diagrama de flujo).
Esto sentado ya en un lenguaje de programacin podra verse
como una etiqueta (label) o impresin en consola, dependiendo
desde que enfoque de (Interfaz) se emplee (Consola o Forma).
Operaciones aritmticas.
En la construccin de un algoritmo o un programa, no solo
existen operaciones para dar entrada o salida a los datos,
tambin existen operaciones aritmticas ref erentes a los
procesos.
Donde tales son ref erentes a expresiones de carcter
matemtico, por ello estas deben ejercerse en computacin de
acuerdo a un niv el de prioridad. A f in de obtener el mismo
resultado en cada ocasin que se ejecuten.
Es por ello que a continuacin delimitamos una tabla con los
operadores aritmticos bsicos y su prioridad:

68

delimitan tambin el orden de ejercerse las operaciones, como


es el caso de las 3 reglas siguientes:
1. Las operaciones aritmticas incluidas en una expresin
matemtica son sometidas al (Nivel de prioridad)
indicado en la tabla anterior.
2. Las operaciones que se encuentran delimitadas bajo
algn signo de agrupacin como son las llav es y las
dif erentes clases de parntesis: { }, ( ), [ ]; son
llev adas a cabo en primer lugar por el hecho de que
estos signos indican un niv el de precedencia
principalmente. Por ello, si existen v arios signos de
agrupacin anidados (Uno sobre otro) las operaciones
aritmticas ms internas se ejercen primero.
3. En caso de existir operadores con igual nivel de
prioridad en una expresin y a sea que dicha est
acotada entre algunos signos de agrupacin o no, el
nivel de prioridad est marcado bajo la ejecucin de las
operaciones de izquierda hacia derecha.
Ejemplos.
Aplicando el hecho del (Niv el de prioridad) y las reglas
comentadas, ejercemos las siguientes operaciones aritmticas
quedndonos algo como lo siguiente:

70

Asignacin aritmtica.
Cuando nos disponemos a realizar una asignacin de alguna
expresin generalmente estas son de carcter aritmtico, es por
ello que se realizan de la siguiente manera:
Ejemplos
COSTO <- 23 1 (El v alor que se almacenara en la v ariable
COSTO ser igual a 22)
D <- 10 (El v alor que se almacenara en la v ariable D ser igual
a 10)
E <- COSTO + D (El v alor que se almacenara en la v ariable E
ser igual a la suma de las v ariables COSTO y D).
Una aplicacin ms concreta, en lo que a la construccin de un
algoritmo/programa se ref iere podemos encontrarla en el
siguiente ejemplo:
Ejemplo: Algoritmo que realiza la suma de dos nmeros
cualesquiera, para despus asignar el resultado en una nuev a
v ariable y f inalmente imprimirlo.
Pseudocdigo:
1.
2.
3.
4.
5.

Inicio
Num1<- 0, Num2 <- 0, SUMA <- 0
Leer Nmero 1:, Num1
Leer Nmero 2:, Num2
SUMA <- Num1 + Num2
72

6. Imprimir SUMA
7. Fin
Diagrama de flujo:

73

Nota: Debido a que no conocan los v alores ref erentes a los


dos nmeros necesarios para realizar la suma, hubo necesidad
de solicitar dichos v alores. Es por ello que se crearon y
utilizaron dos v ariables (Num1 y Num2) una por nmero.
Se realiz la declaracin de tres v ariables por el concepto de
que el resultado del clculo ira en otra v ariable para f inalmente
imprimir el resultado.
Ejercicios.
Desarrolla el pseudocdigo y el diagrama de f lujo de los
problemas siguientes:
1. Calcular el rea de un tringulo.
2. Dar entrada al nombre de un objeto e imprimirlo.
3. Conv ertir kilmetros a metros.
Diseo algortmico de las funciones.
Denominamos como mdulo a un procedimiento, rutina,
subrutina o subalgoritmo que puede ser declarado dentro de un
programa o algoritmo de manera independiente, con el hecho de
dotar de una accin especf ica generalmente no incluida en el
algoritmo principal o en el programa principal.
Pudiendo ejecutarse por medio de una inv ocacin o llamado
desde cualquier parte del algoritmo en cualquier momento que
sea necesario.

75

Ya sea una ocasin o en mltiples ocasiones durante la


ejecucin del mismo, es por ello que en veces se asocia a un
mdulo como un fragmento de instrucciones reutilizables.
Cabe destacar que al momento de terminar la ejecucin de un
mdulo, dicha ejecucin obliga a v olv er al momento preciso
donde se inv oc o llamo al mismo.
Con el hecho de continuar con las instrucciones restantes que
puedan existir en el programa o en el algoritmo o bien finalizar la
ejecucin.
A continuacin ilustramos como un subalgoritmo o subrutina
puede ser pensada en un programa, mediante la siguiente
f igura:

76

Subprog2 ( ) dara impresin al v alor 7 pero la v erdad es que no


es as debido a que en el contexto de s mismo no se encuentra
def inida o simplemente no existe la v ariable B.
Con esto se ilustra el hecho de la existencia o no, de una
variable local en un subprograma.
Variables globales.
Denominamos como variables globales aquellas v ariables que
son def inidas en el programa principal, por ello dichas v ariables
al igual manera se encuentran disponibles en sus subprogramas
para su utilizacin.
A continuacin ilustramos como en un subalgoritmo o
subprograma se maneja el hecho de las v ariables globales,
mediante la siguiente f igura:

80

realizar la suma contenida, al igual que el subprograma Subprog2


( ) deber ser capaz de imprimir el resultado de la suma,
pudiendo emplearse la v ariable B en ambos subprogramas esto
por el hecho de que dicha v ariable f ue def inida globalmente.
Parmetros.
Denominamos como parmetros aquellos v alores que son
env iados hacia un subprograma para su f uncionamiento o bien
aquellos v alores que se env an de un subprograma a otro para
su f uncionamiento.
Tendemos a utilizar los parmetros cuando deseamos compartir
algunos v alores de un subprograma entre algn otro
subprograma, pero no todos los v alores pertenecientes a un
subprograma.
Es por ello que si declaramos una v ariable dentro de un
subprograma solo ser v lida dentro del mismo a menos que se
indique lo contrario con otra clase de v ariables.
Por ello podemos af irmar que los parmetros v ienen a resolv er
una necesidad o problema en un programa de transf erir v alores
a trav s de uno u otro subprograma. Esto se logra al momento
de inv ocar o llamar a un subprograma.
A continuacin ilustramos como un subalgoritmo o subprograma
transf iere o env a v alores de uno a otro subprograma, mediante
los parmetros en la siguiente f igura:

82

manera f inalmente se imprimiera. El resultado que se imprimir


ser 7 y a que el v alor del parmetro que recibi del Subprog1 ( )
f ue B1=4.
Esto se debe en parte debido a que Subprog2 ( ) recibe a la
v ariable B1 y esta misma tiene el v alor que tena la v ariable B
dentro de Subprog1 ( ).
NOTA: Cabe recordar que en la ejecucin de un programa al
momento de llamar a un subprograma o subalgoritmo y este
f inalice su ejecucin, el control de la ejecucin del programa
principal v olv er al momento preciso en que se realiz la
inv ocacin o el llamado del subprograma.
Otro detalle a destacar, es cuando se env a un parmetro de un
subprograma a otro, es necesario en este ltimo indicar por
medio de otra v ariable el punto al cul llegar precisamente
dicho parmetro. Es por ello que se indic en el ejemplo anterior
la v ariable B1 a f in de recibir el parmetro de B, de lo contrario
existira error pues no hubiera punto de llegada de B.
Clasificacin de los mdulos o subprogramas.
Tendemos a clasif icar los mdulos o subprogramas
independientemente por las instrucciones que se ejecuten. De
acuerdo a la siguiente clasif icacin:
1. Procedimientos.
2. Funciones.
Funciones.
84

Consideramos como funciones aquellos subprogramas o


mdulos que realizan una accin especf ica y pueden ser
inv ocados o llamados desde cualquier parte del programa.
Con el detalle que para la realizacin de su accin o proceso en
especf ico es necesario que estos reciban o le sean env iados
una serie de parmetros.
As mismo estos tienen la capacidad de devolver valores
explcitos.
Por ello en ocasiones se menciona que dichas poseen una
estructura en particular. Cabe anexar que cuando una funcin es
relacionada o especif icada en una expresin, est se declara de
igual manera como una v ariable ordinaria.
Por ejemplo, supongamos que tenemos una suma en cuyos
operandos uno se encuentra constituido por una funcin y el otro
por un valor constante.
Tendramos algo como:
A <- cm(2) + 3
Donde el v alor de A f uera aquel v alor obtenido de la suma, por
otro lado el v alor de la f uncin llamada (cm (2)) depender en
gran medida de la accin que est llev e a cabo en base al
parmetro env iado.
De manera ms general, clasif icamos a las f unciones
como: definidas por el usuario y estndares.
Funciones definidas por el usuario.
85

Llamamos como funciones definidas por el usuario aquellas


f unciones que son def inidas por parte del programador o aquella
persona que se encuentre construy endo un programa.
Por lo general son utilizadas cuando se desea realizar una
operacin independiente del programa y que se utilice
comnmente en v arias ocasiones durante la ejecucin del
mismo.
El nombre de la f uncin se encuentra precedido por una serie de
v alores, que son los parmetros (v alores de carcter numrico
o alf abtico) que se le env an para que realice su
f uncionamiento.
Como la siguiente estructura lo confirma:
< Nombre de la funcin> (<Lista de parmetros>)
Ejemplo:
Suma(1,2)
Suma constituy e el Nombre de la funcin.
1 y 2 constituy en la lista de parmetros (Estos pueden estar
separados por una coma y pueden ser de una clase en
especf ico o no, esto depende en gran medida del lenguaje de
programacin as como de su sintaxis).
Procedimientos.
Llamamos como procedimientos aquellos subprogramas o
86

subrutinas que realizan una accin especf ica y pueden ser


inv ocados o llamados desde cualquier parte del programa.
Con el detalle que para la realizacin de su accin o proceso en
especf ico es necesario que estos reciban o le sean env iados
una serie de parmetros.
Existe una pequea diferencia respecto a la funciones, dicha
diferencia es que no tienen la capacidad de devolver valores
explcitos al terminar su ejecucin.
Por ello generalmente cuando se emplean procedimientos es
porque se terminar concluy endo o ejerciendo todo un proceso
en el mismo. Y no habr necesidad de dev olv er v alores
explcitos al programa que llame a s mismo.
Operacin de mdulos y sus parmetros.
Procedimientos.
Ejemplo. Calcular la multiplicacin de dos nmeros
cualesquiera utilizando un procedimiento para ef ectuar la
multiplicacin e imprimir el resultado.
Pseudocdigo (Programa principal):
1.
2.
3.
4.
5.
6.

Inicio
Num1 <- 0, Num2 <- 0
Leer Nmero 1:, Num1
Leer Nmero 2:, Num2
Llamar Multiplicacion (Num1, Num2)
Fin
87

Diagrama de flujo (Programa principal):

88

Nota: Para la construccin de un subprograma en pseudocdigo


por medio de procedimientos, es necesario seguir una sintaxis de
def inicin de procedimientos. Como la citada a continuacin:
Sintaxis:
Procedimiento Nombre del Procedimiento <Lista de
parmetros utilizados>
<Bloque de instrucciones del procedimiento>
Fin Procedimiento
Por ejemplo, en el caso del anterior programa tenemos:
Pseudocdigo (Procedimiento llamado Multiplicacion):
1.
2.
3.
4.
5.

Procedimiento Multiplicacion (N1 <- 0, N2 <- 0)


Mult <- 0
Mult <- N1 * N2
Imprimir Mult
Fin Procedimiento

Diagrama de flujo (Procedimiento llamado Multiplicacion):

90

Ejercicios
1. Realizar algoritmo que capture los datos bsicos de un
empleado (Nmero de empleado, Nombre, Apellidos,
Direccin, Estado, Ciudad, Telfono, Telfono celular,
etc ) y de impresin en otro subalgoritmo. Nota:
Utilizar el env o de parmetros para transf erir v alores
a subalgoritmos.
2. Realizar algoritmo que capture las horas trabajadas y
el sueldo por hora de un trabajador e imprima el sueldo
total en base a las horas trabajadas en un
subalgoritmo.
Funciones:
A f in de ilustrar el propsito de las f unciones emplearemos el
anterior ejemplo utilizado en los procedimientos.
Nota: Para la construccin de un subprograma en pseudocdigo
por medio de funciones, es necesario seguir una sintaxis de
def inicin de f unciones. Como la citada a continuacin:
Sintaxis:
Funcin Nombre de la Funcin <Lista de parmetros
utilizados> <- <Tipo de valor de devolucin>
<Bloque de instrucciones de la funcin>
Fin Funcin
92

cualesquiera en el programa principal y emplear una f uncin


para ef ectuar nicamente la operacin de la multiplicacin e
imprimir el resultado de igual manera en el principal,
aprovechando el concepto de la devolucin de valores por parte
de las funciones. Todo ello utilizando variables globales.
Pseudocdigo (Programa principal):
1.
2.
3.
4.
5.
6.
7.
8.

Num1<- 0, Num2<- 0
Inicio
Resultado<- 0
Leer Nmero 1:, Num1
Leer Nmero 2:, Num2
Resultado <- Multiplicacion( )
Imprimir Resultado
Fin

Pseudocdigo (Funcin):
1. Funcin Multiplicacion( ) <- 0
2. Multiplicacion <- Num1 * Num2
3. Fin Funcin
Diagrama de flujo del (Programa principal):

94

3.- Introduccin a
la programacin
Conociendo en que consiste un programa, es decir un conjunto
de instrucciones de manera general.
Un lenguaje de programacin es aquello lo cual se encarga que
el computador (computadora) realice los pasos necesarios para
ejecutar una tarea o mltiples tareas... Que el programador en
un momento hay a indicado o mejor dicho hay a programado.
En otras palabras los lenguajes de programacin son los
encargados de que el usuario (en este caso el programador) y la
maquina puedan comunicarse entre s (metafricamente es como
el idioma).
Dicha comunicacin permite que el programador ordene a la
mquina la solucin a un problema o mejor dicho un algoritmo
mediante el uso de palabras, que dentro de este ambiente son
v istas como f unciones en el mismo lenguaje.
Se debe expresar que los lenguajes de programacin son
traducidos mediante un compilador con el f in de que la
computadora entienda las instrucciones, recordemos que la
computadora originalmente interpreta un sistema o lenguaje no
muy amigable con el ser humano de manera directa (Sistema
binario). Es por ello que es necesario este tipo de
98

componentes.
Existen v aria etapas necesarias para que se puedan tener una
secuencia de instrucciones que puedan dar una solucin a un
problema, dichas etapas son:
Etapa de anlisis: La etapa de anlisis es aquella donde el
programador modela la solucin, es decir entiende el problema,
sabe lo que quiere o lo que se debe resolv er.
Etapa de solucin (general): En esta etapa se describe la
solucin paso a paso mediante diagramas de flujo o
pseudocdigo, es decir se desarrolla el algoritmo.
Etapa de prueba: En esta parte se realiza algo llamado prueba
de escritorio, la cual consiste en rev isar el algoritmo y ejecutarlo
de f orma imaginaria (prueba) a f in de observ ar si arroja el
resultado esperado.
Etapa de implementacin: En esta etapa se codif ica, es decir
se transcribe o traduce el algoritmo a un lenguaje de
programacin como puede ser: (C#, C++, Jav a, etc.).
Etapa de prueba del programa: Una v ez codif icado el
programa, se ejecutar en la computadora para rev isar si este
arroja la solucin esperada para el problema que se plante.
Etapa de uso: Consiste en instalar el programa (sabiendo que
realiza lo esperado) de f orma def initiv a, con la intencin de
usarlo diariamente.
99

instrucciones en un lenguaje de alto niv el son


independientes al procesador que se encarga de
ejecutar las instrucciones (traducidas) del lenguaje de
mquina, la traduccin de las instrucciones de alto
nivel a lenguaje de mquina se hace por medio de
un programa traductor llamado (compilador) para ev itar
reescribir el programa cada v ez que se ejecute.
Aunque es ms f cil el manejo de un lenguaje de alto niv el, la
desv entaja ms grande que se presenta es la inef iciencia,
debido a que es imposible o casi imposible crear un traductor
que pueda generar un cdigo en lenguaje de mquina eficiente.
Actualmente se utilizan lenguajes de alto niv el debido al
creciente av ance en las desarrollo de las
computadoras (memoria, procesamiento, etc ) y en parte a los
costos de produccin de un programa, es decir el costo sera
may or si se hace en lenguajes de bajo niv el.
Hace unos aos cuando exista una limitacin en los programas
traductores de alto niv el al manejar simultneamente altas
cantidades de inf ormacin, as como una limitacin en el
almacenaje de la inf ormacin en memoria (que tambin era
limitada), se optaba por recurrir a los llamados lenguajes
interpretados. Como la clasif icacin de lenguajes siguientes lo
detalla:
Lenguaje ensamblador: Este lenguaje esta constituido por
smbolos o caracteres que tienden a representar instrucciones
de manipulacin y a sea para microprocesadores,

102

microcontroladores, etc. As mismo dicho lenguaje es til al


programar una cierta arquitectura de alguna computadora (es por
ello que se habla de una cierta correspondencia entre el lenguaje
ensamblador y el lenguaje de mquina).
Lenguajes compiladores: Son aquellos lenguajes cuy o
objetiv o son las traducciones de un lenguaje de alto niv el a un
lenguaje de mquina o lenguaje ensamblador, dichas se guardan
en un archiv o para no realizar la traduccin del lenguaje cada
v ez que se ejecute el programa (Programa objeto o ejecutable).
Lenguaje interpretados: Son aquellos lenguajes que no
producen un cdigo objeto, es decir un programa ejecutable, lo
que realizan es tomar cada instruccin y analizarla para posterior
ejecutarla esto se hace instruccin por instruccin y of rece una
gran interaccin pero no es conv eniente cuando se ejecuta un
programa de f orma repetitiv a y a que no guarda la traduccin, es
decir el programa ejecutable.
Lenguaje preprocesados: Son aquellos lenguajes que
traducen dos v eces generalmente, en primer instancia traducen
a un lenguaje intermedio (un niv el ms bajo) y posteriormente
traducen de nuev o generando un programa ejecutable.
Sintaxis y semntica.
Asociamos como sintaxis a la serie de criterios o reglas que en
programacin deben seguirse para indicar las respectiv as
instrucciones en un lenguaje de programacin.

103

3.2.- Estructura bsica de un


programa
En lo que respecta a la codif icacin de los programas u
algoritmos encontrados a lo largo de esta publicacin.
Emplearemos como base o sustento el lenguaje de
programacin C# (Csharp), cabe mencionar un detalle antes de
partir def iniendo la estructura de un programa como tal.
C# nos permite trabajar en dos v as o de dos maneras distintas:
1. Mediante el uso de formas (Formularios) de Windows,
dicha v a conocida como: (Aplicacin de Windows Windows application).
2. Mediante el uso de una consolas, dicha v a conocida
como: (Aplicacin de Consola - Console application).
Los programas en C# se encuentran construidos bsicamente
en tres partes (cabe resaltar que estas partes estn orientadas
principalmente a la primera va, es decir a la creacin de una
aplicacin de windows):
1. Se comienza por la creacin y diseo de la parte
graf ica de la aplicacin, es decir se agregan aquellos
componentes requeridos a f in de permitir la interaccin
en la forma tales como: botones, cajas de texto textbox, etiquetas - labels, cajas de lista - listbox,
105

etc.
2. Se def inen las f unciones u operaciones que se
realizarn cuando se presente algn un ev ento ligado o
asociado a un objeto, def inido en la etapa anterior
(Por ejemplo: La operacin de salida de la aplicacin
en un botn, etc).
3. Se def ine las f unciones mencionadas o programadas
en la etapa anterior, es decir el programador las def ine.
Esto debido a que C# utiliza f unciones y no
procedimientos, aunque estos ltimos se pueden
indicar por medio de la palabra reserv ada void.
Por ltimo toda instruccin dentro de un programa que no
inv olucre algn mdulo o estructura de control, concluy e con el
respecto a la sintaxis, es decir una coma y un punto (;).
Ejemplo 1: Programa en C# que imprime un nombre en
especf ico.
1.- Diseo de la parte grfica de la forma:

106

this.Close();
}
//Cdigo del botn de (Mostrar).
private void cmdMostrar_Click(object sender,
EventArgs e)
{ //Variable tipo (Cadena) que contendra el
(Nombre);
string Nombre;
//Asignacin del (Nombre) a la variable.
Nombre="Antonio";
//Asignacin de la variable a la (Caja de
texto - txtNombre), encarga de mostrar en la
forma dicho nombre.
txtNombre.Text = Nombre;
}
Nota: Se agregarn los comentarios en el cdigo a fin de lograr
explicar brevemente de lo que se esta realizando, por el
concepto que ms adelante se tratar ms detalladamente.
108

dice estas entidades varan en el tipo e inf ormacin.


Ya que las v ariables son espacios reserv ados en memoria para
almacenar inf ormacin, misma la cual puede cambiar durante la
ejecucin del programa.
A continuacin se muestra una tabla de los tipos de datos ms
bsicos utilizados en C#:

112

2. Id_Empleado (Puede expresar el nmero de


identif icacin de un empleado).
Nota: Cabe destacar que C# es un lenguaje sensitiv o, por ello
identif ica y respeta las may sculas de las minsculas es decir
Nombre, nombre o NOMBRE. Son identif icadores que a simple
v ista podran parecer iguales en signif icado, pero con la
excepcin que C# los toma como identif icadores totalmente
dif erentes.
Cuando se crea un identif icador a este tambin se le puede
asignar un v alor, Por ejemplo en la declaracin de una variable
tenemos:
edad = 20;
El f ormato general de asignacin en C# est dado por:
<Identificador de la variable u constante> = <Valor u expresin> ;
Operadores, operandos y expresiones.
Cuando se habla de un operador, se ref iere a un smbolo que le
ordena al lenguaje de programacin que ejerza una cierta
operacin, es decir una accin sobre un operando o v arios.
Mientras que el operando es una expresin en la cual el operador
puede actuar sobre ella, con el objetiv o de obtener algn
resultado deriv ado de s misma.
Cuando se maneja un operador lo que hace este simplemente
es tomar un valor producto de una expresin y referenciarlo a
una variable previamente declarada, es decir:
115

public int Funcion()


{

this.close();
return true;

}
Dichas f unciones poseen un v alor retorno, es decir al momento
de f inalizar una determinada f uncin dicha arroga un v alor en
especf ico producto de la misma ejecucin.
Tal valor puede constituir ya sea un valor numrico, un valor
booleano, etc. Esto depender en gran medida del tipo de valor
de retorno que sea indicado.
Para migrar una f uncin conv encional a un procedimiento
(f uncin no conv encional) la cual no dev uelv a un v alor de
retorno se tiende a utilizar la palabra reserv ada void.
Sintaxis de definicin de un procedimiento en el lenguaje
C#:
<Modificador de acceso><Nombre del procedimiento> (<Lista de
parmetros>)
{
<Instrucciones>;
}

119

Ejemplo:

void Cerrado()
{ this.close();
}
Nota: Los smbolos <> son utilizados a f in de dif erenciar entre
la sintaxis y el nombre que otorgaramos a la f uncin o
procedimiento, es decir en una prctica real dichos smbolos no
iran con la manera en que se def ine una f uncin o
procedimiento.
Variables locales.
Son aquellas v ariables que se declaran dentro de una f uncin o
procedimiento, estas solo se pueden usar localmente dentro de
la f uncin.
Ejemplo:

//Procedimiento (Suma de dos nmeros)


public void Suma()
{ //Declaracin de variables locales.
double Numero_1;
double Numero_2;
120

double SumaResultado;
//Asignacin y uso de variables.
Numero_1 = 2;
Numero_2 = 1;
//Proceso
SumaResultado = Numero_1 +
Numero_2;
}
Nombre del proyecto: frmprogejemplo
Variables globales.
Las v ariables globales son aquellas v ariables que son v lidas
para todas las f unciones o procedimientos dentro de un
programa, dichas v ariables son declaradas f uera de cualquier
f uncin o procedimiento.
Una manera de definirlas fcilmente en el lenguaje de
programacin C#, es definindolas en el mismo contexto
que el anterior prrafo nos menciona. Asegurando de esta
forma una accesibilidad en todo procedimiento u funcin
dentro de un programa para su utilizacin.
Ejemplo:
121

//Declaracin de variables globales.


double Numero_1;
double Numero_2;
double SumaResultado;
//Procedimiento (Suma de dos nmeros)
public void Suma()
{

//Asignacin y uso de variables.


Numero_1 = 2;
Numero_2 = 1;
//Proceso

SumaResultado = Numero_1 +
Numero_2;
}
Nombre del proyecto: frmprogejemplo
Parmetros.

122

Cuando deseamos trasladar o compartir v alores entre una


f uncin o procedimiento y a sea a otro procedimiento o f uncin,
esto se puede llev ar a cabo por medio de los parmetros.
Sabiendo tal cosa, un parmetro se def ine como un v alor que
pasa de una f uncin a otra f uncin o procedimiento a
procedimiento, de manera general como un v alor que pasa de
un subprograma a otro.
Ejemplo que vincula la utilizacin de variables globales y
la utilizacin de parmetros entre subprogramas:

//Declaracin de variables globales.


double Numero_1;
double Numero_2;
double SumaResultado;
//Procedimiento (Suma de dos nmeros)
public void Suma()
{ //Asignacin y uso de variables.
Numero_1 = 2;
Numero_2 = 1;
//Proceso
123

125

4.- Control de flujo


En este punto del texto, el lector y a tiene la idea bsica de
cmo estructurar un programa, es decir y a conoce como
modelar una situacin de tal f orma que se pueda obtener la
solucin a un problema mediante un programa o aplicacin, es
decir un algoritmo.
De igual forma ya podemos definir variables, procedimientos,
funciones, etc.
Pero al desarrollar un programa, no solo basta con tener un
algoritmo (lgica) y saber def inir las v ariables, procedimientos o
f unciones a utilizar, la lgica implica decisiones que el programa
debe tomar arrogando un resultado dif erente segn el camino
seleccionado.
Esto se hace mediante selectiv as, en dicha parte de la
publicacin se hablarn de selectivas simples (Una decisin con
un camino), dobles (Una decisin con dos caminos),
compuestas (Varias decisiones, uno o dos caminos), anidadas
(Varias selectiv as adjuntas) , mltiples (Utilizacin de casos) y el
try-catch (Intenta y atrapa).
Aunque se utilizara de f orma f recuente las selectiv as, las
estructuras de tipo repetir (ciclos, bucles, loops, etc.) de igual
manera son muy utilizadas, y a que nos proporcionan la habilidad
de realizar una determinada operacin un nmero repetido de
v eces hasta que se cumpla una condicin def inida.
126

Lo ciclos manejados durante esta publicacin son el ciclo dowhile (Realiza la operacin, despus checa la condicin del
bucle), el ciclo while (Checa la condicin de bucle, si se cumple
realiza la operacin) y por ltimo el ciclo for (Se def ine el
nmero de repeticiones, realiza la operacin, aumenta el
contador (interno) y checa la condicin del bucle).

4.1.- Estructuras secuenciales


Las estructuras secuenciales son aquellas en las cuales las
instrucciones o acciones designadas siguen a otras.
La entrada y salida de datos son estructuras secuenciales,
debido a que en un problema necesitan que se alimenten datos
o inf ormacin para a f in de resolv er un problema y si est no
tiene una salida no desplegar un resultado.

4.2.- Estructuras
selectivas
Como su nombre lo dice las estructuras selectivas, toman una
decisin de accin mediante condiciones, es decir mediante el
uso de operadores lgicos comparara entre datos en f uncin de
un resultado obtenido a f in de determinar qu accin se tomar
(camino a seguir). Comnmente se tiene como salida solamente
"S" o "No".
Operadores relacionales.

127

4.2.1.- Selectiva simple


La selectiva simple es aquella que solo ev ala o solo tiene una
sola condicin y como resultado de la ev aluacin de esa
condicin solo se arroga una opcin v erdadera.
La sintaxis de la condicin para una selectiva simple en
pseudocdigo y en diagrama de flujo es la siguiente:
<Valor o Variable> <Operador relacional><Valor o Variable>
Ejemplos:
X<-3
Z<-4

X > 13
4<=Z
X=Z

Falso.
Verdadero.
Falso.

La estructura de decisin en pseudocdigo es de la siguiente


f orma:
Si <condicin> entonces
< Instrucciones>
-- Verdadero
Fin si.
Esta selectiv a dice que s se cumple la condicin ejecuta las
instrucciones, es decir s es v erdadero el carcter lgico de la
comparacin se realizan las instrucciones, en caso de ser falso
(no se cumple la condicin) y se sale de tal.

129

Ral Antonio.
*/
private void CmdCapturar_Click(object sender,
EventArgs e)
{ //variable (donde se guarda la
informacin).
int Edad;
//asignacin de los valores entrantes
(textbox) a la variable "Edad".
Edad = Int32.Parse(txtEdad.Text);
//Selectivas (operacin).
//Se cumple cuando la edad es mayor de
18.
if (Edad > 18)
{ MessageBox.Show("La persona es
mayor de edad en Mxico.");
}
132

4.2.2.- Selectiva doble y


compuesta
A dif erencia de la selectiv a simple, la selectiva doble considera
cuando la condicin es verdadera y es falsa, a continuacin se
presenta el pseudocdigo para una selectiv a doble con una
condicin (el diagrama de flujo es el mismo que en la selectiva
simple):
Si <condicin> entonces
<Instrucciones> -- Verdadero
Sino
<Instrucciones> -- Falso
Fin s.
Este algoritmo nos dice que s la condicin es v erdadera, se
ejecutarn las instrucciones en el bloque que dice v erdadero,
por el contrario s la condicin es f alsa se ejecutarn las
instrucciones en el bloque del f also.
Sintaxis de una selectiva doble con una condicin cuando
hay varias instrucciones:
If (<condicin>)
134

private void cmdentrar_Click(object sender,


EventArgs e)
{ //variable que guarda el contenido de la
caja de texto (para su manipulacion).
string Clave;
//asignacion de valor (desde la caja de
texto) a la variable.
Clave = txtcontrasea.Text;
//selectiva doble
//Se cumple cuando el contenido de la
variable "Clave" es igual a la informacin
expuesta.
if (Clave == "11rlla32rzl")
{ //Muestra un mensaje de comprobacin.
MessageBox.Show("Contrasea
correcta.");
//Cierra el programa (aplicacin).

136

this.Close();
}
else
{ //muestra un mensaje de alerta.
MessageBox.Show("Contrasea
Invalida, Intente de nuevo.");
//limpia la caja de texto.
txtcontrasea.Clear();
//coloca el curzor en la caja de texto.
txtcontrasea.Focus();
}
}
Nombre del proyecto: Ejemplo_Selectiva_doble_FdP
Selectiva compuesta.
Estas selectiv as ev alan v arias condiciones a la v ez en una
sola expresin, las selectivas compuestas utilizan los siguientes
operadores:
137

Fin Si.
Sintaxis para la selectiva compuesta cuando existen varias
instrucciones.
If (<condicion1> <operador lgico> <condicion2>)
{<Instruccin1>;
<instruccion2>;}
Else
{<instruccion1>;
<instruccion2>;}
Ejemplo: Programa el cual pide una contrasea y que el usuario
sea may or de edad (Restriccin de edad basada en la may ora
de edad en Mxico).
1.- Diseo de la parte grfica de la forma de aplicacin:

140

string Contrasea;

//asignacion de valores a las variables


(contenido de las cajas de texto).
//se asigna a la variable edad la
informacin contenida en la caja de texto txtedad
edad = Int32.Parse(txtedad.Text);
//se asigna a la variable contrasea la
informacin contenida en la caja de texto
txtcontrasea.
Contrasea = txtcontrasea.Text;
//selectiva compuesta.
//para que la selectiva cumpla, la
contrasea debe coincidir y la edad debera ser
mayor a 18.
if (Contrasea == "11rlla32rzl" && edad >
18)
{
142

//muestra un mensaje de aprovacin.


MessageBox.Show("Se introdujo la
contrasea correcta y cumple con la edad.");
this.Close();
}
else
{
//mensaje de alerta
MessageBox.Show("Alguno de los
requisitos no se cumpleron.");
//limpia las cajas de texto.
txtcontrasea.Clear();
txtedad.Clear();
//coloca el curzon en la caja de texto
edad.
txtedad.Focus();

143

4.2.3.- Selectiva anidada


El programador puede llegar al caso de necesitar v arias
condiciones para llegar a un resultado, a esto se le conoce
como selectiva anidada, a dif erencia de la selectiv a doble, la
selectiv a anidada se ref iere a tener una o v arias condiciones
dentro de otra condicin (las condiciones se encuentran en el
bloque de instrucciones de la primera condicin).
Los lenguajes de programacin como C# permiten la selectiv a
anidada en la parte del f also de la condicin, esto en caso de no
cumplirse la primer condicin.
A continuacin se presenta las sintaxis en pseudocdigo
de la selectiva anidada.
Si <condicion1> Entonces
<instruccin1>
Sino
<condicion2> Entonces
<instruccion2>
Sino
<Instruccion3>
145

Fin si
Fin si
Cada condicin debe de ser cerrada, es decir a cada Si (if ) le
corresponde un Fin si (}), en el diagrama de f lujo, se maneja el
mismo smbolo solo que se anida de la misma manera que en el
pseudocdigo.
Nota: Se puede manejar la cantidad deseada de selectiv as
anidadas, aunque si se llega a una gran cantidad el algoritmo
puede ser muy complejo.
Sintaxis en lenguaje C# de la selectiva anidada.
If <condicion1> Entones
{
<instruccin1>
}
Else
{
If<condicion2> Entonces
{
<instruccion2>
}
Else
{
<Instruccion3>
}
146

private void cmdNombre_Click(object sender,


EventArgs e)
{
//Nota: Uso de comentarios se realiza mediante
el uso de // para comentarios de una lnea o
/* Uso de (/*) para
* Comentarios de multiples lneas cerrando con
(*/) el bloque de comentarios */
//Uso del try-catch
try //intenta (detecta la excepcin.).
{ //asignacion de los valores dentro de la
caja de texto a la variable global "numero".
numero =
System.Int32.Parse(txtnumero.Text);
//Toda esta estructura es una selectiva
anidada.
if (numero == 0)

148

{ lbldesplegarnumero.Text = "

Cero.";

}
else { //Condicin.
if (numero == 1) //Entonces.
{ //instruccin
lbldesplegarnumero.Text = "
Uno.";
}
else
{ if (numero == 2) //Entonces.
{
lbldesplegarnumero.Text = "
Dos.";
}
else
{ if (numero == 3) //Entonces.
149

{
lbldesplegarnumero.Text = "
Tres.";
}
else
{ if (numero == 4) //Entonces.
{
lbldesplegarnumero.Text =
"

Cuatro.";
}
else
{ if (numero == 5) //Entonces.
{
lbldesplegarnumero.Text =

"

Cinco.";
}

150

else
{ if (numero == 6) //Entonces.
{
lbldesplegarnumero.Text
="

Seis.";
}
else
{ if (numero == 7)

//Entonces.
{
lbldesplegarnumero.Text = "

Siete.";

}
else
{ if (numero == 8)
//Entonces.
{
151

lbldesplegarnumero.Text = "

Ocho.";

}
else
{ if (numero == 9)
//Entonces.
{
lbldesplegarnumero.Text = "

Nueve.";
}
else

//Mensaje mostrado si el
numero alimentado es mayor a nueve.
lbldesplegarnumero.Text = " No
valido!.";
}//Fin si
}//Fin si

152

}//Fin Si
}//Fin si
}//Fin si
}//Fin si
}//Fin si
}//Fin si
}//Fin si
}//Fin si
}
catch (System.FormatException aviso)
//Atrapa la excepcin, el mensaje lo almacena en
le variable aviso.
{ MessageBox.Show("Error " +
aviso);//despliega el error en una caja de
mensaje.
txtnumero.Clear();//limpia la caja de
texto.
153

txtnumero.Focus();//pone el curzor en la
caja de texto.
}
}
private void cmdlimpiar_Click(object sender,
EventArgs e)
{ //Limpia la caja de texto.
txtnumero.Clear();
//Limpia la etiqueta.
lbldesplegarnumero.Text = "";
//Pone el cursor en la caja de texto.
txtnumero.Focus();
}
private void cmdsalir_Click(object sender,
EventArgs e)
{ //Cerrar (salir) la aplicacin.

154

4.2.4.- Selectiva mltiple


La selectiva mltiple se utiliza cuando, el uso de una selectiv a
anidada es contraproducente, es decir, al utilizar un anidamiento
de condiciones el algoritmo se torna un poco conf uso es por eso
que se dice que la selectiv a mltiple es mejor en este caso y a
que simplif ica muchos detalles haciendo ms sencillo el
algoritmo.
La selectiv a mltiple, presenta un selector el cual nos permite
ev aluar distintos casos, este selector es una v ariable que
almacena el dato a buscar dentro de una lista de casos, durante
el rastreo el selector identif ica cual de los casos coincide con
los v alores almacenado en este, al encontrar el caso
correspondiente ejecuta las instrucciones indicadas.
Pseudocdigo de una selectiva mltiple.
Seleccionar Caso <Selector>
Caso <v alor 1>
<Instrucciones 1>
Caso <v alor 2>
<Instrucciones 2>
.
.
.
Caso <v alor N-1>
<Instrucciones N-1>
Si no
156

Cdigo en C#.
Switch (<Selector>)
{
Case <Expresin>:
<Instrucciones>;
break;
Case <Expresion_siquiente>:
<Instrucciones>;
break;
.
.
.Def ault:
<Instrucciones>;
break;
}
Ejemplo: Programa en C# el cual pide un nmero y despliega su
nombre (Casos 0-9).
1.- Diseo de la parte grfica de la forma:
158

int numero;
//asignacion de valores a la variab le
numero.
numero = Int32.Parse(txtnum.Text);
//selectiva multiple.
switch (numero)
{
case 0://Cuando el numero introducido
es cero.
lb ldesplegarnumero.Text = "Cero.";
b reak;

case 1://Cuando el numero introducido


es uno.
lb ldesplegarnumero.Text = "Uno.";
b reak;

160

case 2://Cuando el numero introducido


es dos.
lb ldesplegarnumero.Text = "Dos.";
b reak;

case 3://Cuando el numero introducido


es tres.
lb ldesplegarnumero.Text = "Tres.";
b reak;

case 4://Cuando el numero introducido


es cuatro
lb ldesplegarnumero.Text = "Cuatro.";
b reak;

161

case 5://Cuando el numero introducido


es cinco
lb ldesplegarnumero.Text = "Cinco.";
b reak;

case 6://Cuando el numero introducido


es seis.
lb ldesplegarnumero.Text = "Seis.";
b reak;

case 7://Cuando el numero introducido


es siete.
lb ldesplegarnumero.Text = "Siete.";
b reak;

case 8://Cuando el numero introducido


es ocho.
162

lb ldesplegarnumero.Text = "Ocho.";
b reak;

case 9://Cuando el numero introducido


es nueve.
lb ldesplegarnumero.Text = "Nueve.";
b reak;

default://Cuando el numero introducido


no se encuentra contemplado (casos anteriores).
lb ldesplegarnumero.Text = "Nmero
no vaido.";
b reak;
}
}
private void cmdlimpiar_Click(ob ject
sender, EventArgs e)
163

{
//Limpia la caja de texto.
txtnum.Clear();
//Limpia la etiqueta.
lb ldesplegarnumero.Text = "";
//Pone el curzor en la caja de texto.
txtnum.Focus();
}
private void cmdsalir_Click(ob ject sender,
EventArgs e)
{ //Cerrar (salir) la aplicacin.
this.Close();
}
Nombre del proyecto: Ejemplo multiple FdPCShar
Nota: No tomo en consideracin que numero en realidad
es nmero hablando en trminos de la gramtica, por aquellas
dudas que puede causar al conf undir el selector con una la
164

4.2.5.- Selectiva intenta


(Try/Catch)
Cuando se utiliza una selectiva Try/catch (Intenta y atrapa), se
planea detectar errores sin que este marque una excepcin y se
salga del programa (crash).
Try se encarga de probar un cierto nmero de instrucciones y
detectar errores que se encuentren dentro del bloque de
instrucciones que sern probadas, a continuacin su sintaxis:
Try
{
<Instrucciones> //prueba la instruccin.
}
El Catch se encarga de manejar la excepcin con una lista de
parmetros, este bloque se encuentra despus del try, a
continuacin se muestra la sintaxis del catch y f inally :
Catch (Variable encargada de almacenar excepcin)
{
<Instrucciones>
}
Finally
{
<Instrucciones>
166

4.3.- Estructuras
repetitivas
Consideramos como una estructura repetitiv a (Loop, ciclo o
bucle) a un f ragmento de un programa o algoritmo cuy o bloque
de activ idades se repite un nmero determinado de v eces,
mientras una comparacin lgica sea v erdadera.
Es decir, una condicin sea cumplida es por ello que se dice que
una estructura repetitiv a es un medio el cual debe estar
delimitado por una serie de f actores que lograr que tal realice su
f uncionamiento (Repetir).
La ncleo del f uncionamiento de una estructura repetitiv a gira
entorno al uso de una condicin como v alidador si se ejecutar
el bloque de instrucciones en cada iteracin, as mismo un
contador de iteraciones (Nmero de repeticiones del ciclo).
Un bucle consta de tres partes bsicas y esenciales:
1. Una condicin.
2. Un cuerpo (Bloque de instrucciones a ejecutar durante
cada repeticin).
3. Una salida.
A continuacin detallamos el diagrama de flujo base de un
ciclo (Do-While):

168

primera iteracin visto desde peudocdigo, el contador


contabilizara que llevramos una iteracin mediante un 1.
Sintaxis para diagrama de flujo y pseudocdigo:
<Contador> <- <Contador> + <Decremento o incremento
constante>
Acumulador.
Dicho elemento, nace ante la necesidad de aprov echar la
misma utilidad de un contador. Con el detalle que en un
acumulador su proposito no es contador sino acumular.
Por ello se tiende a sumar en cada iteracin una cantidad
v ariable, contrariamente de lo que hace un contador al sumar
una constante para producir el ef ecto de conteo.
Denominamos como acumulador aquella v ariable cuy o v alor
es v ariable, pues se encuentra constituido por el hecho de que
en cada iteracin se suma una cantidad no constante.
Sintaxis para diagrama de flujo y pseudocdigo:
<Acumulador> <- <Acumulador> + <Decremento o
incremento v ariable>
En otras palabras, es un contador cuy o v alor de decremento o
incremento no es constante.

171

4.3.1.- Repetir hacer-mientras


(Do-While)
Este ciclo o bucle tambin se conoce como el ciclo que prueba
por abajo, es debido a que ejecuta una v ez por lo menos las
instrucciones, posteriormente comprueba si se cumple la
condicin.
Si este f uera el caso, continua iterando (repite las
instrucciones), en caso de no cumplirse la condicin, se sale del
ciclo, la condicin de este ciclo puede utilizar v alores numricos
o alf anumricos.
A continuacin se presenta la sintaxis del pseudocdigo de este
tipo de ciclo al igual que su diagrama de flujo y su cdigo en
lenguaje C#.
Pseudocdigo:
Repetir
<Instrucciones>
Mientras <Condicin>
Diagrama de flujo:

173

Cdigo en lenguaje C#:


do
{
<Instrucciones>;
} while(<condicin>);
Ejemplo: Programa en C# que muestra los nmeros del 1 al 10.
1.- Diseo de la parte grfica de la forma:

175

ciclo while, y puede causar problemas.


*/
contador = 0;
//Despliegue de resultados.
do
{
/*Se aumenta el contador a uno para
comenzar el conteo desde uno (recordemos)
que en el programa comienza desde
cero).
*/
contador = contador + 1;

/*Se despliega el conteo concatenando


el valor anterior en la caja
de texto, \r\n sirve para saltar de
rengln.
177

4.3.2.- Repetir mientras (While)


Este ciclo tambin se le conoce como prueba por arriba, debido
a que primero ev ala la condicin antes de ejecutar las
instrucciones, al igual que el ciclo do-while, este tambin se
mantendr iterando siempre y cuando la condicin se cumpla
(Sea v erdadera), esta condicin maneja v alores numricos y
alf anumricos.
A continuacin se presenta la sintaxis para el pseudocdigo,
diagrama de flujo y su cdigo en lenguaje C#.
Pseudocdigo:
Mientras <condicin>
<Instrucciones>
Repetir.
Diagrama de flujo:

179

Cdigo en lenguaje C#:


While (<condicin>)
{
<Instrucciones>;
}
Ejemplo: Programa en C# que muestra los nmeros del 1 al 10.
1.- Diseo de la parte grfica de la forma:

181

while (contador < 10)//condicin.


{
/*Se aumenta el contador a uno para
comenzar el conteo desde uno (recordemos)
que en el programa comienza desde
cero).
*/
contador = contador + 1;

/*Se despliega el conteo concatenando


el valor anterior en la caja
de texto, \r\n sirve para saltar de
rengln.
*/
txtWhile.Text = txtWhile.Text +
contador.ToString() + "\r\n";
}
183

4.3.3.- Repetir desde (For)


Este ciclo (ciclo f or) es el ms simple y sencillo de todos los
ciclos v istos en esta publicacin, el ciclo f or es utilizado y se
recomienda hacerlo cuando se sabe el nmero de iteraciones
deseadas y a que inicialmente se indica las iteraciones que se
realizaran, es decir, se debe explcitamente indicar las
iteraciones que v a a realizar.
Este ciclo y a contiene un contador interno en l, as como una
condicin para determinar la f inalizacin de las iteraciones, por
esta razn la condicin que tiene el ciclo f or solo utiliza v alores
numricos.
A continuacin se presenta la sintaxis para el pseudocdigo,
smbolo en diagrama de flujo y cdigo en lenguaje C#.
Pseudocdigo:
Desde <v ariable (iniciacin) <inicio (v alor)> hasta
<f inal(v alor)> <paso <incremento o decremento de v alor>>
<Instrucciones>
Siguiente <v ariable (contador)>
Diagrama de flujo:

185

5.- Arreglos
Hasta el momento conocemos al menos de lo que se trata la
nocin de las variables o mejor an el propsito de tales.
Llegando al punto en el cual hemos comprendido la importancia
de dichas al momento de ef ectuar alguna operacin o proceso
empleando una v ariable para cada operacin en especf ico.
Por lo cual si tuv iramos una cantidad considerable de
operaciones distintas tenderamos por lgica a def inir una
v ariable para cada tipo de operacin, lo cual no estara mal
simplemente no f uera del todo prctico al lidiar con el posible
mar de cdigo que podra representar esto.
Es por ello que en programacin se dio a la tarea de crear un
objeto que permitiese la manipulacin de una cantidad n
v ariables masiv amente llamado arreglo.
Un arreglo es un conjunto de datos de igual tipo de dato
en forma de una entidad, de tal manera que para llamarlos
se hace uso del nombre del arreglo y una serie
de subndices.
Con el detalle de que no es posible mezclar v arios tipos de
datos en el conjunto de datos.
Algunos autores, v isualizan este tipo de entidades como una
especie de tabla en la cual se almacenan v alores, donde tienen
189

introducidos en una especie de lista, en pseudocdigo, los datos


se empiezan a almacenar desde la celda uno pero en un
lenguaje de programacin como C#, los datos se empiezan a
almacenar desde la celda cero por aquello de la construccin de
la computadora.
Los arreglos, vectores, etc. estn formados por las siguientes
partes:
Nombre del arreglo, El arreglo tendr un solo nombre, cada
dato almacenado en el arreglo se le hace ref erencia mediante el
nombre del arreglo y la posicin de este dato respecto al
arreglo, es decir mediante subndices, por ejemplo: (A[0], A[1],
A[2], ,A[n]).
Subndice, Este se encarga de indicar la posicin donde se
encuentra un elemento del arreglo en el arreglo, el subndice nos
ay uda a dif erenciar entre aquellos elementos almacenados en el
arreglo def iniendo un subndice o subndices nicos para cada
elemento.
Los subndices son de tipo entero y cuando se hace ref erencia
a un arreglo, el nombre de este debe ir acompaado con un
respectiv o subndice.
Ejemplo.
Nombre arreglo: A (3)

191

Cdigo en lenguaje C#:


int [ ] A = new int A [3] {3, 4, 8};
As mismo los arreglos pueden ser llenados y mandados a
desplegar sus v alores mediante el uso de ciclos (Do-While,
While, For).
Por ejemplo:
En pseudocdigo:
1.
2.
3.
4.
5.
6.
7.

Inicio
C <- 0
A(3) <- 0
Desde C <- 1 hasta 3
Leer "Nmeros:", A(C)
Siguiente C
Fin

Cdigo en lenguaje C#:

//Variables.
float[] num = new float[3]; //arreglo de
nmeros
int C = 0; //contador Insercin.
int D = 0; //contador despliegue.
193

public Form1()
{ InitializeComponent();
}
private void cmdcapturar_Click(object
sender, EventArgs e)
{ //asignacin de valores
if (C < 3)
{ num[C] = Single.Parse(txtNum.Text);
C = C + 1;
txtNum.Clear();
txtNum.Focus(); }
else {
MessageBox.Show("Valor mximo de
valores.");
txtNum.Clear();
txtNum.ReadOnly = true;
194

}
}
private void cmdDesplegar_Click(object
sender, EventArgs e)
{ while(D<3)
{ txtDesnum.Text =
txtDesnum.Text+num[D].ToString()+"\r\n";
D=D+1;
}
}
Nombre del proyecto: Ejemplo_Arreglo_Unidimensional

5.2.- Arreglos de dimensin


dos (bidimensionales)
Los arreglos bidimensionales como su nombre lo dice posen 2
dimensiones, es decir (Mltiples renglones y mltiples f ilas), a
los arreglos bidimensionales se le llama tambin matrices o
tablas.
Un arreglo bidimensional tiene la siguiente apariencia:
195

En una sola lnea.


<Tipo de dato> [ , ] <Nombre del arreglo> = new <Tipo de
dato> [<Cantidad de renglones>,<Cantidad de columnas>];
En dos lneas.
<Tipo de dato> [ , ] <Nombre del arreglo>;
<Nombre del arreglo> = new <Tipo de dato> [<Cantidad de
renglones>,<Cantidad de columnas>];
Como y a se menciono, los arreglos pueden ser inicializados con
v alores, es decir se le agregan v alores al declara y crear estos,
por ejemplo:
Cdigo en lenguaje C#:
int [ , ] A = new int A [3,2] {{2,6}, {3,1}, {8,7}};
As mismo los arreglos pueden ser llenados y mandados a
desplegar sus v alores mediante el uso de ciclos(Do-While,
While, For).
Por ejemplo:
En pseudocdigo:
1.
2.
3.
4.

Inicio
C <- 0
D <- 0
A(3,2) <-0

197

5. Desde D <- 1 hasta 3


6.
Desde C <- 1 hasta 2
7.
Leer "Nmeros: ", A(D,C)
8.
Siguiente C
9. Siguiente D
10. Fin
Cdigo en lenguaje C#:

//variables.
float[,] num = new float[3,2]; //arreglo de
nmeros
int C = 0; //contador Insercin.
int D = 0; //contador despliegue.
public Form1()
{ InitializeComponent();
}
private void cmdcapturar_Click(object
sender, EventArgs e)
{ //asignacin de valores
if (C < 3)
198

{ if (D == 2)//Aumento de renglones
(llenado).
{ C = C + 1;
D = 0;
}else//Aumento de columnas (llenado).
{ num[C, D] = Single.Parse(txtNum.Text);
D = D + 1;
txtNum.Clear();
txtNum.Focus();
}
}else{
MessageBox.Show("Valor mximo de
valores.");
txtNum.Clear();
txtNum.ReadOnly = true;
}
199

La experiencia como estudiante as mismo como instructor de


asesoras impartidas a alumnos del I.T.T, halogrado
consolidarme a tal grado de poder contextualizar todos aquellos
problemas generalmente presentados como estudiante al
momento de cursar un ambiente media-superior. Teniendo como
producto algunas publicaciones principalmente destinadas a
compartir un poco de mis conocimientos a todos aquellos
estudiantes que lo requieran. Esto y muchas otras cosas ms
es lo que soy...
Twitter:@RauZaLo
Sitio web: raulzav ala.com
Roberto Llamas Avalos.

203