Está en la página 1de 19

Programacion estructurada

y orientada a objetos
UN ENFOQUE ALGORITMICO (3lEdicion

LEOBA~DO LOPEZ ROMAN

. Web .

A Alfaomega •
00 )\
La.?

ProgramacifJn estructurada
y orientada a objetos
UN ENFOQUE ALGORfTMICO

A Alfaomega
Datos catalognificos:
L6pez Roman, Leobardo
Programaci6n estructurada y orientada a objetos. Un
enfoque algoritmico
Tercera edici6n
Alfaomega Grupo Editor S.A. de C.Y., Mexico
pmce~~~~~~

Fecha de ingreso: ~\ \.l... \ 'dO~S>


Paginas: 576

Programacion estructurada y orientada a objetos. Un enfoque algoritmico L " LAS?


Leobardo L6pez Roman --~.
Derechos reservados © Alfaomega Grupo Editor, S.A. de C. Y., MexicoL ~R03(2(?j 't.STt0J C-rji:l.AJii~:j 10, .' _
Tercera Edici6n: Alfaomega Grupo Editor, Mexico, agosto de 2011 9110(,'" L ~._ l)-t- Q:){\i\qvTi4:ooPA:?)(TI./.t0R$'jl~C(QI\J
OWE/'S;;-i\Pf'; y\ Gib-"'€To1>i.. bi SsiJo Oi4E: (l
© 2011 Alfaomega Grupo Editor, S.A. de C.V. 0 ~.l!f;rf'o':.>LL'ENG\)~ ~ RQ,.r)6Q-d1;Y~O\·ON
Pitagoras 1139, Co!. Del Valle, 03100, Mexico D.F. (A lG oi1.\-rMIOs.">LtJ G'tacICios' ~AAC\i (.)os.~,
Miembro de la Camara Nacional de la Industria Editorial Mexicana i C ""\,'/ L ~o '>
L..,,) \ AS>
Registro N° 2317
Pagina Web: http://www.alfaomega.com.mx
E-mail: atencionalcliente@alfaomega.com.mx

Derechos reservados:
Esta obra es propiedad intelectual de su autor y los derechos de publicaci6n en lengua espanola han sido legal mente trans-
feridos al editor. Prohibida su reproducci6n parcial 0 total por cualquier medio sin permiso por escrito del propietario de los
derechos del copyright.
Nota importante:
La informaci6n contenida en esta obra tiene un fin exclusivamente didactico y, por 10 tanto, no esm previsto su aprovechamiento a ni-
vel profesional 0 industrial. Las indicaciones tecnicas y programas inc1uidos, han sido elaborados con gran cuidado par el autor y repro-
ducidos bajo estrictas normas de contro!. ALFAOMEGA GRUPO EDITOR, SA. de C.v., no sera juridicamente respansable por:
errores u omisiones; danos y perjuicios que se pudieran atribuir al uso de la informaci6n comprendida en este libro, ni por
la utilizaci6n indebida que pudiera darsele.

Esta edici6n puede venderse en todos los paises del mundo.


Impreso en Mexico. Printed in Mexico.

Empresas del grupo:


Argentina: Alfaomega Grupo Editor Argentino, S.A.
Paraguay 1307 P.B. "11", Buenos Aires, Argentina, C.P. 1057
Tel.: (54-11) 4811-7183 /0887 - E-mail: ventas@alfaomegaeditor.com.ar
Mexico: A1faomegaGrupo Editor, S.A. de c.v.
Pitagoras 1139, Col. Del Valle, Mexico, D.F., Mexico, C.P. 03100
Tel.: (52-55) 5575-5022 - Fax: (52-55) 5575-2420 /2490. Sin costo: 01-800-020-4396
E-mail: atenciona1cliente@a1faomega.com.mx
Colombia: Alfaomega Co1ombianaS.A.
Carrera 15 No. 64 A 29, Bogota, Colombia - PBX (57-1) 2100122 - Fax: (57-1) 6068648
E-mail: scliente@alfaomega.com.mx
Chile: A1faomegaGrupo Editor, S.A.
Dr. La Sierra 1437, Providencia, Santiago, Chile
Tel.: (56-2) 235-4248 - Fax: (56-2) 235-5786 - E-mail: agechi1e@a1faomega.cl
La computadora
La computadora es una herramienta que se utiliza para representar cualquier si-
tuaci6n de la realidad en forma de datos, los cuales se procesan despues para
generar informaci6n, esquematicamente:

Situaci6n real:
• Control de inventarios
• Control de producci6n
• Control de compras
DATOS •• I PROCESO I .• INFORMACION

• Control de ventas
• Pago de sueldos (n6mina)

Esto quiere decir que toda situaci6n que pueda ser abstrafda y representada
en forma de datos, puede manejarse mediante la computadora, porque el esque-
ma del proceso de datos es E-P-S (Entrada-Proceso-Salida), es decir, datos en-
tran como materia prima, se procesan para transformarlos en la informaci6n que
se da como salida. Por ejemplo, en una situaci6n de pago de sueldos (n6mina),
un trabajador puede representarse mediante los datos: Nombre del empleado,
numero de horas trabajadas y cuota por hora. EI sueldo se obtiene multiplicando
numero de horas trabajadas por la cuota por hora. Y se da como salida el nom-
bre y el sueldo. Tanto los datos como el procedimiento necesario para generar la
informaci6n, se suministran a la computadora en forma de un programa consti-
tuido por instrucciones. La computadora interpreta y ejecuta las instrucciones del
programa de acuerdo con ciertas reglas de sintaxis que conforman ellenguaje de
programaci6n, mediante el cual podemos comunicarle 10que debe hacer.
Los elementos basicos que componen una computadora son la unidad cen-
tral de proceso, la unidad de memoria, la unidad de entrada y la unidad de salida.
La unidad central de proceso es el "cerebro" que controla el funcionamiento
de los componentes y ejecuta las operaciones aritmeticas y 16gicas. Las opera-
ciones del procesador central son muy simples, pero ejecutadas a una velocidad
muy alta -del orden de millones por segundo- permiten la ejecuci6n de tareas
simples 0 complejas.
___ II__ ~

Unidad Central
de Proceso

La memoria se utiliza para almacenar los datos, ya estos se les aplican las
operaciones del procesador. Existen dos tipos de memoria: la principal y la auxi-
liar. La memoria principal permite al procesador extraer y almacenar datos a una
velocidad comparable con la propia. Cada operaci6n propicia por 10 menos un
acceso a la memoria. Para que el procesador pueda avanzar de una operaci6n a
la siguiente sin retraso, el programa de instrucciones se almacena en est a memo-
ria; en otraspalabras, la memoria principal guarda tanto las instrucciones como
los datos sobre los que actiJa el procesador central. La memoria principal esta
limitada por su alto costa; debido a esto no es posible conservar en ella gran-
des cantidades de datos e instrucciones y, en consecuencia, s610 se usa para
guardar 10 que el procesador este utilizando por el momento. Ademas, tiene la
caracterfstica de que no permite almacenar datos permanentemente, pues si se
apaga la computadora se pierde 10que haya en memoria. Por tales razones, las
computadoras estan equipadas con memorias auxiliares para almacenamiento
masivo y permanente de datos, tales como discos magneticos fijos, disquetes
(discos flexibles) magneticos removibles, discos compactos, cintas magneticas,
entre otros. Estos dispositivos tienen mas capacidad que la memoria principal,
pero son mas lentos. Los datos pueden almacenarse en ellos de manera perm a-
nente, es decir, pueden guardarse para usos posteriores.
La unidad de entrada se utiliza para introducir datos del exterior en la memo-
ria de la computadora a traves de dispositivos perifericos de entrada como tecla-
dos de terminales, raton (mouse), discos, modem, lector de codigo de barras, etc.
Esta unidad realiza automaticamente la traduccion de simbolos inteligibles para
la gente, en sfmbolos que la maquina pueda manejar.
La unidad de salida permite transferir datos de la memoria al exterior, a tra-
ves de dispositivos perifericos de salida como impresoras, pantallas de video,
m6dem, etc. Esta unidad realiza automaticamente la traducci6n de simbolos que
puede manejar la maquina, en sfmbolos inteligibles para la gente.
EI programa
Un programa es un conjunto de instrucciones que gufan a la computadora para
realizar alguna actividad 0 resolver algun problema; en el programa se ejecutan
diferentes acciones de acuerdo con los datos que se esten procesando. EI pro-
grama debe incluir instrucciones para las acciones que deban ejecutarse sobre
cada uno de los tipos de datos admitidos, ademas instrucciones que identifiquen
los datos erroneos y recuperarse ante la aparicion de estos.
Cuando se ejecuta un programa con un tipo -de datos especffico, es proba-
ble que no se ejecuten todas las instrucciones, sino solo las que sean pertinen-
tes a los datos en cuestion. Un programa se compone de estructuras de datos,
operaciones primitivas elementales y estructuras de control, como se muestra a
continuacion:
Programa = Estructuras de datos
+ Operaciones primitivas elementales
+ Estructuras de control

Estructuras de datos. Son las formas de representacion interna de la com-


putadora. Los hechos reales, representados en forma de datos, pueden estar
organizados de diferentes maneras lIamadas estructuras de datos. Por ejemplo
el nombre, las horas trabajadas y el sueldo por hora son los datos mediante los
cuales se representa un empleado en una situacion de pago de sueldos (nomina).
Operaciones primitivas elementales. Son las acciones basicas que la com-
putadora "sabe" hacer, y que se ejecutan sobre los datos para darles entrada,
transformarlos y darles salida convertidos en informacion. Por ejemplo, el sueldo
de un empleado se calcula multiplicando las horas trabajadas por la cuota horaria.
Estructuras de control. Son las formas logicas de funcionamiento de la
computadora mediante las que se dirige el orden en que deben ejecutarse las
instrucciones del programa. Las estructuras de control son: La secuenciacion,
que es la capacidad de ejecutar instrucciones secuenciales una tras otra. La
seleccion es la capacidad de escoger 0 seleccionar si algo se ejecuta 0 no, optar
por una de dos 0 mas alternativas, y la repeticion, que es la capacidad de realizar
en mas de una ocasi6n (es decir, varias veces) una acci6n 0 conjunto de accio-
nes; por ejemplo calcular el sueldo a un empleado, pero repitiendo el calculo n
veces para n empleados.

EI lenguaje de programaci6n
Un lenguaje de programaci6n es el medio a traves del cual Ie comunicamos a la
computadora la secuencia de instrucciones que debe ejecutar para lIevar a cabo
actividades, tareas 0 soluci6n de problemas. Todo lenguaje permite el manejo de
los tres elementos que componen un programa, a saber: estructuras de datos,
operaciones primitivas elementales y estructuras de control.
Recordemos que mediante un programa podemos representar en forma de
datos cualquier situaci6n de nuestra realidad, a los datos se les da entrada a la
computadora mediante dispositivos de entrada como teclado, lector 6ptico de ca-
racteres, rat6n, etc.; una vez que los datos estan en la computadora, se procesan
para convertirlos en informaci6n, la cual sera emitida hacia el exterior de la compu-
tadora mediante dispositivos de salida como son la pantalla, impresora, etcetera.

• Caracterfsticas de los lenguajes de programaci6n


Todo lenguaje esta compuesto por un alfabeto, un vocabulario y una gramatica.
A continuaci6n se describen estos componentes.
Alfabeto 0 conjunto de caracteres. Es el conjunto de elementos estructurales
del lenguaje:
a) Caracteres alfabeticos (Ietras minusculas y mayusculas).
b) Caracteres numericos (dfgitos del 0 al 9).
c) Caracteres especiales (sfmbolos especiales tales como
[.J, [,J, [:], [;J, [$], [#J, [I] Y muchos otros).
Vocabulario 0 lE~xico.Es el conjunto de palabras validas 0 reservadas en el len-
guaje. Por ejemplo, las palabras program, begin, end, if, then, else, integer, real,
string, repeat, for, while, char, procedure, function, byte, boolean tienen un signi-
ficado predeterminado en el lenguaje Turbo Pascal, es decir, son las palabras re-
servadas dellenguaje Turbo Pascal. Asf, cada lenguaje tiene sus propias palabras
reservadas.
Gramatica. Es el conjunto de lineamientos que se deben seguir para construir
frases, oraciones 0 instrucciones. Mediante la gramatica 0 sintaxis logramos
transmitirle a la computadora 10 que deseamos. Por ejemplo, para leer datos de-
bemos seguir cierto lineamiento, tam bien para imprimir, etcetera.

La programaci6n
Generalmente se consideran sin6nimos los conceptos programaci6n y codifica-
ci6n, 10 cual constituye un error. Debemos tener presente que la finalidad de un
programa es realizar algun proceso sobre ciertos datos para obtener ciertos re-
sultados. La preparaci6n de un programa implica aspectos tales como: (,para que
sirve el proceso que se desea representar?, (,que datos usara, que resultados
producira y c6mo se realizara el proceso sobre los datos para obtener los resul-
tados esperados? Una vez identificado 10anterior se procede a disenar la manera
de c6mo la computadora debera hacerlo, tomando en cuenta su estructura inter-
na y su funcionamiento. Hasta ese momenta se tiene representada la soluci6n de
una manera convencional (algoritmo), pero enseguida se procede a codificar el
programa que solucionara el problema, utilizando un lenguaje de programaci6n.

• Caracterfsticas de un buen programa


Un programa bien escrito debe tener ciertas caracteristicas basicas que Ie permi-
tan operar correctamente; las principales serian las siguientes:
Operatividad. Lo minimo que debe hacer un programa es funcionar; es decir,
producir los resultados esperados independientemente de cualquier otra carac-
terfstica.
Legibilidad. Un programa puede hacerse mas legible dandole cierto formato al
c6digo, utilizando el sangrado (indentaci6n) para reflejar las estructuras de con-
trol del programa, e insertando espacios 0 tabuladores. Es conveniente disenar
reglas propias para darle uniformidad a todos los programas.
Transportabilidad. Un programa transportable es el que puede ejecutarse en
otro entorno sin hacerle modificaciones importantes. Mientras menos modifica-
ciones se hagan sera mas transportable, asi que es conveniente no utilizar carac-
terfsticas especiales del hardware ni "facilidades" especiales del software.
Claridad. Esta caracteristica se refiere a la facilidad con la que el texto del pro-
grama comunica las ideas subyacentes. EI programa debe indicar claramente 10
que el programador desea. Una buena programaci6n es similar a la elaboraci6n
de un documento legal; por ejemplo, conviene utilizar nombres adecuados para
los identificadores, hacer comentarios correctos, claros y concisos, etcetera.
Modularidad. Dividir el programa en un numero de m6dulos pequenos y faciles
de comprender puede ser la contribuci6n mas importante a la calidad del mismo.
Cada m6dulo debe realizar s610 una tarea especffica, y no mas. Los m6dulos
tienen la virtud de minimizar la cantidad de c6digo que el programador debe
comprender a la vez, ademas de que permiten la reutilizaci6n de c6digo.

Desde que la programaci6n de computadoras apareci6 como tal, la forma, el pa-


radigma 0 modele que se usa ha evolucionado constantemente. Sin embargo, las
bases de la programaci6n no han cambiado, simplemente se han ido anadiendo
nuevos conceptos y nuevas estructuras. Todo inicia con las primeras estructuras
que se inventaron cuando aparece la programaci6n tradicional, luego, sobre esas
bases se gest6 la programaci6n estructurada, para dar lugar a la programaci6n
modular, enseguida se agrega la programaci6n con abstracci6n de datos, para
lIegar al desarrollo de la programaci6n orientada a objetos. En la siguiente figura
se esquematiza la evoluci6n de los paradigmas de programaci6n.
PROGRAMACION ORIENTAOA A OBJETOS

PROGRAMACION CON ABSTRACCION DE DATOS

PROGRAMACION MODULAR

PROGRAMACION ESTRUCTURAOA

I PROGRAMACION TRAOICIONAL
I
Caracterlsticas de 105 paradigmas de programaci6n
La evoluci6n de los paradigmas de programaci6n ha tenido tres grandes pasos,
el primer gran paso es cuando la programaci6n aparece como tal, es 10 que se
esta esquematizando como la programaci6n tradicional. Luego se dio un segun-
do gran paso y surge la programaci6n estructurada. Oespues se experiment6
un pequeno paso que dio lugar a la programaci6n modular. Enseguida vino otro
pequeno paso que permiti6 el surgimiento de la programaci6n con abstracci6n
de datos. Luego vino el tercer gran paso que es la aparici6n de la programaci6n
orientada a objetos.

Tradicional
La programaci6n tradicional tuvo sus inicios a principios de la decada de 1950.
Los lenguajes de programaci6n que se utilizaban eran los predecesores de FOR-
TRAN, COBOL Y BASIC. Las estructuras 16gicas de control que se utilizaban eran:
la secuenciaci6n, IF-THEN, IF-THEN-ELSE Y DO (en la actualidad conocido como
FOR). La tecnica de diseno de programas utilizada eran los diagramas de flujo.
La arquitectura de un programa consistfa de un solo m6dulo, como se mues-
tra a continuaci6n:

Este m6dulo estaba formado por una secuencia ordenada de instrucciones:


Instrucci6n 1
Instrucci6n 2
Instrucci6n 3
Instrucci6n 4
Instrucci6n 5
Instrucci6n 6
Instruccion 7
Instruccion 8

Estructurada
La programacion estructurada tuvo sus inicios a mediados de la decada de 1960.
Los lenguajes de programacion que se utilizaban eran PASCAL, COBOL estruc-
turado, BASIC estructurado, FORTRAN con estilo estructurado, FORTRAN 90 Y
Lenguaje C. Las estructuras de control utilizadas eran la secuenciacion, IF-THEN,
IF-THEN-ELSE, CASE, FOR, DO-UNTIL Y DOWHILE. Otras caracterfsticas son:
Dividir un programa en modulos y funciones y estilo de programacion. Las tecni-
cas de diseiio de programas que se utilizaban eran diagramas Warnier, diagramas
estructurados, diagramas Chapin, seudocodigo y Top Down Design, entre otras.
La arquitectura de un programa consistfa en datos y en un conjunto de mo-
dulos jerarquizados, como se muestra a continuacion:

Cada modulo estaba formado por un conjunto ordenado de instrucciones:


Modulo Uno Modulo Dos Modulo Tras
Instruccion 1 Instruccion 1 Instruccion 1
Instruccion 2 Instruccion 2 Instruccion 2
Instruccion 3 Instruccion 3 Instruccion 3

AI diseiiar la solucion en modulos, la programacion estructurada permite so-


lucionar problemas mas grandes y complejos, de una mejor forma que como se
hacfa anteriormente.
Modular
La programaci6n modular tuvo sus inicios a fines de la decada de 1970 y prin-
cipios de la de 1980. EI lenguaje de programaci6n que se utiliz6 fue MODULA 2.
Emerge el concepto de encapsulaci6n, que en un m6dulo 0 paquete se encapsu-
Ian los datos y las funciones que los manipulan.

Con abstracci6n de datos


La programaci6n con abstracci6n de datos se gener6 en la decada de 1980. EI
lenguaje de programaci6n que se utiliz6 fue ADA. Con este emerge el concepto
de Tipos Abstractos de Datos (TAD).

Orientada a objetos
La programaci6n orientada a objetos, aunque el concepto se gener6 muchos
arios antes, es a finales de la decada de 1980 y principios de la de 1990 que
se pone en boga, la caracterizan los conceptos objetos, clases, encapsulaci6n,
herencia y polimorfismo. Los principales lenguajes de programaci6n que se uti-
lizan son C++, Java y C#. Las tecnicas de diserio que se utilizan son Booch,
Rumbaugh, Jacobson, Yourdon y UML (Unified Modeling Language), entre otras.
La arquitectura de un programa consiste en un conjunto de objetos, y cada
objeto se compone por datos y un conjunto de metodos, donde cada metoda
esta formado por un conjunto de instrucciones, como se muestra a continuaci6n:

Objeto1 Objeto2

Datos Datos
I I
Metod01 Metod02 Metod01 Metod02
II I I II
Metod03 MetodoN Metod03 MetodoN
II I I II

__ M_e_'t_od_0_1
__ II__ M_e_to_d_0_2
__ II__ M_e_to_d_0_3
__ II,-__ M_e_to_d_0_N_~
La programaci6n orientada a objetos permite manejar mejor la complejidad
de los programas, porque permite una mayor pulverizaci6n 0 segmentaci6n de
los programas a traves de los objetos, esto, de una forma mas eficiente que como
se hacfa anteriormente con la programaci6n estructurada.

Resumiendo
Sobre las estructuras basicas que se crearon con la programaci6n tradicional, se
gest6 una revoluci6n de nuevas estructuras que se anadieron a la programaci6n,
a 10que se Ie lIam6 programaci6n estructurada; est a aport6 las bases 16gicas so-
bre la que se sustent6 la programaci6n modular; esta anadi6 otro concepto mas
para dar lugar a la programaci6n con abstracci6n de datos, y sobre todas esas
bases, se sustenta la programaci6n orientada a objetos.

Elaborar un programa de computadora implica lIevar a cabo una serie de pasos


secuenciales y cronol6gicos que comienzan con la detecci6n y definici6n del
problema y conducen a la implantaci6n del programa que 10 soluciona. A conti-
nuaci6n se describen los pasos a seguir.

• Definicion del problema


Este proceso inicia cuando surge la necesidad de resolver algun problema me-
diante la computadora. Para empezar, se debe de identificar el problema y com-
prender la utilidad de la soluci6n que se alcance. Es necesario tener una visi6n
general del problema estableciendo las condiciones iniciales (Ios puntos de parti-
da) y, ademas, los I[mites del problema, es decir, d6nde empieza y d6nde termina.
Por ejemplo, si tenemos que calcular el sueldo de un empleado, la soluci6n que
se logre permitira obtener la cantidad que debe pagarsele y servira precisamente
para pagarle. La situaci6n anterior consiste en un pago de sueldos, y parte de que
cada empleado tiene algunos atributos como su nombre, el tiempo trabajando y
el sueldo que percibe por unidad de tiempo dedicada a su labor.

• Amilisis del problema


A continuaci6n es necesario entender con detalle el problema en cuesti6n, para
obtener una radiograffa del mismo en terminos de los DATOS disponibles como
materia prima, y definir el PROCESO necesario para convertir los datos en la IN-
FORMACION requerida.
La primera etapa consiste en definir los resultados esperados, es decir, la
INFORMACION que debera producirse como salida. Respecto al problema de
pago de salarios tenemos que se requiere la siguiente salida:
Nombre del empleado: XXXXXXXXXXXXXXXXXXXXXXXX
Sueldo: 99,999,999.99
La segunda etapa consiste en identificar los DATOS que se tienen como ma-
teria prima y que constituiran la entrada del programa. En este ejemplo tenemos:
EI nombre del empleado.
EI numero de horas trabajadas.
La cuota por hora.
La tercer a etapa tiene como finalidad determinar el PROCESO necesario
para convertir los datos de entrada en la informaci6n que se tendra como salida.
Volviendo al ejemplo, puesto que se requieren dos datos de salida, determinemos
el proceso de la siguiente man era:

a) GC6mo se calcula el nombre del empleado?


No implica ningun calculo, pues es un dato que se obtiene como entrada y
que no se modifica.
b) GC6mo se calcula el sueldo?
EI sueldo es un dato que no existe como entrada, pero que se obtiene 0
genera: multiplicando las horas trabajadas por la cuota horaria.

En este momento ya se tiene una comprensi6n clara del problema, y pode-


mos avanzar hacia el siguiente paso.

• Diseno del programa


Durante este paso se procede a disefiar la 16gica para la soluci6n al problema,
haciendo dos cosas:
Elaborar el algoritmo. Se disefia el algoritmo de la soluci6n al problema, es
decir, se estructura la secuencia /6gica y cronol6gica de los pasos que la com-
putadora debera seguir, utilizando alguna tecnica convencional como el seu-
doc6digo, los diagramas de flujo (en desuso con la programaci6n estructurada),
los diagramas Warnier, los diagramas Chapin, etc. Equiparando esta actividad
con la construcci6n de una casa, equivale a disefiar el plano arquitect6nico de
la misma.
Prueba de escritorio. Se simula el funcionamiento del algoritmo con datos pro-
pios respecto al problema, y se comprueban a mana los resultados con el fin
de validar la correcta operaci6n del algoritmo. Si quedamos satisfechos con los
resultados de la prueba habremos agotado este punto, pero en caso contrario se
debera modificar el algoritmo y posteriormente volverlo a pro bar hasta que este
correcto. Es posible que se deba retroceder a cualquier paso precedente.
En este momenta se tiene ya disefiada la soluci6n al problema, y estamos
listos para pasar al siguiente punto.

• Codificacion del programa


En este paso se procede a codificar el programa en el lenguaje de programaci6n
que vayamos a utilizar. Este proceso es sumamente sencillo, dado que ya tene-
mos disefiado el programa, s610 nos concretamos a convertir las acciones del
algoritmo en instrucciones de computadora. EI programa codificado debe editar-
se, compilarse, probarse y depurarse, es decir, se ejecuta para verificar su buen
funcionamiento y se hacen las correcciones 0 los ajustes pertinentes hasta que
quede correcto. Si aparecen errores diffciles de corregir en este paso, quiere decir
que debemos retroceder al paso 3 0 al paso 2.
Para que un programa pueda ser entendido y ejecutado por la computadora,
debe estar en lenguaje maquina 0 codigo objeto, el programa que nosotros ha-
cemos en papel a lapiz 0 pluma, debe ser traducido por un compilador, a codigo
asequible para la maquina mediante 180 compilaci6n. EI proceso de compilacion
es el siguiente: Una vez que tenemos codificado el programa en papel, debe ser
introducido mediante el proceso de edici6n, para 10 cual, se utiliza un editor
que nos permite crear un archivo en el cual introducimos el programa, creandose
el programa fuente con las instrucciones que nosotros elaboramos en ellengua-
je que estemos utilizando en este momento. EI programa fuente es sometido al
proceso de compilaci6n, que mediante un compilador (traductor del lenguaje),
se traduce instruccion por instruccion a codigo objeto, creandose un archivo con
el programa objeto, el cual es entendible directamente por la maquina. Si en el
proceso de traduccion se encuentra algun error, se suspende el proceso; el pro-
gramador debe corregir el error en el programa fuente y luego someterlo de nuevo
al proceso de compilacion.
Una vez que el proceso de compilacion ha terminado con exito, se tiene el
programa objeto, el cual puede ser ejecutado por la computadora, misma que
seguira las instrucciones paso a paso lIevando a cabo las acciones que se Ie
indican emitiendo los resultados correspondientes, si estos no son satisfactorios
o existen errores, el proceso de programacion debe ser repetido desde alguno
de las pasos precedentes.

• Implantaci6n del programa


Una vez que el programa esta correcto, se instala y se pone a funcionar, entrando
en operacion normal mente dentro de la situacion especffica para la que se de-
sarrollo. Debe ser supervisado continuamente para detectar posibles cambios 0
ajustes que sea necesario realizar.

• Mantenimiento del programa


Un programa que esta en operacion, por un lado podrfa presentar errores, los
cuales deben corregirse; por otro lade podrfa requerir cambios 0 ajustes en sus
datos, proceso 0 informacion; esto implica que eventualmente necesitara mante-
nimiento para adecuarlo a los cambios que Ie impongan la dinamica cambiante
de las empresas 0 de los problemas.
Lo anterior nos situ a en una dinamica infinita, ya que si surge la necesidad
de darle mantenimiento tendremos que regresar a algun paso precedente; al 4, al
3, al 2 0 al punta uno para definir de nuevo el problema.
En el proceso de programaci6n hay un paso que es crucial al momenta de desa-
rrollar un programa, que es el diseno del programa, en otras palabras, disenar 0
elaborar el algoritmo de la soluci6n.
EI algoritmo es una secuencia ordenada y cronol6gica de pasos que IIevan a
la soluci6n de un problema 0 a la ejecuci6n de una tarea (0 actividad). Los pasos
del algoritmo deben tener las siguientes caracterfsticas:
• Ser simples, claros, precisos, exactos.
• Tener un orden 16gico.
• Tener un principia y un fin.

Aplicando el concepto de algoritmo a situaciones de nuestra vida cotidiana,


tenemos que, ejemplos de algoritmos son las senas para encontrar una direc-
ci6n, las recetas de cocina, los planas de construcci6n, las instrucciones para
armar a utilizar un juguete, etc. Cuando disenemos algoritmos deberemos consi-
derar que los pasos cumplan con las caracterfsticas antes mencionadas.
A continuaci6n aplicaremos estos conceptos en una situaci6n de nuestra
vida cotidiana, para efectos de resaltar las caracterfsticas de los pasos de todo
algoritmo; posteriormente (en los capitulos subsecuentes) estaremos aplicando-
los al desarrollo de algoritmos que debera ejecutar la computadora.

Ejercicios
A) Elaborar un algoritmo para que guie a una persona normal -como usted lector-
a cambiar un foco fundido, considerando que algun foco de nuestra casa (sala,
comedor, bano, recamara, etc.) esta fundido, piense en los pasos que debera
seguir.
Algoritmo Cambiar faco fundido
1. Quitar el foco fundido
2. Colocar el foco nuevo
3. Fin

Si usted pens6 en los pasos a seguir, es probable que no coincidan exacta-


mente con estos, pero si conducen de manera efectiva a ejecutar el cambio del
foco, entonces estara correcto, como es el caso de este algoritmo. Si bien es
cierto que son pocos pasos, si usted los entiende y los ejecuta para lograr cam-
biar el foco, entonces esta correcto.
Ahora bien, sup6ngase que estamos tratando de entrenar a un robot para
que haga la tarea; en tal cas a no funcionara el algoritmo, tendremos que ser mas
especfficos y c1aros tomando en cuenta las capacidades elementales del robot.
Preguntemonos: l,que sabe hacer el robot?, y can base en ello elaboremos el
algoritmo.
Capacidades del robot:
• Colocar la escalera
Suponemos que se tiene una escalera especial para que la maniobre el robot.
Sabe traer la escalera desde su lugar y colocarla debajo del foco fundido.
• Subir a la escalera
Sabe subir par los peldafios de la escalera hasta alcanzar el foco fundido a
ellugar del foco.
• Quitar el foco fundido
Sabe girar el foco a la izquierda hasta que salga.
• Obtener foco de repuesto
Suponemos que se tiene una caja con focos de repuesto de todas las me-
didas, y que el robot sabe d6nde se encuentra la caja y puede obtener un
foco nuevo y en buenas condiciones, igual al que traiga en su brazo.
• Colocar el foco de repuesto
Sabe colocar y girar el foco de repuesto a la derecha hasta que este apretado.
• Bajar de la escalera
Sabe bajarse de la escalera hasta estar en el piso.
• Guardar la escalera
Sabe guardar la escalera en el lugar correspondiente.
• Fin
Sabe que ha terminado de ejecutar la tarea.

A continuaci6n tenemos el algoritmo:


Algoritmo Cambiar foco fundido.
1. Colocar la escalera
2. Subir a la escalera
3. Quitar el foco fundido
4. Bajarse de la escalera
5. Obtener foco de repuesto
6. Subirse a la escalera
7. Colocar el foco de repuesto
8. Bajar de la escalera
9. Guardar la escalera
10. Fin

B) Ahora pensemos en otro robot que tiene las siguientes capacidades:


• Colocar la escalera
Sabe traer la escalera desde su lugar y colocarla debajo del foco fundido.
• Subir un peldario
Sabe subir un peldafio de la escalera y sabe detectar cuando alcanza el
foco a el lugar del foco.
• Oar vuelta a la izquierda
Sabe girar el foco una vuelta a la izquierda y detectar cuando sale.
• Obtener foco de repuesto
Suponemos que se tiene una caja con focos de repuesto de todas las me-
didas, y que el robot sabe d6nde se encuentra la caja y puede obtener un
foco nuevo y en buenas condiciones, igual al que traiga en su brazo.
• Oar vuelta a la derecha
Sabe girar el foco una vuelta a la derecha y detectar cuando esta apretado.
• Bajar un peldaiio
Sabe bajar un peldafio de la escalera y sabe detectar cuando esta en el piso.
• Guardar la escalera
Sabe guardar la escalera en el lugar correspondiente.
• Fin
Sabe que ha terminado de ejecutar la tarea.

Es obvio que el algoritmo que hicimos anteriormente no servirfa para este


nuevo robot. Es necesario hacer otro algoritmo considerando las capacidades
de este robot.

A continuaci6n tenemos el algoritmo:


Algoritmo Cambiar foco fundido
1. Colocar la escalera
2. Repetir
Subir un peldaiio
Hasta alcanzar el foco
3. Repetir
Oar vuelta a la izquierda
Hasta que el foco salga
4. Repetir
Bajar un peldaiio
Hasta estar en el piso
5. Obtener foco de repuesto
6. Repetir
Subir un peldaiio
Hasta alcanzar el lugar del foco
7. Repetir
Oar vuelta a la derecha
Hasta que el foco este apretado
8. Repetir
Bajar un peldaiio
Hasta estar en el piso
9. Guardar la escalera
10. Fin

También podría gustarte