Sie sind auf Seite 1von 362

Programacin I

Unidad Temas Subtemas


1 Introduccin a la
computacin
1.1Breve resea de la computacin
1.2mpacto de las computadoras en la
sociedad
1.3Definiciones
Lenua!e de "lto #ivel$ ba!o nivel$
ensamblador % ma&uina.
'ompilador
Traductor
Sistemas #um(ricos
"r&uitectura de computadoras
Sistemas operativos
1.)Descripcin de tipos de proramacin
1.).1 *roramacin estructurada
1.).2 *roramacin orientada a
ob!etos
1.4.3 Programacin de descripcin de
Hardware sistemas numricos
1.+Lenua!es de proramacin
2 Diseo de "loritmos 2.1 'onceptos b,sicos
2.2 -etodolo.a de la proramacin
2.3 Diaramas de flu!o
2.) *seudocodios
3 /undamentos del
Lenua!e
3.1Desarrollo 0istrico del lenua!e
estructurado
3.21structura eneral de un prorama
3.3*alabras reservadas
3.)2epresentacin de datos b,sicos
3.+Declaracin de variables$ 'onstantes$
*rocedimientos % /unciones
3.34peraciones aritm(ticas$ licas %
relacionales.
3.5Diseo$ 1dicin$ 'ompilacin %
1!ecucin de proramas
) 1structuras de
Decisin % 'ontrol
).11structura secuencial
4.2Estructuras de Transferencia
ncondicionales
).31structuras de Transferencia
'ondicionales
).)1structuras 2epetitivas 6Bucles7
+ "rrelos % "rc0ivos +.1"rrelos 68ectores % -atrices7
+.2-ane!o "rc0ivos
3 -dulos 3.1Diferencia entre /unciones %
*rocedimientos.
3.2"ctivacin 9 Invocacin de /unciones %
*rocedimientos
3.3Uso de /unciones % *rocedimientos con
*ar,metros.
5 :raficacin 7.1Conceptos bsicos de grficas.
7.2ntroduccin bsica de manejo de grficas.
7.3Uso de libreras para la realizacin de
graficas.
5.):raficacin de un punto % l.neas rectas
5.+:raficacin de /unciones -atem,ticas
en el plano cartesiano.
7.6ntroduccin a la potencia grafica
; *uertos ;.1 'onceptos enerales de mane!os de
puertos
;.2 'onfiuracin de los puertos en las
computadoras
;.3 Uso de instrucciones para mane!o de
puertos
Unidad 1. Introduccin a la
computacin
1.1 Breve resea de la computacin
<istoria de la 'omputacin

'4-*UT"D42"
Mquina capaz de efectuar una secuencia de operaciones mediante un
programa, de tal manera, que se realice un procesamiento sobre un conjunto
de datos de entrada, obtenindose otro conjunto de datos de salida.
TI*4S D1 '4-*UT"D42"S
Se clasifican de acuerdo al principio de operacin de "nalicas % Diitales.
'4-*UT"D42" "#"L=:I'"
1. Aprovechando el hecho de que diferentes fenmenos fsicos se describen por
relaciones matemticas similares (v.g. Exponenciales, Logartmicas, etc.) pueden
entregar la solucin muy rpidamente. Pero tienen el inconveniente que al cambiar el
problema a resolver, hay que realambrar la circuitera (cambiar el Hardware).
'4-*UT"D42" DI:IT"L
1. Estn basadas en dispositivos biestables, i.e., que slo pueden tomar uno de dos
valores posibles: '1' '>'. Tienen como ventaja, el poder ejecutar diferentes programas
para diferentes problemas, sin tener que la necesidad de modificar fsicamente la
mquina.
<IST42I" D1 L" '4-*UT"'I=#
Uno de los primeros dispositivos mecnicos para contar fue el baco, cuya
historia se remonta a las antiguas civilizaciones griega y romana. Este
dispositivo es muy sencillo, consta de cuentas ensartadas en varillas que a su
vez estn montadas en un marco rectangular. Al desplazar las cuentas sobre
varillas, sus posiciones representan valores almacenados, y es mediante
dichas posiciones que este representa y almacena datos. A este dispositivo no
se le puede llamar computadora por carecer del elemento fundamental llamado
programa.
Otro de los inventos mecnicos fue la Pascalina inventada por Blaise Pascal
(1623 - 1662) de Francia y la de Gottfried Wilhelm von Leibniz (1646 - 1716) de
Alemania. Con estas mquinas, los datos se representaban mediante las
posiciones de los engranajes, y los datos se introducan manualmente
estableciendo dichas posiciones finales de las ruedas, de manera similar a
como leemos los nmeros en el cuentakilmetros de un automvil.
La primera computadora fue la mquina analtica
creada por Charles Babbage, profesor matemtico de la Universidad de
Cambridge en el siglo XX. La idea que tuvo Charles Babbage sobre un
computador naci debido a que la elaboracin de las tablas matemticas era
un proceso tedioso y propenso a errores. En 1823 el gobierno Britnico lo
apoyo para crear el proyecto de una mquina de diferencias, un dispositivo
mecnico para efectuar sumas repetidas.

Mientras tanto Charles Jacquard (francs), fabricante de tejidos, haba creado
un telar que poda reproducir automticamente patrones de tejidos leyendo la
informacin codificada en patrones de agujeros perforados en tarjetas de papel
rgido. Al enterarse de este mtodo Babbage abandon la mquina de
diferencias y se dedico al proyecto de la mquina analtica que se pudiera
programar con tarjetas perforadas para efectuar cualquier clculo con una
precisin de 20 dgitos. La tecnologa de la poca no bastaba para hacer
realidad sus ideas.
El mundo no estaba listo, y no lo estara por cien aos ms.
En 1944 se construy en la Universidad de Harvard, la Mark , diseada por un
equipo encabezado por Howard H. Aiken. Esta mquina no est considerada
como computadora electrnica debido a que no era de propsito general y su
funcionamiento estaba basado en dispositivos electromecnicos llamados
relevadores.
En 1947 se construy en la Universidad de
Pennsylvania la ENAC (Electronic Numerical ntegrator And Calculator) que fue
la primera computadora electrnica, el equipo de diseo lo encabezaron los
ingenieros John Mauchly y John Eckert. Esta mquina ocupaba todo un stano
de la Universidad, tena ms de 18 000 tubos de vaco, consuma 200 KW de
energa elctrica y requera todo un sistema de aire acondicionado, pero tena
la capacidad de realizar cinco mil operaciones aritmticas en un segundo.
El proyecto, auspiciado por el departamento de Defensa de los Estados
Unidos, culmin dos aos despus, cuando se integr a ese equipo el
ingeniero y matemtico hngaro John von Neumann (1903 - 1957). Las ideas
de von Neumann resultaron tan fundamentales para su desarrollo posterior,
que es considerado el padre de las computadoras.
La EDVAC (Electronic Discrete Variable Automatic Computer) fue diseada por
este nuevo equipo. Tena aproximadamente cuatro mil bulbos y usaba un tipo
de memoria basado en tubos llenos de mercurio por donde circulaban seales
elctricas sujetas a retardos.
La idea fundamental de von Neumann fue: permitir que en la memoria
coexistan datos con instrucciones, para que entonces la computadora pueda
ser programada en un lenguaje, y no por medio de alambres que
elctricamente interconectaban varias secciones de control, como en la ENAC.
Todo este desarrollo de las computadoras suele divisarse por generaciones y el
criterio que se determin para determinar el cambio de generacin no est muy
bien definido, pero resulta aparente que deben cumplirse al menos los
siguientes requisitos:
La forma en que estn construidas.
Forma en que el ser humano se comunica con ellas.
*rimera :eneracin
En esta generacin haba una gran desconocimiento de las capacidades de las
computadoras, puesto que se realiz un estudio en esta poca que determin
que con veinte computadoras se saturara el mercado de los Estados Unidos
en el campo de procesamiento de datos.
Esta generacin abarco la dcada de los cincuenta. Y se conoce como la
primera generacin. Estas mquinas tenan las siguientes caractersticas:
Estas mquinas estaban construidas por medio de tubos de vaco.
Eran programadas en lenguaje de mquina.
En esta generacin las mquinas son grandes y costosas (de un costo
aproximado de ciento de miles de dlares).
En 1951 aparece la UNVAC (NVersAl
Computer), fue la primera computadora comercial, que dispona de mil palabras
de memoria central y podan leer cintas magnticas, se utiliz para procesar el
censo de 1950 en los Estados Unidos.
En las dos primeras generaciones, las unidades de entrada utilizaban tarjetas
perforadas, retomadas por Herman Hollerith (1860 - 1929), quien adems
fund una compaa que con el paso del tiempo se conocera como BM
(nternational Bussines Machines).
Despus se desarroll por BM la IBM 701 de la cual se entregaron 18
unidades entre 1953 y 1957.
Posteriormente, la compaa Remington Rand fabric el modelo 1103, que
competa con la 701 en el campo cientfico, por lo que la BM desarrollo la 702,
la cual present problemas en memoria, debido a esto no dur en el mercado.
La computadora ms exitosa de la primera generacin fue la BM 650, de la
cual se produjeron varios cientos. Esta computadora que usaba un esquema de
memoria secundaria llamado tambor magntico, que es el antecesor de los
discos actuales.
Otros modelos de computadora que se pueden situar en los inicios de la
segunda generacin son: la UNVAC 80 y 90, las BM 704 y 709, Burroughs
220 y UNVAC 1105.
Seunda :eneracin
Cerca de la dcada de 1960, las computadoras seguan evolucionando, se
reduca su tamao y creca su capacidad de procesamiento. Tambin en esta
poca se empez a definir la forma de comunicarse con las computadoras, que
reciba el nombre de programacin de sistemas.
Las caractersticas de la segunda generacin son las siguientes:
Estn construidas con circuitos de transistores.
Se programan en nuevos lenguajes llamados lenguajes de alto nivel.
En esta generacin las computadoras se reducen de tamao y son de menor
costo. Aparecen muchas compaas y las computadoras eran bastante
avanzadas para su poca como la serie 5000 de Burroughs y la ATLAS de la
Universidad de Manchester.
Algunas de estas computadoras se programaban con cintas perforadas y otras
ms por medio de cableado en un tablero. Los programas eran hechos a la
medida por un equipo de expertos: analistas, diseadores, programadores y
operadores que se manejaban como una orquesta para resolver los problemas
y clculos solicitados por la administracin. El usuario final de la informacin no
tena contacto directo con las computadoras. Esta situacin en un principio se
produjo en las primeras computadoras personales, pues se requera saberlas
"programar" (alimentarle instrucciones) para obtener resultados; por lo tanto su
uso estaba limitado a aquellos audaces pioneros que gustaran de pasar un
buen nmero de horas escribiendo instrucciones, "corriendo" el programa
resultante y verificando y corrigiendo los errores o bugs que aparecieran.
Adems, para no perder el "programa" resultante haba que "guardarlo"
(almacenarlo) en una grabadora de astte, pues en esa poca no haba discos
flexibles y mucho menos discos duros para las PC; este procedimiento poda
tomar de 10 a 45 minutos, segn el programa. El panorama se modific
totalmente con la aparicin de las computadoras personales con mejore
circuitos, ms memoria, unidades de disco flexible y sobre todo con la aparicin
de programas de aplicacin general en donde el usuario compra el programa y
se pone a trabajar. Aparecen los programas procesadores de palabras como el
clebre Word Star, la impresionante hoja de clculo (spreadsheet) Visicalc y
otros ms que de la noche a la maana cambian la imagen de la PC. El
sortware empieza a tratar de alcanzar el paso del hardware. Pero aqu aparece
un nuevo elemento: el usuario.
El usuario de las computadoras va cambiando y evolucionando con el tiempo.
De estar totalmente desconectado a ellas en las mquinas grandes pasa la PC
a ser pieza clave en el diseo tanto del hardware como del software. Aparece el
concepto de human interface que es la relacin entre el usuario y su
computadora. Se habla entonces de hardware ergonmico (adaptado a las
dimensiones humanas para reducir el cansancio), diseos de pantallas
antirreflejos y teclados que descansen la mueca. Con respecto al software se
inicia una verdadera carrera para encontrar la manera en que el usuario pase
menos tiempo capacitndose y entrenndose y ms tiempo produciendo. Se
ponen al alcance programas con mens (listas de opciones) que orientan en
todo momento al usuario (con el consiguiente aburrimiento de los usuarios
expertos); otros programas ofrecen toda una artillera de teclas de control y
teclas de funciones (atajos) para efectuar toda suerte de efectos en el trabajo
(con la consiguiente desorientacin de los usuarios novatos). Se ofrecen un
sinnmero de cursos prometiendo que en pocas semanas hacen de cualquier
persona un experto en los programas comerciales. Pero el problema
"constante" es que ninguna solucin para el uso de los programas es
"constante". Cada nuevo programa requiere aprender nuevos controles, nuevos
trucos, nuevos mens. Se empieza a sentir que la relacin usuario-PC no est
acorde con los desarrollos del equipo y de la potencia de los programas. Hace
falta una relacin amistosa entre el usuario y la PC.
Las computadoras de esta generacin fueron: la Philco 212 (esta compaa se
retir del mercado en 1964) y la UNVAC M460, la Control Data Corporation
modelo 1604, seguida por la serie 3000, la BM mejor la 709 y sac al
mercado la 7090, la National Cash Register empez a producir mquinas para
proceso de datos de tipo comercial, introdujo el modelo NCR 315.
La Radio Corporation of America introdujo el modelo 501, que manejaba el
lenguaje COBOL, para procesos administrativos y comerciales. Despus sali
al mercado la RCA 601.
Tercera eneracin
Con los progresos de la electrnica y los
avances de comunicacin con las computadoras en la dcada de los 1960,
surge la tercera generacin de las computadoras. Se inaugura con la BM 360
en abril de 1964.3
Las caractersticas de esta generacin fueron las siguientes:
Su fabricacin electrnica esta basada en circuitos integrados.
Su manejo es por medio de los lenguajes de control de los sistemas operativos.
La BM produce la serie 360 con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85,
90, 195 que utilizaban tcnicas especiales del procesador, unidades de cinta de
nueve canales, paquetes de discos magnticos y otras caractersticas que
ahora son estndares (no todos los modelos usaban estas tcnicas, sino que
estaba dividido por aplicaciones).
El sistema operativo de la serie 360, se llam OS que contaba con varias
configuraciones, inclua un conjunto de tcnicas de manejo de memoria y del
procesador que pronto se convirtieron en estndares.
En 1964 CDC introdujo la serie 6000 con la computadora 6600 que se
consider durante algunos aos como la ms rpida.
En la dcada de 1970, la BM produce la serie 370 (modelos 115, 125, 135,
145, 158, 168). UNVAC compite son los modelos 1108 y 1110, mquinas en
gran escala; mientras que CDC produce su serie 7000 con el modelo 7600.
Estas computadoras se caracterizan por ser muy potentes y veloces.
A finales de esta dcada la BM de su serie 370 produce los modelos 3031,
3033, 4341. Burroughs con su serie 6000 produce los modelos 6500 y 6700 de
avanzado diseo, que se reemplazaron por su serie 7000. Honey - Well
participa con su computadora DPS con varios modelos.
A mediados de la dcada de 1970, aparecen en el mercado las computadoras
de tamao mediano, o minicomputadoras que no son tan costosas como las
grandes (llamadas tambin como mainframes que significa tambin, gran
sistema), pero disponen de gran capacidad de procesamiento. Algunas
minicomputadoras fueron las siguientes: la PDP - 8 y la PDP - 11 de Digital
Equipment Corporation, la VAX (Virtual Address eXtended) de la misma
compaa, los modelos NOVA y ECLPSE de Data General, la serie 3000 y
9000 de Hewlett - Packard con varios modelos el 36 y el 34, la Wang y Honey -
Well -Bull, Siemens de origen alemn, la CL fabricada en nglaterra. En la
Unin Sovitica se utiliz la US (Sistema Unificado, Ryad) que ha pasado por
varias generaciones.
'uarta :eneracin
Aqu aparecen los microprocesadores que es un gran
adelanto de la microelectrnica, son circuitos integrados de alta densidad y con
una velocidad impresionante. Las microcomputadoras con base en estos
circuitos son extremadamente pequeas y baratas, por lo que su uso se
extiende al mercado industrial. Aqu nacen las computadoras personales que
han adquirido proporciones enormes y que han influido en la sociedad en
general sobre la llamada "revolucin informtica".
En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de
uso masivo y ms tarde forman la compaa conocida como la Apple que fue la
segunda compaa ms grande del mundo, antecedida tan solo por BM; y esta
por su parte es an de las cinco compaas ms grandes del mundo.
En 1981 se vendieron 800 00 computadoras personales, al siguiente subi a 1
400 000. Entre 1984 y 1987 se vendieron alrededor de 60 millones de
computadoras personales, por lo que no queda duda que su impacto y
penetracin han sido enormes.
Con el surgimiento de las computadoras personales, el software y los sistemas
que con ellas de manejan han tenido un considerable avance, porque han
hecho ms interactiva la comunicacin con el usuario. Surgen otras
aplicaciones como los procesadores de palabra, las hojas electrnicas de
clculo, paquetes grficos, etc. Tambin las industrias del Software de las
computadoras personales crece con gran rapidez, Gary Kildall y William Gates
se dedicaron durante aos a la creacin de sistemas operativos y mtodos
para lograr una utilizacin sencilla de las microcomputadoras (son los
creadores de CP/M y de los productos de Microsoft).
No todo son microcomputadoras, por su puesto, las minicomputadoras y los
grandes sistemas continan en desarrollo. De hecho las mquinas pequeas
rebasaban por mucho la capacidad de los grandes sistemas de 10 o 15 aos
antes, que requeran de instalaciones costosas y especiales, pero sera
equivocado suponer que las grandes computadoras han desaparecido; por el
contrario, su presencia era ya ineludible en prcticamente todas las esferas de
control gubernamental, militar y de la gran industria. Las enormes
computadoras de las series CDC, CRAY, Hitachi o BM por ejemplo, eran
capaces de atender a varios cientos de millones de operaciones por segundo.
?uinta :eneracin
En vista de la acelerada marcha de la microelectrnica, la sociedad industrial
se ha dado a la tarea de poner tambin a esa altura el desarrollo del software y
los sistemas con que se manejan las computadoras. Surge la competencia
internacional por el dominio del mercado de la computacin, en la que se
perfilan dos lderes que, sin embargo, no han podido alcanzar el nivel que se
desea: la capacidad de comunicarse con la computadora en un lenguaje ms
cotidiano y no a travs de cdigos o lenguajes de control especializados.
Japn lanz en 1983 el llamado "programa de la quinta generacin de
computadoras", con los objetivos explcitos de producir mquinas con
innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya
est en actividad un programa en desarrollo que persigue objetivos
semejantes, que pueden resumirse de la siguiente manera:
Procesamiento en paralelo mediante arquitecturas y diseos especiales y circuitos de
gran velocidad.
Manejo de lenguaje natural y sistemas de inteligencia artificial.
El futuro previsible de la computacin es muy interesante, y se puede esperar
que esta ciencia siga siendo objeto de atencin prioritaria de gobiernos y de la
sociedad en conjunto.
-4D1L4 D1 84# #1U-"##
Las computadoras digitales actuales se ajustan al modelo propuesto por el
matemtico John Von Neumann. De acuerdo con el, una caracterstica
importante de este modelo es que tanto los datos como los programas, se
almacenan en la memoria antes de ser utilizados.
http://www.monografias.com/trabajos/histocomp/histocomp.shtml
HISTORIA DE LA COMPUTACIN
1.1 RESEA HISTRICA

Todo comenz con mquinas destinadas a manejar nmeros, es as como nos remitimos
a el baco, inventado por los babilonios all por el ao 1000 A... !tilizado sobre todo
por los c"inos para la realizacin de operaciones sencillas, esta #ormado por una tablilla
con una serie de cuentas que sirven para e#ectuar sumas $ restas.

%usto antes de morir en 1&1', el matemtico escoc(s %o"n )apier *mejor conocido por
su invencin de lo+aritmos, desarroll un jue+o de palitos para calcular a las que llam
-)apier .ones.- As llamados porque se tallaron las ramitas de "ueso o mar#il, los
-bones- incorporaron el sistema lo+artmico. /os 0uesos de )apier tuvieron una
in#luencia #uerte en el desarrollo de la re+la deslizante *cinco aos ms tarde, $
mquinas calculadoras subsecuentes que contaron con lo+aritmos.

1n 1&21 la primera re+la deslizante #ue inventada por el del matemtico in+l(s 3illiam
4u+"tred. /a re+la deslizante *llam -rculos de 5roporcin-, era un jue+o de discos
rotatorios que se calibraron con los lo+aritmos de )apier. !no de los primeros aparatos
de la in#ormtica anal+ica, la re+la deslizante se us normalmente *en un orden lineal,
"asta que a comienzos de 16'0, cuando calculadoras porttiles comenzaron a ser ms
popular.

1n 1&27 la primera calculadora mecnica #ue diseada por 3il"elm 8c"ic9ard en
Alemania. /lamado -1l :eloj alculador-, la mquina incorpor los lo+aritmos de
)apier, "acia rodar cilindros en un alber+ue +rande. 8e comision un :eloj alcualdor
para %o"annes ;epler, el matemtico #amoso, pero #ue destruido por #ue+o antes de que
se terminara.

!no de los antepasados mas directos de la computadora actual, #ue creada por el
cient#ico #ranc(s Blaise Pasca en el si+lo <=>>*1&?2,. A sus 1@ aos, 5ascal invento
su primera ma!i"a calculadora, capaz de sumar $ restar A $ todo ello a base de
en+arzar mltiples ruedas dentadas.

1n 1&&& la primera mquina de multiplicar se invent por 8ir 8amuel Borland,
entonces Amo de mecnicas a la corte de :e$ "arles >> de >n+laterra. 1l aparato const
de una serie de ruedas, cada representaba, dieses, cientos, etc.
!n al#iler del acero mova los diales para ejecutar las calculaciones. A di#erencia de la
5ascalina, el aparato no tena avanz automtico de en columnas.

Aos mas tarde, en 1&'7, #o$$%ie& 'o" Leib"i$( per#ecciono los estudios de 5ascal, $
lle+o a construir una ma!i"a que no solo sumaba $ restaba, sino que tambi(n
multiplicaba, divida e incluso calculaba races cuadradas.

1n 1'&6 el %u+ador de Ajedrez Autmata #ue inventado por .arn 1mpellen, un noble
"n+aro. 1l aparato $ sus secretos se le dieron a %o"ann )epomu9 Baelzel, un inventor
de instrumentos musicales, quien recorri 1uropa $ los 1stados !nidos con el aparato, a
#inales de 1'00 $ temprano 1@00. 5retendi ser una mquina pura, el Autmata inclua
un ju+ador de ajedrez -robtico-. 1l Automatn era una sensacin dondequiera que iba,
pero muc"as comentaristas, incluso el 1d+ar Allen 5oe #amoso, "a escrito crticas
detalladas diciendo que ese era una -mquina pura.- 1n cambio, +eneralmente, siempre
se cre$ que el aparato #ue operado por un "umano oculto en el armario debajo del
tablero de ajedrez. 1l Autmata se destru$ en un incendio en 1@C&.

8e invent la primera mquina l+ica en 1''' por "arles Ba"on, el onde de
8tan"ope. 1l -demostrador l+ico- era un aparato tamao bolsillo que resolva
silo+ismos tradicionales $ pre+untas elementales de probabilidad. Ba"on es el precursor
de los componentes l+icos en computadoras modernas.

1n 1'60 )ose*+,Ma-ie )ac!a-&*1C'2D1@7?, utilizo $a-.e$as *e-%o-a&as para
controlar un telar.
1l -%acquard /oom- se invent en 1@0? por %osep"DBarie %acquard. >nspirado por
instrumentos musicales que se pro+ramaban usando papel a+ujereados, la mquina se
pareca a una atadura del telar que podra controlar automticamente de dibujos usando
una lnea tarjetas a+ujereadas. /a idea de %acquard, que revolucion el "ilar de seda,
estaba #ormar la base de muc"os aparatos de la in#ormtica e idiomas de la
pro+ramacin.

/a primera calculadora de produccin masiva se distribu$, empezando en 1@20, por
"arles T"omas de olmar.
4ri+inalmente se les vendi a casas del se+uro 5arisienses, el -aritmmetro- de olmar
operaba usando una variacin de la rueda de /eibniz. Bs de mil aritmmetro se
vendieron $ eventualmente recibi una medalla a la 1E"ibicin >nternacional en
/ondres en 1@&2.


1./ PIONEROS DE LA IN0ORMATICA

.laise 5ascal, Fott#ied =on /eibnitz, "arles .abba+e, Au+usta .$ron 0erman
0ollerit", %ames 5oGers, Alan Turin+, ;onrad Huse, %o"n =on )eumann, "uc9
5eddle, /inus Trovlas, .ill Fates


1.1 DE0INICIONES DE COMPUTADORA

Bquina capaz de e#ectuar una secuencia de operaciones mediante un pro+rama, de tal
manera, que se realice un procesamiento sobre un conjunto de datos de entrada,
obteni(ndose otro conjunto de datos de salida.

Iispositivo electrnico capaz de recibir un conjunto de instrucciones $ ejecutarlas
realizando clculos sobre los datos num(ricos, o bien compilando $ correlacionando
otros tipos de in#ormacin.
1s un calculador electrnico de elevada potencia equipado de memorias de +ran
capacidad $ aparatos peri#(ricos, que permite solucionar con +ran rapidez $ sin
intervencin "umana, durante el desarrollo del proceso problemas l+icos $ aritm(ticos
mu$ complejos.
1.2 LA PRIMERA COMPUTADORA

Jue en 1@70, cuando se establecieron los principios de #uncionamiento de las modernas
computadoras. 8u paternidad se debe al matemtico in+les C+a-les Babba3e, quien tras
lanzar en 1@22 la denominada ma!i"a &i%e-e"cialD con nada menos que 6& ruedas
dentadas $ 2? ejes, se lanzo en pos de su pro$ecto mas relevanteKla m4!i"a
a"al5$ica*1@77,.

/a primera computadora #ue la mquina analtica creada por "arles .abba+e,
pro#esor matemtico de la !niversidad de ambrid+e en el si+lo <><. /a idea que tuvo
"arles .abba+e sobre un computador naci debido a que la elaboracin de las tablas
matemticas era un proceso tedioso $ propenso a errores. 1n 1@27 el +obierno .ritnico
lo apo$o para crear el pro$ecto de una mquina de di#erencias, un dispositivo mecnico
para e#ectuar sumas repetidas.

Bientras tanto "arles %acquard *#ranc(s,, #abricante de tejidos, "aba creado un telar
que poda reproducir automticamente patrones de tejidos le$endo la in#ormacin
codi#icada en patrones de a+ujeros per#orados en tarjetas de papel r+ido. Al enterarse de
este m(todo .abba+e abandon la mquina de di#erencias $ se dedic al pro$ecto de la
mquina analtica que se pudiera pro+ramar con tarjetas per#oradas para e#ectuar
cualquier clculo con una precisin de 20 d+itos.

1n 16?? se constru$ en la !niversidad de 0arvard, la Bar9 >, diseada por un equipo
encabezado por 0oGard 0. Ai9en. 1sta mquina no est considerada como
computadora electrnica debido a que no era de propsito +eneral $ su #uncionamiento
estaba basado en dispositivos electromecnicos llamados relevadores.

1.6 TIPOS DE COMPUTADORAS

1. A"4lo3a
/a computadora anlo+a es la que acepta $ procesa seales continuas, tales comoK
#luctuaciones de voltaje o #recuencias. 1jemploK 1l termostato es la computadora
anlo+a ms sencilla.
2. Di3i$al
/a computadora di+ital es la que acepta $ procesa datos que "an sido convertidos al
sistema binario. /a ma$ora de las computadoras son di+itales.
7. H5b-i&a
/a computadora "brida es una computadora di+ital que procesa seales anlo+as que
"an sido convertidas a #orma di+ital. 1s utilizada para control de procesos $ en robtica.
?. P-o*7si$o es*ecial
/a computadora de propsito especial est dedicada a un solo propsito o tarea. 5ueden
ser usadas para producir in#ormes del tiempo, monitorear desastres naturales, "acer
lecturas de +asolina $ como medidor el(ctrico. 1jemploK carros de control remoto, "orno
microoondas, relojes di+itales, cmaras, procesador de palabras, etc.
C. P-o*7si$o 3e"e-al
/a computadora de propsito +eneral se pro+rama para una variedad de tareas o
aplicaciones. 8on utilizadas para realizar clculos matemticos, estadsticos,
contabilidad comercial, control de inventario, nmina, preparacin de inventario, etc.
1jemploK -main#rames- o minicomputadoras.

ate+oras de las computadoras
S!*e-com*!$a&o-a
/a supercomputadora es lo mEimo en computadora, es la ms rpida $, por lo tanto, la
ms cara. uesta millones de dlares $ se "acen de dos a tres al ao. 5rocesan billones
de instrucciones por se+undo. 8on utilizadas para trabajos cient#icos, particularmente
para crear modelos matemticos del mundo real, llamados simulacin.

8Mai"%-ame8
/os -main#rame- son computadoras +randes, li+eras, capaces de utilizar cientos de
dispositivos de entrada $ salida. 5rocesan millones de instrucciones por se+undo. 8u
velocidad operacional $ capacidad de procesar "acen que los +randes ne+ocios, el
+obierno, los bancos, las universidades, los "ospitales, compaas de se+uros, lneas
a(reas, etc. con#i(n en ellas. 8u principal #uncin es procesar +randes cantidades de
datos rpidamente. 1stos datos estn accesibles a los usuarios del -main#rame- o a los
usuarios de las microcomputadoras cu$os terminales estn conectados al -main#rame-.
8u costo #lucta entre varios cientos de miles de dlares "asta el milln. :equieren de
un sistema especial para controlar la temperatura $ la "umedad. Tambi(n requieren de
un personal pro#esional especializado para procesar los datos $ darle el mantenimiento.
Mi"icom*!$a&o-a
/a minicomputadora se desarroll en la d(cada de 16&0 para llevar a cabo tareas
especializadas, tales como el manejo de datos de comunicacin. 8on ms pequeas, ms
baratas $ ms #ciles de mantener e instalar que los -main#rames-. 8u costo est entre
los cincuenta mil "asta varios cientos de miles. !sadas por ne+ocios, cole+ios $
a+encias +ubernamentales. 8u mercado "a ido disminu$endo desde que sur+ieron las
microcomputadoras.

Mic-ocom*!$a&o-a
/a microcomputadora es conocida como computadora personal o 5. 1s la ms
pequea, +racias a los microprocesadores, ms barata $ ms popular en el mercado. 8u
costo #lucta entre varios cientos de dlares "asta varios miles de dlares. 5uede
#uncionar como unidad independiente o estar en red con otras microcomputadoras o
como un terminal de un -main#rame- para eEpandir sus capacidades. 5uede ejecutar las
mismas operaciones $ usar los mismos pro+ramas que muc"as computadoras
superiores, aunque en menor capacidad. 1jemplosK B>T8 Altair, Bacintos", serie Apple
>>, >.B 5, Iell, ompaq, FateGa$, etc.
1.9 #ENERACIONES DE COMPUTADORAS

P-ime-a #e"e-aci7"

1n esta +eneracin "aba una +ran desconocimiento de las capacidades de las
computadoras, puesto que se realiz un estudio en esta (poca que determin que con
veinte computadoras se saturara el mercado de los 1stados !nidos en el campo de
procesamiento de datos.

1sta +eneracin abarco la d(cada de los cincuenta. L se conoce como la primera
+eneracin. 1stas mquinas tenan las si+uientes caractersticasK
1stas mquinas estaban construidas por medio de tubos de vaco.
1ran pro+ramadas en len+uaje de mquina.

1n esta +eneracin las mquinas son +randes $ costosas *de un costo aproEimado de
ciento de miles de dlares,.

1n 16C1 aparece la !)>=A *)>=ersAl omputer,, #ue la primera computadora
comercial, que dispona de mil palabras de memoria central $ podan leer cintas
ma+n(ticas, se utiliz para procesar el censo de 16C0 en los 1stados !nidos.

1n las dos primeras +eneraciones, las unidades de entrada utilizaban tarjetas per#oradas,
retomadas por 0erman 0ollerit" *1@&0 D 1626,, quien adems #und una compaa que
con el paso del tiempo se conocera como >.B *>nternational .ussines Bac"ines,.

Iespu(s se desarroll por >.B la IBM 701 de la cual se entre+aron 1@ unidades entre
16C7 $ 16C'.
5osteriormente, la compaa :emin+ton :and #abric el modelo 1107, que competa
con la '01 en el campo cient#ico, por lo que la >.B desarrollo la '02, la cual present
problemas en memoria, debido a esto no dur en el mercado.

/a computadora ms eEitosa de la primera +eneracin #ue la >.B &C0, de la cual se
produjeron varios
cientos. 1sta computadora que usaba un esquema de memoria secundaria llamado
tambor ma+n(tico, que es el antecesor de los discos actuales.

4tros modelos de computadora que se pueden situar en los inicios de la se+unda
+eneracin sonK la !)>=A @0 $ 60, las >.B '0? $ '06, .urrou+"s 220 $ !)>=A
110C.

Se3!"&a #e"e-aci7"

erca de la d(cada de 16&0, las computadoras se+uan evolucionando, se reduca su
tamao $ creca su capacidad de procesamiento. Tambi(n en esta (poca se empez a
de#inir la #orma de comunicarse con las computadoras, que reciba el nombre de
pro+ramacin de sistemas.

/as caractersticas de la se+unda +eneracin son las si+uientesK
M 1stn construidas con circuitos de transistores.
M 8e pro+raman en nuevos len+uajes llamados len+uajes de alto nivel.

1n esta +eneracin las computadoras se reducen de tamao $ son de menor costo.
Aparecen muc"as compaas $ las computadoras eran bastante avanzadas para su (poca
como la serie C000 de .urrou+"s $ la AT/A8 de la !niversidad de Banc"ester.

Al+unas de estas computadoras se pro+ramaban con cintas per#oradas $ otras ms por
medio de cableado en un tablero. /os pro+ramas eran "ec"os a la medida por un equipo
de eEpertosK analistas, diseadores, pro+ramadores $ operadores que se manejaban
como una orquesta para resolver los problemas $ clculos solicitados por la
administracin. 1l usuario #inal de la in#ormacin no tena contacto directo con las
computadoras. 1sta situacin en un principio se produjo en las primeras computadoras
personales, pues se requera saberlas -pro+ramar- *alimentarle instrucciones, para
obtener resultadosA por lo tanto su uso estaba limitado a aquellos audaces pioneros que
+ustaran de pasar un buen nmero de "oras escribiendo instrucciones, -corriendo- el
pro+rama resultante $ veri#icando $ corri+iendo los errores o bu+s que aparecieran.
Adems, para no perder el -pro+rama- resultante "aba que -+uardarlo- *almacenarlo,
en una +rabadora de astte, pues en esa (poca no "aba discos #leEibles $ muc"o menos
discos duros para las 5A este procedimiento poda tomar de 10 a ?C minutos, se+n el
pro+rama. 1l panorama se modi#ic totalmente con la aparicin de las computadoras
personales con mejores circuitos, ms memoria, unidades de disco #leEible $ sobre todo
con la aparicin de pro+ramas de aplicacin +eneral en donde el usuario compra el
pro+rama $ se pone a trabajar. Aparecen los pro+ramas procesadores de palabras como
el c(lebre 3ord 8tar, la impresionante "oja de clculo *spreads"eet, =isicalc $ otros
ms que de la noc"e a la maana cambian la ima+en de la 5. 1l sortGare empieza a
tratar de alcanzar el paso del "ardGare. 5ero aqu aparece un nuevo elementoK el
usuario.
/as computadoras de esta +eneracin #ueronK la 5"ilco 212 *esta compaa se retir del
mercado en 16&?, $ la !)>=A B?&0, la ontrol Iata orporation modelo 1&0?,
se+uida por la serie 7000, la >.B mejor la '06 $ sac al mercado la '060, la )ational
as" :e+ister empez a producir mquinas para proceso de datos de tipo comercial,
introdujo el modelo ): 71C.

Te-ce-a 3e"e-aci7"

on los pro+resos de la electrnica $ los avances de comunicacin con las
computadoras en la d(cada de los 16&0, sur+e la tercera generacin de las
computadoras. 8e inau+ura con la >.B 7&0 en abril de 16&?.7

/as caractersticas de esta +eneracin #ueron las si+uientesK
8u #abricacin electrnica esta basada en circuitos inte+rados.
8u manejo es por medio de los len+uajes de control de los sistemas operativos.
/a >.B produce la serie 7&0 con los modelos 20, 22, 70, ?0, C0, &C, &', 'C, @C, 60, 16C
que utilizaban t(cnicas especiales del procesador, unidades de cinta de nueve canales,
paquetes de discos ma+n(ticos $ otras caractersticas que a"ora son estndares *no todos
los modelos usaban estas t(cnicas, sino que estaba dividido por aplicaciones,.

1l sistema operativo de la serie 7&0, se llam 48 que contaba con varias
con#i+uraciones, inclua un conjunto de t(cnicas de manejo de memoria $ del
procesador que pronto se convirtieron en estndares.
1n 16&? I introdujo la serie &000 con la computadora &&00 que se consider
durante al+unos aos como la ms rpida.

1n la d(cada de 16'0, la >.B produce la serie 7'0 *modelos 11C, 12C, 17C, 1?C, 1C@,
1&@,. !)>=A compite son los modelos 110@ $ 1110, mquinas en +ran escalaA
mientras que I produce su serie '000 con el modelo '&00. 1stas computadoras se
caracterizan por ser mu$ potentes $ veloces.

A #inales de esta d(cada la >.B de su serie 7'0 produce los modelos 7071, 7077, ?7?1.
.urrou+"s con su serie &000 produce los modelos &C00 $ &'00 de avanzado diseo, que
se reemplazaron por su serie '000. 0one$ D 3ell participa con su computadora I58 con
varios modelos.

A mediados de la d(cada de 16'0, aparecen en el mercado las computadoras de tamao
mediano, o minicomputadoras que no son tan costosas como las +randes *llamadas
tambi(n como mainframes que si+ni#ica tambi(n, +ran sistema,, pero disponen de +ran
capacidad de procesamiento. Al+unas minicomputadoras #ueron las si+uientesK la 5I5 D
@ $ la 5I5 D 11 de Ii+ital 1quipment orporation, la =A< *=irtual Address e<tended,
de la misma compaa, los modelos )4=A $ 1/>581 de Iata Feneral, la serie 7000 $
6000 de 0eGlett D 5ac9ard con varios modelos el 7& $ el 7?, la 3an+ $ 0one$ D 3ell
D.ull, 8iemens de ori+en alemn, la >/ #abricada en >n+laterra. 1n la !nin 8ovi(tica
se utiliz la !8 *8istema !ni#icado, :$ad, que "a pasado por varias +eneraciones.

C!a-$a #e"e-aci7"

Aqu aparecen los microprocesadores que es un +ran adelanto de la microelectrnica,
son circuitos inte+rados de alta densidad $ con una velocidad impresionante. /as
microcomputadoras con base en estos circuitos son eEtremadamente pequeas $ baratas,
por lo que su uso se eEtiende al mercado industrial. Aqu nacen las computadoras
personales que "an adquirido proporciones enormes $ que "an in#luido en la sociedad
en +eneral sobre la llamada "revolucin informtica".

1n 16'& 8teve 3oznia9 $ 8teve %obs inventan la primera microcomputadora de uso
masivo $ ms tarde #orman la compaa conocida como la Apple que #ue la se+unda
compaa ms +rande del mundo, antecedida tan solo por >.BA $ esta por su parte es
an de las cinco compaas ms +randes del mundo.
1n 16@1 se vendieron @00 00 computadoras personales, al si+uiente subi a 1 ?00 000.
1ntre 16@? $ 16@' se vendieron alrededor de &0 millones de computadoras personales,
por lo que no queda duda que su impacto $ penetracin "an sido enormes.

on el sur+imiento de las computadoras personales, el so#tGare $ los sistemas que con
ellas de manejan "an tenido un considerable avance, porque "an "ec"o ms interactiva
la comunicacin con el usuario. 8ur+en otras aplicaciones como los procesadores de
palabra, las "ojas electrnicas de clculo, paquetes +r#icos, etc. Tambi(n las industrias
del 8o#tGare de las computadoras personales crece con +ran rapidez, Far$ ;ildall $
3illiam Fates se dedicaron durante aos a la creacin de sistemas operativos $ m(todos
para lo+rar una utilizacin sencilla de las microcomputadoras *son los creadores de
5NB $ de los productos de Bicroso#t,.

)o todo son microcomputadoras, por su puesto, las minicomputadoras $ los +randes
sistemas continan en desarrollo. Ie "ec"o las mquinas pequeas rebasaban por
muc"o la capacidad de los +randes sistemas de 10 o 1C aos antes, que requeran de
instalaciones costosas $ especiales, pero sera equivocado suponer que las +randes
computadoras "an desaparecidoA por el contrario, su presencia era $a ineludible en
prcticamente todas las es#eras de control +ubernamental, militar $ de la +ran industria.

/as enormes computadoras de las series I, :AL, 0itac"i o >.B por ejemplo, eran
capaces de atender a varios cientos de millones de operaciones por se+undo.

:!i"$a #e"e-aci7"

1n vista de la acelerada marc"a de la microelectrnica, la sociedad industrial se "a dado
a la tarea de poner tambi(n a esa altura el desarrollo del so#tGare $ los sistemas con que
se manejan las computadoras. 8ur+e la competencia internacional por el dominio del
mercado de la computacin, en la que se per#ilan dos lderes que, sin embar+o, no "an
podido alcanzar el nivel que se deseaK la capacidad de comunicarse con la computadora
en un len+uaje ms cotidiano $ no a trav(s de cdi+os o len+uajes de control
especializados.

%apn lanz en 16@7 el llamado -pro+rama de la quinta +eneracin de computadoras-,
con los objetivos eEplcitos de producir mquinas con innovaciones reales en los
criterios mencionados. L en los 1stados !nidos $a est en actividad un pro+rama en
desarrollo que persi+ue objetivos semejantes, que pueden resumirse de la si+uiente
maneraK
5rocesamiento en paralelo mediante arquitecturas $ diseos especiales $
circuitos de +ran velocidad.
Banejo de len+uaje natural $ sistemas de inteli+encia arti#icial.
1l #uturo previsible de la computacin es mu$ interesante, $ se puede esperar que esta
ciencia si+a siendo objeto de atencin prioritaria de +obiernos $ de la sociedad en
conjunto.
http://www.gestiopolis.com/recursos4/docs/eco/histocom.htm#HSTORA
%20DE%20LA%20COMPUTACN
1.2 Impacto de las computadoras en la sociedad
1.3 Definiciones
Lenua!e de "lto #ivel$ ba!o nivel$ ensamblador
% ma&uina.
Le"3!a.e M4!i"a
8on aqu(llos que estn escritos en len+uajes directamente inteli+ibles por
la mquina *computadora,, $a que sus instrucciones son cadenas binarias
(cadenas o series de caracteres de d+itos 0 $ 1, que especi#ican una operacin
$ las posiciones *direccin, de memoria implicadas en la operacin se
denominan instrucciones de mquina o cdigo mquina. 1l cdi+o mquina
es el conocido cdigo binario.
/as instrucciones en len+uaje mquina dependen del "ardGare de la
computadora $, por tanto, di#erirn de una computadora a otra.

Ventaas del !enguae Mquina
5osibilidad de car+ar *trans#erir un pro+rama a la memoria, sin
necesidad de traduccin posterior, lo que supone una velocidad de
ejecucin superior a cualquier otro len+uaje de pro+ramacin.

"esventaas del !enguae Mquina
Ii#icultad $ lentitud en la codi#icacin.
5oca #iabilidad.
Fran di#icultad para veri#icar $ poner a punto los pro+ramas.
/os pro+ramas solo son ejecutables en el mismo procesador *5!,.

1n la actualidad, las desventajas superan a las ventajas, lo que "ace
prcticamente no recomendables a los len+uajes mquinas.

Le"3!a.es &e Ba.o Ni;el
8on ms #ciles de utilizar que los len+uajes mquina, pero al i+ual que
ellos, dependen de la mquina en particular. 1l len+uaje de bajo nivel por
eEcelencia es el ensamblador. /as instrucciones en len+uaje ensamblador son
instrucciones conocidas como nemot#cnicos. 5or ejemplo, nemot(cnicos
tpicos de operaciones aritm(ticas son K en in+l(s K AII, 8!., I>=, etc. A en
espaol K 8!B, :18, I>=, etc.

!na instruccin tpica de suma sera K
AII B, ), 5

1sta instruccin si+ni#ica -sumar el contenido en la posicin de memoria
B al nmero almacenado en la posicin de memoria ) $ situar el resultado en
la posicin de memoria 5- . 1videntemente es ms sencillo recordar la
instruccin anterior con un nemot(cnico que su equivalente en cdi+o
mquina.
0110 1001 1010 1011
!n pro+rama escrito en len+uaje ensamblador, requiere de una #ase de
traduccin al len+uaje mquina para poder ser ejecutado directamente por la
computadora.
1l pro+rama ori+inal escrito en len+uaje ensamblador se denomina
programa fuente $ el pro+rama traducido en len+uaje mquina se conoce
como programa obeto, el cual $a es directamente entendible por la
computadora.

'e"$a.as &el le"3!a.e e"sambla&o- %-e"$e al le"3!a.e m4!i"a
Ba$or #acilidad de codi#icacin $, en +eneral, su velocidad de clculo.


Des;e"$a.as &el le"3!a.e e"sambla&o-
Iependencia total de la mquina lo que impide la transportabilidad de los
pro+ramas *posibilidad de ejecutar un pro+rama en di#erentes mquinas. 1l
len+uaje ensamblador del 5 es distinto del len+uaje ensamblador del Apple
Bac"intos".

/a #ormacin de los pro+ramadores es ms compleja que la correspondiente
a los pro+ramadores de alto nivel, $a que eEi+e no solo las t(cnicas de
pro+ramacin, sino tambi(n el conocimiento del interior de la mquina.

/os len+uajes ensamblador tienen sus aplicaciones mu$ reducidas, se
centran bsicamente en aplicaciones de tiempo real, control de procesos $ de
dispositivos electrnicos.


Le"3!a.es &e Al$o Ni;el
1stos len+uajes son los ms utilizados por los pro+ramadores. 1stn
diseados para que las personas escriban $ entiendan los pro+ramas de un
modo muc"o ms #cil que los len+uajes mquina $ ensambladores. !n
pro+rama escrito en len+uaje de alto nivel es independiente de la mquina *las
instrucciones no dependen del diseo del "ardGare o de una computadora en
particular,, por lo que estos pro+ramas son portables o transportables. /os
pro+ramas escritos en len+uaje de alto nivel pueden ser ejecutados con poca o
nin+una modi#icacin en di#erentes tipos de computadoras.


'e"$a.as &e los le"3!a.es &e al$o "i;el
1l tiempo de #ormacin de los pro+ramadores es relativamente corto
comparado con otros len+uajes.
/a escritura de pro+ramas se basa en re+las sintcticas similares a los
len+uajes "umanos. )ombres de las instrucciones tales como :1AI,
3:>T1, 5:>)T, 451), etc.
/as modi#icaciones $ puestas a punto de los pro+ramas son ms #ciles.
:educcin del coste de los pro+ramas.
Transportabilidad.


Des;e"$a.as &e los le"3!a.es &e al$o "i;el
>ncremento del tiempo de puesta a punto al necesitarse di#erentes
traducciones del pro+rama #uente para conse+uir el pro+rama de#initivo.
)o se aprovec"an los recursos internos de la mquina que se eEplotan
muc"o mejor en len+uajes mquina $ ensambladores.
Aumento de la ocupacin de memoria.
1l tiempo de ejecucin de los pro+ramas es muc"o ma$or.

5ara una mejor compresin de este tema se de#inir el concepto de programa,
por ser este un t(rmino mu$ utilizado en el dise$o estructurado de
algoritmos.
1l nico len+uaje que realmente maneja una computadora es el len+uaje Bquina, este
len+uaje est #ormado eEclusivamente por nmeros binarios. Adems un pro+rama en
len+uaje mquina debe especi#icar todos los detalles re#erentes al "ardGare, lo que "ace
que adems de mu$ lar+o, sea dependiente de la mquina en que se trabaje. 5or su parte
un pro+rama escrito en un len+uaje de alto nivel, est compuesto de sentencias en un
len+uaje ms cercano al len+uaje natural con respecto al primero. !n len+uaje de alto
nivel es por tanto ms #cil de entender $ aprender, permite a los pro+ramadores
olvidarse de los detalles del "ardGare $ concentrarse en la l+ica del pro+ramaA adems
produce pro+ramas que se pueden ejecutar en di#erentes equipos de cmputo con pocos
o nin+n cambio. 1ste curso se basar en el len+uaje A)8> .
/1)F!A%1 I1 A/T4 )>=1/
/en+uaje de pro+ramacin parecidos a la len+ua del usuario *+eneralmente al in+l(s,.
/os len+uajes de bajo nivel estn ms cercanos a los len+uajes comprensibles para el
ordenador. omo los len+uajes de alto nivel "an de pasarse a una #orma que el
ordenador pueda comprender antes de procesarlos, su ejecucin es ms lenta que la de
los len+uajes de bajo nivel.
/1)F!A%1 I1 .A%4 )>=1/
/en+uaje parecido al utilizado en el ordenador. /1)F!A%1 BAO!>)AK 1s el
escaln in#erior al len+uaje de bajo nivelA es el len+uaje que el ordenador entiende
directamente .
+$$*<==>>>.i"&a?a.com=mo&!les=&ic$io"a-?=le$$e-.*+*@le$$e-ALBlimi$eA1C
:!e es e"sambla&o- ? *a-a !e si-;e@
uando se empezaron a utilizar smbolos nmot(cnicos, se escribieron pro+ramas para
traducir automticamente los pro+ramas escritos en len+uaje ensamblador a len+uaje
mquina. A estos pro+ramas traductores se les llamo e"sambla&o-es.

LEN#UA)E DE ALTO NI'EL , 1s un tipo de len+uaje de pro+ramacin en el que el
ordenador necesita un int(rprete para traducir las instrucciones enviadas debido a que son
mu$ parecidas al len+uaje "umano.
LEN#UA)E DE BA)O NI'EL , 1s aquel len+uaje de pro+ramacin que permite
aumentar la velocidad de ejecucin de los pro+ramas, $a que son instrucciones simples $
no necesita un int(rprete para traducirlas.
"ttpKNNGGG.ve+avaldavia.comNla#erttNll."tm
Un lenguaje de bajo nivel es aquel que se programa en modo de
programacin baja, como assembler(Ensamblador) Y un lenguaje de
alto nivel es aquel le se programa utilizando un lenguaje avanzado
(Como Visual Basic, C u otros)
/en+uajes de alto nivel
8on len+uajes que no dependen del ordenador sobre el que se van a ejecutar, aunque en
al+unos casos, el mismo len+uaje necesita di#erentes dialectos, se+n la arquitectura del
ordenador o el sistema operativo sobre el que se ejecute. 8on cada vez ms parecidos al
len+uaje empleado para la comunicacin verbal. 5or supuesto se escriben en in+l(s.
Aunque se "an propuesto deversos estndares, la estandarizacin "ace menos e#iciente
la productividad en su escritura $ ejecucin, por lo que los #abricantes pre#ieren crear
pro+ramas cada vez ms ajustados a la mquina sobre la que se van a ejecutar $ muc"o
ms e#icaces, apareciendo en pocos aos distintas versiones mejoradas de cada uno de
ellos. 1n la actualidad, la +eneracin de cdi+o #uente se va reduciendo cada vez ms
debido a los +eneradores automticos de cdi+o a partir de diseos visuales creados por
los pro+ramadores.
1stos len+uajes poseen rdenes que ejecutan instrucciones, operadores que relacionan
datos de tipo num(rico, de teEto, de #ec"a, l+icos, etc. Tambi(n poseen instrucciones
declarativas para de#inir constantes o variables $ permiten incluir tantos comentarios
como se desee. 1n al+unos len+uajes se pueden crear bibliotecas mal traducidas, como
libreras, que contienen eEtensiones del len+uaje con nuevas instrucciones. 1stas
bibliotecas puden ser adquiridas o creadas por los pro+ramadores insertando su cdi+o
#uente como parte del cdi+o ori+inal de ese len+uaje.
!n ejemplo puede ser cuando se de#inen dos variables en las que se desarrollan los
valores num(ricos a sumar. 8e escriben los teEtos -5rimer nmeroK - $ -8e+undo
nmeroK -. /a instruccin read se especi#ica para in#ormar a la memoria de los datos de
teclado que se "a$an introducido. 1n la memoria se e#ecta la suma $ aparece en una
determinada posicin de la pantalla.
/os len+uajes de alto nivel necesitan de pro+ramas traductores para poder ser
ejecutados. 0a$ dos tipos de traductoresK los compiladores $ los int(rpretes.
1nsambladores
8on len+uajes en los que a cada instruccin en cdi+o #uente le corresponde una
instruccin en cdi+o mquina. 5oseen relativamente pocas instrucciones $ no utilizan
direcciones #sicas de memoria, sino que permiten el uso de direcciones simblicas $ de
comentarios.
5ara ser ejecutado un pro+rama escrito con len+uaje ensamblador necesita ser traducido,
utilizndose para ello un -ensamblador- que +enera cdi+o mquina $ elimina los
comentarios. 1l ensamblador +enera una tabla que mantiene re#erencias entre las
direcciones simblicas de datos con las direcciones #sicas. 1n al+unos len+uajes
ensambladores, que poseen cdi+o eEtendido, a determinadas instrucciones les
corresponden varias instrucciones de cdi+o mquina.
/en+uaje mquina
1l len+uaje mquina depende de la arquitectura del ordenador, siendo interpretado
directamente por el ordenador sin nin+una modi#icacin. 5or las dos razones antes
eEpuestas, su velocidad de ejecucin es mu$ alta. /a codi#icacin de los pro+ramas en
len+uaje mquina se "ace en binario, octal o "eEadecimal, por lo que no es #cilmente
le+ible por el pro+ramador.
/os pro+ramas en len+uaje mquina utilizan direcciones #sicas de memoria para
almacenar datos. 8on interpretables por ordenadores con el mismo tipo de arquitectura.
5or ejemplo, un pro+rama escrito para una estacin de trabajo de Ii+ital no puede ser
interpretado correctamente por una estacin de trabajo de >.B o por un ordenador
personal, $ viceversa. 1n cambio, un pro+rama escrito en len+uaje mquina para un
ordenador personal con procesador 2@& puede ser inerpretado por un ?@&, $a que ambos
procesadores comparten las mismas instrucciones.
1ste tipo de len+uaje ejecuta multitud de operaciones sencillas rpidamente. 5or
ejemplo, al+unos pro+ramas no tienen instrucciones para la multiplicacin, por lo que
"an de ejecutarlas como una sucesin de sumas, es decir, almacenando valores
intermedios en memoria.
"ttpKNNGGG.+aleon.comN9ronenNlen+uajes."tm
/a entrada para un ensamblador es un *-o3-ama %!e"$e escrito en len+uaje
ensamblador. /a salida es un *-o3-ama ob.e$o, escrito en len+uaje de mquina. 1l
pro+rama objeto inclu$e tambi(n la in#ormacin necesaria para que el ca-3a&o- pueda
preparar el pro+rama objeto para su ejecucin.
5ara evitar con#usiones, de aqu en adelante llamaremos le"3!a.e e"sambla&o- al
conjunto de nemot(cnicos $ a las re+las para su manejo. Al pro+rama que traduce un
pro+rama objeto a partir de un pro+rama escrito en len+uaje ensamblador lo llamaremos
e"sambla&o-.
Mo$i;os *a-a !$ili(a-lo.
:apidezK omo el pro+ramador directamente selecciona las instrucciones que se
ejecutan en el pro+rama, el pro+rama #inal queda mas optimizado que un
pro+rama +enerado por un compilador.
Ba$or control de la computadoraK !n pro+rama puede accesar directamente
cualquier componente $ peri#(rico de la computadora.
>ndependencia del len+uajeK )o depende de libreras o del len+uaje mismo para
realizar una tarea especi#ica. /en+uajes como el .asic limitan al pro+ramador a
lo que el len+uaje puede "acer.
/a ma$ora de las computadoras pueden ensamblarK /os recursos necesarios
para ensamblar un pro+rama son muc"o menores que los compiladores o
interpretes. 1l ensamblador +eneralmente es ms rpido ensamblando un
pro+rama que un compilador +enerando un arc"ivo ejecutable.

Mo$i;os *a-a "o !$ili(a-lo.
Iesa#ortunadamente, tambi(n eEisten motivos para no crear los pro+ramas con
ensamblador.
Iependencia del "ardGareK 1l cdi+o se "ace en eEtremo dependiente del
microprocesador, de los dispositivos, de los controladores, etc. 1ste punto ser
analizado con mas detenimiento en dependencias de "ardGare.
Ba$or tiempo de codi#icacinK 1l numero de lneas de un pro+rama "ec"o en
ensamblador es ma$or a uno "ec"o en un len+uaje de alto nivel *por ejemploK
Juncin en puede realizar varias decenas o centenas de instrucciones del
microprocesador,.
omprensin mas pro#unda de la computadoraK 1ntender un len+uaje de alto
nivel es +eneralmente ms sencillo que el ensamblador. omprender
ensamblador requiere conocimientos ms eEactos sobre el #uncionamiento
interno de la computadora.
1rrores mas #recuentes en el pro+ramaK 1l evitar un error o encontrar al+uno que
$a eEista es di#cil. /as "erramientas para este caso *como el ode=ieG $ el
TurboIebbu+er, a$udan en +ran medida a ver lo que esta ocurriendo en la
maquina, pero no localizan los errores.
E"$o"cesD c!a"&o !$ili(o e"sambla&o- ? c!a"&o "o@
Iepende del pro+rama a desarrollar. 8i el pro+rama debe controlar en +ran medida los
componentes internos de la computadora o debe ser lo su#icientemente veloz, entonces
es recomendable utilizarlo. 8i se requiere un sistema +rande $ no se dispone de muc"o
tiempo para entre+arlo, entonces es mejor juntar un len+uaje de alto nivel con
ensamblador *las #unciones bsicas del pro+rama realizarlas en ensamblador, $ el
pro+rama en +eneral codi#icarlo con el len+uaje de alto nivel,. 1ste punto se discute mas
adelante en ensamblador $ len+uajes de alto nivel.
"ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNpro+sis1Ntema22."tm
Tipos de 1nsambladores.
Aunque todos los ensambladores realizan bsicamente las mismas tareas, podemos
clasi#icarlos de acuerdo a caractersticas.
As podemos clasi#icarlos enK
E"sambla&o-es C-!(a&os EC-oss,Assemble-F.
8e denominan as los ensambladores que se utilizan en una computadora que posee un
procesador di#erente al que tendrn las computadoras donde va a ejecutarse el pro+rama
objeto producido.
1l empleo de este tipo de traductores permite aprovec"ar el soporte de medios #sicos
*discos, impresoras, pantallas, etc.,, $ de pro+ramacin que o#recen las mquinas
potentes para desarrollar pro+ramas que lue+o los van a ejecutar sistemas mu$
especializados en determinados tipos de tareas.

E"sambla&o-es Resi&e"$es.
8on aquellos que permanecen en la memoria principal de la computadora $ car+an, para
su ejecucin, al pro+rama objeto producido. 1ste tipo de ensamblador tiene la ventaja de
que se puede comprobar inmediatamente el pro+rama sin necesidad de transportarlo de
un lu+ar a otro, como se "aca en crossDassembler, $ sin necesidad de pro+ramas
simuladores.
8in embar+o, puede presentar problemas de espacio de memoria, $a que el traductor
ocupa espacio que no puede ser utilizado por el pro+ramador. Asimismo, tambi(n
ocupar memoria el pro+rama #uente $ el pro+rama objeto. 1sto obli+a a tener un
espacio de memoria relativamente amplio. 1s el indicado para desarrollos de pequeos
sistemas de control $ sencillos automatismo empleando microprocesadores.
/a ventaja de estos ensambladores es que permiten ejecutar inmediatamente el
pro+ramaA la desventaja es que deben mantenerse en la memoria principal tanto el
ensamblador como el pro+rama #uente $ el pro+rama objeto.

Mac-oe"sambla&o-es.
8on ensambladores que permiten el uso de macroinstrucciones *macros,. Iebido a su
potencia, normalmente son pro+ramas robustos que no permanecen en memoria una vez
+enerado el pro+rama objeto. 5uede variar la complejidad de los mismos, dependiendo
de las posibilidades de de#inicin $ manipulacin de las macroinstrucciones, pero
normalmente son pro+ramas bastantes complejos, por lo que suelen ser ensambladores
residentes.

Mic-oe"sambla&o-es.
Feneralmente, los procesadores utilizados en las computadoras tienen un repertorio #ijo
de instrucciones, es decir, que el int(rprete de las mismas interpretaba de i+ual #orma un
determinado cdi+o de operacin.
1l pro+rama que indica al int(rprete de instrucciones de la !5 cmo debe actuar se
denomina micropro+rama. 1l pro+rama que a$uda a realizar este micropro+rama se
llama microensamblador. 1Eisten procesadores que permiten la modi#icacin de sus
micropro+ramas, para lo cual se utilizan microensambladores.

E"sambla&o-es &e !"a %ase.
1stos ensambladores leen una lnea del pro+rama #uente $ la traducen directamente para
producir una instruccin en len+uaje mquina o la ejecuta si se trata de una
pseudoinstruccin. Tambi(n va constru$endo la tabla de smbolos a medida que van
apareciendo las de#iniciones de variables, etiquetas, etc.
Iebido a su #orma de traduccin, estos ensambladores obli+an a de#inir los smbolos
antes de ser empleados para que, cuando aparezca una re#erencia a un determinado
smbolo en una instruccin, se conozca la direccin de dic"o smbolo $ se pueda
traducir de #orma correcta. 1stos ensambladores son sencillos, baratos $ ocupan poco
espacio, pero tiene el inconveniente indicado.

E"sambla&o-es &e &os %ases.
/os ensambladores de dos #ases se denominan as debido a que realizan la traduccin en
dos etapas. 1n la primera #ase, leen el pro+rama #uente $ constru$en una $abla &e
s5mbolosA de esta manera, en la se+unda #ase, vuelven a leer el pro+rama #uente $
pueden ir traduciendo totalmente, puesto que conocen la totalidad de los smbolos
utilizados $ las posiciones que se les "a asi+nado. 1stos ensambladores son los ms
utilizados en la actualidad.
"ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNpro+sis1Ntema221."tm
1l proceso de ensamble de uno$ dos o m,s pasos.
omo se vio en la seccin anterior, eEisten ensambladores que realizan su tarea en una o
ms #ases o pasos.
1l proceso de ensamble de un paso consiste en leer una lnea de pro+rama #uente $
traducirla a len+uaje mquina cuando se trata de una instruccin, o se ejecuta si es una
seudoinstruccin.
/a tabla de smbolos se va constru$endo a medida que se avanza en la lectura de las
lneas del pro+rama #uente.
5ara que el ensamble de un paso #unciones, todos los smbolos deben estar de#inidos
antes de emplearse. 1sto debido a que, para traducir correctamente cada instruccin, se
debe conocer la direccin de cada uno de los smbolos que intervienen en ella. 1n otras
palabras, no pueden quedar re#erencias pendientes porque $a no "abr otra oportunidad
de resolverlas.
Tampoco podrn "acerse saltos "acia lneas posteriores. )o es posible saltar "acia una
lnea cu$a etiqueta todava no "a sido de#inida.
5ara resolver el problema que presenta el proceso de ensamble de un paso, se utiliza el
proceso de ensamble de dos pasos o #ases. 1n la primera #ase, se lee el pro+rama #uente
$ se constru$e la tabla de smbolos.
1n la se+unda #ase, se vuelve a leer el pro+rama #uente $ se traduce totalmente $a que se
conoce la totalidad de los smbolos utilizados *inclu$endo las etiquetas, $ las posiciones
de memoria que se les "an asi+nado. omo $a se conocen las direcciones de las
etiquetas utilizadas, pueden realizarse saltos "acia adelante.
"ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNpro+sis1Ntema222."tm
INTRODUCCIN
El ensamblador es el lenguaje mas directo con el ordenador, aunque tambin se le
ha llamado Cdigo Mquina, en realidad no es as, esto es debido a la mala
utilizacin del trmino Lenguaje Mquina o Cdigo Mquina, ste lenguaje en
realidad est formado por unos ceros, que son los datos que realmente utilizan
los ordenadores!
Lenguaje Ensamblador, es en realidad el lenguaje propio del microprocesador del
ordenador, el microprocesador , tambin llamado u", es en realidad el centro del
ordenador, normalmente los conocemos por sus nombre, #$%, &$%, '$% , "entium,
etc!! Estos son los nombres que les dan las fbricas de dichos microprocesadores!
El lenguaje que utilizan los microprocesadores es el lenguaje ensamblador, ste
lenguaje est formado por una serie de palabras o instrucciones las cuales son las
ms directas con el microprocesador, es por ello , por lo que es el lenguaje ms
rpido que ha, dado que es el lenguaje directo no necesita ninguna con(ersin,
es por ello , por lo que se recurre a ste lenguaje para hacer determinadas
funciones o programas que requieren mucha (elocidad , como los juegos ,
inteligencia artificial, etc!!!
)ste curso pretende que una (ez terminado, tenga usted los conocimientos
necesarios para adentrarse profundamente en la utilizacin de ste lenguaje para
cuando le sea necesario hacer ritunas, funcione, etc! que le requieran ms
(elocidad!
"ttpKNNa$udatecnica.solodrivers.comNmanualesPpro+ramacionPensamblador."tm
Uso % aplicaciones del lenua!e ensamblador.
Importancia del Estudio y Uso de Ensamblador
Ayuda a conocer a detalle cmo trabaa un %&'
Util para !lectrnica y "i#tema#
De#arrolla $abilidade# de Programacin A%an&ada
'eore# Oportunidade# de !mpleo en la Indu#tria
Aplicaciones del Lenguaje Ensamblador
Sistemas embebidos@impresoras, cmaras, autos, armas,
juguetes, etc.
Tiempo Real( en la industria manufactura, e.g. adquisicin
datos, control robots
Tran#porte( barcos, a(iones, sondas espaciales, etc.
!ntretenimiento( *raficacin, Multimedia, Cine +ideo,uegos
DSP( "rocesamiento de -e.ales, +oz e /mgenes
Otra#( Medicina, 0erona1tica, 0rmamento, etc.
Uso de lenua!e ensamblador
Hay algn debate encima de la utilidad del lenguaje ensamblador. En muchos casos,
compiladores modernos pueden rendir lenguajes de alto nivel en el cdigo como eso corre tan
rpido como la mano que escribe en ensamblador.
Sin embargo, algunos clculos discretos aun pueden darse mas rpidamente corriendo cdigo
en ensamblador, y alguna programacin de bajo nivel es simplemente mas fcil de hacer en
ensamblador. Algunas tareas de sistemas-dependientes realizadas por sistemas operativos
simplemente no pueden ser expresadas en lenguajes de alto nivel. Muchos compiladores
tambin rinden lenguajes de alto nivel en ensamblador antes de compilar completamente,
permitiendo visualizar el cdigo de ensamblador para depurar [debug] y propsito de
optimizacin.
Muchos dispositivos integrados son tambin programados en ensamblador a exprimir la
funcionalidad mxima absoluta fuera de los que es frecuente recursos computacionales muy
limitados, aunque esto esta gradualmente cambiando en algunas reas como mas chips
poderosos volviendo disponible para el mismo mnimo costo.
http://www.geocities.com/SiliconValley/Haven/2037/documentos/Lenguaje_Ensamblador.htm
Ti*os &e le"3!a.es e"sambla&o-es.
Este lenguaje da la facilidad y las herramientas necesarias para tomar el
control de todo lo que la PC puede realizar fsicamente. Como resultado de
operaciones muy bsicas suministradas por el ensamblador que realiza tareas
simples de transferencia de datos y operaciones lgicas, una pgina de
cdigos en lenguaje ensamblador palidece en comparacion con una pgina de
cdigo en lenguaje de alto nivel.
Hablar del lenguaje mquina requiere comprender muchos conceptos extraos
para los programadores de alto nivel, el programador de lenguaje ensamblador
debe considerar la segmentacin de memoria; cuando hay control directo del
acceso de memoria deben ser tomadas decisiones al minuto, se debe decidir el
tamao y tipo de cada dato, muchas de estas consideraciones son nicas a la
programacin en lenguaje ensamblador.
ENSAMBLADOR.
Un ensamblador es un software que traduce un programa en memoria escrito
en mnemnicos por el usuario, a lenguaje mquina que pueda ser ejecutado
por el microprocesador. Al programa en mnemnicos se le llama PROGRAMA
FUENTE y al programa en lenguaje mquina se le denomina PROGRAMA
OBJETO. Por lo tanto, la entrada al ensamblador es un programa fuente y la
salida es un programa objeto.
0UNCIONES DEL ENSAMBLADOR.
A dems de su tarea principal que es traducir mnemnicos a lenguaje mquina,
un ensamblador generalmente realiza las siguientes funciones:
o Permite al usuario asignar nombres a localidades de memoria,
constantes numricas, dispositivo de E/S y una secuencia de
instrucciones.
o Acepta datos o direcciones en varios sistemas numricos
(decimal y hexadecimal) y las convierte en binario.
o Ejecuta algunas operaciones aritmticas en expresiones como
parte del proceso de ensamblador.
o Permite al usuario designar las reas de memoria donde ser
colocados el programa a los datos en el momento de ejecucin.
o Proporciona la informacin requerida para incluir otros programas
o subrutinas de biblioteca dentro del programa que s esta
realizando.
o Permite al usuario controlar el formato del listado del programa
resultante del ensamblador.
El lenguaje ensamblador utiliza mnemnicos para representar los cdigos de
operacin de las instrucciones y smbolos alfanumricos para representar las
direcciones y los datos del programa. Entonces el programa se puede escribir
como:
-48 "A$ 61+>7
-48 BA$ "A
-48 "A$ 61+17
"DD "A$ BA
-48 61+27$ "A
Las direcciones y los datos del programa anterior se expresaron directamente
en hexadecimal. A continuacin se muestra el mismo programa utilizando todas
las propiedades del lenguaje ensamblador.
-48 "A$ #U-1
-48 BA$ "A
-48 "A$ #U-2
"DD "A$ B
-48 SU-"$ "A
La ventaja de utilizar nombres simblicos en las instrucciones, en lugar de su
valor numrico, es facilitar la escritura del programa, y tambin simplifica la
insercin y eliminacin de instrucciones, haciendo ms fcil el
redireccionamiento.
La desventaja de un programa en lenguaje ensamblador, es que requiere un
programa especial llamado ENSAMBLADOR, que se encarga de traducir los
mnemnicos y los smbolos alfanumricos a lenguaje mquina. Adems sigue
siendo necesario un conocimiento detallado de la arquitectura del
microprocesador.
El lenguaje ensamblador es una variante legible para el ser humano del
lenguaje mquina que usan las computadoras para ejecutar programa. Al
mismo tiempo la mejor manera de comunicarse con la PC y con el lenguaje
mquina de programacin que utilice.
El lenguaje ensamblador resulta indispensable cuando se desea escribir
programas que controlen las E/S de la PC, agregar nuevas interfaces de E/S,
escribir rutinas que aprovechen y maximicen el uso del hardware y en general
realizar cualquier tarea que no pueden llevar acabo los dems lenguajes de
programacin.
El lenguaje ensamblador le brinda la oportunidad de conocer ms afondo la
operacin de su PC esto le permite implementar software o hardware de una
manera ms consiente. El lenguaje ensamblador hace que se conserve el
control total de lo que desea hacer su PC.
Una de las mayores importancias del ensamblador es que uno puede optimizar
al mximo sus programas (tanto tamao, como velocidad de ejecucin). Otra
importancia es la gran velocidad a la que ejecuta el cdigo.
El lenguaje ensamblador permite a los ingenieros de software hacer interfaces
con el sistema operativo y les da control directo de las operaciones de entrada
y salida a monitores, impresoras, y a los importantes dispositivos de memoria
de disco duro/flotante.
Los programadores de aplicaciones con frecuencia tienen que hacer tambin
interfaces directamente con el sistema operativo. Estas rutinas se escriben en
lenguaje ensamblador.
El lenguaje ensamblador es simplemente una representacin simblica del
lenguaje mquina asociado, lo cual permite una programacin menos tediosa
que con el anterior. Sin embargo es necesario un conocimiento de la
arquitectura mecnica subyacente para realizar una programacin efectiva en
cualquiera de estos niveles de lenguaje.

La mayora de los ensambladores son ENSAMBLADORES DE DOS ETAPAS
(two-pass Asemblers).
La PRIMERA ETAPA determina la direccin de memoria en la cual es
ensamblado el primer byte de cada instruccin y genera una tabla para los
valores de todos los nombres simblicos y etiquetas definidos en el programa.
El ensamblador posee una tabla de cdigos de opeaci!con una entrada por
cada cdigo de operacin, cada entrada contiene el mnemnico de la
instruccin, su equivalente en lenguaje mquina y el nmero de bytes de la
intruccin.
Tambin el ensamblador tiene un "o!tado de locali#aci! $Locatio! "o%!te&
L"', el cul al inicio se carga con 0 con el valor especificado por una directiva
ORG, sta corresponde a la direccin inicial u origen del programa y se le
asigna el primer byte de la primera instruccin.
Si un programa tiene una etiqueta, esta se aade a la tabla de smbolos y se le
asocia el valor conteniendo del LC en ese momento.
El cdigo de operacin de la instruccin se extrae de la tabla de cdigo de
operacin incrementando el contador de localizacin igual al nmero de bytes
de la instruccin. Esta etapa termina cuando el ensamblador detecta la
directiva END.
En la SE!"#$ E%$&$, el ensamblador hace un recorrido por el programa,
utilizando la tabla de smbolos de los cdigos de operacin, sustituye el
mnemnico de cada instruccin por su equivalente en el lenguaje de mquina.
'ompilador
Es$-!c$!-a &e !" Com*ila&o-.
ualquier compilador debe realizar dos tareas principalesK anlisis del pro+rama a
compilar $ sntesis de un pro+rama en len+uaje maquina que, cuando se ejecute,
realizara correctamente las actividades descritas en el pro+rama #uente. 5ara el estudio
de un compilador, es necesario dividir su trabajo en #ases. ada #ase representa una
trans#ormacin al cdi+o #uente para obtener el cdi+o objeto. /a si+uiente #i+ura
representa los componentes en que se divide un compilador. /as tres primeras #ases
realizan la tarea de anlisis, $ las dems la sntesis. 1n cada una de las #ases se utiliza un
administrador de la tabla de smbolos $ un manejador de errores
"ttpKNNmE.+eocities.comNal#onsoaraujocardenasNcompiladores."tml
%er arc)i%o( compilacion.pd* y compilador.doc
Ventajas de compilador frente a un intrprete
!e compila una vez, se ejecuta n"veces
En bucles, la compilacin genera cdigo equivalente al bucle pero un interpret#ndolo se traduce
tantas veces una l$nea como veces se repite el bucle
El compilador tiene una visin global del programa, por lo que la in%ormacin de mensajes de errores
es m#s detallada&
Ventajas de un intrprete frente a compilador
Un interprete necesita menos memoria que un compilador
'ermite una ma(or interactividad con el cdigo en tiempo de desarrollo&
Un compilador, no es programa que %unciona de manera aislada sino que necesita otro programa para
conseguir su objetivo, obtener un programa ejecutable a partir de un programa %uente en un lenguaje de
alto nivel&
Clasifcacin de compiladores
El programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la
computadora pueda interpretar ( ejecutar& 'ara cada lenguaje de programacin se requiere un
compilador separado, el compilador traduce todo el programa antes de ejecutarlo&
En otras palabras un compilador traduce programas insertados en la memoria por el sistema operativo
para convertirlos en pulsaciones electrnicas ejecutables (lenguaje m#quina)& )os compiladores pueden
ser de*
Una sola pasada* E+amina el cdigo %uente una vez, generando el cdigo o programa objeto&
'asadas m,ltiples* -equiere pasos intermedios para producir un cdigo en otro lenguaje ( una pasada
.nal para producir ( optimizar el cdigo producido durante los pasos anteriores&
/ptimizacin* )ee un cdigo %uente, lo analiza ( descubre errores potenciales sin ejecutar el
programa&
Compiladores incrementales* 0eneran un cdigo objeto, instruccin por instruccin, cuando el usuario
teclea cada orden individual& El otro tipo de compiladores requiere que todos los enunciados o
instrucciones se compilen conjuntamente&
Ensamblador* Es un lenguaje %uente ( posee una estructura sencilla&
Compilador cruzado* !e genera cdigo en un lenguaje objeto para una m#quina di%erente de la que se
esta utilizando para compilar& U compilador cruzado nos permite programar, por ejemplo en 1indo2s
para un ambiente como )inu+&
Compiladores con montador* Ese tipo de compilador compila distintos mdulos de %orma
independiente ( despu3s es capaz de enlazarlos&
4utocompilador* Compilador que esta escrito en el mismo lenguaje que se va a compilar,
evidentemente no se puede ejecutar la primera vez& !irve para 5acer ampliaciones de lenguaje, mejorar
el cdigo generado, etc&
6etacompilador* Es sinnimo de compilador de compiladores ( se re.ere a un programa que recibe
como entrada las especi.caciones de lenguaje, para el que desea obtener un compilador ( genera como
salida un compilador de ese lenguaje&
7escompilador* Es un programa que acepta como entrada cdigo m#quina ( lo traduce a un lenguaje
de alto nivel, realizando el proceso inverso a la compilacin&
Partes en las que trabaja un compilador
Conceptualmente 8/-9-4: dise;o un compilador que trabajaba en %ases& Es decir, las %ases de un
compilador trans%orman el programa %uente de una representacin a otra, en la pr#ctica se agrupan
%ases ( las representaciones intermedias entre las %ases no necesitan ser construidas e+pl$citamente&
Anlisis lxico
Es la primera %ase de un compilador& !u principal %uncin consiste en leer los caracteres de entrada (
elaborar como salida una secuencia de componentes l3+icos que utiliza el analizador sint#ctico para
5acer el an#lisis&
Aspectos del anlisis lxico
<a( varias razones para dividir en %ases el an#lisis de la compilacin& El an#lisis l3+ico ( an#lisis
sint#ctico*
Un dise;o sencillo es la consideracin m#s importante, separar a estos dos tipos de an#lisis a menudo
permite simpli.car una u otra de dic5as %ases&
!e mejora la e.ciencia del compilador adem#s de permitir construir un procesador especializado (
potencialmente m#s e.ciente para esa %uncin& Con algunas t3cnicas de manejo de bu=ers para la
lectura de caracteres de entrada ( procesamiento de componentes l3+icos se pueden mejorar
signi.cativamente el rendimiento de un compilador&
Errores lxicos
!on pocos los errores simplemente en el nivel l3+ico (a que tiene una visin mu( restringida de un
programa %uente& El analizador l3+ico debe devolver el componente l3+ico de un identi.cador ( dejar a
otra %ase se ocupe de los errores&
!uponga que una situacin en la cual el analizador l3+ico no puede continuar por que ninguno de los
patrones concuerda con un pre.jo de la entrada& 9al vez la estrategia de recuperacin m#s sencilla sea
recuperacin >E: 6/7/ '4:?C/@ (este m3todo de recuperacin es donde se borra caracteres sucesivos
de la entrada 5asta que el analizador l3+ico pueda encontrar un componente l3+ico bien %ormado)&
Administrador de entradas
Utilizar A bu=er de entrada resulta ,til cuando es necesario un pre"an#lisis en la entrada para identi.car
los componentes l3+icos despu3s se introducen algunas t3cnicas b#sicas para encontrar la velocidad del
analizador l3+ico, como es el uso de centinelas que sirven para marcar el .nal de bu=er, 5a( tres
m3todos generales de implantar un l3+ico*
Utilizar un generador de analizadores l3+icos, como el compilador )EB para producir el analizador
l3+ico a partir de una especi.cacin basada en e+presiones regulares, en este caso el generador
proporciona rutinas para leer la entrada ( manejarla con bu=ers&
Escribir el analizador l3+ico en un lenguaje convencional de programacin de sistemas utilizando las
posibilidades de entrada ( salida de este lenguaje para leer la entrada&
Escribir el analizador l3+ico en lenguaje ensamblador ( manejar e+pl$citamente la lectura de la
entrada&
Parejas de bufers
!e utiliza un bu=er dividido en dos mitades de n"caracteres cada una como se indica en la .gura*
9e+to lenguaje %uente
9raductor
9e+to lenguaje objeto
'rograma objeto
Compilador
'rograma %uente
6ensajes de error
'rograma %uente
4nalizador l3+ico
4nalizador sint#ctico
4n#lisis sem#ntico
0eneracin de cdigo intermedio
/ptimizacin de cdigo
0enerador de cdigo
'rograma objeto
6anejo de errores
6anejo de tabla de s$mbolos
4nalizador l3+ico
4nalizador sint#ctico
9abla de s$mbolos
Componente l3+ico
/bt3n el siguiente componente l3+ico
'rograma %uente
Bu=er C espacio en memoria
"ttpKNN"tml.rincondelva+o.comN#undamentosDdeDpro+ramacionP'."tml
Traductor
T-a&!c$o-es
!n traductor es un pro+rama que recibe como entrada cdi+o escrito en un cierto
len+uaje $ produce como salida cdi+o en otro len+uaje. Feneralmente el len+uaje de
entrada es de ms alto nivel que el de salida. 1jemplos de traductores son los
ensambladores $ los compiladores.
!n ensamblador es un pro+rama que traduce de un len+uaje ensamblador a len+uaje
mquina, mientras que un compilador es un pro+rama que traduce de un len+uaje de
alto nivel a un len+uaje de bajo nivel o a len+uaje mquina.
!n traductor es un pro+rama que toma el teEto escrito en un len+uaje *el len+uaje
#uente, $ lo convierte en el teEto equivalente en un se+undo len+uaje *el len+uaje
destino u objeto,.
8i el #uente es un len+uaje abstracto o de alto nivel $ si el objetivo es un len+uaje de
ensamble de bajo nivel o de mquina, el traductor es un compilador.
0ttp@99mB.eocities.com9alfonsoarau!ocardenas9compiladores.0tml
Sistemas #um(ricos
Re*-ese"$aci7" &e la i"%o-maci7".
I"$-o&!cci7".
En el sistema de n1meros decimales se dice que la base o raz es 23 debido
a que usa 23 dgitos, los coeficientes se multiplican por potencias de 23!
El sistema binario unicamente posee dos (alores posibles que son 3 2, en
los cuales cada coeficiente 0
j
se multiplica por #
j
, como ejemplo tendremos
el desarrollo del n1mero binario 22323!22 el cual ser representado por la
siguiente manera 4
25#
'
625#
&
635#
#
625#
2
635#
3
625#
72
625#
7#
2%6$636#6363!863!#8 9 #%!:8
"or lo tanto tenemos que un n1mero en un sistema de base;r< tiene
coeficientes multiplicados por potencias de ;r< quedara representado de
la siguiente manera 4
a
n
Qr
n
R a
nD1
Qr
nD1
R . . . R a
2
Qr
2
R a
1
Qr
1
R a
0
Qr
0
R a
D1
Qr
D1
R . . . R a
Dm
Qr
Dm

Ti*os &e sis$emas "!mG-icos.
Los sistemas de numeracin son conjuntos de dgitos usados para
representar cantidades, as se tienen los sistemas de numeracin decimal,
binario, octal, he=adecimal, romano, etc! Los cuatro primeros se
caracterizan por tener una base ;n1mero de dgitos diferentes4 diez, dos,
ocho, dieciseis respecti(amente< mientras que el sistema romano no posee
base resulta ms complicado su manejo tanto con n1meros, as como en
las operaciones bsicas!
Los sistemas de numeracin que poseen una base tienen la caracterstica de
cumplir con la notacin posicional, es decir, la posicin de cada n1mero le
da un (alor o peso, as el primer dgito de derecha a izquierda despus del
punto decimal, tiene un (alor igual a b (eces el (alor del dgito, as el
dgito tiene en la posicin n un (alor igual a4 (b
n
) * A
donde4
b 9 (alor de la base del sistema
n 9 n1mero del dgito o posicin del mismo
0 9 dgito!
"or ejemplo4
digitos4 2 # ' > 8 & ! & # '
posicion 8 ' & # 2 3 ! 72 7# 7&
!l #i#tema num+rico decimal
El sistema de numeracin decimal es el ms usado, tiene como base el
n1mero 23, o sea que posee 23 dgitos ;o simbolos< diferentes ;3, 2, #, &,
', 8, %, :, $, ><! El sistema de numeracin decimal fu desarrollado por los
hind1es, posteriormente lo introducen los rabes en Europa, donde recibe el
nombre de sistema de numeracin decimal o arbigo! -i se aplica la
notacin posicional al sistema de numeracin decimal entonces el dgito
n1mero n tiene el (alor4 (10
n
)* A
"i#tema ,inario
El sistema de numeracin ms simple que usa la notacin posicional es el
sistema de numeracin binario! Este sistema, como su nombre lo indica,
usa solamente dos dgitos ;3,2<!
"or su simplicidad por poseer 1nicamente dos dgitos diferentes, el
sistema de numeracin binario se usa en computacin para el manejo de
datos e informacin! ?ormalmente al dgito cero se le asocia con cero
(oltios, apagado, desenergizado, inhibido ;de la computadora< el dgito 2
se asocia con 68, 62# (olts, encendido, energizado ;de la computadora<
con el cual se forma la lgica positi(a! -i la asociacin es in(ersa, o sea el
n1mero cero se asocia con 68 (olts o encendido al n1mero 2 se asocia
con cero (olts o apagado, entonces se genera la lgica negati(a!
0 la representacin de un dgito binario se le llama bit ;de la contraccin
binar digit< al conjunto de $ bits se le llama bte, as por ejemplo4 223
contiene & bits, 2332 contiene ' 2 contiene 2 bit! Como el sistema binario
usa la notacin posicional entonces el (alor de cada dgito depende de la
posicin que tiene en el n1mero, as por ejemplo el n1mero 223232
b
es4
1Q*2
0
, R 0Q*2
1
, R 1Q*2
2
, R 0Q*2
7
, R 1Q*2
?
, R 1Q*2
C
, S 1 R ? R 1& R 72 S C7
d
La computadora est dise.ada sobre la base de numeracin binaria ;base
#<! "or eso este caso particular merece mencin aparte! -iguiendo las
reglas generales para cualquier base e=puestas antes, tendremos que4
E=isten dos dgitos ;3 o 2< en cada posicin del n1mero!
?umerando de derecha a izquierda los dgitos de un n1mero, empezando
por cero, el (alor decimal de la posicin es #n!
"or ejemplo,2232
#
;en base #< quiere decir4
1Q*2
7
, R 1Q*2
2
, R 0Q*2
1
, R 1Q*2
0
, S @ R ? R 0 R 1 S 17
10
"i#tema Octal
1l sistema de numeracin octal es tambi(n mu$ usado en la computacin por tener una base que
es potencia eEacta de 2 o de la numeracin binaria. 1sta caracterstica "ace que la conversin a
binario o viceversa sea bastante simple. 1l sistema octal usa @ d+itos *0,1,2,7,?,C,&,', $ tienen
el mismo valor que en el sistema de numeracin decimal. omo el sistema de numeracin octal
usa la notacin posicional entonces para el nmero 7?C2.72
q
tenemosK
#5;$
3
< 6 85;$
2
< 6 '5;$
#
< 6 &5;$
&
< 6 &5;$
72
< 6 #5;$
7#
< 9 # 6 '3 6 '5%' 6
%' 6 &582# 6 &53!2#8 6 #53!328%#8 9 # 6 '3 6 #8% 6 28&% 6 3!&:8 6
3!3&2#8 9 2$&' 6 '3%#8
d
entonces, &'8#!&#
q
9 2$&'!'3%#8
d

El subindice q indica n1mero octal, se usa la letra q para e(itar confusin
entre la letra o el n1mero 3!
"i#tema $e-adecimal
@n gran problema con el sistema binario es la (erbosidad! "ara representar
el (alor #3#23 se requieren ocho dgitos binarios, la (ersin decimal slo
requiere de tres dgitos por lo tanto los n1meros se representan en forma
mucho ms compacta con respecto al sistema numrico binario!
Aesafortunadamente las computadoras trabajan en sistema binario
aunque es posible hacer la con(ersin entre decimal binario, a (imos que
no es precisamente una tarea cmoda! El sistema de numeracin
he=adecimal, o sea de base 2%, resuel(e este problema ;es com1n abre(iar
he=adecimal como he= aunque he= significa base seis no base dieciseis<!
El sistema he=adecimal es compacto nos proporciona un mecanismo
sencillo de con(ersin hacia el formato binario, debido a sto, la maora del
equipo de cmputo actual utiliza el sistema numrico he=adecimal! Como la
base del sistema he=adecimal es 2%, cada dgito a la izquierda del punto
he=adecimal representa tantas (eces un (alor sucesi(o potencia de 2%, por
ejemplo, el n1mero 2#&'2% es igual a4
1Q1&7 R 2Q1&2 R 7Q1&1 R ?Q1&0
lo que da como resultado4
?06& R C12 R ?@ R ? S ?&&010
Cada dgito he=adecimal puede representar uno de dieciseis (alores entre 3
2823! Como slo tenemos diez dgitos decimales, necesitamos in(entar
seis dgitos adicionales para representar los (alores entre 2323 2823! En
lugar de crear nue(os simbolos para estos dgitos, utilizamos las letras 0 a
la B! La con(ersin entre he=adecimal binario es sencilla, considere la
siguiente tabla4
Cinario De=adecimal

3333 3
3332 2
3323 #
3322 &
3233 '
3232 8
3223 %
3222 :
2333 $
2332 >
2323 0
2322 C
2233 C
2232 A
2223 E
2222 B
Esta tabla contiene toda la informacin necesaria para con(ertir de binario a
he=adecimal (isce(ersa! "ara con(ertir un n1mero he=adecimal en
binario, simplemente sustitua los correspondientes cuatro bits para cada
dgito he=adecimal, por ejemplo, para con(ertir 30CCAh en un (alor binario4
3 0 C C A ;De=adecimal<
3333 2323 2322 2233 2232 ;Cinario<
"or comodidad, todos los (alores numricos los empezaremos con un dgito
decimalE los (alores he=adecimales terminan con la letra h los (alores
binarios terminan con la letra b! La con(ersin de formato binario a
he=adecimal es casi igual de fcil, en primer lugar necesitamos asegurar
que la cantidad de dgitos en el (alor binario es m1ltiplo de ', en caso
contrario agregaremos ceros a la izquierda del (alor, por ejemplo el n1mero
binario 2322332323, la primera etapa es agregarle dos ceros a la izquierda
para que contenga doce ceros4 332322332323! La siguiente etapa es
separar el (alor binario en grupos de cuatro bits, as4 3323 2233 2323!
Binalmente buscamos en la tabla de arriba los correspondientes (alores
he=adecimales dando como resultado, #C0, siguiendo la con(encin
establecida4 3#C0
h
!
Co";e-sio"es.
Decimal a bi"a-ioD Oc$alD HeHa&ecimal
uando deseamos e#ectuar la conversin de decimal a binario o "a cualquier otro sistema con
base r es ms conveniente si el nmero se separa en parte entera $ en una parte #raccionaria, $ la
conversin de cada parte se e#ecta por separado K

E.em*lo <
onvertir el numero *?1,
10
a binario
?1 1 /8.
20 0
21 10 0
22 C 1
27 2 0
2? 1 1 B8.
*?1,
10
S *101001,
2

5ara convertir cualquier entero decimal "a cualquier sistema de base r la divisin se "ace
entre r en lu+ar de 2.
E.em*lo <
onvertir el numero *1C7,
10
a base @
1C7 1 /8.
1C? 16 7
1CC 2 2 B8.
*1C7,
10
S*271,
@

5ara convertir una #raccin decimal a binario, el sistema que se si+ue es similar al que
utilizamos para los enteros, sin embar+o, se usa la multiplicacin en lu+ar de la divisin, $ los
enteros se acumulan en lu+ar de los residuos.
E.em*lo <
convertir *0.&@'C,
10
a base 2
1ntero Jraccin oe#iciente
0.&@'C Q2 1 0.7'C0 *a
D1
, S 1
0.7'C0 Q2 0 0.'C *a
D2
, S 0
0.'C Q2 1 0.C *a
D7
, S 1
0.C Q2 1 0.0 *a
D?
, S 1
*0.&@'C,
10
S*0.1011,
2

uando deseamos convertir una #raccin decimal en nmero eEpresado en base r, el
procedimiento es similar, la multiplicacin se "ace con r en lu+ar de 2 $ los coe#icientes se
encuentran con los enteros.
E.em*lo <
convertir *0.C17,
10
a base @
1ntero Jraccin oe#iciente
0.C17 Q @ ? 0.10? a
D1
S ?
0.10? Q @ 0 0.@72 a
D2
S 0
0.@72 Q @ & 0.&C& a
D7
S &
0.&C& Q @ C 0.2?@ a
D?
S C
0.2?@ Q @ 1 0.6@? a
DC
S 1
0.6@? Q @ ' 0.@'2 a
D&
S '
uando deseamos "acer la conversin de un nmero decimal de una parte entera $ una parte
#raccionaria la conversin se "ace por separado $ posteriormente se combinan las dos
respuestas.
E.em*lo <
*?1.&@'C,
10
DT *101001.1011,
2

Bi"a-io a DecimalD Oc$alD HeHa&ecimal.
!n nmero binario E puede convertirse en decimal e#ectuando la suma de las potencias cu$o
valor es uno.
1jemplo K
*1010.011,
2
S 1Q2
7
R0Q2
2
R1Q2
1
R0Q2
0
R0Q2
D1
R1Q2
D2
R1Q2
D7

S @R0R2R0R0R0.2CR0.12C
S 10.7'C
/as conversiones entre cdi+o binario, octal $ "eEadecimal es mu$ importante en las
comparaciones di+itales, $a que cada d+ito octal corresponde a tres d+itos binarios $ a cada
d+ito "eEadecimal corresponde cuatro d+itos binarios.
*10110001101011.111100000110,
2
DT *2&1C7.'?0&,
@

uando deseamos convertir un nmero binario a "eEadecimal, el proceso es similar eEcepto
que el nmero binario se divide en +rupos de ?.
*10110001101011.11110010,
2
DT *2&..J2,
1&

/os nmeros binarios son di#ciles de manejar $a que se requiere dos o cuatro veces mas d+itos
que su equivalente decimal.
E.em*lo <
*111111111111,
2
DT *?06C,
10

!na #orma de reducir esta de#iciencia es emplear la relacin entre el sistema de nmeros
binarios con el sistema octal o "eEadecimal.
1l nmero binario *111111111111,
2
tiene 12 d+itos $ los podemos eEpresar en octal *'''',
@
*cuatro d+itos, o en "eEadecimal como *JJJ,
1&
*tres d+itos,, la representacin octal o
"eEadecimal es mas deseable $a que se representa en #orma mas compacta, como un tercio o un
cuarto del nmero de d+itos requeridos por el nmero binario equivalente.
l3eb-a boolea"a.
Las lgebras booleanas, estudiadas por primera vez en detalle por George
Boole , constituyen un rea de las matemticas que ha pasado a ocupar un
lugar prominente con el advenimiento de la computadora digital. Son usadas
ampliamente en el diseo de circuitos de distribucin y computadoras, y sus
aplicaciones van en aumento en muchas otras reas. En el nivel de lgica
digital de una computadora, lo que comnmente se llama hardware, y que est
formado por los componentes electrnicos de la mquina, se trabaja con
diferencias de tensin, las cuales generan funciones que son calculadas por los
circuitos que forman el nivel. stas funciones, en la etapa de disea del
hardware, son interpretadas como funciones de boole.
En el presente trabajo se intenta dar una definicin de lo que es un lgebra de
boole; se tratan las funciones booleanas,
haciendo una correlacin con las frmulas proposicionales. Asimismo, se
plantean dos formas cannicas de las funciones booleanas, que son tiles para
varios propsitos, tales como el de determinar si dos expresiones representan
o no la misma funcin. Pero para otros propsitos son a menudo engorrosas,
por tener ms operaciones que las necesarias. Particularmente, cuando
estamos construyendo los circuitos electrnicos con que implementar funciones
booleanas, el problema de determinar una expresin mnima para una funcin
es a menudo crucial. No resultan de la misma eficiencia en dinero y tiempo,
principalmente, dos funciones las cuales calculan lo mismo pero donde una
tiene menos variables y lo hace en menor tiempo. Como solucin a este
problema, se plantea un mtodo de simplificacin, que hace uso de unos
diagramas especiales llamados mapas o diagramas de Karnaugh, y el cual
tiene la limitacin de poder trabajar adecuadamente slo con pocas variables.
Se realizan estas presentaciones con el fin de demostrar la afinidad existente
entre el lgebra de boole y la lgica proposicional, y con el objeto de cimentar
el procedimiento de simplificacin presentado en la lgica de proposiciones.
2. 2esea <istrica
A mediados del siglo XX, George Boole (1815-1864), en sus libros: "The
Mathematical Analysis of Logic" (1847) y "An nvestigation of te Laws of
Thought" (1854), desarroll la idea de que las proposiciones lgicas podan ser
tratadas mediante herramientas matemticas. Las proposiciones lgicas
(asertos, frases o predicados de la lgica clsica) son aquellas que nicamente
pueden tomar valores Verdadero/Falso, o preguntas cuyas nicas respuestas
posibles sean S/No. Segn Boole, estas proposiciones pueden ser
representadas mediante smbolos y la teora que permite trabajar con estos
smbolos, sus entradas (variables) y sus salidas (respuestas) es la Lgica
Simblica desarrollada por l. Dicha lgica simblica cuenta con operaciones
lgicas que siguen el comportamiento de reglas algebraicas. Por ello, al
conjunto de reglas de la Lgica Simblica se le denomina LGEBRA DE
BOOLE.
A mediados del siglo XX el lgebra Booleana result de una gran importancia
prctica, importancia que se ha ido incrementando hasta nuestros das, en el
manejo de informacin digital (por eso hablamos de Lgica Digital). Gracias a
ella, Shannon (1930) pudo formular su teora de la codificacin y John Von
Neumann pudo enunciar el modelo de arquitectura que define la estructura
interna de los ordenadores desde la primera generacin.
Todas las variables y constantes del lgebra booleana, admiten slo uno de
dos valores en sus entradas y salidas: S/No, 0/1 o Verdadero/Falso. Estos
valores bivalentes y opuestos pueden ser representados por nmeros binarios
de un dgito (bits), por lo cual el lgebra booleana se puede entender cmo el
lgebra del Sistema Binario. Al igual que en lgebra tradicional, tambin se
trabaja con letras del alfabeto para denominar variables y formar ecuaciones
para obtener el resultado de ciertas operaciones mediante una ecuacin o
expresin booleana. Evidentemente los resultados de las correspondientes
operaciones tambin sern binarios.
Todas las operaciones (representadas por smbolos determinados) pueden ser
materializadas mediante elementos fsicos de diferentes tipos (mecnicos,
elctricos, neumticos o electrnicos) que admiten entradas binarias o lgicas y
que devuelven una respuesta (salida) tambin binaria o lgica. Ejemplos de
dichos estados son: Abierto/Cerrado (interruptor), Encendida/Apagada
(bombilla), Cargado/Descargado (condensador) , Nivel Lgico 0/Nivel lgico 1
(salida lgica de un circuito semiconductor), etctera.
Los dispositivos con los cuales se implementan las funciones lgicas son
llamados puertas (o compuertas) y, habitualmente, son dispositivos electrnicos
basados en transistores. Estos dispositivos, y otros que veremos a lo largo de
esta unidad, son los que permiten el diseo, y la ulterior implementacin, de los
circuitos de cualquier ordenador moderno, as como de muchos de los
elementos fsicos que permiten la existencia de las telecomunicaciones
modernas, el control de mquinas, etctera. De hecho, pensando en los
ordenadores como una jerarqua de niveles, la base o nivel inferior sera
ocupada por la lgica digital (en el nivel ms alto del ordenador encontraramos
los actuales lenguajes de programacin de alto nivel).
En esta unidad se representan las puertas lgicas elementales, algunas
puertas complejas y algunos ejemplos de circuitos digitales simples, as como
algunas cuestiones de notacin. Por otra parte se plantean actividades de
trabajo, muchas de las cuales implican una respuesta escrita en vuestro
cuaderno de trabajo. El deseo del autor es que os resulte sencillo y ameno
adentraros en el mundo de la lgica digital y despertaros la curiosidad, tanto
por ella, como por la matemtica que subyace en ella.


3. Clebra Booleana
El lgebra booleana es un sistema matemtico deductivo centrado en los
valores cero y uno (falso y verdadero). Un operador binario " " definido en
ste juego de valores acepta un par de entradas y produce un solo valor
booleano, por ejemplo, el operador booleano AND acepta dos entradas
booleanas y produce una sola salida booleana.
Para cualquier sistema algebraico existen una serie de postulados iniciales, de
aqu se pueden deducir reglas adicionales, teoremas y otras propiedades del
sistema, el lgebra booleana a menudo emplea los siguientes postulados:
Cerrado. El sistema booleano se considera cerrado con respecto a un operador binario
si para cada par de valores booleanos se produce un solo resultado booleano.
Conmutativo. Se dice que un operador binario " " es conmutativo si A B = B A para
todos los posibles valores de A y B.
Asociativo. Se dice que un operador binario " " es asociativo si (A B) C = A (B C)
para todos los valores booleanos A, B, y C.
Distributivo. Dos operadores binarios " " y " % " son distributivos si A (B % C) = (A
B) % (A C) para todos los valores booleanos A, B, y C.
dentidad. Un valor booleano se dice que es un elemento de identidad con respecto a
un operador binario " " si A = A.
nverso. Un valor booleano es un elemento inverso con respecto a un operador
booleano " " si A = B, y B es diferente de A, es decir, B es el valor opuesto de A.
Para nuestros propsitos basaremos el lgebra booleana en el siguiente juego
de operadores y valores:
- Los dos posibles valores en el sistema booleano son cero y uno, a menudo
llamaremos a stos valores respectivamente como falso y verdadero.
- El smbolo representa la operacin lgica AND. Cuando se utilicen nombres
de variables de una sola letra se eliminar el smbolo , por lo tanto AB
representa la operacin lgica AND entre las variables A y B, a esto tambin le
llamamos el producto entre A y B.
- El smbolo "+" representa la operacin lgica OR, decimos que A+B es la
operacin lgica OR entre A y B, tambin llamada la suma de A y B.
- El complemento lgico, negacin NOT es un operador unitario, en ste texto
utilizaremos el smbolo " ' " para denotar la negacin lgica, por ejemplo, A'
denota la operacin lgica NOT de A.
- Si varios operadores diferentes aparecen en una sola expresin booleana, el
resultado de la expresin depende de la procedencia de los operadores, la cual
es de mayor a menor, parntesis, operador lgico NOT, operador lgico AND y
operador lgico OR. Tanto el operador lgico AND como el OR son asociativos
por la izquierda. Si dos operadores con la misma procedencia estn
adyacentes, entonces se evalan de izquierda a derecha. El operador lgico
NOT es asociativo por la derecha.
Utilizaremos adems los siguientes postulados:
P1 El lgebra booleana es cerrada bajo las operaciones AND, OR y NOT
P2 El elemento de identidad con respecto a es uno y con respecto a + es cero. No
existe elemento de identidad para el operador NOT
P3 Los operadores y + son conmutativos.
P4 y + son distributivos uno con respecto al otro, esto es, A (B+C) = (AB)+(AC) y
A+ (BC) = (A+B) (A+C).
P5 Para cada valor A existe un valor A' tal que AA' = 0 y A+A' = 1. ste valor es el
complemento lgico de A.
P6 y + son ambos asociativos, sto es, (AB) C = A (BC) y (A+B)+C = A+ (B+C).
Es posible probar todos los teoremas del lgebra booleana utilizando stos
postulados, adems es buena idea familiarizarse con algunos de los teoremas
ms importantes de los cuales podemos mencionar los siguientes:
Teorema 1: A + A = A
Teorema 2: A A = A
Teorema 3: A + 0 = A
Teorema 4: A 1 = A
Teorema 5: A 0 = 0
Teorema 6: A + 1 = 1
Teorema 7: (A + B)' = A' B'
Teorema 8: (A B)' = A' + B'
Teorema 9: A + A B = A
Teorema 10: A (A + B) = A
Teorema 11: A + A'B = A + B
Teorema 12: A' (A + B') = A'B'
Teorema 13: AB + AB' = A
Teorema 14: (A' + B') (A' + B) = A'
Teorema 15: A + A' = 1
Teorema 16: A A' = 0
Los teoremas siete y ocho son conocidos como Teoremas de DeMorgan en
honor al matemtico que los descubri.
Caractersticas:
Un lgebra de Boole es un conjunto en el que destacan las siguientes
caractersticas:
1- Se han definido dos funciones binarias (que necesitan dos parmetros) que
llamaremos aditiva (que representaremos por x
+ y) y multiplicativa (que representaremos por xy) y una funcin monaria (de un
solo parmetro) que representaremos por x'.
2- Se han definido dos elementos (que designaremos por 0 y 1)
Y 3- Tiene las siguientes propiedades:
Conmutativa respecto a la primera funcin: x + y = y + x
Conmutativa respecto a la segunda funcin: xy = yx
Asociativa respecto a la primera funcin: (x + y) + z = x + (y +z)
Asociativa respecto a la segunda funcin: (xy)z = x(yz)
Distributiva respecto a la primera funcin: (x +y)z = xz + yz
Distributiva respecto a la segunda funcin: (xy) + z = (x + z)( y + z)
dentidad respecto a la primera funcin: x + 0 = x
dentidad respecto a la segunda funcin: x1 = x
Complemento respecto a la primera funcin: x + x' = 1
Complemento respecto a la segunda funcin: xx' = 0
Propiedades Del lgebra De Boole
1. dempotente respecto a la primera funcin: x + x = x
dempotente respecto a la segunda funcin: xx = x
Maximalidad del 1: x + 1 = 1
Minimalidad del 0: x0 = 0
nvolucin: x'' = x
nmersin respecto a la primera funcin: x + (xy) = x
nmersin respecto a la segunda funcin: x(x + y) = x
Ley de Morgan respecto a la primera funcin: (x + y)' = x'y'
Ley de Morgan respecto a la segunda funcin: (xy)' = x' + y'

Funcin Booleana
Una funcin booleana es una aplicacin de A x A x A x....A en A, siendo A un
conjunto cuyos elementos son 0 y 1 y tiene estructura de lgebra de Boole.
Supongamos que cuatro amigos deciden ir al cine si lo quiere la mayora. Cada
uno puede votar si o no. Representemos el voto de cada uno por x
i
. La funcin
devolver s (1) cuando el numero de votos afirmativos sea 3 y en caso
contrario devolver 0.
Si x1 vota 1, x2 vota 0, x3 vota 0 y x4 vota 1 la funcin booleana devolver 0.
Producto mnimo (es el nmero posible de casos) es un producto en el que
aparecen todas las variables o sus negaciones.
El nmero posible de casos es 2
n
.
Siguiendo con el ejemplo anterior. Asignamos las letras A, B, C y D a los
amigos. Los posibles casos son:
Votos Resultado
ABCD
1111 1
1110 1
1101 1
1100 0
1011 1
1010 0
1001 0
1000 0
0111 1
0110 0
0101 0
0100 0
0011 0
0010 0
0001 0
0000 0
Las funciones booleanas se pueden representar como la suma de productos
mnimos (minterms) iguales a 1.
En nuestro ejemplo la funcin booleana ser:
f(A,B,C,D) = ABCD + ABCD' + ABC'D + AB'CD + A'BCD
Diagramas De Karnaugh
Los diagramas de Karnaugh se utilizan para simplificar las funciones
booleanas.
Se construye una tabla con las variables y sus valores posibles y se agrupan
los 1 adyacentes, siempre que el nmero de 1 sea potencia de 2.
En esta pgina tienes un programa para minimizacin de funciones booleanas
mediante mapas de Karnaugh
). Clebra Booleana % circuitos electrnicos
La relacin que existe entre la lgica booleana y los sistemas de cmputo es
fuerte, de hecho se da una relacin uno a uno entre las funciones booleanas y
los circuitos electrnicos de compuertas digitales. Para cada funcin booleana
es posible disear un circuito electrnico y viceversa, como las funciones
booleanas solo requieren de los operadores AND, OR y NOT podemos
construir nuestros circuitos utilizando exclusivamente stos operadores
utilizando las compuertas lgicas homnimas
Un hecho interesante es que es posible implementar cualquier circuito
electrnico utilizando una sola compuerta, sta es la compuerta NAND
Para probar que podemos construir cualquier funcin booleana utilizando slo
compuertas NAND, necesitamos demostrar cmo construir un inversor (NOT),
una compuerta AND y una compuerta OR a partir de una compuerta NAND, ya
que como se dijo, es posible implementar cualquier funcin booleana utilizando
slo los operadores booleanos AND, OR y NOT. Para construir un inversor
simplemente conectamos juntas las dos entradas de una compuerta NAND.
Una vez que tenemos un inversor, construir una compuerta AND es fcil, slo
invertimos la salida de una compuerta NAND, despus de todo, NOT ( NOT (A
AND B)) es equivalente a A AND B. Por supuesto, se requieren dos compuertas
NAND para construir una sola compuerta AND, nadie ha dicho que los circuitos
implementados slo utilizando compuertas NAND sean lo ptimo, solo se ha
dicho que es posible hacerlo. La otra compuerta que necesitamos sintetizar es
la compuerta lgica OR, sto es sencillo si utilizamos los teoremas de
DeMorgan, que en sntesis se logra en tres pasos, primero se reemplazan
todos los DED por DFD despus se invierte cada literal y por ltimo se niega la
totalidad de la expresin:
A OR B
A AND B.......................Primer paso para aplicar el teorema de DeMorgan
A' AND B'.....................Segundo paso para aplicar el teorema de DeMorgan
(A' AND B')'..................Tercer paso para aplicar el teorema de DeMorgan
(A' AND B')' = A' NAND B'.....Definicin de OR utilizando NAND
Si se tiene la necesidad de construir diferentes compuertas de la manera
descrita, bien hay dos buenas razones, la primera es que las compuertas
NAND son las ms econmicas y en segundo lugar es preferible construir
circuitos complejos utilizando los mismos bloques bsicos. Observe que es
posible construir cualquier circuito lgico utilizando slo compuertas de tipo
NOR (NOR = NOT(A OR B)). La correspondencia entre la lgica NAND y la
NOR es ortogonal entre la correspondencia de sus formas cannicas. Mientras
que la lgica NOR es til en muchos circuitos, la mayora de los diseadores
utilizan lgica NAND.
+$$*<==>>>.mo"o3-a%ias.com=$-aba.os12=al3eb-a,boolea"a=al3eb-a,
boolea"a.s+$ml
Ci-c!i$os combi"a$o-ios.
Un circuito combinacional es un sistema que contiene operaciones booleanas
bsicas (AND, OR, NOT), algunas entradas y un juego de salidas, como cada
salida corresponde a una funcin lgica individual, un circuito combinacional a
menudo implementa varias funciones booleanas diferentes, es muy importante
recordar ste echo, cada salida representa una funcin booleana diferente.
Un ejemplo comn de un circuito combinacional es el decodificador de siete
segmentos, se trata de un circuito que acepta cuatro entradas y determina cul
de los siete segmentos se deben iluminar para representar la respectiva
entrada, de acuerdo con lo dicho en el prrafo anterior, se deben implementar
siete funciones de salida diferentes, una para cada segmento. Las cuatro
entradas para cada una de stas funciones booleanas son los cuatro bits de un
nmero binario en el rango de 0 a 9. Sea D el bit de alto orden de ste nmero
y A el bit de bajo orden, cada funcin lgica debe producir un uno (para el
segmento encendido) para una entrada dada si tal segmento en particular debe
ser iluminado, por ejemplo, el segmento e debe iluminarse para los valores
0000, 0010, 0110 y 1000.
En la siguiente tabla se puede ver qu segmentos deben iluminarse de acuerdo
al valor de entrada, tenga en cuenta que slo se estn representando valores
en el rango de 0 a 9, los decodificadores para las pantallas de siete segmentos
comerciales tienen capacidad para desplegar valores adicionales que
corresponden a las letras A a la F para representaciones hexadecimales, sin
embargo la mecnica para iluminar los respectivos segmentos es similar a la
aqu representada para los valores numricos.
0 a b c d e f
1 b c
2 a b d e g
3 a b c d g
4 b c f g
5 a c d f g
6 c d e f g
7 a b c
8 a b c d e f g
9 a b c f g

Los circuitos combinacionales son la base de muchos componentes en un
sistema de cmputo bsico, se puede construir circuitos para sumar, restar,
comparar, multiplicar, dividir y muchas otras aplicaciones ms.
Circuitos Secuenciales
Un problema con la lgica secuencial es su falta de "memoria". En teora, todas
las funciones de salida en un circuito combinacional dependen del estado
actual de los valores de entrada, cualquier cambio en los valores de entrada se
refleja (despus de un intervalo de tiempo llamado retardo de propagacin) en
las salidas. Desafortunadamente las computadoras requieren de la habilidad
para "recordar" el resultado de clculos pasados. ste es el dominio de la
lgica secuencial. Una celda de memoria es un circuito electrnico que
recuerda un valor de entrada despus que dicho valor ha desaparecido. La
unidad de memoria ms bsica es el flip-flop Set/Reset. Aunque recordar un bit
sencillo es importante, la mayora de los sistemas de cmputo requieren
recordar un grupo de bits, sto se logra combinando varios flip-flop en paralelo,
una conexin de ste tipo recibe el nombre de registro. A partir de aqu es
posible implementar diferentes circuitos como registros de corrimiento y
contadores, stos ltimos tambin los conocemos como circuitos de reloj. Con
los elementos mencionados es posible construir un microprocesador completo.
3. 2elacin entre la lica combinacional % secuencial con la
proramacin
En sta leccin hemos dado una repasada muy bsica a los elementos que
forman la base de los modernos sistemas de cmputo, en la seccin dedicada
al diseo electrnico estudiaremos a profundidad los conceptos aqu
presentados, pero para aquellos que estn ms interesados en el aspecto
programtico podemos decir que con los elementos vistos en sta leccin es
posible implementar mquinas de estado, sin embargo la moraleja de sta
leccin es muy importante: cualquier algoritmo que podamos implementar en
software, lo podemos a su vez implementar directamente en hardware. sto
sugiere que la lgica booleana es la base computacional en los modernos
sistemas de cmputo actuales. Cualquier programa que Usted escriba,
independientemente del lenguaje que utilice, sea ste de alto bajo nivel, se
puede especificar como una secuencia de ecuaciones booleanas.
Un hecho igualmente interesante es el punto de vista opuesto, es posible
implementar cualquier funcin de hardware directamente en software, en la
actualidad sta es la funcin principal del lenguaje ensamblador y otros con
capacidad de trabajar directamente en hardware, como el C y el C++. Las
consecuencias de ste fenmeno apenas se estn explotando, se infiere la
existencia de un futuro muy prometedor para el profesional de la programacin,
especialmente aquellos dedicados a los sistemas incrustados (embedded
systems), los microcontroladores y los profesionales dedicados a la
Programacin Orientada a Objetos. Para tener xito en stos campos de la
investigacin es fundamental comprender las funciones booleanas y la manera
de implementarlas en software. An y cuando Usted no desee trabajar en
hardware, es importante conocer las funciones booleanas ya que muchos
lenguajes de alto nivel procesan expresiones booleanas, como es el caso de
los enunciados ifGt0en los bucles while.
+$$*<==>>>.mo"o3-a%ias.com=$-aba.os12=al3eb-a,boolea"a=al3eb-a,
boolea"a.s+$ml
P-o*ie&a&es.
P-o*ie&a&es &el al3eb-a &e Boole.
1. P-o*ie&a& &e cie--e.
5ara un conjunto s se dice que es cerrado para un operador binario si para cada elemento de 8
el operador binario especi#ica una re+la para obtener un elemento nico de 8.
5ara el conjunto ) S U1,2,7,?,VW es cerrado con respecto al operador binario *R, por las
re+las de la adicin aritm(tica, $a que para que cualquier elemento a,b pertenecientes a ) por la
operacin a R b S c el conjunto de los nmeros naturales no esta cerrado con respecto al
operador binario *D, por la re+la de la resta aritm(tica, debido a que 2D7 S D1 $ 2,7 pertenecen a
) pero D1 no pertenece a ).
/. Le? asocia$i;a.
1l operador binario *Q, es un conjunto 8 es asociativo siempre que
EQ$Qz S EQ*$Qz, para toda E, $ pertenecientes a 8.
1. Le? co"m!$a$i;a.
!n operador binario *Q, para un conjunto 8 es conmutativo siempre queK
EQ$ S $QE para toda E,$ pertenecientes a 8.
2. Eleme"$o i&e"$i&a&.
1l conjunto 8 tendr un elemento identidad multiplicativo Xidentidad *Q,Y en 8 si eEiste un e
perteneciente a 8 con la propiedad eQE S EQe Se para cada E pertenecientes a 8.
6. I";e-sa.
1l conjunto 8 tiene un elemento identidad *e, con respecto al operador *Q, siempre que para
cada E perteneciente a 8 eEista un elemento $ perteneciente a 8 tal que EQ$Se.
9. Le? &is$-ib!$i;a.
8i el operador *Q, $ el operador *.,, son operadores binarios de 8, *Q, se dice que es distributivo
sobre *.,.
8iempre queK
EQ*$ . z, S *EQ$, . *EQz,
D 1l operador binario *R, de#ine la adicin.
D >dentidad aditiva es el cero.
D /a inversa aditiva de#ine la sustraccin.
D 1l operador binario *., de#ine la multiplicacin.
D >dentidad multiplicativa es 1.
D >nversa multiplicativa de A es i+ual a 1NA de#ine la divisin esto es A Q 1NA S 1
D /a nica le$ distributiva aplicable es la de operador *., sobre el operador R
*., sobre *R, a*bRc,S*a.b, R*a.c,
5ara de#inir #ormalmente el l+ebra de .oole se emplean postulados de 0untin+ton.
1.
a, ierre con respecto al operador *R,
b, ierre con respecto al operador *.,
2.
a, !n elemento identidad con respecto al operador *R,, desi+nado por el cero ER0 S0RESE
b, !n elemento identidad con respecto al operador *., desi+nado por el uno EQ1S1QESE
7.
a, onmutativo con respecto al operador *R, K ER$ S $RE
b, onmutativo con respecto al operador *., K EQ$ S$QE
?.
a, 1l operador *., es distributivo sobre el operador *R, K E.*$Rz, S *E.$, R *$.z,
b, 1l operador *R, es distributivo sobre el operador *., K ER*E.z, S *ER$, . *ERz,
C. 5ara cada elemento de E pertenencia a . eEiste un elemento EZ complemento perteneciente a
. denominado complemento de E tal queK
a, EREZ S 1
b, EZ S 0
&. 1Eisten cuando menos dos elementos E,$ pertenecientes a . tal que E di#erente de $. 5or lo
tanto tenemos que el l+ebra de .oole di#iere de la aritm(tica $ del l+ebra ordinaria en la si+K
a, /os postulados 0untin+tonK no inclu$en al le$ asociativa, no obstante esta le$ es valida para
el l+ebra booleana *para ambos operadores,
b, /a le$ distributiva del operador *R, sobre el operador *., esto esK ER*$.z, S *ER$,.*ERz,, la
cual es valida para el l+ebra de boole pero no para el l+ebra ordinaria.
c, 1l l+ebra booleana no tiene inversa aditiva a multiplicativa, por lo tanto no "a$ operaciones
de sustracciones o divisin.
d, 1l postulado C de#ine un operador llamado completo que no se encuentra en el l+ebra
ordinaria.
e, 1n el al+ebra de .oole se de#ine un conjunto . de dos elementos *0 $ 1, $ el l+ebra
ordinaria trata con el conjunto de los nmeros reales.
5ostulado 2 a, E R 0 S E b, E . 1 S E
5ostulado C a, E R EZ S 1 b, E . EZ S 0
Teorema 1 a, E R E S E b, E . E S E
Teorema 2 a, E R 1 S 1 b, E . 0 S 0
Teorema 7 involucin *EZ,Z S E
Teorema 7 conmutativo a, E R $ S $ R E b, E$ S $E
Teorema ? asociativo a, E R *$ R z, S *E R $, Rz b, E *$z, S *E$, z
5ostulado ? distributivo a, E *$ R z, S E$ REz b, E R $z S *E R $,*E Rz,
Teorema C mor+an a, * E R $,Z S EZ $Z b, *E$, S EZ R $Z
Teorema & absorcin a, E R E$ S E b, E *E R $, S E
E.em*losK

E R E S E E R E$ S E
E R E S *E R E, . 1 E . 1 R E$ S E
E R E S *E R E, *E R EZ, E *1 R $, S E
E R E S E R EEZ E *$ R 1, S E
E R E S E R 0 E *1, S E
E R E S E E S E

/as variables booleanas pueden tomar varios valores de 1 0.
!na #uncin booleana es una eEpresin #ormada por variables binarias.

E.em*loK
J1 S E$zZ
5ara J1 considerar que es i+ual a 1 siK
E S 1A $ S 1 A zZ S 1A de otra manera J1 S 0.
5or lo tanto tendremos que una #uncin booleana tambi(n puede representarse en una
tabla de verdad. 5ara representar una #uncin booleana en una tabla de verdad se necesita una
lsit de 2ncombinaciones de 1 $ 0 de las n variables binarias, $ una columna que muestra
combinaciones para las cuales # es i+ual a 1 0.

E $ z J1 J2 J7 J?
0 0 0 0 0 1 0
0 0 1 0 1 0 0
0 1 0 1 0 0 0
0 1 1 1 1 1 1
1 0 0 1 0 0 1
1 0 1 0 0 1 1
1 1 0 1 1 1 1
1 1 1 0 1 0 1


J1 S EZ$zZ R EZ$z R E$Zz R E$zZ S EZ$ *zRzZ, R EzZ *$R$Z, S EZ$ R EzZ
J2 S EZ$Zz R EZ$z R E$zZ R E$z S EZz *$R$Z, R E$ *zRzZ, S EZz R E$
J7 S EZ$ZzZ R EZ$z R E$Zz R E$zZ
J? S EZ$Zz R E$ZzZ R E$Zz R E$zZ R E$z
S E$Z *zRzZ, R E$ *zRzZ, R EZ$z
S E$Z R E$ R EZ$z
S E *$R$Z, R EZ$z
S E R EZ$z

0!"cio"es l73icas.


Ma"i*!laci7" al3eb-aica
uando una #uncin se incrementa con compuertas l+icas, cada literal en la #uncin
denota una entrada a una compuerta.
1. ada literal denota la entrada a una compuerta.
2. ada termino se implanta con una compuerta.
5or el momento nos limitaremos a la minimizacin por literales. 5or lo cual debe quedar
mu$ claro que en la manipulacin al+ebraica no "a$ re+las especi#icas a se+uir a que +aranticen
la respuesta #inal.
E.em*lo< :educir las si+uientes #unciones booleanas.
1. E *EZR$, S EEZ R E$ S E$
2. EZ$Zz R EZ$z R E$ S EZz *$R$Z, R E$ S EZz R E$
7. E R EZ$ S *EREZ,*ER$, S ER$
Com*leme"$o &e !"a %!"ci7".
1l complemento de una #uncin J es JZ obteniendose por el intercambio de 1Zs $ 0Zs $ de
0Zs $ 1Zs.
E.em*lo<

*AR.R,Z S *AR<,Z para < S .R
AZ . <Z [ AZ . *.R,Z [ AZ . .Z .Z
*AR.RRIR1RJRVV..>,
*AZ..Z.Z.IZ.1Z.JZVV.>Z,
/a #orma +eneralizada de IZBor+an enuncia que el complemento de una #uncin se
obtiene del intercambio de los operadores A)I $ 4: $ complementando cada literal.
J1 S *EZ$zZ R EZ$Zz,Z S *ER$ZRz . ER$RzZ,
J2 S [ E *$ZzZR$z,[ S EZ R [ E *$Rz,.*$ZRzZ,[
4tra #orma ms simple para derivar el complemento de una #uncin es tomar el dual de la
#uncin $ complementar cada literal.
0a$ que recordar que el cual de una #uncin se obtiene por el intercambio de los
operadores A)I $ 4: $ los 1Zs $ los 0Zs.
E.em*lo<
J1 S EZ$zZ R EZ$Zz
el &!al< J1 S *ER$ZRz, . *ER$RzZ,
/as variables pueden ser normales *E, complemento *EZ,.
uando tenemos un conjunto de n variables nosotros podemos #ormar 2n miniterminos de
acuerdo a la si+uiente tablaK
5ara nS7 2nD1 combinaciones iniciando a partir de cero.
ada minit(rmino lo obtenemos de un t(rmino A)I de las n variables $ complementado
cada variable si el nmero binario que representa es un 0 $ no complementando si es un 1.
ada minitermino se representa por mj donde j representa el equivalente decimal del
nmero binario del minitermino de la misma #orma podemos tener los maEiterminos con las n
variables #ormando un t(rmino 4: para cada maEitermino.
1n estas se "ace la consideracin de que cada variable no complementada corresponde al
bit 0 $ complementada al bit 1.
J1S EZ$Zz R E$ZzZ R E$z S m1Rm?Rm'
J2S EZ$z R E$Zz R E$zZ R E$z S m7RmCRm&Rm'
J1ZS EZ$ZzZ R EZ$zZ R EZ$z R E$Zz R E$zZ
*J1Z,Z S *ER$Rz, . *ER$ZRz, . *ER$ZRzZ, . *EZR$RzZ, . *EZR$ZRz,
S B0 . B2 . B7 . BC . B&
1l complemento de una #uncin booleana lo podemos obtener al #ormar miniterminos
para cada combinacin que produce un cero en la #uncin $ aplicando el operador 4: a esos
t(rminos.
/as #unciones booleanas eEpresadas como una suma de miniterminos o productos de
maEiterminos se dice que esta en #orma cannica.
Sim*li%icacio" &e 0!"cio"es
S!ma &e mi"i$e-mi"os.
omo sabemos cualquier #uncin booleana puede eEpresarse como una suma de
miniterminos. /a suma de estos elementos que son los que de#inen una #uncin booleana son
aquellos que dan los 1Zs de la #uncin en una tabla de verdad.
Al+unas veces es conveniente eEpresar la #uncin booleana en la #orma de suma de
miniterminos. 8i no puede "acerse en esta #orma entonces puede realizarse primero por la
eEpansin de la eEpresin en una suma de los t(rminos A)I.
Iespu(s cada t(rmino se inspecciona para ver si contiene todas las variables, si se "an
perdido una o ms variables, se aplica el operador A)I con una eEpresin EREZ en donde E es
una de las variables perdidas.

E.em*lo< 1Epresar la #uncin J S AR.Z en una suma de miniterminos.
JS AR.Z
J*A,.,,
AS A*.R.Z, S A.RA.Z
S A.*RZ, R A.Z*RZ,
S A. R A.Z R A.Z RA.ZZ
.Z S .Z *ARAZ,
S A.Z R AZ.Z
J S A.RA.ZRA.ZRA.ZZRA.ZRAZ.Z
J S AZ.ZRA.ZZ RA.ZRA.ZRA.
J S m1R m?RmCR m&R m'
J*A,.,,S8!B*1,?,C,&,',
/a 8!Batoria representa al operador 4: que opera en los t(rminos $ nmeros si+uientes son
los minit(rminos de la #uncin.
/as letras entre par(ntesis que si+uen a J #orman una lista de las variables en el orden tomado
cuando el minit(rmino se convierte en un t(rmino A)I.
P-o&!c$o &e los maHi$G-mi"os.
5ara eEpresar una #uncin booleana como un producto de maEit(rminos, primero debe
llevarse a una #orma de t(rminos 4:. 1sto es posible al uso de la le$ distributivaA esto es si
ER$z S *ER$, *ERz,A para cualquier variable perdida E en cada t(rmino se opera a 4: con EEZ.
E.em*lo<
J S *EZR$, *ERz, *$Rz,
*EZR$, S EZR$RzzZ
S *EZR$Rz, *EZR$Rz,
*ERz, S ERzR$$Z
S *ER$Rz, *ER$ZRz,
*$Rz, S $RzREEZ
S *ER$Rz, *EZR$Rz,
J S *EZR$Rz, *EZR$RzZ, *ER$Rz, *ER$ZRz, *ER$Rz, *EZR$Rz,
J S *EZR$Rz, *EZR$RzZ, *ER$Rz, *ER$ZRz,
J S *ER$Rz, *ER$ZRz, *EZR$Rz, *EZR$RzZ,
B0 B2 B? BC
J*E,$,z, S 5>*0,2,?,C,
1l operador 5> denota la operacin A)I de maEit(rminosA $ los nmeros son los maEit(rminos
de la #uncin.

Co";e-si7" e"$-e %o-mas ca"7"icas.
1l complemento de una #uncin eEpresada como suma de minit(rminos es i+ual a la
suma de los minit(rminos perdidos de la #uncin ori+inal.
E.em*lo<

J*A,.,, S 8!B*1,?,C,&,',
JZ*A,.,, S 8!B*0,2,7, S m0Rm2Rm7
8i obtenemos el complemento de JZ porque el teorema de IZBor+an se obtiene J en una #orma
di#erente.

*JZ,Z S *m0Rm2Rm7,Z S m0Z.m2Z.m7Z S B0 . B2 . B7 S 5>*0,2,7,
S *ER$Rz, . *ER$ZRz, . *ER$ZRzZ,
J S AZIR.IR.ZI
AZI S AZI*.R.Z,
S AZ.IRAZ.ZI
S AZ.I*RZ, S AZ.IRAZ.ZI
S AZ.ZI*RZ, S AZ.ZIRAZ.ZZI
.I S .I*ARAZ,
S A.IRAZ.I
S A.I*RZ, S A.IRA.ZI
S AZ.I*RZ, S AZ.IRAZ.ZI
.ZI S .ZI*ARAZ,
S A.ZIRAZ.ZI
S A.ZI*RZ, S A.ZIRA.ZZI
S AZ.ZI*RZ, S AZ.ZIRAZ.ZZI
J S AZ.IRAZ.ZIRAZ.ZIRAZ.ZZIRA.IRA.ZIRA.ZIRA.ZZI
"r&uitectura de computadoras
"2?UIT1'TU2" D1 U#" '4-*UT"D42"

2.1 'oncepto de <ardHare.

Podemos denominar al hardware como todo el conjunto fsico de la computadora, lo cual incluye el
CPU (el cual contiene todas las tarjetas de procesamiento, ya sean de sonidos, grficos, mdem,
unidades de discos, procesador, memoria RAM, etc.), el monitor, bocinas, escner, impresora,
mouse, teclado, micrfono, entre otros. El Hardware es la unin de componentes fsicos capaces de
realizar la comunicacin entre el usuario y el software. (De manera anloga, el software o sistema
operativo es el traductor entre la maquina y el hombre, convirtiendo las seales digitales o anlogas
en lenguaje humano).

Todo sistema de cmputo tiene componentes de hardware dedicados a estas funciones:
1. Unidad de entrada
2. Unidad de salida
3. Unidad central de procesamiento.
4. Memoria y dispositivos de almacenamiento.

2.2 Unidad 'entral de *rocesamiento.

Una unidad central de procesamiento (UCP) es donde ocurre el procesamiento de datos. Se le
conoce como el cerebro de la computadora. En las microcomputadoras la CPU se encuentra en un
chip llamado microprocesador. La CPU consiste de dos componentes bsicos: unidad de control y
unidad de aritmtica y lgica.

2.3 Unidad de control
La funcin de la unidad de control es coordinar todas las actividades de la computadora. Todos los
recursos de la computadora son administrados por la unidad de control. Esta unidad contiene las
instrucciones de la CPU para llevar a cabo comandos.

En resumen, la unidad de control es la que supervisa, controla las dems partes de la computadora
y regula el trabajo que debe realizar, o sea, selecciona, verifica e interpreta las instrucciones del
programa y despus verifica que se ejecuten.

2.) Unidad de aritm(tica lica I "LU

En la unidad de aritmtica lgica (ALU) es donde ocurre el procesamiento real de los datos. Se
realizan todos los clculos y todas las comparaciones y genera los resultados. Cuando la unidad de
control encuentra una instruccin de aritmtica o de lgica, le enva el control a la unidad de
aritmtica lgica. La ALU contiene una memoria construida directamente en la CPU que se usa para
guardar los datos que se estn procesando por la instruccin actual.

2.+ Unidad de entrada

Son todos los elementos que permiten la unin del usuario con la unidad de procesamiento central y
la memoria.: Entre estos tenemos.

Teclado@ Dispositivos de entrada que traducen los datos a una forma que la computadora pueda
interpretar, para luego procesarlos y almacenarlos, los hay de forma: Teclado alfanumrico y para
perfoverificacin

-ouse % Jo%sticKs@ Dispositivos que convierten el movimiento fsico en seales elctricas binarias
y que la misma sea repetida en el monitor.
1sc,ner o diitaliLador de im,enes@ Estn concebidos para interpretar caracteres, combinacin
de caracteres, dibujos grficos escritos a mano o en maquinas o impresoras y traducirlos al lenguaje
que la computadora entiende.

Dispositivos pticos@ entre estos tenemos, Lector de marcas o rastreador de marca ptica,
Digitalizador de imgenes (scanner), Cmara digital:

Digitalizador de audio: entre estos tenemos, Micrfonos

2.3 Unidad de salida

Estos dispositivos permiten al usuario ver los resultados de los clculos o de las manipulaciones de
datos de la computadora. El dispositivo de salida ms comn es el monitor, impresora, mdem.

-onitor@ sirve como dispositivo de salida para recibir mensajes del computador.

Impresora@ seguro Una impresora permite obtener una copia dura o fsica de cualquier informacin
que pueda aparecer en pantalla. Hay dos grupos bsicos que son: impresora de mpacto y no
impacto o de pgina.

-dem@ , dispositivo que sirve para enlaza dos ordenadores transformando las seales digitales.

2.5 'oncepto de -emoria

La memoria, es una de las partes mas importantes de las computadoras. Cualquier usuario desea
agregarle mas memoria a su computadora. Para definirla, diremos que es la capacidad de la PC en
retener datos o informacin de manera permanente o temporal. Memoria hay de dos tipos, la
memoria RAM y memoria ROM, a continuacin se explican:

2.; Tipos De -emorias.

-emoria 24- 6del inl(s 2ead 4nl% -emor%$ memoria de slo lectura7.
Es una memoria de slo lectura, de dimensiones ms pequeas que el microprocesador. Si se
levanta la capa protectora de los circuitos integrados, se encuentra informacin sobre el tipo de
memoria ROM, y el tamao mximo de informacin que puede contener. La ROM BOS (Basic
nput/Output System, sistema bsico de entrada/salida) traduce todas las rdenes a cdigo
mquina, para que la computadora pueda entenderlas.

2.M Dispositivos N *erif(ricos
Los perifricos son los dispositivos externos conectados a la computadora que permiten a este
recibir los datos de entrada, permitir la informacin de salida y almacenar los datos. Se pueden
clasificar de tres formas, de entrada, de almacenamiento, que son a la vez de entrada y salida y
finalmente los de salida.

2.1> Dispositivo de almacenamiento
Es todo aparato que se utilice para grabar los datos de la computadora de forma permanente o
temporal. Una unidad de disco, junto con los discos que graba, es un dispositivo de
almacenamiento. A veces se dice que una computadora tiene dispositivos de almacenamiento
primarios (o principales) y secundarios (o auxiliares). Cuando se hace esta distincin, el dispositivo
de almacenamiento primario es la memoria de acceso aleatorio (RAM) de la computadora, un
dispositivo de almacenamiento permanente pero cuyo contenido es temporal. El almacenamiento
secundario incluye los dispositivos de almacenamiento ms permanentes, como unidades de disco y
de cinta.
http://www.gestiopolis.com/recursos4/docs/eco/histocom.htm#HSTORA%20DE%20LA
%20COMPUTACN

Sistemas operativos
S4/TO"21

3.1 'oncepto de SoftHare

El Software es un conjunto de programas, documentos, procedimientos, y rutinas asociadas con la
operacin de un sistema de cmputo. Distinguindose de los componentes fsicos llamados
hardware. Comnmente a los programas de computacin se les llama software; el software asegura
que el programa o sistema cumpla por completo con sus objetivos, opera con eficiencia, esta
adecuadamente documentado, y suficientemente sencillo de operar. Es simplemente el conjunto de
instrucciones individuales que se le proporciona al microprocesador para que pueda procesar los
datos y generar los resultados esperados. El hardware por si solo no puede hacer nada, pues es
necesario que exista el software, que es el conjunto de instrucciones que hacen funcionar al
hardware.
3.2 Sistema 4perativo

Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware
de un computador y su propsito es proporcionar un entorno en el cual el usuario pueda ejecutar
programas. El objetivo principal de un Sistema Operativo es, entonces, lograr que el Sistema de
computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador
se emplee de manera eficiente.
3.3 Tipos de Sistemas 4perativos.

Actualmente los sistemas operativos se clasifican en tres clasificaciones: sistemas operativos por su
estructura (visin interna), sistemas operativos por los servicios que ofrecen y sistemas operativos
por la forma en que ofrecen sus servicios (visin externa).

Sistemas 4perativos por Servicios68isin 1Bterna7.
Esta clasificacin es la ms comnmente usada y conocida desde el punto de vista del usuario final.

*or #Pmero de Usuarios@
Sistema 4perativo -onousuario.
Los sistemas operativos monousuarios son aqullos que soportan a un usuario a la vez, sin importar
el nmero de procesadores que tenga la computadora o el nmero de procesos o tareas que el
usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales tpicamente
se han clasificado en este rengln.
En otras palabras los sistemas monousuarios son aquellos que nada ms puede atender a un solo
usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicacin que
se este ejecutando.

Sistema 4perativo -ultiusuario.
Los sistemas operativos multiusuarios son capaces de dar servicio a ms de un usuario a la vez, ya
sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas
en una red de comunicaciones. No importa el nmero de procesadores en la mquina ni el nmero
de procesos que cada usuario puede ejecutar simultneamente.
En esta categora se encuentran todos los sistemas que cumplen simultneamente las necesidades
de dos o ms usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean
especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing).

*or el #Pmero de Tareas@
Sistema 4perativo -onotarea.
Los sistemas monotarea son aquellos que slo permiten una tarea a la vez por usuario. Puede darse
el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo
tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.
Los sistemas operativos monotareas son ms primitivos y, solo pueden manejar un proceso en cada
momento o que solo puede ejecutar las tareas de una en una.

Sistema Operativo Multitarea. Un sistema operativo multitarea es aqul que le permite al usuario
estar realizando varias labores al mismo tiempo.
Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una
computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La
conmutacin de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o
ms aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicacin
que se encuentra en primer plano (la que ve el usuario. En la multitarea cooperativa, la que se utiliza
en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado
durante los tiempos muertos de la tarea que se encuentra en primer plano, y siempre que esta
aplicacin lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea
recibe la atencin del microprocesador durante una fraccin de segundo.
Un sistema operativo multitarea puede estar editando el cdigo fuente de un programa durante su
depuracin mientras compila otro programa, a la vez que est recibiendo correo electrnico en un
proceso en background. Es comn encontrar en ellos interfaces grficas orientadas al uso de mens
y el ratn, lo cual permite un rpido intercambio entre las tareas para el usuario, mejorando su
productividad.
Un sistema operativo multitarea se distingue por su capacidad para soportar la ejecucin
concurrente de dos o ms procesos activos. La multitarea se implementa generalmente
manteniendo el cdigo y los datos de varios procesos simultneamente en memoria y multiplexando
el procesador y los dispositivos de E/S entre ellos.
La multitarea suele asociarse con soporte hardware y software para proteccin de memoria con el
fin de evitar que procesos corrompan el espacio de direcciones y el comportamiento de otros
procesos residentes.

*or el #Pmero de *rocesadores@
Sistema 4perativo de Uniproceso.
Un sistema operativo uniproceso es aqul que es capaz de manejar solamente un procesador de la
computadora, de manera que si la computadora tuviese ms de uno le sera intil. El ejemplo ms
tpico de este tipo de sistemas es el DOS y MacOS.

Sistema Operativo de Multiproceso.Un sistema operativo multiproceso se refiere al nmero de
procesadores del sistema, que es ms de uno y ste es capaz de usarlos todos para distribuir su
carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simtrica o
asimtricamente.
Asimtrica.
Cuando se trabaja de manera asimtrica, el sistema operativo selecciona a uno de los procesadores
el cual jugar el papel de procesador maestro y servir como pivote para distribuir la carga a los
dems procesadores, que reciben el nombre de esclavos.

Simtrica. Cuando se trabaja de manera simtrica, los procesos o partes de ellos (threads) son
enviados indistintamente a cual quiera de los procesadores disponibles, teniendo, tericamente, una
mejor distribucin y equilibrio en la carga de trabajo bajo este esquema.
Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede
consistir de un rea de memoria, un conjunto de registros con valores especficos, la pila y otros
valores de contexto.
Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para
aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en
sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el
compilador detecte secciones de cdigo paralelizable, los cuales son ejecutados al mismo tiempo en
procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar
por s mismo esta facilidad, pero esta ltima opcin las ms de las veces es costosa en horas
hombre y muy tediosa, obligando al programador a ocupar tanto o ms tiempo a la paralelizacin
que a elaborar el algoritmo inicial.

). Sistemas 4perativos por su 1structura 68isin Interna7.

Segn, se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los
cuales son:
Requisitos de usuario: Sistema fcil de usar y de aprender, seguro, rpido y adecuado al uso al que
se le quiere destinar.
Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operacin,
restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.
A continuacin se describen las distintas estructuras que presentan los actuales sistemas operativos
para satisfacer las necesidades que de ellos se quieren obtener.

Estructura Monoltica.Es la estructura de los primeros sistemas operativos constituidos
fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal
forma que cada una puede llamar a cualquier otra. Las caractersticas fundamentales de este tipo de
estructura son:
Construccin del programa final a base de mdulos compilados separadamente que se
unen a travs del ligador.
Buena definicin de parmetros de enlace entre las distintas rutinas existentes, que puede
provocar mucho acoplamiento.
Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos
de los recursos de la computadora, como memoria, disco, etc.
3.) *roramas De "plicaciones

Los programas de aplicacin son un conjunto de programas que indican a la computadora cmo
analizar tareas especficas para el usuario. La aplicacin es el objeto para el cual se usa la
computadora. La computadora obtiene instrucciones a partir del programa de aplicacin. El
programa de aplicacin lo escribe un programador de aplicacin, y trabaja bajo la direccin del
sistema operativo de la computadora.

3.+ Tipos De *roramas De "plicaciones
Los programas de aplicacin se dividen en paquetes de software (edicion de texto, almacenamiento
y gestion de datos, realizacin de calculos generar informes, comunicacin con otros ordenadores,
enviar y reciver correo etc.) y aplicaciones especficas (facturacin, contabilidad, nominas etc.)

Ejemplos de programas de aplicacin:
*rocesador de palabras
Simplifica la tarea de escribir, editar e imprimir un documento. Tambin mejora la produccin
personal permitiendo la duplicacin de un documento sin rescribirlo, o recuperar el documento sin
tener que ir sobre una tonelada de papeles para encontrarlo. El usuario puede ver la carta en la
pantalla, leerla, corregirla y cambiarla antes de mandarla a imprimir. Puede guardar la carta en un
disco y recuperarla ms tarde para hacerle leves cambios o usarla de nuevo en el futuro. Tambin
puede cotejar y corregir la gramtica y sugerir sinnimos. Ahorra mucho tiempo. Ejemplos: Word,
Wordperfect, Word Star.

<o!a electrnica

Es una hoja de clculo que permite la manipulacin de datos arreglados en filas y columnas. Una
celda puede contener texto, un nmero o una frmula que establece una relacin con otras celdas.
Cada vez que se cambia el contenido de una celda, la hoja electrnica libera de lo tedioso de hacer
reclculos a mano, ahorrando una gran cantidad de tiempo. Tipos de aplicaciones: inventario,
registro de datos, balanceo de chequera, planificacin de producto, requerimientos de materiales y
labores, produccin del informe del tiempo, presupuesto, adquisicin y bsqueda de bienes races,
anlisis de bienes races y mercadeo. Los paquetes complejos de hojas electrnicas pueden hacer
comparaciones de lgica como "if-then-else" o pruebas de "less than/greater than". Estas
operaciones se utilizan en tareas como el clculo de nminas. Ejemplos: Excel, Lotus 123.

3.3 Lenua!es de *roramacin

Los computadores interpretan (comprenden) un lenguaje muy simple llamado lenguaje de mquina.
Cada instruccin del lenguaje de mquina es elemental. Un programa escrito en lenguaje de
mquina necesita muchas instruccciones para hacer cosas simples (es decir, es difcil de escribir) y
slo funciona en un computador del mismo tipo.

Los lenguajes de programacin de alto nivel constituyen un paso evolutivo y pretenden brindar cierto
nivel de abstraccin e independencia del computador.

3.5 *roramas
Los programas de computadora son simples largas listas de instrucciones para la computadora a
ejecutar, tal vez con tablas de datos. Muchos programas de computadora contienen millones de
instrucciones, y muchas de esas instrucciones son ejecutadas repetidamente. Una tpica PC
moderna (en el aos 2003) puede ejecutar alrededor de 2-3 billones de instrucciones por segundo.
Las computadoras no hacen beneficio de su extraordinaria capacidades por la habilidad de ejecutar
complejas instrucciones. Preferiblemente, estas hacen millones de simples instrucciones ordenadas
por gente inteligente, "programadores" [programmers]. Buenos programadores desarrollan juegos de
instrucciones para hacer tareas comunes (por instancia, dibujar un punto en pantalla) y entonces
haces esos juegos de instrucciones disponibles a otros programadores.
http://www.gestiopolis.com/recursos4/docs/eco/histocom.htm#HSTORA%20DE%20LA
%20COMPUTACN

Definicin % concepto.
Un sistema operativo es el programa que oculta la verdad del hardware al programador y
presenta una vista simple y agradable de los archivos nominados que pueden leerse y
escribirse. Es sistema operativo resguarda al programador del hardware del disco y presenta
una interfaz simple orientada al archivo, tambin disimula mucho del trabajo concerniente a
interrupciones, relojes o cronmetros, manejo de memoria y otras caractersticas de bajo nivel.
Desde su creacin, las computadoras digitales han utilizado un sistema de codificacin de
instrucciones en sistema de numeracin binaria, es decir con los 0S. Esto se debe a que los
circuitos integrados funcionan con este principio, es decir, hay corriente o no hay corriente.
En el origen de la historia de las computadoras ( hace unos cuarenta aos), los
sistemas operativos no existan y la introduccin de un programa para ser ejecutado se
converta en un increble esfuerzo que solo poda ser llevado a cabo por muy pocos expertos.
Esto hacia que las computadoras fueran muy complicadas de usar y que se requiriera tener
altos conocimientos tcnicos para operarlas. Era tan complejo su manejo, que en algunos
casos el resultado llegaba a ser desastroso.
Adems, el tiempo requerido para introducir un programa en aquellas grandes
mquinas de lento proceso superaba por mucho el de ejecucin y resultaba poco provechosa la
utilizacin de computadoras para resolucin de problemas prcticos.
Se buscaron medios ms elaborados para manipular la computadora, pero que a su
vez simplificaran la labor del operador o el usuario. Es entonces cuando surge la idea de crear
un medio para que el usuario pueda operar la computadora con un entorno, lenguaje y
operacin bien definido para hacer un verdadero uso y explotacin de esta. Surgen los
sistemas operativos.
Un sistema operativo es el encargado de brindar al usuario una forma amigable y
sencilla de operar, interpretar, codificar y emitir las ordenes al procesador central para que este
realice las tareas necesarias y especificas para completar una orden.
El sistema operativo, es el instrumento indispensable para hacer de la computadora un
objeto til. Bajo este nombre se agrupan todos aquellos programas que permiten a los usuarios
la utilizacin de este enredo de cables y circuitos, que de otra manera serian difciles de
controlar. Un sistema operativo se define como un conjunto de procedimientos manuales y
automticos, que permiten a un grupo de usuarios compartir una instalacin de computadora
eficazmente.
Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definicin
exacta, es decir una que sea estndar; a continuacin se presentan algunas:
1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o
firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de
cmputo"; los sistemas operativos ponen dicha capacidad de cmputo al alcance de los
usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento.
2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso
que administran es el hardware del computador ;adems de los procesadores, los medios de
almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicacin y los
datos.
3.- Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el
hardware del computador y su propsito es proporcionar el entorno en el cual el usuario pueda
ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el
sistema de computacin se use de manera cmoda, y el objetivo secundario es que el
hardware del computador se emplee de manera eficiente. 4.- Un Sistema Operativo es un
conjunto de programas que controla la ejecucin de programas de aplicacin y acta como una
interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo
explota y administra los recursos de hardware de la computadora con el objeto de proporcionar
un conjunto de servicios a los usuarios del sistema.
En resumen, se podra decir que los Sistemas Operativos son un conjunto de programas que
crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son:
o Gestionar el hardware.- Se refiere al hecho de administrar de una forma ms
eficiente los recursos de la mquina.
o Facilitar el trabajo al usuario.-Permite una comunicacin con los dispositivos de
la mquina.
El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y
ejecuta un pedazo de cdigo que se encuentra en el procesador, el cual carga el BOS, y este a
su vez carga el Sistema Operativo que carga todos los programas de aplicacin y software
variado.
/unciones % caracter.sticas.
La funcin del sistema operativo es la de presentar al usuario con el equivalente de una
mquina ampliada o mquina virtual que sea ms fcil de programar que el hardware implcito.
nterpreta los comandos que permiten al usuario comunicarse con el ordenador.
Coordina y manipula el hardware de la computadora, como la memoria, las impresoras,
las unidades de disco, el teclado o el mouse.
Organiza los archivos en diversos dispositivos de almacenamiento, como discos
flexibles, discos duros, discos compactos o cintas magnticas.
Gestiona los errores de hardware y la prdida de datos.
Servir de base para la creacin del software logrando que equipos de marcas distintas
funcionen de manera anloga, salvando las diferencias existentes entre ambos.
Configura el entorno para el uso del software y los perifricos; dependiendo del tipo de
mquina que se emplea, debe establecerse en forma lgica la disposicin y
caractersticas del equipo. Como por ejemplo, una microcomputadora tiene fsicamente
dos unidades de disco, puede simular el uso de otras unidades de disco, que pueden
ser virtuales utilizando parte de la memoria principal para tal fin. En caso de estar
conectado a una red, el sistema operativo se convierte en la plataforma de trabajo de
los usuarios y es este quien controla los elementos o recursos que comparten. De igual
forma, provee de proteccin a la informacin que almacena.
Funciones de los sistemas operativos.
1.- Aceptar todos los trabajos y conservarlos hasta su finalizacin.
2.- nterpretacin de comandos: nterpreta los comandos que permiten al usuario comunicarse
con el ordenador.
3.- Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria,
las impresoras, las unidades de disco, el teclado o el Mouse.
4.- Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de
almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnticas.
5.- Manejo de errores: Gestiona los errores de hardware y la prdida de datos.
6.- Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten
los procesos. Definir el orden. (Quien va primero y quien despus).
7.- Proteccin: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro
usuario.
8.- Multiacceso: Un usuario se puede conectar a otra mquina sin tener que estar cerca de ella.
9.- Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar
determinados recursos.
Caractersticas de los sistemas operativos.
En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas:
Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una
computadora.
Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen
de la manera ms eficiente posible.
Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que
permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin
interferir con el servicio.
Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de
una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es,
asignar a cada proceso una parte del procesador para poder compartir los recursos.
Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe
encargar de comunicar a los dispositivos perifricos, cuando el usuario as lo requiera.
Organizar datos para acceso rpido y seguro.
Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar
con alta facilidad todo lo referente a la instalacin y uso de las redes de computadoras.
Procesamiento por bytes de flujo a travs del bus de datos.
Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el
acceso y manejo de los dispositivos de Entrada/Salida de la computadora.
El software de aplicacin son programas que se utilizan para disear, tal como el procesador de
palabras, lenguajes de programacin, hojas de clculo, etc.
El software de base sirve para interactuar el usuario con la mquina, son un conjunto de
programas que facilitan el ambiente plataforma, y permite el diseo del mismo.
El Software de base est compuesto por :
o Cargadores.
o Compiladores.
o Ensambladores.
o Macros.
1volucin 0istrica.
Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie
de cambios revolucionarios llamados generaciones. En el caso del Hardware, las generaciones
han sido marcadas por grandes avances en los componentes utilizados, pasando de vlvulas
( primera generacin ) a transistores ( segunda generacin ), a circuitos integrados ( tercera
generacin), a circuitos integrados de gran y muy gran escala (cuarta generacin). Cada
generacin Sucesiva de hardware ha ido acompaada de reducciones substanciales en los
costos, tamao, emisin de calor y consumo de energa, y por incrementos notables en
velocidad y capacidad.
:eneracion 'ero 6d(cada de 1M)>7
Los primeros sistemas computacionales no posean sistemas operativos. Los usuarios tenan
completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano.
*rimera :eneracion 6d(cada de 1M+>7
Los sistemas operativos de los aos cincuenta fueron diseados para hacer mas fluida la
transicin entre trabajos. Antes de que los sistemas fueran diseados, se perda un tiempo
considerable entre la terminacin de un trabajo y el inicio del siguiente. Este fue el comienzo de
los sistemas de procesamiento por lotes, donde los trabajos se reunan por grupos o lotes.
Cuando el trabajo estaba en ejecucin, este tenia control total de la maquina. Al terminar cada
trabajo, el control era devuelto al sistema operativo, el cual limpiaba y lea e iniciaba el trabajo
siguiente.
Al inicio de los 50's esto haba mejorado un poco con la introduccin de tarjetas perforadas (las
cuales servan para introducir los programas de lenguajes de mquina), puesto que ya no haba
necesidad de utilizar los tableros enchufables.
Adems el laboratorio de investigacin General Motors implement el primer sistema operativo
para la BM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la
transicin entre tareas se suavizaba para lograr la mxima utilizacin del sistema. Esto se
conoce como sistemas de procesamiento por lotes de un slo flujo, ya que los programas y los
datos eran sometidos en grupos o lotes.
La introduccin del transistor a mediados de los 50's cambi la imagen radicalmente.
Se crearon mquinas suficientemente confiables las cuales se instalaban en lugares
especialmente acondicionados, aunque slo las grandes universidades y las grandes
corporaciones o bien las oficinas del gobierno se podan dar el lujo de tenerlas.
Para poder correr un trabajo (programa), tenan que escribirlo en papel (en Fortran o en
lenguaje ensamblador) y despus se perforara en tarjetas. Enseguida se llevara la pila de
tarjetas al cuarto de introduccin al sistema y la entregara a uno de los operadores. Cuando la
computadora terminara el trabajo, un operador se dirigira a la impresora y desprendera la
salida y la llevara al cuarto de salida, para que la recogiera el programador.
Seunda :eneracion 6a mitad de la d(cada de 1M3>7
La caracterstica de los sistemas operativos fue el desarrollo de los sistemas compartidos con
multiprogramacin, y los principios del multiprocesamiento. En los sistemas de
multiprogramacin, varios programas de usuario se encuentran al mismo tiempo en el
almacenamiento principal, y el procesador se cambia rpidamente de un trabajo a otro. En los
sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema
computacional, con la finalidad de incrementar el poder de procesamiento de la maquina.
La independencia de dispositivos aparece despus. Un usuario que desea escribir datos en
una cinta en sistemas de la primera generacin tenia que hacer referencia especifica a una
unidad de cinta particular. En la segunda generacin, el programa del usuario especificaba tan
solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta
densidad.
Se desarrollo sistemas compartidos, en la que los usuarios podan acoplarse directamente con
el computador a travs de terminales. Surgieron sistemas de tiempo real, en que los
computadores fueron utilizados en el control de procesos industriales. Los sistemas de tiempo
real se caracterizan por proveer una respuesta inmediata.
Tercera :eneracion 6mitad de d(cada 1M3> a mitad d(cada de 1M5>7
Se inicia en 1964, con la introduccin de la familia de computadores Sistema/360 de BM. Los
computadores de esta generacin fueron diseados como sistemas para usos generales . Casi
siempre eran sistemas grandes, voluminosos, con el propsito de serlo todo para toda la gente.
Eran sistemas de modos mltiples, algunos de ellos soportaban simultneamente procesos por
lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y
costosos, nunca antes se haba construido algo similar, y muchos de los esfuerzos de
desarrollo terminaron muy por arriba del presupuesto y mucho despus de lo que el planificador
marcaba como fecha de terminacin.
Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una
complejidad a la cual, en un principio, no estaban acostumbrados los usuarios.
'uarta :eneracion 6mitad de d(cada de 1M5> en adelante7
Los sistemas de la cuarta generacin constituyen el estado actual de la tecnologa. Muchos
diseadores y usuarios se sienten aun incmodos, despus de sus experiencias con los
sistemas operativos de la tercera generacin.
Con la ampliacin del uso de redes de computadores y del procesamiento en lnea los usuarios
obtienen acceso a computadores alejados geogrficamente a travs de varios tipos de
terminales.
Los sistemas de seguridad se ha incrementado mucho ahora que la informacin pasa a travs
de varios tipos vulnerables de lneas de comunicacin. La clave de cifrado esta recibiendo
mucha atencin; han sido necesario codificar los datos personales o de gran intimidad para
que; aun si los datos son expuestos, no sean de utilidad a nadie mas que a los receptores
adecuados.
El porcentaje de la poblacin que tiene acceso a un computador en la dcada de los ochenta
es mucho mayor que nunca y aumenta rpidamente.
El concepto de maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los
detalles fsicos de; sistema de computacin que esta siendo accedida. En su lugar, el usuario
ve un panorama llamado maquina virtual creado por el sistema operativo.
Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una
sociedad orientada hacia la informacin, y el trabajo de las bases de datos es hacer que esta
informacin sea conveniente accesible de una manera controlada para aquellos que tienen
derechos de acceso.
<istoria de los Sistemas 4perativos.
Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las
principales caractersticas de un Sistema Operativo contemporneo, es til considerar como
han ido evolucionando stos con el tiempo.
Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas
Operativos
La primera de estas versiones podra ser esta:
En los 40's, se introducen los programas bit a bit, por medio de interruptores mecnicos y
despus se introdujo el leng. mquina que trabajaba por tarjetas perforadas.
Con las primeras computadoras, desde finales de los aos 40 hasta la mitad de los aos 50, el
programador interactuaba de manera directa con el hardware de la computadora, no exista
realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de
datos y los programas se realizaban a travs del lenguaje mquina (bits) o a travs de
interruptores.
Durante los aos 50's y 60's.- A principio de los 50's, la compaa General's Motors implanto el
primer sistema operativo para su BM 170. Empiezan a surgir las tarjetas perforadas las cuales
permiten que los usuarios (que en ese tiempo eran programadores, diseadores, capturistas,
etc.), se encarguen de modificar sus programas. Establecan o apartaban tiempo, metan o
introducan sus programas, corregan y depuraban sus programas en su tiempo. A esto se le
llamaba trabajo en serie. Todo esto se traduca en prdida de tiempo y tiempos de programas
excesivos.
En los aos 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan
los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos
todos juntos de una sola vez. En esta poca surgen las unidades de cinta y el cargador de
programas, el cual se considera como el primer tipo de Sistema Operativo.
En los 80's, inici el auge de la NTERNET en los Estados Unidos de Amrica. A finales de los
aos 80's comienza el gran auge y evolucin de los Sistemas Operativos. Se descubre el
concepto de multiprogramacin que consiste en tener cargados en memoria a varios trabajos al
mismo tiempo, tema principal de los Sistemas Operativos actuales.
Los 90's y el futuro, entramos a la era de la computacin distribuida y del multiprocesamiento a
travs de mltiples redes de computadoras, aprovechando el ciclo del procesador.
Se tendr una configuracin dinmica con un reconocimiento inmediato de dispositivos y
software que se aada o elimine de las redes a travs de procesos de registro y localizadores.
La conectividad se facilita gracias a estndares y protocolos de sistemas abiertos por
organizaciones como la Org. ntern. de normas, fundacin de software abierto, todo estar mas
controlado por los protocolos de comunicacin OS y por la red de servicios digital SDN.
Se ha desarrollado otra versin, la cual se ha hecho en base a etapas o generaciones:
1a. 1tapa 61M)+G1M++7 @ Bulbos % coneBiones.
Despus de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construccin de
las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la dcada de los 40's,
Howard Aiken (Harvard), John Von Newman (nstituto de Estudios Avanzados, Princeton), J.
Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), as como Conrad Zuse
(Alemania), entre otros lograron construir mquinas de clculo mediante bulbos. Estas
mquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero
eran mucho ms lentas que la computadora casera ms econmica en nuestros das.
Toda la programacin se llevaba a cabo en lenguaje de mquina absoluto y con frecuencia se
utilizaban conexiones para controlar las funciones bsicas de la mquina. Los lenguajes de
programacin eran desconocidos (incluso el lenguaje ensamblador). No se oa de los Sistemas
Operativos el modo usual de operacin consista en que el programador reservaba cierto
perodo en una hoja de reservacin pegada a la pared, iba al cuarto de la mquina, insertaba
su conexin a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o
ms bulbos se quemara durante la ejecucin. La inmensa mayora de los problemas eran
clculos numricos directos, por ejemplo, el clculo de valores para tablas de senos y cosenos.
A principio de la dcada de los 50's la rutina mejoro un poco con la introduccin de las tarjetas
perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar
conexiones, por lo dems el proceso era el mismo.
2a. 1tapa. 61M++G1M3+7 @ Transistores % Sistemas de *rocesamiento por lotes.
La introduccin del transistor a mediados de los aos 50's modific en forma radical el
panorama. Las computadoras se volvieron confiables de forma que podan fabricarse y
venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como
para realizar un trabajo en forma.
Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en
forma por dems rpidas vas para reducir el tiempo invertido. La solucin que, por lo general
se adopt, fue la del sistema de procesamiento por lotes.
3ra 1tapa 61M3+G1M;> 7 @ 'ircuitos interados % multiproramacin.
La 360 de BM fue la primera lnea principal de computadoras que utiliz los circuitos
integrados, lo que proporcion una gran ventaja en el precio y desempeo con respecto a las
mquinas de la segunda generacin, construidas a partir de transistores individuales. Se
trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su
enorme tamao y sus problemas el sistema operativo de la lnea BM 360 y los sistemas
operativos similares de esta generacin producidos por otros fabricantes de computadoras
realmente pudieron satisfacer, en forma razonable a la mayora de sus clientes. Tambin
popularizaron varias tcnicas fundamentales, ausentes de los sistemas operativos de la
segunda generacin, de las cuales la ms importante era la de multiprogramacin.
Otra caracterstica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como
llegara al cuarto de cmputo. As, siempre que concluyera un trabajo el sistema operativo poda
cargar un nuevo trabajo del disco en la particin que quedara desocupada y ejecutarlo.
)ta 1tapa 61M;>G"ctualidad7 @ 'omputadoras personales.
Un interesante desarrollo que comenz a llevarse a cabo a mediados de la dcada de los
ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas
operativos de red y sistemas operativos distribuidos.
En los sistema operativo de red, los usuarios estn conscientes de la existencia de varias
computadoras y pueden conectarse con mquinas remotas y copiar archivos de una mquina a
otra. Cada mquina ejecuta su propio sistema operativo local y tiene su propio usuario.
Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como
un sistema tradicional de un solo procesador, aun cuando est compuesto por varios
procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del
lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe
ser manejado en forma automtica y eficaz por el sistema operativo.
'lasificacin.
Sistema 4perativo -ultitareas.
Es el modo de funcionamiento disponible en algunos sistemas operativos,
mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen
varios tipos de multitareas. La conmutacin de contextos (context Switching) es un tipo
muy simple de multitarea en el que dos o ms aplicaciones se cargan al mismo tiempo,
pero en el que solo se esta procesando la aplicacin que se encuentra en primer plano
(la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el
usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicacin.
En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las
tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de
la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicacin esta
esperando informacin del usuario), y siempre que esta aplicacin lo permita. En los
sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atencin
del microprocesador durante una fraccin de segundo. Para mantener el sistema en
orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado
que el sentido temporal del usuario es mucho ms lento que la velocidad de
procesamiento del ordenador, las operaciones de multitarea en tiempo compartido
parecen ser simultneas.
Sistema 4perativo -onotareas.
Los sistemas operativos monotareas son ms primitivos y es todo lo contrario
al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o
que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora
esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas
instrucciones hasta que se termine la impresin.
Sistema 4perativo -onousuario.
Los sistemas monousuarios son aquellos que nada ms puede atender a un
solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo
de aplicacin que se este ejecutando.
Estos tipos de sistemas son muy simples, porque todos los dispositivos de
entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir,
que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo
usuario. Y estn orientados principalmente por los microcomputadores.
Sistema 4perativo -ultiusuario.
Es todo lo contrario a monousuario; y en esta categora se encuentran todos
los sistemas que cumplen simultneamente las necesidades de dos o ms usuarios,
que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en
redes.
En otras palabras consiste en el fraccionamiento del tiempo (timesharing).
Secuencia por Lotes.
La secuencia por lotes o procesamiento por lotes en microcomputadoras, es la
ejecucin de una lista de comandos del sistema operativo uno tras otro sin intervencin
del usuario. En los ordenadores ms grandes el proceso de recogida de programas y
de conjuntos de datos de los usuarios, la ejecucin de uno o unos pocos cada vez y la
entrega de los recursos a los usuarios. Procesamiento por lotes tambin puede
referirse al proceso de almacenar transacciones durante un cierto lapso antes de su
envo a un archivo maestro, por lo general una operacin separada que se efecta
durante la noche.
Los sistemas operativos por lotes (batch), en los que los programas eran
tratados por grupos (lote) en ves de individualmente. La funcin de estos sistemas
operativos consista en cargar en memoria un programa de la cinta y ejecutarlo. Al final
este, se realizaba el salto a una direccin de memoria desde donde reasuma el control
del sistema operativo que cargaba el siguiente programa y lo ejecutaba. De esta
manera el tiempo entre un trabajo y el otro disminua considerablemente.
Tiempo 2eal.
Un sistema operativo en tiempo real procesa las instrucciones recibidas al
instante, y una vez que han sido procesadas muestra el resultado. Este tipo tiene
relacin con los sistemas operativos monousuarios, ya que existe un solo operador y
no necesita compartir el procesador entre varias solicitudes.
Su caracterstica principal es dar respuestas rpidas; por ejemplo en un caso
de peligro se necesitaran respuestas inmediatas para evitar una catstrofe.
Tiempo 'ompartido.
El tiempo compartido en ordenadores o computadoras consiste en el uso de un
sistema por ms de una persona al mismo tiempo. El tiempo compartido ejecuta
programas separados de forma concurrente, intercambiando porciones de tiempo
asignadas a cada programa (usuario). En este aspecto, es similar a la capacidad de
multitareas que es comn en la mayora de los microordenadores o las
microcomputadoras. Sin embargo el tiempo compartido se asocia generalmente con el
acceso de varios usuarios a computadoras ms grandes y a organizaciones de
servicios, mientras que la multitarea relacionada con las microcomputadoras implica la
realizacin de mltiples tareas por un solo usuario.
CLASI0ICACIN DE LOS SISTEMAS OPERATI'OS
/os sistemas operativos se clasi#ican enK
8istemas operativos por lotes.
8istemas operativos multipro+ramacin o de multitarea.
8istemas operativos multiusuario.
8istemas operativos de tiempo compartido.
8istemas operativos de tiempo real.
8istemas operativos distribuidos.
8istemas operativos de red.
8istemas operativos paralelos.
Sis$emas o*e-a$i;os *o- lo$es.
/os sistemas operativos por lotes requieren que la in#ormacin est( reunida en bloque o
-lote- *el pro+rama, los datos, $ las instrucciones,. /os trabajos son procesados en el
orden de admisin, se+n el modelo de -primero en lle+ar primero en ser atendido-. 1n
estos sistemas la memoria se divide en dos zonas. !na de ellas es ocupada por el
sistema operativo, $ la otra se usa para car+ar pro+ramas transitorios para su ejecucin.
uando termina la ejecucin de un pro+rama se car+a un nuevo pro+rama en la misma
zona de memoria.
0lgunos ejemplos de -istemas Fperati(os por lotes e=itosos son el
-CF"E, del AC%%33, el cual est orientado a procesamiento cientfico
pesado, el EGEC // para el @?/+0C 223:, orientado a procesamiento
acadmico!
0lgunas otras caractersticas con que cuentan los -istemas
Fperati(os por lotes son4
Hequiere que el programa, datos rdenes al sistema
sean remitidos todos juntos en forma de lote!
"ermiten poca o ninguna interaccin usuarioIprograma en
ejecucin!
Maor potencial de utilizacin de recursos que
procesamiento serial simple en sistemas multiusuarios!
?o con(eniente para desarrollo de programas por bajo
tiempo de retorno depuracin fuera de lnea!
Con(eniente para programas de largos tiempos de
ejecucin ;Ej!, anlisis estadsticos, nminas de personal,
etc!<!
-e encuentra en muchos computadores personales
combinados con procesamiento serial!
"lanificacin del procesador sencilla, tpicamente
procesados en orden de llegada!
"lanificacin de memoria sencilla, generalmente se di(ide
en dos4 parte residente del -!F! programas transitorios!
?o requieren gestin crtica de dispositi(os en el tiempo!
-uelen proporcionar gestin sencilla de manejo de
archi(os4 se requiere poca proteccin ning1n control de
concurrencia para el acceso!
0i3!-a. T-aba.os m4s com!"es !e -eali(a el Sis$ema O*e-a$i;o *o- lo$es.
Sis$emas o*e-a$i;os m!l$i*-o3-amaci7" o &e m!l$i$a-eas.
/os sistemas de multipro+ramacin son capaces de soportar dos o ms procesos
concurrentes mltiples, permiten que residan al mismo tiempo en la memoria primaria
las instrucciones $ los datos procedentes de dos o ms procesos. 1stos sistemas implican
la operacin de multiproceso, para el manejo de la in#ormacin. 8e caracterizan
principalmente por un +ran nmero de pro+ramas activos simultneamente que
compiten por los recursos del sistema, como el procesador, la memoria, $ los
-dispositivos de 1N8-. 1stos sistemas monitorean el estado de todos los pro+ramas
activos $ recursos del sistema.
-istemas Fperati(os como @?/G, JindoKs >8, JindoKs >$, JindoKs
?L, M0C7F-, F-I#, soportan la multitarea!
Las caractersticas de un -istema Fperati(o de multiprogramacin o
multitarea son las siguientes4
Mejora producti(idad del sistema utilizacin de
recursos!
Multiple=a recursos entre (arios programas!
*eneralmente soportan m1ltiples usuarios
;multiusuarios<!
"roporcionan facilidades para mantener el entorno de
usuarios indi(iduales!
Hequieren (alidacin de usuario para seguridad
proteccin!
"roporcionan contabilidad del uso de los recursos por
parte de los usuarios!
Multitarea sin soporte multiusuario se encuentra en
algunos computadores personales o en sistemas de
tiempo real!
-istemas multiprocesadores son sistemas multitareas por
definicin a que soportan la ejecucin simultnea de
m1ltiples tareas sobre diferentes procesadores!
En general, los sistemas de multiprogramacin se
caracterizan por tener m1ltiples programas acti(os
compitiendo por los recursos del sistema4 procesador,
memoria, dispositi(os perifricos!
Sis$emas o*e-a$i;os m!l$i!s!a-io.
/os sistemas operativos multiusuario permiten acceder simultneamente a un sistema de
computadoras a trav(s de dos o ms terminales. 1ste tipo de sistema operativo es
#undamental en el manejo de redes de computadoras actualmente.
Sis$emas o*e-a$i;os &e $iem*o com*a-$i&o
/os sistemas operativos de tiempo compartido tratan de proporcionar un reparto
equitativo de los recursos comunes para dar la impresin a los usuarios de que poseen
una computadora independiente. 1n estos sistemas el administrador de memoria
proporciona aislamiento $ proteccin de los pro+ramas, $a que +eneralmente no tienen
necesidad de comunicarse entre ellos. 1l control de 1N8 se encar+a de proporcionar o
retirar la asi+nacin a los dispositivos de #orma que se preserve la inte+ridad del sistema
$ se proporcione servicio a todos los usuarios. 1l administrador de arc"ivos proporciona
proteccin $ control en el acceso de la in#ormacin, dada la posibilidad de concurrencia
$ con#lictos al tratar de acceder a los arc"ivos.
Ejemplos de -istemas Fperati(os de tiempo compartido son Multics,
F-I&%3 AEC723!
Caractersticas de los -istemas Fperati(os de tiempo compartido4
"opulares representantes de sistemas multiprogramados
multiusuario, Ej!4 sistemas de dise.o asistido por
computador, procesamiento de te=to, etc!
Aan la ilusin de que cada usuario tiene una mquina
para s!
Maora utilizan algoritmo de reparto circular!
"rogramas se ejecutan con prioridad rotatoria que se
incrementa con la espera disminue despus de
concedido el ser(icio!
E(itan monopolizacin del sistema asignando tiempos de
procesador ;time slot<!
*estin de memoria proporciona proteccin a programas
residentes!
*estin de archi(o debe proporcionar proteccin control
de acceso debido a que pueden e=istir m1ltiples usuarios
accesando a un mismo archi(o!
Sis$emas o*e-a$i;os &e $iem*o -eal
Los -istemas Fperati(os de tiempo real son aquellos en los cuales no
tiene importancia el usuario, sino los procesos! "or lo general, estn
subutilizados sus recursos con la finalidad de prestar atencin a los
procesos en el momento que lo requieran! -e utilizan en entornos
donde son procesados un gran n1mero de sucesos o e(entos!
Muchos -istemas Fperati(os de tiempo real son construidos para
aplicaciones mu especficas como control de trfico areo, bolsas de
(alores, control de refineras, control de laminadores! Lambin en el
ramo automo(ilstico de la electrnica de consumo, las aplicaciones
de tiempo real estn creciendo mu rpidamente! Ftros campos de
aplicacin de los -istemas Fperati(os de tiempo real son los
siguientes4
Control de trenes!
Lelecomunicaciones!
-istemas de fabricacin integrada!
"roduccin distribucin de energa elctrica!
Control de edificios!
-istemas multimedia!
0lgunos ejemplos de -istemas Fperati(os de tiempo real son4
+=JorMs, -olaris, Lns F- -pectra! Los -istemas Fperati(os de
tiempo real, cuentan con las siguientes caractersticas4
-e dan en entornos en donde deben ser aceptados
procesados gran cantidad de sucesos, la maora
e=ternos al sistema computacional, en bre(e tiempo o
dentro de ciertos plazos!
-e utilizan en control industrial, conmutacin telefnica,
control de (uelo, simulaciones en tiempo real!,
aplicaciones militares, etc!
Fbjeti(o es proporcionar rpidos tiempos de respuesta!
"rocesa rfagas de miles de interrupciones por segundo
sin perder un solo suceso!
"roceso se acti(a tras ocurrencia de suceso, mediante
interrupcin!
"roceso de maor prioridad e=propia recursos!
"or tanto generalmente se utiliza planificacin
e=propiati(a basada en prioridades!
*estin de memoria menos e=igente que tiempo
compartido, usualmente procesos son residentes
permanentes en memoria!
"oblacin de procesos esttica en gran medida!
"oco mo(imiento de programas entre almacenamiento
secundario memoria!
*estin de archi(os se orienta ms a (elocidad de acceso
que a utilizacin eficiente del recurso!
Sis$emas O*e-a$i;os &is$-ib!i&os.
"ermiten distribuir trabajos, tareas o procesos, entre un conjunto de
procesadores! "uede ser que este conjunto de procesadores est en
un equipo o en diferentes, en este caso es transparente para el
usuario! E=isten dos esquemas bsicos de stos! @n sistema
fuertemente acoplado es a es aquel que comparte la memoria un
reloj global, cuos tiempos de acceso son similares para todos los
procesadores! En un sistema dbilmente acoplado los procesadores
no comparten ni memoria ni reloj, a que cada uno cuenta con su
memoria local!
Los sistemas distribuidos deben de ser mu confiables, a que si un
componente del sistema se compone otro componente debe de ser
capaz de reemplazarlo!
Entre los diferentes -istemas Fperati(os distribuidos que e=isten
tenemos los siguientes4 -prite, -olaris7MC, Mach, Chorus, -pring,
0moeba, Laos, etc!
Caractersticas de los -istemas Fperati(os distribuidos4
Coleccin de sistemas autnomos capaces de
comunicacin cooperacin mediante intercone=iones
hardKare softKare!
*obierna operacin de un -!C! proporciona abstraccin
de mquina (irtual a los usuarios!
Fbjeti(o cla(e es la transparencia!
*eneralmente proporcionan medios para la comparticin
global de recursos!
-er(icios a.adidos4 denominacin global, sistemas de
archi(os distribuidos, facilidades para distribucin de
clculos ;a tra(s de comunicacin de procesos
internodos, llamadas a procedimientos remotos, etc!<!
"i#tema# Operati%o# de red.
-on aquellos sistemas que mantienen a dos o ms computadoras
unidas a tra(s de alg1n medio de comunicacin ;fsico o no<, con el
objeti(o primordial de poder compartir los diferentes recursos la
informacin del sistema!
El primer -istema Fperati(o de red estaba enfocado a equipos con un
procesador Motorola %$333, pasando posteriormente a procesadores
/ntel como ?o(ell ?etKare!
Los -istemas Fperati(os de red ms ampliamente usados son4 ?o(ell
?etKare, "ersonal ?etKare, L0? Manager, JindoKs ?L -er(er, @?/G,
L0?tastic!
0i3!-a. Se m!es$-a !" Sis$ema O*e-a$i;o e" -e&.
Sis$emas O*e-a$i;os *a-alelos.
En estos tipos de -istemas Fperati(os se pretende que cuando
e=istan dos o ms procesos que compitan por alg1n recurso se
puedan realizar o ejecutar al mismo tiempo!
En @?/G e=iste tambin la posibilidad de ejecutar programas sin tener
que atenderlos en forma interacti(a, simulando paralelismo ;es decir,
atender de manera concurrente (arios procesos de un mismo
usuario<! 0s, en lugar de esperar a que el proceso termine de
ejecutarse ;como lo hara normalmente<, regresa a atender al usuario
inmediatamente despus de haber creado el proceso!
Ejemplos de estos tipos de -istemas Fperati(os estn4 0lpha, "+M, la
serie 0/G, que es utilizado en los sistemas H-I%333 de /CM!
Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras,
dependiendo del uso o de la aplicacin que se les daba. A continuacin se mostrarn diversos
tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus caractersticas:
Sistemas 4perativos por lotes.
Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna
interaccin entre los usuarios y los programas en ejecucin. Se renen todos los trabajos
comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos como
sucede en el procesamiento en serie. Estos sistemas son de los ms tradicionales y antiguos, y
fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los
programas.
Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecucin muy alto,
porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido
a la secuenciabilidad de la ejecucin de los trabajos.
Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el
cual est orientado a procesamiento cientfico pesado, y el EXEC para el UNVAC 1107,
orientado a procesamiento acadmico.
Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son:
Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en
forma de lote.
Permiten poca o ninguna interaccin usuario/programa en ejecucin.
Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas
multiusuarios.
No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin
fuera de lnea.
Conveniente para programas de largos tiempos de ejecucin (ej, anlisis estadsticos,
nminas de personal, etc.)
Se encuentra en muchos computadores personales combinados con procesamiento
serial.
Planificacin del procesador sencilla, tpicamente procesados en orden de llegada.
Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del
S.O. y programas transitorios.
No requieren gestin crtica de dispositivos en el tiempo.
Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca
proteccin y ningn control de concurrencia para el acceso.
Figura. Trabajos ms comunes que realiza el Sistema Operativo por lotes.
Sistemas 4perativos de tiempo real.
Los Sistemas Operativos de tiempo real son aquelos en los cuales no tiene importancia el
usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la finalidad de
prestar atencin a los procesos en el momento que lo requieran. se utilizan en entornos donde
son procesados un gran nmero de sucesos o eventos.
Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especficas
como control de trfico areo, bolsas de valores, control de refineras, control de laminadores.
Tambin en el ramo automovilstico y de la electrnica de consumo, las aplicaciones de tiempo
real estn creciendo muy rpidamente. Otros campos de aplicacin de los Sistemas Operativos
de tiempo real son los siguientes:
Control de trenes.
Telecomunicaciones.
Sistemas de fabricacin integrada.
Produccin y distribucin de energa elctrica.
Control de edificios.
Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y
Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas:
Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de
sucesos, la mayora externos al sisterma computacional, en breve tiempo o dentro de
ciertos plazos.
Se utlizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones
en tiempo real., aplicaciones militares, etc.
Objetivo es proporcionar rpidos tiempos de respuesta.
Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso.
Proceso se activa tras ocurrencia de suceso, mediante interrupcin.
Proceso de mayor prioridad expropia recursos.
Por tanto generalmente se utliza planificacin expropiativa basada en prioridades.
Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son
residentes permanentes en memoria.
Poblacin de procesos esttica en gran medida.
Poco movimiento de programas entre almacenamiento secundario y memoria.
Gestin de archivos se orienta ms a velocidad de acceso que a utlizacin eficiente
del recurso.
Sistemas 4perativos de multiproramacin 6o Sistemas 4perativos de multitarea7.
Se distinguen por sus habilidades para poder soportar la ejecucin de dos o ms trabajos
activos (que se estn ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad
Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al
mximo su utilizacin.
Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno est
usando el procesador, o un procesador distinto, es decir, involucra mquinas con ms de una
UCP.
Sistemas Operativos como UNX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2,
soportan la multitarea.
Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las
siguientes:
Mejora productividad del sistema y utilizacin de recursos.
Multiplexa recursos entre varios programas.
Generalmente soportan mltiples usuarios (multiusuarios).
Proporcionan facilidades para mantener el entorno de usuarios inndividuales.
Requieren validacin de usuario para seguridad y proteccin.
Proporcionan contabilidad del uso de los recursos por parte de los usuarios.
Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o
en sistemas de tiempo real.
Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan
la ejecucin simultnea de mltiples tareas sobre diferentes procesadores.
En general, los sistemas de multiprogramacin se caracterizan por tener mltiples
programas activos compitiendo por los recursos del sistema: procesador, memoria,
dispositivos perifricos.
Sistemas 4perativos de tiempo compartido.
Permiten la simulacin de que el sistema y sus recursos son todos para cada usuarios. El
usuario hace una peticin a la computadora, esta la procesa tan pronto como le es posible, y la
respuesta aparecer en la terminal del usuario.
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son
continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin de que
tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de
trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y
secundaria.
Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.
Caractersticas de los Sistemas Operativos de tiempo compartido:
Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de
diseo asistido por computador, procesamiento de texto, etc.
Dan la ilusin de que cada usuario tiene una mquina para s.
Mayora utilizan algoritmo de reparto circular.
Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y
disminuye despus de concedido el servicio.
Evitan monopolizacin del sistema asignando tiempos de procesador (time slot).
Gestin de memoria proporciona proteccin a programas residentes.
Gestin de archivo debe proporcionar proteccin y control de acceso debido a que
pueden existir mltiples usuarios accesando un mismo archivos.
Sistemas 4perativos distribuidos.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser
que este conjunto de procesadores est en un equipo o en diferentes, en este caso es
trasparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente
acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso
son similares para todos los procesadores. En un sistema dbilmente acoplado los
procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.
Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema
se compone otro componente debe de ser capaz de reemplazarlo.
Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes:
Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
Caracteristicas de los Sistemas Operativos distribuidos:
Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante
interconexiones hardware y software .
Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los
usuarios.
Objetivo clave es la transparencia.
Generalmente proporcionan medios para la comparticin global de recursos.
Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades
para distribucin de clculos (a travs de comunicacin de procesos internodos,
llamadas a procedimientos remotos, etc.).
Sistemas 4perativos de red.
Son aquellos sistemas que mantienen a dos o ms computadoras unidas atravs de algn
medio de comunicacin (fisico o no), con el objetivo primordial de poder compartir los diferentes
recursos y la informacin del sistema.
El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola
68000, pasando posteriormente a procesadores ntel como Novell Netware.
Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal
Netware, LAN Manager, Windows NT Server, UNX, LANtastic.

Sistemas 4perativos paralelos.
En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos
que compitan por algn recurso se puedan realizar o ejecutar al mismo tiempo.
En UNX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma
interactiva, sinulando paralelismo (es decir, atender de manera concurrente varios procesos de
un mismo usuario). As, en lugar de esperar a que el proceso termine de ejecutarse (como lo
hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el
proceso.
Ejemplos de estos tipos de Sistemas Operativos estn: Alpha, PVM, la serie AX, que es
utilizado en los sistemas RS/6000 de BM.
1structura 6niveles o estratos de diseo7.
nternamente los sistemas operativos estructuralmente de se clasifican segn como se hayan
organizado intrnamente en su diseo, por esto la clasificacin ms comn de los S.O. son:
Sistemas monolticos:
En estos sistemas operativos se escriben como un conjunto de procedimientos, cada uno de
los cuales puede llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea
esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en trminos de
parmetros y resultados, y cada una tiene la libertad de llamar a cualquiera otra, si la ltima
ofrece algn clculo til que la primera necesite.
Para construir el programa objeto real del sistema operativo cuando se usa este mtodo, se
compilan todos los procedimientos individuales a archivos que contienen los procedimientos y
despus se combinan todos en un solo archivo objeto con el enlazador.
En trminos de ocultamiento de informacin, esencialmente no existe ninguno; todo
procedimiento es visible para todos (al contrario de una estructura que contiene mdulos o
paquetes, en los cuales mucha informacin es local a un mdulo y slo pueden llamar puntos
de registro designados oficialmente del exterior del mdulo)
Esta organizacin sugiere una estructura bsica del sistema operativo:
1.- Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel)
2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema.
3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio
Sistemas en estratos:
Estos sistemas operativos se organizan como una jerarqua de estratos, cada uno construido
arriba del que est debajo de l. El primer sistema construido en esta forma fuel el sistema THE
que se fabric en Technische Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus
alumnos. El sistema THE era un sistema de lote para una computadora alemana, la
Electrolgica X8, que tena 32K de palabras de 27 bits ( los bits eran costosos en aquellos das)
El sistema tena 6 estratos, estos se muestran en la siguiente tabla:
5 Operador de THE
4 Programas del usuario
3 Administracin de Entrada/Salida
2 Comunicacin entre el operador y el proceso
1 Administracin de la memoria y el tambor magntico
0 Distribucin del procesador y multiprogramacin
- El estrato 0 trabajaba con la distribucin del procesador, cambiando entre procesos cuando
ocurran interrupciones o los relojes expiraban. Sobre el estrato 0, el sistema constaba de
procesos secuenciales, cada uno de los cuales poda programarse sin tener que preocuparse
por el hecho de que mltiples procesos estuvieran corriendo en un solo procesador. En otras
palabras, el estarto 0 ofreca la multiprogramacin bsica de la CPU.
El estrato 1 realizaba el manejo de memoria. Este distribua espacio para procesos contenidos
en la memoria central y en un tambor de 512K palabras que se usaba para contener partes de
procesos (pginas) para las cuales no haba espacio en la memoria central. Sobre el estrato 1,
los procesos no tena que preocuparse de si estaban en la memoria o en el tambor; el software
del estrato 1 se haca cargo de asegurar que las pginas se trajeran a la memoria siempre que
se necesitaran.
El estrato 2 manejaba la comunicacin entre cada proceso y la consola de operador.
El estrato 3 se haca cargo de manejar los dispositivos de E/S y de separar la informacin en
flujo que entraba y sal de ellos. Sobre el estrato 3 cada proceso poda trabajar con dispositivos
de E/S abstractos con propiedades agradables, en vez de dispositivos reales con muchas
peculiaridades
El estrato 4 era donde se encontraban los programas de los usuarios. No tenan que
preocuparse por el manejo de los procesos, memoria, consola o E/S. El proceso operador del
sistema se localizaba en el estrato 5.
En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas, con el fin
de tener una idea ms extensa de cmo esta estructurado el sistema operativo. Veremos
brevemente algunas estructuras de diseos de sistemas operativos.
1structura modular.
Tambin llamados sistemas monolticos. Este tipo de organizacin es con mucho la mas
comn; bien podra recibir el subtitulo de "el gran embrollo". La estructura consiste en que no
existe estructura alguna. El sistema operativo se escribe como una coleccin de
procedimientos, cada uno de los cuales puede llamar a los dems cada vez que as lo requiera.
Cuando se usa esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en
trminos de parmetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si
este ultimo proporciona cierto clculo til para el primero. Sin embargo incluso en este tipo de
sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que
proporciona el sistema operativo se solicitan colocando los parmetros en lugares bien
definidos, como en los registros o en la pila, para despus ejecutar una instruccin especial de
trampa de nombre "llamada al ncleo" o "llamada al supervisor".
Esta instruccin cambia la mquina del modo usuario al modo ncleo y transfiere el control al
sistema operativo, lo que se muestra en el evento (1) de la figura 1. El sistema operativo
examina entonces los parmetros de la llamada, para determinar cual de ellas se desea
realizar, como se muestra en el evento (2) de la figura 1. A continuacin, el sistema operativo
analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-
esima llamada al sistema. Esta operacin que se muestra en (3) de la figura 1, identifica el
procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control
regresa al programa del usuario.
Figura 1. La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es
atrado hacia el ncleo. (2) el sistema operativo determina el nmero del servicio solicitado. (3)
el sistema operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control
regresa al programa del usuario.
Esta organizacin sugiere una organizacin bsica del sistema operativo:
1.- un programa principal que llama al procedimiento del servicio solicitado.
2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.
En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se
encarga de l. Los procedimientos utilitarios hacen cosas necesarias para varios
procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario.
1structura por microKernel.
Las funciones centrales de un SO son controladas por el ncleo (kernel) mientras que la
interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte ms importante
del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El
kernel, que se mantiene en memoria en todo momento, contiene el cdigo mquina de bajo
nivel para manejar la administracin de hardware para otros programas que necesitan estos
servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de
comandos
Las funciones de bajo nivel del SO y las funciones de interpretacin de comandos estn
separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una
interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft
Windows, el cual toma el lugar del shell, reemplazando la interfaz de lnea de comandos con
una interfaz grfica del usuario. Existen muchos "shells" diferentes en el mercado, ejemplo:
NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versin
5.0 incluy un Shell llamado DOS SHELL.
Estructura por anillos concntricos (capas).
El sistema por "capas" consiste en organizar el sistema operativo como una jerarqua de capas,
cada una construida sobre la inmediata inferior. El primer sistema construido de esta manera
fue el sistema THE (Technische Hogeschool Eindhoven), desarrollado en Holanda por E. W.
Dijkstra (1968) y sus estudiantes.
El sistema tenia 6 capas, como se muestra en la figura 3. La capa 0 trabaja con la asignacin
del procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los
cronmetros. Sobre la capa 0, el sistema consta de procesos secunciales, cada uno de los
cuales se podra programar sin importar que varios procesos estuvieran ejecutndose en el
mismo procesador, la capa 0 proporcionaba la multiprogramacin bsica de la CPU.
La capa 1 realizaba la administracin de la memoria. Asignaba el espacio de memoria principal
para los procesos y un recipiente de palabras de 512K se utilizaba para almacenar partes de
los procesos (pginas) para las que no exista lugar en la memoria principal. Por encima de la
capa 1, los procesos no deban preocuparse si estaban en la memoria o en el recipiente; el
software de la capa 1 se encargaba de garantizar que las pginas llegaran a la memoria
cuando fueran necesarias.
La capa 2 se encargaba de la comunicacin entre cada proceso y la consola del operador. Por
encima de esta capa, cada proceso tiene su propia consola de operador.
La capa 3 controla los dispositivos de E/S y guarda en almacenes (buffers) los flujos de
informacin entre ellos. Por encima de la capa 3, cada proceso puede trabajar con dispositivos
exactos de E/S con propiedades adecuadas, en vez de dispositivos reales con muchas
peculiaridades. La capa 4 es donde estaban los programas del usuario, estos no tenan que
preocuparse por el proceso, memoria, consola o control de E/S. el proceso operador del
sistema se localizaba en la capa 5
Una generalizacin mas avanzada del concepto de capas se presento en el sistema MULTCS.
En lugar de capas, MULTCS estaba organizado como una serie de anillos concntricos, siendo
los anillos interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba
llamar a un procedimiento de un anillo interior, debi hacer el equivalente a una llamada al
sistema
Mientras que el esquema de capas de THE era en realidad un apoyo al diseo, debido a que
todas las partes del sistema estaban ligadas entre si en un solo programa objeto, en MULTCS,
el mecanismo de anillos estaba mas presente durante el tiempo de ejecucin y era reforzado
por el hardware. La ventaja del mecanismo de anillos es su facilidad de extensin para
estructurar subsistemas del usuario.
5 El operador
4 Programas del usuario
3 Control de entrada/salida
2 Comunicacin operador-proceso
1 Administracin de la memoria y del disco
0 Asignacin del procesador y multiprogramacin
Figura 3. Estructura del sistema operativo THE.
Estructura cliente servidor
Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el
cdigo a capas superiores y eliminar la mayor parte posible del sistema operativo para
mantener un ncleo mnimo. El punto de vista usual es el de implantar la mayora de las
funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la
lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente)
enva la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta.
En este modelo, que se muestra en la figura 4, lo nico que hace el ncleo es controlar la
comunicacin entre los clientes y los servidores. Al separar el sistema operativo en partes, cada
una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos,
servicio a terminales o servicio a la memoria, cada parte es pequea y controlable. Adems
como todos los servidores se ejecutan como procesos en modo usuario y no en modo ncleo,
no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de
archivos, ste puede fallar, pero esto no afectar en general a toda la mquina.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptacin para su uso en
los sistemas distribuidos
Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el
mensaje se maneja en forma local, en su mquina, o si se enva por medio de una red a un
servidor en una mquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos
casos: se envi una solicitud y se recibi una respuesta.
Sistemas 4perativos por su 1structura 68isin Interna7.
Segn, se deben observar dos tipos de requisitos cuando se construye un sistema operativo,
los cuales son:
Requisitos de usuario: Sistema fcil de usar y de aprender, seguro, rpido y adecuado al uso al
que se le quiere destinar.
Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de
operacin, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.
A continuacin se describen las distintas estructuras que presentan los actuales sistemas
operativos para satisfacer las necesidades que de ellos se quieren obtener.
Estructura Monoltica.
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo
programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede
llamar a cualquier otra. Las caractersticas fundamentales de este tipo de estructura son:
Construccin del programa final a base de mdulos compilados separadamente que se
unen a travs del ligador.
Buena definicin de parmetros de enlace entre las distintas rutinas existentes, que
puede provocar mucho acoplamiento.
Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes
aspectos de los recursos de la computadora, como memoria, disco, etc.
Generalmente estn hechos a medida, por lo que son eficientes y rpidos en su ejecucin y
gestin, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo
o tipos de aplicaciones.
1structura Jer,r&uica.
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los
sistemas, se hizo necesaria una mayor organizacin del software, del sistema operativo, donde
una parte del sistema contena subpartes y esto organizado en forma de niveles.
Se dividi el sistema operativo en pequeas partes, de tal forma que cada una de ellas
estuviera perfectamente definida y con un claro interface con el resto de elementos.
Se constituy una estructura jerrquica o de niveles en los sistemas operativos, el primero de
los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se
utiliz con fines didcticos. Se puede pensar tambin en estos sistemas como si fueran
`multicapa'. Multics y Unix caen en esa categora.
En la estructura anterior se basan prcticamente la mayora de los sistemas operativos
actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concntricos o
"rings".
En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap),
por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas ms
internas del sistema operativo o ncleo del sistema estarn ms protegidas de accesos
indeseados desde las capas ms externas. Las capas ms internas sern, por tanto, ms
privilegiadas que las externas.
-,&uina 8irtual.
Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso,
mostrando una mquina que parece idntica a la mquina real subyacente. Estos sistemas
operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la
multiprogramacin y la mquina extendida. El objetivo de los sistemas operativos de mquina
virtual es el de integrar distintos sistemas operativos dando la sensacin de ser varias
mquinas diferentes.
El ncleo de estos sistemas operativos se denomina monitor virtual y tiene como misin llevar a
cabo la multiprogramacin, presentando a los niveles superiores tantas mquinas virtuales
como se soliciten. Estas mquinas virtuales no son mquinas extendidas, sino una rplica de la
mquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo
diferente, que ser el que ofrezca la mquina extendida al usuario
'lienteGServidor6-icroKernel7.
El tipo ms reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser
ejecutado en la mayora de las computadoras, ya sean grandes o pequeas.
Este sistema sirve para toda clase de aplicaciones por tanto, es de propsito general y cumple
con las mismas actividades que los sistemas operativos convencionales.
El ncleo tiene como misin establecer la comunicacin entre los clientes y los servidores. Los
procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicacin
normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar
una operacin de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente
puede actuar como servidor para otro." [Alcal92]. Este paradigma ofrece gran flexibilidad en
cuanto a los servicios posibles en el sistema final, ya que el ncleo provee solamente funciones
muy bsicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer
la mayora que el usuario final o programador puede usar. Estos servidores deben tener
mecanismos de seguridad y proteccin que, a su vez, sern filtrados por el ncleo que controla
el hardware. Actualmente se est trabajando en una versin de UNX que contempla en su
diseo este paradigma.
#Pcleo.
El Ncleo del Sistema Operativo.
Todas las operaciones en las que participan procesos son controladas por la parte del sistema
operativo denominada ncleo (nucleus, core o kernel, en ingls). El ncleo normalmente
representa slo una pequea parte de lo que por lo general se piensa que es todo el sistema
operativo, pero es tal vez el cdigo que ms se utiliza. Por esta razn, el ncleo reside por lo
regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas
en la memoria principal slo cuando se necesitan.
Los ncleos se disean para realizar "el mnimo" posible de procesamiento en cada
interrupcin y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar
mientras el ncleo se habilita para atender otras interrupciones.
El ncleo de un sistema operativo normalmente contiene el cdigo necesario para realizar las
siguientes funciones:
Manejo de interrupciones.
Creacin y destruccin de procesos.
Cambio de estado de los procesos.
Despacho.
Suspensin y reanudacin de procesos.
Sincronizacin de procesos.
Comunicacin entre procesos.
Manipulacin de los bloques de control de procesos.
Apoyo para las actividades de entrada/salida.
Apoyo para asignacin y liberacin de memoria.
Apoyo para el sistema de archivos.
Apoyo para el mecanismo de llamada y retorno de un procedimiento.
Apoyo para ciertas funciones de contabilidad del sistema.
Ncleo o Kernel y niveles de un Sistema Operativo.
El Kernel consiste en la parte principal del cdigo del sistema operativo, el cual se encargan de
controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno
o varios procesos, este se divide en 5 capas:
Nivel 1. Gestin de Memoria: que proporciona las facilidades de bajo nivel para la gestin de
memoria secundaria necesaria para la ejecucin de procesos.
Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los
procesos, creando interrupciones de hardware cuando no son respetadas.
Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S
requeridos por procesos.
Nivel 4. nformacin o Aplicacin o nterprete de Lenguajes: Facilita la comunicacin con los
lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones.
Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de
trabajo e invoca a los procesos correspondientes.
Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y
manipulacin de archivos con nombre, va asignando espacio y acceso de datos en memoria.
El ncleo y los procesos.
El ncleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misin es la de
gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la
instalacin. Toda esta gestin la realiza para atender al
funcionamiento y peticiones de los trabajos que se ejecutan en el sistema.
Los procesos relacionados con la entidad bsica de los sistemas operativos actuales: Los
procesos.
El esquema general del mismo es el siguiente:
Definicin y concepto de proceso.
El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado
del proceso.
Estados por los que pasa un proceso a lo largo de su existencia en la computadora.
Operaciones que se pueden realizar sobre un proceso.
Clasificacin de los procesos segn su forma de ejecucin, de carga, etc.
Interrupciones 6/LI<7.
El GE!"# $E %&!E##'PC%"&E $E P#%(E# &%VE)* +)%,
(8irst )evel ?nterruption <andler)* D4lgoE que gestione las interrupciones
E) C"&!#")A$"# $E %&!E##'PC%"&E $E P#%(E# &%VE)* E) +)%,
En principio, una se;al es una indicacin por la que se altera la secuencia de ejecucin& <a( varios tipos
de interrupcin, que se clasi.can en %uncin de su origen*
F EB9E-:4!* !e producen %uera del procesador
F ?:9E-:4!* !e producen dentro del procesador
!i precisamos m#s*
)as interrupciones EB9E-:4!, las denominamos*
?:9E--U'C?/:E!
)as interrupciones ?:9E-:4!, pueden ser*
EB9-4CG7?0/!* /peraciones que manipulan elementos internos del
procesador
9-4'! o EBCE'C?/:E!
)a misin del 8)?<, est# en el n,cleo, para dar una respuesta a cualquier tipo de se;al que se produce en
el sistema&
4l producirse una se;al, la atrapa el <ard2are de interrupciones, que como m$nimo, salva el contenido
del 'C en el 'CB del proceso& 4dem#s, puede que tambi3n salve el resto del entorno vol#til (tambi3n en
el 'CB)& 9ambi3n direcciona al 8)?<, es decir, pone en el 'C la direccin del 8)?<&
'or lo tanto, podemos decir, que el 8)?< es un elemento so%t2are, es un proceso&
Ya 5emos dic5o que el 8)?< es !o%t2are, pues se trata de un sencillo programa de.nido sobre un #rea de
memoria dedicada a 3l, un #rea de memoria espec$.caH es decir, el 8)?< siempre est# en la misma parte
de la memoria&
El 8)?< 5ace dos cosas*
IJ) 7etermina el origen de la interrupcin
(4verigua qu3 interrupcin se 5a producido)
AJ) 7irecciona la rutina que trata esa interrupcin
!i el 8)?< es un programa, necesita parte del entorno vol#til* 'C, 4CC, &&& 'or ello, debe salvarse el
entorno vol#til del proceso interrumpido& El entorno vol#til del proceso interrumpido, se puede salvar en
dos momentos*
'uede salvarlo el <ard2are de interrupciones
!i no lo salva el <ard2are de interrupciones, ser# lo primero que 5aga el 8)?<, antes incluso de
determinar el origen de la interrupcin
&"!A*
<a( sistemas que de.nen unos registros m#quina para uso e+clusivo por parte del !istema /perativo,
para evitar tener que estar salvando ( restaurando el contenido del entorno vol#til&
+ormas de determinar el ori-en de una interrupcin*
6E7?4:9E !/8914-E*
6ediante una cadena de saltos o ?8s (o con una C4!E)
El 8)?<, tiene un .nico punto de entrada*
Ventaja* F Es mu( sencillo
7esventaja* F -endimiento mu( pobre (Cuantas m#s interrupciones, peor
rendimiento)
'osible solucin*
'oner al principio de la cadena de saltos las comprobaciones de las
interrupciones m#s %recuentes&
6E7?4:9E <4-714-E*
6ediante el uso de un comparador simult#neo, incluido en el <ard2are de interrupciones&
El origen de la interrupcin, no lo va a detectar el 8)?<, lo va a detectar el <ard2are de interrupciones&
El 8)?<, tiene : puntos de entrada, siendo : el n,mero de interrupciones que reconoce el sistema&
Ventaja* F Es casi simult#neo, muc5o m#s r#pido que la secuencia de ?8s
7esventaja* F Coste Elevado* Un comparador para muc5as interrupciones es
mu( caro
C/6B?:4:7/ !/8914-E Y <4-714-E*
El comparador distingue los 9?'/! de interrupcin&
)as interrupciones se agrupan por tipos&
E) <ard2are de interrupciones*
IJ) !alva el contenido del entorno vol#til
AJ) 6ediante un comparador simult#neo, determina el tipo al que pertenece la
interrupcin producida
KJ) !e direcciona al 8)?<, donde una peque;a cadena de saltos determina la
interrupcin en concreto que se 5a producido
!i : es el n,mero de tipos de interrupciones, el 8)?< tiene : puntos de entrada&
Cuando el 8)?< est# atendiendo una interrupcin, pueden producirse otras&
LMu3 5acemos con esas otras interrupciones que se producenN
?n5ibir (ignorar) el resto de interrupciones mientras se atiende una& 'ero esto no puede 5acerse
siempre
)as interrupciones m#s prioritarias deben tratarse nada m#s producirse
'osible solucin*
7e.nir niveles de prioridad entre las interrupciones, de %orma que si
se est# atendiendo una interrupcin, quedar#n pendientes (o
in5ibidas) las de menor o igual prioridad&
'roblema*
!i se produce una interrupcin m#s prioritaria que la que se est# atendiendo, debe dejarse de
atender la que se estaba atendiendo para atender la m#s prioritaria& 'or lo tanto, debe
guardarse el entorno vol#til de la interrupcin que estaba atendiendo& )a interrupcin que pasa
a ser atendida, tambi3n puede tener que dejarse, al llegar otra de ma(or prioridad &&& 'or tanto,
es necesario un lugar a para almacenar entornos vol#tiles, es decir, un 'CB, por cada prioridad
de interrupcin " I&
%nicio del ser/icio de una interrupcin*
)as interrupciones no pueden estar in5ibidas muc5o tiempo, es decir, el tiempo de tratamiento del 8)?<
debe ser corto&
'roblema*
<a( interrupciones cu(o tratamiento lleva muc5o tiempo& En ese caso, el 8)?<, slo inicia su
tratamiento, ( luego, lama a otra rutina ajena o e+terna a 3l, que realiza el resto del
tratamiento&
Una interrupcin puede implicar cambio(s) de estado en alg,n(os) proceso(s)&
9?'/! 7E ?:9E--U'C?/:E!*
?nterrupciones que provocan cambios de estado del proceso en ejecucin
4lgunos e+tracdigos* 'eticiones de EO!
!e;ales de error para suspensin
?nterrupciones de reloj* ?nterrupciones por e+piracin del temporizador
?nterrupciones que provocan cambios de estado en procesos que no est#n en ejecucin
?nterrupciones de EO!
0ttp@990tml.rincondelvao.com9sistemasG
operativosQ2M.0tml
Despac0ador6Sc0eduler7.
Sc'edulling()
"olas de Sc(ed%lli!g: Los procesos que estn en estado de espera se quedan en una lista
llamada lista o cola de ready. Los procesos que hacen uso de E/S se guardan en una cola de
E/S. Hay una cola de E/S por cada dispositivo.
Sc(ed%lles: Componente del sistema operativo responsable de decidir quien hara uso de la
CPU.
"loritmos de Sc0edullin.G
/'/S 6/irst 'ome /irst Served7
Cuando un proceso llega a la cola de ready su PCB es agregado al final de la lista. El uso de la
CPU es otorgado al primero de la lista y una vez que un proceso comienza a ejecutar no deja
de hacerlo hasta que se termina. El tiempo medio de espera para este algoritmo suele ser
bastante alto.
SJ/ 6S0ortest Job /irst7
Una vez que un proceso ejecuta no deja de hacerlo hasta que voluntariamente cambia de
estado (no hay interrupcin por tiempo). Asocia a cada proceso el tiempo de CPU que habr de
usar en su prxima vuelta y va a decidir por el ms pequeo. Si hubiera mas de uno utiliza
FCFS para desempatar. El mayor problema de este algoritmo radica en el clculo de tiempo de
uso de CPU. Este se puede aproximar a:
Tn+1= .tn+(1- )Tn
0< <1 Tiempo calculado en la vuelta n
Prximo uso de CPU Tiempo usado en la vuelta n
El problema de este algoritmo es que el tiempo de espera para los procesos largos puede ser
demasiado largo. Constantemente se estn entregando los procesos mas cortos y el ms
grande nunca ser ejecutado.
El FJS se puede subdividir en 2 tipos de algoritmos: PREEMPTVO o NO PREEMPTVO
Preemptivo significa que si mientras un proceso se esta ejecutando, entra a la cola de ready un
proceso mas corto, el proceso en la cola de ready se apropia de la CPU y comienza su
ejecucin.
*riorit% Sc0edullin
Asocia a cada proceso una prioridad. Luego selecciona el proceso con mas prioridad para
desempatar. En caso de que hubieran dos o mas procesos con la misma prioridad, se usa
FCFS para desempatar. Hay dos tipo de prioridad en los procesos: la pioidad e)te!a
definidas a travs del sistema operativo y la pioidad i!te!a definida por el tiempo de uso de la
CPU, el control de E/S, etc. Este algoritmo tambin se puede ejecutar de dos maneras:
preemptivo y no preemptivo. El algoritmo soluciona el problema del looping pero el problema es
que los procesos con prioridad muy baja tienen chance de no ejecutarse nunca. Para
solucionar este problema de espera infinita el envejecimiento de un proceso eleva su prioridad.
2ound 2obin
Este es un algoritmo basado en FCFS. Trata la cola de ready como una lista circular. ntroduce
el concepto de "Quantum" o "Time slice" : mayor tiempo de cpu que podr hacer uso un
proceso en cada vuelta. Si el valor del Quantum fuese muy grande, el algoritmo funcionara
como un FCFS. Si el Quantum fuera muy chico se produce un overhead por context switch
(significa que el Quantum se setea en un tiempo menor al que demora el context switch). Este
algoritmo es fuertemente dependiente del Quantum o Time Slice. El Quantum debe ser mayor
que el 80% de los tiempos de CPU que hagan uso los procesos, pero no el proceso entero sino
por cada burst.
-?S 6-ultilevel ?ueue Sc0edullin7
Este algoritmo parte la cola de ready en un numero de colas n. Luego existe un criterio para
clasificar en que cola ser colocado un proceso cuando que queda en estado de ready. Cada
cola puede manejar su propio algoritmo de schedulling
-/?S 6-ultilevel /eed BacK ?ueue Sc0edullin7
Define los siguientes parmetros:
Numero de colas
Algoritmo de schedulling usado en cada cola
Mtodo para decidir a que cola entrara un proceso cuando entre a estado de ready
Mtodo para decidir cuando un proceso ser enviado a una cola de menor prioridad.
Mltiple CPU
Para que mas de una CPU no tomen el mismo proceso de la cola de ready se utilizan
mecanismos de sincronizacin. Otro mecanismo seria partir la cola en n colas (n CPUs), pero si
se hiciera esto podra llegar a suceder que los procesos de una CPU fueran todos cortos y los
de otra fueran largos por lo cual habra una CPU que quedara libre y otra ejecutando. Otra
forma sera que una CPU decidiera cual CPU va a ejecutar cual proceso. Esto puede llevar a
que la CPU que esta seleccionando quede un poco mas cargada porque en algn momento
estar ejecutando el algoritmo de seleccin y un proceso asignado a ella.
*rimitivas de comunicacin6I*'7.
0a$ varias primitivas de comunicacin entre procesos *>5 abreviadamente,. /a
ma$ora de ellas requieren al+n tipo de modi#icacin a los pro+ramas para poder
usarlas, pero "a$ una que es #cilmente accesible desde la lnea de comandos usando la
met#ora de #ic"eros estndar en !)>< $ que no requiere modi#icacin al+una a los
pro+ramas. 8e trata de las $!be-5as. 8i+uiendo la met#ora, !)>< nos permite manejar
tuberas como si #ueran #ic"eros normales.
"ttpKNNGGG.es.embnet.or+NIocN1%N1%D166@D02Ndbpipes.es."tml
P-imi$i;as &e com!"icaci7"
Al+unos 9ernel tienen operaciones espec#icas ajustadas a la invocacin remota.
Amoeba, por ejemplo, tiene DoOperation/GetRequest--SendReply.
1s ms e#iciente que el simple 8endD:eceive *$ ms #iable $ le+ible,.
Amoeba $ otros sistemas tienen tambi(n comunicacin con +rupos o radiado *parcial,
*broadcast,.
1s importante para tolerancia de #allos, mejora de rendimiento $ recon#i+urabilidad.
Iiversas variantesK como mensajes, como mltiples :5s, con un slo valor devuelto,
con varios valores devueltos *todos juntos o pidiendo uno a uno,, etc.
1n la prctica, mecanismos de comunicacin de alto nivel tales como :5N:B>,
radiado $ noti#icacin de sucesos *parecido a los manejadores de interrupciones,, se
implementan en middleGare $ no en el 9ernel.
)ormalmente, sobre un nivel T5N>5, por razones de transportabilidad, *aunque resulta
\\caro-,.
)a ?'C o%rece un mecanismo que permite a los procesos cumunicarse ( sincronizar sus acciones& )a
mejor %orma de proveer la comunicacin entre procesos es mediante un sistema de mensajes&
)a %uncin de un sistema de mensaje es permitir a los procesos comunicarse entre s$ sin tener que
recurrir a variables compartidas&
Un recurso ?'C o%rece por los menos A operaciones*
en/iar (mensaje) (send) ( recibir (mesanje) (recei/e)&
!ea ' ( M dos procesos que requieren comunicarse deber#n enviarse mensajesH para ello debe e+istir un
enlace de comunicacin entre ellos& Este enlace puede implementarse de diversas maneras&
)os m3todos para implementar lgicamente un enlace ( las operaciones de en/iar O recibir son*
Comunicacin directa o indirecta
Uso de bu=er autom#tico o e+pl$cito
Env$o por copia o env$o por re%erencia
6ensajes de tama;o .jo o variables
Comunicacin directa*
4qu$ cada proceso que desee comunicarse debe nombrar e+pl$citamente el destinatario o el remitente de
la comunicacin& Este esquema se de.ne las primitivas de la sig& manera*
Enviar(',mensaje)* Enviar un mensaje al proceso '&
-ecibir(M& 6ensaje)* -ecibir un mensaje del proceso M&
Con las siguientes propiedades*
!e establece autom#ticamente el enlace entre cada par de procesos& )o procesos slo necesitan
conocer la identidad de otro para la comunicacin&
!olo 5a( un enlace entre cada par de procesos&
El enlace puede ser unidireccional o bidireccional&
Este esquema e+5ibe un simetr$a de direccionamientoH es decir, los procesos tanto emisor como receptor
necesitan nombrar al otro para comunicarse&
/tra variante de este esquema es utilizar asimetr$a de direccionamiento, con la sig& primitivas*
Enviar(',mensaje)* enviar un mensaje al proceso '&
-ecibir(?d,mensaje) * recibir un mensaje de cualquier proceso con el que 5ubo comunicacin&
4qu$ slo el emisor nombra al destinatarioH el destinatario no 3sta obligado a nombrar al emisor&
Comunicacin indirecta*
4qu$ los mensajes se env$an a, ( se reciben de, buzones (tambi3n llamados 'UE-9/!)& Un buzn puede
considerarse en lo abstracto como un objeto en el que los procesos pueden colocar mensajes ( del cual
se pueden sacar mensajes& Cada buzn tiene una identi.cacin ,nica& 4qu$ dos proceso se pueden
comunicarse slo si comparten un buzn& )as primitivas se de.nen como*
Enviar (4,mensaje)* enviar un mensaje al buzn 4&
-ecibir (4,mensaje)* recibir un mensaje del buzn 4&
Un enlace de comunicacin tiene las sig& propiedades*
!e establece un enlace entre un par de procesos slo si tienen un buzn compartido&
Un enlace puede estar asociado a m#s de dos procesos&
Entre cada par de procesos en comunicacin puede 5aber varios enlaces distintos, cada uno de
los cuales corresponder# a un buzn&
)os enlaces pueden ser unidireccionales o bidereccionales&
<a( varias %ormas de designar el due;o de ( los usuarios de un buzn dado& Una posibilidad es permitir
que un proceso declare variables de tipo buzn& El proceso que declara un buzn es el due;o de ese
buzn& Cualquier otro proceso que conozca el nombre de dic5o buzn podr# usarlo&
'or otro lado, un buzn propiedad del !&/ tiene e+istencia propiaH es independiente ( no est# unido a
ning,n proceso espec$.co& El !&/ establece un mecanismo que permite a un proceso*
Crear un buzn nuevo
Enviar ( recibir mensajes a trav3s del buzn
7estruir un buzn&
"ttpKNN"tml.rincondelva+o.comNsistemasDoperativosP2&."tml
'omunicacin entre procesos 6I*'7
/os procesos en !)>< no comparten memoria, ni siquiera los padres con sus "ijos. 5or
tanto, "a$ que establecer al+n mecanismo en caso de que se quiera comunicar
in#ormacin entre procesos concurrentes. 1l sistema operativo !)>< de#ine tres clases
de "erramientas de comunicacin entre procesos *>5,K los sem#oros, la memoria
compartida $ los mensajes.
1l tipo de llamadas al sistema para estos >5s es anlo+o al de los sem#orosK eEisten
sendas #unciones shmget $ msgget para crear o enlazarse a un se+mento de memoria
compartida o a una cola de mensajes, respectivamente. 5ara alterar propiedades de estos
>5s, inclu$endo su borrado, estn las #unciones shmctl $ msgctl.
5ara enviar o recibir mensajes, se utilizan las #unciones msgsnd $ msgrcv.
1n este apartado se describirn brevemente al+unas llamadas al sistema disponibles para
el uso de las >5s dentro de la pro+ramacin en .
Sem4%o-os
]Ou( es un sem#oro para el !)><[ Jormalmente es mu$ similar a la de#inicin clsica
de Iij9stra, en el sentido de que es una variable entera con operaciones atmicas de
inicializacin, incremento $ decremento con bloqueo.
1l !)>< de#ine tres operaciones #undamentales sobre sem#orosK
Q semget rea o toma el control de un sem#oro
Q semctl 4peraciones de lectura $ escritura del estado del sem#oro. Iestruccin del
sem#oro
Q semop 4peraciones de incremento o decremento con bloqueo
omo el len+uaje no tiene un tipo -sem#oro- prede#inido, si queremos usar
sem#oros tenemos que crearlos mediante una llamada al sistema *semget,. 1sta
llamada permite crear un conjunto de sem#oros, en lu+ar de uno solo. /as operaciones
se realizan atmicamente sobre todo el conjuntoA esto evita interbloqueos $ oscuras
pro+ramaciones en muc"os casos, pero para esta prctica es ms bien un en+orro.
Al crear un sem#oro se nos devuelve un nmero identi#icador, que va a #uncionar casi
i+ual que los identi#icadores de #ic"ero de las llamadas open, creat, etc. /a #uncin
semget nos permite adems -abrir- un sem#oro que $a est( creado. As, por ejemplo, si
un proceso crea un sem#oro, otros procesos pueden sincronizarse con aqu(l *con ciertas
restricciones, disponiendo del sem#oro con semget.
5ara darle un valor inicial a un sem#oro, se utiliza la #uncin semctl.
1l !)>< no o#rece las #unciones clsicas 5 $ = o equivalentes, sino que dispone de una
#uncin +eneral llamada semop que permite realizar una +ama de operaciones que
inclu$en las 5 $ =.
semctl tambi(n se emplea para destruir un sem#oro.
Llama&as al sis$ema *a-a sem4%o-os
1sta es una descripcin resumida de las tres llamadas al sistema para operar con
sem#oros *semget, semctl $ semop,. 5ara una in#ormacin ms completa $
#idedi+na, dirjanse al manual de llamadas al sistema *seccin 2,.
5ara el correcto uso de todas estas #unciones, "an de incluir el #ic"ero cabecera
<sys/sem.h>
/as tres #unciones devuelven D1 si al+o "a ido mal $ en tal caso la variable errno
in#orma del tipo de error.
"pertura o creacin de un sem,foro
8intaEisK
int semget ( key_t (e), int nsems, int semflg )A
semget devuelve el identi#icador del sem#oro correspondiente a la clave 9e$. 5uede ser
un sem#oro $a eEistente, o bien semget crea uno nuevo si se da al+uno de estos casosK
a, 9e$ vale IPC_PRI!"#. 1ste valor especial obli+a a semget a crear un nuevo $ nico
identi#icador, nunca devuelto por ulteriores llamadas a semget "asta que sea liberado
con semctl.
b, 9e$ no est asociada a nin+n sem#oro eEistente, $ se cumple que *sem#l+ ^
IPC_CR#!", es cierto.
A un sem#oro puede accederse siempre que se ten+an los permisos adecuados.
8i se crea un nuevo sem#oro, el parmetro nsems indica cuntos sem#oros contiene el
conjunto creadoA los 6 bits in#eriores de sem#l+ contienen los permisos estilo !)>< de
acceso al sem#oro *usuario, +rupo, otros,.
semflg es una mscara que puede contener IPC_CR#!", que $a "emos visto, o
IPC_#$C%, que "ace crear el sem#oro, pero #racasando si $a eEista.
1jemploK
int semid & semget ( IPC_PRI!"#, ', IPC_CR#!" ( )*++ ),
4peraciones de control sobre sem,foros
8intaEisK
int semctl ( int semid, int semnum, int cmd*** ),
1sta es una #uncin compleja *$ de inter#az poco ele+ante, para realizar ciertas
operaciones con sem#oros. semid es un identi#icador de sem#oro *devuelto
previamente por semget, $ semnum, el sem#oro del conjunto sobre el que quieren
trabajar. cmd es la operacin aplicadaA a continuacin puede aparecer un parmetro
opcional se+n la operacin de#inida por cmd.
/as operaciones que les interesan a ustedes son
-#"!% semctl retorna el valor actual del sem#oro
.#"!% se modi#ica el valor del sem#oro *un cuarto parmetro entero da el nuevo
valor,
IPC_R/I0 destru$e el sem#oro
1jemplosK
valor & semctl (semid,semn1m,-#"!%),
semctl (semid,semn1m,.#"!%,n1evo_valor),
4peraciones sobre sem,foros
8intaEisK
int semop ( int semid, str1ct sem2134 sops, 1nsigned nsops ),
1sta #uncin realiza atmicamente un conjunto de operaciones sobre sem#oros,
pudiendo bloquear al proceso llamador. semid es el identi#icador del sem#oro $ sops es
un apuntador a un vector de operaciones. nsops indica el nmero de operaciones
solicitadas.
/a estructura sem213 tiene estos camposK
struct sembuf {
unsigned short sem_num; // nmero del semforo dentro
del conjunto
short sem_op; // clase de operacin
// segn sea >0, <0 o ==0
short sem_flg; // modificadores de operacin
};
ada elemento de sops es una operacin sobre al+n sem#oro del conjunto de semid.
1l al+oritmo simpli#icado de la operacin realizada es (ste *semval es el valor entero
contenido en el sem#oro donde se aplica la operacin,.
si semop<0
si semval >= |semop|
semval -= |semop|
si semval < |semop|
si (semflag & IPC_NOWAIT)!=0
la funcin semop() retorna
si no
bloquearse hasta que semval >= |semop|
semval -= |semop|
si semop>0
semval += semop
si semop==0
si semval = 0
SKIP
si semval != 0
si (semflag & IPC_NOWAIT)!=0
la funcin semop() retorna
si no
bloquearse hasta que semval == 0
:esumiendo un poco, si el campo semop de una operacin es positivo, se incrementa el
valor del sem#oro. Asimismo, si semop es ne+ativo, se decrementa el valor del
sem#oro si el resultado no es ne+ativo. 1n caso contrario el proceso espera a que se d(
esa circunstancia. 1s decir, semopSS1 produce una operacin = $ semopSSD1, una
operacin 5.
E.em*los &e !so
5ara ilustrar de #orma concreta el empleo de sem#oros bajo !)><, les mostramos unos
ejemplos de subrutinas en que les pueden servir como modelos para elaborar sus
rutinas de sincronizacin en las prcticas de la asi+natura.
1n concreto, son unas #unciones que implementan las operaciones 5 $ = de un sem#oro
clsico *inicializacin, incremento $ decremento con posible bloqueo del proceso
llamador,. As de#inidas, o con pocas modi#icaciones, les pueden servir como la inter#az
para uso de sem#oros en sus aplicaciones.
#include <sys/types.h> /* para key_t */
/* Crea un semforo con un valor inicial, dada una clave */
/* Devuelve el identificador (vlido o no) del semforo */
int crea_sem ( key_t clave, int valor_inicial );
/* Operaciones P y V sobre un semforo */
void sem_P ( int semid );
void sem_V ( int semid );
/***********************************/
/******** IMPLEMENTACIN *******/
/***********************************/
#include <sys/ipc.h>
#include <sys/sem.h>
#define PERMISOS 0644
/* crea_sem: abre o crea un semforo */
int crea_sem ( key_t clave, int valor_inicial )
{
int semid = semget( /* Abre o crea un semforo... */
clave, /* con una cierta clave
*/
1, /* con un solo
elemento */
IPC_CREAT|PERMISOS /* lo crea (IPC_CREAT)
con
unos PERMISOS
*/
);
if ( semid==-1 ) return -1;
/* Da el valor inicial al semforo */
semctl ( semid, 0, SETVAL, valor_inicial );
return semid;
}
/* abre_sem: Abrir un semforo que otro proceso ya cre */
int abre_sem (key_t clave)
{
return semget(clave,1,0);
}
/* Operaciones P y V */
void sem_P ( int semid ) /* Operacin P */
{
struct sembuf op_P [] =
{
0, -1, 0 /* Decrementa semval o bloquea si cero */
};
semop ( semid, op_P, 1 );
}
void sem_V ( int semid ) /* Operacin V */
{
struct sembuf op_V [] =
{
0, 1, 0 /* Incrementa en 1 el semforo */
};
semop ( semid, op_V, 1 );
}
"ttpKNNlabsopa.dis.ulp+c.esNpro+PcN>5.0TB
1.) Descripcin de tipos de proramacin
1.).1*roramacin estructurada
La programacin estructurada es una teoria de programacin que consiste en
construir programas de facil comprension!
La programacin estructurada es especialmente util, cuando se necesitan realizar
correciones o modificaciones despues de haber concluido un programa o aplicacion!
0l haberse utilizado la programacin estructurada, es mucho ms sencillo entender
la codificacion del programa, que se habra hecho en diferentes secciones!
La programacin estructurada se basa en una metodologi de desarrollo de
programas llamda refinamiento sucesi(os4 -e plantea una operacion como un todo
se di(ide en segmentos ms sencillos o de menor complejidad! @na (ez
terminado todos los segmentos del programa, se procede a unificar las aplicaciones
realizadas por el pool de programadores! -i se ha utilizado adecuadamente la
programacin estructurada, esta integracion debe ser sencilla no presentar
problemas al integrar la misma , de presentar algun problema, sera rapidamente
detectable para su correccion!
La representacion grafica de la programacin estructurada se realiza a tra(es de
diagramas de flujo o floK chart, el cual representa el programa con sus entradas,
procesos salidas!
La programacin estructurada propone segregar los procesos en estructuras lo ms
simple posibles, las cuales se conocen como secuencia, seleccion e interaccion! Ellas
estan disponibles en todos los lenguajes modernos de programacin imperati(a en
forma de sentencias! Combinando esquemas sencillos se pueden llegar a construir
sistemas amplios complejos pero de facil entendimiento!
"ttpKNNlen+uajesDdeDpro+ramacion.comNpro+ramacionDestructurada.s"tml
Programacin estructurada
El c-ecie"$e em*leo &e los com*!$a&o-es +a co"&!ci&o a b!sca- !" aba-a$amie"$o
&el &esa--ollo &e so%$>a-eD *a-alelo a la -e&!cci7" &el cos$o &el +a-&>a-e ob$e"i&o
3-acias a los a;a"ces $ec"ol73icos. Los al$os cos$os &el ma"$e"imie"$o &e las
a*licacio"es e" *-o&!cci7" "o-mal $ambiG" +a" !-3i&o la "ecesi&a& &e me.o-a- la
*-o&!c$i;i&a& &el *e-so"al &e *-o3-amaci7".
DE0INICIONES
La *-o3-amaci7" es$-!c$!-a&a Ee" a&ela"$e sim*leme"$e PE FD es !" es$ilo &e
*-o3-amaci7" co" el c!al el *-o3-ama&o- elabo-a *-o3-amasD c!?a es$-!c$!-a es la
m4s cla-a *osibleD me&ia"$e el !so &e $-es es$-!c$!-as b4sicas &e co"$-ol l73icoD a
sabe- <
a. SECUENCIA.
b. SELECCIN.
c. ITERACIN.
U" *-o3-ama es$-!c$!-a&o se com*o"e &e %!"cio"esDse3me"$osD m7&!los ?=o
s!b-!$i"asD ca&a !"a co" !"a sola e"$-a&a ? !"a sola sali&a. Ca&a !"o &e es$os
m7&!los EaI" e" el mismo *-o3-ama com*le$oFD se &e"omi"a programa apropiado
c!a"&oD a&em4s &e es$a- com*!es$o s7lame"$e *o- las $-es es$-!c$!-as b4sicasD
$ie"e s7lo !"a e"$-a&a ? !"a sali&a ? e" e.ec!ci7" "o $ie"e *a-$es *o- las c!ales
"!"ca *asa "i $ie"e ciclos i"%i"i$os.
La PE $ie"e !" $eo-ema es$-!c$!-al o $eo-ema %!"&ame"$alD el c!al a%i-ma !e
c!al!ie- *-o3-amaD "o im*o-$a el $i*o &e $-aba.o !e e.ec!$eD *!e&e se-
elabo-a&o !$ili(a"&o I"icame"$e las $-es es$-!c$!-as b4sicas E sec!e"ciaD selecci7"D
i$e-aci7" F.
DE0INICIN DE LAS ESTRUCTURAS BSICAS DE CONTROL L#ICO
1., SECUENCIA
I"&ica !e las i"s$-!ccio"es &e !" *-o3-ama se e.ec!$a" !"a &es*!Gs &e la o$-aD e"
el mismo o-&e" e" el c!al a*a-ece" e" el *-o3-ama. Se -e*-ese"$a 3-4%icame"$e
como !"a ca.a &es*!Gs &e o$-aD ambas co" !"a sola e"$-a&a ? !"a I"ica sali&a.
Las ca.as A ? B *!e&e" se- &e%i"i&as *a-a e.ec!$a- &es&e !"a sim*le i"s$-!cci7"
+as$a !" m7&!lo o *-o3-ama com*le$oD siem*-e ? c!a"&o !e es$os $ambiG" sea"
*-o3-amas a*-o*ia&os.
/., SELECCIN
TambiG" co"oci&a como la es$-!c$!-a SI,CIERTO,0ALSOD *la"$ea la selecci7"
e"$-e &os al$e-"a$i;as co" base e" el -es!l$a&o &e la e;al!aci7" &e !"a co"&ici7" o
*-e&ica&oJ e!i;ale a la i"s$-!cci7" I0 &e $o&os los le"3!a.es &e *-o3-amaci7" ? se
-e*-ese"$a 3-4%icame"$e &e la si3!ie"$e ma"e-a <
E" el &ia3-ama &e %l!.o a"$e-io-D C es !"a co"&ici7" !e se e;alIaJ A es la acci7"
!e se e.ec!$a c!a"&o la e;al!aci7" &e es$e *-e&ica&o -es!l$a ;e-&a&e-a ? B es la
acci7" e.ec!$a&a c!a"&o i"&ica %also. La es$-!c$!-a $ambiG" $ie"e !"a sola e"$-a&a
? !"a sola sali&aJ ? las %!"cio"es A ? B $ambiG" *!e&e" se- c!al!ie- es$-!c$!-a
b4sica o co".!"$o &e es$-!c$!-as.
1., ITERACIN
TambiG" llama&a la es$-!c$!-a HACER,MIENTRAS,:UED co--es*o"&e a la
e.ec!ci7" -e*e$i&a &e !"a i"s$-!cci7" mie"$-as !e se c!m*le !"a &e$e-mi"a&a
co"&ici7". El &ia3-ama &e %l!.o *a-a es$a es$-!c$!-a es el si3!ie"$e <
A!5 el blo!e A se e.ec!$a -e*e$i&ame"$e mie"$-as !e la co"&ici7" C se c!m*la o
sea cie-$a. TambiG" $ie"e !"a sola e"$-a&a ? !"a sola sali&aJ i3!alme"$e A *!e&e
se- c!al!ie- es$-!c$!-a b4sica o co".!"$o &e es$-!c$!-as.
'ENTA)AS DE LA PRO#RAMACIN ESTRUCTURADA
Co" la PED elabo-a- *-o3-amas &e com*!$a&o- si3!e sie"&o !"a labo- !e
&ema"&a es%!e-(oD c-ea$i;i&a&D +abili&a& ? c!i&a&o. Si" emba-3oD co" es$e "!e;o
es$ilo *o&emos ob$e"e- las si3!ie"$es ;e"$a.as <
1. Los *-o3-amas so" m4s %4ciles &e e"$e"&e-. U" *-o3-ama es$-!c$!-a&o
*!e&e se- le5&o e" sec!e"ciaD &e a--iba +acia aba.oD si" "ecesi&a& &e es$a-
sal$a"&o &e !" si$io a o$-o e" la l73icaD lo c!al es $5*ico &e o$-os es$ilos &e
*-o3-amaci7". La es$-!c$!-a &el *-o3-ama es m4s cla-a *!es$o !e las
i"s$-!ccio"es es$4" m4s li3a&as o -elacio"a&as e"$-e siD *o- lo !e es m4s
%4cil com*-e"&e- lo !e +ace ca&a %!"ci7".
2. Re&!cci7" &el es%!e-(o e" las *-!ebas. El *-o3-ama se *!e&e $e"e- lis$o
*a-a *-o&!cci7" "o-mal e" !" $iem*o me"o- &el $-a&icio"alJ *o- o$-o la&oD
el se3!imie"$o &e las %allas o &e*!-aci7" E&eb!33i"3F se %acili$a &ebi&o a la
l73ica m4s ;isibleD &e $al %o-ma !e los e--o-es se *!e&e" &e$ec$a- ? co--e3i-
m4s %4cilme"$e.
7. Re&!cci7" &e los cos$os &e ma"$e"imie"$o.
?. P-o3-amas m4s se"cillos ? m4s -4*i&os.
C. A!me"$o e" la *-o&!c$i;i&a& &el *-o3-ama&o-.
&. Se %acili$a la !$ili(aci7" &e las o$-as $Gc"icas *a-a el me.o-amie"$o &e la
*-o&!c$i;i&a& e" *-o3-amaci7".
'. Los *-o3-amas !e&a" me.o- &oc!me"$a&os i"$e-"ame"$e.
"ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNpascalNu1P1P?."tml
** PA#A$%G(A E!#'C!'#A$" **
/a 5ro+ramacin estructurada #ija su atencin en el conjunto de acciones que manipulan
el #lujo de datos, mientras que la 445 se #ija en la interrelacin que eEiste entre los
datos $ las acciones a realizar con ellos.
Iescomposicin #uncionalK el sistema es considerado una unidad #uncional que se
dis+re+a en procesos.
1l resultado del proceso de abstraccin para la solucin de un problema macro lo
constitu$en pequeos subpro+ramas.
!n problema macro se subdivide en unidades ms pequeas llamadas procesos, estos se
pueden distribuir entre di#erentes personas que se vean involucradas en la solucin de
un problema $ as e#ectuar los desarrollos de so#tGare de una manera ms rpida $
e#iciente.
/os procesos son la parte central de este modelo pues a partir de estos se manejan las
variantes *datos, que solucionarn el problema.
Feneralmente se manejan muc"os procesos lo cual "ace lar+os cdi+os.
1l mantenimiento de los desarrollos deben e#ectuarse minuciosamente.
/os procedimientos empleados en una aplicacin pueden reutilizarse teniendo cuidado
en el manejo de los datos.
/as operaciones se ajustan a las caractersticas propias de los len+uajes
procedimentales.
/os procesos que se modelan en el desarrollo de un problema plasman las operaciones
necesarias para resolverlo
** E0E(P)" ("$E)" E!#'C!'#A) **
: S * a1 R b1, a2 R b2, a7 R b7 ,
: S * c1 .d1 R c2 .d2 R c7 .d7 ,
: S * e2 E #7 D e7 E #2, e7 E #1 D e1 E #7, e1 E #2 D e2 E #1,
: S * 9+1, 9+2, 9+7 ,
: S :az cuadrada de *"1 E "1, "2 E "2, "7 E "7,
I#T24DU''I4# " L" *24:2"-"'I4#
1ST2U'TU2"D"

/a pro+ramacin estructurada permite la escritura de pro+ramas #ciles de leer $
modi#icar. 1n un pro+rama estructurado el #lujo l+ico se +obierna por las estructuras
de control bsicasK D secuenciales, repetitivas $ selectivas.

T(cnicas de 5ro+ramacinK /as nuevas teoras de la pro+ramacin se centran en las
t(cnicas de pro+ramacin modular $ pro+ramacin estructurada. 1l diseo de un
pro+rama entraa la descomposicin del problema en mdulos *partes independientes, _
programacin modular _, la pro+ramacin de cada mdulo mediante m(todos
estructurados _ programacin estructurada _ $ su unin posterior.

5ro+ramacin BodularK 1l pro+rama se divide en mdulos, cada uno de los cuales
ejecuta una nica actividad o tarea $ se codi#ican independientemente de otros mdulos.
ada uno de estos mdulos se analizan, codi#ican $ ponen a punto por separado. ada
pro+rama contiene un mdulo llamado programa principal que controla todo lo que
sucedeA se trans#iere el control a submdulos de modo que ellos puedan ejecutar sus
#unciones. /os mdulos son independientes en el sentido en el que nin+n mdulo
puede tener acceso directo a cualquier otro mdulo eEcepto el mdulo al que llama $
sus propios submdulos.

Tamao de los mdulosK )o eEiste una re+la #ija que permita de#inir el tamao estndar
del mdulo, una buena aproEimacin es considerar el tamao #sico de una p+ina *70
?0 lneas de instrucciones,.

>mplementacinK 8e implementan utilizando mdulos que toman di#erentes nombres
se+n el len+uaje de pro+ramacinK s!b-!$i"as en .A8> $ J4:T:A),
*-oce&imie"$os en 5ascal, secciones en 4.4/, etc.

5ro+ramacin 1structuradaK 8e re#iere a un conjunto de t(cnicas que "an ido
evolucionando. 1stas t(cnicas aumentan considerablemente la productividad del
pro+rama reduciendo el tiempo requerido para escribir, veri#icar, depurar $ mantener los
pro+ramas. /a pro+ramacin estructurada utiliza un nmero limitado de estructuras de
control que minimizan la complejidad de los problemas $ que reducen los errores. 1sta
incorporaK diseo descendente, recursos abstractos $ estructuras bsicas.

:ecursos abstractosK onsiste en descomponer una determinada accin compleja en
t(rminos de un nmero de acciones ms simples capaz de ejecutarlas.

Iiseo descendenteK onsiste en e#ectuar una relacin entre las sucesivas etapas de
estructuracin. 1s decir, se descompone el problema en etapas o estructuras jerrquicas,
de modo que se puede considerar cada estructura desde dos puntos de vistaK ]lo que
"ace[ $ ]cmo lo "ace[

Teorema de la pro+ramacin estructuradaK 8e "a demostrado que un pro+rama propio
puede ser escrito utilizando solamente tres tipos de estructuras de controlK `
secuenciales, selectivas $ repetitivas. !n pro+rama es propio si posee un solo punto de
entrada $ uno de salida, eEisten caminos desde el inicio "asta el #in que se pueden se+uir
$ que pasan por todas las partes del pro+rama $, todas las instrucciones son ejecutables
sin que "a$an bucles in#initos.

1structura secuencialK 1s aquella en que una accin si+ue a otra en secuencia. /as
tareas se suceden de tal modo que la salida de una es la entrada de la si+uiente.

1structura selectivaK 8e utilizan para tomar decisiones l+icas. 1n (stas se evala una
condicin $ en #uncin del resultado de la misma se realiza una opcin u otra. /as
condiciones se especi#ican usando eEpresiones l+icas. 1n pseudocdi+o (stas palabras
son if, then, else. /as estructuras selectivas pueden serK _ simples, dobles o mltiples.

8electivas simplesK 1jecuta una determinada accin cuando se cumple una determinada
condicin. /a seleccin i# _ t"en *si _ entonces, evala la condicin $ si es verdadera
ejecuta la accin de lo contrario no "ar nada.

8electiva dobleK 5ermite ele+ir entre dos opciones posibles en #uncin del
cumplimiento o no de una determinada condicin. 8i la condicin es verdadera, se
ejecuta la accin 1, si es #alsa, se ejecuta la accin 2. /a selectiva en pseudocdi+o es i#
_ t"en _ else.

8electivas mltiplesK /a estructura de seleccin mltiple *case en pseudocdi+o,
evaluar una eEpresin que podr tomar n valores distintos 1, 2, 7, ?, V..n. 8e+n que
elija uno de estos valores en la condicin, se realizar una de las n acciones.

1structuras repetitivasK /as estructuras que repiten una secuencia de instrucciones un
nmero determinado de veces se llaman bucles e iteracin al "ec"o de repetir la
ejecucin de una secuencia de acciones.

1structura mientrasK /a estructura repetitiva mie"$-as es aquella en que el cuerpo del
bucle se repite mientras se cumple una determinada condicin. uando se ejecuta esta
instruccin, la primera cosa que sucede es que se evala la condicin. 8i la eEpresin es
verdadera, entonces se ejecuta el cuerpo del bucle. 1ste proceso se repite una $ otra vez
mientras la condicin sea verdadera.

1structura repetirK 8e ejecuta "asta que se cumpla una condicin determinada que se
comprueba al #inal del bucle, esto permite que la iteracin se ejecute al menos una vez
antes de la condicin ser evaluada.

1structuras desdeNpara *#or,K 8e utilizan las estructuras for cuando se conocen con
certeza el nmero de veces que desea repetir un bucle, es decir, cuando es un nmero
#ijo de veces.

1structura de decisin anidadasK 1s cuando i# _ t"en _ else contiene otra dentro de s, $
(sta a su vez contiene otra dentro de s. 1stas estructuras contendrn varios si..e"$o"ces
dentro de otros. Iebido a que puede ser con#uso se implementa la identacin para
evitar perder el "ilo de dnde comienza $ dnde termina cada estructura.

/a instruccin +oto *ir a,K 8e utiliza cuando queremos "acer una bi#urcacin
incondicional. 8in embar+o, se recomienda usarla lo menos posible *si bien no usarla
en absoluto,.
"ttpKNNGGG.+eocities.comN$marteNtrabNin#pr+est."tml
1.).2*roramacin orientada a ob!etos
** PA#A$%G(A "#%E&!A$" A "10E!" **
a
Iescomposicin en objetos. 1l sistema es considerado un objeto o conjunto de objetos.
/os cuales son el resultado del proceso de abstraccin para la solucin del problema
macro.
a
Iado que un problema macro puede ser dividido en objetos, estos pueden ser tratados
por di#erentes personas que lue+o lo inte+raran para dar la solucin #inal.

a
/os datos *estados, son la parte central del modelo $ los m(todos que los modi#ican
muestran el comportamiento del objeto.
a
1l mantenimiento de pro+ramas $ aplicaciones +eneralmente son #ciles de realizar.
a
/os objetos que se modelan en el desarrollo de un sistema se ajustan a la realidad que
representa el problema, este puede representare como un objeto o conjunto de objetos
abstractos.
a
1l modelo orientado a objetos no es una t(cnica de pro+ramacin sino un medio de
plasmar el mundo real.
** E0E(P)" ("$E)" "#%E&!A$" A "10E!" **
AdicinK : S A R ., : S*a1 R b1, a2 R b2, a7 R b7,
5roducto 5untoK : S A . ., : S*a1 .b1 R a2 .b2 R a7 .b7,
5roducto ruzK :SAE., : S*a2Q#7Da7Qb2, a7Qb1Da1Qb7, a1Qb2Da2Qb1,
5roducto por escalarK : S 9 A, : S * 9a1, 9a2, 9a7 ,
)ormaK : S N:N>, : S :az cuadrada de *AQA,
'e"$a.as &el Mo&elo o-ie"$a&o a ob.e$os co" -es*ec$o al mo&elo es$-!c$!-a&o
a
!n modelo de objetos es ms cercano a la realidad que un modelo #uncional.
a
!n desarrollo realizado con el modelo orientado a objetos es ms #cil de mantener $ de
reutilizar.
a
1l modelo orientado a objetos evita la redundancia en los procesos lue+o los cdi+os
son ms entendibles $ resumidos.
a
/a inte+ridad que dan los objetos a los datos evita ambi+bedades en su uso, dando
ma$or se+uridad en los resultados.
a
1l modelo orientado a objetos #acilita la inte+ridad de mdulos que "allan sido
realizados por separado sin correr ries+os en el manejo de los datos.
"ttpKNNieee.udistrital.edu.coNconcursoNpro+ramacionPorientadaPobjetosNpooNpoovsest."tm
l
La programacin orientada a objetos, intenta simular el mundo real a tra(es del
significado de objetos que contiene caracteristicas funciones! Los lenguajes
orientados a objetos se clasifican como lenguajes de quinta generacion!
Como su mismo nombre indica, la programacin orientada a objetos se basa en la
idea de un objeto, que es una combinacion de (ariables locales procedimientos
llamados metodos que juntos conforman una entidad de programacin!
El termino encapsulacion se usa para describir la combinacion de estructuras de
datos de metodos que son manipulados por el objeto! La llamada a un objeto es
lo que se denomina pasar un Na(isoN a un objeto!
En la programacin orientada a objetos, encapsular significa, reunir controlar el
grupo resultante como un todo no indi(idualmente!
En la programacin orientada a objetos la abstraccion es un termino e=terno al
objeto, que controla la forma en que es (isto por los demas!
En la programacin orientada a objetos la modularidad se considera de la siguiente
manera4 @n programa grande siempre sera ms complicado que la suma de (arios
programas peque.os, con lo que se considera (entajoso di(idir un gran sistema en
di(ersos modulos!
En la programacin orientada a objetos tenemos la jerarquia, la cual consiste en la
clasificacion organizacion de las abstracciones segun su naturaleza! El ms claro
ejemplo de jerarquia es la herencia!
En la programacin orientada a objetos se define la herencia como una jerarquia de
e=tracciones, la relacion entre clases, donde se comparte la estructura el
comportamiento de una o ms clase considerada como clases superiores o una
superclase, con lo cual se resume que la herencia es una unidad independiente por
si misma heredada de una abstraccion o superclase! @n ejemplo cotidiano lo
encontramos en las aplicaciones que e=isten cactualmente en el mercado, donde un
formulario cualquiera hereda las caracteristicas de uan (entana del sistema
operati(o JindoKs ;Ma=imizar, Minimizar, Cerrar
"ttpKNNlen+uajesDdeDpro+ramacion.comNpro+ramacionDorientadaDaDobjetos.s"tml
La programacin Frientada a objetos ;"FF< es una forma especial de programar,
ms cercana a como e=presaramos las cosas en la (ida real que otros tipos de
programacin!
Con la "FF tenemos que aprender a pensar las cosas de una manera distinta, para
escribir nuestros programas en trminos de objetos, propiedades, mtodos otras
cosas que (eremos rpidamente para aclarar conceptos dar una peque.a base
que permita soltarnos un poco con este tipo de programacin!
'oti%acin
Aurante a.os, los programadores se han dedicado a construir aplicaciones mu
parecidas que resol(an una otra (ez los mismos problemas! "ara conseguir que
los esfuerzos de los programadores puedan ser utilizados por otras personas se
cre la "FF! Oue es una serie de normas de realizar las cosas de manera que otras
personas puedan utilizarlas adelantar su trabajo, de manera que consigamos que
el cdigo se pueda reutilizar!
La "FF no es difcil, pero es una manera especial de pensar, a (eces subjeti(a de
quien la programa, de manera que la forma de hacer las cosas puede ser diferente
seg1n el programador! 0unque podamos hacer los programas de formas distintas,
no todas ellas son correctas, lo difcil no es programar orientado a objetos sino
programar bien! "rogramar bien es importante porque as nos podemos apro(echar
de todas las (entajas de la "FF!
Cmo #e pien#a en obeto#
"ensar en trminos de objetos es mu parecido a cmo lo haramos en la (ida real!
"or ejemplo (amos a pensar en un coche para tratar de modelizarlo en un esquema
de "FF! Airamos que el coche es el elemento principal que tiene una serie de
caractersticas, como podran ser el color, el modelo o la marca! 0dems tiene una
serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o
aparcar!
"ues en un esquema "FF el coche sera el objeto, las propiedades seran las
caractersticas como el color o el modelo los mtodos seran las funcionalidades
asociadas como ponerse en marcha o parar!
"or poner otro ejemplo (amos a (er cmo modelizaramos en un esquema "FF una
fraccin, es decir, esa estructura matemtica que tiene un numerador un
denominador que di(ide al numerador, por ejemplo &I#!
La fraccin ser el objeto tendr dos propiedades, el numerador el
denominador! Luego podra tener (arios mtodos como simplificarse, sumarse con
otra fraccin o n1mero, restarse con otra fraccin, etc!
Estos objetos se podrn utilizar en los programas, por ejemplo en un programa de
matemticas hars uso de objetos fraccin en un programa que gestione un taller
de coches utilizars objetos coche! Los programas Frientados a objetos utilizan
muchos objetos para realizar las acciones que se desean realizar ellos mismos
tambin son objetos! Es decir, el taller de coches ser un objeto que utilizar
objetos coche, herramienta, mecnico, recambios, etc!
Cla#e# en POO
Las clases son declaraciones de objetos, tambin se podran definir como
abstracciones de objetos! Esto quiere decir que la definicin de un objeto es la
clase! Cuando programamos un objeto definimos sus caractersticas
funcionalidades en realidad lo que estamos haciendo es programar una clase! En los
ejemplos anteriores en realidad hablbamos de las clases coche o fraccin porque
slo estu(imos definiendo, aunque por encima, sus formas!
Propiedade# en cla#e#
Las propiedades o atributos son las caractersticas de los objetos! Cuando definimos
una propiedad normalmente especificamos su nombre su tipo! ?os podemos
hacer a la idea de que las propiedades son algo as como (ariables donde
almacenamos datos relacionados con los objetos!
'+todo# en la# cla#e#
-on las funcionalidades asociadas a los objetos! Cuando estamos programando las
clases las llamamos mtodos! Los mtodos son como funciones que estn asociadas
a un objeto!
Obeto# en POO
Los objetos son ejemplares de una clase cualquiera! Cuando creamos un ejemplar
tenemos que especificar la clase a partir de la cual se crear! Esta accin de crear
un objeto a partir de una clase se llama instanciar ;que (iene de una mala
traduccin de la palabra instace que en ingls significa ejemplar<! "or ejemplo, un
objeto de la clase fraccin es por ejemplo &I8! El concepto o definicin de fraccin
sera la clase, pero cuando a estamos hablando de una fraccin en concreto 'I:,
$I2333 o cualquier otra, la llamamos objeto!
"ara crear un objeto se tiene que escribir una instruccin especial que puede ser
distinta dependiendo el lenguaje de programacin que se emplee, pero ser algo
parecido a esto!
miCoche 9 neK Coche;<
Con la palabra neK especificamos que se tiene que crear una instancia de la clase
que sigue a continuacin! Aentro de los parntesis podramos colocar parmetros
con los que inicializar el objeto de la clase coche!
!#tado# en obeto#
Cuando tenemos un objeto sus propiedades toman (alores! "or ejemplo, cuando
tenemos un coche la propiedad color tomar un (alor en concreto, como por
ejemplo rojo o gris metalizado! El (alor concreto de una propiedad de un objeto se
llama estado!
"ara acceder a un estado de un objeto para (er su (alor o cambiarlo se utiliza el
operador punto!
miCoche!color 9 rojo
El objeto es miCoche, luego colocamos el operador punto por 1ltimo el nombre e
la propiedad a la que deseamos acceder! En este ejemplo estamos cambiando el
(alor del estado de la propiedad del objeto a rojo con una simple asignacin!
'en#ae# en obeto#
@n mensaje en un objeto es la accin de efectuar una llamada a un mtodo! "or
ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos
pasndole el mensaje Pponte en marchaQ!
"ara mandar mensajes a los objetos utilizamos el operador punto, seguido del
mtodo que deseamos imbocar!
miCoche!ponerseEnMarcha;<
En este ejemplo pasamos el mensaje ponerseEnMarcha;<! Da que colocar
parntesis igual que cualquier llamada a una funcin, dentro iran los parmetros!
Otra# co#a#
Da mucho toda(a que conocer de la "FF a que slo hemos hecho referencia a
las cosas ms bsicas! Lambin e=isten mecanismos como la herencia el
polimorfismo que son unas de las posibilidades ms potentes de la "FF!
La herencia sir(e para crear objetos que incorporen propiedades mtodos de
otros objetos! 0s podremos construir unos objetos a partir de otros sin tener que
reescribirlo todo!
El polimorfismo sir(e para que no tengamos que preocuparnos sobre lo que
estamos trabajando, abstraernos para definir un cdigo que sea compatible con
objetos de (arios tipos!
-on conceptos a(anzados que cuesta e=plicar en las lneas de ese informe! ?o ha
que ol(idar que e=isten libros enteros dedicados a la "FF aqu solo pretendemos
dar un repaso a algunas cosas para que os suenen cuando tengis que poneros
delante de ellas en los lenguajes de programacin que debe conocer un
desarrollador del Keb!
"ttpKNNGGG.desarrolloGeb.comNarticulosN?66.p"p[manualS1C
'4#'1*T4S D1 *24:2"-"'I=# 42I1#T"D" " 4BJ1T4S
1.1 Introduccin
Un concepto muy importante introducido por la programacin estructurada es la
abstacci!. La abstacci! se puede definir como la capacidad de examinar
algo sin preocuparse de los detalles internos. En un programa estructurado es
suficiente conocer que un procedimiento dado realiza una tarea especfica. El
cmo se realiza la tarea no es importante; mientras el procedimiento sea fiable
se puede utilizar sin tener que conocer cmo funciona su interior. Esto se conoce
como abstraccin funcional.
Una debilidad de la programacin estructurada aparece cuando programadores
diferentes trabajan en una aplicacin como un equipo. Dado que programadores
diferentes manipulan funciones separadas que pueden referirse a tipos de datos
mutuamente compartidos, los cambios de un programador se deben reflejar en
el trabajo del resto del equipo. Otro problema de la programacin estructurada es
que raramente es posible anticipar el diseo de un sistema completo antes de
que se implemente realmente.
En esencia, un defecto de la programacin estructurada, como se acaba de ver,
consiste en la separacin conceptual de datos y cdigo. Este defecto se agrava
a medida que el tamao del programa crece.
1.2 "bstraccin de datos
La abstacci! de datos permite no preocuparse de los detalles no esenciales.
Existe en casi todos los lenguajes de programacin. Las estructuras de datos y
los tipos de datos son un ejemplo de abstraccin. Los procedimientos y
funciones son otro ejemplo. Slo recientemente han emergido lenguajes que
soportan sus propios tipos abstactos de datos (TAD), como Pascal, Ada,
Modula-2 y C++.
1.3 R?u( es la proramacin orientada a ob!etosS
Se puede definir *44 como una tcnica o estilo de programacin que utiliza
objetos como bloque esencial de construccin.
Los ob*etos son en realidad como los tipos abstractos de datos. Un T"D es un
tipo definido por el programador junto con un conjunto de operaciones que se
pueden realizar sobre ellos. Se denominan abstractos para diferenciarlos de los
tipos de datos fundamentales o bsicos.
En ' se puede definir un tipo abstracto de datos utilizando t+pede, y st%ct y la
implementacin de las operaciones con un conjunto de funciones.
'FF tiene muchas facilidades para definir y utilizar un tipo TAD.
Al igual que los tipos de datos definidos por el usuario, un objeto es una
coleccin de datos, junto con las funciones asociadas, utilizadas para operar
sobre esos datos. Sin embargo la potencia real de los objetos reside en las
propiedades que soportan: (ee!cia, e!caps%laci! y poli-o,is-o, junto con los
conceptos bsicos de ob*etos, clases, -.todos y -e!sa*es.
1.) Traba!ando con ob!etos
En programacin convencional los programas se dividen en dos componentes:
procedimientos y datos. Este mtodo permite empaquetar cdigo de programa
en procedimientos, pero Qu sucede con los datos? Las estructuras de datos
utilizadas en programacin son globales o se pasan como parmetros. En
esencia los datos se tratan separadamente de los procedimientos.
En *44 un programa se divide en componentes que contienen procedimientos y
datos. Cada componente se considera un ob*eto.
Un ob!eto es %!a %!idad /%e co!tie!e datos + las ,%!cio!es /%e opea! sobe
esos datos. A los elementos de un objeto se les conoce como -ie-bos; las
funciones que operan sobre los datos se denominan -.todos (en C++ tambin
se llaman ,%!cio!es -ie-bo) y los datos se denominan -ie-bos datos. En C+
+ un programa consta de objetos. Los objetos de un programa se comunican
entre s mediante el paso o e!01o de -e!sa*es (acciones que debe ejecutar el
objeto).
En *44 los objetos pueden se cualquier entidad del mundo real:
G Ob*etos ,1sicos
* automviles en una simulacin de trfico
* aviones en un sistema de control de trfico areo
* animales mamferos, etc
G Ele-e!tos de i!te,aces g2,icos de %s%aios
* ventanas
* iconos
* mens
* ratones
G Est%ct%as de datos
* arrays
* pilas
* rboles binarios
G Tipos de datos de,i!idos po el %s%aio
* nmeros complejos
* hora del da
1.+ Definicin de ob!etos
Un ob*eto es una unidad que co!tie!e datos + las ,%!cio!es /%e opea! sobre
esos datos. Los datos se denominan -ie-bos dato y las funciones -.todos o
,%!cio!es -ie-bo.
Los datos y las funciones se e!caps%la! en una nica entidad. Los datos estn
ocultos y slo mediante las funciones miembro es posible acceder a ellos.
1.3 'lases
Una clase es un tipo definido por el usuario que determina las estructuras de
datos y las operaciones asociadas con ese tipo. Cada vez que se construye un
objeto de una clase, se crea una i!sta!cia de esa clase. En general, los trminos
ob*etos e i!sta!cias de %!a clase se pueden utilizar indistintamente.
Una clase es una coleccin de objetos similares y un objeto es una instancia de
una definicin de una clase.
La comunicacin con el objeto se realiza a travs del paso de mensajes. El
e!01o a %!a i!sta!cia de %!a clase pod%ce la e*ec%ci! de %! -.todo o ,%!ci!
-ie-bo. El paso de mensajes es el trmino utilizado para referirnos a la
invocacin o llamada de una funcin miembro de un objeto.
1.5 -ensa!es@ activacin de ob!etos
Los objetos pueden ser activados mediante la recepcin de mensajes. Un
-e!sa*e es simplemente una peticin para que un objeto se comporte de una
determinada manera, ejecutando una de sus funciones miembro. La tcnica de
enviar mensajes se conoce como paso de -e!sa*es.
Estructuralmente un mensaje consta de tres partes:
- la ide!tidad del ob*eto ecepto
- la ,%!ci! -ie-bo del ecepto cuya ejecucin se ha solicitado
- cualquier otra i!,o-aci! adicio!al /%e el ecepto p%eda !ecesita para
ejecutar el mtodo requerido.
En C++, la notacin utilizada es !o-be3del3ob*eto4,%!ci!3-ie-bo
1!emplo: Se tiene un objeto o1 con los siguientes miembros dato:
nombre_alumno y curso y con las funciones miembro: leerQnombre e imprimir.
Si el objeto o1 recibe el mensaje imprimir, esto se expresa:
o54i-pi-i$'
La sentencia anterior se lee: "enviar mensaje imprimir al objeto o1". El objeto o1
reacciona al mensaje ejecutando la funcin miembro de igual nombre que el
mensaje.
El mensaje puede llevar parmetros:
o1.leer_nombre("Pedro Prez")
Sin los mensajes los objetos que se definan no podrn comunicarse con otros
objetos. Desde un punto de vista convencional, el paso de -e!sa*es no es ms
que el sinnimo de lla-ada a %!a ,%!ci!4
1.; *rorama orientado a ob!etos
Un programa orientado a objetos es una coleccin de clases. Necesitar una
funcin principal que cree objetos y comience la ejecucin mediante la
invocacin de sus funciones miembro.
Esta organizacin conduce a separar partes diferentes de una aplicacin en
distintos archivos. La idea consiste en poner la descripcin de la clase para cada
una de ellas en un archivo separado. La funcin principal tambin se pone en un
archivo independiente. El compilador ensamblar el programa completo a partir
de los archivos independientes en una nica unidad.
En realidad, cuando se ejecuta un programa orientado a objetos, ocurren tres
acciones:
1. Se crean los objetos cuando se necesitan
2. Los mensajes se envan desde uno objetos y se reciben en otros
3. Se borran los objetos cuando ya no son necesarios y se recupera la memoria
ocupada por ellos
1.M <erencia
La (ee!cia es la propiedad que permite a los objetos construirse a partir de
otros objetos.
Una clase se puede dividir en s%bclases. En C++ la clase original se denomina
clase base; las clases que se definen a partir de la clase base, compartiendo sus
caractersticas y aadiendo otras nuevas, se denominan clases dei0adas4
Las clases derivadas pueden heredar cdigo y datos de su clase base
aadiendo su propio cdigo y datos a la misma.
La herencia impone una relacin jerrquica entre clases en la cual una clase (i*a
hereda de su clase pade. Si una clase slo puede recibir caractersticas de otra
clase base, la herencia se denomina (ee!cia si-ple.
Si una clase recibe propiedades de ms de una clase base, la herencia se
denomina (ee!cia -6ltiple4
1.1> *olimorfismo
En un sentido literal, significa la cualidad de tener ms de una forma. En el
contexto de *44, el poli-o,is-o se refiere al hecho de que una misma
operacin puede tener diferente comportamiento en diferentes objetos. Por
ejemplo, consideremos la operacin sumar. El operador + realiza la suma de dos
nmeros de diferente tipo. Adems se puede definir la operacin de sumar dos
cadenas mediante el operador suma.
"ttpKNNpro+ramarenc.Gebcindario.comNplusNcapitulo1."tm
/a pro+ramacin orientada a objetos es una nueva #orma de ver viejos conceptos de
modularidadK "a$ poco nuevoA pero al adaptar un len+uaje a los planteamientos de 544
e incitar a los pro+ramadores a utilizarlos, se consi+ue una mejora de productividad
apreciable.
1. onceptos
2. 5alabras reservadas
7. 1structuras dinmicas $ objetos
1. Co"ce*$os
E"ca*s!lamie"$o
onsiste en a+rupar valores con m(todos *5:41I!:18 $
J!)T>4)8,.
/a a+rupacin de valores si+ue el esquema de los :14:I8.
/a a+rupacin de m(todos si+ue el esquema de la !)>T8.
Iic"a combinacin se denomina 4.%1T.
/os 4.%1T8 entran dentro de la cate+ora de los TL518A ms tarde
pueden crearse variables de los tipos declarados.
Oc!l$aci7"
/os componentes de un 4.%1T pueden ser 5!./> o 5:>=AT1. ada una de
estas palabras, reservadas, inicia una zona en la que se declaran datos o m(todos.
5ueden "aber varias zonas pblicas $No varias zonas privadas. )o obstante esta
libertad, se recomienda disponer nicamente de 2 zonas, una pblica al principio
$ una privada a continuacin. /a zona pblica al principio puede prescindir de la
marca 5!./>. /os objetos quedan pues de la si+uiente #ormaK
TYPE x= object
elementos pblicos, datos y/o mtodos
private
elementos privados, datos y/o mtodos
end;

asusticaK
4.%1T declarado en un 5:4F:ABK
Todos los campos son utilizables desde cualquier sitio del pro+rama. /a
distincin entre 5!./> $ 5:>=AT1 es puramente #ormal. 8e aplican las re+las
tradicionales de mbitos de 5ascal.
4.%1T declarado en !)>T >)T1:JA1K
/os campos 5!./> del 4.%1T son utilizables desde cualquier sitio de la
!)>T, $ en cualquier otra !)>TN5:4F:AB que !818 esta.
/os campos 5:>=AT1 del 4.%1T son utilizables desde cualquier sitio de esta
!)>T, pero en nin+n otro sitio.
4.%1T declarado en !)>T >B5/1B1)TAT>4)K
Todos los campos, sean 5!./> o 5:>=AT1, son utilizables desde cualquier
sitio de la >B5/1B1)TAT>4). /a distincin entre 5!./> $ 5:>=AT1 es
puramente #ormal. 8e aplican las re+las tradicionales de mbitos de 5ascal.
/os componentes de un 4.%1T, sean 5!./> o 5:>=AT1, se pueden usar
libremente para pro+ramar el contenido de los m^eacuteAtodos del 4.%1T en
cuestin.
He-e"cia
!n objeto puede ser descendiente de otro. /a t(cnica consiste en co+er un objeto
$a cerrado, sacar una copia $ escribirle cosas encimaK ms datos $No ms
m(todos.
Aparece una relacin asim(trica de ascendientesNdescendientes. /a relacin es
transitiva.
/os datos de los ascendientes eEisten en los descendientesA que no
pueden de#inir nuevos campos con i+ual nombre.
/os m(todos de los ascendientes en principio los pueden usar los
descendientesA pero estos pueden rede#inirlos de nuevo, ocultando los de
sus ascendientes.
8e puede lle+ar a mcetodos de ancestros remotos eEplicitando el tipo al
que nos re#erimos. 5or ejemplo, si 4n es un objeto que procede de 41 a
travces de varias "erencias, los mcetodos de 41 son accesibles en 4n
como
O1.metodo (...)
1l ascendiente inmediato es accesible como
INHERITED metodo (...)
5ascal slo permite "eredar de 1 ascendiente. 0a$ len+uajes que permiten
"eredar de varios *"erencia mltiple,
Asi3"aci7" &e ;alo-es
uando tenemos variables que son de tipos objeto, sus contenidos pueden
asi+narse. on ciertas condiciones.
1l contenido de una variable =2 es asi+nable a una variable =1 *V1:= V2;, si $
slo si
=1 $ =2 son del mismo tipo
=1 es de un tipo ascendiente del tipo de =2
Al asi+nar un objeto a otro objeto, se copian los contenidos de los datos
comunes.
/a #iloso#a sub$acente es que un descendiente tiene siempre los
componentes de sus ascendientes *inmediatos o remotos, $ por tanto la
asi+nacin siempre sabe cmo llenar los componentes de destino, aunque
"a$a que tirar al+unos que sobran. Al reve(s, sin embar+o, no sera
posible, pues un ascendiente tiene menos cosas que sus descendientes $
dejara campos sin car+ar *las variables con contenidos inde#inidos son
mu$ peli+rosas, #uente de mil errores, $ conviene evitarlas a toda costa,.
/os m(todos asociados no se alteranK cada objeto mantiene los propios
de su tipo.
/a asi+nacin de valores tiene lu+ar
en sentencias de asi+nacin *ej. =1KS =2A,
en el paso de parmetros por valor
*ej. 5:41I!:1 5 *=1K ...,A llamado como 5 *=2,A ,
Com*a-$ici7" &e ;alo-es
8e da cuando "a$ dos #ormas de acceder a un mismo objeto, cosa que tiene lu+ar
al asi+nar punteros *aparecen aliases apuntando a la misma cosa,
en el paso de parmetros por re#erencia *=A:, *aparecen varios nombres
para la misma cosa,
Polimo-%ismo
8e llama polimor#ismo a la utilizacin del mismo nombre para re#erirse a
di#erentes cosas.
0a$ muc"os casos de polimor#ismo en 5ascal sin objetos, ejK
3rite es un procedimiento polimr#ico, pues puede trabajar sobre
parmetros de di#erentes tipos
Ios campos que se denominen i+ual pueden eEistir en :14:I8
di#erentes
Ios variables o procedimientos que se denominen i+ual pueden eEistir
en mbitos di#erentesA por ejemplo, en di#erentes !)>Ts.
1n 4.%1T8K
Ios campos que se denominan i+ual pueden eEistir en 4.%1T8
di#erentes, nos re#erimos tanto a datos como a m(todos.
!n tipo "eredado puede rede#inir la #uncionalidad de un m(todo que se
llame i+ual en al+n ascendiente. Ie "ec"o, el elemento del ancestro
queda oculto por el nuevo elemento.
1l polimor#ismo es mu$ natural, intuitivo $ carece de emocicon cuando a#ecta a
objetos no relacionados entre sci.
1l polimor#ismo pasa a ser especialmente emocionante cuando se aplica entre
objetos que mantienen una relacicon de "erencia. 1sto es as porque con el tipo
de un ascendiente podemos estar re#iri(ndonos a una cosa de un tipo
descendiente. omo esto slo se sabe cuando estamos ejecutando el pro+rama,
se suele asociar al concepto de -late bindin+-.
La$e Bi"&i"3
dtraducible por li+adura tarda, dinmica, ...e
/a re+la bsica es que dado el tipo de un objeto, los m(todos que le son
aplicables son los que le son propios, independientemente de que otros
descendientes puedan "aberlos rede#inido.
1n un conteEto en el que eEista posibilidad de polimor#ismo en el sentido del
ltimo prra#o del punto anterior, es posible que el m(todo asociado a un objeto
no sea necesariamente el asociado a su tipo, sino que podamos re#erirnos al
m(todo asociado al tipo del que es el contenido real de la cosa.
/. Palab-as -ese-;a&as
5ascal asocia una serie de palabras novedosas para plasmar cada uno de estos
conceptos. /a asociacin no es todo lo ele+ante que sera de desear, $ a veces "a$
palabras reservadas que se utilizan para di#erentes conceptos, $ conceptos que requieren
de muc"as palabras reservadas.
E"ca*s!lamie"$o
4.%1T, que sirve para de#inir TL518 objeto
=A:, que sirve para crear variables de TL518 objeto
81/J, que es una variable que slo eEiste dentro de un m(todo $ se
re#iere a la variable sobre la que se aplica el m(todo.
o 1n proceduresN#unctions aisladas es necesario pasar un ar+umento
para saber sobre qu( variable se aplica
PROCEDURE pop (VAR p: pila);
al llamarlo como
pop (mipila);
dentro de -pop-, la variable eEterna -mipila- se conoce por p.
o omo los m(todos de los objetos estn estrec"amente li+ados a
los objetos en s, la asociacin es directamente
mipila.pop
$ dentro de -pop-, la variable eEterna -mipila- se conoce por
81/J.
Oc!l$aci7"
5!./>, que sirve para dar amplia visibilidad a un componente, dato o
m(todo
5:>=AT1, que sirve para acotar la visibilidad de un componente, dato o
m(todo
He-e"cia
TL51 descendienteS 4.%1T *ascendiente, declara un tipo derivado de
otro
>)01:>T1I, que permite que un descendiente se re#iera a un m(todo de
su ascendiente inmediato
Asi3"aci7" &e ;alo-es
KS en asi+nacin convencional
paso de parmetros por valor
Com*a-$ici7" &e ;alo-es
KS de punteros *aliases,
paso de parmetros por re#erencia *=A:,
Polimo-%ismo
La$e Bi"&i"3
=>:T!A/
1. palabra que se utiliza adjetivar un m(todo de #orma que sea susceptible
de un -late bindin+-.
2. /os m(todos no =>:T!A/ se asocian en base al continente.
7. /os m(todos =>:T!A/ se asocian en base al contenido.
4)8T:!T4:
1. 8i un objeto tiene m(todos =>:T!A/, tambi(n debe tener m(todos
4)8T:!T4:.
2. ualquier m(todo *5:41I!:1 o J!)T>4), puede ser
4)8T:!T4:, $ debe "aber al+uno para ser llamado antes de usar
al+n m(todo virtual.
7. 8i sobre una variable de un cierto tipo 4.%1T se intenta utilizar un
m(todo =>:T!A/ antes de utilizar al+n m(todo 4)8T:!T4:,
ocurre un error.
?. 8e puede activar un c"equeo Uf:RW para que el pro+rama de un error si
se intenta utilizar un =>:T!A/ antes que un 4)8T:!T4:.
C. 5robablemente sea suicida trabajar sin Uf:RW
&. Todo esto son manas de Turbo 5ascalA no ocurre necesariamente en
otros len+uajes.
I18T:!T4:
1. ualquier m(todo puede ser I18T:!T4:.
2. 1stos m(todos sirven para indicarle a la mquina que cuando libere
memoria *con I>85481, lo "a+a bien.
7. 8lo son necesarios cuando se trabaja con objetos ubicados
dinmicamente $ que son polimr#icos.
?. 1n estos casos es obli+ado que el I18T:!T4: sea adems
=>:T!A/.
1. Es$-!c$!-as &i"4micas ? ob.e$os
/a utilizacin de t(cnicas orientadas a objetos no altera sustancialmente las t(cnicas
clsicas en cuanto a pro+ramacin con estructuras dinmicas $ punteros como
mecanismo de re#erencia a las mismas en tiempo de ejecucin. /as mismas estructuras
que venamos utilizando se pueden envolver como objetos $ tratar como tipos abstractos
de datos. 1s decir, tenemos una #orma alternativa de encapsulamiento o mdularizacin.
5ero si aparecen nuevas posibilidades en torno a los conceptos de polimor#ismo $
li+adura tarda *-late bindin+-,.
3.1. *olimorfismo % m(todos virtuales
/os objetos introducen una posibilidad nuevaK los m(todos virtuales, que aprovec"an la
i+norancia del pro+rama respecto de lo que un puntero est apuntando para introducir
un concepto de +enericidad en la estructuracin de pro+ramas. Bs claramenteK la
esencia de los objetos es asociar los m(todos *procedimientos $ #unciones, a los datos.
1sta asociacin se puede realizar a trav(s de un punteroK dado un puntero, se persi+ue
para localizar el dato $ de (l averi+uamos qu( m(todo aplicar. Ie esta t(cnica podemos
-abusar- de la tolerancia del sistema a base de pasar punteros de un sitio para otro $ slo
en el ltimo momento *-late bindin+-, preocuparnos de averi+uar a qu( estamos
apuntando. 8i somos capaces de relajar el c"equeo de tipos, podemos encontrarnos en
tiempo de ejecucin con una variedad de objetos di#erentes apuntados.
1sta relajacin debe ser cuidadosa para no crear un caos. 1n pro+ramacin orientada a
objetos la #orma controlada de combinar varios tipos de objetos de denomina
polimor#ismo $ consiste en tolerar que a un objeto de un cierto tipo T1 se le asi+ne otro
objeto de otro tipo T2, con la restriccin de que T2 sea un descendiente *tipo derivado,
de T1. 1n particular, esta relajacin se puede aplicar a los punterosK
TYPE
PT1= ^T1;
T1= OBJECT ... END;
PT2= ^T2;
T2= OBJECT (T1) ... END;
VAR
O1: PT1;
O2: PT2;
PROCEDURE P (X: PT1);
BEGIN ... END;
BEGIN
O1:= O2; (* polimorfismo legal *)
P (O2); (* polimorfismo legal *)
1sta tolerancia tiene cierta l+ica. !n tipo derivado slo puede ser un enriquecimiento
de otro tipo. /os datos de un ascendiente son un subconjunto de los datos de un
descendiente, $ por tanto todo lo que el antecesor conoce puede localizarse en el
descendiente. 5ero, aparte de no dejar nin+n vacio, un descendiente puede tener un
di#erente concepto de lo que "ace un cierto m(todo *un re#inamiento,K eEiste siempre
al+o que se llama i+ual, pero su ejecucin puede ser di#erente. 1stos m(todos son los
que se denominan virtualesK
T1= OBJECT
PROCEDURE X; virtual;
END;
T2= OBJECT (T1)
PROCEDURE X; virtual;
END;
T1.X y T2.X pueden tener implementaciones distintas.
!n puntero a un objeto de tipo 5T1, puede apuntar a un objeto de tipo T1, en cu$o caso
41g.< ejecutar T1.<. 5ero tambi(n puede encontrarse apuntando a un objeto de tipo
T2, en cu$o caso ejecutara T2.<. 8lo se sabe en tiempo de ejecucin a qu( est
apuntando en cada momento.
1stos procedimientos requieren una atencin especial, razn por la cual se le in#orma al
sistema adosndoles la palabra =>:T!A/.
3.2. 'onstructores % destructores
/os objetos susceptibles de ser apuntados se encuentran con otros detalles operacionales
relativos a su inicializacin $ a su liquidacin *destruccin,. )os re#erimos a las
operaciones de ubicacin de memoria *)13, $ de liberacin *I>85481,.
/a ubicacin de memoria requiere al menos dos #asesK *1, ubicar sitio $ *2, inicializar
los datos. omo un objeto suele tener datos privados slo accesibles a trav(s de los
m(todos que aporta pblicamente *al menos esto es lo que recomiendan los tratados de
buenas maneras de pro+ramar,, ocurre que tendremos al+n m(todo que se denomine
-car+a- o similar. 5or ejemploK
T1= OBJECT
PROCEDURE X; virtual;
CONSTRUCTOR init (valor: tipo);
PRIVATE
dato: tipo;
END;
CONSTRUCTOR T1.init (valor)
BEGIN
dato:= valor;
END;
L la creacin de un objeto de este tipo viene en dos #asesK
NEW (O1); O1^.init (...);
que, por comodidad $ por sistematizar operaciones, se pueden combinar en una sla
operacinK
NEW (O1, init (...));
Aparte de las razones aducidas de comodidad, en el caso de Turbo 5ascal el sistema
requiere que si un objeto tiene m(todos virtuales, antes de utilizar estos se "a$a
utilizado al+n constructor. 1sto es pura mana de Turbo 5ascalA pero si no se "ace, los
pro+ramas no #uncionan.
/a operacin sim(trica, I>85481 su#re una evolucin similarK
T1= OBJECT
PROCEDURE X; virtual;
CONSTRUCTOR init (valor: tipo);
DESTRUCTOR final;
PRIVATE
dato: tipo;
END;
DESTRUCTOR T1.final;
BEGIN
(* lo que haga falta ... *)
END;
Ionde -lo que "a+a #alta- quiere decir que antes de eliminar un objeto puede ser
necesario atender a otras #acetas del pro+rama. asos tpicosK
que un objeto ten+a un puntero a otro objeto $ no nos interese que se pierda
memoria por eliminar al que apunta.
que el objeto sea parte inte+rante de una estructura de datos ms compleja $
debamos ajustar el entorno antes de eliminar uno concreto.
8ea por la razn que sea, podemos eliminar en una o dos operacionesK
O1^.final; DISPOSE (O1);
DISPOSE (O1, final);
uando trabajamos con m(todos vrituales, adems de la problemtica eEpuesta nos
encontramos con situaciones en las que no se sabe "asta tiempo de ejecucin que es lo
que "a$ que destruir. 1sto lleva simplemente a que los m(todos destructores sean de
tipo =>:T!A/.
3.3. 4b!etos en(ricos
/os m(todos virtuales nos llevan a la posibilidad de escribir unidades que trabajan sobre
cualquier tipo de datos dentro de una jerarquizacin de objetos derivados. /a t(cnica
consiste en identi#icar un tipo mu$ bsico con las mnimas #unciones necesarias, que se
etiquetan como virtuales. 8obre este tipo elemental se desarrollan al+oritmos que "acen
re#erencia a los m(todos virtuales. 1stas unidades se pueden cerrar sin necesidad de que
se conozca eEactamente a que descendientes del tipo bsico se van a aplicar.
Bs tarde, se pueden derivar nuevos objetos a partir del tipo bsico, dando contenido
diverso a los m(todos virtuales que quedaron abiertos. 8e monta todo junto $ en tiempo
de ejecucin los al+oritmos +en(ricos que "abiamos codi#icado se materializan sobre las
instancias precisas de los objetos derivados.
1sta posibilidad de escribir unidades +en(ricas lleva a una posibilidad prctica de
disponer cdi+o reutilizable o incluso comercializable por separado.
"ttpKNNGGG.upv.esNprotelNusrNjotro#erNpascalNpoo."tm
1.).3*roramacin de descripcin de <ardHare
sistemas num(ricos
1.+ Lenua!es de proramacin
/en+uajes de pro+ramacion
!n pro+rama es un conjunto de instrucciones que indica al ordenador las tareas a
realizar. !n pro+rama consta de rdenes $ de declaraciones. /as rdenes indican las
tareas a ejecutar. /as declaraciones in#orman sobre determinados aspectos de los
elementos de un pro+rama. /as rdenes $ declaraciones se escriben correlativamente
utilizando la sintaEis de uno de los len+uajes de pro+ramacion. 1sta sintaEis pretende
ser lo ms parecida al len+uaje utilizado en la comunicacin verbal. /os pro+ramas as
escritos, en len+uaje o cdi+o #uente, no pueden ser interpretados directamente por el
ordenador, necesitan ser traducidos a len+uaje mquina. /en+uaje mquina es el
len+uaje que puede ser entendido $ ejecutado directamente por el ordenador.
5ara conse+uir que el cdi+o #uente sea interpretado como cdi+o mquina se emplean
compiladores $ lin9adores, que son dos tipos de pro+ramas ensambladores. /os
di#erentes len+uajes se pueden clasi#icar en dos +ruposK len+uaje mquina $ len+uaje de
pro+ramacin. Ientro de (stos, a su vez, "a$ dos +rupos, los len+uajes de alto nivel $
los len+uajes ensambladores.
8e crean tres tipos de #ic"eros para obtener un ejecutable. 1n primer lu+ar, el pro+rama
#uente dar ori+en a un #ic"ero objeto, que a su vez es el ori+en del #ic"ero ejecutable.
/as #ases por las que pasa un pro+rama, desde que se crea el cdi+o #uente "asta que
termina su ejecucin, sonK edicin del teEto escrito para depurar los errores
+ramaticales. /os errores l+icos, sintcticos, no detectados anteriormente se detectan
en la #ase de compilacin, no permiten continuar con la creacin del #ic"ero ejecutable.
1n este caso se "a de reescribir el cdi+o errneo antes de un nuevo lin9ado.
0ttp@99HHH.aleon.com9Kronen9lenua!es.0tm
?u( es un Lenua!e de *roramacin
Antes de "ablar de RR, es necesario eEplicar qu( es un len+uaje de pro+ramacin. !n
len+uaje de pro+ramacin es un len+uaje escrito utilizado para escribir pro+ramas que
se ejecutan en un computador. 1Eisten muc"os len+uajes de pro+ramacin de entre los
que se destacan los si+uientesK
1.
2. RR
7. .asic
?. Ada
C. %ava
&. 5ascal
'. 5$t"on
@. Jortran
6. 8malltal9
0ttp@99es.HiKibooKs.or9HiKi9*roramaciT'3TB3nQenQ'Q-T'3T"1sQ-
T'3T"1sU?u.'3."MQesQunQLenua!eQdeQ*roramaci.'3.B3n
Lenua!e de proramacin es un conjunto de sintaxis y reglas semnticas que definen los
programas del computador.
Es una tcnica estndar de comunicacin para entregarle instrucciones al computador. Un lenguaje
le da la capacidad al programador de especificarle al computador, qu tipo de datos actan y que
acciones tomar bajo una variada gama de circunstancias, utilizando un lenguaje relativamente
proximo al lenguaje humano.
Un programa escrito en un lenguaje de programacin necesita pasar por un proceso de compilacin,
es decir, ser traducido al lenguaje de mquina para que pueda ser ejecutado por el ordenador.
0ttp@99enc%clopedieG
es.sn%Ke.com9articles9lenua!eQdeQproramacion.0tml
Qu es un Lenguaje de Programacin?
Un lenguaje de programacin es un conjunto de normas lingsticas que
permiten escribir un programa y que ste sea entendido por el ordenador y
pueda ser trasladado a ordenadores similares para su funcionamiento en otros
sistemas. Un programa es una serie de instrucciones ordenadas correctamente
que permiten realizar una tarea o trabajo especfico. Ahora bien, un lenguaje de
programacin se basa en dos elementos muy importantes:
Sintaxis: que se refiere a la utilizacin correcta de cada una de las sentencias de cierto
lenguaje de programacin.
Semntica: se encarga de que cada "oracin" del lenguaje de programacin utilizado
tenga un significado correcto.
A medida que la complejidad de los programas ha ido aumentando, se han
requerido de nuevos lenguajes para poder describir esos problemas y que sean
resueltos por el ordenador.
Generaciones de Lenguajes de Programacin
Las generaciones de los lenguajes de programacin, se han venido dando
debido a que las necesidades que plantean los problemas son cada da ms
grandes y complejo, a continuacin se hace un pequeo resumen de cada una
de las generaciones de lenguajes de programacin.
a. Primera Generacin: Los lenguajes de primera generacin o tambin conocidos como
lenguajes maquina, son en los que se utiliza el cdigo binario(unos y ceros) para
comunicarse con la computadora, esta generacin de lenguajes es muy complicada, ya
que al usar pocos signos, no puede expresar cosas muy complicadas. En la actualidad
ya casi no se trabaja con lenguajes maquina, los nicos que lo hacen son los
diseadores de los "chips" de los procesadores.
b. Segunda Generacin: Los lenguajes de esta segunda generacin son conocidos
tambin como ensambladores, y se distinguen de los lenguajes maquina por su
eficiencia(en comparacin con sus antecesores). Estos lenguajes ensambladores se
basan en lo que es la comprensin de varias palabras en una sola, por ejemplo:
ADC significara "sumar con reserva"(en ingles: ADd with Carry)
Haciendo notoria la aclaracin, de que esta serie de instrucciones sern
traducidas al lenguaje maquina por el compilador del lenguaje.
c. Tercera Generacin: Los lenguajes de tercera generacin o de alto nivel son los
lenguajes ms comunes o que ms conocemos(C, Pascal, Algol, Cobol, Fortran,
BASC). Estos lenguajes se asemejan ya un poco ms al lenguaje humano, al utilizar
palabras completas( en ingles) para la codificacin de los programas.
d. Cuarta Generacin: Son los lenguajes de "programacin asistida" por medio de
ayudantes o wizards, estos lenguajes se han diseado para facilitar la realizacion de
muy variadas tareas, como lo son la simulacin de fenmenos fsicos, manipulacin de
datos estadsticos, etc. Algunos de estos lenguajes son: Visual Basic, NFORMX 4GL,
Visual J++, Visual C, he inclusive algunos autores consideran las planillas de calculo
dentro de esta generacin.
e. Quinta Generacin: En esta generacin, el programador solo ingresa hechos y hace
consultas, no se preocupa de cmo hacer los algoritmos que entregan la respuesta,
algunos autores hasta hace poco todava consideraban a esta generacin como un
sueo, pero gracias al avance de la tecnologa, hoy en da es toda una realidad, como
lo veremos a continuacin.
0ttp@99HHH.monorafias.com9traba!os+9proco9proco.s0tml
Unidad .. Di#e/o de Algoritmo#
2.1 'onceptos b,sicos
1l diseo de al+oritmos es una actividad que consiste en especi#icar los pasos necesarios
para alcanzar la solucin de un problema. Iebe considerarse que al+unos de esos pasos
sern otros al+oritmos.
aractersticas de un al+oritmoK
1. Alcanzar la solucin *correcta, en un tiempo #inito.
2. onstar de pasos claros, precisos $ no ambi+uos
7. Bostrar claramente cules son los datos iniciales $ cules son los resultados.
5or cada problema se debe considerar lo si+uienteK
1. Ie#inir con precisin qu( datos se utilizarn como entradas.
2. Ie#inir con precisin qu( datos se obtendrn como salidas.
7. 8i $a eEisten al+oritmos adecuados, aprovec"arlos prudentemente.
?. Ieterminar qu( acciones se deben e#ectuar sobre las entradas "asta convertirlas
en resultados, $ describir cada una con #rases no ambi+uas.
5or lo +eneral las acciones que pueden inte+rarse en un al+oritmo sonK
1. 5edir datos,
2. Iesple+ar datos,
7. 1valuar condiciones $
?. 1jecutar operaciones matemticas.
ETAPAS DEL DESARROLLO DE PRO#RAMAS
!n pro+rama se elabora para resolver un problema mediante la computadora. 1n
computacin un problema consiste en obtener ciertos resultados a partir de unos datos
previos.
!n pro+rama es un +rupo de instrucciones, escritas en un len+uaje especializado, cu$a
#inalidad es indicarle a una mquina cmo e#ectuar un trabajo.
A cada lnea de un al+oritmo le corresponden una o ms lneas de cdi+oA un pro+rama
puede constar de uno o ms al+oritmos
5ara desarrollar un pro+rama $ tener ma$or con#ianza sobre su correcto #uncionamiento
es conveniente se+uir las si+uientes etapasK
1. Ie#inicin del problema,
2. Anlisis del problema,
7. Iiseo del al+oritmo,
?. 5ro+ramacin $ pruebas,
C. Bantenimiento del pro+rama.
1l al+oritmo de#ine la l+ica con que #lu$en las instrucciones de un pro+rama.
"ttpKNNGGG.c$ta.com.arNbibliotecaNbddocN01070?Nrr""Nrr""."tm
C"&CEP!" $E P#"1)E(A2
Entendemos por problema una situacin en la que las cosas que
tenemos son diferentes de las que deseamos&
1jemploK !na persona quien desea tener una casa nueva, sin embar+o, el solo dispone
de los maderos, las pinturas $ las "erramientas, en sntesis desea una casa pero solo
cuenta con los materiales.
8ig& P&I
'ara en%rentar estas situaciones problem#ticas proponemos un m3todo para
>desenredar@ el problema ( paulatinamente construir la situacin
1.1.2 "L:42IT-4
Definicin@ 1s una serie de pasos ordenados licamente &ue
permiten resolver un problema.
Al+oritmos de la vida cotidiana.
En la vida diaria podemos encontrar muc5os ejemplos como son*
4) -eceta de cocina
I& 9ener listo los ingredientes
A& Encender el %uego
K& Colocar el sart3n sobre el %uego
Q& 'oner aceite en la sart3n
R& 4gregar los 5uevos ( dejarlos %re$r A minutos
S& -etirar los 5uevos
T& 4pagar el %uego
'odemos encontrar algoritmos 5asta en la actividad m#s sencilla, >dar un
paso@ por ejemplo*
I& 4po(ar el cuerpo sobre el pie izquierdo
A& )evantar el pie derec5o
K& 4vanzar el pie derec5o
Q& Bajar el pie derec5o
R& 4po(ar el cuerpo sobre el pie derec5o
S& )evantar el pie izquierdo
T& 4vanzar el pie izquierdo
P& Bajar el pie izquierdo
4qu$ podemos apreciar que importante es seguir el orden marcado por el
algoritmo, piense que ocurrir$a si despu3s de realizar el numero A se salte al
paso S&
1.1.1 CARACTERKSTICAS DE LOS AL#ORITMOS
+initud* El algoritmo debe alcanzar la solucin correcta en un limite de
tiempo
Precisin* )as instrucciones de un algoritmo deben ser claras, precisan (
no prestarse a interpretaciones (es decir evitar la ambigUedad)
Entradas 3 alidas claramente defnidas* )as entradas se
trans%ormaran para obtener las salidas, por ello un algoritmo debe mostrar
con claridad cuales ser#n los resultados (datos iniciales )
Efecti/idad* )os pasos de un algoritmo deben conducir a la solucin del
problema original
Tarea 1: Realizar un algoritmo tipo agenda sobre las actividades que hace
durante el da! siguiendo los pasos de la de"inici#n de algoritmos
42425 $%AG#A(A
$efnicin* Es la representacin gra.ca de la solucin de un problema o un
procedimiento
De%i"ici7" &e Pse!&o c7&i3o< onsiste en redactar *en espaol, cada paso del
al+oritmo, utilizando oraciones breves $ sin incluir adjetivos $ artculos.
5ttp*OO222&angel.re&comOt5e%orceOtrabajoOtrabajo&5tm
2.2 -etodolo.a de la proramacin
De%i"ici7" &el *-oblema
1st dada en s por el enunciado del problema, el cual debe ser claro $
complejo. 1s importante que conozcamos eEactamente "que se desea obtener
al final del proceso" A mientras esto no se comprenda no puede pasarse a la
si+uiente etapa.
A"4lisis &e los &a$os
5ara poder de#inir con precisin el problema se requiere que las
especi#icaciones de entrada $ salida sean descritas con detalle $a que esto es
un requisito para lo+rar una solucin e#icaz.
!na vez que el problema "a sido de#inido $ comprendido, deben
analizarse los si+uientes aspectos K
/os resultados esperados.
/os datos de entrada disponibles.
0erramientas a nuestro alcance para manipular los datos $ alcanzar un
resultado *#rmulas, tablas, accesorios diversos,.
!na medida aconsejable para #acilitar esta etapa consiste en colocarnos
en lu+ar de la computadora deduciendo los elementos que necesitaremos para
alcanzar el resultado.
E.em*lo /.1
/eer el radio de un crculo $ calcular e imprimir su super#icie $
circun#erencia.
Anlisis
/as entradas de datos en este problema se concentran en el radio del
crculo. Iado que el radio puede tomar cualquier valor dentro del ran+o de los
nmeros reales, el tipo de datos radio debe ser real.
/as salidas sern dos variables K super#icie $ circun#erencia que tambi(n sern
de tio real.
1ntradas K :adio del crculo *variable :AI>4,.
8alidas K 8uper#icie del crculo *variable A:1A,.
ircun#erencia del crculo *variable >:!)J1:1)>A,.
=ariables K :AI>4, A:1A, >:!)J1:1)>A tipo real.
DiseLo &e la sol!ci7"
!na computadora no tiene capacidad para solucionar problemas ms que
cuando se le proporcionan los sucesivos pasos a realizar, esto se re#iere a la
obtencin de un al+oritmo que resuelva adecuadamente el problema. 1n caso
de obtenerse varios al+oritmos, seleccionar uno de ellos utilizando criterios $a
conocidos.
1sta etapa inclu$e la descripcin del al+oritmo resultante en un len+uaje
natural, de dia+rama de #lujo o natural de pro+ramacin.
omo puede verse, solo se establece la metodolo+a para alcanzar la
solucin en #orma conceptual, es decir A sin alcanzar la implementacin en el
sistema de cmputo.
Ie acuerdo al ejemplo 2.1 tenemos que la in#ormacin proporcionada
constitu$e su entrada $ la in#ormacin producida por el al+oritmo constitu$e
su salida. /os problemas complejos se pueden resolver ms e#icazmente por la
computadora cuando se dividen en subproblemas que sean ms #cil de
solucionar.
1l problema de clculo de la lon+itud $ super#icie de un crculo se puede
descomponer en subproblemas ms simples K
/eer datos de entrada.
alcular super#icie $ lon+itud.
1scribir resultados *datos de salida,.
Co&i%icaci7"
8e re#iere a la obtencin de un pro+rama de#initivo que pueda ser
comprensible para la mquina. >nclu$e una etapa que se reconoce como
compilacin.
8i la codi#icacin ori+inal se realiz en papel, previo a la compilacin
deber eEistir un paso conocido como transcripcin.


P-o3-ama 0!e"$e
1sta escrito en un len+uaje de pro+ramacin. *pascal, RR,=isual JoE,
=isual .asic, etc,.
1s entendible por el pro+ramador.

P-o3-ama E.ec!$able
1st en len+uaje mquina.
1ntendible por la mquina.
P-!eba ? &e*!-aci7"
!na vez que se "a obtenido el pro+rama ejecutable, este es sometido a
prueba a #in de determinar si resuelve o no el problema planteado en #orma
satis#actoria.
/as pruebas que se le aplican son de diversa ndole $ +eneralmente
dependen del tipo de problema que se est resolviendo. omnmente se inicia
la prueba de un pro+rama introduciendo datos vlidos, invlidos e
incon+ruentes $ observando como reacciona en cada ocasin.
1l proceso de depuracin consiste en localizar los errores $ corre+irlos
en caso de que estos eEistan. 8i no eEisten errores, puede entenderse la
depuracin como una etapa de re#inamiento en la que se ajustan detalles para
optimizar el desempeo del pro+rama.
Doc!me"$aci7"
Iebido a que el pro+rama resultante en esta etapa se encuentra
totalmente depurado *sin errores,, se procede a la utilizacin para resolver
problemas del tipo que di ori+en a su diseo.
1n vista de que esta utilizacin no podr ser supervizada en todas las
ocasiones por el pro+ramador, debe crearse un manual o +ua de operacin
que indique los pasos a se+uir para utilizar el pro+rama.
Ma"$e"imie"$o
8e re#iere a las actualizaciones que deban aplicarse al pro+rama cuando
las circunstancias as lo requieran. 1ste pro+rama deber ser susceptible de ser
modi#icado para adecuarlo a nuevas condiciones de operacin.
ualquier actualizacin o cambio en el pro+rama deber re#lejarse en su
documentacin.
(E!"$")"G%A
DENTFCACN DEL PROBLEMA
Un problema siempre surge en una situacin mas o menos compleja& Esto
provoca que muc5as veces no se aprecia el verdadero problema&
'ara identi.car el problema es necesario encontrar dentro de la situacin
todos los elementos importantes* aquellos que est#n presentes( lo que
tenemos) ( aquellos que est#n ausentes ( lo que deseamos)
Ejemplo* :uestro personaje esta sentado en su casa viendo la televisin&
4%uera esta lloviendo ( como su tec5o esta en mal estado el agua se
introduce a la 5abitacin&
8ig P&A
LCu#l es su problemaN
I& El problema es que la televisin no se ve bien
A& El problema es que el silln no es cmodo
K& El problema es que las gotas 5acen ruido
Q& El problema es que se esta metiendo el agua a su casa
!n anlisis pro#undo de la situacin * $ un poco de sentido comn, podemos determinar
que en realidad el problema consiste en que se esta metiendo el a+ua a la casaK nuestro
personaje tiene una +otera, pero no quiera la +otera
1././ PLANTEAMIENTO DE ALTERNATI'AS DE
SOLUCION
)a solucin a un problema es la accin que permite eliminar las di%erencias
entre lo que tenemos ( queremos&
'ara un mismo problema se puede tener varias soluciones, ( la eleccin de
la mejor depender# de las circunstancias especi.cas&
En el ejemplo de la gotera se mostraron Q posibilidades de solucin
I& Esperar con resignacin a que acabe la lluvia
A& Colocar el paraguas en el tec5o
K& -epara el tec5o
Q& Colocar una cubeta bajo la gotera&
Cualquiera de estas soluciones es posible llevarla a la practicaH sin embargo,
resulta casi obvio que las dos primera son risibles* la resignacin provocara
que se da;e el piso ( los muebles, ( colocar un paraguas >le da la vuelta@
al problema& )a tercera solucin es la mejor, pero considerando que esta
lloviendo, la solucin inmediata es colocar la cubeta ( ( cuando no llueva
reparar el tec5o)&
En algunos otros casos las soluciones propuestas son poco %actibles, otras
%ant#sticas ( algunas otras %alsas, pues no resuelven el problema sino lo
evitan o crean otro&
Un ejemplo, un problema de nutricin se soluciona ( %alsamente) con comida
c5atarra&
)a solucin es una estrategia que sirve para alcanzar el resultado deseado
de un problema, dic5a estrategia consta de un conjunto de
trans%ormaciones que convierten los elementos disponibles en los objetos
deseados&
8ig P&K
-egresando al primer ejemplo el de la persona que desea una casa debe
seguir para lograr su propsito*
I& Elaboracin de planos de la casa
A& Cortar los maderos al tama;o adecuado
K& Construir puertas ( tec5os
Q& 'intar la casa
!i nuestro personaje sigue los pasos es seguro que podr# dis%rutar de una
casa nueva&
En general a la serie de pasos que permiten resolver un problema se le
conoce como algoritmo&
Acti/idad* 7etermine cual es el error en el siguiente
problema*
El siguiente algoritmo presenta un sencillo procedimiento
de inscripcin en la escuela de manejo2
1. Lle3a- a la o%ici"a &e i"sc-i*ci7"
/. Reco3e- solici$!& &e i"sc-i*ci7"
1. Lle"a- solici$!& co" los &a$os
2. E"$-e3a- la solici$!&
6. Sali- &e la o%ici"a
Ta-ea., :esolver el si+uiente problemaK Ieterminar los pasos para ensear
a un cie+o de nacimiento que pueda representar +r#icamente los colores.
DISENO DE AL#ORITMOS
7ise;o de algoritmos es preparar una estrategia para solucionar un
problema, sin embargo para 5acer el dise;o se debe tener completamente
entendido el problema ( comprendida la solucin que se desea alcanzar&
E%ectuar un an#lisis de la situacin
I& 'roblema identi.cado* El personaje no puede ser su camino (debido
ala llanta ponc5ada) ( debe continuar su viaje&
A& !olucin* Cambiar la llanta ponc5ada por otra en buen estado
7ise;o de estrategia para obtener la solucin&
Mue debemos considerar*
a) E+iste un llanta de re%raccin en buen estado
b) E+iste la 5erramienta necesaria (gato, llave de cruz, etc)
c) )as 5erramientas ( la llanta de re%raccin est#n en la cajuela
d) !e tiene las llaves de la cajuela
e) El carro (a %ue estacionado ( en la orilla de la carretera)
Como realizar el algoritmo para e%ectuar el cambio de la llanta
I& Bajar del carro
A& 4brir la cajuela
K& !acar llanta de re%raccin ( 5erramientas
Q& Colocar el gato bajo el carro
R& Muitar el tapn ( aVojar tuercas (birlo) de la llanta da;ada
S& )evantar el carro con el gato
T& Muitar los birlo ( sacar la llanta
P& Colocar la llanta de re%raccin
W& Bajar el carro
IX&4pretar los birlo ( poner tapones
II&0uardar 5erramienta ( la llanta de la cajuela
IA&Cerrar la cajuela
IK&!ubir al carro ( continuar el viaje
DESARROLLO DE SOLUCIONES
!area 62
Acti/idades en parejas la metodolog$a de solucin
Ba;ar al perro
Consideraciones* si tiene perro ( en su casa 5a( jabn, toallas, agua, etc&
Escribir ( enviar una carta
Consideraciones* tiene que enviar una tarjeta de %elicitaciones a un viejo
amigo& :o tiene la tarjeta, ni los timbres& En su casa tiene sobres, papel (
plumas& 'uede depositar la carta en un buzn o en la o.cina de correos&
'reparar un emparedado
Consideraciones* 9iene 5ambre& El emparedado ser# de tipo tradicional
(jamn ( queso)& En su casa no 5a( jamn ni queso, pero tiene el pan ( los
dem#s ingredientes necesarios& 'or si desea calentarlo, si tiene gas ( estu%a&
4dornar una #rbol de navidad
Consideraciones* (a es navidad, (a compro el #rbol ( no importa si es
natural o arti.cial)& En su casa 5a( todos los adornos necesarios&
-ealice un algoritmo que convierta dlares a pesos
Elabore un algoritmo que me solucione el problema de encontrar el #rea de
un rect#ngulo&
-ealice un algoritmo que obtenga el #rea ( el per$metro de una
circun%erencia&
8rmula para el per$metro* 'CA + r + pi
8rmula para el #rea* 4Cpi + r + r
5ttp*OO222&angel.re&comOt5e%orceOtrabajoOtrabajo&5tm
6E9/7/)/0Y4 7E )4 '-/0-464C?G:
Una aplicacin in%orm#tica se compone de programas que tienen por objeto la realizacin autom#tica de
una o varias tareas mediante el uso de un sistema in%orm#tico& El proceso desde el planteamiento del
problema 5asta que se tiene la solucin in%orm#tica instalada en una o varias computadoras, se
denomina ciclo de vida de una aplicacin informtica. Este se descompone en varias %ases*
84!E! de 7?!EZ/ 84!E! de ?:!94)4C?G:
'roblema
?ngenieros
Especi.cacin 'rograma %uente
7iplomadosO?9
4lgoritmo 'rograma objeto
93cnicos 8'
Ejecutable
4plicacin
Anlisis2 Consiste en el e+amen ( descripcin detallada de los siguientes aspectos relativos al
problema* equipo a utilizar, personal in%orm#tico necesario, estudio de los datos de entrada,
estudio de los resultados que se pretenden obtener, relacin entre la entrada ( la salida, (
descomposicin del problema en mdulos&
-esultado* documentos que componen la especi.cacin del problema&
Pro-ramacin2 Consiste en el dise;o de la solucin al problema planteado en %orma de
algoritmo& -esultado* documentos integrados por 5erramientas de representacin de algoritmos
como seudocdigo, ordinogramas, etc&&&
Codifcacin2 9ranscripcin del algoritmo resultante de la %ase anterior a un lenguaje de
codi.cacin concreto& -esultado* se denomina programa ( antiguamente sol$a devolverse o
generarse un documento en papel denominado hoja de codifcacin o cuaderno de carga.
Edicin& !e escribe el programa %uente a partir de las 5ojas de codi.cacin en la memoria del
ordenador, ( se graba en alg,n soporte permanente&
Compilacin& 9raduccin del programa %uente a,n programa objeto o compilado, con
programas traductores&
+ase de montaje o lin7ado& !e a;ade al programa objeto una serie de rutinas del sistema&
-esultado* programa ejecutable directamente en la m#quina sin necesidad de traductor&
Prueba de ejecucin& Consiste en ejecutar el programa con una serie de conjuntos de datos
de prueba para comprobar si el %uncionamiento de 3ste entra dentro de los est#ndares de
calidad .jados&
Explotacin 3 mantenimiento& )a e+plotacin consiste en el uso continuo ( 5abitual por parte
de los usuarios de la aplicacin en un entorno& El mantenimiento de la aplicacin consiste en la
comprobacin del buen %uncionamiento de 3sta ( en la adaptacin a cualquier nueva
circunstancia que implique su actualizacin&
!eg,n el momento en el que se detectan los errores, podemos clasi.carlos en los siguientes tipos*
Errores de compilacin& Corresponden al incumplimiento de las reglas sint#cticas del
lenguaje& 'or ejemplo palabras clave mal escritas, %alta de delimitadores& !on los mas %#ciles de
corregir&
Errores de ejecucin& !e deben a operaciones no permitidas, como dividir por cero, leer un
dato num3rico en una variable num3rica, etc&&&!e detectan porque se produce una parada
anormal del programa&
Errores de l-ica& Corresponden a la obtencin por el programa de resultados que no son
correctos& !on bastantes di%$ciles de encontrar, slo se puede ser ejecutando un n,mero
su.ciente de juegos de prueba ( compararlos con los datos producidos por el programa con los
que generar$amos a mano, o bien con una aplicacin su.cientemente probada&
Errores de especifcacin& !e deben a la realizacin de unas especi.caciones incorrectas,
debidas a la mala comunicacin entre el equipo de desarrollo ( quien platea el problema&
)a eleccin del algoritmo m#s adecuado se debe basar en una serie de requerimientos de calidad que
adquieren gran importancia a la 5ora de evaluar costes de dise;o ( mantenimiento, que son los
siguientes*
)e-ibilidad& Claro ( sencillo, que resulte %#cil su lectura ( su compresin&
+iabilidad& -obusto, es decir, capaz de recuperarse ante errores ( usos inadecuados&
Portabilidad& 4 dos niveles* I) los algoritmos generados en la %ase de programacin deben ser
implementables en di%erentes lenguajesH A) los cdigos %uente obtenidos deben ser
independientes de la m#quina ( del !/&
(odifcabilidad& El cdigo 5a de ser %#cil de mantener, o sea, 5a de permitir que se realicen
cambios para adaptarlos a nuevas situaciones&
Efciencia& El programa generado tendr# que 5acer un uso correcto ( ajustado de los recursos
que no son ilimitados&
)a metodolog$a de la programacin es un conjunto de m3todos ( t3cnicas disciplinadas que a(udan al
desarrollo de unos programas que cumplan los requisitos anteriormente e+puestos& Estos objetivos
suelen ser la programacin modular que consist$a en una serie de descomposiciones del problema 5asta
llegar a un conjunto de mdulos implementables&
)a programacin estructurada consiste en el uso e+clusivo de las estructuras secuencia, seleccin e
iteracin para el control de Vujo de las instrucciones&
)a 7ocumentacin de los 'rogramas est# constituida principalmente por una serie de anotaciones dentro
del propio cdigo %uente ( por una serie de documentos que acompa;an a la aplicacin so%t2are& !u .n
es %acilitar la e+plotacin ( el mantenimiento de la aplicacin, ( debe ser amplia, clara ( precisa& E+isten
dos tipos de documentos*
%nterna& Est# constituida b#sicamente por el listado del programa %uente ( su objetivo es
%acilitar la lectura ( comprensin del mismo& !e considera parte de la documentacin interna los
siguientes aspectos*
Comentarios& !on %rases e+plicativas que se colocan en cualquier parte del programa %uente,
ignoradas por el compilador& Es conveniente incluir comentarios con aquellos razonamientos que nos
5a(an sido di%$ciles de alcanzar ( que preveamos que van a ser di%$ciles de comprender pasado un
tiempo&
Cdigo autodocumentado2 )as palabras reservadas de los lenguajes de alto nivel se podr$an
considerar como parte de la documentacin por corresponder con t3rminos en ingl3s que e+presan su
contenido&
Externa& Es el conjunto de documentos que se acompa;a con el programa, pero sin %ormar
parte de los .c5eros %uente& )a documentacin e+terna debe inVuir a los siguientes apartados*
especi.cacin del an#lisis, descripcin del dise;o del programa, de las versiones si las 5ubiera,
del programa principal ( los subprogramas, de los manuales del usuario ( el anual del
mantenimiento&
)as t3cnicas de desarrollo ( dise;o de programas usadas en la programacin convencional tienen
inconvenientes sobre todo a la 5ora de veri.car ( modi.car un programa& Una t3cnica que se est#
implantando, para paliar los problemas e+teriores al ciclo de vida de la aplicacin, es la descomposicin
de un problema en problemas cada vez m#s peque;os 5asta llegar a mdulos implementables, 9op"
do2n, en el cual tenemos la programacin estructurada&
)as t3cnicas de programacin estructurada pretenden resolver los saltos condicionales ( los
incondicionales, las cuales se pueden de.nir como la programacin sin saltos condicionales e
incondicionales& )as caracter$sticas de un programa estructurado son las siguientes* %#cil de leer (
comprender, %#cil de codi.car en una amplia variedad de lenguajes ( sistemas, %#cil de mantener,
e.ciente (aprovec5ando al m#+imo los recursos del sistema) ( modularizable&
Un diagrama propio es aquel que slo posee una entrada ( una salida&
Un programa propio es el que solo tiene un punto de entrada ( otro de salida, ( donde todo elemento del
programa es accesible, es decir, e+iste al menos un camino de los que van del inicio al .n que pasa por
3lH es un programa que no tiene bucles in.nitos&
7os programas son equivalentes si ante cualquier situacin de datos proporcionan el mismo resultado
pero de distinta %orma&
9odo programa propio tiene siempre al menos un programa propio equivalente que slo utiliza las
estructuras b#sicas de programacin, que son la secuencia, seleccin e iteracin& / sea, que dise;ando
programas con sentencias primitivas ( estructuras b#sicas podremos 5acer cualquier trabajo (
considerar en mejorar la creacin, lectura, comprensin ( mantenimiento de los programas&
)a programacin estructurada utiliza*
$ise8o !op $o9n2 )os programas se dise;an de lo m#s gen3rico a lo m#s particular por medio
de sucesivos re.namientos o descomposiciones que nos llevar#n a las instrucciones particulares
de cada programa&
#ecursos abstractos2 Es el complemento per%ecto para el dise;o 9op"7o2n (, en el cual,
utilizamos el concepto de abstraccin, es decir, en cada descomposicin suponemos que las
partes resultantes est#n resueltas, dejando su realizacin al siguiente re.namiento (
considerando que al .nal estar#n %ormadas por un conjunto de instrucciones ( estructuras
b#sicas&
Estructuras bsicas2 !oda accin se puede realizar usando las K estructuras b#sicas de
control, es decir, la secuencial, alternativa ( la repetitiva&
Estructura secuencial2 Es una estructura con una entrada ( una salida, cu(a ejecucin es lineal ( las
acciones se ejecutar#n en el orden en el que aparecen& Cada accin slo tendr# una entrada ( una
salida&
Estructuras alternativas2 Es una estructura con una sola entrada ( una sola salida, de la cual se
realiza una opcin seg,n una condicin& [sta puede ser simple o compuesta& )as alternativas pueden ser
de dos tipos* I\, dos salidas condicionales, una de las cuales puede ser nulaH ( A\, tres o m#s salidas&
Estructura repetitiva2 Estructura con una entrada ( una salida, en la cual se repite un n,mero
determinado o indeterminado de veces, dependiendo de una determinada condicin&
FOR* se repite una accin un determinado n,mero de veces representado normalmente por :&
no
si
WHILE* !e repite una accin mientras que se cumpla la condicin que calcula el bucle& )a condicin es
evaluada siempre antes de cada repeticin&
no
si
DO/WHILE: !e repite una accin mientras se cumpla la condicin que controla el bucle& )a condicin se
evaluar# despu3s de cada repeticin del bucle&
si
Un #rbol o estructura arborescente es un gra%o en el que se distinguen generalmente tres clases de
nodos* ra$z, nodos intermedios ( 5ojas&
)a ra$z es el nodo del que parte toda la estructura del #rbol, es decir, es un nodo que slo tiene salidas&
)os nodos intermedios son los que tienen una entrada o enlace de entrada o al menos una salida o
enlace de salida&
)as 5ojas son nodos que se sit,an en la parte m#s lejana a la ra$z ( que slo tienen entradas&
E+isten tres tipos de ordenar un #rbol*
Preorden2 Consiste en los siguientes tres pasos* IJ, consultar la ra$zH AJ, consultar el sub#rbolH ( KJ,
consultar el sub#rbol derec5o&
%norden2 4:; -ecorrer el sub#rbol izquierdo 5asta llegar a una 5oja ( tratar esa 5oja& AJ Consultar la
ra$z& KJ, recorrer el sub#rbol derec5o 5asta llegar a una 5oja ( tratarla&
Postorden2 IJ, recorrer el sub#rbol izquierdo 5asta llegar a una 5oja& AJ, recorrer el sub#rbol derec5o
5asta llegar a una 5oja& KJ, consultar la ra$z&
El m3todo de ]ac^son es un m3todo de representacin de programas en %orma de #rbol ( que se
denomina diagrama arborescente de ]ac^son& Consta de las siguientes partes*
Defnicin detallada de los datos de E/S, inclu(endo los arc5ivos lgicos utilizados&
Representacin del proceso o algoritmo& )a simbolog$a utilizada en este m3todo se puede describir
como el uso de rect#ngulos que tienen los siguientes aspectos*
4ccin 7ecisin -epeticin
)a lectura del diagrama generado se 5ace en preorden ( la representacin de un algoritmo se basa en
los siguientes tres puntos*
Un programa se representa por un solo diagrama en el que se inclu(en todas las operaciones
necesarias para solucionar el problema& )a %orma para conectar dos p#ginas es mediante la palabra
DprocesoE encerrada en un rect#ngulo ( con un n,mero o nombre&
9odo diagrama comienza con un rect#ngulo en cu(o interior .gura el nombre del programa&
!e 5a de procurar, para %acilitar la lectura, que el diagrama que generemos sea lo m#s sim3trico
posible&
8/-* en el rect#ngulo de condicin se escribir# o bien en n,mero de veces que se va a repetir el bucle o
bien el nombre de la variable contador, su valor inicial, su valor .nal ( el incremento& Ej&* queremos que
la condicin se repita R veces&
6?E:9-4!O1<?)E* en el rect#ngulo de Condicin se escribir# la condicin que rige el bucle&
<4!94* En el rect#ngulo de Condicin se pondr# D5astaE ( la condicin& 'or ej&*
El m3todo de C5apin se trata de una %orma de representar programas como un bloque compacto que
consta de dos cosas*
7e.nicin detallada de los datos de EO!, inclu(endo los arc5ivos lgicos utilizados&
-epresentacin del proceso o algoritmo&
!u simbolog$a se basa en el empleo de rect#ngulos ( la lectura del gr#.co generado se 5ace de arriba a
abajo& )a representacin del algoritmo se basa en los siguientes puntos*
Un programa se representa por un solo diagrama en el que se inclu(en todas las operaciones a
realizar para la resolucin del problema&
9odo diagrama comienza en un rect#ngulo en el que su parte superior ( %uera de 3l .gura el nombre
del programa&
Estructura secuencial2 !on como un conjunto de acciones secuenciales, donde 4BC7 se
ejecutar#n de arriba a abajo&
Estructura alternati/a2 'uede ser* simple o de una opcin, doble o m,ltiple&
Estructura iterati/a2
8U:746E:9/ 7E '-/0-464C?G: (K)
El dise;o descendente o toc"do2n consiste en una serie de descomposiciones sucesivas del problema
inicial que reciben un re.namiento progresivo del repertorio de instrucciones que van a %ormar parte del
programa& !us objetivos son*
implifcacin del problema 3 de los subpro-ramas resultantes de cada descomposicin&
Pro-ramacin independiente de cada uno de los mdulos, incluso por di%erentes personas&
implifcacin de la lectura 3 el mantenimiento del programa .nal&
Un programa dise;ado en 9oc"7o2n tiene dos partes bien di%erenciadas*
Pro-rama principal2 7escribe la solucin completa del programa ( consta principalmente de
llamadas a subprogramas& Estas llamadas son indicaciones al procesador de que debe continuar la
ejecucin del programa en el comienzo del subprograma llamado, regresando al punto de partida una
vez que lo 5a(a concluido& 4dem#s, puede contener operaciones e instrucciones primitivas del lenguaje,
( sentencias de control ejecutables por el procesador& 7ebe ser breve&
ubpro-ramas2 8iguran agrupados en un lugar distinto al programa& !u estructura es parecida a la
del programa principal, salvo en el encabezamiento ( la .nalizacin& [ste puede tomar sus propios
subprogramas correspondientes& )a %uncin de un subprograma es la de resolver una parte del problema&
[stos se dividen en*
ubpro-ramas internos2 !on aquellos subprogramas que est#n localizados en el mismo arc5ivo
que el programa principal&
ubpro-ramas externos2 !on aquellos que .guran %$sicamente separados del programa principal,
es decir, en distintos .c5eros %uente& !e pueden compilar independientemente ( tambi3n los podemos
encontrar en un lenguaje di%erente del programa principal&
)os objetos manipulados por un programa se clasi.can seg,n su porcin de programa (Oo subprogramas
en que son de.nidos ( conocidos&
)os objetos globales son los declarados en el programa principal, cu(o #mbito se e+tiende al mismo ( a
todos sus subprogramas& !e pueden ver desde cualquier parte del programa&
)os objetos locales de un subprograma son los declarados en dic5o subprograma, cu(o #mbito est#
restringido a 3l mismo ( a los subprogramas declarados en 3l& !lo se puede ver dentro de 3l&
Cada vez que se llama a un subprograma, los datos de entrada le son pasados por medio de
determinadas variables, ( an#logamente, cuando termina la ejecucin los resultados regresan mediante
otras o las mismas unidades&
)os par#metros pueden ser*
Parmetros formales2 !on variables locales de un subprograma utilizadas para la recepcin ( el
env$o de los datos& !iempre son .jos&
Parmetros actuales2 !on las variables ( datos enviados en cada llamada de subprograma por el
programa o subprograma llamante& !on los valores ( cambian&
!e denomina paso de par#metros al proceso de transmisin ( recepcin de datos ( resultados mediante
variables de enlace& 'uede realizarse de dos modos*
Paso por /alor o copia2 Cuando pasamos una variable a un subprograma, realmente le pasamos
una copia de su valor, conserv#ndose el valor de la variable aunque se modi.que dentro del
subprograma a la salida de 3ste&
Paso por referencia o /ariable2 Cuando le enviamos una variable, le pasamos la direccin de 3sta&
En este caso, el cambio que se produzca en el programa aparecer# reVejado al acabar la ejecucin de
3ste&
Un parmetro actual pasado por valor es un dato de entrada al subprograma, ( se copia en su par#metro
%ormal correspondiente& No se proporciona la variable al subprograma sino slo su contenido.
Un parmetro actual pasado por referencia es una variable del programa llamante, para el programa
llamado, el cual coloca un resultado en esa variable, que queda a disposicin del llamante una vez 5a
concluido la ejecucin del programa& 'roporciona su direccin de memoria al par#metro %ormal asociado,
pudiendo modifcarla ! dejando en ellas los valores "ue va a devolver. Estos par#metros suponen un
a5orro de memoria, puesto que la variable local no e+iste realmente, sino que se asocia a la global en
cada llamada&
Una %uncin es un subprograma que recibir# una serie de par#metros en la posicin ( de los tipos
indicados en su lista de par#metros ( que va a devolver un ,nico valor de un tipo determinado que ser#
el tipo de la %uncin&
)os procedimientos son un tipo de subprogramas que recibir#n una serie de par#metros o argumentos en
la cantidad, tipo ( posicin que indique su lista de par#metros realizar# un determinado proceso ( no
devolver# ning,n resultado de modo e+pl$cito& Es para cuando queremos modi.car o devolver m#s de un
valor o variable u operar con una estructura de datos compleja&
)as %unciones en C son el bloque principal en la construccin de programas& )a %orma general es*
Especi.cador_de_tipo nombre_de_%uncin (lista_de_par#metros)
`
asecuencia de accionesb
c
El especi.cador_de_tipo es el tipo de dato que devolver# la %uncin mediante la sentencia DreturnE& !i no
lo especi.camos, el compilador asume un tipo de vuelta concreto&
)a lista_de_par#metros es la lista de nombre de variables separadas por comas ( con sus tipos asociados
que reciben los valores de loa par#metros o argumentos cuando se llama a una %uncin& 'uede no tener
ning,n par#metro, ( entonces pondremos DvoidE&
-eturn tiene dos usos importantes*
+or<ar una salida inmediata de la %uncin en la que nos encontramos&
$e/ol/er un /alor, generalmente, calculado en la %uncin&
<a( dos %ormas de cmo una %uncin puede terminar su ejecucin ( que 3sta devuelva al sitio desde el
que se la llam*
(odo impl=cito2 !e produce al llegar a la llave que cierra el cdigo de la %uncin&
(odo expl=cito2 'orque tienen que devolver un valor o para simpli.car el cdigo de la %uncin (
5acerlo m#s e.ciente permitiendo varios puntos de salida&
9odas las %unciones, e+cepto void, devuelven un valor& !i la %uncin no es especi.cada como DvoidE ( no
se especi.ca un valor de vuelta, entonces el valor devuelto por la %uncin queda t3cnicamente
inde.nido& <a( varios tipos de %unciones*
+unciones computacionales& 7ise;adas para operar con sus argumentos ( devolver un valor
basado en esos c#lculos&
!on aquellas %unciones que manipulan la in%ormacin ( nos devuelven un valor que indica ,nicamente
el 3+ito o %racaso de tal manipulacin& Como eje* la %uncin de librer$a f#rite() que sirve para escribir en
un .c5ero&
!on %unciones que no tienen un valor de vuelta e+pl$cito ( son estrictamente de tipo procedimiento
sin generar un valor& 'or ejemplo, la %uncin srand() que inicializa la semilla del generador de n,meros
aleatorios&
4lgunas %unciones devuelven algo de todas %ormas, aunque no sea de inter3s, como por ejemplo printf
que devuelve el nJ de caracteres escritos&
Cuando se utiliza una sentencia RE$%RN en main, el programa devuelve un cdigo de terminacin al
proceso que lo llam, ( debe ser un entero& En sistemas operativos como 6!"7/! o /!OA, un valor de
vuelta X indica que el programa 5a terminado normalmente& 9odos los dem#s indica que se 5a producido
alg,n error&
)as reglas de #mbito de la %uncin son reglas que controlan si un %ragmento de cdigo conoce o tiene
acceso a otro %ragmento de cdigo o datos& Cada %uncin es un bloque de cdigo ( es privado a esa
%uncin sin poder accederse a 3l a menos que se llame a esa %uncin&
El cdigo que comprende el cuerpo de la %uncin est# oculto al resto del programa ( no se puede acceder
ni modi.car&
!e denominan variables locales a las variables de.nidas de cada %uncin& E+isten a partir de que entra
en la %uncin ( se destru(e cuando sale de ella, es decir, que no conservan su valor entre dos llamadas
consecutivas, a e+cepcin de cuando una variable local se declara con el modi.cador Dstatic&& Cuando es
as$, el compilador la trata como s$ %uera global, salvo que slo sigue siendo visible en el #mbito de la
%uncin en la que se declar& :o se puede de.nir una %uncin dentro de otra %uncin&
'ara usar argumentos se deben declarar variables que acepten los valores de los argumentos& 9ambi3n
se denominan par#metros, los cuales se comportan como variables locales de la %uncin, cre#ndose al
entrar en 3sta ( destru(3ndose al salir de ella&
!e utiliza la llamada por valor para pasar argumentos& Una %uncin por valor se la pasa copia del valor de
la variable&
Es posible causar una llamada por re%erencia pasando un puntero al argumento&
El paso de arra(s o matrices como argumentos es una e+cepcin al convenio de paso por valor que se
tiene en C& Cuando se usa un arra( como argumento de una %uncin slo se pasa la direccin de la
matriz, no una copia de los datos de la matriz entera&
C soporta tres argumentos, pero slo dos son de.nidos por 4:!??* argc ( argv& 'ermiten pasar
in%ormacin al programa de C mediante la l$nea de comandos&
Un argumento de l$nea de comandos es una in%ormacin que sigue al nombre del programa en la l$nea de
comandos del sistema operativo&
El par#metro argc contiene el nJ de argumentos de la l$nea de rdenes, o sea, el nJ de par#metros que
podemos poner&
El par#metro argv es un puntero a un arra( de punteros de caracteres& Cada elemento del arra( apunta a
un argumento de la l$nea de rdenes& 9odos los argumentos de esta l$nea son tratados como cadenas de
caracteres&
Un prototipo de %uncin es una copia pr#cticamente literal de la cabecera de la declaracin de 3sta que
se sit,a generalmente al principio de los .c5eros C ( %orzosamente antes de la I\ llamada a esa %uncin&
9iene dos objetivos %undamentales*
'dentifcar el tipo de vuelta de la %uncin para que el compilador pueda realizar una generacin de
cdigo correcta&
Especifcar el tipo ( nJ de argumentos que utiliza la %uncin&
!u %orma es* tipo nombre %uncin (lista de argumentos)
5ttp*OO5tml&rincondelvago&comO%undamentos"de"la"programacion&5tml
2.3 Diaramas de flu!o
424 $%AG#A(A
42>24 $%AG#A(A $E E&!#A$A?P#"CE"?A)%$A
SIMBOLO#IA
8iguras para la representacin del algoritmo en un diagrama de Entrada"
'roceso"!alida
5roceso
1ntrada o 8alida
ESTRUCTURA
Ejemplos
#ealice un al-oritmo que con/ierta dlares a pesos
$atos de entrada Proceso $atos
de salida
$lares (ultiplicar la cantidad
Pesos
de dlares por 442@@ pesos

Capturar los dlares
(ultiplicar la cantidad de dlares por 442@@ pesos
(ostrar los pesos
42>26 $%AG#A(A $E +)'0"
$ia-rama de +lujo* -epresentacin gra.ca utilizando .guras en %orma de
caja, que se usan seg,n corresponda a cada paso del algoritmo& Estas
.guras se conectan mediante Vec5as, indicando la secuencia a seguir entre
los pasos&
SIMBOLO#IA
8iguras para la representacin del algoritmo en un diagrama de 8lujo
>nicio N Jin
Dolares Multiplicar dolares por pesos Pesos
onector
ESTRUCTURA
Elabore un al-oritmo que me solucione el problema de encontrar el
rea de un rectn-ulo2
Conociendo los datos de entrada; el proceso AclculosB 3 los datos
de salida 3a se puede elaborar el al-oritmo ms fcilmente*
Pseudocodi-o
42%nicio
62Conocer la base del rectn-ulo
>2Conocer la altura del rectn-ulo
52(ultiplicar la base por la altura
C2El resultado de la multiplicacin
es el rea del rectn-ulo
D2+in
$%AG#A(A $E +)'0" $E E!E A)G"#%!(" inicio
base
altura
Area=base*altura
fin
ondicio
n
>mpresora
Jlec"as
#ealice un al-oritmo que obten-a el rea 3 el per=metro de una
circunferencia2
+rmula para el per=metro* PE6 x r x pi
+rmula para el rea* AEpi x r x r
7atos de entrada 'roceso 7atos de
salida
radio !ustituir las variable 6ostrar el
#rea (
pi en las A %mulas, para el per$metro
#rea ( el per$metro
Conociendo los datos de entrada; el proceso AclculosB 3 los datos
de salida 3a se puede elaborar el al-oritmo ms fcilmente*
42%nicio
62Conocer el /alor del radio
>2Conocer el /alor de pi
52(ultiplicar el radio por 6 por pi para obtener el per=metro
C2(ultiplicar radio por radio por pi para obtener el rea
D2(ostrar el per=metro 3 el rea del circulo
F2+in
$ia-rama de +lujo
nicio
ngre
sar el
valor
de pi
Per
metro
=2xrx
pi
Per
metr
o
Area
Fin
Area
=
pixrxr
ngre
sar el
valor
de
radio
$EA##"))" $E ")'C%"&E
!area >2
Acti/idades en parejas represent#ndolos en diagramas de Vujos
Ba;ar al perro
Consideraciones* si tiene perro ( en su casa 5a( jabn, toallas, agua, etc&
Escribir ( enviar una carta
Consideraciones* tiene que enviar una tarjeta de %elicitaciones a un viejo
amigo& :o tiene la tarjeta, ni los timbres& En su casa tiene sobres, papel (
plumas& 'uede depositar la carta en un buzn o en la o.cina de correos&
'reparar un emparedado
Consideraciones* 9iene 5ambre& El emparedado ser# de tipo tradicional
(jamn ( queso)& En su casa no 5a( jamn ni queso, pero tiene el pan ( los
dem#s ingredientes necesarios& 'or si desea calentarlo, si tiene gas ( estu%a&
4dornar una #rbol de navidad
Consideraciones* (a es navidad, (a compro el #rbol ( no importa si es
natural o arti.cial)& En su casa 5a( todos los adornos necesarios&
-ealice un algoritmo que convierta dlares a pesos
Elabore un algoritmo que me solucione el problema de encontrar el #rea de
un rect#ngulo&
-ealice un algoritmo que obtenga el #rea ( el per$metro de una
circun%erencia&
8rmula para el per$metro* 'CA + r + pi
8rmula para el #rea* 4Cpi + r + r
0ttp@99HHH.anelfire.com9t0eforce9traba!o9traba!o.0tm
1. Introduccin
Un Diagrama de Flujo representa la esquematizacin grfica de un algoritmo ,
el cual muestra grficamente los pasos o procesos a seguir para alcanzar la
solucin de un problema . Su correcta construccin es sumamente importante
porque , a partir del mismo se escribe un programa en algn Lenguaje de
Programacin. Si el Diagrama de Flujo est completo y correcto
,el paso del mismo a un Lenguaje de Programacin es relativamente simple y
directo.
Es importante resaltar que el Diagrama de Flujo muestra el sistema como una
red de procesos funcionales conectados entre s por " Tuberas " y "Depsitos"
de datos que permite describir el movimiento de los datos a travs del Sistema.
Este describir : Lugares de Origen y Destino de los datos , Transformaciones
a las que son sometidos los datos, Lugares en los que se almacenan los datos
dentro del sistema , Los canales por donde circulan los datos. Adems de esto
podemos decir que este es una representacin reticular de un Sistema ,el cual
lo contempla en trminos de sus componentes indicando el enlace entre los
mismos.
En el presente Trabajo se representar a travs de un Diagrama de Flujo el
Procedimiento que debe efectuarse para calcular el pago de los trabajadores
de una Empresa .
2. Situacin *lanteada
A continuacin se representara a travs de un Diagrama de Flujo el
procedimiento utilizado para el calculo de pago de los trabajadores por La
Empresa FrutiPack , C.A. , la cual se encarga de elaborar, procesar y empacar
jugos de excelentes calidad para la Regin Centro Occidental del Pas. Para
estos clculos se debe tomar en cuenta lo siguiente :
Sueldo Bsico y las horas extras trabajadas .
Para el pago de las horas extras se tienen en cuenta adems la categora del
trabajador , la cual se muestra a continuacin :
Cada trabajador puede tener como mximo 10 horas extras , si tienen ms slo se les
pagarn 10. A los trabajadores con categora mayor a 4 no se les debe pagar horas extras.
Datos
SUE : Es una variable Real que expresa el sueldo bsico del trabajador.
CATE : Es una variable de tipo entero , que expresa la categora del
trabajador . 1 < CATE < CATE 8.
HE : Es una variable de tipo entero , que expresa las horas extras trabajadas
por el trabajador.
PHE : Es una variable de tipo real. Almacena el costo de la hora extra ,
teniendo en cuenta la categora del trabajador.
NSUE : Es una variable de tipo real . Almacena lo que hay que pagarle al
trabajador teniendo en cuenta su sueldo y las horas extras trabajadas.
Diagrama de Flujo
nicio
SUE , CATE , HE
CATE
PHE = 15.000 PHE = 25.000 PHE = 30.000 PHE = 40.000 PHE = 0
S NO
HE >10
NSUE=SUE+10*PHE NSUE =SUE+HE*PHE
NSUE

3. Biblioraf.a
- Manual de Normas y Procedimientos .Empresa FrutiPack , C.A.
http://www.monografias.com/trabajos12/diflu/diflu.shtml
Diagrama# de *luo
@n diagrama de flujo es una representacin grfica de un algoritmo o de una parte
del mismo! Los diagramas de flujo audan en la comprensin de la operacin de las
estructuras de control ;$i! %ientras<!
La (entaja de utilizar un algoritmo es que se lo puede construir independiente
mente de un lenguaje de programacin, pues al momento de lle(arlo a cdigo se lo
puede hacer en cualquier lenguaje!
Aichos diagramas se construen utilizando ciertos smbolos de uso especial como
son rectngulos, diamantes, (alos, peque.os crculos, estos smbolos estn
conectados entre s por flechas, conocidas como lneas de "lu&o! 0 continuacin se
detallarn estos smbolos!
Terminal! Hepresenta el inicio fin de un programa!
Proce#o! -on acciones que el programa tiene que realizar
Deci#in! /ndica operaciones lgicas o de comparacin, as como
e=presiones
!ntrada 0 "alida! ?os permite ingresar datos, de un perifrico, as como
mostrarlos
"alida! Es usado para mostrar datos o resultados
Conector! -e coloca al principio fin de un pedazo de programa, enlaza
dos partes cualquiera de un programa
12nea de *luo o indicador de direccin!
Hepresentaremos el correspondiente diagrama de flujo del ejemplo #!2
http://www.geocities.com/inf135/tutc/Tema02.htm#_Toc523213550
2.) *seudocodios
P#eudocdigo
"seudocdigo Es un lenguaje artificial e informal que auda a los programadores a
desarrollar algoritmos! El "seudocdigo es similar al lenguaje cotidianoE es cmodo
amable con el usuario, aunque no es realmente in (erdadero lenguaje de
computadora! ?o se ejecutan en las computadoras mas bien sir(en para audar al
programadora razonar un programa antes de intentar escribirlo en alg1n lenguaje!
@n programa ejecutado en "seudocdigo puede ser fcilmente con(ertido en un
programa en C66, si es que esta bien elaborado! "or ejemplo supongamos que la
nota para aprobar un e=amen es de %3! El enunciado en "seudocdigo sera4
Si calificacin >= 60 entonces
Mostrar "Aprobado"
FinSi
El mismo enunciado se puede escribir en C66 como4
if ( calif >= 60 )
cout << "Aprobado";
?tese que la operacin de trasladar el "seudocdigo a cdigo fuente, se lo realiza
con el mnimo esfuerzo, no se necesita de un maor anlisis!
Lle(ando el Ejemlo#!2 a "seudocdigo!
-e puede refinar ms aun el algoritmo4
/nicializar (ariables!
/nicializar los aprobados ;aprobados< en 3
/nicializar los reprobados ;reprobados< en 3
/nicializar el n1mero de estudiantes ;estudiantes< en 3
/ntroducir las primeras 23 calificaciones contar los aprobados los reprobados!
Mientras ;Khile< el contador estuantes es menor o igual que 23 entonces

/ntroducir el siguiente resultado de e=amen
-i el estudiante aprob


-umar 2 a aprobados

-i no

-umar 2 a reprobados

Bin-i
-umar 2 al contador estudiantes
BinMientras
/mprimir un resumen de los resultados de e=menes decidir si se debe aumentar
o no la colegiatura!
/mprimir el n1mero de aprobados
/mprimir el n1mero de reprobados
-i estudiantes es ms $ entonces

/mprimir N0umentar la colegiaturaN!

Bin-i
-implificando el problema queda escrito en "seudocdigo de la siguiente forma4
El problema anterior escrito en C66
"ttpKNNGGG.+eocities.comNin#17CNtutcNTema02."tmhPTocC27217CC0
Pse!&oc7&i3o
1s un len+uaje de especi#icacin de al+oritmos. 1l uso de tal len+uaje
"ace el paso de codi#icacin #inal *esto es, la traduccin a un len+uaje de
pro+ramacin, relativamente #cil.

1l pseudocdi+o naci como un len+uaje similar al in+l(s $ era un medio
representar bsicamente las estructuras de control de pro+ramacin
estructurada. 8e considera un primer borrador, dado que el pseudocdi+o tiene
que traducirse posteriormente a un len+uaje de pro+ramacin. abe sealar
que el pseudocdi+o no puede ser ejecutado por una computadora.

/a ventaja del pseudocdi+o es que en su uso en la plani#icacin de un
pro+rama, el pro+ramador se puede concentrar en la l+ica $ en las estructuras
de control $ no preocuparse de las re+las de un len+uaje espec#ico. 1s
tambi(n #cil modi#icar el pseudocdi+o si se descubren errores o anomalas
en la l+ica del pro+rama, adems de todo esto es #cil su traduccin a
len+uajes como pascal, 4.4/, , J4:T:A) o .A8>.

1l pseudocdi+o utiliza para representar las acciones sucesivas palabras
reservadas en in+l(s *similares a sus "omnimos en los len+uajes de
pro+ramacin,, tales como star+begin+ end+ stop+ if,t-en,else+ .-ile+ repeat,
until/*etc

0ecuencia
>nicio
accin1
accin2
K
accin n
Jin

"ecisin
Sim*le
si condicin entonces
accin1
accin2
K
accin n
Doble
si condicin t"en
accin1
accin2
K
en caso contrario
accin1
acci2


Iteraccin
0i.a
para var* 1ntera inicial "asta final "acer
accin1
accin2
K
accin n

Co"&icio"al al i"icio
mientras condicin "acer
accin1
accin2
K
accin n

Co"&icio"al al %i"al
:epetir
accin1
accin2
K
accin n
0asta que condicin


0eleccin
casos selector de
valor1 K accin1
accin2

valor2 K accin1
accin2

valor n K accin1
accin2

E.e-cicio <
8e requiere pre+untar dos valores, $ a continuacin o#recer un men con las
operaciones bsicas *R, D, Q, N,. Iespu(s de presentar el resultado se o#recer la
posibilidad de una nueva operacin.

Decla-aci7" &e ;a-iables <
Real < <, L, :185!18TA
E"$e-o < 45>4)
Ca-4c$e- < 45

I"icio
Re*e$i-
esc-ibi-*i5rimer valor K Z ,
lee-*<,
esc-ibi-*i8e+undo valor K i,
lee-*L,
esc-ibi-*i1, 8uma i,
esc-ibi-*i2, :esta i,
esc-ibi-Ei7, Bultiplicacin i,
esc-ibi-*i?, Iivisin i,
esc-ibi-*iOu( operacin deseas realizar [ K i,
lee-*45>4),
casos 45>4) &e
1 K :18!/TAI4 <RL
2 K :18!/TAI4 <DL
7 K :18!/TAI4 <QL
? K si LS0 e"$o"ces
esc-ibi-*i 1rror i,
:18!/TAI4 0
e" caso co"$-a-io
:18!/TAI4 <NL
esc-ibi- *i:esultado K i,:18!/TAI4,
esc-ibi-*iIeseas otro clculo K d8N)e i,
lee-*45,
Has$a !e :18 S i)Z
0i"


1ercicio 2
5re+untar un nombre $ repetirse en pantalla tantas veces como se desee.
*pre+untar cantidad de repeticiones,, indicando el nmero de repeticin.

Decla-aci7" &e ;a-iables
Ca&e"a < nom
e"$e-o < E, n

>nicio
esc-ibi-*i)ombre K i,
lee-*nom,
esc-ibi-*iuntas veces quieres repetirlo [ K i,
lee-*n,
*a-a E 1 +as$a n +ace-
esc-ibi-*EZ.D i, nom,
Jin
"ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNal+oritmosNtemaPC2."tm
Unidad 3. 4undamento# del 1enguae
3.1 Desarrollo 0istrico del lenua!e estructurado
1l len+uaje estructurado se base enK 1, la l+ica estructurada, o en instrucciones que se
or+anizan en procesos a+rupados $ cclicosA $ en 2, planteamientos sencillos del idioma
espaol tales como sumar, multiplicar, mover $ otros similares.
1l ejemplo anterior de la ompaa de 8e+uros Jortress "ace uso del len+uaje
estructurado, esto lo podemos observar en la tabla C.2.1. 1n ella se ordenan con una
secuencia las re+las de decisiones $ a todo lo lar+o se "ace uso de la clusula *8j D
1)T4)18D I1 /4 4)T:A:>4,.
TABLA 6./.1< E)EMPLO DE LA COMPAIA DE SE#UROS 0ORTRESS
alcular la prima base
>J la construccin de tabique
T01) deducir 10 k del total
1)I>J
>J se eli+e la opcin de reemplazo
T01) a+re+ar 10k de la base al subtotal
1)I>J
>J el propietario eli+e un deducible de f100
T01) aumentar 1Ck del subtotal al total 1)I>J
>J la casa cuenta con alarma
T01) deducir Ck del subtotal ajustado al subtotal ajustado
1)I>J
on el #in de escribir en len+uaje estructurado, es conveniente ape+arse a las si+uientes
convencionesK
1. 1Eprese toda la l+ica, en t(rminos de estructuras secuenciales, estructuras de
decisin, estructuras case *decisin mltiple, o iteraciones *como ejemplo, v(ase
la #i+ura C.2.1,.
2. !tilice $ aprovec"e t(rminos tales comoK >J, T01), 1/81, I4, I4 30>/1,
I4 !)T>/, $ 51:J4:B *8j, 1)T418, I1 /4 4)T:A:>4, 1%1!T1,
1%1!T1 B>1)T:A8, 1%1!T1 0A8TA O!1 $ :1A/>1,.
7. 5ara mostrar con claridad la jerarqua *anidando,, utilice san+ras en los bloques
de proposiciones.
?. uando la palabra o #rase utilizadas "a$an sido de#inida en un diccionario de
datos, destaque tales palabras o #rases para indicar que tienen una connotacin
reservada $ especializada.
C. 8ea cuidadoso cuando utilice los operadores l+icos -$- *and, $ -o- *or,,
evitando la con#usin al distin+uir entre -ma$or que- e -i+ual que- de relaciones
similares. Aclare los planteamientos l+icos en el momento $ no espere "asta la
etapa de codi#icacin del pro+rama.
0ttp@99HHH.itlp.edu.mB9publica9tutoriales9analisis9+2.0tm
3.2 1structura eneral de un prorama
!#tructura general de un programa en C5
Los programas en CR pueden constar de uno o (arios archi(os! Cada archi(o puede contener uno o
(arios espacios de nombres! @n espacio de nombres puede contener tipos como clases, estructuras,
interfaces, enumeraciones delegados, adems de otros espacios de nombres! 0 continuacin, se
muestra el esqueleto de un programa en CR que contiene todos estos elementos!
// A skeleton of a C# program
using System;
namespace MyNamespace1
{
class MyClass1
{
}
struct MyStruct
{
}
interface IMyInterface
{
}
delegate int MyDelegate();
enum MyEnum
{
}
namespace MyNamespace2
{
}
class MyClass2
{
public static void Main(string[] args)
{
}
}
}
0ttp@99msdn.microsoft.com9librar%9spa9default.aspS
urlV9librar%9S*"9cscon90tml9vclrfeneralstructureofcs0arpproramQp.asp
Es$-!c$!-a 3e"e-al &e !" *-o3-ama.
1.1., Cabece-aD &ecla-acio"es ? c!e-*o &el *-o3-ama.
1l esquema +eneral de un pro+rama en 5A8A/ es el que si+ueK
PRO#RAM nombre *>)5!T,4!T5!T,A
CONST
(d7eclaracin de constantesd)
TMPE
(d7eclaracin de tipos de usuariod)
VAR
(d7eclaracin de variables* datos, resultados ( resultados
intermediosd)
PROCEDURE nombrePproc1 ....
(d7eclaracin de procedimientos ( %uncionesd)
0UNCTION nombreP#unct1 ....
BE#IN *Qomienzo de instruccionesQ,
END. *QJin del pro+ramaQ,
/a cabecera del pro+rama es obli+atoria $ es donde se indica el nombre del pro+rama
en cuestin. /a cabecera siempre empieza con la palabra 5:4F:AB.
/a parte de declaraciones $ de#iniciones es la zona del pro+rama donde se de#inen $
declaran todos los elementos *constantes, tipos, variables, #unciones $ procedimientos,
con los que va a trabajar el pro+rama. 8e trata de una parte opcional *puede no eEistir,
pero, si eEiste, debe de aparecer al principio del pro+rama, justo tras la cabecera del
mismo $ en el orden apropiado.
1l cuerpo del pro+rama es la zona donde se encuentran las instrucciones ejecutables.
1l cuerpo del pro+rama siempre empieza con la palabra c.1F>)c $ acaba con c1)I.c.
I1/A:A>4)18
A.11:A
!1:54
Ie esta #orma, un pro+rama en 5A8A/, "a de tener, como mnimo, un
encabezamiento $ un bloque o cuerpo con al menos una instruccin, por ejemploK
PROGRAM Ejemplo (Input,Output);
BEGIN
write('HOLA'); (* CUERPO *)
END.
1l iAZ es el carcter separador de sentencias o declaraciones sucesivas. /as sentencias
o instrucciones tienen #ormato libre, por lo que pueden aparecer en cualquier lu+ar de
una lnea. /o que no se puede dividir entre lneas son los nmeros ni los nombres
constantes, variables, procedimientos etc.
)tese que i.1F>)Z nunca va se+uido de iAZ $ que todo pro+rama debe terminar con
un i.Z despu(s del i1)IZ #inal.
!n ejemplo sencillo de pro+ramaK
PROGRAM SUMA(Input,Output); { CABECERA }
VAR A,B,C:INTEGER; { DECLARACIONES }
BEGIN { CUERPO DEL PROGRAMA }
read(A); read(B);
C:=A+B;
write(C)
END.
Estructura de un programa
/a estructura +eneral de un pro+rama en 5ascal es la si+uienteK
program identificador; {nombre o cabecera de programa se puede omitir}
1ses identificadores;
label lista de etiquetas;
const
definiciones de constantes
type
declaraciones de tipos de datos definidos por el usuario
var
declaraciones de variables
procedure
definiciones de procedimientos
function
definiciones de funciones
begin {cuerpo del programa o programa principal
sentencias de los programas
end.
1%1B5/4
pro+ram "olaA
uses crtA
t$pe
tipoPsaludo S strin+A
var
saludo K tipoPsaludoA
be+in
clrscrA
saludo KS c"olacA
Griteln*saludo,A
end.
*24:2"-"@ Es una coleccin de instrucciones que indican a la computadora
que debe hacer. Un programa se denomina software, por lo tanto , programa,
software e instruccin son sinnimos.
Co"ce*$o &e *-o3-ama
!n pro+rama de computadora es un conjunto de instrucciones que producirn la
ejecucin de una determinada tarea.
1n esencia, un pro+rama es un medio para lle+ar a un #in.
1l #in ser normalmente de#inido como la in#ormacin necesaria para solucionar un
problema.
1n conclusin pro+rama es el proceso para solucionar un problema.
1l desarrollo de un pro+rama requiere las si+uientes #asesK
1. Ie#inicin $ anlisis del problema
2. Iiseo de al+oritmo
Iia+rama de #lujo
Iia+rama ) _ 8
5seudo cdi+o.
2. odi#icacin del pro+rama.
7. Iepuracin $ veri#icacin del pro+rama.
?. Iocumentacin.
C. Bantenimiento.
Pa-$es co"s$i$!$i;as &e !" *-o3-ama
1ntrada salida
1l pro+ramador debe establecer el conjunto de especi#icaciones que debe contener el
pro+ramaK
1ntrada salida $ al+oritmos de resolucin que incluirn las t(cnicas para obtener las
salidas a partir de las entradas.
8e debe establecer de donde provienen las entradas al pro+rama es decir los dispositivos
de entrada teclado, disco.
/a entrada de datos Soperacin de lectura de datos o accin de leer.
/as salidas de datos se deben presentar en dispositivos de salida como impresora,
monitor o disco.
4peracin de salida de datos S escritura o accin de escribir
>nstrucciones $ tipos de instrucciones
1l proces de al+oritmo o de codi#icacin del pro+rama consiste en de#inir las acciones
o instrucciones que resolvern el problema.
/as instrucciones se deben escribir $ almacenar en memoria en el mismo orden en el
que "an de ejecutarse es decir en secuencia.
!n pro+rama puede ser lineal o no lineal, el lineal es el que las instrucciones se en
secuencia sin bi#urcacin, ni lineal si tienen bi#urcacin,
5ro+rama
4
al+oritmo
Ti*os &e i"s$-!ccio"es
/as acciones bsicas que se pueden implementar de manera +eneral en un al+oritmo $
que esencialmente soportan todos los len+uajes.
*son independientes del len+uaje,
a, instrucciones de inicioN#in
b, instrucciones de asi+nacin
c, instrucciones de lectura
d, instrucciones de escritura
Tipos de instruccin pseudo cdi+o en in+les pseudo cdi+o en espaol
omienzo de proceso bejn >nicio
Jin de proceso end #in
1ntrada read leer
8alida Grite escribir
Asi+nacin A C A C
I"s$-!ccio"es &e asi3"aci7"
/a operacin de asi+nacin es el modo de darle valores a una variable se representa con
el operador
la operacin de asi+nacin se conoce como instruccin o sentencia de asi+nacin en
len+uaje de pro+ramacin.
/a #lec"a se sustitu$e en al+unos len+uajes con el si+no S *.A8>, J4:T:A),
1jemplos
A C
/a accion de asi+nar es destructiva $a que el valor que tuviera la variable antes se
perderia.
A 21
A 1C
A C
1l valor que quedara 8erra C los otros "an desaparecido.
/as acciones de asi+nacin se clasi#ican se+n sea el tipo de eEpresiones en aritm(ticas,
l+icas $ de caracteres .
Asi3"aci7" a-i$mG$ica
/a eEpresin que se evala es de tipo aritm(tico
AB) 7R1?R@ 8e evala la eEpresin $ se asi+na a la variable
AB), es decir ser i+ual a 2C
T1:1 1?.CR@ 8e evalan las eEpresiones en la tercera accin
T1:2 0.'CQ7.? 8e dividen los resultados de cada eEpresin $
B1I>A T1:1NT1:2 $ se asi+na a la variable B1I>A,
Asi3"aci7" l73ica
/a eEpresin que se evala es de tipo l+ico.
1jemplo
B @TC 8u valor l+ico es verdadero.
Asi3"aci7" &e ca-ac$e-es
/a eEpresin que se evala es de tipo carcter
< i12 de 4ctubre de 16?2Z
I"s$-!ccio"es &e lec$!-a &e &a$os
1sta instruccin lee datos de al+n dispositivo de entrada
a, leer )!B1:4, 04:A8, TA8A
]cual ser el si+ni#icado de las instrucciones si+uientes[
/eer del terminal los valores )!B1:4, 04:A8, TA8A.
Arc"ivndolos en la memoria si los tres nmeros que se teclean en respuesta a ala
instruccin sonK
1272C, 72, 1200, si+ni#icara que se "an asi+nado a las variables esos valores $
equivaldra a la ejecucin de las instrucciones.
)!B1:4 1272C
04:A8 72
TA8A 1200
I"s$-!ccio"es &e esc-i$!-a &e -es!l$a&os
1stas instrucciones se escriben en un dispositivo de salida.
8e asi+naron previamente valores a las variables A . . de manera queK
A 100
. 200

700
8e imprimirn o visualizaran en la pantalla los valores 100, 200, 700.
>nstrucciones de bi#urcacin
1l desarrollo lineal de un pro+rama se interrumpe cuando se ejecuta una bi#urcacin
pueden ser se+n el punto del pro+rama a donde se bi#urca "acia delante o "acia atrs.
/a bi#urcacin puede ser condicional o incondicionalK
>ncondicionalK la bi#urcacin se da sin necesidad del cumplimiento de nin+una
condicin.
ondicionalK la bi#urcacin depende del cumplimiento de una determinada condicin.
Eleme"$os b4sicos &e !" *-o3-ama
5alabras reservadas *inicio, #in, si, entonces... etc.,
>dennti#icadores *nombres de variables esencialmente,
aracteres especiales *coma apostro#e, etc.,
onstantes
=ariables
1Epresiones
>nstrucciones
B!cles
!n bucle o lazo *loop, es un se+mento de un al+oritmo o pro+rama, cu$as instrucciones
se repiten un numero determinado de veces
mientras se cumple una determinada condicin ,
8e debe establecer un mecanismo para determinar las tareas repetitivas.
1ste mecanismo es una condicin que puede ser verdadera o #alsa $ se comprueba una
vez a cada paso o interaccin del bucle
*total de instrucciones que se repiten en el bucle,.
!n bucle consta de tres partesK
D decisin
D cuerpo del bucle
D salida del bucle
1l bucle a continuacin es in#inito $a que las instrucciones *10 *2, *7, se ejecutaran
inde#inidamente, pues no eEiste salida del bucle al no cumplirse una determinada
condicin.
5ara ver ejemplo de bucle pulsa aqui
B!cles a"i&a&os
1n un al+oritmo puede "aber varios bucles. 1stos pueden ser anidados o independientes.
.ucles anidadosK cuando estn dispuestos de tal modo que unos son interiores a otros.
1jemplo aqu
Co"$a&o-es
!n contador es una variable cu$o valor se incremento o decrementa,
!na #orma de controlar a un bucle es mediante un contador
/os procesos repetitivos son la base del uso de las computadoras.
1n estos procesos se necesitan normalmente contar los sucesos o acciones internas del
bucle,
como pueden ser los elementos de un #ic"ero de interacciones a realizar por el bucle.
1l contador se muestra en el ejemplo si+uiente con la variable 4)T.
1ste es un dia+rama de #lujo para un al+oritmo que se desea repetir C0 veces.
1jemplo de contador
Acumulador
!n acumulado es una variable cu$a misin es almacenar cantidades variables
resultantes de sumas sucesivas.
:ealiza la misma #uncin que un contador con de#erencia de que el incremento o
decremento de cada suma es variable en lu+ar de constante como en el caso del
contador.
8e representa con la instruccin 8 8R), donde ) es una variable $ no una
constante.
Decisi7" o selecci7"
uando se quiere especi#icar dos o mas caminos alternativos en un al+oritmos se deben
utilizar estructuras de decisin o solucin. !na instruccin de decisin o seleccin
evala una condicin $ en #uncin del resultado de esa condicin se bi#urca en un
determinado punto.


]ondicin[
Accin
81
Accin
82
I"$e--!*$o-es
!n interruptor o conmutador *sGits", a veces se les denomina indicador, o bandera
*#la+, es una variable que puede tomar diversos valores a lo lar+o de la ejecucin del
pro+rama $ que permite comunicar in#ormacin de una parte a otra del mismo. /os
interruptores pueden tomar dos valores di#erentes 1 $ 0 *Ie a" su nombre interruptor
prendido apa+ado,
1scritura de al+oritmos pro+ramasK
!n al+oritmo consta de dos componentesK
!na cabecera de pro+rama
!n bloque al+oritmo.
/a cabecera de pro+rama es una accin simple que comienza con la palabra al3o-i$mo.
1sta palabra estar se+uida por el nombre asi+nado al pro+rama completo.
1l bloque es el resto del pro+rama $ consta de dos componentes o seccionesK las
acciones de declaracin u las acciones ejecutables.
/as declaraciones de#inen o declaran las variables $ constantes que ten+an nombres.
/as acciones ejecutablesK son las acciones que posteriormente deber realizar el
computador cuando el al+oritmo convertido en pro+rama se ejecute.
Cabece-a &el *-o3-ama o al3o-i$mo
Todos los al+oritmos $ pro+ramas deben comenzar con una cabecera,
Al+oritmo
abecera del pro+rama
8eccin de declaracin
8eccin de acciones
en la que se eEpresa el identi#icado o nombre correspondiente con la palabra reservada
que seala el len+uaje.
1n los len+uajes de pro+ramacin la palabra reservada suele ser pro+ram.
Decla-aci7" &e ;a-iables
1n esta seccin se declaran o describen todas las variables utilizadas en el al+oritmo,
listndose sus nombres $ especi#icando sus tipos.
1sta seccin comienza con la palabra reservada ;a- *abreviatura de variable, $ tiene el
#ormato
;a-
/ista de variablesD1K tipoD1
.
.
lista de variablesD n K tipoD n
Ionde cada lista de variables es una variable simple o una lista de variables separadas
por comas $ cada tipo es uno de los tipos de datos bsicos *entero real c"ar, o boolean,
Decla-aci7" &e co"s$a"$es "!mG-icas
1n esta seccin se declara todas las constantes que ten+an nombre su #ormato es
Co"s$
5iS7.1?1C62
TamanoS?7
0orasS&.C0
Decla-aci7" &e co"s$a"$es ;a-iables ca-4c$e-
/as constantes de carcter simple $ cadenas de caracteres pueden ser declaradas en la
seccin del pro+rama co"s$D al i+ual que las constantes num(ricas.
1jemK
co"s$
1strellaS ZQZ
JraseS Z12de octubleZ
BensajeS i"ola mi neneZ
omentarios Iocumentacin
/a documentacin de un pro+rama es el conjunto de in#ormacin interna $ eEterna al
pro+rama que #acilitara su mantenimiento.
"ttpKNNconceptodepro+rama.tripod.comNpa+inaprincipal."tm
3.3 *alabras reservadas
/as *alab-as cla;e $ las *alab-as -ese-;a&as son utilizadas por el len+uaje $ no
pueden ser usadas como nombres de identi#icadores
Palab-as -ese-;a&as
1n el si+uiente cuadro se listan las palabras reservadas, aquellas que emplea el len+uaje
%ava, $ que el pro+ramador no puede utilizar como identi#icadores. Al+unas de estas
palabras le resultarn #amiliares al pro+ramador del len+uaje NRR. /as palabras
reservadas sealadas con un arterisco *Q, no se utilizan.
abstract boolean brea9 b$te b$valueQ
case castQ catc" c"ar class
constQ continue de#ault do double
else eEtends #alse #inal #inall$
#loat #or #utureQ +enericQ +otoQ
i# implements import innerQ instanceo#
int inter#ace lon+ native neG
null operatorQ outerQ pac9a+e private
protected public restQ return s"ort
satatic super sGitc" s$nc"ronized t"is
t"roG transient true tr$ varQ
void volatile G"ile
/as palabras reservadas se pueden clasi#icar en las si+uientes cate+orasK
Tipos de datosK boolea"D %loa$D &o!bleD i"$D c+a-
8entencias condicionalesK i%D elseD s>i$c+
8entencias iterativasK %o-D &oD >+ileD co"$i"!e
Tratamiento de las eEcepcionesK $-?D ca$c+D %i"all?D $+-o>
1structura de datosK classD i"$e-%aceD im*leme"$sD eH$e"&s
Bodi#icadores $ control de accesoK *!blicD *-i;a$eD *-o$ec$e&D $-a"sie"$
4trasK s!*e-, "!llD $+is.
"ttpKNNGGG.sc.e"u.esNsbGebN#isicaNcurso%avaN#undamentosNintroduccionNprimero."tm
3.) 2epresentacin de datos b,sicos
:epresentacin de Iatos
mo ve la in#ormacin el 5!, en los distintos tipos de datosK
1. )meros enteros sin si+no
2. )meros enteros con si+no
7. aracteres
?. 5unto #lotante
C. 1structuras
&. Arre+los
'. adenas
#Pmeros enteros sin sino
Tipos -unsi+ned- de
:epresentan solamente la ma+nitud, en #orma binaria.
5ermiten almacenar nmeros desde 0 "asta *2gn, D 1
n se refiere al nmero de bits usados para representar
)meros de 1 b$te sin si+noK 0 a 2CCK unsigned char
)meros de 2 b$tes sin si+noK 0 a &CC7CK unsigned short
)meros de ? b$tes sin si+noK 0 a al+o ms de ? mil millonesK unsigned long
#Pmeros enteros con sino
/os ms usuales, -inte+er-, -lon+-.
!n bit *el ms si+ni#icativo, es usado para representar el si+no.
uando es 0, el nmero es positivo
uando es 1, el nmero es ne+ativo
5ermiten almacenar nmeros desde D2g*nD1,, "asta R*2g*nD1,, D 1
.$tesK D12@ a R12', GordsK D72'&@ a 72'&'
5ara propsitos de aprovec"ar el mismo circuito sumadorNrestador para nmeros
con si+no o sin si+no, los nmeros ne+ativos se almacenan usando el
complemento a dos
Com*leme"$o a !"o
5rimer paso para el manejo de nmeros ne+ativos
onsiste en complementar todos los bits de un nmero binario
/os d+itos 0 se convierten en d+itos 1, $ los d+itos 1 se convierten en d+itos 0
3peraciones para obtenerlo
)4T D l+ico
<4: del nmero contra una constante equivalente a tantos 1s binarios como bits
ten+a el nmero.
Com*leme"$o a &os
5ara manejo de nmeros ne+ativos
8e obtiene sumndole uno al complemento a uno
Tiene la propiedad de que si sumamos un nmero binario con su complemento a
dos, nos da 0.
5or tanto, se puede interpretar como el inverso aditivo o sim(trico
2epresentacin de caracteres
1s una abstraccin de datosK
1l 5! solamente sabe procesar nmeros
4tros datos deben representarse en t(rminos num(ricos
di+o de caracterK de#ine una tabla de correspondencias entre caracteres $ nmeros
asi+nados
1.I>K Anti+uo, usado en Bain#rames.
A8>>K es de ' bits *0 a 12',, en 5cs se eEtiende a 2C&
!nicode
*unto flotante
1s una representacin de los nmeros reales, basada en la notacin cient#ica.
1n decimal en la notacin cient#ica podemos escribirK
1.6 E 10
6
o en #orma corta 1.616
1n este caso, el si+no es positivoA la mantisa es el nmero que multiplica, es decir, el
1.6A $ el eEponente *al que se eleva la base, es 6. 1n binario, simplemente se asi+nan los
bits correspondientes para cada uno de estos elementos, pero se usa la base 2 en vez de
la base 10.
!tiliza para su representacin 72 bits *palabra doble,, &? *palabra cudruple,. 1l
#ormato corto utiliza los 72 bits de la si+uiente maneraK
1 bit para si+no,
@ bits para el eEponente,
2? bits para la mantisa.
1l ran+o de los nmeros a representar, en los positivos, es desde 2gD12@ *1.1'C E 10gD
7@, a 2g12@ *7.?0 E 10g7@,. L equivalentemente, en los ne+ativos.
1n , el #ormato de 72 bits es conocido como tipo floatA el de &? bits, como double.
1structuras
!na coleccin de datos cu$a or+anizacin se caracteriza por las #unciones de acceso que
se usan para almacenar $ acceder a elementos individuales de datos.
0a$ tres #ormas distintas de eEaminar una estructura de datosK
)ivel Abstracto o /+ico. 1n este nivel, se encuentra la or+anizacin $
especi#icacin de los procedimientos $ #unciones +enerales de acceso.
)ivel de >mplementacin. 1n este nivel, se eEamina las #ormas de
representacin de los datos en memoria $ cmo implementar los procedimientos.
)ivel de Aplicacin. 1ste nivel presenta con precisin las relaciones entre los
datos $ como son representados por las estructuras.
As, para calcular el espacio que ocupa una estructura $ ver su #orma de
almacenamiento, nos basta con concatenar en memoria las de sus elementos. 5or
ejemplo, la estructuraK
struct ejemplo {
int Datos1;
char Datos2;
};
:equiere 7 b$tes para su almacenamiento, encontrndose el entero a partir de la
localidad 0 relativa al inicio de la estructura, $ el caracter a partir de la localidad 2.
"rrelos
1l arre+lo es un tipo de datos estructurado #ormado por una coleccin #inita de
elementos ordenados, todos del mismo tipo. 1l acceso se realiza mediante un ndice que
permite especi#icar cul es el elemento deseado dando su posicin en la coleccin.
!n b$te es la unidad de memoria que se asi+na para almacenar un valor. 1n el caso de
un arre+lo las sentencias de declaracin le dicen al compilador cuntos b$tes se
necesitan para representar el arre+lo. 1ntonces el nombre del arre+lo se asocia con las
caracteristicas del mismo, estas sonK
1l lmite superior del ran+o.
1l lmite in#erior del ran+o
/a posicin en memoria del primer b$te del arre+lo, llamada la direccin base.
1l nmero de posiciones de memoria necesarias para cada elemento del arre+lo.
/a #uncin de acceso utiliza esta in#ormacin para determinar la posicin del elemento
deseado, usando una simple multiplicacin $ una sumaK
osicion !lemento"i# $ Direccin %ase & (i ' (imite )nferior* + ,ama-o !lemento
'adenas
!na cadena es una secuencia de caracteres. 8e utiliza para +uardar teEtos. Iado que la
lon+itud es dinmica, se usan al+unos bits eEtras con in#ormacin sobre la lon+itud
mEima, la lon+itud real de la cadena o un indicador de #in de cadena.
5or ejemplo, 5ascal almacena en el primer b$te, el nmero de caracteres que contiene la
cadena. 5or ello, la lon+itud mEima que permite es de 2C& caracteres.
permite cadenas de lon+itud inde#inida, pues codi#ica la in#ormacin desde el primer
b$te, "asta encontrar un caracter nulo *cdi+o A8>> 0,, que #unciona como terminador
de cadena.
Biblio3-a%5a
aptulo 2 del libro de teEto.
Banuales de $ 5ascal.
1stndares, por ejemplo el de la >111 para representacin de nmeros reales.
"ttpKNNGGG.siner+iaDGeb.com.mENclasesNasm6'0@NTemasNclase0?."tm
3.+ Declaracin de variables$ 'onstantes$
*rocedimientos % /unciones
Co"s$a"$es ? ;a-iables
!na %onstante es aqu(lla que no cambia de valor durante la ejecucin de
un pro+rama *o comprobacin de un al+oritmo en este caso,. 8e representa
en la #orma descrita para cada cate+ora.
/as Variables son aqu(llas que pueden modi#icar su valor durante la
ejecucin de un pro+rama *idem,.
8u representacin se da a traves de letras $ smbolos +eneralmente
num(ricos a los que se les asi+na un valor.
1jemplosK


onstantes =ariables
)um(ricos
7&
?C0.7C
0.C@
A
)om
1dad
iudad
1statura

adena
cAc
c%uanc
c/a 5azc
/+icos
Jalso
=erdadero
.ariables
/os datos que se utilizan dentro del pro+rama se +uardan dentro de lo que se denominan
variables. /as variables se caracterizan por tenerK
un nombre
un tipo
un valor
/ombre, tipo 0 1alor
1l nombre +eneralmente puede ser cualquier combinacin de caracteres, d+itos
$ el si+no de subra$ado. /a limitacin que presentan muc"os len+uajes con
respecto al nombre es que debe comenzar por un caracter. 0a$ al+unos len+uajes
que "acen distincin entre ma$sculas $ minsculas, mientras que otros no.
1l tipo de dato describe el conjunto posible de valores que puede tener una
variable $ tambi(n las operaciones que se puede "acer con ella. ada len+uaje
tiene un conjunto de tipos de datos bsico construdos dentro del len+uaje. /os
tipos elementales sonK
o caracter o c"ar
o entero o int
o real o #loat
o l+ico o boolean
1l valor viene dado por el tipo de variableK
o !na variable de tipo caracter puede tener como valor cualquier caracter
que se pueda introducir por teclado. 5ara representar un valor de tipo
caracter se usan las comas simples por ej. cac. 1ste "ec"o permite evitar
ambi+bedades en el caso de "aber de#inido una variable con el nombre
de una nica letra.
o !na variable entera permite valores num(ricos tanto positivos como
ne+ativos, por ej. D1', 2'@0, 0. 8uele "aber un valor mnimo $ mEimo
permitidos.
o !na variable real permite valores decimales, por ej. 7.1?1C, 1000.@'6.
o /as variables boolenas o l+icas pueden tener dos valores, True
*verdadero, o Jalse *#also,.

8e+n el tipo de las variables se pueden utilizar unos u otros operadores.
o on todos los tipos de datos se pueden utilizar las operaciones de
relacionesK
menor l
ma$or T
i+ual S
distinto mS
menor o i+ual lS
ma$or o i+ual TS
o on los enteros $ reales se pueden utilizar las operaciones aritm(ticas
bsicasK
suma R
resta D
multiplicacin Q
divisin N
o on las variables booleanas se pueden "acer operaciones l+icasK
A)I *L o multiplicacin l+ica,
4: *4 o suma l+ica,
)4T *ne+acin,
que se corresponden con la tabla de verdad "abitual de l+ica.

A B
NOT
A
A OR B A AND B
True True Jalse True True
True Jalse Jalse True Jalse
Jalse True True True Jalse
Jalse Jalse True Jalse Jalse
Declaracin de 1ariables
A la "ora de escribir un pro+rama, el pro+ramador debe declarar las variables que
utilizar. Feneralmente las declaraciones de "acen al comienzo del pro+rama, $ como
mnimo se debe de#inir el nombre $ el tipo de cada variable que se utilizar. Al+unos
len+uajes permiten especi#icar el valor inicial de cada variable.
tipo4dato lista4nombre4variables5
E.em*lo<
int sumando1, sumando2, total;
boolean es2cierto, llue1e;
c-ar letra2dni;
float descuento, precio2neto;
3onstantes
0a$ un caso especial de datos denominados constantes. /as constantes no cambian
durante la ejecucin del pro+rama. /a declaracin de la constante incluir el valor que
tendr a lo lar+o del pro+rama.
const tipo4dato nombre4constante 6 valor4constante5
E.em*lo<
const float pi $ 4.151672;

recedencia de operadores
!na eEpresin es una combinacin de operaciones entre variables $ literales. 1jemplosK
D *a T C, A)I *b l 7, 4: *c S 10,
D a N b R c Q a
uando se evala una eEpresin con muc"os operandos, el resultado puede ser mu$
di#erente dependiendo del orden de ejecucin de las operaciones. 5or esto eEisten las
si+uientes prioridades o precedencia de los operadoresK

4peradores de prioridad 1 *ms alta, )4T
4peradores de prioridad 2 Q , N , A)I
4peradores de prioridad 7 R , D , 4:
4peradores de prioridad ? *ms baja, l , lS, T , TS , S , mS
/a re+la de ejecucin establece que los operadores de ma$or prioridad se ejecutan antes
que los de ms baja prioridad. /os operadores de i+ual prioridad se ejecutan en el orden
en que estn escritos, es decir, de izquierda a derec"a.
8i una eEpresin contiene una subeEpresin entre par(ntesis, (stos #uerzan la ejecucin
de la subeEpresin, es decir, se ejecuta primero. 8i eEiste un anidamiento de par(ntesis,
se ejecuta primero la subeEpresin ms interna.
Declaracin de funciones
Sinopsis
La declaracin ( 4.1.2) da a conocer la funcin al compilador, de forma que
a partir del punto de declaracin, ya se pueden realizar invocaciones a la
misma. A su vez, la definicin estar en algn otro punto del programa, tal vez
en una librera externa (en forma ya compilada) o en otro mdulo de programa
(como texto fuente).
Una funcin puede ser declarada varias veces en un mismo programa, y las
declaraciones pueden aparecer en cualquier orden; en un fichero fuente o en
varios, pero en cualquier caso antes de su uso, es decir: antes de cualquier
invocacin a la funcin [5]. Adems de declarar el nombre de la funcin y el
tipo devuelto (por defecto se supone int ) se declaran tambin el tipo de los
parmetros.
La declaracin tiene la siguiente sintaBis:
[e5tern] <tipo-devuelto> nombre-funcion ()
W2a
[e5tern] <tipo-devuelto> nombre-funcion (<tipo>, ...)
W2b
[e5tern] <tipo-devuelto> nombre-funcion (<tipo>
<parametro>, ... ) W2c
1!emplos@
extern int funcion1 (); // no acepta ningn
argumento
extern int funcion1 (void); // mejor que la
anterior
funcion2 (char, int); // por defecto supone
que devuelve int
int funcion2 (char, int); // mejor que la
anterior
char funcion3 (char c, int i); // incluye nombres de
parmetros
'omentario
El especificador <tipo-devuelto> es opcional; por defecto se supone
int, as que las declaraciones que siguen son equivalentes [4]:
int func (<tipo> <parmetro>, ...)
func (<tipo> <parmetro>, ...)
#ota: Los compiladores MS Visual C++ y Borland C++ admiten que ciertos
especificadores opcionales acompaen a la declaracin de funciones y
otros objetos. Tales especificadores son de utilidad en circunstancias
especficas ( 4.4.1b).
Declaraciones
Recuerde que las declaraciones deben realizarse antes que cualquier uso de la
funcin. A su vez las definiciones pueden estar en cualquier sitio, aunque en
algunos casos pueden existir excepciones (sustitucin inline 4.4.6b).
Las declaraciones de funciones tienen un nombre especfico: se denominan
prototipos ; el primero de los anteriores (2a ) es vlido, aunque
desaconsejado (herencia del C); es el denominado estilo clsico Kernighan &
Ritchie; el segundo (2b ), y tercero (2c ), son los aceptados en C++
[
1].
#ota: Es importante resaltar que en la declaracin de parmetros no est
permitido incluir funciones, es decir: las funciones no pueden pasar como
argumentos a otras funciones [6]. Sin embargo C++ dispone de recursos
cuando esto es necesario: Pasar un puntero ( 4.2.4) o una referencia (
4.2.3) a la funcin.
El viejo estilo K&R tiene la desventaja de no permitir al compilador comprobar
el nmero y tipo de los argumentos utilizados en las llamadas a la funcin.
Este problema fue eliminado con la introduccin de los prototipos que utilizan la
forma completa
[
2], en la que se especifica el nmero y tipo de cada argumento
aceptado por la funcin. El compilador usa estos datos para comprobar la
validez de las llamadas a la funcin y como se ilustra en el ejemplo, es capaz,
en su caso, de realizar dentro de ciertos lmites, un modelado de tipo
("Casting") de los argumentos para garantizar que coinciden con el tipo
esperado.
#ota: El mecanismo anterior, permite al compilador efectuar una
comprobacin de tipos de los argumentos que pasan y del valor devuelto.
Los lenguajes en los que no se realizan estas comprobaciones, se
denominan de d(bilmente tipados ("Weakly typed"), tienen la desventaja
de que no conocen exactamente el tipo de cdigo que ejecutarn.
Supongamos que se tiene el siguiente cdigo:
extern long lmax(long v1, long v2); // prototipo
funcion() {
int limit = 32;
char ch = 'A';
long mval;
mval = lmax(limit, ch); // Llamada a la
funcion.
}
Puesto que se dispone de un prototipo para la funcin lmax, este programa
convierte los parmetros limit y ch a lon (utilizando las reglas estndar de
asignacin), antes de colocarlos en la pila para la llamada a lmax. Si no
hubiese existido el prototipo, limit y ch hubieran sido puestos en la pila como
entero y carcter respectivamente, en cuyo caso, los valores pasados a limit
no hubieran coincidido con el tamao y/o contenido esperados por esta,
originando problemas ( 4.4.6 Llamadas a funciones y conversin de
argumentos).
La inclusin del especificador opcional eBtern, sirve para indicar al compilador
que la definicin de la funcin se encuentra en otro fichero distinto del actual.
En caso contrario dicha definicin debe encontrarse en algn lugar del fichero
d
d
(si es que existen llamadas a dicha funcin). Es decir, si aparece el siguiente
trozo de cdigo:
int alfa (int deg, int min, int sec); // declaracin de
alfa
...
int gr;
gr = alfa( x, y, z); // uso de alfa
la definicin de alfa debe estar en algn sitio del fichero que contiene dichas
instrucciones, en caso contrario el compilador devolver un error:
Unresolved external 'alfa()' referenced from ....OBJ.
Es importante recordar que las funciones tienen mbito global y que,
sus declaraciones (prototipos) aunque suelen estar al principio
(inmediatamente despus de las directivas de preprocesado), pueden
aparecer en cualquier parte del fichero. Ponerlas al principio tiene la
ventaja de que sus nombres sean conocidos en la totalidad del fichero, con
lo que pueden ser invocadas desde cualquier punto -desde cualquier otra
funcin, incluso main()- sin tener que declarar un prototipo dentro de cada
funcin que las invoque.
*rototipos de funciones
Los prototipos juegan un rol importante en la programacin C++; sirven
tambin para clarificar y documentar el cdigo, sobre todo si los nombres de las
variables son significativos. Por ejemplo, la funcin strcpy tiene dos
parmetros: una cadena fuente y una destino, la cuestin es: Cual es cual?
char *strcpy(char* dest, const char* source);
Si se incluye un identificador en el parmetro de un prototipo, solo es utilizado
para los posibles mensajes de error relativos a tal parmetro sin ningn otro
efecto. De hecho, los identificadores (nombres) de los parmetros suelen ser
largos y descriptivos en los prototipos, mientras que en las definiciones suelen
ser abreviados, sin que, en este aspecto, tengan que haber coincidencia entre
ambos (ver reglas de mbito para los identificadores de parmetros en
prototipos de funciones 4.1.3). Como puede deducirse de estas palabras,
esto significa que en realidad los nombres de los argumentos no son
imprescindibles en los prototipos; solo son necesarios los tipos de los
parmetros. Es decir: El prototipo de la funcin anterior podra perfectamente
ser sustituido por:
char *strcpy(char*, const char*);
Un declarador de funcin con la palabra void entre parntesis: func(void);,
indica que la funcin no acepta ningn parmetro; es equivalente a la expresin
como func();, que tambin declara una funcin sin parmetros.
*rototipos % fic0eros de cabecera:
Es costumbre que los prototipos de las funciones incluidas en las libreras del
lenguaje se agrupen en ficheros especficos, los denominados fic0eros de
cabecera, que son ficheros de texto (en realidad ficheros fuente 1.4) en los
que se agrupan todas las declaraciones que se utilizan en la librera.
#ota: En realidad, los ficheros de cabecera no solo incluyen los prototipos
y declaraciones de las funciones, tambin las declaraciones de las
estructuras, macros ( 4.9.10b) y clases ( 4.11.2a) utilizadas.
Por otra parte, tambin es frecuente que los programadores C++ construyan
sus propias librer.as que acompaan a las que vienen preconstruidas en el
lenguaje. Para ello se agrupan en ciertos mdulos aquellas funciones o clases
ms frecuentemente utilizadas. Estos mdulos son compilados y enlazados de
una forma especial de forma que no se obtiene un ejecutable, sino una librer.a
de las que existen varios tipos ( 1.4.4a). En cualquier caso, sean libreras
preconstruidas en el lenguaje o de fabricacin propia, los prototipos de las
funciones incluidas en tales libreras se agrupan en ficheros de cabecera. Las
que vienen con el lenguaje se localizan en el directorio \Include. Las de
fabricacin propia se deben mantener en otro directorio separado del anterior.
Puesto que es imprescindible incluir en cada fichero fuente la declaracin de
cada funcin antes de que pueda ser utilizada , el hecho de tener agrupadas
las declaraciones en un fichero de cabecera es de gran utilidad, porque solo es
preciso incluir una directiva include ( 4.9.10g) al principio de cada fuente
para tener la seguridad de que todos los prototipos estarn presentes. De otro
modo tendra que escribirlos manualmente en cada fuente en que usara
funciones de la librera.
En la documentacin que acompaa a toda librera se indica siempre, junto con
un ejemplo de uso, el nombre del fichero de cabecera que contiene los
prototipos de las funciones utilizadas en la librera. Sin embargo, en ocasiones,
cuando no se tiene a mano un buen manual de uso, o existe la sospecha de
una errata en el mismo, puede ser til echar un vistazo al fichero de cabecera
en que se incluye el prototipo de la funcin, ya que contiene bastante
informacin sobre su uso; tipo y nmero de parmetros, valor devuelto, etc.
#ota: Se ha llegado a afirmar que los ficheros de cabecera contienen toda
la informacin necesaria para usar las libreras de cualquier tipo. Aunque
desde luego pueden ser de gran ayuda, la afirmacin es un poco
exagerada. En lo que respecta a las funciones, los prototipos contienen en
realidad toda la gramtica de su invocacin, pero poco o nada sobre la
"funcionalidad".
#Pmero variable de arumentos
Normalmente los prototipos de funciones declaran un nmero fijo de
parmetros (que puede ser ninguno). Para las funciones que pueden aceptar
un nmero variable de parmetros (tales como printf), el prototipo puede
terminar en puntos suspensivos (...). Esta elipsis indica que la funcin puede
ser invocada con diferentes tipos de argumentos en diferentes ocasiones. Los
puntos pueden colocarse al final de una sublista de parmetros de conocidos,
por ejemplo:
func(int *count, long total, ...);
Por supuesto, esta forma de prototipo reduce la comprobacin que puede
efectuar el compilador; los parmetros fijos son comprobados en tiempo de
compilacin, y los variables son pasados sin comprobacin
[
3].
1!emplos
A continuacin algunos ejemplos adicionales de prototipos y declaraciones de
funciones. Obsrvese que para mayor concisin, en todas ellas se han omitido
los nombres de los parmetros formales (que como hemos indicado, son
opcionales en los prototipos):
f(); /* En C, sin datos sobre los
parametros, el estilo clsico K&R.
Devuelve int */
f(); // En C++, f no recibe
argumentos. Devuelve int.
int f(void); // f devuelve int, no recibe
argumentos.
int p(int,long); /* p devuelve int, acepta dos
parmetros: El primero un int, el segundo
un long */
int __pascal q(void); /* q funcin Pascal, devuelve
int, no recibe parmetro */
int printf(char *format,...); /* Devuelve int; un
parmetro fijo, puntero a carcter,
despus cualquier nmero de argumentos
adicionales de tipo desconocido */
char* f(int) // funcin que devuelve puntero a
carcter, acepta un int.
int* f(int) // funcin que devuelve puntero a
int, acepta int.
struct str f(int) // funcin que devuelve
estructura str acepta un int.
int (*f (int))(int); /* funcin que acepta un entero y
devuelve un puntero a funcin que acepta
un int y devuelve un entero */
int (*(*f())[10])(); /* funcin que no recibe
argumentos, devuelve un puntero a un array
de 10 punteros a funcin que devuelven
enteros */
int f(struct S* Sptr); /* funcin que recibe como
argumento un puntero a una estructura y
devuelve int */
d
int (B::* getptr())(); /* funcin que no recibe
argumentos, devuelve un puntero a funcin
miembro de la clase B que no recibe
argumentos y devuelve un int */
*olimorfismo
Aparte de estas tareas de comprobacin y modelado de tipos, en realidad el
objetivo principal de incluir en la declaracin de funciones una descripcin
detallada del valor devuelto y de los parmetros aceptados, es permitir lo que
se llama sobrecara (de funciones). Esto significa que dentro del mismo
mbito puedan definirse varias funciones con nombres idnticos pero distintos
parmetros y por supuesto distintas definiciones. Ms tarde, el compilador ser
capaz de saber a cual de ellas nos estamos refiriendo, precisamente
analizando los parmetros que pasamos a la funcin. Por ejemplo, en C++
est permitido el siguiente trozo de cdigo:
int alfa (int deg, int min, int sec); // declaracion-1
de alfa
void alfa (int deg); // declaracion-2
de alfa
int alfa (char n); // declaracion-3
de alfa
...
n = alfa('c'); // invocacin de
alfa-3
el compilador conoce que, en este caso, la invocacin se refiere a la tercera
declaracin de la funcin alfa, precisamente por el argumento que estamos
utilizando.
#ota: Las funciones main, Oin-ain y Lib-ain no pueden ser
sobrecargadas. Ejemplo:
extern "C" void WinMain(int, char*, char*);
void WinMain(int, short, char*, char*); // Error!!
Como veremos inmediatamente ( 4.4.1a), para saber que definicin ajusta
mejor con los argumentos actuales, el compilador sigue una serie de reglas
denominadas de conruencia est,ndar de arumentos.
http://www.zator.com/Cpp/E4_4_1.htm
Declaracin de Funciones
En el lenguaje que estamos describiendo es posible declarar una o varias funciones, que pueden
poseer parmetros formales y variables locales. En la gramtica empleada para hacer esta
descripcin suponemos que la declaracin de variables locales es a travs de la seccin que
declara cualquier variable global, por lo que debemos establecer diferencias entre globales y
locales y las implicaciones que tiene declarar una funcin. Consideremos el siguiente programa:
Entero a, b
!eal c
Caracter "
#uncin Entero $ %!eal a, !eal b&
Entero ', c
(nicio
...
#in
#uncin Caracter y %Entero a&
Caracter b
(nicio
...
#in
(nicio
...
#in
)os puntos suspensivos indican rdenes que no son relevantes en este momento. *sociada a
cada funcin debe considerarse una tabla diferente para registrar tanto a sus variables locales
como a los parmetros que sta tenga %los parmetros en el conte$to de la funcin act+an como
variables locales&. ,i la suposicin es que las mismas acciones que ya reali"amos para las
variables globales se aplicarn para una funcin, obtendremos un esquema para la tabla de
s-mbolos como el siguiente:
donde $, y son funciones %registradas en el conte$to de las variables globales como
fun.tipo/que/devuelve/la/funcin& y que lleva a construir su propia tabla, que le dar dominio y
alcance a cada variable:
si estoy en la tabla global, cono"co las variables globales y las
funciones declaradas pero no tengo acceso a las variables declaradas
en la funcin.
si estoy en la tabla de la funcin cono"co a las variables locales, puedo
conocer o tener acceso a las variables globales y a las funciones
declaradas previamente. El tener acceso a las variables locales antes
que a las variables globales permite que e$ista duplicidad en nombres
en variables locales y globales y condiciona su dominio y alcance.
Es por eso que la tabla de una funcin tiene un enlace a la tabla global para buscar en esta una
variable no locali"ada en la tabla de la funcin.
0or cuestiones de simplicidad, consideraremos que las tablas se construyen de manera
secuencial en una regin fija de memoria. )a declaracin mencionada arriba, quedar-a
representada de la siguiente manera:
donde esta tabla de s-mbolos empie"a en la localidad 1. *hora bien, esta estructura no distingue
entre variables locales y los parmetros que una funcin puede tener. 0ara resolver esto,
tomamos la +ltima entrada a una funcin para registrar en ella el n+mero de parmetros que la
funcin posee distingimos esta entrada al emplear un s-mbolo no articulable como nombre de
variable %!&. )a tabla queda conformada como sigue:
Con esta estructura en mente se agregarn, a las reglas gramaticales, acciones que permitan
construirla.
http://webdia.cem.itesm.mx/ac/aesparza/aula/funcion0.html
42 +'&C%"&E
Una %uncin a partir de uno o m#s valores llamados argumentos o par#metros devuelve un resultado en
el nombre de la %uncin&
$eclaracin de funciones* una %uncin constar$a de*
a) Cabecera* tambi3n se le llama de.nicin de la %uncin& En la de.nicin de la %uncin deben .gurar una
serie de par#metros, llamados par#metros %ormales para que cuando se llame a la %uncin se pueda
establecer una correspondencia I a I ( de izquierda a derec5a entre los par#metros actuales ( %ormales&
b) En el cuerpo de la %uncin estar#n el bloque de declaraciones ( el bloque de instrucciones& 7ebe
incluir una instruccin mediante la cual la %uncin tomar$a un valor para devolverlo al programa principal
o llamador&
8uncin a nombre de la %uncin b (lista de par#metros %ormales)* tipo de dato devuelto&
7eclaracin de las variables locales&
?nstrucciones (?nicio)&
)os tipos de datos validos como resultado de una %uncin son* ordinales, reales, cadenas, punteros (
lgicos&
En una lista de par#metros %ormales es posible separar estos par#metros con G ( 5a( que indicar cada
tipo&
62 P#"CE$%(%E&!"
Un procedimiento es un subprograma o subalgoritmo que realiza una tarea especi.ca ( que puede ser
de.nido mediante X, I o n par#metros&
9anto la entrada de in%ormacin al procedimiento como la devolucin de resultados desde el
procedimiento al programa principal o llamador o conductor se realiza a trav3s de los par#metros& El
nombre de un procedimiento no esta asociado a ninguno de los resultados que obtiene& )a llamada a un
procedimiento se realiza con la instruccin >)lamar_a@ o directamente con el nombre del procedimiento,
es decir*
anombre del procedimientob (lista de par#metros que se llaman actuales o reales)&
$eclaracin de procedimientos* es similar a la de una %uncin e+cepto que el nombre del
procedimiento no se encuentra asociado a ning,n resultado&
'rocedimiento anombre del procedimientob(lista de par#metros %ormales)
(declaracin de variables locales)
?nicio
&
&
&
8in_procedimiento
)a lista de par#metros %ormales se debe separar por G ( debemos indicar el tipo de cada uno de ellos&
http://html.rincondelvago.com/programacion-en-c_9.html
3.3 4peraciones aritm(ticas$ licas % relacionales.
O*e-a&o-es ? O*e-a"&os

O*e-a&o-es
!n operador es el smbolo que determina el tipo de operacin o relacin
que "abr de establecerse entre los operandos para alcanzar un resultado.

/os operadores se clasi#ican en tres +ruposK
Aritm(ticos.
:elacionales.
/+icos.

1., O*e-a&o-es A-i$mG$icos
8on aqu(llos que permiten la realizacin de clculos aritm(ticos. !tilizan
operandos num(ricos $ proporcionan resultados num(ricos.

O*e-a&o- O*e-aci7"
R
8uma
D
:esta
Q
Bultiplicacin
N
Iivisin real
Iiv
Iivisin entera
Bod
:esiduo
g
1Eponenciacin


1jemplosK
'R7 S 10 10 Iiv ? S 2
'D7 S ? 20 Bod 7 S 2
'Q7 S 21 C Bod ' S C
10N?S 2.C ? g 2 S 1&

1n la eEpresin 'R7, los valores ' $ 7 se denominan operandos. 1l valor
de la eEpresin 'R7 se conoce como resultado de la eEpresin.

Todos los operadores aritm(ticos no eEisten en todos los len+uajes de
pro+ramacin, por ejemplo, en Jortran no eEisten Iiv $ mod.


3peradores "iv ) Mod
1l smbolo = se utiliza para la divisin real, $ el operador Di; representa la
divisin entera.
EH*-esi7" Res!l$a&o EH*-esi7" Res!l$a&o
10.CN7.0 7.C 10 Iiv 7 7
1N? 0.2C 1@ Iiv 2 6
2.0N?.0 0.C 70 Iiv 70 1
70N70 1.0 10 Bod 7 1
&N@ 0.'C 10 Bod 2 0


O*e-a&o-es Relacio"ales
5ermiten realizar comparaciones de valores de tipo num(rico o carcter.
1stos operadores sirven para eEpresar las condiciones en los al+oritmos.
5roporcionan resultados l+icos.

O*e-a&o- Si3"i%ica&o
l
Benor que
T
Ba$or que
S
>+ual que
lS
Benor o i+ual que
TS
Ba$or o i+ual que
lT
Ii#erente de


El %o-ma$o 3e"e-al *a-a las com*a-acio"es es<
e8presin1 o*e-a&o- &e -elaci7" e8presin2

1l resultado de la operacin ser =erdadero o Jalso. As por ejemplo, si AS? $
.S7, entoncesK
AT. 1s =erdadero
*AD2, l *.D?, 1s Jalso

/os operadores de relacin se pueden aplicar a cualquiera de los cuatro
tipos de datos estndarK enteros, real, l+ico $ carcter.
iAZ l i;Z S =erdadero
iAZ T iaZ S Jalso
iBA:>AZ l i%!A)Z S Jalso *se considera la primera letra,
i%A>B1Z T i%4:F1Z S Jalso

7ota2 La com*a-aci7" &e ca&e"as se -i3e *o- el c7&i3o ASCII.


P-io-i&a& De O*e-a&o-es A-i$mG$icos ? Relacio"ales
Ietermina el orden en que "abrn de realizarse las operaciones en una
eEpresin determinada. 5ara obtener la prioridad se deben conocer las
si+uientes re+lasK

/as operaciones que estn encerradas entre par(ntesis se evalan primero. 8i
eEisten di#erentes par(ntesis anidados *interiores unos a otros,, las
eEpresiones ms internas se evalan primero.

/as operaciones aritm(ticas dentro de una eEpresin suelen se+uir el
si+uiente orden de prioridad.

O*e-a&o- P-io-i&a&
g
Alta
Q, N, Iiv

R, D, Bod
:elacionales
.aja

1n caso de coincidir varios operadores de i+ual prioridad en una
eEpresin o subeEpresin encerrada entre par(ntesis, el orden de prioridad en
este caso es de izquierda a derec"a.

uando se desea realizar una operacin con baja prioridad por
adelantado, debe a+ruparse a los operandos involucrados.
? R 12 N2 S 10 *sin a+rupar,
*? R 12, N2 S @ *con a+rupador,

E.em*lo<
4btener los resultados de las eEpresionesK
,2 N O P / Q 1 = 2 , 6

8olucinK
,2 NO P / Q R

:esultaK
,2 N OP S=2 ,6
,/S P S=2 ,6
,/S P / , 6
,/9 , 6
,11

!os par#ntesis tienen prioridad sobre el resto de las operaciones.
A N EBP1F /a constante 7 se suma primero al valor de ., despu(s este
resultado se multiplica por el valor de A.

EANBF P1 A ? B 8e multiplican primero $ a continuacin se suma 7.

A P EB=CF P D 1sta eEpresin equivale a AR .N R I


O*e-a&o-es L73icos
8on aqu(llos que permiten la combinacin de condiciones para #ormar
una sola eEpresin l+ica. !tilizan operandos l+icos $ proporcionan
resultados l+icos tambi(n.

O*e-a&o- Relaci7"
not
)e+acin *)o,
and
onjuncin *L,
or
Iis$uncin *4,
Eor
Iis$uncin
1Eclusiva
*4N84/4,



Se ob$ie"e 'e-&a&e-o si<
)4T
1l operando es #also
A)I
Ambos operandos son
verdaderos
4:
Al menos un operando es
verdadero
<4:
8olo uno de los operandos
son verdadero



T M NOTETF NOTEMF T AND M T OR M
T TOR
M
0 0 = = J J J
' 0 J = J = =
0 ' = J J = =
' ' J J = = J


&rioridad "e !os 3peradores !gicos
/os operadores aritm(ticos se+uan un orden espec#ico o de prioridad
cuando eEistan ms de un operador en las eEpresiones. Ie modo similar los
operadores l+icos $ relacionales tienen un orden de prioridad.
E.em*los<
No$ 2 U 9 5roduce un error, $a que el operador "o$ se
aplica a ?.
No$ E2 U 12F 5roduce un valor verdadero.
E1.CVHF A"& EHV( PO.CF 8i E vale ' $ z vale ?, se obtiene un valor #also.

Asi3"aci7"
/a operacin de asi+nacin es el modo de darle valores a una variable.
/a operacin de asi+nacin se representa por el smbolo u operador . /a
operacin de asi+nacin se conoce como instruccin o sentencia de asi+nacin
cuando se re#iere a un len+uaje de pro+ramacin.
A #in de manejar datos por medio de variables, estos pueden recibir
valores determinados. 1l tipo de los valores que pueden recibir dependen de
la declaracin previa de tales variables.
1n una asi+nacin se resuelve, primeramente la eEpresin *al lado
derec"o del smbolo de asi+nacin, $ se asi+na el resultado en la variable.
1l #ormato +eneral de asi+nacin esK
)omPvariable 1Epresin
Ionde 18presin puede ser una variable o constante, operacin, #uncin.
1jemploK
A 6
8i+ni#ica que la variable A se le "a asi+nado el valor 6. /a accin de
asi+nar es destructiva, $a que el valor que tuviera la variable antes de la
asi+nacin se pierde $ se reemlaza por el nuevo valor. As en la secuencia de
operacionesK
A 70
A 1@6
A 6
uando se ejecutan, el ltimo valor que toma A ser 6, $a que los valores
anteriores a este "an desaparecido.
/as acciones de asi+nacin se clasi#ican se+n sea el tipo de
eEpresiones K 9ritm#ticas+ !gicas ) de %aracteres*

Asi+nacin Aritm(tica
/as eEpresiones en las operaciones de asi+nacin son aritm(ticasK
8uma CR10R2 8e evala la eEpresin CR10R2 $ se asi+na a la
variable 8uma, es decir, 1' ser el valor que toma
8uma.
Asi+nacin /+ica
/a eEpresin que se evala en la operacin de asi+nacin es l+ica.
8upn+ase que B, ), $ 5 son variables de tipo l+ico.
B @ l C
) B o *' lS 12,
5 ' T &
Tras ejecutar las operaciones anteriores, las variables B,),5 toman los
valores, falso, 1erdadero, 1erdadero respectivamente.

Asi+nacin de caracteres
/a operacimn que se evala es de tipo caracter.
E c7 de Ba$o de 1666c
/a accin de asi+nacin anterior asi+na la cadena de caracteres c7 de Ba$o de
1666c a la variable de tipo carcter E.
EH*-esio"es
/as eEpresiones son combinaciones de constantes, variables, smbolos de
operadores, par(ntesis $ nombres de #unciones especiales. /as mismas ideas
son utilizadas en notacin matemtica tradicional A por ejemplo K
a P b E bP/F A!5 los *a-G"$esis i"&ica" el o-&e" &e c4lc!lo.

ada eEpresin toma un valor que se determina tomando los valores de
las variables $ constantes implicadas $ la ejecucin de las operaciones
indicadas.

!na eEpresin consta de operadores ? operandos. 8e+n sea el tipo de
objetos que manipulan, las eEpresiones se clasi#ican en K
Aritm(ticas
:elacionales
/+icas
arcter

1l resultado de la eEpresin num(rica es de tipo num(rico A el resultado
de una eEpresin relacional $ de una eEpresin l+ica es de tipo l+ico A el
resultado de una eEpresin carcter es de tipo carcter.

1., EH*-esio"es A-i$mG$icas
/as eEpresiones aritm(ticas son anlo+as a las #rmulas matemticas. /as
variables $ constantes son num(ricas *real o entera, $ las operaciones son las
aritm(ticas.

R suma
D resta
Q multiplicacin
N divisin
QQ, g eEponenciacin
div divisin entera
mod mdulo *resto,

/os clculos que implican tipos de datos reales $ enteros suelen dar
normalmente resultados del mismo tipo si los operandos lo son tambi(n. 5or
ejemplo, el producto de operandos reales produce un real.

E.em*lo <
2 H 9 se representa por ? Q &
1
W
se representa por 7 g 6
1S &i; 9 se representa por 1@N&
/., EH*-esio"es L73icas Eboolea"asF
1s una eEpresin que solo pueden tomar los valores de K verdadero $
#also. /as eEpresiones l+icas se #orman combinando constantes l+icas,
variables l+icas $ otras eEpresiones $ otras eEpresiones l+icas utilizando los
operadores l+icos "o$, a"& $ o-, $ los operadores relacionales *de relacin o
comparacin, S, T, l, lS, TS, lT.
3.5 Diseo$ 1dicin$ 'ompilacin % 1!ecucin de
proramas
*roceso de creacin de un a!ecutable
1scribir el cdio
Suponiendo cumplimentados los pasos anteriores, el programador est en
condiciones de construir una imagen mental clara de como ser esa conexin
entre la informacin de entrada y la salida, es lo que se denomina "espacio" de
la solucin ("'How' domain"); su forma concreta es justamente el fuente del
programa que se pretende. La codificacin consiste justamente trasportar a
papel (en el lenguaje de programacin elegido) la imagen mental de esa
conexin.
Para escribir el cdigo fuente de un programa C++ solo se puede utilizar un
subconjunto de 96 caracteres del juego total de caracteres US-ASC (
2.2.1a). Son los siguientes [8]:
)!e3o &e ca-ac$e-es im*-imiblesK
a b c d e f g h i j k l m n o p q r s t u v w x y
z
A B C D E F G H I J K L M N O P Q R S T U V W X Y
Z
0 1 2 3 4 5 6 7 8 9
_ { } [ ] # ( ) < > % : ; . ? * + / ^ & | ~ ! = ,
\ "
Ca-ac$e-es "o,im*-imibles denominados separadores
1spacio "orizontalA Tabulacin "orizontal *TA.,A Tabulacin vertical
*=T,A
8alto de #orma *JJ,A )ueva lnea *)/,.
#ota: Para escribir el cdigo solo hace falta un editor de texto plano,
aunque las modernas "suites" de programacin incluyen editores
especficos que estn conectados con el depurador, el compilador el
enlazador (ver ms adelante) e incluso el sistema de ayudas, de forma
que, por ejemplo, pueden mostrarnos automticamente la sentencia en la
que se ha producido un error de compilacin, o la pgina correspondiente
del manual si pulsamos en una palabra reservada y pedimos ayuda (F1
generalmente). Tambin muestran en diversos colores las palabras clave,
los comentarios, etc. Los ms avanzados disponen incluso de opciones
que podramos calificar de "inteligentes", en el sentido que pueden prever
cual ser nuestro prximo movimiento en funcin de la sentencia que
estamos escribiendo (por ejemplo, ofrecernos una lista de las propiedades
y mtodos de una clase si nos estamos refiriendo a ella).
Si el programa es mediano o grande, es posible que todava tenga que realizar
una labor previa: disear a grandes rasgos cuales sern los mdulos del
programa; mdulos que se correspondern aproximadamente con la
distribucin del cdigo en ficheros fuente independientes. Quizs tenga que
decidir tambin si algunas partes aparecern como librer.as [1]. Recuerde lo
indicado al respecto al tratar de los Subespacios de Nombres ( 4.1.11).
Esta fase es especialmente importante en el caso de programas muy grandes,
cuyo desarrollo se reparte entre varios programadores que se encargan de uno
o varios de estos mdulos. En estos casos, el anlisis, la especificacin, la
subdivisin en partes (con sus especificaciones particulares), y la asignacin de
estas como tareas a los programadores, lo habr realizado el jefe de
programacin y desarrollo.
Durante la fase de escritura no desdee dos puntos:
ncluir la mayor cantidad de comentarios y aclaraciones posibles.
Cuando se est muy "metido" en el programa todo parece evidente, pero
piense que tiene que retocarlo dentro de unos aos, quizs entonces le
parezca "Chino" y agradecer haber dejado la mayor cantidad de
documentacin y aclaraciones al respecto. ncluso si es seguro que no
volver a verlo, piense en el sufrido programador que le seguir si tiene
que habrselas con su cdigo. En este sentido C++ no es precisamente
COBOL, aunque afortunadamente permite incluir en el fuente
comentarios todo lo extensos que se desee ( 3.1). No caiga tampoco
en el error de pensar que esa informacin ya est en la documentacin
escrita que le han obligado a entregar junto con los fuentes;
posiblemente dentro de unos aos Usted mismo no encuentre esos
documentos.
ncluir la mayor cantidad posible de rutinas y condiciones de
comprobacin de errores. Piense que el operador es un "manazas" o
que los datos pueden venir con alguna corrupcin, error de transmisin,
etc. Verifique constantemente que las condiciones son las esperadas (
1.4.5).
Una vez que se tiene el cdio fuente (en uno o varios mdulos), el proceso
de traducirlo a instrucciones comprensibles por el procesador (lenua!e
m,&uina) puede hacerse siguiendo dos modelos: los int(rpretes y los
compiladores [3].
En el caso de lenguajes compilados como C++, el fichero de texto plano (ASC
2.2.1a) que contiene el fuente del programador (con la terminacin .'
.'**), es sometido a un proceso de varias fases que terminan en la obtencin
del ejecutable.
De forma genrica, todo
este proceso se denomina
"compilacin", aunque es
una generalizacin un tanto
incorrecta, ya que la
compilacin propiamente
dicha es solo una de las
etapas intermedias. Sera
ms correcto decir
"construccin" del
ejecutable, aunque por la
extensin y generalizacin
de su uso seguiremos
utilizando el trmino
genrico "compilacin" para
referirnos a l. Los
procesos de construccin
del ejecutable se
esquematizan en la figura
que comentamos a
continuacin:
W3 *reproceso
En la primera fase de la
compilacin; un programa
especial, denominado maKe,
es encargado de iniciar el
proceso llamando a los diversos mdulos que se encargan de la construccin
del ejecutable (en 1.4.0 se amplan detalles sobre esta parte del proceso). El
primero de estos mdulos es el preprocesador.
El preprocesador ( 1.4.1) estudia el texto buscando directivas de
preprocesado ( 4.9.10), por ejemplo sentencias que pueden ser suprimidas,
incluye los ficheros correspondientes a las directivas Uinclude, sustituye los
Udefine, elimina los comentarios y expande las macros encontradas en el
fuente y en los propios ficheros incluidos. El resultado obtenido es lo que se
denomina unidad de compilacin ( 1.4.2).
W5 "n,lisis sint,ctico
Puesto que el fichero fuente est escrito en un "lenguaje" (C++ en este caso)
que tiene sus propias reglas de sintaxis (como los lenguajes naturales), el
compilador debe comprobar que estas reglas se han respetado. Este anlisis
("Parsing") es realizado por el analizador sintctico.
En esta fase se realizan comprobaciones como que los parntesis estn
cerrados, que no aparecen expresiones incompletas, etc. Para realizar esta
labor, el "parser" debe identificar los tokens ( 3.2), de forma que el fuente es
tokenizado, esto es, reducido a tokens y separadores.
El fuente es escaneado, el analizador sintctico (parser) extrae los tokens de
forma que selecciona el que coincida con la secuencia de caracteres ms larga
posible dentro de la secuencia analizada [9]. Por ejemplo, la palabra clave
eBternal es reconocida como un solo token (identificador de clase de
almacenamiento) en vez de seleccionar eBtern (una palabra reservada) y al
(que sera un identificador).
Los separadores (whitespaces) es el nombre genrico dado a los espacios
(32), tabulaciones verticales VT (11), horizontales TAB (9) nueva linea NL (10)
y retorno de carro CR (13). Los separadores sirven para indicar donde
empiezan y terminan las palabras, pero despus de esto cualquier separador
redundante es descartado. Por ejemplo, las dos secuencias:
int i; float f;
- - - - - - - - - - - - - - - - -
int i;
float f;
son lxicamente equivalentes y el resultado del anlisis son las seis palabras
siguientes:
int
i
;
float
f
;
El carcter ASC espacio puede formar parte de cadenas literales
(alfanumricas), en cuyo caso es protegido del proceso de anlisis,
permaneciendo como parte de la cadena. Por ejemplo:
char name[] = "Playa Victoria";
es reducido a siete tokens, incluyendo una cadena literal "Playa Victoria"
char
name
[
]
=
"Playa Victoria"
;
W; "n,lisis sem,ntico
En lenguajes como el E!sa-blado la comprobacin se limita al anlisis
anteriormente sealado; con esto se garantiza que el fuente original es
correcto (sintcticamente), es decir, es un escrito correcto desde el punto de
vista del lenguaje, otra cosa es que tenga un sentido computacionalmente
correcto o diga tonteras, incongruencias o sinsentidos [6].
Por supuesto la meta del compilador es conseguir descubrir con anticipacin (al
runtime) el mximo de errores posibles, en los lenguajes de alto nivel, esto se
consigue con una cierta comprobacin del "sentido" o "significado" del escrito,
es el denominado an,lisis sem,ntico (anlisis del significado).
La mejor baza de que dispone C++ para esta segunda comprobacin es la
comprobacin esttica de tipos ( 2.2), es decir, que las variables y las
operaciones entre ellas se usan correctamente; esto supone verificar que las
llamadas a funciones, los valores devueltos por estas y los operandos de las
expresiones corresponden con el tipo que se les supone en cada caso. Por
ejemplo:
int x;
char func();
....
x = func();
En este caso, la primera lnea declara que la variable x es tipo int (entero); la
segunda declara que la funcin fun devuelve un carcter (c0ar); si una lneas
ms adelante se pretende igualar la variable x con el valor devuelto por la
funcin, el analizador semntico estara en condiciones de asegurar que existe
una incongruencia en las pretensiones del programador, generando el
correspondiente mensaje de advertencia o error .
WM :enerador de cdio
Todos estos tokens identificados por el analizador sintctico, son organizados
en una estructura como las hojas de un rbol. A continuacin, el generador de
cdigo recorre este rbol traduciendo sus hojas directamente en cdigo de la
mquina para la que se compila.
Si se solicita, el compilador tambin puede en esta fase generar un fichero en
lenguaje macro ensamblador para su posible inspeccin por el programador
(este cdigo es tambin dependiente de la mquina para la que se compila y
fcilmente entendible por el humano; puede contener incluso comentarios para
facilitar su lectura).
#ota: El compilador Borland C++ dispone de opciones que permiten
generar cdigo optimizado para procesadores ntel de modelos especficos
( 1.4.3a).
A veces, despus del generador de cdigo puede ejecutarse un optimizador
(peephole optmizer). Este generador de cdigo sera propiamente el
compilador, es decir, el encargado de traducir algo entendible por el humano
en cdigo mquina.
En cualquier caso, el resultado es un fichero "objeto", generalmente con la
terminacin .ob!. Tambin puede ordenarse al compilador que incluya en el
"objeto", determinada informacin adicional que ser utilizada ms tarde por el
depurador , por ejemplo los nmeros de lnea de las sentencias. Cuando se
hace as, se habla de una compilacin "provisional" o de "depuracin"; distinta
de la que se realiza para la versin definitiva (de campo) del programa en la
que no se incluyen este tipo de informacin que ya no es necesaria.
W1> 1nlaLado
El ltimo paso en construir un ejecutable es el enlaLado. Recibe este nombre
el proceso de aglutinar todos los recursos en un solo fichero ejecutable (
1.4.4 ). Estos recursos son desde luego los ficheros-objeto obtenidos en la
compilacin de los diversos mdulos (ficheros .c) que componen el programa.
Adems, si se han utilizado funciones o clases de librera [1] (como es casi
seguro), el enlaLador ("Linker") es el programa encargado de incluir los
mdulos adecuados en el fichero ejecutable final.
As pues, la funcin primordial del enlazador es resolver todas las referencias
que puedan existir en el programa, es decir: que cada invocacin a un valor o a
una funcin corresponda una direccin donde se encuentra el recurso
correspondiente, y que estn todos contenidos en un solo fichero que pueda
ser cargado y ejecutado por el Sistema Operativo.
Eventualmente algunos recursos pueden estar en otros ficheros distintos del
ejecutable, librer.as de enlaLado din,mico (en Windows se denominan
DLLs). En cuyo caso el enlazador tambin incluir las direcciones y
convenciones de llamada adecuadas para que puedan ser trados a ejecucin
desde el programa principal.
Por ltimo, el enlazador se encarga de insertar en el ejecutable un trozo de
cdigo especial: El mdulo inicial, que es el encargado de iniciar la ejecucin (
1.5).
http9::;;;.<ator.com:3pp:!125.htm
Feneralmente "a$ varias etapas para lle+ar desde el cdi+o #uente "asta el pro+rama
ejecutable.
1. Feneracin del al3o-i$mo. 5lanteo del problema, des+lose en subproblemas $
solucin de estos en terminos abstractos *pseudocdi+o o dia+ramas de #lujo,.
2. Feneracin del cdi+o #uente *pueden ser ms de uno para la +eneracin de un
nico ejecutable,. 1l pro+rama #uente * o c7&i3o %!e"$e, es una secuencia de
sentencias escritas en la sintaEis del len+uaje que se in+resan utilizando un editor
de teEtos.
7. ompilacin a objeto. 1ste paso se lleva a cabo a trav(s del uso de un
compilador. 1ste se encar+a de traducir el pro+rama #uente en cdi+os que el
computador pueda entender directamente *c7&i3o &e m4!i"a, tambien llamado
c7&i3o ob.e$o,. 1n esta traduccin se trans#orman todas sentencias en sintaEis
de a cdi+o de mquina, pero las llamadas a #unciones eEternas o de biblioteca
no quedan resueltas, por lo que todavia, el codi+ objeto no puede ser ejecutado.
?. /i+ar las llamadas a #unciones no resueltas. 1ste paso se realiza a trav(s de un
li+ador *lin9er,, el que se encar+a deK a partir de los cdi+os objeto $ de las
biblio$ecas de rutinas *conjunto de cdi+os objetos de las #unciones de
biblioteca, +enerar un mdulo ejecutable directamente por el computador
**-o3-ama e.ec!$able,.
Iependiendo del entorno de trabajo $ de las "erramientas de desarrollo que se esten
utilizando para la +eneracin de pro+ramas, al+unos de los pasos anteriores pueden
quedar ocultos a la vista del desarrollador.
http9::ib.cnea.go1.ar:=icom:3urso322>>4:pasos.htm
/os len+uajes de alto nivel necesitan de pro+ramas traductores para poder ser
ejecutados. 0a$ dos tipos de traductoresK los compiladores $ los int(rpretes.
/os compiladores
/os compiladores traducen los pro+ramas #uente a pro+ramas objeto o compilados.
1stos pro+ramas objeto, en ensamblador, necesitan posteriormente de un traductor de
ensamblador o lin9ador para ser traducidos a len+uaje mquina. 1l pro+rama resultante
de la compilacin de un pro+rama #uente se llama pro+rama objeto. 5ara poder compilar
un pro+rama se necesita esa aplicacin $ el 9it de desarrollo de aplicaciones.
/os int(rpretes
/os int(rpretes "acen que los pro+ramas #uente sean traducidos $ ejecutados
directamente por el ordenador, sin necesidad de ser compilados. /a ma$or parte de los
interpretes se emplean para trabajar en entornos inte+rados de desarrollo. !n ejemplo
puede ser =isual .asic. )o se +eneran ejecutables, sino que son ejecutados desde la
propia aplicacin. 5ara (l eEiste un 9it de desarrollo que permite traducir los pro+ramas
interpretados a compilados, pudi(ndose posteriormente ejecutar desde el sistema
operativo sin necesidad del entrono de desarrollo. Access tambi(n #unciona como un
entorno de desarrollo que +enera bases de datos que puden ser interpretadas $
ejecutadas. 1l uso de entornos de desarrollo permite la creacin $ una rpida depuracin
de pro+ramas de modo previo a su compilacin. 5ara ejecutar un pro+rama en =isual
.asic, desde el entrono de desarrollo se selecciona el objeto a ejecutar $ en la barra de
mens se selleciona ejecutar. Iespu(s se pulsa sobre iniciar o iniciar con compilacin
completa. Aparecer en pantalla el resultado de la ejecucin del #ic"ero seleccionado.
Tambi(n puede ejecutarse un pro+rama pulsando sobre el botn ejecutar de la barra de
"erramientas.
/a evolucin de los len+uajes de pro+ramacin se "a realizado en cuatro +eneraciones.
/as dos primeras se corresponden de #orma aproEimada con las dos primeras
+eneraciones de ordenadores. 1n la primera aparece el len+uaje mquina $ en la
se+unda los len+uajes ensambladores. 1n la tercera aparecen J4:T:A), 4.4/,
A/F4/, />85, 5A8A/, len+uaje $ los len+uajes estructurados. /a cuarta
+eneracin est #ormada por los 8istemas de Festin de .ases de Iatos *8F.I,K I.2,
4racle, 8$base 8O/ 8erver $ en microin#omtica Acces, JoE5ro, Ibase $ =isual .asic,
aunque este ltimo no es un 8F.I.
1nsambladores
8on len+uajes en los que a cada instruccin en cdi+o #uente le corresponde una
instruccin en cdi+o mquina. 5oseen relativamente pocas instrucciones $ no utilizan
direcciones #sicas de memoria, sino que permiten el uso de direcciones simblicas $ de
comentarios.
5ara ser ejecutado un pro+rama escrito con len+uaje ensamblador necesita ser traducido,
utilizndose para ello un -ensamblador- que +enera cdi+o mquina $ elimina los
comentarios. 1l ensamblador +enera una tabla que mantiene re#erencias entre las
direcciones simblicas de datos con las direcciones #sicas. 1n al+unos len+uajes
ensambladores, que poseen cdi+o eEtendido, a determinadas instrucciones les
corresponden varias instrucciones de cdi+o mquina.
/en+uaje mquina
1l len+uaje mquina depende de la arquitectura del ordenador, siendo interpretado
directamente por el ordenador sin nin+una modi#icacin. 5or las dos razones antes
eEpuestas, su velocidad de ejecucin es mu$ alta. /a codi#icacin de los pro+ramas en
len+uaje mquina se "ace en binario, octal o "eEadecimal, por lo que no es #cilmente
le+ible por el pro+ramador.
/os pro+ramas en len+uaje mquina utilizan direcciones #sicas de memoria para
almacenar datos. 8on interpretables por ordenadores con el mismo tipo de arquitectura.
5or ejemplo, un pro+rama escrito para una estacin de trabajo de Ii+ital no puede ser
interpretado correctamente por una estacin de trabajo de >.B o por un ordenador
personal, $ viceversa. 1n cambio, un pro+rama escrito en len+uaje mquina para un
ordenador personal con procesador 2@& puede ser inerpretado por un ?@&, $a que ambos
procesadores comparten las mismas instrucciones.
1ste tipo de len+uaje ejecuta multitud de operaciones sencillas rpidamente. 5or
ejemplo, al+unos pro+ramas no tienen instrucciones para la multiplicacin, por lo que
"an de ejecutarlas como una sucesin de sumas, es decir, almacenando valores
intermedios en memoria.
http9::;;;.galeon.com:?ronen:lenguajes.htm
Unidad 6. !#tructura# de Deci#in y
Control
).1 1structura secuencial
'oncepto
Una estructura secuencial es aquella en la que las instrucciones estan una a continuacin de la
otra siguiendo una secuencia nica, sin cambios de ruta. La estructura secuencial tiene una
entrada y una salida.
En la Figura 4.1 se muestra el diagrama de flujo y el pseudocdigo de una estructura
secuencial.
Diarama de /lu!o *seudocdio
Inicio
.
.
accin 1
accin 2
accin 3
.
.
6in
/iura 2.1 Estructura Secuencial: Diagrama de Flujo y Pseudocdigo
1!ercicios
1!ercicio 1:- Disee un pseudocdigo que halle el rea y el permetro de un rectngulo.
Considere que: area = base x altura y perimetro = 2 x (base+altura).
"loritmo
I7ICI8
// Declaracin de variables
R#!% base, altura, area, perimetro
// Entrada de datos
%##R base, altura
// Proceso de clculo
area = base*altura
perimetro = 2*(base+altura)
// Salida de resultados
I/PRI/IR area, perimetro
6I7
1!emplo 2:- Disee un pseudocdigo para convertir una longitud dada en metros a sus
equivalentes en centmetros, pies, pulgadas y yardas. Considere que: 1 metro = 100
centmetros, 1 pulgada = 2.54 centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies.
"loritmo
I7ICI8
// Declaracin de variables
R#!% cmetr,ccent, cpies, cpulg, cyard
// Entrada de datos
%##R cmetr
// Proceso de clculo
ccent = cmetr*100
cpulg = ccent/2.54
cpies = cpulg/12
cyard = cpies/3
// Salida de resultados
I/PRI/IR cpulg, cpies, cyard
6I7
1!ercicio 3@G Una institucin benfica europea ha recibido tres donaciones en soles, dolares y
marcos. La donacin ser repartida en tres rubros: 60% para la implementacin de un centro
de salud, 40% para un comedor de nios y el resto para gastos administrativos. Disee un
algoritmo que determine el monto en euros que le corresponde a cada rubro. Considere que: 1
dlar = 3.52 soles, 1 dlar = 2.08 marcos, 1 dlar = 1.07 euros.
"loritmo
I7ICI8
// Declaracin de variables
R#!% c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3
// Entrada de datos
%##R csoles, cdolares, cmarcos
// Proceso de clculo
ceuros = (csoles/3.52 + cdolares + cmarcos/2.08)*1.07
rubro1 = ceuros*0.60
rubro2 = ceuros*0.40
rubro3 = ceuros*0.20
// Salida de resultados
I/PRI/IR rubro1, rubro2, rubro3
6I7
1!ercicio )@G En una competencia atltica de velocidad el tiempo se mide en minutos,
segundos y centsimas de segundo y, el espacio recorrido se mide en metros. Disee un
algoritmo para determinar la velocidad promedio de un atleta en km/hr. Considere que: 1 hora =
60 minutos, 1 minuto = 60 segundos, 1 segundo = 100 centsimas de segundo, 1 kilmetro =
1000 metros.
"loritmo
I7ICI8
// Declaracin de variables
#7"#R8 tmin, tseg, tcen
R#!% thor, velkmhr, espmt, espkm
// Entrada de datos
%##R tmin, tseg, tcen, espmt
// Clculo del tiempo total empleado en horas
thor = tmin/60 + tseg/3600 + tcen/360000
// Clculo del espacio recorrido en kilmetros
espkm = espmt/1000
// Clculo de la velocidad en km/hr
velkmhr = espkm/thor
// Salida de resultados
I/PRI/IR velkmhr
6I7
1!ercicio +@G Disee un algoritmo que determine la cifra de las unidades de un nmero natural.
Solucin 1
"n,lisis
Puede comprobarse que la cifra de las unidades de un nmero es igual al resto de la divisin
del nmero entre 10. Observe para ello las siguientes divisiones:
3245 10
5 324
768 10
8 76
9 10
9 0
Podemos concluir entonces que:
unidades = numero T 10
Siendo T el operador residuo. Este operador permite obtener el residuo de una divisin, as
como / permite obtener el cociente.
"loritmo
I7ICI8
// Declaracin de variables
#7"#R8 numero, unidades
// Entrada de datos
%##R numero
// Proceso de clculo
unidades = numero % 10
// Salida de resultados
I/PRI/IR unidades
6I7
Solucin 2
"n,lisis
El residuo de una divisin entera puede obtenerse tambin sin recurrir al operador T, de la
siguiente forma:
unidades = numero - (numero / 10) * 10
observe para esto que en la divisin 6numero91>7 los operandos son enteros por lo que el
cociente ser un entero. As por ejemplo, si numero es igual a 32)+, la divisin 6numero91>7
produce 32), aunque matemticamente sea 32).+; es decir, se descarta la parte decimal.
"loritmo
I7ICI8
// Declaracin de variables
#7"#R8 numero, unidades
// Entrada de datos
%##R numero
// Proceso de clculo
unidades = numero - (numero/10)*10
// Salida de resultados
I/PRI/IR unidades
6I7
1!ercicio 3@G Disee un algoritmo que determine la suma de las cifras de un nmero entero
positivo de 4 cifras.
Solucin 1
"n,lisis
Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto,
considere el caso de un nmero N igual a 3245:
3245 10
5 324
unidades = N%10
cociente = N/10
324 10
4 32
decenas = cociente%10
cociente = cociente/10
32 10
2 3
centenas = cociente%10
millares = cociente/10
"loritmo
I7ICI8
// Declaracin de variables
#7"#R8 N, suma, millares, centenas, decenas, unidades, resto
// Entrada de datos
%##R N
// Proceso de clculo
unidades = N%10
cociente = N/10
decenas = cociente%10
cociente = cociente/10
centenas = cociente%10
millares = cociente/10
suma = unidades + decenas + centenas + millares
// Salida de resultados
I/PRI/IR suma
6I7
Solucin 2
"n,lisis 2
Considerando que el nmero tiene 4 cifras, las cifras tambin pueden ser obtenidas mediante
divisiones sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un nmero N
igual a 3245:
3245 1000
245 3
millares = N/1000
resto = N%1000
245 100
45 2
centenas = resto/100
resto = resto%100
45 10
3 4
decenas = resto/10
unidades = resto%10
"loritmo
I7ICI8
// Declaracin de variables
#7"#R8 N, suma, millares, centenas, decenas, unidades, resto
// Entrada de datos
%##R N
// Proceso de clculo
millares = N/1000
resto = N%1000
centenas = resto/100
resto = resto%100
decenas = resto/10
unidades = resto%10
suma = unidades + decenas + centenas + millares
// Salida de resultados
I/PRI/IR suma
6I7
1!ercicio 5@G Disee un algoritmo que lea la hora actual del da HH:MM:SS y determine cuantas
horas, minutos y segundos restan para culminar el da.
"loritmo
I7ICI8
// Declaracin de variables
#7"#R8 hor1, min1, seg1, hor2, min2, seg2, segres, resto
// Entrada de datos
%##R hor1, min1, seg1
// Clculo de la cantidad de segundos que restan para culminar el
da
segres = 86400 - (hor1*3600 + min1*60 + seg1)

// Descomposicin de segres en horas, minutos y segundos
hor2 = segres/3600
resto = segres%3600
min2 = resto/60
seg2 = resto%60
// Salida de resultados
I/PRI/IR hor2, min2, seg2
6I7
1!ercicio ;@G Disee un algoritmo para sumar dos tiempos dados en horas, minutos y
segundos.
"loritmo
I7ICI8
// Declaracin de variables
#7"#R8 hor1, min1, seg1, hor2, min2, seg2, hor3, min3, seg3,
totseg, resto
// Entrada de datos
%##R hor1, min1, seg1, hor2, min2, seg2
// Determina la cantidad total de segundos entre los dos tiempos
totseg = (hor1+hor2)*3600 + (min1+min2)*60 + (seg1+seg2)

// Descompone totseg en horas, minutos y segundos
hor3 = totseg/3600
resto = totseg%3600
min3 = resto/60
seg3 = resto%60
// Salida de resultados
I/PRI/IR hor3, min3, seg3
6I7
1!ercicio M@G El sueldo neto de un vendedor se calcula como la suma de un sueldo bsico de
S/.250 ms el 12% del monto total vendido. Disee un algoritmo que determine el sueldo neto
de un vendedor sabiendo que hizo tres ventas en el mes.
"loritmo
I7ICI8
// Declaracin de variables
R#!% venta1, venta2, venta3, ventatot, comision, sueldoneto
// Entrada de datos
%##R venta1, venta2, venta3
// Proceso de clculo
ventatot = venta1 + venta2 + venta3
comision = 0.12*ventatot
sueldoneto = 250 + comision
// Salida de resultados
I/PRI/IR sueldoneto
6I7
1!ercicio 1>@G Disee un algoritmo que determine el porcentaje de varones y de mujeres que
hay en un saln de clases.
"loritmo
I7ICI8
// Declaracin de variables
R#!% porcvar, porcmuj
#7"#R8 varones, mujeres, total
// Entrada de datos
%##R varones, mujeres
// Proceso de clculo
total = varones + mujeres
porcvar = varones*100.0/total
porcmuj = mujeres*100.0/total
// Salida de resultados
I/PRI/IR porcvar, porcmuj
6I7
1!ercicio 11@G En pases de habla inglesa es comn dar la estatura de una persona como la
suma de una cantidad entera de pies ms una cantidad entera de pulgadas. As, la estatura de
una persona podra ser 3' 2" ( 3 pies 2 pulgadas ). Disee un algoritmo que determine la
estatura de una persona en metros, conociendo su estatura en el formato ingls. Considere
que: 1 pie = 12 plg, 1 plg = 2.54 cm, 1 m = 100 cm.
"loritmo
I7ICI8
// Declaracin de variables
R#!% estmt
#7"#R8 cpies, cplgs
// Entrada de datos
%##R cpies, cplgs
// Proceso de clculo
estmt = (cpies*12 + cplgs)*2.54/100
// Salida de resultados
I/PRI/IR estmt
6I7
1!ercicio 12@G Disee un algoritmo que exprese la capacidad de un disco duro en megabytes,
kilobytes y bytes, conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte =
1024 bytes, 1 megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes.
"loritmo
I7ICI8
// Declaracin de variables
R#!% cgigabyte, cmegabyte, ckilobyte, cbyte
// Entrada de datos
%##R cgigabyte
// Proceso de clculo
cmegabyte = cgigabyte*1024
ckilobyte = cmegabyte*1024
cbyte = ckilobyte*1024
// Salida de resultados
I/PRI/IR cmegabyte, ckilobyte, cbyte
6I7
1!ercicio 13@G Disee un algoritmo que intercambie las cifras de las unidades de dos nmeros
naturales.
"loritmo
I7ICI8
// Declaracin de variables
#7"#R8 numero1, numero2, unidades1, unidades2
// Entrada de datos
%##R numero1, numero2
// Determina las cifras de las unidades
unidades1 = n1%10
unidades2 = n2%10
// Intercambia las cifras de las unidades
numero1 = numero1 - unidades1 + unidades2
numero2 = numero2 - unidades2 + unidades1
// Salida de resultados
I/PRI/IR n1, n2
6I7
0ttp@99HHH.eocities.com9davidQees9"loritmia9cap>2.0tm
Es$-!c$!-a Sec!e"cial
1s aqu(lla en la que una accin *instruccin, si+ue a otra en secuencia.
/as tareas se suceden de tal modo que la salida de una es la entrada de la
si+uiente $ as suscesivamente "asta el #in del proceso. /a estructura
secuencial tiene una entrada $ una salida. 8u representacin +r#ica es la
si+uienteK

18T:!T!:A 81!1)>A/
....


I>AF:ABA )D8 I1 !)A 18T:!T!:A 81!1)>A/


581!I44I>F4 I1 !)A 18T:!T!:A 81!1)>A/
>nicio
K
K
acciones
K
K
#in

E.em*lo<
alcular el salario neto de un trabajador en #uncin del nmero de "oras
trabajadas, precio de la "ora de trabajo $ considerando unos descuentos #ijos
al sueldo bruto en concepto de impuestos *20 por 100,.

Pse!&oc7&i3o
>nicio
Uclculo salario netoW
lee- nombre, "oras, precioP"ora
salarioPbruto "oras Q precio
impuestos 0.20 Q salarioPbruto
salarioPneto salarioPbrutoPimpuestos
esc-ibi- nombre, salarioPbruto, salarioPnetoPbruto, salarioPneto
Jin

Iia+rama de #lujo

Iia+rama )D8


).2 1structuras de Transferencia Incondicionales
).3 1structuras de Transferencia 'ondicionales
1structuras 'ondicionales
1n este captulo se revisan los distintos m(todos con los que controla el %l!.o l+ico
de un pro+rama.
omo se revis en el captulo anterior, los operadores relaciones binarios que se usan
sonK
==, !=, <, <=, > $ >=
adems los operadores l+icos binariosK
||, &&
$ el operador l+ico unario de ne+acin !, que slo toma un ar+umento.
/os operadores anterior son usados con las si+uientes estructuras que se muestran.
La sentencia i3
/as tres #ormas como se puede emplear la sentencia if sonK
if (condicion)
sentencia;
...o
if (condicion)
sentencia5;
else
sentencia7;
...o
if (condicion5)
sentencia5;
else if (condicion7)
sentencia7;
...
else
sentencia!;
1l #lujo l+ico de esta estructura es de arriba "acia abajo. /a primera sentencia se
ejecutar $ se saldr de la estructura if si la primera condicin es verdadera. 8i la
primera condicin #ue #alsa, $ eEiste otra condicin, se evala, $ si la condicin es
verdadera, entonces se ejecuta la sentencia asociada. 8i eEisten ms condiciones dentro
de la estructura if, se van evaluando (stas, siempre $ cuando las condiciones que le
precedan sean #alsas.
/a sentencia que esta asociada a la palabra reservada else, se ejecuta si todas las
condiciones de la estructura if #ueron #alsas.
5or ejemploK
main()
{
int x, y, w;
........
if (x>0)
{
z=w;
.......
}
else
{
z=y;
.......
}
}
1l operador 9
1l operador ternario condicional ? es ms e#iciente que la sentencia if. 1l operador ?
tiene el si+uiente #ormatoK
expresion5 ? expresion 7 : expresion8;
Oue es equivalente a la si+uiente eEpresinK
if (expresion5) then expresion7 else expresion8;
5or ejemplo, para asi+nar el mEimo de a $ b a la variable z, usando ?, tendramosK
z = (a>b) ? a : b;
que es lo mismo queK
if (a > b)
z = a;
else
z = b;
1l uso del operador ? para reemplazar las sentencias if ... else no se restrin+e slo a
asi+naciones, como en el ejemplo anterior. 8e pueden ejecutar una o ms llamadas de
#uncin usando el operador ? poni(ndolas en las eEpresiones que #orman los operandos,
como en el ejemplo si+uienteK
f1(int n)
{
printf("%d ",n);
}
f2()
{
printf("introducido\n");
}
main()
{
int t;
printf(": ");
scanf("%d",&t);
/* imprime mensaje apropiado */
t ? f1(t) + f2() : printf("Se di un cero\n");
}
La sentencia s:itch
Aunque con la estructura if ... else if se pueden realizar comprobaciones
mltiples, en ocasiones no es mu$ ele+ante, $a que el cdi+o puede ser di#cil de se+uir
$ puede con#undir incluso al autor transcurrido un tiempo. 5or lo anterior, tiene
incorporada una sentencia de bi#urcacin mltiple llamada switch. on esta sentencia,
la computadora comprueba una variable sucesivamente #rente a una lista de constantes
enteras o de caracter. Iespu(s de encontrar una coincidencia, la computadora ejecuta la
sentencia o bloque de sentencias que se asocian con la constante. /a #orma +eneral de la
sentencia switch esK
switch (variable) {
case constante1:
secuencia de sentencias
breaKX
case constante2:
secuencia de sentencias
breaKX
case constante3:
secuencia de sentencias
breaKX
...
default:
secuencia de sentencias
}
donde la computadora ejecuta la sentencia default si no coincide nin+una constante
con la variable, esta ltima es opcional. uando se encuentra una coincidencia, la
computadora ejecuta las sentencias asociadas con el case "asta encontrar la sentencia
break con lo que sale de la estructura switch.
/as limitaciones que tiene la sentencia switch ... case respecto a la estructura if
sonK
Slo se tiene posibilidad de revisar una sola variable.
Con switch slo se puede comprobar por igualdad, mientras que con if
puede ser con cualquier operador relacional.
No se puede probar ms de una constante por case.
/a #orma como se puede simular el ltimo punto, es no teniendo sentencias asociados a
un case, es decir, teniendo una sentencia nula donde slo se pone el caso, con lo que se
permite que el #lujo del pro+rama caiga al omitir las sentencias, como se muestra a
continuacinK
switch (letra)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
numvocales++;
break;
case ' ':
numesp++;
break;
default:
numotras++;
break;
}
1!ercicios
1. 1scribir un pro+rama que lea dos caracteres, e imprima su valor cuando se pueda
interpretar como un nmero "eEadecimal. Aceptar letras ma$sculas $
minsculas para los valores del 10 al 1C.
2. /eer un valor entero. 8uponer que el nmero es un da de la semana. 8uponer
que 0 corresponde a Iomin+o $ as sucesivamente. >mprimir el nombre del da.
7. Iados como entrada 7 enteros representando la #ec"a como da, mes, ao,
imprimir la #ec"a del da anterior. 5or ejemplo para una entrada comoK 1 7 1662
/a salida serK Jec"a anterior a 1D7D1662 es 26D02D1662
?. 1scribir un pro+rama el cual lea dos valores enteros. 8i el primero es menor que
el se+undo, que imprima el mensaje \\Arribacc. 8i el se+undo es menor que el
primero, que imprima el mensaje \\Abajocc. 8i los nmeros son i+uales, que
imprima el mensaje \\i+ualcc. 8i "a$ un error en la lectura de los datos, que
imprima un mensaje conteniendo la palabra \\1rrorcc $ "a+a exit( 0 );
"ttpKNN+arota.#ismat.umic".mENmn1NmanualNnode?."tml
Co"&icio"ales
/a especi#icacin #ormal de al+oritmos tiene realmente utilidad cuando el
al+oritmo requiere una descripcin ms complicada que una lista sencilla de
instrucciones. 1ste es el caso cuando eEisten un nmero de posibles
alternativas resultantes de la evaluacin de una determinada condicin.
/as estructuras selectivas se utilizan para tomar decisiones l+icasA de
a" que se suelan denominar tambi(n estructuras de decisin o alternativas*
1n las estructuras selectivas se evala una condicin $ en #uncin del
resultado la misma se realiza una opcin u otra. /as condiciones se
especi#can usando eEpresiones l+icas. /a representacin de una estructura
selectiva se "ace con palabras en pseudocdi+o *i#, t"en, else o bien en
espaol si, entonces, sino,, con una #i+ura +eom(trica en #orma de romba o
bien con un trin+ulo en el interior de una caja rectan+ular.

/as estructuras selectivas o alternativas pueden serK
8imples
Bltiples

Al$e-"a$i;a Sim*le Esi,e"$o"ces=i%,$+e"F
/a estructura alternativa simple si,e"$o"ces *en in+l(s i%,$+e" o bien I0,
THEN , ejecuta una determinada accin cuando se cumple una determinada
condicin. /a seleccin si,e"$o"ces evala la condicin $ . . .
8i la condicin es verdadera+ entonces ejecuta la accin 81 *o
acciones caso de ser 81 una accin compuesta $ constar de varias
acciones,.

8i la condicin es falsa, entonces no "acer nada.

A continuacin se muestra la +r#ica de la estructura condicional simple.



Pse!&oc7&i3o e" es*aLol
8i lcondicinT 1ntonces
laccin 81T
JinPsi

Pse!&oc7&i3o e" i"3lGs
># lcondicinT t"en
laccin 81T
endPi#

Dia3-ama N,S



9lternativas M:ltiples ;seg:n4sea+ caso de < case=
uando eEisten ms de dos elecciones *alternativas, posibles, es cuando
se presenta el caso de alternativas mltiples. 8i el nmero de alternativas es
+rande puede plantear serios problemas de escritura del al+oritmo $
naturalmente de le+ibilidad.
/a estrucura de decisin mltiple evaluar una eEpresin que podr
tomar n valores distintos 1,2,7,?,..n . 8e+n que elija uno de estos valores en
la condicin, se realizara una de las n acciones, o lo que es i+ual, el #lujo del
al+oritmo se+uir un determinado camino entre los n posibles.

/a representacin +r#ica se muestra a continuacinK

Dia3-ama &e 0l!.o

Dia3-ama N,S

Bodelo 1 Bodelo 2



Pse!&oc7&i3o
1n in+l(s la estructura de decisin mltiple se representa

Case eEpresin o%
de1eK accin 81
de2eK accin 82
K
deneK accin 8n

else
accin 8E

e"&Xcase


E.em*lo<
8e desea disear un al+oritmo que escriba los nombres de los das de la
semana en #uncin del valor de una variable I>A introducida por teclado.
/os das de la semana son 'A por consi+uiente, el ran+o de valores de
I>A ser 1..', $ caso de que I>A tome un valor #uera de este ran+o se deber
producir un mensaje de error advirtiendo la situacin anmala.

I"icio
/eer I>A
8e+nPsea I>A "acer
1K escribir*c/unesc,
2K escribir*cBartesc,
7K escribir*cBi(rcolesc,
?K escribir*c%uevesc,
CK escribir*c=iernesc,
&K escribir*c8abadoc,
'K escribir*cIomin+oc,
else
escribir*c1rrorc,
#inPse+n
%i"
Ifs anidados
En algunas aplicaciones, una de las alternativas de una estructura ifGt0enGelse
puede incluir un decisin adicional. Por ejemplo, despus de que se elija una
determinada accin sobre una determinada calificacin de una prueba, podra
quererse evitar la posibilidad de error en los datos de entrada. Esto requiere
una comprobacin adicional para verificar que los datos de entrada son validos,
lo que sugiere el uso de una estructura if-then-else adicional incluida en cada
una de las dos alternativas originales. Este proceso es un ejemplo de
anidamiento.
Ejemplo:
"loritmo -"AQ3
Este algoritmo lee tres nmeros A, B, C, imprimiendo el valor del ms grande.
Se supone que los tres valores son diferentes.
1.- Entrada de valores
Read (A, B, C)
2.- Se determina el valor ms grande mediante comprobacin por pares
if A > B
then if A > C
then MAX A (A > B, A > C)
else MAX C (C > A > B)
else if B > C
then MAX B (B > A, b > C)
else MAX C (C > B > A)
3.- Se imprime el valor ms grande
Write `El valor ms grande es`, MAX
4.- Termino
Exit
'ondiciones compuestas
Estas condiciones se obtienen a partir de las expresiones simples, utilizando
los operadores lgicos and, or y not.
Los significados de estos operadores se describen adecuadamente por medio
de las tablas de verdad.
Las condiciones compuestas pueden utilizarse ya sea en enunciados if o en
repeticiones condicionales. Ejemplo:
"loritmo -"AQ3 62a. versin7
Este algoritmo lee tres nmeros A, B, C, imprime el valor del ms grande de
ellos. Se supone que los tres valores son distintos.
1. - Entrada de los datos
Read (A, B, C)
2. - Se determina el mayor valor
if A > B and A > C then MAX A
if B > A and B > C then MAX B
if C > A and C > B then MAX C
3. - Se imprime el valor ms grande
Write `El valor ms grande es`, MAX
4. - Termino
http9::na0ar.uan.m8:=ia1alos:!structuras@2>de@2>desicion.html
).) 1structuras 2epetitivas 6Bucles7
Es$-!c$!-as Re*e$i$i;as ECiclosF
En C existen 3 estructuras repetitivas: H0ile$ for y do .. H0ile
Estructura While
Sintaxis:
:hile(condici;n)
!cci;n,
En este caso, la sentencia "ccin es ejecutada mientras el condicional
condicin se evala verdadera (distinta de 0)
En el caso de que el cuerpo del while (acciones a ejecutar en caso de que el
condicional se verifique) posea ms de una sentencia, todas ellas son
encerradas entre llaves:
:hile(condici;n)
<
!cci;n',
!cci;n=,
...
>
El condicional es una expresion relacional que puede involucrar operadores
relacionales (>, <, >=, <=, ==, !=) y/o operadores logicos (&&, ||, !)
Ejemplo:
/*
Programa que imprime la tabla de conversin de
Fahrenheit a Celsius para F = 0, 20, 40,..., 300
*/
#include <stdio.h>
int main()
{
int Lower, Upper, Step;
float Fahr, Celsius;
Lower = 0;
Upper = 300;
Step = 20;
Fahr = Lower;
while(Fahr <= Upper)
{
Celsius = (5.0/9.0) * (Fahr - 32.0);
printf("%4.0f F -> %6.1f C\n", Fahr, Celsius);
Fahr = Fahr + Step;
} /* fin del while */

return 0;
} /* fin del main */
NOTAS:
LaLo H0ile6...7 Y ... Z
Lo &ue se encuentra entre par(ntesis es una eBpresin a
evaluar. -ientras el resultado de la misma sea distinto de
cero$ se e!ecutan las sentencias asociadas &ue se encuentran
encerradas entre llaves. " este tipo de sentencias se las llama
sentencias compuestas. Si el cuerpo de esta sentencia
consiste en una sola sentencia simple$ pueden omitirse las
llaves. Las sentencias compuestas no llevan el car,cter X
como terminador. *ara me!orar la leibilidad del prorama$
conviene indentar las sentencias compuestas.
',lculo % asinacin@
Celsius = (5.0/9.0) * (Fahr - 32.0)
1l punto decimal en los operandos de la divisin es re&uerido
para &ue la operacin sea llevada en punto flotanteX de lo
contrario la misma se efectPa como cociente de nPmeros
enteros$ truncando por lo tanto el resultado a cifras enteras.
1n nuestro caso ser.a truncado a >.
Estructura for
Esta estructura es una generalizacin de la estructura H0ile usada en el
ejercicio anterior. Su funcin es ejecutar iterativamente el cuerpo del bloque,
que como en el caso del H0ile puede ser simple o compuesto. La definicin de
esta estructura de control posee 3 partes separadas por el carcter ";".
3or(a, 2, c)
<
...
...
>
La parte a es la de inicializacin, y puede poseer una sentencia, ninguna, o
varias separadas por el carcter ",". Esta parte se ejecuta inmediatamente
antes de entrar en el ciclo.
La parte b es el criterio o condicin de control de la iteracin. Se evala antes
de entrar a cada ciclo, inclusive en la primer iteracin. Si su resultado es
distinto de cero se ejecuta el ciclo; sino se abandona el ciclo y se sigue con la
sentencia posterior al cuerpo del for.
La parte c es la reinicializacin, que es ejecutada al final de cada ciclo.
Podemos simular el bloque for con la siguiente lgica:
a,
:hile(2)
<
...
...
c,
>
E.em*lo<
/* Tabla de conversin de grados F a Celsius
utilizando constantes simblicas y bloque for */
#include <stdio.h>
#define LOWER 0
#define UPPER 300
#define STEP 20
main()
{
int Fahr;
for(Fahr = LOWER; Fahr <= UPPER; Fahr += STEP)
printf("%4.0f F -> %6.1f C\n", Fahr, (5.0/9.0)*
(Fahr - 32));
}
NOTAK
Uso de constantes simblicas. Cuando se requieran valores numricos
constantes en un programa, deben definirse como constantes y no usar sus
valores numricos dentro del programa. C permite definir constantes simblicas
(directiva Udefine al preprocesador) que asocian un smbolo (LOWER, UPPER,
STEP) con una expresin (0,300 y 20 respectivamente) de tal manera que el
preprocesador reemplaza cualquier ocurrencia de esos smbolos por sus
expresiones asociadas
Es$-!c$!-a Do,Y+ile
la estructura de control do-while es una variacin sobre el bloque while
do
<
!cci;n',
!cci;n=,
...
>:hile(condici;n),
La diferencia esta en que la condicin se chequea al final y las acciones son
ejecutadas al menos una vez. Por ejemplo
/*
Programa que pide al usuario un nmero entero entre 1 y 10.
Se contina pidiendo el valor hasta que cumpla la condicin
*/
#include <stdio.h>
int main()
{
int n, error;
do {
printf("Ingrese un nmero entero entre 1 y 10: ");
scanf("%d", &n);
if (error = (n < 1 || n > 10))
printf("\nERROR: Intentelo nuevamente!!\n\n");
} while(error);
/* ahora puedo procesar el valor ingresado sabiendo que es
correcto. */
return 0;
} /* fin del main */
http://www.ldc.usb.ve/~gabro/teaching/CI2125/Clase5_ciclos.htm
Es$-!c$!-as Re*e$i$i;as
/as estructuras que repiten una secuencia de instrucciones un nmero
determinado de veces se denominan Bucles $ se denomina Iteracin al "ec"o
de repetir la ejecucin de una secuencia de acciones. 1ntre las estructuras
repetitivas se encuentranK
Bientras *G"ile,
:epetir *repeat,
Iesde *#or,
1., Es$-!c$!-a Mie"$-as E>+ileF
/a estructura repetitiva G"ile, es aqu(lla en que el cuerpo del bucle se
repite mientras se cumple una determinada condicin, su representacin
+r#ica esK



Pse!&oc7&i3o e" es*aLol Pse!&oc7&i3o e" i"3lGs
Mie"$-as condicin +ace- >+ile condicin &o
Accin 81 lAccionesT
Accin 82 K
K E"&X>+ile
accin 8n
0i"Xmie"$-as


Dia3-ama N,S

E.em*lo<
ontar los nmeros enteros positivos introducidos por teclado. 8e
consideran dos variables enteras )!B1:4 $ 4)TAI4: *contar el
nmero de enteros positivos,. 8e supone que se leen nmeros positivos $ se
detiene el bucle cuando se lee un nmero ne+ativo o cero.

Pse!&oc7&i3o
I"icio
contador 0
Lee- *numero,
Bientras numero T 0 "acer
contador contadorR1
Lee- *numero,
JinPBientras
Esc-ibi-*c1l nmero de enteros positivos es K c, contador,
0i"

Dia3-ama &e 0l!.o


Re*-ese"$aci7" e" N,S
Unidad 7. Arreglo# y Arc)i%o#
+.1 "rrelos 68ectores % -atrices7
/as variables que "emos utilizado "asta a"ora nos permiten el
almacenamiento de un solo valor a la vez.
5ara resolver cierto tipo de problemas con datos mltiples en #orma
e#iciente, se requiere almacenamiento en conjunto. A esta or+anizacin de
elementos se le conoce con el nombre de arreglo*
4tra de#inicin de arreglo ms completa */uis %o$anes A.,, es un
conjunto #inito $ ordenado de elementos "omo+(neos. /a propiedad
-ordenado- si+ni#ica que el elemento primero, se+undo, terceroVnD(simo de
un arre+lo puede ser identi#icado. /os elementos de una arre+lo debern ser
"omo+(neos, es decir, del mismo tipo de datos. 5or ejemplo un arre+lo puede
estar compuesto de todos sus elementos de tipo cadena, otro puede tener sus
elementos de tipo entero, etc.
Al tratar el tema de arre+los es necesario conocer el t(rmino de dimensin.
Dime"si7" Desc-i*ci7"
0 !n solo punto.
1 *vector o lista, !na recta. ontiene lar+o.
2 *matriz o tabla, ontiene lar+o $ anc"o.
7 *cubo, Tiene lar+o, anc"o $ #ondo.
"eclaracin de un 9rreglo
NomX;a-iable < A--e3lo Z&ime"si7"[ &e NomX$i*o
E" &o"&e &ime"si7" es*eci%ica <
Vs!b5"&ice i"%e-io-U \Vs!b5"&ice s!*e-io-U
1n el orden K Jila, olumna, Jondo.
E.em*lo &e !"a &ecla-aci7" <
0 "imensin <
E 20 donde E, es de tipo 1ntero.
1 "imensin 2
>
1 2 7 ?

Ed2e C
E K arre+lo d1..?e de 1nteros.
? "imensiones <
1 / 1 2

A


HZ/D2[ S
H < a--e3lo Z1..1D 1..2[ &e E"$e-os.
@ "imensiones 2
Ed1,?,2e 7
E K arre+lod1..7, 1..?, 1..2e de 1nteros.
Las o*e-acio"es !e se *!e&e" -eali(a- co" a--e3los &!-a"$e el
*-oceso &e -esol!ci7" &e !" *-oblema so" <
Asi+nacin
/ecturaN1scritura
:ecorrido *acceso secuencial,
Actualizar *aadir, borrar, insertar,
4rdenacin
.squeda
'ec$o-es
8on aqu(llos de una sola dimensin, por lo que tambi(n son llamados
arreglos 'nidimensionales*
E.em*lo <
!n vector de una dimensin llamado A/>J, que consta de n elementos.
calif;1= calif;?= /
calif;n,
?=
calif;n,
1=
calif;n=
1l subndice o ndice de un elemento *1, 2 Vn, desi+na su posicin en la
ordenacin del vector. 4tras posibles notaciones del vector son K
a
1
D a
/
D\Da
"
E" ma$em4$icas ? al3!"os le"3!a.esEBASICF
AE1FD AE/FD\AE"F
AZ1[D AZ/[D\AZ"[ E" *-o3-amaci7" EPascalF
/os vectores se almacenan en memoria central de la computadora en un
orden ad$acente. As, un vector de C0 elementos denominado )!B1:48 se
representa +r#icamente por C0 posiciones de memoria sucesivas.
Memo-ia
NUMEROSE1F Di-ecci7" H
NUMEROSE/F Di-ecci7" HP1
NUMEROSE1F Di-ecci7" HP/
<
<
NUMEROSE6CF Di-ecci7" HP2W
ada elemento de un vector se puede procesar como si #uese una variable
simple al ocupar una posicin de memoria. As K
)!B1:48*2C, 'C *almacena el valor 'C en la posicin 2C
a
del vector
)!B1:48 $ la instruccin de salida K escribir
)!B1:48*2C,.
"eclaracin
nom Parre+lo S arre+lodlimin#..limsupe de tipo

&o"&e <
"omXa--e3lo < "omb-e ;4li&o &el a--e3lo.
limi"%..lims!* < l5mi$es i"%e-io- ? s!*e-io- &el -a"3o &el a--e3lo.
$i*o < $i*o &e &a$os &e los eleme"$os &el a--e3lo < e"$e-oD -ealD ca-4c$e-.

)4B.:18S arre+lo d1..10e de carcter
8i+ni#ica que )4B.:18 es un arre+lo *arra$, unidimensional de 10
elementos *1 a 10, de tipo carcter.
9signacin
NOMBRESESF ]A"a^
Asi3"a el ;alo- ]A"a^ al eleme"$o S &el ;ec$o- NOMBRES
!ectura<1scritura de "atos
/a /ecturaN1scritura de datos en un arre+lo u operaciones de
entradaNsalida normalmente se realizan con estructuras repetitivas, aunque
puede tambi(n "acerse con estructuras selectivas. /as instrucciones simples de
lecturaNescritura se representarn como K
leer A /ectura del vector A
escribir A 1scritura del vector A
leer =*C, /eer el elemento =*C, del vector =

Acceso Sec!e"cial al 'ec$o- E-eco--i&oF
8e puede acceder a los elementos de un vector para introducir datos
*escribir, en el o bien para visualizar su contenido *leer,. 1stas operaciones se
realizan utilizando estructuras repetitivas, cu$as variables de control *por
ejemplo >, se utilizan como subndices del vector *por ejemplo, <*>,. 1l
incremento del contador del bucle producir el tratamiento sucesivo de los
elementos del vector.

E.em*lo <
/ectura de 1C valores enteros de un vector denominado T4TA/.

T4TA/S a--a? d1..1Ce de entero
&es&e i 1 +as$a 1C +ace-
lee- T4TA/*i,
%i" X&es&e

8i se cambian los limite in#erior $ superior, por ejemplo, C $ 12, el bucle de
lectura sera K
&es&e i C +as$a 12 +ace-
lee- T4TA/*i,
%i"X&es&e

/a salida o escritura de vectores se representa de un modo similar.
&es&e i 1 +as$a 1C +ace-
esc-ibi- T4TA/*i,
%i"X&es&e
=isualiza todo el vector completo *un elemento en cada lnea independiente,.

Ac$!ali(aci7" &e !" 'ec$o-
5uede constar de tres operaciones ms elementales K
aF ALa&i- elementos *aade un nuevo elemento al #inal del vector,
!n arre+lo A se "a dimensionado a & elementos, pero solo se "an
asi+nado ? valores a los elementos A*1,, A*2,, A*7,, A*?,, se podrn aadir
dos elementos ms con una simple accin de asi+nacin.
A*C, 1C
A*&, 6

b., I"se-$a- elementos *introduce un elemento en el interior de un vector,

E.em*lo < 8e tiene un arre+lo )4B de & elementos de nombres de
personas, en orden al#ab(tico $ se desea insertar un nuevo nombre.

Ualcular la posicin ocupada por el elemento a insertarW 5
U>nicializar contador de insercionesW i n.
mie"$-as i TS 5 "acer
Utrans#erir el elemento actual "acia abajo, a la posicin iR1W
)4B*iR1, )4B*i,
Udecrementar contadorW
i iD1
%i"Xmie"$-as
U>nsertar el elemento en la posicin 5W
)4B*5, inuevo elementoZ
UActualizar el contador de elementos del vectorW
n nR1
%i"

cF Bo--a- elementos *1limina elementos de un vector,

Al3o-i$mo &e Bo--a&o
I"icio
Use utilizar una variable auEiliar A!<, que contendr el valor del elemento
que se desea borrarW
A!< )4B*i,
&es&e i j "asta )D1 +ace-
Ullevar elemento jR1 "acia arribaW
)4B*i, )4B*iR1,
%i"X&es&e
Uactualizar contador de elementosW
Ua"ora tendr un elemento menos, )D1W
) )D1
0i"


Re%e-e"cia a !" eleme"$o &e A--e3lo
variable de arre+lo dsubndicee
1jemplo K
E Ed7e 6
escribir *Ed2e,
[ 6
1 2 7

E.e-cicio <
8e desea la lectura $ desple+ado de C nombres. :esuelva el problema por
cada uno de los si+uientes criterios K
a, /ectura $ desple+ado alternados.
b, Todas las lecturas, todos los desple+ados.
aF ;a-iables <
strin+ K nom
entero K E

>nicio
5ara E 1 "asta C "acer
escribir*i)ombre [ i,
leer*nom,
escribir* i/a persona nmeroZ, E, i se llama K i,nom,
Jin


No$a < )o se utilizaron arre+los porque no se requera de
almacenamiento mltiple.

bF ;a-iables <
nom K Arre+lod1..Ce de strin+
E K 1ntero

>nicio
*a-a E 1 +as$a C +ace-
esc-ibi-*iIame el nombre nmeroZ,E,Z [Z,
lee-*nomdEe,
*a-a E 1 +as$a C +ace-
esc-ibi-*i/a persona nmero i, E,Z se llama K i,nomdEe,
Jin

O-&e"aci7" &e A--e3los
1Eisten diversos m(todos para ordenar los elementos de un arre+lo. 1l
ms conocido de ellos *no el mejor, es el M#todo de la Burbua.

1l m(todo consiste en "acer un recorrido por el arre+lo comparando
parejas de elementos A si estos no estn en el orden deseado, se procede a
intercambiarlos.

Al #inalizar el recorrido se veri#ica la cantidad de intercambios, si esta es
0 se asume que el arre+lo est ordenado A en caso contrario se inicia
nuevamente el recorrido.

/as parejas de elementos que se comparan deben ser conti+uos
*elemento1 $ elemento2, elemento2 $ elemento7, etc,. 1l nmero total de
comparaciones es n'1 *donde n es la cantidad de elementos,.

E.em*lo <
8e requiere la ordenacin de una lista con C valores enteros previamente
introducidos.

'a-iables <
/>8TA K arre+lod1..Ce de entero
E, auE K entero
cambio K boleano

>nicio
5ara E 1 "asta C "acer
escribir*iIame el valorZ,E,Z KZ,
leer* />8TAdEe,
repetir
cambio #also
para E 1 "asta ? "acer
si />8TAdEe T />8TAdER1e entonces
auE />8TAdEe
/>8TAdEe />8TAdER1e
/>8TAdER1e auE
cambio ;erdadero
#inPsiPentonces
"asta cambio S #also
escribir*i/ista ordenadaZ,
para E 1 "asta C "acer
escribir*i1lemento nmeroZ,E,Z esZ,/>8TAdEe,
Jin
!n arre+lo unidimensional es un tipo de datos estructurado que est #ormado de una
coleccin #inita $ ordenada de datos del mismo tipo. 1s la estructura natural para
modelar listas de elementos i+uales.
1l tipo de acceso a los arre+los unidimensionales es el acceso directo, es decir, podemos
acceder a cualquier elemento del arre+lo sin tener que consultar a elementos anteriores o
posteriores, esto mediante el uso de un ndice para cada elemento del arre+lo que nos da
su posicin relativa.
5ara implementar arre+los unidimensionales se debe reservar espacio en memoria, $ se
debe proporcionar la direccin base del arre+lo, la cota superior $ la in#erior.
REPRESENTACION EN MEMORIA
/os arre+los se representan en memoria de la #orma si+uienteK
5 ? array@'..AB o3 integer
5ara establecer el ran+o del arre+lo *nmero total de elementos, que componen el
arre+lo se utiliza la si+uiente #ormulaK
R!7-8 & %s C (%iD')
dondeK
ls S /mite superior del arre+lo
li S /mite in#erior del arre+lo
5ara calcular la direccin de memoria de un elemento dentro de un arre+lo se usa la
si+uiente #ormulaK
!@iB & 2ase(!) D @(iCli) 4 :B
donde K
A S >denti#icador nico del arre+lo
i S >ndice del elemento
li S /mite in#erior
G S )mero de b$tes tipo componente
8i el arre+lo en el cual estamos trabajando tiene un ndice numerativo utilizaremos las
si+uientes #rmulasK
R!7-8 & ord (ls) C (ord (li)D')
!@iB & 2ase (!) D @ord (i) C ord (li) 4 :B
"rrelos Unidimensionales
/a declaracin del arre+lo unidimensional es un tipo se+uido de un identi#icador con
una eEpresin constante >)T entre corc"etes. 1l valor de la eEpresin, que debe ser
positivo,es el tamao del arre+lo $ especi#ica el numero de elementos que contiene.
/a #orma de declarar un arre+lo es la si+uienteK
l tipo T l variable T d)e
Ieclara un arre+lo de nombre l variable T con ) elementos de tipo l tipo T, en donde
) es una constante,
/os corc"etes d e, sirven para encerrar los subndices.
5or ejemplo, para declarar un arre+lo de enteros llamado arre+lo con C elementos se
"ace de la si+uiente #ormaK
int arre+lodCeA
5ara accesar a al+n elemento del arre+lo, puede "acerse de las si+uientes #ormasK
a, int arre+lode S U0,1,2,7,?,CW NQse valida cuando se inicializan todos los elementos
del arra$QN
b, int arre+lod?e S U?, 2, 7, &W NQse declara $ asi+na valores iniciales al arre+lo QN
c, arre+lod7e S 10A NQ Asi+na 10 al ?er elemento del arre+lo listaQN
num S arre+lod2eA NQ Asi+na el contenido del 7er elemento a la variable nu
m QN
Una Estructura de Datos, es una coleccin de datos que se caracterizan por su
organizacin las operaciones que se definen en ella. Las Estructuras de Datos
pueden ser de dos tipos: Estticas y Dinmicas.
Las Estructuras de Datos estticas son aquellas en las que el espacio ocupado en la
memoria se define en tiempo de compilacin no puede ser modificado
durante la ejecucin del programa; por el contrario, en las Estructuras de
Datos Dinmicas el espacio ocupado en memoria puede ser modificado en
tiempo de ejecucin
Un !""!# $arreglo%, es una coleccin de datos del mismo tipo, que se almacena en
posiciones consecuti&as de memoria y reci'e un nom're com(os componentes
indi&iduales de un arreglo se llaman Elementos y se distinguen entre ellos por
el nom're del arreglo seguido uno o &arios )ices.
El ice es un n( que indica la posici)ue ocupa el elemento dentro del arreglo. iiiiiiiiiiii i
Los elementos del arreglo se almacenan en la memoria de la computadora en
posiciones adyacentes $un elemento por posic Los arreglos se iiiiiiiiiiii i
di&iden en:
* U+,D,-E+.,/+!LE. $0ectores o Listas%
* 1,D,-E+.,/+!LE. $2a'las o matrices%
* -UL2,D,-E+.,/+!LE.
!rreglos Unidimensionales o 0ectores.
Un 0ector es una secuencia de elementos del mismo tipo y en los que el orden es
significati&o. El orden est ado por el )ice del &ector; por ejemplo:
0ector3456
0 9
21 -1 8 5 -9 15 7 6 -4 33
Declarac e 0ectores: iiiiiiiiiiiii i
Es la reser&ac e un espacio en memoria, para almacenar un conjunto de datos. iiiiiiiiiiiii i
7ormato:
NOMBRE: ARRAY [N] DE TIPODEDATO
NOMBRE: ,dentificador del arreglo.
N: +( de elementos del arreglo.
TIPODEDATO: Entero, "eal, 8adena, o. LLLLLLLLLLLLL L
El )ice del primer elemento del &ector es 5 $cero% y el (o es +*4.
Ejemplo: Declarar un 0ector llamado 2E-9 que almacene las tempraturas de cada :ora
durante un d)
2E-9 : !""!# 3;<6 DE "E!L
A--e3los
A di#erencia de los elementos estudiados "asta a"ora, los arre+los pertenecen al dominio
de los tipos de datos $ no al de las instrucciones de 5ascal. A +randes ras+os, son
conjuntos de variables que comparten un mismo nombre, pudiendo ser re#erenciadas de
manera individual las variables del conjunto con a$uda de uno o ms ndices. /os
arre+los +uardan estrec"a similitud con elementos de datos de la vida cotidiana, como
los vectores $ las tablas, $ en cierto modo trazan una lnea que separa la pro+ramacin
bsica de la avanzada. omo la sintaEis #ormal de los arre+los es mu$ +eneral, se
comenzar de#iniendo los arre+los unidimensionales o vectores.
A--e3los !"i&ime"sio"ales< ;ec$o-es
8upn+ase que se tienen cinco variablesK a, b, c, d $ e. 8i se desea "acer re#erencia a las
cinco, deben usarse sus nombres, $ eso implicara, a nivel de pro+ramacin, poner sus
nombres en cada sentencia que se requiera *:ead/n, #rmulas, etc., $ repetir las mismas
cinco veces. !n en#oque ms +eneral es poner a las variables un mismo nombre, $
distin+uirlas por un nmero, parecido a como "acen los libros de matemticas para
re#erirse de manera +eneral a las componentes de los vectores o de las tuplas. 1ntonces,
se "ablara de a(1*, a(2*, a(4*, a(5* $ a(6*, en vez de las letras usadas anteriormenteA
como $a se sabe cmo +enerar los ndices *los nmeros entre par(ntesis que permiten
distin+uir las variables,, se puede usar un ciclo para manipular las variables $ usar
menos cdi+o.
/a sintaEis para declarar un arre+lo de una sola dimensin esK
Var
<nomb> : Array [<li>..<ls>] Of <tipo>;
donde lnombT es el nombre del arre+lo, lliT es el valor in#erior que puede tomar el
ndice $ llsT es el valor superior del ndice. !n ejemplo real de declaracin de arre+los
se muestra a continuacinK
Var
a : Array[1..5] Of Integer;
que produce un arre+lo llamado a de cinco variables enteras. /a primera es ad1e, la
se+unda es ad2e, $ as sucesivamente.
]ul es la utilidad de este esquema[ 8i se tienen que leer cinco variables declaradas
por separado, con nombres distintos, se usara al+o como estoK
ReadLn(a);
ReadLn(b);
ReadLn(c);
ReadLn(d);
ReadLn(e);
mientras que con arre+los, basta escribirK
For i := 1 To 5 Do
ReadLn(a[i]);
que es evidentemente ms cmodo.
A lo lar+o del curso se "an visto pro+ramas que suman una cantidad de nmeros usando
dos variables, una para leer cada nmero $ otra para acumular la suma. 1ste en#oque
tiene la desventaja de que se pierden los valores de los sumandos. 1l uso de arre+los
permite calcular la suma de los nmeros con una cantidad mnima de cdi+o $ a la vez
conservar cada valor, como muestra el si+uiente pro+rama completoK
Program SumaN;
Uses WinCrt;
Const
n = 5; {Cant. de #s}
Var
nums: Array[1..n] Of Integer;
s, i: Integer;
Begin
For i:=1 To n Do Begin
Write('Nmero: ');
ReadLn(nums[i]);
s := s + nums[i];
End;
WriteLn('Suma: ', s);
End.
)tese el uso de una constante para marcar el tamao del arre+loA dic"a constante,
naturalmente, tambi(n sirve para controlar el Jor. Ie este modo, slo se "ace necesario
cambiar un nmero para adecuar el pro+rama a la escala apropiada.
Arreglos Unidimensionales (Vectores o Listas) (Variables con subndices)

Nota: Un arreglo de variables es una coleccin de variables simples todas del
mismo tipo con un nombre comn, llamado el nombre del arreglo.

Ejemplo: Considere las siguientes edades: 20, 19, 18, 26, 2, 18, 2.

!stos siete valores se pueden guardar usando las variables !dad1 " 20, !dad2 " 19,
!dad " 18, !dad# " 26, !dad$ " 2, !dad6 " 18 % !dad& " 2. 'tra (orma de
guardarlos es como siete elementos del arreglo con nombre !dad.

)e puede *acer re(erencia a elementos en el arreglo *aciendo uso del nombre
!dad % el nmero del elemento +,ndice de la variable- entre par.ntesis.

Referencia de la variable: !dad+1-, !dad+2-, !dad+-, ...
Valor de la variable: 20, 19, 18, ...

Ejemplos:

1- +!dad+#- / !dad+2--02

2- )uma " 0
1or i " 1 2' 6
)uma " )uma / !dad+i-
3e4t i
pic'utput.5rint 6!l promedio de las edades es:67)uma06
-ttp2<<...*ca)e)*upr*edu<crivera<sici@007<9rreglos'nidimensionales*-tm
!n arre+lo *arra$, disposicin, vector o lista, tabla o matriz, es una estructura de datos
utilizada para almacenar un conjunto de datos del mismo tipo, en posiciones
consecutivas de memoria.
!n arre+lo se identi#ica por medio de un nombre. /os componentes individuales del
arre+lo se denominan elementos $ se distin+uen entre ellos por el nombre del arre+lo
se+uido de uno o varios ndices o subndices, entre par(ntesis. 1l identi#icador o ndice,
determina la posicin de memoria de un elemento del arre+lo.
1.2.1.1 Clasi%icaci7" &e los A--e3los
1.2.1.1.1 A--e3los U"i&ime"sio"ales. !n arre+lo unidimensional es un conjunto #inito
*nmero especi#ico de elementos,, ordenado, de elementos "omo+(neos *del mismo
tipo,.
Bigura 1.5 Crreglo unidimensional.
5ara tener acceso directo a la posicin de memoria que contiene el valor de cada
elemento del arre+lo, se utiliza la si+uiente #rmulaK
Iir 1d>eSIir 1d>
i
eR)um5osQ*>D>
i
,
IondeK
Iir 1d>eK Iireccin de memoria del elemento cu$o ndice es >.
Iir 1d>
i
eK Iireccin de memoria del elemento inicial del arre+lo.
)um5osK )mero de posiciones de memoria de que consta la celda.
>
i
K jndice del elemento inicial.
/as operaciones con vectores se pueden realizar con elementos individuales o sobre los
vectores completos mediante las instrucciones bsicas $ estructuras de control.
/as operaciones que se pueden realizar sobre elementos individuales sonK asi+nacin $
lectura.
1ntre las operaciones sobre el vector completo estnK
o Reco--i&o< 1s la manera de acceder de manera sucesiva $
consecutiva a los contenidos de cada elemento del vector.
o I"se-ci7"< onsiste en introducir en el arre+lo el valor del
elemento. Aunque el sistema reserva memoria para cada elemento del arre+lo,
puede suceder que al+una posicin de memoria se encuentre vaca. 8ur+en dos
operaciones distintasK aadir una celda de memoria vaca o aadir en una celda
de memoria ocupada, para no daar el contenido de memoria donde se inserta el
nuevo dato, se desplaza este contenido $ todos los si+uientes a una posicin
superior de la misma memoria.
o BIs!e&a< onsiste en realizar un recorrido del vector,
empezando desde su posicin de memoria ms baja con el #in de localizar un
dato determinado.
o Elimi"aci7"< .orrar el dato contenido en una de las
posiciones del vector, si es una posicin di#erente de la ltima, todos los
elementos con posiciones posteriores retroceden una posicin.
4rdenacinK onsiste en reor+anizar el contenido de cada uno de los elementos
del vector se+n una secuencia determinada *ascendente o descendente,.
Las operaciones con &ectores se pueden realizar con elementos indi&iduales o so're los
&ectores completos, mediante las instrucciones ' cas y las estructuras de
control; por ejemplo:

Operaciones sobre los elementos de un vector
Las operaciones so're los elementos de un &ector son:
!.,=+!8,H.
LE82U"!.
E.8",2U"!.

!.,=+!8,H:
Es la acc e introducir un elemento a una posic spec)ca del &ector. !s)ues, si ii ii ii ii ii ii ii ii ii ii ii ii ii i i
queremos que la posic del &ector tenga un &alor de *>, la iiiiiiiiiiiii i
operac realizar es la siguiente: iiiiiiiiiiiii i
!3?6@*>
LECTURA:
Es la operac acc e o'tener un &alor desde el teclado, para ser ii ii ii ii ii ii ii ii ii ii ii ii ii i i
introducido en una posic el &ector: iiiiiiiiiiiii i
LEE !3<6
ESCRITURA:
Es la operac e sacar un &alor de una posic el &ector: ii ii ii ii ii ii ii ii ii ii ii ii ii i i
E.8",1E !3?6


Operaciones sobre vectores completos:
Las operaciones que se pueden realizar so're &ectores completos son:
* "E8/"",D/.
* 1 IAUED!.
* ,+.E"8,H.
* EL,-,+!8,H.
* /"DE+!-,E+2/.

"E8/"",D/:
Es la operac e escri'ir, asignar, leer o llenar de datos el &ector completo iiiiiiiiiiiii i
y se realiza mediante las siguientes estructuras:
7/" ,nd@5 2/ B D/
LEE !3,nd6
7/" ,nd@5 2/ B D/
E.8",1E !3,nd6
,nd@4
C:ile ,ndD@45 D/
,nd@4
C:ile ,ndD@45 D/
LEE !3,nd6 E.8",1E !3,nd6
Ejemplo:
Dis n 9seudo o que almacene en la memoria de la ec ec ec ec ec ec ec ec ec ec ec ec ec e c
computadora un &ector llamado 7,1/ de 455 posiciones el cual contendr os
primeros 455 n(sdel 7i'onacci:
.oluc E'ig iiiiiiiiiiiii i
9seudo o 7i'onacci ccccccccccccc c
0aria'les
7,1/ : !""!# 34556 DE Entero
!,1,8,, : Entero
,+,8,/
!F4
1@5
7,1/356@5
7,1/346@4
7/" ,@; 2/ BB D/
,+,8,/
8@!G1
7,1/3,6@8
1@!
!@8
7,+
7,+
1 IAUED!:
8onsiste en determinar si un &alor espec)co se encuentra dentro del &ector. .e de'en
eHaminar uno a uno todos los elementos, comenzando con el primer
elemento del &ector y comparando con el elemento 'uscado. El
pseudo o de '(da es el siguiente: ccccccccccccc c
9seudo o 1(da ccccccccccccc c
0aria'les
I!LL!D/, J, ! : Entero
,+,8,/
I!LL!D/@5
LEE J
!@5
CI,LE I!LL!D/@5 !+D !D$+( de Elementos del 0ector% D/
,+,8,/
,7 0E82/"3!6@J 2IE+
I!LL!D/@4
!@!G4
7,+
,7 I!LL!D/@4 2IE+
E.8",1E KEl +( fu ncontradoK
EL.E
E.8",1E KEl n( no est n el &ectorK
7,+

/"DE+!-,E+2/:
La ordenac clasificac e datos es el proceso de organizar ii ii ii ii ii ii ii ii ii ii ii ii ii i i
datos en alg(den o secuencia espec)ca, tal como creciente o decrecente, para
datos numcos, o alfa' camente para datos alfanumcos.
Los mdos de ordenac e di&iden en dos categor): iiiiiiiiiiiii i
/rdenac e !rrays. iiiiiiiiiiiii i
/rdenac e !rc:i&os. iiiiiiiiiiiii i
La ordenac e !rrays se denomina tam'i iiiiiiiiiiiii i ordenac nterna, ya que se iiiiiiiiiiiii i
almacena en la memoria interna de la camputadora a gran &elocidad y acceso
aleatorio. La ordenac e arc:i&os se suele :acer casi siempre iiiiiiiiiiiii i
so're soportes de almacenamiento eHterno: Discos, 8intas, etc. y por ello, se
denomina ordenac Hterna. 9ara este curso iiiiiiiiiiiii i
emplearemos la ordenac nterna, es decir, la si si si si si si si si si si si si si s i
ordenac e !rrays. iiiiiiiiiiiii i
/"DE+!8,H 9/" 1U"1UL! / ,+2E"8!-1,/:
El mdo de la 'ur'uja es uno de los conocidos por su sencillez y mmmmmmmmmmmmm m
facilidad de implementaci)la idea ' ca del m i iiiiiiii do es comparar elementos
consecuti&os en cada paso a lo largo del &ector. 8ada &ez que se realiza una
comparac e los elementos se intercam'ian entre s)n caso de iiiiiiiiiiiii i
no estar en orden. Es decir, se eHamina dos elementos adyacentes J3i6 y
J3iG46; en caso de no estar ordenados J3i6 D J3iG46 o 'ien J3i6 J3iG46 se
intercam'ian los &alores de dic:os elementos.
Algoritmo de Ordenamiento por Burbuja:
9seudo o 1U"1UL! ccccccccccccc c
0aria'les
!:!""!#3+6 DE Entero
J,L,!UJ:Entero
,+,8,/
7/" J@5 2/ $+*;% D/
,+,8,/
7/" L@5 2/ $$+*4%*$JG4%% D/
,+,8,/
,7 !3L6!3LG46 2IE+
,+,8,/
!UJ@!3L6
!3L6@!3LG46
!3LG46@!UJ
7,+
7,+
7,+
7,+
A--e3lo bi&ime"sio"al
1ste tipo de arre+los al i+ual que los anteriores es un tipo de dato estructurado, #inito
ordenado $ "omo+(neo. 1l acceso a ellos tambi(n es en #orma directa por medio de un
par de ndices.
/os arre+los bidimensionales se usan para representar datos que pueden verse como una
tabla con #ilas $ columnas. /a primera dimensin del arre+lo representa las columnas,
cada elemento contiene un valor $ cada dimensin representa una relacin
/a representacin en memoria se realiza de dos #ormas K almacenamiento por columnas
o por ren+lones.
5ara determinar el nmero total de elementos en un arre+lo bidimensional usaremos las
si+uientes #rmulasK
R!7-8 0# R#7-%87#. (R') & %s' C (%i'D')
R!7-8 0# C8%E/7!. (R=) & %s= C (%i=D')
7o. "8"!% 0# C8/P87#7"#. & R' 4 R=
REPRESENTACION EN MEMORIA POR COLUMNAS
5 ? array @'..A,'..*B o3 integer
5ara calcular la direccin de memoria de un elemento se usan la si+uiente #ormulaK
!@i,FB & 2ase (!) D @((F C li=) R' D (i D li'))4:B
REPRESENTACION EN MEMORIA POR REN#LONES
5 ? array @'..A,'..*B o3 integer
5ara calcular la direccin de memoria de un elemento se usan la si+uiente #ormulaK
!@i,FB & 2ase (!) D @((i C li') R= D (F D li=))4:B
dondeK
i S >ndice del ren+ln a calcular
j S >ndice de la columna a calcular
li1 S /mite in#erior de ren+lones
li2 S /mite in#erior de columnas
G S )mero de b$tes tipo componente
Una -!2",M o 2!1L!, es un arreglo de dos dimensiones, por lo cual se manejan dos
Nndices; el primer Nndice se refiere a la fila o rengln y el segundo a la
columna; grficamente lo podemos entender asN:

8ol 4 8ol ; 8ol O 8ol <
7ila 4

7ila ;

7ila O

7ila <

9ara :acer referencia a un elemento de la matriz se tiene que indicar con dos Nndices:
-atriz37ila638olumna6
Ejemplo: -3O63<6@P, -3463;6@<, -3Q63O6@E""/", -3;6346@>
8ol 4 8ol ; 8ol O 8ol <
5 < 4 4
> O 5 5
; ? 4 P
O P > <
Declaracin de -atrices
La declaracin de una matriz es similar a la de un !reglo Unidimensional $0ector%, con
la diferencia de que :ay que agregar un Nndice para referenciar la nue&a
dimensin de la matriz, la sintaHis es la siguiente:
+om'reDel!rreglo: !""!# 3R de 7ilas63R de 8olumnas6 DE 2ipoDeDatos
Ejemplo: La declaracin de la matriz mostrada en el ejemplo de arri'a serNa de la
siguiente forma:
-: !""!# 3<63<6 DE Enteros
Ejemplo con -atrices
DiseSe un 9seucocdigo que contenga en la memoria de la computadora una matriz de
OTO con nUmeros enteros leNdos del teclado.

9seudocdigo -!2",M
0aria'les
-!2: !""!# 3O63O6 DE Enteros
7ila, 8/lumna: Enteros
,+,8,/
7/" 7ila@4 2/ O D/
,+,8,/
7/" 8olumna@4 2/ O D/
,+,8,/
E.8",1E V2eclee un nUmero: V
LEE -!237ila638olumna6
7,+
7,+
7,+
A--e3los bi&ime"sio"ales< $ablas
8i+uiendo la misma lnea, se pueden relacionar +rupos de vectores para #ormar tablas.
5or ejemplo, supn+ase que se quieren almacenar nombres de personas $ sus
respectivos nmeros de tel(#onosA se puede tener un vector de nombres $ uno de
nmeros, de modo que el iD(simo nmero de tel(#ono *en un vector, sea de la iD(sima
persona *en el otro vector,. 5ues bienK eEiste un modo de #undir ambos vectores en un
solo tipo de variable, una tabla de dos columnas $ varias #ilas *o viceversa, en la que la
posicin d1, ie indique el nombre de una persona $ la posicin d2, ie indique el nmero
de tel(#ono de esa persona. 5ara declarar esta estructura, se escribeK
Var
Tabla: Array[1..2, 1..n] Of String;.
$ de manera +eneral, se puede declarar un arre+lo bidimensional asK
Var
<nomb>: Array[<li1>..<ls1>, <li2>..<ls2>] Of <tipo>;
Ie "ec"o, aunque no estn contemplados en el pro+rama del /aboratorio de 1lementos
de omputacin, se pueden de#inir ms dimensionesA no "a$ un lmite de#inido a la
cantidad de dimensiones de un arre+lo.
=olviendo al ejemplo de la lista de personas $ nmeros de tel(#ono, se puede escribir un
pro+rama completo que use una tabla para leer $ +uardar esta in#ormacinK
Program Telefonos;
Uses WinCrt;
Const
n = 5;
Var
Tabla: Array[1..2, 1..n] Of String;
i: Integer;
Begin
For i:=1 To n Do Begin
WriteLn('Persona: ', i);
Write('Nombre: ');
ReadLn(Tabla[1, i]);
Write('Telfono: ');
ReadLn(Tabla[2,i]);
End;
End.
1n este momento, los datos estn en la memoria, $ el es#uerzo que se requiri para
leerlos #ue menor que usando 10 variables independientes *cinco para los nombres $
cinco para los nmeros,. Adems, con slo cambiar un valor, el de n, el pro+rama
almacena ms pares de nombre $ tel(#ono. L aunque no se ver aqu, manipular esos
datos una vez ledos es i+ual de #cil.
!nas consideraciones importantes sobre los arre+losK son racimos o conjuntos de
variables, pero no pueden manejarse como tales. 8iempre deber "acerse re#erencia a
una posicin espec#ica del arre+loA si se desea acceder a una parte del mismo o a su
totalidad, deber "acerse de manera iterativa, visitando los elementos que lo componen
uno a uno.
-ttp2<<...*intec*edu*do<ArimeneB<guiaC*-tml
A--e3los Bi&ime"sio"ales. !n arre+lo bidimensional es un conjunto de datos del
mismo tipo, estructurado de tal #orma que se precisa de dos ndices para re#erenciar
cada uno de sus elementos, el primer ndice se re#iere a la #ila $ el se+undo se re#iere a
la columna.
1n cuanto al almacenamiento, el sistema reserva memoria para cada uno de sus
elementos destinando en conjunto, un bloque de la misma, este se "alla estructurado asK
almacenamiento consecutivo $ secuencial de una #ila dentro de otra, sin solucin de
continuidadA almacenamiento consecutivo $ secuencial de una columna dentro de otra,
sin solucin de continuidad.
5ara acceder a la posicin de cada elemento del arre+lo se tienen las si+uientes
#rmulasK
o Almacenamiento por #ilasK
Iir 1d>,%eSIir 1d>
i
,%
i
eR)um5osQ*)cQ*>D1,R*%D1,,
o Almacenamiento por columnasK
Iir 1d>,%eSIir 1d>
i
,%
i
eR)um5osQ*)#Q*%D1,R*>D1,,
IondeK
Iir 1d>,%eK Iireccin de memoria del elemento cu$os ndices son >,%.
Iir 1d>
i
,%
i
eK Iireccin de memoria del elemento inicial del arre+lo.
)cK )mero total de columnas.
)#K )mero total de #ilas.
>
i
$ %
i
K jndices del elemento inicial.
/os arre+los bidimensionales tienen las mismas operaciones que los vectores. los
al+oritmos cambian porque es necesario tener el orden se+n los dos ndices.
+.2 -ane!o "rc0ivos
Los archivos tambin denominados ficheros (file); es una coleccin de
informacin (datos relacionados entre s), localizada o almacenada como una
unidad en alguna parte de la computadora.
Los archivos son el conjunto organizado de informaciones del mismo tipo, que
pueden utilizarse en un mismo tratamiento; como soporte material de estas
informaciones.
I"%*+#!,,I-" $ .+S $*,/I0+S(
Los archivos como coleccin de datos sirve para la entrada y salida a la
computadora y son manejados con programas.
Los archivos pueden ser contrastados con Arrays y registros; Lo que resulta
dinmico y por esto en un registro se deben especificar los campos, l nmero
de elementos de un arrays (o arreglo), el nmero de caracteres en una cadena;
por esto se denotan como "Estructuras Estticas".
En los archivos no se requiere de un tamao predeterminado; esto significa que
se pueden hacer archivos de datos ms grandes o pequeos, segn se
necesiten.
Cada archivo es referenciado por su identificador (su nombre.).
,$*$,%E* 1S%I,$S #E .+S $*,/I0+S
Las principales caractersticas de esta estructura son:
ndependencia de las informaciones respecto de los programas
La informacin almacenada es permanente
Un archivo puede ser accedido por distintos programas en distintos momentos
Gran capacidad de almacenamiento.
,.$SI2I,$,I+" #E .+S $*,/I0+S
Los archivos se clasifican segn su uso en tres grupos:
*ermanentes o -aestros@
Estos contienen informacin que varia poco. En algunos casos es preciso
actualizarlos peridicamente.
De -ovimientos
Se cercan para actualizar los archivos maestros. Sus registros son de tres
tipos: alta, bajas y modificaciones.
De -aniobra o Traba!o.
Tienen una vida limitada, normalmente menor que la duracin de la ejecucin
de un programa. Su utilizan como auxiliares de los anteriores.
%I&+S #E $*,/I0+S
Los elementos de un archivo pueden ser de cualquier tipo, simples o
estructurados o segn su funcin.
SE3" S! 2!",I+"(
Se define por:
a.G "rc0ivos *ermanentes@
Son aquellos cuyo registros sufren pocas o ninguna variacin a lo largo del
tiempo, se dividen en:
'onstantes@ Estn formados por registros que contienen campos fijos y
campos de baja frecuencia de variacin en el tiempo.
De Situacin@ Son los que en cada momento contienen informacin
actualizada.
<istricos@ Contienen informacin acumulada a lo largo del tiempo de archivos
que han sufridos procesos de actualizacin o bien acumulan datos de variacin
peridica en el tiempo.
b.G "rc0ivos de -ovimiento
Son aquellos que se utilizan conjuntamente con los maestros (constantes), y
contienen algn campo comn en sus registros con aquellos, para el
procesamiento de las modificaciones experimentados por los mismos.
c.G "rc0ivo de -aniobra o Transitorio
Son los archivos creados auxiliares creados durante la ejecucin del programa
y borrados habitualmente al terminar el mismo.
SE3" S!S E.EME"%+S(
Los principales archivos de este tipo son:
"rc0ivo de 1ntrada: Una coleccin de datos localizados en un dispositivo de
entrada.
"rc0ivo de Salida: Una coleccin de informacin visualizada por la
computadora.
'onstantes: estn formados por registros que contienen campos fijos y
campos de baja frecuencia de variacin en el tiempo.
De Situacin: son los que en cada momento contienen informacin
actualizada.
<istricos: Contienen informacin acumulada a lo largo del tiempo de archivos
que han sufrido procesos de actualizacin, o bien acumulan datos de variacin
peridica en el tiempo.
"rc0ivos de -ovimiento o Transacciones: Son aquellos que se utilizan
conjuntamente con los maestros (constantes), y contienen algn campo comn
en sus registros con aquellos, para el procesamiento de las modificaciones
experimentados por los mismos.
"rc0ivos de -aniobra o Transitorios: Son los archivos auxiliares creados
durante la ejecucin del programa y borrados habitualmente al terminar el
mismo.

) SE3" S!S E.EME"%+S
Los principales archivos de este tipo son:
"rc0ivo de 1ntrada, una coleccin de datos localizada en un dispositivo de
entrada.
"rc0ivo de Salida, una coleccin de informacin visualizada por la
computadora.
"rc0ivo de *rorama, un programa codificado en un lenguaje especifico y
localizado o almacenado en un dispositivo de almacenamiento.
"rc0ivo de TeBto, una coleccin de caracteres almacenados como una unidad
en un dispositivo de almacenamiento.
$,,ES+ $ .+S $*,/I0+S
Se refiere al mtodo utilizado para acceder a los registros de un archivo
prescindiendo de su organizacin. Existen distintas formas de acceder a los
datos:
Secuenciales; los registros se leen desde el principio hasta el final del archivo,
de tal forma que para leer un registro se leen todos los que preceden.
Directo; cada registro puede leerse / escribirse de forma directa solo con
expresar su direccin en el fichero por l numero relativo del registro o por
transformaciones de la clave de registro en l numero relativo del registro a
acceder.
*or [ndice; se accede indirectamente a los registros por su clave, mediante
consulta secuenciales a una tabla que contiene la clave y la direccin relativa
de cada registro, y posterior acceso directo al registro.

Din,micoX es cuando se accede a los archivos en cualquier de los modos
anteriormente citados.
La eleccin del mtodo esta directamente relacionada con la estructura de los
registros del archivo y del soporte utilizado.
%I&+S #E $,,ES+S
"cceso Secuencial. Exige el tratamiento de elemento, para esto es necesario
una exploracin secuencial comenzando desde el primer momento (Pascal
permite este acceso)
Secuenciales@ archivo de texto que debe ser ledo del principio hasta el final.
"cceso Directo. Permite procesar o acceder a un elemento determinado y
referencia directamente por su posicin en el soporte de almacenamiento
(Turbo Pascal permite este acceso.
"leatorios: es un archivo con registros de un mismo largo. Un programa
puede accesar directamente cualquier registro sin tener que leer los registros
previos.

Binarios: es un archivo que lee byte por byte sin asumir ninguna estructura.
Los archivos Binarios no son un nuevo tipo de archivo, pero si una nueva forma
de manipular cualquier tipo de archivo. Las tcnicas de archivo binarios
permiten leer o cambiar cualquier byte de un archivo. Son herramientas
extremadamente potentes, pero como toda herramienta potente debe
manejarse con cuidado
Entre otras caractersticas, a las tcnicas de archivo binario no les preocupa los
caracteres EOF intercalados (Control+Z = Chr$(26)) que pueda tener un
archivo.
Ejemplo Open NombreArchivo for Binary as #NumeroArchivo.
nstrucciones para manejar archivos
4*1#: reserva un espacio del buffer para la data que mover entre el
programa y los archivos. La estructura es:
OPEN filespec FOR {Append|Binary|nput|Outuput|Random} As #filenumber
Por ejemplo:
4*1# "C:\Windows\AddrBook.ini" FOR nput As #1
Filespec: Es la localizacin de archivo en el que se trabajar, incluyendo
usualmente el drive y path.
"C:\Windows\AddrBook.ini"
{Append| Binary| nput| Outuput| Random} El programador tiene que
seleccionar uno. Binary y Random se utiliza para archivos binarios y
aleatorios. Append, nput y Output son usados con archivos secuenciales. Un
archivo secuencial no puede ser abierto para leer y escribir simultaneamente.
Output es usado para escribir en el archivo. nput es usado para leer del
archivo. Append es usado para colocar data al final de un archivo exitente.
#filenumber: es necesario asignar un nmero al archivo. El nmero puede
estar en el rango de #1 a #511 y es usado por Visual Basic para identificar el
archivo.
'L4S1: para cerrar un archivo. La estructura es:
'L4S1 #filenumber
Por ejemplo:
'L4S1 #1
O2IT1: envia data del programa al archivo secuencial. La estructura es:
O2IT1 #filenumber, [OutputList]
Por ejemplo:
O2IT1 #1, UserName, UserCompany, SerialNumber
O2IT1 es la operacin opuesta al I#*UT. Las expresiones en el OutputList
son separadas por comas. O2IT1 inserta comillas y comas a la data que
envia al archivo.
I#*UT: lee data del archivo. La estructura es:
I#*UT #filenumber, nputList
Por ejemplo:
I#*UT #1, UserName, UserCompany, SerialNumber
Declaracin y asignacin de archivos
La declaracin de un arc0ivo con tipo se efectPa con la a%uda de las
palabras reservadas file of.
1l procedimiento de asinacin es id(ntico al utiliLado anteriormente.
1!emplo@
T%pe
datos V record
clave @ inteerX
nombre @ strin\3>]X
puesto @ strin\2>]X
sueldo @ realX
estado @ booleanX
Ytrue activo$false ba!a licaZ
endX
8ar
arc0ivo@file of datosX
bein
"ssin6arc0ivo$^empleado.dat^7X
SIST1-" D1 -"#1J4 D1 "2'<I84S.
Tiene las siguientes funciones:
Controla los datos en almacenamiento secundario [ ]
Proporciona al usuario una abstraccin de cmo se manipulan los datos
internamente. [ ]
Proporciona independencia de E/S con los dispositivos [ ]
Soporte de comparticin, proteccin, recuperacin de archivos y posibles
cadas del sistema. [ ]
Transmisin de datos de memoria principal a secundaria.[ ]
Los archivos de una empresa pueden almacenarse en diferentes dispositivos.
Todos los archivos se pueden almacenar por medio de diectoios, que no son
otra cosa ms que tablas de smbolos de archivo, los directorios se pueden
utilizar de dos formas:
DI21'T42I4 D1 #I81L _#I'4 4 DI21'T42I4 *L"#4
Con este mtodo, se almacenan todos los archivos en un solo nivel, este
mtodo en sistemas donde el volumen de archivos no es grande.[ ]
DI21'T42I4 J12"2?UI'4
Los archivos son almacenados por medio de directorios, esta clasificacin se
de acuerdo a la conveniencia del usuario o de la empresa. [ ] .La estructura
tiene una forma de rbol con raz, este mtodo es el ms utilizado debido a que
la revisin o bsqueda se realiza de forma sencilla.
Para accesar a los archivos que se almacenan en un sistema jerrquico, el
usuario debe indicar el o los directorios que se deben recorrer para localizar el
archivo deseado, a esto se le denomina %ta de acceso del ac(i0o. La ruta de
acceso puede ser de dos formas:
2uta absoluta.- Este tipo de ruta de acceso inicia siempre con una diagonal
invertida [ ]
C:\Edit c:\SOS\sistemas\report.txt
2uta relativa.- Este tipo de ruta de acceso realiza la bsqueda del archivo en
el directorio de trabajo actual, si el archivo no se localiza aqu, el S.O. lo
buscar en los directorios especificados en el PATH de un archivo con
extensin .BAT.
C:\Edit report.txt
+&E*$,I+"ES E"E*$.ES 4!E SE *E$.I5$" S+B*E !" $*,/I0+(
Las operaciones generales que se realizan son:
'reacin. Escritura de todos sus registros.
'onsulta. Lectura de todos sus registros.
"ctualiLacin. nsercin supresin o modificacin de algunos de sus registros
'lasificacin. Reubicacin de los registros de tal forma que queden ordenados
segn determinados criterios.
Borrado. Eliminando total del archivo, dejando libre el espacio del soporte que
ocupaba.
+*$"I5$,I-" #E .+S $*,/I0+S(
Los archivos se encuentran organizados lgicamente como una secuencia de
registros de varias longitudes diferentes.
Los arc0ivos de reistros de lonitud fi!a: son los que almacenan la
informacin en los archivos mediante un encabezado y luego se introducen uno
a uno los registros ubicados en posiciones consecutivas.
Los reistros de lonitud variable: es el almacenamiento de registros de
varios tipos en un archivo y permite uno o ms campos de longitudes variables
y dichos campos pueden ser repetidos. La longitud de los registros debe estar
definida correctamente para poder leer y escribir de forma efectiva.
E"2+4!ES E"E*$.ES &$*$ .$ +*$"I5$,I-" #E $*,/I0+S(
Los enfoques son:
1. G 1nfo&ue de acceso secuencial@ Se refiere al procesamiento de los
archivos de acuerdo con el orden especifico. Ejemplo archivo secuenciales y de
texto.
2. G 1nfo&ue de acceso Directo Permite recuperar registros individuales sin
leer otros registros del archivo, ejemplos archivos indizados.


$*,/I0+S SE,!E",I$.ES(
Se refiere al procesamiento de los registros, no importa el orden en que se
haga, para eso los registros estn organizados en forma de una lista y
recuperarlos y procesarlos uno por uno de principio a fin.
2udimentos de los arc0ivos Secuenciales; dependiendo del dispositivo de
almacenamiento utilizado el archivo se puede mostrar el usuario como si fuera
un sistema secuencial.
Al finalizar un archivo secuencial se denota con una marca de fin de archivo.
(End end-of-file)
El usuario de un archivo secuancial puede ver los registros en un orden
secuancial simple.
La nica forma de recuperar registros es comenzar al principio y extraerlos en
el orden contemplado.
'uestiones de proramacinX la manipulacin de los archivos se hace en el
contexto de la programacin en un lenguaje por procedimientos de alto nivel.
Estos lenguajes tienden a expresar la manipulacin de archivos mediante
subrutinas que se definen como parte del lenguaje formal o se incluyen como
extensiones del lenguaje en una biblioteca estndar.
La mayor parte de los lenguajes por procedimiento de alto nivel cuenta con
caractersticas que ayudan a detectar la marca de fin de archivo.
)$*,/I0+S #E %E6%+(
Tambin conocidos como (Slream File) son utilizados para almacenar
documentos que consisten en texto; En ellos, cada registro es un solo smbolo
o cdigo de control.
El leer estos archivos recibimos la informacin en orden secuencial en el que
aparece cuando lo vemos en un monitor.
Los archivos de texto son una secuencia de lneas separadas por marcas de fin
de lnea.
2udimentos de los arc0ivos de teBtosX El usuario escribe los archivos de
textos mediante un procesador de palabras que le permitir almacenar la
informacin pero no estrictamente en forma secuencial.
El procesador tambin nos permite desplazarnos por todo el bloque de
informacin y permitirnos realizar modificaciones.
Mientras el usuario avance rpidamente en la lectura de registro lograra ver
mas archivos.
'uestiones de proramacinX Casi todos los entornos de programacin por
procedimientos de alto nivel cuentan con subrutinas para manipular los
archivos de texto.
Estas subrutinas pueden formar parte de la definicin formal del lenguaje o que
se ofrezca en biblioteca como extensiones del mismo.
$*,/I0+S I"#I5$#+S(
Es la aplicacin de incluir ndices en el almacenamiento de los archivos; de
esta forma nos ser ms fcil buscar algn registro sin necesidad de ver todo el
archivo.
Un ndice en un archivo consiste en un listado de los valores del campo clave
que ocurren en el archivo, junto con la posicin de registro correspondiente en
el almacenamiento masivo.
/undamento de los [ndices
a.- La colocacin de un listado al inicio del archivo: para la identificacin del
contenido.
b.- La presentacin de un segundo ndice: para reflejar la informacin de cada
punto principal del ndice anterior.
c.- La actualizacin de los ndices: Cuando se insertan y eliminan archivos, es
preciso actualizar los ndices para evitar contratiempos actualizando un archivo.
d.- La organizacin de un ndice: Nos evita examinar archivo por archivo para
recuperar algn registro buscado; por lo tanto ahorraramos tiempo si tenemos
una adecuado organizacin de los ndices.
'uestiones de *roramacin
Algunos lenguajes de alto nivel cuentan con subttulos para manipular los
archivos de un registro indizado.
Valindose de las subrutinas es posible escribir programas sin tener que
preocuparse por la estructura real del sistema de ndices que se aplique.
$*,/I0+S #IS&E*S+S(
Tambin llamados (Hashed Files) representan un sistema de almacenamiento
de archivos que solo ofrece acceso directo, y permiten calcular la posicin de
un registro en el almacenamiento masivo.
2udimentos de los arc0ivos dispersos.
El usuario debe dividir el rea de almacenamiento asignando al archivo en
varias secciones llamadas cubetas para poder ingresar los datos.
La distribucin de la informacin en las cubetas es problemtica debido a que
la estructura de los archivos es dispersa.
Dentro de los archivos se presentan colisiones de informacin debido al
agrupamiento de los registros ingresados.
'uestiones de proramacin.
Casi ninguno de los lenguajes de programacin por procedimientos en la
actualidad ofrece implantaciones directas de archivos dispersos; esto es debido
a las cuestiones dependientes de la aplicacin implicadas en el diseo de estos
archivos.
)ME#I#$S #E !%I.I5$,I-" #E .+S $*,/I0+S(
Para utilizar un archivo debemos tener en cuenta:
1. - [ndice de 8olatilidad; Un archivo es voltil cuando tiene un alto porcentaje
de adiciones y supresiones debido al ingreso o eliminacin de registros
respecto al numero promedio de registros que haya en el archivo.
2. - [ndice de "ctividad; Un archivo es activo cuando tiene un alto porcentaje
de utilidad sea de actualizacin o consulta en un periodo de tiempo fijo
respecto al numero promedio de registro que se encuentran en el archivo.
El ndice de actividad suele emplearse para saber si un archivo puede
explotarse como una organizacin secuencial o relativa.
Archivos de acceso directo (con tipo)
Los archivos tipeados (con tipo), tambin llamados arc0ivos binarios,
contienen datos de tipo simple o estructurado, tales como integer, real , record,
etc., excepto otro tipo de archivos.
Los archivos con tipos estn estructurados en elementos o registros (record)
cuyo tipo puede ser cualquiera. A los elementos de estos archivos se accede
directamente, al no situarse stos en posiciones fsicamente consecutivas, sino
en posiciones lgicas. Esta es la razn por la cual se les denomina arc0ivos
de acceso aleatorio o directo. Los elementos de los archivos aleatorios son
de igual tamao y el trmino acceso directo significa que es posible acceder
directamente a un elemento con solo especificar su posicin
#E2I"I,I+"ES(
Los ms utilizados en el desarrollo del tema son:
"rc0ivo 6/ic0ero7@
Conjunto de informacin estructurada en unidades de acceso denominada
registro.
2eistros.
Estructura de datos formada por uno o ms elementos denominados "Campos"
y estos pueden estar compuestos a su vez por "subcampos".
'laves@
Se denomina a un campo especial del registro que sirve para identificarlo
Blo&ue@
Es la cantidad de informacin que se transfiere en cada operacin de lectura o
escritura sobre un archivo.
'ampo@
Es cada uno de los diferentes datos que constituyen un registro lgico.
-ttp2<<...*monografias*com<trabaos7<arc-<arc-*s-tml
Unidad 8. 'dulo#
3.1 Diferencia entre /unciones % *rocedimientos.
0!"cio"es versus *-oce&imie"$os
Dimilitudes
1. /a de#inicin de ambos aparece en la seccin de subpro+ramas de la parte de
declaraciones de un pro+rama $ consiste en una cabecera, una parte de
declaraciones $ una parte de instrucciones se+uida por un punto $ coma.
2. Ambos son unidades de pro+rama independientes. /os parametros, constantes $
variables declarados en una #uncin o procedimiento son localesA solamente son
accesibles dentro del subpro+rama.
7. uando se llama a una #uncin o a un procedimiento, el nmero de los
parmetros reales debe ser el mismo que el nmero de los parmetros #ormales,
$ los tipos deben coincidir, con una eEcepcinK se puede asociar un parmetro
real de tipo entero con un parmetro #ormal por 1alor de tipo real.
Diferencias
1. /os procedimientos se llaman mediante instrucciones de llamada a
procedimientos. /as #unciones se llaman usando sus nombres en eEpresiones.
2. /a cabecera de una #uncin debe incluir un identi#icador de tipo que especi#ique
el tipo del resultado. )o se asocia nin+n valor con el nombre de un
procedimiento $, por tanto, tampoco nin+n tipo.
7. 1n los procedimientos, los valores se devuelven a trav(s de parmetros por
variable. 1l valor de una #uncin se devuelve mediante su nombre.
"ttpKNNGGG.ucm.esNin#oNdsipNclavelNcoursesNip0207Nnode&@."tml
3.2 "ctivacin 9 Invocacin de /unciones %
*rocedimientos
Declaracin de funciones
W1 Sinopsis
La declaracin ( 4.1.2) da a conocer la funcin al compilador, de forma que
a partir del punto de declaracin, ya se pueden realizar invocaciones a la
misma. A su vez, la definicin estar en algn otro punto del programa, tal vez
en una librera externa (en forma ya compilada) o en otro mdulo de programa
(como texto fuente).
Una funcin puede ser declarada varias veces en un mismo programa, y las
declaraciones pueden aparecer en cualquier orden; en un fichero fuente o en
varios, pero en cualquier caso antes de su uso, es decir: antes de cualquier
invocacin a la funcin [5]. Adems de declarar el nombre de la funcin y el
tipo devuelto (por defecto se supone int ) se declaran tambin el tipo de los
parmetros.
W2 La declaracin tiene la siguiente sintaBis:
[e5tern] <tipo-devuelto> nombre-funcion ()
W2a
[e5tern] <tipo-devuelto> nombre-funcion (<tipo>, ...)
W2b
[e5tern] <tipo-devuelto> nombre-funcion (<tipo>
<parametro>, ... ) W2c
W2.1 1!emplos@
extern int funcion1 (); // no acepta ningn
argumento
extern int funcion1 (void); // mejor que la
anterior
funcion2 (char, int); // por defecto supone
que devuelve int
int funcion2 (char, int); // mejor que la
anterior
char funcion3 (char c, int i); // incluye nombres de
parmetros
W2.2 'omentario
El especificador <tipo-devuelto> es opcional; por defecto se supone
int, as que las declaraciones que siguen son equivalentes [4]:
int func (<tipo> <parmetro>, ...)
func (<tipo> <parmetro>, ...)
#ota: Los compiladores MS Visual C++ y Borland C++ admiten que ciertos
especificadores opcionales acompaen a la declaracin de funciones y
otros objetos. Tales especificadores son de utilidad en circunstancias
especficas ( 4.4.1b).
W3 Declaraciones
Recuerde que las declaraciones deben realizarse antes que cualquier uso de la
funcin. A su vez las definiciones pueden estar en cualquier sitio, aunque en
algunos casos pueden existir excepciones (sustitucin inline 4.4.6b).
Las declaraciones de funciones tienen un nombre especfico: se denominan
prototipos ; el primero de los anteriores (2a ) es vlido, aunque
desaconsejado (herencia del C); es el denominado estilo clsico Kernighan &
Ritchie; el segundo (2b ), y tercero (2c ), son los aceptados en C++
[
1].
#ota: Es importante resaltar que en la declaracin de parmetros no est
permitido incluir funciones, es decir: las funciones no pueden pasar como
argumentos a otras funciones [6]. Sin embargo C++ dispone de recursos
cuando esto es necesario: Pasar un puntero ( 4.2.4) o una referencia (
4.2.3) a la funcin.
El viejo estilo K&R tiene la desventaja de no permitir al compilador comprobar
el nmero y tipo de los argumentos utilizados en las llamadas a la funcin.
Este problema fue eliminado con la introduccin de los prototipos que utilizan la
forma completa
[
2], en la que se especifica el nmero y tipo de cada argumento
aceptado por la funcin. El compilador usa estos datos para comprobar la
validez de las llamadas a la funcin y como se ilustra en el ejemplo, es capaz,
en su caso, de realizar dentro de ciertos lmites, un modelado de tipo
d
d
("Casting") de los argumentos para garantizar que coinciden con el tipo
esperado.
#ota: El mecanismo anterior, permite al compilador efectuar una
comprobacin de tipos de los argumentos que pasan y del valor devuelto.
Los lenguajes en los que no se realizan estas comprobaciones, se
denominan de d(bilmente tipados ("Weakly typed"), tienen la desventaja
de que no conocen exactamente el tipo de cdigo que ejecutarn.
Supongamos que se tiene el siguiente cdigo:
extern long lmax(long v1, long v2); // prototipo
funcion() {
int limit = 32;
char ch = 'A';
long mval;
mval = lmax(limit, ch); // Llamada a la
funcion.
}
Puesto que se dispone de un prototipo para la funcin lmax, este programa
convierte los parmetros limit y ch a lon (utilizando las reglas estndar de
asignacin), antes de colocarlos en la pila para la llamada a lmax. Si no
hubiese existido el prototipo, limit y ch hubieran sido puestos en la pila como
entero y carcter respectivamente, en cuyo caso, los valores pasados a limit
no hubieran coincidido con el tamao y/o contenido esperados por esta,
originando problemas ( 4.4.6 Llamadas a funciones y conversin de
argumentos).
W3.1 La inclusin del especificador opcional eBtern, sirve para indicar al
compilador que la definicin de la funcin se encuentra en otro fichero distinto
del actual. En caso contrario dicha definicin debe encontrarse en algn lugar
del fichero (si es que existen llamadas a dicha funcin). Es decir, si aparece el
siguiente trozo de cdigo:
int alfa (int deg, int min, int sec); // declaracin de
alfa
...
int gr;
gr = alfa( x, y, z); // uso de alfa
la definicin de alfa debe estar en algn sitio del fichero que contiene dichas
instrucciones, en caso contrario el compilador devolver un error:
Unresolved external 'alfa()' referenced from ....OBJ.
Es importante recordar que las funciones tienen mbito global y que,
sus declaraciones (prototipos) aunque suelen estar al principio
(inmediatamente despus de las directivas de preprocesado), pueden
aparecer en cualquier parte del fichero. Ponerlas al principio tiene la
ventaja de que sus nombres sean conocidos en la totalidad del fichero, con
lo que pueden ser invocadas desde cualquier punto -desde cualquier otra
funcin, incluso main()- sin tener que declarar un prototipo dentro de cada
funcin que las invoque.
W) *rototipos de funciones
Los prototipos juegan un rol importante en la programacin C++; sirven
tambin para clarificar y documentar el cdigo, sobre todo si los nombres de las
variables son significativos. Por ejemplo, la funcin strcpy tiene dos
parmetros: una cadena fuente y una destino, la cuestin es: Cual es cual?
char *strcpy(char* dest, const char* source);
Si se incluye un identificador en el parmetro de un prototipo, solo es utilizado
para los posibles mensajes de error relativos a tal parmetro sin ningn otro
efecto. De hecho, los identificadores (nombres) de los parmetros suelen ser
largos y descriptivos en los prototipos, mientras que en las definiciones suelen
ser abreviados, sin que, en este aspecto, tengan que haber coincidencia entre
ambos (ver reglas de mbito para los identificadores de parmetros en
prototipos de funciones 4.1.3). Como puede deducirse de estas palabras,
esto significa que en realidad los nombres de los argumentos no son
imprescindibles en los prototipos; solo son necesarios los tipos de los
parmetros. Es decir: El prototipo de la funcin anterior podra perfectamente
ser sustituido por:
char *strcpy(char*, const char*);
Un declarador de funcin con la palabra void entre parntesis: func(void);,
indica que la funcin no acepta ningn parmetro; es equivalente a la expresin
como func();, que tambin declara una funcin sin parmetros.
W).1 *rototipos % fic0eros de cabecera:
Es costumbre que los prototipos de las funciones incluidas en las libreras del
lenguaje se agrupen en ficheros especficos, los denominados fic0eros de
cabecera, que son ficheros de texto (en realidad ficheros fuente 1.4) en los
que se agrupan todas las declaraciones que se utilizan en la librera.
#ota: En realidad, los ficheros de cabecera no solo incluyen los prototipos
y declaraciones de las funciones, tambin las declaraciones de las
estructuras, macros ( 4.9.10b) y clases ( 4.11.2a) utilizadas.
Por otra parte, tambin es frecuente que los programadores C++ construyan
sus propias librer.as que acompaan a las que vienen preconstruidas en el
lenguaje. Para ello se agrupan en ciertos mdulos aquellas funciones o clases
ms frecuentemente utilizadas. Estos mdulos son compilados y enlazados de
una forma especial de forma que no se obtiene un ejecutable, sino una librer.a
de las que existen varios tipos ( 1.4.4a). En cualquier caso, sean libreras
preconstruidas en el lenguaje o de fabricacin propia, los prototipos de las
funciones incluidas en tales libreras se agrupan en ficheros de cabecera. Las
que vienen con el lenguaje se localizan en el directorio \Include. Las de
fabricacin propia se deben mantener en otro directorio separado del anterior.
Puesto que es imprescindible incluir en cada fichero fuente la declaracin de
cada funcin antes de que pueda ser utilizada , el hecho de tener agrupadas
las declaraciones en un fichero de cabecera es de gran utilidad, porque solo es
preciso incluir una directiva include ( 4.9.10g) al principio de cada fuente
para tener la seguridad de que todos los prototipos estarn presentes. De otro
modo tendra que escribirlos manualmente en cada fuente en que usara
funciones de la librera.
En la documentacin que acompaa a toda librera se indica siempre, junto con
un ejemplo de uso, el nombre del fichero de cabecera que contiene los
prototipos de las funciones utilizadas en la librera. Sin embargo, en ocasiones,
cuando no se tiene a mano un buen manual de uso, o existe la sospecha de
una errata en el mismo, puede ser til echar un vistazo al fichero de cabecera
en que se incluye el prototipo de la funcin, ya que contiene bastante
informacin sobre su uso; tipo y nmero de parmetros, valor devuelto, etc.
#ota: Se ha llegado a afirmar que los ficheros de cabecera contienen toda
la informacin necesaria para usar las libreras de cualquier tipo. Aunque
desde luego pueden ser de gran ayuda, la afirmacin es un poco
exagerada. En lo que respecta a las funciones, los prototipos contienen en
realidad toda la gramtica de su invocacin, pero poco o nada sobre la
"funcionalidad".
W+ #Pmero variable de arumentos
Normalmente los prototipos de funciones declaran un nmero fijo de
parmetros (que puede ser ninguno). Para las funciones que pueden aceptar
un nmero variable de parmetros (tales como printf), el prototipo puede
terminar en puntos suspensivos (...). Esta elipsis indica que la funcin puede
ser invocada con diferentes tipos de argumentos en diferentes ocasiones. Los
puntos pueden colocarse al final de una sublista de parmetros de conocidos,
por ejemplo:
func(int *count, long total, ...);
Por supuesto, esta forma de prototipo reduce la comprobacin que puede
efectuar el compilador; los parmetros fijos son comprobados en tiempo de
compilacin, y los variables son pasados sin comprobacin
[
3].
W3 1!emplos
A continuacin algunos ejemplos adicionales de prototipos y declaraciones de
funciones. Obsrvese que para mayor concisin, en todas ellas se han omitido
d
los nombres de los parmetros formales (que como hemos indicado, son
opcionales en los prototipos):
f(); /* En C, sin datos sobre los
parametros, el estilo clsico K&R.
Devuelve int */
f(); // En C++, f no recibe
argumentos. Devuelve int.
int f(void); // f devuelve int, no recibe
argumentos.
int p(int,long); /* p devuelve int, acepta dos
parmetros: El primero un int, el segundo
un long */
int __pascal q(void); /* q funcin Pascal, devuelve
int, no recibe parmetro */
int printf(char *format,...); /* Devuelve int; un
parmetro fijo, puntero a carcter,
despus cualquier nmero de argumentos
adicionales de tipo desconocido */
char* f(int) // funcin que devuelve puntero a
carcter, acepta un int.
int* f(int) // funcin que devuelve puntero a
int, acepta int.
struct str f(int) // funcin que devuelve
estructura str acepta un int.
int (*f (int))(int); /* funcin que acepta un entero y
devuelve un puntero a funcin que acepta
un int y devuelve un entero */
int (*(*f())[10])(); /* funcin que no recibe
argumentos, devuelve un puntero a un array
de 10 punteros a funcin que devuelven
enteros */
int f(struct S* Sptr); /* funcin que recibe como
argumento un puntero a una estructura y
devuelve int */
int (B::* getptr())(); /* funcin que no recibe
argumentos, devuelve un puntero a funcin
miembro de la clase B que no recibe
argumentos y devuelve un int */
W5 *olimorfismo
Aparte de estas tareas de comprobacin y modelado de tipos, en realidad el
objetivo principal de incluir en la declaracin de funciones una descripcin
detallada del valor devuelto y de los parmetros aceptados, es permitir lo que
se llama sobrecara (de funciones). Esto significa que dentro del mismo
mbito puedan definirse varias funciones con nombres idnticos pero distintos
parmetros y por supuesto distintas definiciones. Ms tarde, el compilador ser
capaz de saber a cual de ellas nos estamos refiriendo, precisamente
analizando los parmetros que pasamos a la funcin. Por ejemplo, en C++
est permitido el siguiente trozo de cdigo:
int alfa (int deg, int min, int sec); // declaracion-1
de alfa
void alfa (int deg); // declaracion-2
de alfa
int alfa (char n); // declaracion-3
de alfa
...
n = alfa('c'); // invocacin de
alfa-3
el compilador conoce que, en este caso, la invocacin se refiere a la tercera
declaracin de la funcin alfa, precisamente por el argumento que estamos
utilizando.
#ota: Las funciones main, Oin-ain y Lib-ain no pueden ser
sobrecargadas. Ejemplo:
extern "C" void WinMain(int, char*, char*);
void WinMain(int, short, char*, char*); // Error!!
http://www.zator.com/Cpp/E4_4_1.htm
Invocacin de funciones % conversin de arumentos
W1 Sinopsis
Las invocacin de funciones se realiza colocando el nombre de la funcin y los
argumentos actuales en el mismo orden que los parmetros formales
correspondientes. Ejemplo:
void funcion (int x, char c);
...
int z = 12;
char ch = 'Z';
funcion(ch, z); // Error: orden de argumentos
cambiado !!
funcion(z, ch); // Ok: invocacin con orden de
argumentos correcto
Recordemos que la sintaxis del lenguaje permite tambin la invocacin de
funciones a travs de punteros a funciones ( 4.2.4b) e incluso de referencias
( 4.2.3), aunque esto ltimo sea menos frecuente.
Cuando las funciones son miembros de clases la invocacin sigue una sintaxis
especial ( 4.11.2e). En estos casos incluso existen operadores especiales
para invocarlas a travs de sus punteros ( 4.9.16).
W2 1valuacin de arumentos
La gramtica C++ permite utilizar expresiones como argumentos en la
invocacin de funciones. Estas expresiones son evaluadas, y sus posibles
efectos laterales tienen efecto, antes que la funcin sea cargada en la pila (
4.4.6b). Sin embargo, tales prcticas son en general desaconsejadas pues dan
lugar a cdigo difcil de leer. Ejemplo:
int x foo (int x) { return x+2; }
...
int main() {
int n = 3;
cout << "foo -> " << foo(n++) << endl;
cout << "foo -> " << foo(++n) << endl;
...
}
Salida:
foo ->5
foo ->7
Hay que advertir que el orden de evaluacin de los argumentos es indefinido
(depende del compilador), por lo que no es recomendable utilizar expresiones
que dependan del orden de evaluacin de los parmetros. Ejemplo:
int x foo (int x, int y) { return x + y; }
...
int main() {
int n = 3;
cout << "foo -> " << foo(n++, n) << endl;
...
}
En estas condiciones es imposible precedir si la salida ser 7 u 8.
W3 'onversin de arumentos
A continuacin de la evaluacin, los valores resultantes de las expresiones son
convertidos automticamente a los mismos tipos que los declarados para los
parmetros formales.
Ejemplo (suponiendo la definicin del caso anterior):
cout << foo(x + 3.5); // -> 8
W3.1 Cuando no se ha declarado previamente un prototipo de la funcin, C++
realiza una invocacin a la funcin convirtiendo la totalidad de los argumentos
segn las reglas de Conversiones aritmticas estndar ( 2.2.5). En cambio,
si existe un prototipo de funcin en el mbito, C++ convierte los argumentos al
tipo declarado para los parmetros.
W3.2 Cuando un prototipo incluye puntos suspensivos (...), el compilador
convierte todos los argumentos (si los hay) como en cualquier otro caso hasta
la elipsis, despus conforma todos los dems parmetros (que han sido
declarados variables) segn las reglas usuales para argumentos de funciones
que no tienen prototipo.
W3.3 Si existe un prototipo, el nmero de argumentos debe coincidir con los
declarados (a menos que existan puntos suspensivos). El tipo de los
argumentos tambin debe coincidir, pero solo hasta el punto en que una
asignacin pudiera realizar legalmente una conversin (del tipo realmente
pasado al tipo esperado). Tambin existe el recurso de hacer una conversin
explcita ("cast") para convertir un argumento en un tipo que sea aceptable por
el prototipo ( 4.9.9 Modelado de tipos).
W) En C++ los parmetros son pasados por valor, lo que significa que existen
copias locales de los argumentos formales, estas copias locales son variables
locales de la funcin llamada. La nica excepcin es el caso de las matrices.
Cuando se utiliza una matriz como argumento en la llamada a una funcin, el
valor pasado es un puntero (a la direccin de memoria del principio de la
matriz).
Ejemplo:
#include <iostream.h>
void fun1(char* str) { // recibe puntero a
carcter
cout << str << endl;
}
void fun2(char str[]) { // recibe matriz de
caracteres
cout << str << endl;
}
int main() { //
======================
char ch[10] = "Hola mundo";
fun1(ch);
fun2(ch);
}
Salida:
Hola mundo
Hola mundo
Observe que el compilador acepta con total naturalidad que ch es un puntero a
carcter en la invocacin func1(ch), y una matriz de caracteres en
func2(ch). La razn es que en ambos casos, el compilador supone que ch
es un puntero a carcter (en el ejemplo, al primer elemento de ch[], una
matriz de caracteres), lo que coincidira con la definicin de func1, y que en la
definicin de func2, char str[] es tomado como char* str.
W+ Cuando se desea que la funcin llamada pueda alterar el valor de las
variables de la funcin que la invoca, los argumentos actuales utilizados son
punteros a las variables respectivas en la funcin invocante. A su vez la funcin
invocada debe declarar el parmetro como un puntero y acceder a la variable
indirectamente a travs de l. En el ejemplo que sigue deseamos que la
funcin func pueda alterar el valor de la variable x. Observe que pasamos un
puntero a dicha variable, y como func trata el argumento recibido p como tal
puntero:
{
int x = 10;
int* ptr = &x;
func(ptr); // pasamos puntero a x
} // ahora x = 30
...
void func (int* p) { // p es declarado como puntero
*p = 3 * (*p); // y tratado como tal puntero!!
}
W3 Recordar que C++ tambin permite pasar los argumentos por referencia
(Paso de argumentos 4.4.5).
W5 -,s sobre conversin de par,metros
En la lista de argumentos de invocacin de funciones es posible incluir
sentencias de asignacin, aunque sea una prctica desaconsejable, pues da
lugar a cdigo difcil de interpretar y en ocasiones sin mucho sentido.
Por ejemplo, en C++ es vlido el siguiente cdigo que compila sin problema:
#include <iostream.h>
void fun (char* p, int n) {
for (int i = 1; i <= n ; i++) cout << p << i << endl;
}
void main() { // =============
char* pt1 = "Hola, que tal!! ";
char* pt2;
int x;
fun(pt2 = pt1, x =5); // desaconsejado !!
}
Salida:
Hola, que tal!! 1
Hola, que tal!! 2
Hola, que tal!! 3
Hola, que tal!! 4
Hola, que tal!! 5
http://www.zator.com/Cpp/E4_4_6.htm
Declaracin de funciones
La &ecla-aci7" &e !"a %!"ci7" $ie"e la si3!ie"$e %o-ma <
31nction Nombre (p1,p2,...)?tipo
<declaraciones locales y s12programas>
2egin
<cuerpo de la funcin>
Nombre := valor de la funcin
end,
p',p=,... lista de parGmetros 3ormales
tipo tipo de dato del res1ltado
H1e dev1elve la 31nci;n
E.em*los <
31nction veri3ica ? 2oolean ,
< 61nci;n sin parGmetros 3ormales>
31nction cam2ia(ar valor_', valor_=? real)?real,
31nction potencia( 2ase, e5ponente ? real )?real,
http://www.itlp.edu.mx/publica/tutoriales/pascal/u6_6_2_1.h
tml
Invocacin de funciones
Las %!"cio"es se i";oca" &e la si3!ie"$e ma"e-a <
Dnombre4funcinE Eparmetros4locales= 5

&o"&e <
*a-4me$-osXlocales es !"a lis$a &e ;a-iables ?=o co"s$a"$es se*a-a&as *o- comas.
La eHis$e"cia &e *a-4me$-osXlocales &e*e"&e-4 &e !e eHis$a" parmetros formales
e" la &ecla-aci7" &e la %!"ci7".
Po- e.em*loD -esol;amos el *-oblema &e cac!la- la -a5( c!a&-a&a &e !" "Ime-oD
!$ili(a"&o el al3o-i$mo &e Ne>$o"<
HEiP1F A HEiF P C.6 E a=HEiF ,HEiF F
La co&i%icaci7" &el *-o3-ama se-5a <
Program RaiI_c1adrada,
<#l sig1iente programa calc1la la raJI
c1adrada de 1n nKmero>
Eses Crt,
ar
raiI, n1mero ? real,
<0eclaraci;n de la 31nci;n raiI_c1ad>
31nction raiI_c1ad( a ? real ) ? real ,
ar
c,5 ? real ,
2egin
5 ?& '#CL ,
c ?& '.) ,
:hile !2s (cC5)>'#CL do
2egin
c ?& 5 ,
5 ?& 5 D ).A 4 ( a/5 C5 )
end,
raiI_c1ad ?& 5
<#l res1ltado se asigna a nom2re_31nci;n>
end,
2egin
Clr.cr,
Mrite(N%a raJI c1adrada de ? N),
Read%n(n1mero) ,
raiI?&raiI_c1ad(n1mero),
<Invoca a la 31nci;n raiI_c1ad>
Mrite%n ,
Mrite%n(N#s ig1al a ? N,raiI?O?P),
ReadQey,
Clr.cr
end.
http://www.itlp.edu.mx/publica/tutoriales/pascal/u6_6_2_2.h
tml
*rocedimientos.
Un procedimiento es un subprograma que realiza una tarea especfica. Puede recibir cero o
ms variables de entrada y teniendo tambin cero o ms variables de salida. Un procedimiento
est compuesto de un grupo de sentencias a las que se asigna un nombre (identificador) y
constituye una unidad de programa. La tarea asignada al procedimiento se ejecuta siempre que
en el programa principal se encuentra el nombre del procedimiento.
Declaracin de un procedimiento.
Al igual que cualquier otro identificador, todos los procedimientos se deben declarar dentro del
cuerpo del programa. La declaracin de un procedimiento no indica a la computadora que
ejecute las instrucciones dadas, sino que indica a la computadora cules son estas
instrucciones y dnde estn localizadas cuando sea necesario.
formato 1
void nombreproc(void)
{
declaracin de variables locales;
cuerpo del procedimiento;
}
formato 2
void nombreproc(lista parmentros formales)
{
declaracin de variables locales;
cuerpo del procedimiento;
}
nombreproc dentificador vlido.
lista parmetro formales Parmetros formales del procedimiento; sirven para pasar informacin
al procedimiento y/o devolver informacin del procedimiento a la unidad de programa que le
invoca.
Llamada al procedimiento.
Los procedimientos se llaman dentro de un programa o de otro procedimiento directamente por
su nombre, de acuerdo a los formatos 1 y 2.
formato 1
nombreproc();
formato 2
nombreproc(lista parmetros actuales);
La sentencia nombreproc inicia la ejecucin del procedimiento nombreproc; despus que ha
terminado la ejecucin, se ejecuta la sentencia que sigue a la llamada al procedimiento.
/unciones.
Las funciones son los bloques constructores de C y el lugar donde se da toda la actividad del
programa. La forma general de una funcin es:
especificador_de_tipo nombre_de_la funcin(lista de parmetros)
{
cuerpo de la funcin
}
El especificador_de_tipo especifica el tipo de valor que devuelve la sentencia return de la
funcin. El valor puede ser cualquier tipo vlido. Si no se especifica ningn tipo, el compilador
asume que la funcin devuelve como resultado un entero. La lista de parmetros es la lista de
nombres de variables separados por comas con sus tipos asiciados que reciben los valores de
los argumentos cuando se llama a la funcin. Una funcin puede no tener parmetros en cuyo
caso la lista de parmetros contiene slo la palabra clave void.
La sentencia return
La sentencia return tiene dos usos importantes. Primero, fuerza una salida inmediata de la
funcin en que se encuentra. O sea, hace que la ejecucin del programa vuelva al cdigo que
llam a la funcin. En segundo lugar, se puede utilizar para devolver un valor.
8uelta de una funcin.
Hay dos formas en las que una funcin puede terminar su ejecucin y volver al sitio en que se
llam. La primera ocurre cuando se ha ejecutado la ltima sentencia de la funcin y,
conceptualmente, se encuetra la llave } del final de la funcin. ( La llave realmente no aparece
en el cdigo objeto, por supuesto, pero se puede pensar como si as fuera.) Por ejemplo, esta
funcin sencillamente imprime una cadena invertida en la pantalla:
void imp_inversa(char *s)
{
register int t;
for(t=strlen(s)-1; t>-1; t--) printf("%c", s[t]);
}
8alores devueltos.
Todas las funciones, excepto aquellas de tipo void, devuelven un valor. Este valor se especifica
explcitamente en la sentencia return. Si una funcin no es especificada como void y si no se
especifica un valor de vuelta, entonces el valor devuelto por la funcin queda tcnicamente
indefinido. Mientras que una funcin no se declare como void, puede ser usada como operando
en cualquier expresin vlida de C. Por tanto, cada una de las siguientes expresiones es vlida
en Turbo C:
x = potencia(y);
if(max(x,y)>100) printf("mayor");
for(c=getchar(); isdigit(c); ) ...;
Sin embargo, una funcin no puede ser el destino de una asignacin. Como:
intercambio(x, y) = 100; /* Esto esta MAL!*/
Lo &ue devuelve main67
Cuando se usa una sentencia return en main(), el programa devuelve un cdigo de terminacin
al proceso de llamada (que generalmente es el sistema operativo). El valor devuelto debe ser
un entero. Pasa muchos sistemas operativos, incluyendo DOS y OS/2, un valor de vuelta de 0
indica que el programa ha terminado normalmente. Todos los dems valores indican que se ha
producido algn tipo de error.
"rumentos de funciones.
Si una funcin va a usar argumentos, debe declarar variables que acepten los valores de los
argumentos. Estas variables se llaman parmentros formales de la funcin. Se comportan
como otras variables locales dentro de la funcin, crendose al entrar en la funcin y
destruyndose a salir. Como muestra la siguiente funcin, la declaracin de parmetros
aparece despus del nombre de la funcin y antes de la llave de apertura:
/* devuelve 1 si c es parte de la cadena cad; 0 de otro modo */
est_en(char *cad, char c)
{
while(*cad)
if(*cad==c) return 1;
else cad++;
return 0;
}
http://www.umsanet.edu.bo/programacion/sim(NF-
121)/tecnicas_de_diseno.htm
3.3 Uso de /unciones % *rocedimientos con
*ar,metros.
*rocedimientos con par,metros
/os parametros formales son un tipo especial de variables en un procedimiento
a las que se pueden pasar valores desde el eEterior del procedimiento.
/os parametros formales se declaran en la cabecera del procedimiento.
/os parmetros que pueden recibir valores pero que no pueden devolverlos
reciben el nombre de parEmetros por 1alor o parEmetros de entrada.
/os parmetros que pueden recibir $ devolver valores reciben el nombre de
parEmetros por 1ariable o parEmetros de entrada:salida.
/os procedimientos que usan parmetros requieren una cabecera distinta de
aquellos que no lo "acen.
A los procedimientos que usan parmetros se les llama mediante una instruccin
de llamada a procedimiento, que no slo especi#ica el nombre del procedimiento
sino tambi(n los valores pasados al procedimiento.
0ttp@99HHH.ucm.es9info9dsip9clavel9courses9ip>2>39node33.0tml
*ar,metros por valor o de entrada
8on procedimientos que usan parmetros que pueden recibir valores de otras
unidades de pro+rama pero que no pueden devolverlos.
Cabece-a
8intaEisK
PROCEDURE nombre ( declaracin'parEm'formales );
dondeK
o PROCEDURE es una palabra reservadaA
o nombre es el nombre de un procedimientoA
o declaracin'parEm'formales declara los parmetros del procedimiento.
/as declaraciones de los parmetros #ormales por valor tienen la #orma
lista'parEmetros : tipo
donde lista'parEmetros es una nica variable o una lista de variables separadas por comas $ tipo especi#ica
su tipoA estas declaraciones se separan mediante punto $ coma.
4bjetivoK
Ia nombre al procedimiento $ declara sus parmetros.
Pa-$e &e &ecla-acio"es
o omo en los procedimientos simples.
Pa-$e &e i"s$-!ccio"es
o omo en los procedimientos simples.
I"s$-!cci7" &e llama&a
8intaEisK
nombre ( lista'parEmetros'reales )A
dondeK
o nombre es el nombre de un procedimientoA
o lista'parEmetros'reales es una nica eEpresin o una
lista de eEpresiones separadas por comas.
4bjetivoK
/lama el pro+rama nombrado. 8e suspende la ejecucin de la unidad
de pro+rama actual, se pasan los valores de los parmetros reales a los
correspondientes parmetros #ormales $ comienza la ejecucin del
procedimiento. uando #inaliza la ejecucin del procedimiento, la
ejecucin de la unidad de pro+rama ori+inal contina con la instruccin
si+uiente a esta instruccin de llamada a procedimiento.
o Antes de que se llame un procedimiento con parametros, sus parmetros
#ormales estn inde#inidos.
o 1n el momento de la llamada, se asocian posiciones de memoria con sus
parmetros por valor, $ se copian los valores de los parmetros reales
correspondientes en dic"as posiciones de memoria.
o Tras la ejecucin del procedimiento, los parmetros por valor vuelven de
nuevo a estar inde#inidosK cualquier valor que tuvieran durante la
ejecucin del procedimiento se "a perdido $ no se devuelve a la unidad
de pro+rama que llam al procedimiento.
P-o3-ama onversin de monedaDDversin 2.
ombina en un nico procedimiento con parametros de valor los procedimientos
simples ConvertirPesetasEuros $ ConvertirEurosPesetas del pro+rama
ConvertirMoneda1.
5ara ello, el pro+rama principal lee un cdi+o que indica el tipo de moneda a
convertir $ la cantidad de dinero, $ comparte esta in#ormacin con el
procedimiento.
5ermite tambi(n convertir varias cantidades $ calcular la cantidad total
convertida.
PROGRAM ConvertirMoneda2( input, output );
{*********************************************************************
**
Entrada (teclado): Mes, dia y anyo actuales, un entero indicando el
tipo de moneda, y varias cantidades monetarias.
Objetivo: Convertir cantidades monetarias en pesetas a
euros
y viceversa, calculando
el total de las cantidades.
Salida (pantalla): Instrucciones al usuario, las cantidades
monetarias,
la fecha de las operaciones, y el total de las
cantidades.
**********************************************************************
**}
CONST
EuroPeseta = 166.386; {paridad euro-peseta}
VAR
MesActual, {mes actual}
DiaActual, {dia actual}
AnyoActual, {anyo actual}
CodigoMoneda : integer; {indica el tipo de la moneda a ser
convertida}
Dinero, {cantidad monetaria a convertir}
Total : real; {total de las cantidades}

PROCEDURE MostrarInstrucciones;
{---------------------------------------------------------------------
---
Objetivo: Mostrar las instrucciones al usuario.
Salida (pantalla): Instrucciones para usar el programa.
----------------------------------------------------------------------
-}
BEGIN
writeln( 'Este programa convierte pesetas a' );
writeln( 'euros y viceversa,' );
writeln( 'y calcula la cantidad total.');
writeln( 'Introduzca 0 para indicar que se han procesado todas',
' las cantidades,' );
writeln;
writeln( 'Introduzca 1 para convertir pesetas a euros' );
write( ' 2 para convertir euros a pesetas: ' )
END {MostrarInstrucciones};
PROCEDURE Convertir( Codigo : integer; {codigo de moneda}
Cantidad: real ); {cantidad monetaria}
{---------------------------------------------------------------------
--
Acepta: Codigo, Cantidad.
Objetivo: Convertir una cantidad monetaria a otro sistema
monetario.
Salida (pantalla): Cantidad monetaria equivalente.
----------------------------------------------------------------------
--}
BEGIN
write( 'Es equivalente a ' );
IF Codigo = 1 THEN
writeln((1/ EuroPeseta) * Cantidad:4:2, ' euros' )
ELSE
writeln(round(EuroPeseta * Cantidad):1, ' pesetas' )
END {Convertir};
BEGIN {**********************programa
principal**************************}
write( 'Introduzca el dia, mes y anyo actuales: ' );
readln( DiaActual, MesActual, AnyoActual );
MostrarInstrucciones;
readln( CodigoMoneda );
Total := 0;
write( 'Introduzca cantidad (0 para terminar): ' );
readln( Dinero );
WHILE Dinero > 0 DO
BEGIN
Convertir( CodigoMoneda, Dinero );
Total := Total + Dinero;
write( 'Introduzca cantidad (0 para terminar): ' );
readln( Dinero )
END {WHILE};
writeln( '*** FECHA DE LA OPERACION: ', DiaActual:1, '-',
MesActual:1,
'-', AnyoActual:1 );
IF CodigoMoneda = 1 THEN
writeln( 'La cantidad total convertida es ', round(Total):1,'
pesetas' )
ELSE
writeln( 'La cantidad total convertida es ', Total:4:2,'
euros' )
END {programa principal}.
E.em*los &e e.ec!ci7"
Introduzca el dia, mes y anyo actuales: 12 02 2002
Este programa convierte pesetas a
euros y viceversa,
y calcula la cantidad total.
Introduzca 0 para indicar que se han procesado todas las cantidades,
Introduzca 1 para convertir pesetas a euros
2 para convertir euros a pesetas: 1
Introduzca cantidad (0 para terminar): 1000
Es equivalente a 6.01 euros
Introduzca cantidad (0 para terminar): 500
Es equivalente a 3.01 euros
Introduzca cantidad (0 para terminar): 1500
Es equivalente a 9.02 euros
Introduzca cantidad (0 para terminar): 0
*** FECHA DE LA OPERACION: 12-2-2002
La cantidad total convertida es 3000 pesetas
*ar,metros por variable o de entradaGsalida
8on procedimientos que usan parmetros que pueden recibir $ devolver valores
a otras unidades de pro+rama
Cabece-a
o omo en los procedimientos con parmetros por valor, pero la
declaracin de los parmetros #ormales por variable aparece precedida
por la palabra reservada VAR para especi#icar que son parmetros por
variable $ no por valorK
VAR lista'parEmetros : tipo
donde cada lista'parEmetros es un nica variable o una lista de variables
separadas por comas $ tipo especi#ica su tipo, $ estas declaraciones
aparecen separadas por punto $ coma.
Pa-$e &e &ecla-acio"es
o omo en los procedimientos simples.
Pa-$e &e i"s$-!ccio"es
o omo en los procedimientos simples.
I"s$-!cci7" &e llama&a
o omo en los procedimientos con parmetros por valor, pero, en el
momento de la llamada, no se crean nuevas posiciones de memoria para
los parmetros #ormales por variableA en lu+ar de ello, a los parmetros
por variables se les asocia las posiciones de memoria $a eEistentes de los
parmetros reales correspondientes.
P-o3-ama onversin de monedaDDversin 7.
PROGRAM ConvertirMoneda3( input, output );
{*********************************************************************
*****
Entrada (teclado): Mes, dia y anno actuales, un entero indicando el
tipo de moneda, y varias cantidades cantidades.
Objetivo: Convertir cantidades monetarias en pesetas a
euros
y viceversa, calculando el total de
cantidades.
Salida (pantalla): Instrucciones al usuario, las cantidades
monetarias convertidas, la fecha de las
operaciones, y el total de las cantidades.
**********************************************************************
*****}
CONST
EuroPeseta = 166.386; {paridad euro-peseta}

VAR
MesActual, {mes actual}
DiaActual, {dia actual}
AnnoActual, {anno actual}
MonedaCasa, {indica el tipo de moneda de la casa}
CodigoMoneda : integer; {indica el tipo de la moneda a ser
convertida}
Dinero, {cantidad monetaria a convertir}
DineroConv, {cantidad equivalente en el otro sistema
monetario}
Total : real; {total de las cantidades}
PROCEDURE MostrarInstrucciones;
{---------------------------------------------------------------------
-
Objetivo: Mostrar las instrucciones al usuario.
Salida (pantalla): Instrucciones para usar el programa.
----------------------------------------------------------------------
-}
BEGIN
writeln( 'Este programa convierte pesetas a' );
writeln( 'euros y viceversa, y calcula la cantidad total.');
writeln( 'Introduzca 0 para indicar que se han procesado todas
',
'las cantidades.' );
writeln;
writeln( 'Introduzca 1 para convertir pesetas a euros');
writeln( ' 2 para convertir euros a pesetas. ');
writeln( 'Recuerde 1 es el codigo para los euros');
write( ' 2 es el codigo para las pesetas: ')
END {MostrarInstrucciones};
PROCEDURE Convertir2( Codigo : integer; {tipo de moneda}
Cantidad : real; {cantidad a convertir}
VAR CantEquiv : real ); {cantidad equivalente}
{---------------------------------------------------------------------
--
Acepta: Codigo, Cantidad.
Objetivo: Convertir una cantidad monetaria a otro sistema
monetario.
Devuelve: CantEquiv.
Salida (pantalla): CantEquiv.
----------------------------------------------------------------------
--}
BEGIN
write( 'Es equivalente a ' );
IF Codigo = 1 THEN
BEGIN
CantEquiv := round(EuroPeseta * Cantidad);
writeln( round(CantEquiv):1, ' pesetas' )
END {IF}
ELSE
BEGIN
CantEquiv := (1/ EuroPeseta) * Cantidad;
writeln( CantEquiv:4:2, ' euros' )
END {ELSE}
END {Convertir2};
BEGIN {**********************programa
principal**************************}
write( 'Introduzca el dia, mes y anno actuales: ' );
readln( DiaActual, MesActual, AnnoActual );
MostrarInstrucciones;
readln( MonedaCasa );
Total := 0;
write( 'Introduzca tipo de moneda y cantidad (0 0 para terminar): '
);
readln( CodigoMoneda, Dinero );
WHILE Dinero > 0 DO
BEGIN
IF CodigoMoneda <> MonedaCasa THEN
BEGIN
Convertir2( CodigoMoneda, Dinero, DineroConv );
Total := Total + DineroConv
END {IF}
ELSE
Total := Total + Dinero;
write( 'Introduzca tipo de moneda y cantidad ',
'(0 0 para terminar): ' );
readln( CodigoMoneda, Dinero )
END {WHILE};
writeln( '*** FECHA DE LA OPERACION: ', DiaActual:1, '-',
MesActual:1,
'-', AnnoActual:1 );
IF MonedaCasa = 1 THEN
writeln( 'La cantidad total convertida es ', Total:4:2,'
euros' )
ELSE
writeln( 'La cantidad total convertida es ', round(Total):1,'
pesetas' )
END {programa principal}.
E.em*los &e e.ec!ci7"
Introduzca el dia, mes y anno actuales: 13 02 2002
Este programa convierte pesetas a
euros y viceversa, y calcula la cantidad total.
Introduzca 0 para indicar que se han procesado todas las cantidades.
Introduzca 1 para convertir pesetas a euros
2 para convertir euros a pesetas.
Recuerde 1 es el codigo para los euros
2 es el codigo para las pesetas: 2
Introduzca tipo de moneda y cantidad (0 0 para terminar): 1 6.01
Es equivalente a 1000 pesetas
Introduzca tipo de moneda y cantidad (0 0 para terminar): 2 1000
Introduzca tipo de moneda y cantidad (0 0 para terminar): 0 0
*** FECHA DE LA OPERACION: 13-2-2002
La cantidad total convertida es 2000 pesetas
Introduzca el dia, mes y anno actuales: 13 02 2002
Este programa convierte pesetas a
euros y viceversa, y calcula la cantidad total.
Introduzca 0 para indicar que se han procesado todas las cantidades.
Introduzca 1 para convertir pesetas a euros
2 para convertir euros a pesetas.
Recuerde 1 es el codigo para los euros
2 es el codigo para las pesetas: 1
Introduzca tipo de moneda y cantidad (0 0 para terminar): 2 1000
Es equivalente a 6.01 euros
Introduzca tipo de moneda y cantidad (0 0 para terminar): 1 6.01
Introduzca tipo de moneda y cantidad (0 0 para terminar): 0 0
*** FECHA DE LA OPERACION: 13-2-2002
La cantidad total convertida es 12.02 euros
Re3las *a-a la asociaci7" &e *a-4me$-os
/as si+uientes re+las resumen la relacin entre los parmetros #ormales $ los
realesK
1. Iebe "aber el mismo nmero de parmetros reales que #ormales.
2. /os tipos de los parmetros #ormales $ reales asociados deben concordarA
sin embar+o, un parmetro real de tipo integer puede estar asociado con
un parmetro por 1alor de tipo real, pero no con un parmetro #ormal
por 1ariable de tipo real.
7. !n parmetro real asociado con un parmetro #ormal por 1ariable debe
ser una variableA no puede ser una constante o una eEpresin.
/unciones
5ascal proporciona varias funciones predefinidas como sqr $ round.
1n 5ascal tambi(n se pueden utilizar funciones definidas por el usuario.
omo los procedimientos, las #unciones se de#inen en la seccin de
subpro+ramas de un pro+rama $ consisten en
o cabecera,
o parte de declaraciones $
o parte de instrucciones.
Cabece-a
8intaEisK
FUNCTION nombre ( declaracin'parEm'formales ) tipo'del'resultado ;
dondeK
FUNCTION es una palabra reservadaA
nombre es un identi#icador vlido de 5ascalA
declaracin'parEm'formales declara los parmetros de la #uncinA
tipo'del'resultado es el tipo del valor de la #uncin.
/a declaracin de los parmetros #ormales tiene la misma #orma que la cabecera de un
procedimiento con parmetros.
8i la #uncin no tiene parmetros, se omiten la declaracin de parmetros #ormales $ los
par(ntesis, de #orma que la cabecera tiene la #orma simple
FUNCTION nombre : tipo'del'resultado ;
4bjetivoK
Ia nombre a la #uncin $ declara sus parmetros $ el tipo del resultado.
Pa-$e &e &ecla-acio"es
o omo en los procedimientos.
Pa-$e &e i"s$-!ccio"es
o omo en los procedimientos , con la eEi+encia adicional de que al menos
una de las instrucciones debe asi+nar un valor al identi#icador que
nombra la #uncin.
I"s$-!cci7" &e llama&a
o )o "a$ instruccin de llamada a una #uncin. 5ara llamar a una #uncin
se usa su nombre en una eEpresin, como en las #unciones 5ascal
prede#inidas.
P-o3-ama
PROGRAM CalcularTablaDeCubos( input, output );
{*********************************************************************
Entrada (teclado): Un rango de numeros reales y un tamanyo de paso.
Objetivo: Calcular una tabla de cubos de los numeros
especificados en un rango.
Salida (pantalla): Indicaciones al usuario, una tabla de numeros
y sus cubos.
*********************************************************************}
VAR
Inferior, Superior, {limites del rango de valores}
Paso, {incremento}
Numero : real; {argumento actual}
FUNCTION Cubo( x : real ) : real;
{--------------------------------------------------------------------
Acepta: El numero real x.
Objetivo: Calcular el cubo (tercera potencia) de x.
Devuelve: El cubo de x.
---------------------------------------------------------------------}
BEGIN
Cubo := x * sqr(x);
END {Cubo};
BEGIN {****************** programa principal ******************}
write( 'Introduzca el rango de valores ',
'y el tamanyo del incremento: ' );
readln( Inferior, Superior, Paso );
writeln;
writeln( 'numero su cubo' );
writeln( '====== =======' );
Numero := Inferior;
WHILE Numero <= Superior DO
BEGIN
writeln( Numero:5:2, Cubo(Numero):12:4 );
Numero := Numero + Paso
END {WHILE}
END {programa principal}.
!jemplo de ejecucin
Introduzca el rango de valores y el tamanyo del incremento: 1 4 0.5
numero su cubo
====== =======
1.00 1.0000
1.50 3.3750
2.00 8.0000
2.50 15.6250
3.00 27.0000
3.50 42.8750
4.00 64.0000
P-o3-ama
PROGRAM CalificarAptoNoApto( input, output );
{*********************************************************************
*
Entrada (teclado): Una linea divisoria entre apto y no apto y
las medias de varios estudiantes.
Objetivo: Determinar las calificaciones apto-no apto de
cada estudiante.
Salida (pantalla): Indicaciones al usuario, y calificaciones.

*********************************************************************}
VAR
Media, {media del estudiante}
LineaAN : real; {linea divisoria entre apto y no apto}
Calificacion : char; {calificacion apto/no apto asignada}
FUNCTION CalificacionAN( Media, {puntuacion media}
LineaAN : real ) {linea divisoria}
:char;
{---------------------------------------------------------------------
Acepta: Valores reales Media y LineaAN.
Objetivo: Calcular la calificacion: 'A' si Media >= LineaAN
y 'N' si Media < LineaAN.
Devuelve: La calificacion apto-no apto
---------------------------------------------------------------------}
BEGIN
IF Media >= LineaAN THEN
CalificacionAN:= 'A'
ELSE
CalificacionAN := 'N'
END {CalificacionAN};
BEGIN {**************** programa principal *****************}
write( 'Introduzca la linea divisoria apto/no apto: ' );
readln( LineaAN );
writeln( 'Introduzca una media negativa para terminar el
programa' );
writeln;
write( 'Media del estudiante: ' );
readln( Media );
WHILE Media >= 0 DO
BEGIN
Calificacion := CalificacionAN( Media, LineaAN );
writeln( ' La calificacion es ', Calificacion );
write( 'Media del estudiante: ' );
readln( Media )
END {WHILE}
END {programa principal}.
!jemplo de ejecucin
Introduzca la linea divisoria apto/no apto: 60
Introduzca una media negativa para terminar el programa
Media del estudiante: 90
La calificacion es A
Media del estudiante: 60
La calificacion es A
Media del estudiante: 59.5
La calificacion es N
Media del estudiante: 40
La calificacion es N
Media del estudiante: -1
0ttp@99HHH.ucm.es9info9dsip9clavel9courses9ip>2>39node35.0tml
Unidad 9. :ra*icacin
Una computadora moderna es en gran medida un conjunto de interruptores
electrnicos, los cuales se utilizan para representar y controlar el recorrido de
datos denominados dgitos binarios (bits, un "0" o un "1").
El desarrollo del transistor fue uno de los inventos ms importantes para la
revolucin de la computadora personal. Este fue inventado en 1948 por los
ingenieros John Bardeen, Walter Brattain Y William Shockley de los
laboratorios Bell. Funciona como un interruptor de estado slido, que sustituy
al bulbo que era mucho menos adaptable por su tamao y consumo de
energa.
La conversin a transistores provoc la tendencia hacia la miniaturizacin que
contina hasta el da de hoy.
En 1959, los ingenieros de Texas nstruments inventaron el C (circuito
integrado o chip), un semiconductor que contiene mas de un transistor sobre la
misma base y que conecta los transistores sin necesidad de cables.
El primer C tena seis transistores. En comparacin, el microprocesador
Pentium Pro de ntel, que se usa en muchos de los sistemas mas avanzados,
tiene mas de 5.5 millones de transistores, y la memoria cach integral que
incluyen algunos de estos procesadores contiene hasta 32 millones de
transistores adicionales! Actualmente, muchos chips tienen transistores que
pueden contarse en varios millones.
Cmo se miden los avances tecnolgicos de las computadoras?
Una computadora esta formada por dos componentes estructurales con el
mismo nivel de importancia:
- El equipo fsico (hardware): Por sus caractersticas constructivas (circuitos,
arquitectura global del sistema, tecnologa electrnica).
- Los programas con los que funciona (software): Por los programas bsicos
con los que opera. Es decir, como se entabla comunicacin con ella (lenguajes,
sistema operativo, interfaces).
Lo cual significa que su grande avance debe considerarse en esas dos
direcciones.
Desde la invencin de la primera computadora, estas han tenido un avance que
se puede estudiar en trminos de "generaciones".
Abarca desde los inicios de los aos 50 hasta los 60, y
- Estaban construidas con electrnica de bulbos
- Se programaban en lenguaje de mquina (nivel mas bajo de representacin
de la informacin)
Los programas son un conjunto de instrucciones para que la mquina efecte
alguna tarea, y el lenguaje mas simple en el que puede escribir un programa es
el lenguaje de mquina (porque el programa se escribirse con un conjunto de
cdigos binarios).
La primera generacin
- 1947 ENAC. Primera computadora digital electrnica. Fue una mquina
experimental. No era programable como las computadoras actuales. Era un
enorme aparato que ocupa todo el stano en la universidad de Pennsylvania.
Tena 18,000 bulbos, consuma varios KW de potencia y pesaba algunas
toneladas. Realizaba hasta cinco mil sumas por segundo. Fue echa por un
equipo de ingenieros y cientficos encabezados por los doctores John W.
Mauchly y J. Prester Eckert en la Universidad de Pennsylvania, en los Estados
Unidos.
- 1949 EDVAC. Primera computadora programable. Tambin fue un prototipo
de laboratorio, pero ya inclua en s diseo las ideas centrales que conforman a
las computadoras actuales. ncorporaba las ideas del doctor John von
Neumann.
- 1951 UNVAC . Primera computadora comercial. Los doctores Mauchly y
Eckert fundaron la compaa Universal Computer (Univac ), y su primer
producto fue esta mquina. El primer cliente fue la oficina del censo de Estados
Unidos.
- 1953 BM 701. Para introducir los datos, estos equipos empleaban el
concepto de tarjetas perforadas, que haba, sido inventada en los aos de la
revolucin industrial (finales del siglo XV) por el francs Jacquard y
perfeccionado por el estadounidense Hermand Hollerith en 1890. La BM 701
fue la primera de una larga serie de computadoras de esta compaa, que
luego se convertira en la nmero 1 por su volumen de ventas.
- 1954 - BM continu con otros modelos, que incorporaban un mecanismo de
almacenamiento masivo llamado tambor magntico, que con los aos
evolucionara y se convertira en disco magntico.
Segunda generacin
Estas computadoras ya no utilizaban bulbos, sino transistores, ms pequeos y
consumen menos electricidad. La forma de comunicacin con estas nuevas
computadoras es mediante lenguajes mas avanzados que el lenguaje de
mquina, llamados "lenguajes de alto nivel" o lenguajes de programacin.
Esta segunda generacin duro pocos aos, porque hubo nuevos avances tanto
en el hardware como en el software.
Tercera generacin
Esta nueva generacin fue inaugurada con la presentacin comercial de la
llamada "serie 360"de BM.
BM se dedic a los aspectos de ingeniera, comercializacin y mercadotecnia
de sus equipos, y en corto tiempo la nocin de las computadoras sali de los
laboratorios y las universidades y se instal como un componente
imprescindible de la sociedad industrial moderna.
Las computadoras de la tercera generacin tienen ventajas importantes, debido
a dos factores fundamentales:
- Estn hechas a base de agrupamientos de transistores miniaturizados en
paquetes conocidos como circuitos integrados (C.. o Chips)
- Aunque se siguen programando en lenguajes de alto nivel, ahora un mtodo
de comunicacin con el programador que resulta mas fcil de emplear que el
anterior.
Es decir, la electrnica de las computadoras de la tercera generacin (circuitos
integrados) es ms compacta, rpida y densa que la anterior, y la comunicacin
se establece mediante una interfaz (un intermediario) conocida como sistema
operativo.
Cuarta generacin
El nacimiento de las microcomputadoras tuvo lugar en los Estados Unidos, a
partir de la comercializacin de los primeros microprocesadores (ntel
8008,8080) a comienzos de la dcada de 1970.
Durante la dcada de 1970 se impusieron dos tendencias:
- Los sistemas Apple,
- La PC de BM: que comenz una explosin comercial masiva, con su
introduccin, en 1981.
Esta ltima mquina (basada en microprocesador ntel 8088) tenia
caractersticas interesantes, sobre todo porque su nuevo sistema operativo
estandarizado (MS-DOS, Microsoft Disk Operating System) tena una
capacidad mejorada de graficacin, la hacan ms atractiva y ms fcil de usar.
Existe una familia completa de sistemas de computadoras personales, que se
conocen con las nomenclaturas XT, AT y PS/2.
- 1971 Microprocesador ntel 8008. Circuito de alta integracin que luego dara
inicio a las microcomputadoras.
- 1975 Aparece la microcomputadora Apple. Aparece el microprocesador Zilog
Z80. nicia el auge de la microcomputacin.
- 1981 BM lanza la computadora personal, luego conocida como PC-XT
- 1984 BM ofrece la computadora personal PC-AT, basada en el
microprocesador ntel 80286.
- 1988 BM presenta la serie de computadoras personales PS/2, algunas de
las cuales emplean el microprocesador 80386. Surge una gran cantidad de
computadoras con ese y otros procesadores similares.
- 1991 Microprocesador de muy alto rendimiento: ntel 80486, Motorola 68040,
Sparc, tecnologa RSC, etc. Microprocesador Power PC (Performace
Optimization With Enhanced RSC PC) resultado de alianza de Apple, BM y
Motorola.
- 1993 ntel lanza al mercado el procesador 80586 conocido como Pentium.
5.1 'onceptos b,sicos de r,ficas.
5.2 Introduccin b,sica de mane!o de r,ficas.
5.3 Uso de librer.as para la realiLacin de raficas.
5.) :raficacin de un punto % l.neas rectas
raficaci!n de puntos o formas

8ctivado el modo gr9(ico, %a ser9 posible tra:ar l,neas u otras (ormas
geom.tricas, gra(icar puntos o bien introducir 2e4tos al plano gr9(ico.
8 continuacin se describen algunos comandos cu%o uso es (recuente en
actividades de gra(icado.
raficado de puntos
"ut"i#el($%&%'!digo(e'olor))
;ra(ica, coloca un pi4el en las coordenadas +<,=- especi(icadas con el color
indicado por el cdigo.
>as coordenadas deber9n estar dentro del intervalo de coordenadas
m,nimas % m94imas correspondientes al plano seleccionado.
"ttpKNNmembers.#ortunecit$.comN+isela+onzalezNcomputacionNcap0@271."tml
raficado de Lneas
Line($*%&*%$+%&+))
2ra:a una l,nea de las coordenadas +<1,=1- a las coordenadas +<2,=2-.
Utili:ando el color % el estilo ?ue est.n activos. 8s, como puede modi(icar el
color, tambi.n puede modi(icar el estilo de tra:ado de l,neas.
LineRel((elta$%(elta&))
2ra:a una l,nea desde la posicin actual del cursor *asta las coordenadas
resultantes de incrementar < en @elta< % = en @elta=.
Line,o($%&))
2ra:a una l,nea desde la posicin actual del cursor *asta las coordenadas
+4,=-7
!n los tres casos < % = son datos o variables de tipo entero.
,ra-a formas diversas
A)./ 'rculos
'ircle($%&%r))
2ra:a un c,rculo cu%o centro estar9 en las coordenadas +<,=- % tendr9 un
radio r. 2anto < % = como r, son nmeros datos o variables enteras,
delimitadas por las coordenadas m94imas % m,nimas del plano gr9(ico.
0)./ Elipses
Ellipse($%&%Angulo1nicial%Angulo2inal%Radio$%Radio&))
2ra:a una elipse o un arco el,ptico, <,= son las coordenadas del centro7
8mguloAnicial % 8ngulo1inal , especi(icados en grados, corresponden al inicio
% (in del segmento ?ue se desee gra(icar. Badio< % Badio= representan los
radios en cada una de las dos direcciones del plano.
')./ Rect3ngulos
Rectangle($*%&*%$+%&+))
2ra:a un rect9ngulo con v.rtices opuestos +<1,=1- % +<2,=2-.
()./ 0arras
0ar($inicial%&inicial%&final%$final))
2ra:a un rect9ngulo con el estilo % color de llenado especi(icados, iniciando
en +<inicial,=inicial- % (inali:ando en +=(inal,<(inal- , considerados como
v.rtices opuestos.
0ar($inicial%&inicial%&final%$final%Espesor%'!digo0ooleano))
2ra:a una barra en dimensiones, ?ue inicia en las coordenadas
0<inicial,=inicial- (inali:a en <(inal,=(inal- con un espesor, en pi4eles,
de(inido.
!l cdigo booleano ser9 2BU! o 18>)!. 2BU! marca per(ectamente los
lados de la barra en tres dimensiones.
E)./ Rebanada de pie.
"ie4lice($%&%Angulo1nicial%Angulo2inal%Radio))
2ra:a una rebanada de pastel, rellena con el color activo. +<,=- coordenadas
del centro de la rebanada7 8nguloAnicial, 8ngulo1inal % Badio, en grados,
delimitan el tamaCo de la rebanada.
(espla-amiento del cursor dentro del plano gr3fico
5oveRel((elta$%(elta&))
@espla:amiento relativo del cursor, de su posicin actual, tantos pi4eles en
< como en =, segn los incrementos +o decrementos- @elta< % @elta=:
5ove,o($%&))
@espla:amiento absoluto del cursor a las coordenadas +<,=-.
Escribiendo ,e#tos dentro del plano gr3fico
5ara la escritura de te4tos dentro del plano gr9(ico, dispone de #
instrucciones complementarias ?ue son las siguientes:
A)./ @e(inicin de tipo de letra, direccin de escritura +vertical u
*ori:ontal- % tamaCo del caracter.
4et,e#t4t6le(,ipo(eLetra%(irecci!n%,ama7o(e'aracter))
,ipo(eLetra (irecci!n
0 @e(ault1ont 0 Dori:ontal +de i:?uierda a derec*a-
1 2riple41ont 0 Eertical +de abaFo *acia arriba-
2 )mall1ont
)an)eri(1ont
# ;ot*ic1ont
,ama7o(e'aracter: Bepresenta la ra:n de cambio en el tamaCo del
caracter a escribir dentro del plano gr9(ico. )i suministra el valor de 1,
entonces la escritura ser9 con el tamaCo preasignado. )i teclea 2,,...,
aplicar9 ese (actor para aumentar el tamaCo de cada caracter.
0)./ Cuando el caracter es desplegado en su espacio reservado, segn el
tamaCo ?ue *a%a seleccionado, es posible centrarlo a alinearlo a un e4tremo
de dic*o espacio. 5ara ello dispone de la instruccin:
4et,e#t8ustif6(9ori-ontal%Vertical))
>os valores de los par9metros son:


9ori-ontal Vertical
0

8linea caracter a la derec*a
del punto
0

Caracter despla:ado *acia arriba
del punto
1 Centra te4to 1 Centrado
2

8linea caracter a la i:?uierda
del punto
2

Dacia abaFo del punto

!sta alineacin o centrado es con respecto a las coordenadas en ?ue se
despliega el te4to.
')./ !scritura de 2e4to
:ut,e#t(;,e#to o letrero;))
@espliega te4to a partir de las coordenadas en ?ue est. posicionado el
cursor.
()./ !scritura de te4to
:ut,e#t$&($%&%;,e#to o letrero;))
@espliega te4to a partir de las coordenadas +<,=- especi(icadas.
(efiniendo estilo para el graficado de lneas
8ntes de tra:ar una l,nea puede de(inir un estilo de tra:o con la siguiente
instruccin:
4etLine4t6le(Estilo%"atr!n(eLlenado%rosor))
Estilo
0 >,nea )lida
1 >,nea con guiones sucesivos
2
>,nea con guiones sucesivos m9s grandes ?ue los
anteriores
"atr!n(eLlenado: Utilice 0
rosor
1 8nc*o 3ormal
2riple 8nc*o
!4isten muc*as m9s instrucciones para gra(icado % es recomendable revisar
en modo a%uda el contenido de la unidad ;B85D.
"ttpKNNGGG.#ortunecit$.comNcampusNearl"amN@C0NcomputacionN>)I>1."tml
5.+ :raficacin de /unciones -atem,ticas en el plano
cartesiano.
1n estas breves notas, desarrolladas por %uanDAntonio >n#ante $ %os( Bara
:e$, pro#esores del Iepartamento de Batemtica Aplicada de la !niversidad
omplutense de Badrid, se pretende dar un primer paso en el aprendizaje del
uso de BAT/A.. 1n lo que si+ue, se supone que el usuario teclea lo que
aparece en color rojo *de "ec"o, lo ptimo sera que el aprendiz de BAT/A.
reprodujera (stos $ parecidos ejemplos por s mismo, $ precedido del smbolo
TT, que "ace el papel del prompt de la mquina. 1n color ne+ro aparecer la
respuesta de BAT/A. a la instruccin tecleada. /os comentarios aparecern
en color verde.
Antes de comenzar, "a+amos al+unas consideraciones +eneralesK
BAT/A. distin+ue entre ma$sculas $ minsculas.
/a comilla c es la que, en un teclado estndar, se encuentra en la tecla de
la interro+acin.
/os comentarios deben ir precedidos por k o, lo que es lo mismo,
BAT/A. i+nora todo lo que va$a precedido por el smbolo k.
/a a$uda de BAT/A. es bastante tilA para acceder a la misma basta
teclear help. 1s recomendable usarlo para obtener una in#ormacin ms
precisa sobre la sintaEis $ diversas posiblidades de uso de los comandos.
A +randes ras+os, los temas aqu introducidos sonK
Feneralidades.
=ectores $ matrices.
4peraciones con vectores $ matrices.
=ariables l+icas.
5olinomios.
Ierivadas $ primitivas.
Fr#icas de #unciones.
5ro+ramacin con BAT/A..
/os clculos que no se asi+nan a una variable en concreto se asi+nan a la
variable de respuesta por de#ecto que es ans *del in+l(s, ans;er,K
>>2+3
ans =
5
8in embar+o, si el clculo se asi+na a una variable, el resultado queda
+uardado en ellaK
>>x=2+3
x =
5
5ara conocer el valor de una variable, basta teclear su nombreK
>>x
x =
5
8i se aade un punto $ coma *;, al #inal de la instruccin, la mquina no
muestra la respuesta...
>>y=5*4;
... pero no por ello deja de realizarse el clculo.
>>y
y =
20
/as operaciones se evalan por orden de prioridadK primero las potencias,
despu(s las multiplicaciones $ divisiones $, #inalmente, las sumas $ restas. /as
operaciones de i+ual prioridad se evalan de izquierda a derec"aK
>>2/4*3
ans =
1.5000
>>2/(4*3)
ans =
0.1667
8e pueden utilizar las #unciones matemticas "abituales. As, por ejemplo, la
#uncin coseno,
>>cos(pi) % pi es una variable con valor predeterminado 3.14159...
ans =
-1
o la #uncin eEponencial
>>exp(1) % Funcin exponencial evaluada en 1, es decir, el nmero e
ans =
2.7183
Adems de la variable pi , BAT/A. tiene otras variables con valor
predeterminadoA (ste se pierde si se les asi+na otro valor distinto. 5or ejemploK
>>eps % psilon de la mquina. Obsrvese que MATLAB trabaja en
doble precisin
ans =
2.2204e-016
pero...
>>eps=7
eps =
7
4tro ejemplo de #uncin matemticaK la raz cuadradaA como puede verse,
trabajar con complejos no da nin+n tipo de problema. /a unidad ima+inaria
se representa en BAT/A. como i o j, variables con dic"o valor como
predeterminadoK
>>sqrt(-4)
ans =
0+ 2.0000i
1l usuario puede controlar el nmero de decimales con que aparece en
pantalla el valor de las variables, sin olvidar que ello no est relacionado con la
precisin con la que se "acen los clculos, sino con el aspecto con que (stos se
muestranK
>>1/3
ans =
0.3333
>>format long
>>1/3
ans =
0.33333333333333
>>format % Vuelve al formato estndar que es el de 4 cifras
decimales

5ara conocer las variables que se "an usado "asta el momentoK
>>who
Your variables are:
ans eps x y
o, si se quiere ms in#ormacin *obs(rvese que todas las variables son arra0s,K
>>whos
Name Size Bytes Class
ans 1x1 8 double array
eps 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array
Grand total is 4 elements using 32 bytes
5ara des"acerse de una variable
>>clear y
>>who
Your variables are:
ans eps x
=olver al ndice +eneral
5ara de#inir un vector #ila, basta introducir sus coordenadas entre corc"etesK
>>v=[1 2 3] % Vector de 3 coordenadas
v=
1 2 3
>>w=[4 5 6];
1l operador ' es el de trasposicin *en realidad trasposicin $ conju+acin,K
>>w'
ans =
4
5
6
8i queremos declarar un vector de coordenadas equiespaciadas entre dos
dadas, por ejemplo, que la primera val+a 0, la ltima 20 $ la distancia entre
coordenadas sea 2, basta ponerK
>>vect1=0:2:20
vect1 =
0 2 4 6 8 10 12 14 16 18 20
1quivalentemente, si lo que conocemos del vector es que la primera
coordenada vale 0, la ltima 20 $ que tiene 11 en total, escribiremosK
>>vect2=linspace(0,20,11)
vect2 =
0 2 4 6 8 10 12 14 16 18 20
A las coordenadas de un vector se accede sin ms que escribir el nombre del
vector $, entre par(ntesis, su ndiceK
>>vect2(3)
ans =
4
$ se pueden eEtraer subvectores, por ejemploK
>>vect2(2:5)
ans=
2 4 6 8
o,
>>vect1(:)
ans=
0
2
4
6
8
10
12
14
16
18
20
/as matrices se escriben como los vectores, pero separando las #ilas mediante
un punto $ comaA as una matriz 7E7K
>>M=[1 2 3;4 5 6;7 8 9]
M =
1 2 3
4 5 6
7 8 9
>>M' % Su traspuesta (su adjunta)
ans =
1 4 7
2 5 8
3 6 9
>>mat=[v;w;0 0 1] % Tambin es una matriz 3x3
mat =
1 2 3
4 5 6
0 0 1
A los elementos de una matriz se accede sin ms que escribir el nombre de la
matriz $, entre par(ntesis, los respectivos ndicesK
>>mat(1,3) % Elemento en la primera fila y tercera columna de la
matriz mat
ans =
3
Tambi(n se puede acceder a un #ila o columna completas,
>>mat(:,2) % Segunda columna de mat
ans =
2
5
0
>>mat(2,:) % Su segunda fila
ans =
4 5 6
acceder a la matriz como si #uera una columna,
>>M(2:7) % Los elementos segundo a sptimo de la matriz como
columna
ans =
4
7
2
5
8
3
o acceder a cualquiera de sus submatrices
>>mat(2:3,[1 3]) % Submatriz formada por los elementos que estn en
% "todas" las filas que hay entre la segunda y la
tercera y
% en las columnas primera y tercera
ans =
4 6
0 1
1Eisten al+unas matrices de#inidas previamenteA por ejemplo, la matriz
identidad,
>>eye(5) % eye se pronuncia en ingls como I
ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
la matriz nula,
>>zeros(3)
ans =
0 0 0
0 0 0
0 0 0
o la matriz cu$os elementos valen todos 1K
>>ones(4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
8e puede conocer el tamao de una matriz $ la lon+itud de un vectorK
>>size(mat) % Dimensiones de la matriz mat (nmero de filas y de
columnas)
ans =
3 3
>>size(v)
ans =
1 3
>>length(v) % Longitud del vector (nmero de coordenadas)
ans =
3
1Eisten comandos que permiten crear de #orma sencilla matrices. 5or ejemploK
>>diag(v) % Matriz diagonal cuya diagonal es el vector v
ans =
1 0 0
0 2 0
0 0 3
>>diag(diag(M)) % Matriz diagonal con la diagonal de M. La sentencia
diag(M) da
% el vector formado por la diagonal de la matriz M
ans =
1 0 0
0 5 0
0 0 9
>>diag(ones(1,4),1)+diag(ones(1,4),-1) % Matriz tridiagonal 5x5 con 0
en la diagonal
% principal y 1 en la sub y
superdiagonal
ans =
0 1 0 0 0
1 0 1 0 0
0 1 0 1 0
0 0 1 0 1
0 0 0 1 0
>>tril(M) % Matriz formada por la parte triangular inferior de M.
ans =
1 0 0
4 5 0
7 8 9
>>triu(M) % Matriz formada por la parte triangular superior de M.
ans =
1 2 3
0 5 6
0 0 9
/as #unciones matemticas elementales estn de#inidas de #orma que se
pueden aplicar sobre arra0s. 1l resultado es el arra0 #ormado por la aplicacin
de la #uncin a cada elemento del arra0. AsK
>>log(v)
ans =
0 0.6931 1.0986
>>p=(0:0.1:1)*pi % Vector definido como el producto de un vector por un
escalar
p =
Columns 1 through 7
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850
Columns 8 through 11
2.1991 2.5133 2.8274 3.1416
>>x=sin(p)
x =
Columns 1 through 7
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511
Columns 8 through 11
0.8090 0.5878 0.3090 0.0000
/as operaciones "abituales entre arra0s *suma, resta $ producto escalar de
vectoresA suma, resta, producto $ potencia de matrices, se representan con los
operadores "abitualesK
>>v,w % Recordamos los valores de v y w
v =
1 2 3
w =
4 5 6
>>z=v*w' % Producto escalar (producto de matrices 1x3 por 3x1)
z =
32
>>Z=w'*v % Producto de matrices 3x1 por 1x3 = Matriz 3x3
Z =
4 8 12
5 10 15
6 12 18
>>v*w % Los vectores v y w no se pueden multiplicar
??? Error using ==> *
Inner matrix dimensions must agree.
>>mat % Recordamos el valor de la matriz mat
mat =
1 2 3
4 5 6
0 0 1
>>mat^2 % Matriz mat elevada al cuadrado
ans =
9 12 18
24 33 48
0 0 1
Tambi(n pueden e#ectuarse multiplicaciones, divisiones $ potencias de arra0s,
entendi(ndolas como elemento a elemento *como, de "ec"o, se realizan la
suma $ la resta,. 1l operador utilizado para ellas es el "abitual precedido por
un puntoA es decirK
>>v.*w % Vector formado por los productos de las respectivas
coordenadas:
% ans(i)=v(i)*w(i)
ans =
4 10 18
>>w./v % Vector formado por el cociente de cada coordenada de w entre
la
% coordenada correspondiente de v: ans(i)=w(i)/v(i)
ans =
4.0000 2.5000 2.0000
>>mat.^2 % Matriz cuyos elementos son los de mat elevados
% al cuadrado: ans(i,j)=mat(i,j)^2
ans =
1 4 9
16 25 36
0 0 1
Jinalmente, pueden calcularse determinantesK
>>det(mat)
ans =
-3
$ resolverse sistemas de ecuaciones lineales con el verstil comando \K
>>mat\v'
ans =
2.6667
-5.3333
3.000
Tambi(n eEisten variables l+icas que toman los valores 0 *#also, o 1
*verdadero, . 5or ejemploK
>>abs(v)>=2 % Vector lgico cuyas coordenadas valen 1 si la
coordenada
% correspondiente de v es >= 2 y 0 si no lo es
ans =
0 1 1
>>vector=v(abs(v)>=2) % Vector formado por la coordenadas de v que
% verifican la desigualdad
vector =
2 3
>>v2=[3 2 1]
v2 =
3 2 1
>>logica=v==v2 % Asignacin de un valor lgico (el doble signo igual
es el
% igual lgico)
logica =
0 1 0
>>logic2=v~=v2 % Distinto (~ es el operador de negacin)
logic2 =
1 0 1
8e puede trabajar con polinomiosK basta tener en cuenta que un polinomio no
es ms que un vector. 1l orden de los coe#icientes es de ma$or a menor +rado,
por ejemploK
>>p=[1 0 2 0 3] % Polinomio x^4+2*x^2+3
p =
1 0 2 0 3
>>q=[2 1 0] % Polinomio 2*x^2+x
q =
2 1 0
BAT/A. tiene #unciones espec#icas para polinomios comoK
>>polyval(p,-1) % Evaluacin del polinomio x^4+2x^2+3 en x=-1
ans =
6
>>pro=conv(p,q) % Producto de los polinomios p y q
pro =
2 1 4 2 6 3 0
>>deconv(pro,p) % Cociente entre pro y p; obviamente el resultado es q
ans =
2 1 0
>>roots(pro) % Races del polinomio pro
ans =
0
0.6050+1.1688i
0.6050-1.1688i
-0.6050+1.1688i
-0.6050-1.1688i
-0.5000
>>poly([i -i 1/2 pi]) % Polinomio mnico que tiene por races a los
% nmeros i, -i, 0.5 y pi
ans =
1.0000 -3.6416 2.5708 -3.6416 1.5708
Ientro del mdulo *toolbo8, de matemtica simblica, se utiliza el pro+rama
de clculo simblico BA5/1. on estas "erramientas, se puede trabajar con
#unciones,
>>f='sin(x)' % Funcin sin(x) definida mediante una cadena de
caracteres
f =
sin(x)
calcular derivadas,
>>diff(f)
ans =
cos(x)
>>diff(f,2) % Derivada segunda de f
ans =
-sin(x)
o encontrar primitivas.
>>int('log(x)') % Primitiva de la funcin logaritmo
ans =
x*log(x)-x
>>diff('x*log(x)-x') % Comprobacin
ans =
log(x)
BAT/A. tiene un +ran potencial de "erramientas +r#icas. 8e pueden dibujar
los valores de un vector #rente a otro *de la misma lon+itud,K
>>x=pi*(-1:0.1:1);
>>y=x.*sin(x);
>>plot(x,y) % Por defecto une los puntos (x(i),y(i)) mediante una
poligonal


omo se ve, con pocos puntos la +r#ica tiene un aspecto demasiado lineal a
trozos. 5ara -en+aar- al ojo, basta tomar ms puntos.
>>x=pi*(-1:0.01:1);
>>y=x.*sin(x);
>>plot(x,y)


Tambi(n pueden dibujarse #unciones. AsK
>>fplot('sin(x)',[0 2*pi]) % Dibuja la funcin seno en el intervalo
[0,2*pi]

>>hold on % Mantiene en la ventana grfica los dibujos
anteriores
>>fplot('cos(x)',[0 2*pi]) % Dibuja sobre la grfica anterior la
funcin cos(x)

>>hold off % Con esto olvida los dibujos
anteriores
% y dibuja en una ventana nueva
>>fplot('x^2*sin(1/x)',[-0.05 0.05]) % Dibuja la funcin x^2*sin(1/x)


Tambi(n puede usarse el verstil comando ezplot *se lee como eas0 plot, que
permite dibujar #unciones,
>>ezplot('exp(x)') % Dibuja la funcin exponencial en un intervalo
adecuado a la funcin


curvas en param(tricas,
>>ezplot('sin(t)','cos(t)',[0 pi])

e implcitas
>>ezplot('x^2 - y^2 - 1')


Tambi(n permite dibujar super#icies. /a #orma ms sencilla es mediante el
comando ezsurf,
>>ezsurf('sin(x*y)',[-2 2 -2 2])


aunque se pueden realizar +r#icas ms so#isticadasK
>>t=0:0.001:0.009;
>>v=900:1025;
>>[T V]=meshgrid(t,v);
>>aux1=16*pi^2*(T.^2).*((V-918).^2).*((V-1011).^2);
>>aux2=aux1+(2*V-1929).^2;
>>w=T./aux2;
>>z=35000000*w;
>>surfl(t,v,z); % Este comando dibuja la superficie creada mediante
las
>>shading interp; % ordenes anteriores. Los siguientes sirven para
modificar
>>colormap(pink); % el dibujo obtenido
>>rotate3d; % Sirve para girar la figura mediante el ratn



5ara escribir un pro+rama con BAT/A. "abr que crear un #ic"ero que ten+a
eEtensin .m $ conten+a las instrucciones. 1sto se puede "acer con cualquier
editor de teEtos, pero tiene al+unas ventajas usar el editor propio de BAT/A.
llamado medit.
BAT/A. trabaja con memoria dinmica, por lo que no es necesario declarar
las variables que se van a usar. 5or esta misma razn, "abr que tener especial
cuidado $ cerciorarse de que entre las variables del espacio de trabajo no "a$
nin+una que se llame i+ual que las de nuestro pro+rama *proveniente, por
ejemplo, de un pro+rama previamente ejecutado en la misma sesin,, porque
esto podra provocar con#lictos. A menudo, es conveniente reservar memoria
para las variables *por ejemplo, si se van a utilizar matrices mu$ +randes,A para
ello, basta con asi+narles cualquier valor. Iel mismo modo, si se est usando
muc"a memoria, puede ser conveniente liberar parte de ella borrando *clear,
variables que no se va$an a usar ms.
!n pro+rama escrito en BAT/A. admite la ma$ora de las estructuras de
pro+ramacin al uso $ su sintaEis es bastante estndar. 1n los si+uientes
ejemplos se muestra la sintaEis de al+unas de estas estructuras *i#, #or,
G"ile,...,.
1jemplo 1K alcular la suma de los n primeros t(rminos de la sucesin 1, 2E,
7Eg2, ?Eg7, ...
nSinput*c]untos t(rminos quieres sumar[ c,A
ESinput*cIame el valor del numero E c,A
sumaS1A
#or iS2Kn
sumaSsumaRiQEg*iD1,A
end
disp*c1l valor pedido esc,
disp*suma,
1jemplo 2K Iecidir si un nmero natural es primo.
nSinput*c)mero natural que deseas saber si es primo c,A
iS2A
primoS1A
G"ile ilSsqrt*n,
i# rem*n,i,SS0 k :esto de dividir n entre i
primoS0A
brea9
end
iSiR1A
end
i# primo
disp*c1l nmero dado es primo.c,
else
disp*c1l nmero dado no es primo.c,
disp*cIe "ec"o, es divisible porKc,
disp*i,
end
1jemplo 7K 1scribir un nmero natural en una base dada *menor que diez,.
nSinput*cIame el nmero que quieres cambiar de base c,A
baseSinput*c]1n qu( base quieres eEpresarlo[ c,A
iS1A
G"ile nT0
c*i,Srem*n,base,A
nS#iE*nNbase,A k 5arte entera de nNbase
iSiR1A
end
disp*c/a eEpresin en la base dada esKc,
iSiD1A
disp*c*iKD1K1,,
5or ltimo, tambi(n pueden pro+ramarse #unciones. /a primera instruccin de
un #ic"ero que conten+a una #uncin de nombre #un debe serK
#unction dar+umentos de salidaeS#un*ar+umentos de entrada,
1s conveniente que el #ic"ero que conten+a la #uncin se llame como ellaA as,
la #uncin anterior debera +uardarse en el #ic"ero #un.mA por ejemplo, si se
desea pro+ramar una #uncin que calcule, mediante el al+oritmo de 1uclides, el
mEimo comn divisor de dos nmeros naturales, basta escribir un #ic"ero
euclides.m cu$o contenido seaK
#unction mSeuclides*a,b,
k lculo del mEimo comn divisor de dos nmeros naturales
k mediante el al+oritmo de 1uclides
i# alb
cSbA
bSaA
aScA
end
G"ile bT0
cSrem*a,b,A
aSbA
bScA
end
mSaA
8i, una vez escrito el #ic"ero anterior, en el espacio de trabajo o en un pro+rama
se escribe la instruccin
mcdSeuclides*77,121,
en la variable mcd se almacenar el valor 11.
/as variables de una #uncin son siempre locales. 5or tanto, aunque en el seno
de la #uncin se modi#iquen los ar+umentos de entrada, el valor de las variables
correspondientes queda inalterado. 5or ejemplo, en la #uncin euclides.m se
modi#ica el valor de los ar+umentos de entrada, pero, sin embar+oK
TTES1CA
TTmcdSeuclides*E,7,A
TTE
E S
1C
8i se pretende que las modi#icaciones de un ar+umento de entrada a#ecten a la
variable correspondiente, deber situarse dic"o ar+umento, adems, en la lista
de ar+umentos de salida.

0ttp@99HHH.mat.ucm.es9`infante9matlab9notas.0tm
5.3 Introduccin a la potencia rafica
CAPKTULO 1
U" es$!&io &e las 3-4%icas *o- com*!$a&o-a
/as computadoras se "an convertido en una "erramienta poderosa para producir
im+enes en #orma rpida $ econmica. )o eEiste nin+una rea en donde no sea posible
aplicar +r#icas por compuadora con al+n bene#icio, por ello se "a +eneralizado la
utilizacin de +r#icas por computadora. 0o$ em da las +r#icas por computadora se
utilizan de manera rutinaria en diversas reas, como en la ciencia, in+eniera, empresas,
industria, +obierno, arte, entretenimiento, publicidad, educacin, capacitacin $
presentaciones +r#icas. 0a+amos un breve recorrido a trav(s de una +alera de
aplicaciones de las +r#icas.
1.1 DISEO ASISTIDO POR COMPUTADORA
/os m(todos de diseo asistido por computadora, que se conocen por lo +eneral como
AI *computer assisted desi+n,, a"ora se utilizan de #orma rutinaria en el diseo de
construcciones, automviles, aeronaves, embarcaciones, naves espaciales,
computadoras, telas $ muc"os productos. 1n el caso de al+unas aplicaciones de diseo,
los objetos se desplie+an primero en #orma de armazn mostrando la #orma +eneral $
sus caractersticas internas. /os desplie+ues del armazn permiten ver a los diseadores
con rapidez los e#ectos de ajustes interactivos para disear #ormas. :e+ularmente, los
paquetes de so#tGare de aplicaciones de AI o#recen al diseaDdor un entorno con
ventanas mltiplesA estas diversas ventanas desple+ables muestran secciones
ampli#icadas de vistas de di#erentes objetos. /os circuitos $ las redes para
comuncaciones, abastacemientos de a+ua $ otros servicios pblicos se constru$en a
trav(s de la colocacin repetida de al+unas #ormas +r#icas. /as #ormas usadas en un
diseo representan los diversos componentes del circuito o de la red. on el paquete de
diseo se o#recen #ormas estndar para circuitos el(ctricos, electrnicos $ l+icos. 5ara
otras aplicaciones, un diseador puede crear smbolos personaliDzados empleados
necesariamente para construir la red o el circuito. As, se disea el sistema colocando
sucesivamente los componentes en el esquema, con el paquete de +r#icas o#reciendo de
manera automtica las coneEiones entre los componentes. 1sto permite al diseador
eEperimentar rpidamente con esquemas de circuitos alternativos para reducir al
mnimo el nmero de componentes o el espacio para el sistema. on #recuencia se
utilizan las animaciones en las aplicaciones del AI. /as animaDciones en tiempo real
que emplean desplie+ues de armazones en un monitor de video son tiles para probar el
comportamiento de un ve"culo o un sistema. uando no desple+amos objetos con
super#icies presentadas, pueden realizarse con rapidez los clculos corresponDdientes a
cada se+mento de la animacin para as crear un movimiento suave de tiempo real en la
pantalla. >+ualmente, los desplie+ues de armazones permiten al diseador ver el interior
del ve"culo $ observar el comportamiento de los componentes internos durante el
movimiento. /as animaciones en entornos de realidad virtual se utlizan para determinar
la #orma como in#lu$en ciertos movimientos en los operadores de ve"culos. 5or
ejemplo, el operador de un tractor con a$uda de un dispositivo montado sobre la cabeza
que presenta una vista estereoscpica del cuc"arn del car+ador #rontal o del
retroeEcavador, manipula los controles como si se encontrara en el asiento del tractor.
1sto permite al diseador eEplorar diversas posiciones del cuc"arn o del
retroeEcavador que pudieran obstruir la visin del operador. uando los diseos de
objetos estn completos o casi completos, se aplican modelos de iluminacin realista $
presentaciones de super#icies para producir desplie+ues mostrando la apariencia del
producto #inal. Tambi(n se crean desplie+ues realistas para la publicidad de automviles
$ otros ve"culos mediante e#ectos especiales de iluminacin $ escenas de #ondo. 1l
proceso de manu#actura tambi(n se asocia con la descripcin por computadora de
objetos diseados para automatizar la construccin del producto. 5or ejemplo, se puede
convertir el esquema de un tablero de circuitos en una descripcin de los procesos
individuaDles necesarios para elaborar el esquema. Al+unas partes mecnicas se #rabican
por medio de la descripcin de cmo se deben #ormar las super#icies con "erramientas.
/ue+o, se ajustan las "erramientas controladas de manera num(rica para #abricar la
parte de acuerdo con estos planos de construccin. /os arquitectos utilizan m(todos
+r#icos interactivos para pro$ectar plantas arquitecDtnicas donde se muestra la
disposicin de "abitaciones, ventanas, escaleras, anaqueles, barras de cocina $ otras
caractersticas de la construccin. A partir del displie+ue del plano de una construccin
en un monitor de video, un diseador el(ctrico puede eEperimentar con instalaciones
para cableado, coneEiones el(ctricas $ sistemas de alarma de incendios. Iel mismo
modo, aplicando paquetes para el esquema de instalaciones se determina la utilizacin
del espacio en una o#icina o en una planta de #abricacin. Iesplie+ues realistas de
diseos arquitectnicos permiten a los arquitectos $ a sus clientes estudiar la apariencia
de una construccin particular o de un +rupo de ellas, como un campus universitario o
un complejo industrial. on los sistemas de realidad virtual, los diseadores pueden
simular un -recorrido- por las "abitaciones o alrededor de construccioDnes para apreciar
mejor el e#ector +eneral de un diseo particular. Adems de presentar desplie+ues de
#ac"adas realistas, los paquetes de AI para arquitectura o#recen medios para
eEperimentar con planos interiores tridimensionales $ la uliminacin. Buc"as otras
clases de sistemas $ productos se disean usando $a sea paquetes de AI +enerales o
so#tGare de AI desarrollado en #orma especial.
1./ #R0ICAS DE PRESENTACIN
/as +r#icas de presentacin, se utilizan a #in de producir ilustraciones para in#ormes o
con el propsito de crear diapositivas de 7C mm o transparencias para usarse con
pro$ectores. :e+ularmente, las +r#icas de presentacin se emplean para resumir datos
#inancieros, estadsticos, matemticos, cient#icos $ econmicos para in#ormes de
investi+aDcin, in#ormes administrativos, boletnes de in#ormacin al consumidor $
otros tipos de reportes. omo ejemplos comunes de las +r#icas de presentacin
podemos citar las +r#icas de barras, +r#icas lineales, +r#icas de super#icie, +r#icas de
pastel $ otros desplie+ues que muestran relaciones entre mltiples parmetros. 8e
pueden "acer desplie+ues tridimensionaDles de esquemas $ +r#icas similares para
proporcionar in#ormacin adicional. 1n la administracin de pro$ectos se emplean
+r#icas de tiempo $ dia+ramas de redes de actividades para pro+ramar $ supervisar el
avance de pro$ectos.
1.1 ARTE POR COMPUTADORA
/os m(todos de +r#icas por computadora se utilizan en #orma +eneralizada tanto en
aplicaciones de bellas artes como en aplicaciones de arte comercial. /os artistas utilizan
una variedad de m(todos computacionales, inclu$endo "ardGare para propsitos
especiales, pro+ramas artsticos de broc"a de pintar del artista *como /umena,, otros
paquetes de pintura *como 5iEel5aint $ 8uper5aint,, so#tGare desarrollado de manera
especial, paquetes de matemtica simblica *como Bat"ematica,, paquetes de AI,
so#tGare de edicin electrnica de publicaciones $ paquetes de animaciones que
proporcionan los medios para disear #ormas de objetos $ especi#icar movimientos de
objetos. /a idea bsica del pro+rama paintbrus" *broc"a de pintar, permite a los artistas
-pintar- im+enes en la pantalla de un monitor de video. 1n realidad, la ima+en se pinta
por lo +eneral de manera electrnica en una tableta de +r#icas *di+italizador, utilizando
un estilete, el cual puede simular di#erentes trazos, anc"uras de la broc"a $ colores. /os
creadores de bellas artes emplean diversas tecnolo+as de computacin para producir
im+enes. on el propsito de crear pinturas el artista utiliza una combinacin de
paquetes de modelado tridimensional, dia+ramacin de la teEtura, pro+ramas de dibujo
$ so#tGare de AI. 1n un ejemplo de -arte metamtico- un artista utiliz una
combinacin de #unciones matemticas, procedimientos #ractales, so#tGare de
Bat"ematica, impresoras de c"orro de tinta $ otros sistemas con el #in de crear una
variedad de #ormas tridimensionaDles $ bidimensionales, al i+ual que pares de im+enes
estereoscpicas. 4tro ejemplo arte electrnico creado a partir de relaciones matemticas
es la obra de un compositor que est diseada en relacin con las variaciones de la
#recuencia $ otros parmetros en una composiDcin musical para producir un video el
cual inte+ra patrones visuales $ auditivos. Tambi(n se aplican estos m(todos en el arte
comercial para crear lo+otipos $ otros diseos, distribuciones de p+ina que combinan
teEto $ +r#icas, anuncios publicitarios por televisin $ otras reas. 5ara muc"as
aplicaciones de arte comercial *$ pelculas, al i+ual que otras aplicacioDnes,, se emplean
t(cnicas #otorrealistas para presentar im+enes de un producto. /as animaciones
tambi(n se utilizan con #recuencia en publicidad $ los comerciales de televisin se
producen cuadro por cuadro, donde cada cuadro del movimiento se presenta $ +raba
como un arc"ivo de ima+en. 8e simula el movimiento al mover li+eramente las
posiciones de los objetos con respecto a las del cuadro anterior. !na vez presentados
todos los cuadros de la secuencia de animacin, se trans#ieren a pelcula o se almacenan
en un b#er de video para "acer una reproduccin. /as animaciones en pelcula
requieren 2? cuadros por cada se+undo de la secuencia de animacin. 8i se reproduce en
un monitor de video, se requieren de 70 cuadros por se+undo. !n m(todo comn de
+r#icas que se utilizan en muc"os comerciales es la trans#ormacin *morp"in+,, donde
se trans#orma un objeto en otro *metamor#osis,. 1n televisin se "a empleado para
trans#ormar una lata de aceite en un motor de automvil, un automvil en un ti+re, un
c"arco en una llanta $ el rostro de una persona en otro.
1.2 ENTRETENIMIENTO
1s mu$ comn utilizar m(todos de +r#icas por computadora para producir pelculas,
videos musicales $ pro+ramas de televisin. 1n ocasiones, se desplie+an slo im+enes
+r#icas $ otras veces, se combinan los objetos con los actores $ escenas en vivo. 5or
ejemplo, en una escena +r#ica creada para la pelcula 8tart Trec9 D T"e 3rat" o# ;"an,
se dibujan en #orma de armazn el planeta $ la nave espacial $ se sonbrean con m(todos
de presentacin para producir super#icies slidas. Al i+ual que pueden aparecer personas
en #orma de armazn combinadas con actores $ una escena en vivo. /os videos
musicales aprovec"an las +r#icas de muc"as maneras, se pueden combinar objetos
+r#icos con accin en vivo, o se pueden utilizar t(cnicas de procesamiento de im+enes
para producir una trans#ormacin de una persona o un objeto en otro *morp"in+,.
1.6 EDUCACIN M CAPACITACIN
A menudo, se utilizan como instrumentos de a$uda educativa modelos de sistemas
#sicos, #inancieros $ econmicos, los cuales se +eneran por computadora. Bodelos de
sistemas #sicos, sistemas #isiol+icos, tendencias de poblacin o equipo, pueden a$udar
a los estudiantes a comprender la operacin del sistema. 1n el caso de al+unas
aplicaciones de capacitacin, se disean sistemas especiales, como los simuladores para
sesiones de prctica o capacitacin de capitanes de barco, pilotos de avin, operadores
de equipo pesado $ el personal de control de tr#ico a(reo. Al+unos simuladores no tiene
pantallas de videoA por ejemplo, un simulador de vuelo que slo tiene un panel de
control como instrumento de vuelo. )o obstante, la ma$or parte de los simuladoDres
cuenta con pantallas +r#icas para la operacin visual.
1.9 'ISUALI_ACIN
ient#icos, in+enieros, personal m(dico, analistas comerciales $ otros con #recuencia
necesitan analizar +randes cantidades de in#ormacin o estudiar el comportamiento de
ciertos procesos. /as simulaciones num(ricas e#ectuadas en supercomputadoras a
menudo producen arc"ivos de datos que contienen miles e incluso millones de valores
de datos. Ie modo similar, cmaras va sat(lite $ otras #uentes acumulan +randes
arc"ivos de datos ms rpido de lo que se pueden interpretar. 1l rastreo de estos +randes
conjuntos de nmeros para determinar tendencias $ relaciones es un proceso tedioso e
ine#icaz. 5ero si se convierten los datos a una #orma visual, es #recuente que se perciban
de inmediato las tendencias $ los patrones. 5or lo re+ular, la produccin de
representaciones +r#icas para conjuntos de datos $ procesos cient#icos de in+eniera $
de medicina se conoce como visualizacin cient#ica. 1l t(rmino visualizacin
empresarial se emplea en relacin con conjuntos de datos que se asocian con el
comercio, la industria $ otras reas no cient#icas. 1Eisten muc"as clases de conjuntos
de datos $ los esquemas de visualizacin e#ectivos dependen de las caractersticas de los
datos. !na compilacin de datos contiene valores escalares, vectores, tensores de orden
superior o cualquier combinacin de estos tipos de datos. L los conjuntos de datos
pueden ser bidimensionales o tridimensionales. /a codi#iDcacin de colores es slo una
manera de visualizar un conjunto de datos. /as t(cnicas adicionales inclu$en trazos,
+r#icas $ dia+ramas de contorno, presentaciones de super#icie $ visualizacin de
interiores de volumen. Adems, se combinan t(cnicas de procesamiento de im+enes
con +r#icas por computadora para crear muc"as de las visualizaciones de datos. /as
comunidades de matemticos, cient#icos #sicos $ otros utilizan t(cnicas visuales para
analizar #unciones matemticas $ procesos o slo con el propsito de crear representaD
ciones +r#icas interesantes.
1.O PROCESAMIENTO DE IM#ENES
A pesar de que los m(todos empleados en las +r#icas por computadora $ en el proceD
samiento de im+enes se traslapan, las dos reas realizan, en #orma #undamental,
operaciones distintas. 1n las +r#icas por computadora, se utiliza una computadora para
crear una ima+en. 5or otro lado, en el procesamiento de im+enes se aplican t(cnicas
para modi#icar o interpretar im+enes eEistentes, como #oto+ra#as $ rastreos de
televisin. /as dos aplicaciones principales del procesamiento de im+enes son *1, el
mejoramiento de la calidad de la ima+en $ *2, la percepcin de la mquina de
in#ormacin visual, como se utiliza en la robtica. 5ara aplicar los m(todos de
procesamiento de im+enes, primero di+italizamos una #oto+ra#a u otra ima+en en un
arc"ivo de ima+en. 1ntonces, se pueden aplicar m(todos di+itales para reordenar partes
de im+enes, para mejorar separaciones de colores o para aumentar la calidad del
sombreado. 1stas t(cnicas se utilizan en +ran medida en aplicaciones de arte comercial
que implican el retoque $ el reorden de secciones de #oto+raD#as $ otras obras de arte.
8e emplean m(todos similares para analizar #oto+ra#as de la Tierra por sat(lite $
#oto+ra#as de +alaEias. /as aplicaciones m(dicas tambi(n "acen uso importante de estas
t(cnicas de procesaDmiento de im+enes para mejorar #oto+ra#as, en tomo+ra#as $
simulacros de operaciones. /a tomo+ra#a es una t(cnica de #oto+ra#a por ra$os < la
cual permite el desplie+ue de vistas transversales de sistemas #isiol+icos. Tanto la
tomo+ra#a computarizada *TA computed tomo+rap"$, por ra$os <, como la
tomo+ra#a de emisin de posicin *51TA position emission tomo+rap"$, utilizan
m(todos de pro$eccin para reconstruir secciones transversaDles a partir de datos
di+itales. 1stas t(cnicas son empleadas para supervisar #unciones internas $ mostrar
secciones transversales durante una ciru+a. 4tras t(cnicas de pro$eccin de im+enes
m(dicas inclu$en rastreadores ultrasnicos $ nucleares. on el ultrasonido, se utilizan
ondas sonoras de alta #recuencia, en vez de ra$os <, para +enerar datos di+itales. /os
rastreadores para medicina nuclear recopilan datos di+itales de la radiacin que emiten
radionclidos in+eridos $ trazan im+enes con codi#icacin de colores. 5or lo +eneral, el
procesamiento de im+enes $ las +r#icas por computadora se combinan en muc"as
aplicaciones. 5or ejemplo, en medicina se utilizan estas t(cnicas para modelar $ estudiar
#unciones #sicas, para disear miembros arti#iciales, as como planear $ practicar
ciru+as. 1sta ltima aplicacin se conoce, por lo +eneral, ciru+a asistida por
computadora. 8e obtienen secciones transversales bidimensionales del cuerpo a trav(s
de la utilizacin de t(cnicas de pro$eccin de im+enes. /ue+o se ven $ manipulan los
cortes utilizando m(todos +r#icos para simular procedimientos quirr+icos reales $
eEperimentar con diversas incisiones quirr+icas.
1.S INTER0ACES #R0ICAS POR USUARIO
1s comn que los paquetes de so#tGare o#rezcan una inter#az +r#ica. !n componente
importante de una inter#az +r#ica es un administrador de ventanas que "ace posible que
un usuario desplie+ue reas con ventanas mltiples. ada ventana puede contener un
proceso distinto que a su vez puede contener desplie+ues +r#icos $ no +r#icos. 5ara
activar una ventana en particular, slo "acemos clic en esa ventana utilizando un dispoD
sitivo de pulsar interactivo. /as inter#aces tambi(n desplie+an menes e iconos para
permitir una seleccin rpida de las opciones de procesamiento o de valores de
parmetros. !n icono es un smbolo +r#ico diseado para semejarse a la opcin de
procesamiento que representa. /a ventaja de los iconos es que ocupan menos espacio en
la pantalla que las descripciones teEtuales corresDpondientes $ que se pueden entender
con ma$or rapidez si estn bien diseados. /os menes contienen listas de
descripciones teEtuales e iconos.
"ttpKNNGGG.cs.buap.mENn+lcNcapi1."tml
Unidad ;. Puerto#
;.1 'onceptos enerales de mane!os de puertos
El ma"e.o &e *!e-$os
/as operaciones de lectura $ escritura a puertos *#amilia de instrucciones >) $ 4!T del
procesador @0@&N@0@@,, se puede realizar utilizando los arc"ivos especiales
C.?
de Bac" o
los objetos +r#icos que o#rece )e<T8T15.
0ttp@99computacion.cs.cinvestav.mB9`ameneses9pub9tesis9ltesis9node1.0tm
l
Los puertos de comunicacin de la "C son de particular inters para el estudioso de
la electrnica a que le permiten utilizar una computadora personal para controlar
todo tipo circuitos electrnicos utilizados, principalmente, en acti(idades de
automatizacin de procesos, adquicisin de datos, tareas repetiti(as otras
acti(idades que demandan precisin! )ste artculo es el primero de una serie que
analizar di(ersos usos para el puerto paralelo de la "C!
'onceptos b,sicos
E=isten dos mtodos bsicos para transmisin de datos en las computadoras
modernas! En un esquema de transmisin de datos en #erie un dispositi(o en(a
datos a otro a razn de un bit a la (ez a tra(s de un cable! "or otro lado, en un
esquema de transmisin de datos en paralelo un dispositi(o en(a datos a otro a
una tasa de n n1mero de bits a tra(s de n n1mero de cables a un tiempo! -era
fcil pensar que un sistema en paralelo es n (eces ms rpido que un sistema en
serie, sin embargo sto no se cumple, bsicamente el impedimiento principal es el
tipo de cable que se utiliza para interconectar los equipos! -i bin un sistema de
comunicacin en paralelo puede utilizar cualquier n1mero de cables para transmitir
datos, la maora de los sistemas paralelos utilizan ocho lneas de datos para
transmitir un bte a la (ez, como en todo, e=isten e=cepciones, por ejemplo el
estndar -C-/ permite transferencia de datos en esquemas que (an desde los ocho
bits hasta los treinta dos bits en paralelo! En ste artculo nos concentraremos
en transferencias de ocho bits a que sta es la configuracin del puerto paralelo de
una "C!
@n tpico sistema de comunicacin en paralelo puede ser de una direccin
;unidireccional< o de dos direcciones ;bidireccional<! El ms simple mecanismo
utilizado en un puerto paralelo de una "C es de tipo unidireccional es el que
analizaremos en primer lugar! Aistinguimos dos elementos4 la parte transmisora
la parte receptora! La parte transmisora coloca la informacin en las lneas de datos
e informa a la parte receptora que la informacin ;los datos< estn disponiblesE
entonces la parte receptora lee la informacin en las lneas de datos e informa a la
parte transmisora que ha tomado la informacin ;los datos<! Fbser(e que mbas
partes sincronizan su respecti(o acceso a las lneas de datos, la parte receptora no
leer las lneas de datos hasta que la parte transmisora se lo indique en tanto que
la parte transmisora no colocar nue(a informacin en las lneas de datos hasta que
la parte receptora remue(a la informacin le indique a la parte transmisora que
a ha tomado los datos, a sta coordinacin de operaciones se le llama acuerdo
entendimiento! Cin, en stos mbitos tecnolgicos es recomendable utilizar ciertas
palabras en ingls que nos permiten irnicamente un mejor entendimiento de los
conceptos tratados! Hepito4 a la coordinacin de operaciones entre la parte
transmisora la parte receptora se le llama )and#)a<ing, que en espa.ol es el
acto con el cual dos partes manifiestan estar de acuerdo, es decir, se dan un
apretn de manos!
El +a"&s+a`i"3
"ara implementar el handsha'ing se requieren dos lneas adicionales! La lnea
de e#trobo#copio ;en ingls strobe< es la que utiliza la parte transmisora para
indicarle a la parte receptora la disponibilidad de informacin! La lnea de admi#in
;ac'no(ledge< es la que utiliza la parte receptora para indicarle a la parte
transmisora que ha tomado la informacin ;los datos< que est lista para recibir
ms datos! El puerto paralelo pro(ee de una tercera lnea de handshaMing llamada
en ingls bu#y ;ocupado<, sta la puede utilizar la parte receptora para indicarle a
la parte transmisora que est ocupada por lo tanto la parte transmisora no debe
intentar colocar nue(a informacin en las lneas de datos! @na tpica sesin de
transmisin de datos se parece a lo siguiente4
Parte tran#mi#ora(
La parte transmisora checa la lnea bus) para (er si la parte receptora est
ocupada! -i la lnea bus) est acti(a, la parte transmisora espera en un bucle hasta
que la lnea bus) est inacti(a!
La parte transmisora coloca la informacin en las lneas de datos!
La parte transmisora acti(a la lnea de strobe!
La parte transmisora espera en un bucle hasta que la lnea ac'no(ledge est
acti(a!
La parte transmisora inacti(a la lnea de strobe!
La parte transmisora espera en un bucle hasta que la lnea ac'no(ledge est
inacti(a!
La parte transmisora repite los pasos anteriores por cada bte a ser transmitido!
Parte receptora(
La parte receptora inacti(a la lnea bus) ;asumiendo que est lista para recibir
informacin<!
La parte receptora espera en un bucle hasta que la lnea strobe est acti(a!
La parte receptora lee la informacin de las lneas de datos ; si es necesario,
procesa los datos<!
La parte receptora acti(a la lnea ac'no(ledge!
La parte receptora espera en un bucle hasta que est inacti(a la lnea de strobe!
La parte receptora inacti(a la lnea ac'no(ledge!
La parte receptora repite los pasos anteriores por cada bte que debe recibir!
-e debe ser mu cuidadoso al seguir stos pasos, tanto la parte transmisora
como la receptora coordinan sus acciones de tal manera que la parte transmisora
no intentar colocar (arios btes en las lneas de datos, en tanto que la parte
receptora no debe leer ms datos que los que le en(e la parte transmisora, un bte
a la (ez!
0ttp@99HHH.modelo.edu.mB9univ9virtec09circuito9paralelo.0tm
812 "2'<I84S ?U1 S1 1#'U1#T2"# D1#T24 D1 L" '"2*1T" D1 L"
-"T12I"
;.2 'onfiuracin de los puertos en las computadoras
1l 0ardHare del puerto paralelo
El puerto paralelo de una tpica "C utiliza un conector hembra de tipo A de #8
patitas ;AC7#8 -<, ste es el caso ms com1n, sin embargo es con(eniente
mencionar los tres tipos de conectores definidos por el estndar I!!! 1.;6, el
primero, llamado 1.;6 tipo A es un conector hembra de #8 patitas de tipo A, es
decir, el que mencionamos al principio! El orden de las patitas del conector es ste4
El segundo conector se llama 1.;6 tipo , que es un conector de &% patitas de
tipo centronics lo encontramos en la maora de las impresorasE el tercero se
denomina 1.;6 tipo C, se trata de un conector similar al 2#$' tipo C pero ms
peque.o, adems se dice que tiene mejores propiedades elctricas mecnicas,
ste conector es el recomendado para nue(os dise.os! La siguiente tabla describe
la funcin de cada patita del conector 2#$' tipo 04
*atita 19S *olaridad activa Descripcin
1 Salida 0 Strobe
2 ~ 9 Salida -
Lneas de datos
(bit 0/patita 2, bit 7/patita 9)
10 Entrada 0
Lnea acknowledge
(activa cuando el sistema remoto toma datos)
11 Entrada 0
Lnea busy
(si est activa, el sistema remoto no acepta datos)
12 Entrada 1
Lnea Falta de papel
(si est activa, falta papel en la impresora)
13 Entrada 1
Lnea Select
(si est activa, la impresora se ha seleccionado)
14 Salida 0
Lnea Autofeed
(si est activa, la impresora inserta una nueva
lnea por cada retorno de carro)
15 Entrada 0
Lnea Error
(si est activa, hay un error en la impresora)
16 Salida 0
Lnea nit
(Si se mantiene activa por al menos 50
micro-segundos, sta seal
autoinicializa la impresora)
17 Salida 0
Lnea Select input
(Cuando est inactiva, obliga a la
impresora a salir de lnea)
18 ~ 25 - - Tierra elctrica
Tabla 1( Con*iguracin del puerto paralelo e#t=ndar
Fbser(e que el puerto paralelo tiene 2# lneas de salida ;$ lneas de datos,
strobe, autofeed, init, select input< 8 de entrada ;acMnoKledge, bus, falta de
papel, select error<! El estndar /EEE 2#$' define cinco modos de operacin4
2! Modo compatible
#! Modo nibble
&! Modo bte
'! Modo E"", puerto paralelo ampliado
8! Modo EC", puerto de capacidad e=tendida
El objeti(o del estndar es dise.ar nue(os dispositi(os que sean totalmente
compatibles con el puerto paralelo estndar ;-""< definido originalmente por la /CM
;en ste artculo tratar solamente el modo compatible<! Da tres direcciones de
EI- asociadas con un puerto paralelo de la "C, stas direcciones pertenecen al
regi#tro de dato#, el regi#tro de e#tado el regi#tro de control! El registro de
datos es un puerto de lectura7escritura de ocho bits! Leer el registro de datos ;en la
modalidad unidireccional< retorna el 1ltimo (alor escrito en el registro de datos! Los
registros de control estado pro(een la interface a las otras lneas de EI-! La
distribucin de las diferentes se.ales para cada uno de los tres registros de un
puerto paralelo esta dada en las siguientes tablas4
Direccin #ombre Lectura91scritura Bit U *ropiedades
Base + 0 Puerto de datos Escritura Bit 7 Dato 7
Bit 6 Dato 6
Bit 5 Dato 5
Bit 4 Dato 4
Bit 3 Dato 3
Bit 2 Dato 2
Bit 1 Dato 1
Bit 0 Dato 0
Tabla .( Regi#tro de dato#
Direccin #ombre Lectura91scritura Bit U *ropiedades
Base + 1 Puerto de estado Slo Lectura Bit 7 Busy
Bit 6 Acknowledge
Bit 5 Falta de papel
Bit 4 Select n
Bit 3 Error
Bit 2 RQ (Not)
Bit 1 Reservado
Bit 0 Reservado
Tabla 3( Regi#tro de e#tado
Direccin #ombre Lectura91scritura Bit U *ropiedades
Base + 2 Puerto de control Lectura/Escritura Bit 7 No usado
Bit 6 No usado
Bit 5
Permite puerto
bidireccional
Bit 4
Permite RQ a
travs de la
lnea
acknowledge
Bit 3
Selecciona
impresora
Bit 2
nicializa
impresora
Bit 1
Nueva lnea
automtica
Bit 0 Strobe
Tabla 6( Regi#tro de control
@na "C soporta hasta tres puertos paralelo separados, por tanto puede haber
hasta tres juegos de registros en un sistema en un momento dado! E=isten tres
direccione# ba#e para el puerto paralelo asociadas con tres posibles puertos
paralelo4 3=&CCh, 3=&:$h 3=#:$h, nos referimos a stas como las direcciones
base para el puerto 1PT1, 1PT. 1PT3, respecti(amente! El registro de datos se
localiza siempre en la direccin base de un puerto paralelo, el registro de estado
aparece en la direccin base 6 2, el registro de control aparece en la direccin
base 6 #! "or ejemplo, para un puerto L"L# localizado en 3=&:$h, sta es la
direccin del registro de datos, al registro de estado le corresponde la direccin
3=&:>h su respecti(o registro de control est en la direccin 3=&:0h! Cuando la
"C se enciende el C/F- ejecuta una rutina para determinar el n1mero de puertos
presentes en el sistema asignando la etiqueta L"L2 al primer puerto localizado, si
e=isten ms puertos entonces se asignarn consecuti(amente las etiquetas L"L#
L"L& de acuerdo a la siguiente tabla4
Direccin inicial /uncin
0000:0408 Direccin base para LPT1
0000:040A Direccin base para LPT2
0000:040C Direccin base para LPT3
0000:040E Direccin base para LPT4
Tabla 7( Direccione# ba#e en el ,IO"
"ara trabajar con el puerto paralelo necesitamos en primer lugar conocer la
direccin base asignada por el C/F- ;estamos hablando de una "C compatible con
/CM<, podemos utilizar un programa llamado Debug.e-e que nos indique la;s<
direccin;es< asignada;s<4 en la plataforma JindoKs (amos al men1 inicio,
seleccionamos programas luego %$*+,$ para abrir una (entana de $mbolo de
%$*+,$ aqu podemos introducir los comandos indicados ms abajo! -i se
trabaja en ambiente AF- basta con teclear en la lnea de comandos la palabra
debug, el programa responde colocando un signo de menos > en donde tecleamos
sin dejar espacios en blanco d?6?(?;1; presionamos la tecla entrar, entonces el
programa debug.e-e nos indica en una serie de n1meros la;s< direccin;es< para el
;los< puerto;s< paralelo;s< disponibles en nuestro sistema, la siguiente imagen
muestra el resultado obtenido en mi mquina4
-e puede obser(ar una serie de n1meros de dos dgitos ;ocho en total<, se trata
del (olcado de memoria que empieza en la direccin '34333$h! Los primeros seis
pares de n1meros representn las direcciones base para los puertos paralelo
instalados, en la imagen de arriba se aprecia que el 1nico puerto paralelo de mi
mquina est en la direccin 3=&:$h ;:$ 3&<! Los n1meros estn in(ertidos porque
/ntel almacena tal informacin en un formato de Nbte de bajo orden 7 bte de alto
ordenN! @na (ez que obtenemos la informacin deseada cerramos el programa
+ebug.e-e simplemente tecleando la letra @ presionando la tecla entrar! "ara
cerrar la (entana de $mbolo de %$*+,$ tecleamos la palabra e-it presionamos
la tecla entrar!
"or supuesto, tambin podemos conocer la direccin asignada al puerto paralelo
utilizando un programa, faltaba ms, el cdigo es el siguiente4
/**********************************************************
* puerto1.c *
* (c)Virgilio Gmez Negrete *
* Determina la direccion del puerto paralelo *
**********************************************************/
#include <stdio.h>
#include <dos.h>
int main()
{
unsigned int __far *puntero_a_direccion;
int i;
puntero_a_direccion=(unsigned int __far *)0x00000408;
for (i=0; i<3; i++)
{
if (*puntero_a_direccion == 0)
printf("No se encontro puerto asignado a LPT%d \n", i+1);
else
printf("La direccion asignada a LPT%d es 0x%Xh\n",
i+1, *puntero_a_direccion);
puntero_a_direccion++;
}
return 0;
}
El programa es mu sencillo, necesitamos un puntero que se.ale a la ubicacin
de memoria que almacena la informacin para las diferentes direcciones asignadas
al puerto paralelo, lo llamamos punteroAaAdireccion, ste puntero debe ser de al
menos dos btes, por sta razn se declara como de tipo un#igned int AA*ar! Es
importante que @sted (erifique en la documentacin de su compilador la manera
precisa para utilizar la palabra cla(e "ar, sta puede ser simplemente la palabra
como tal bin puede lle(ar uno ;."ar< o dos guiones bajos ;.."ar<, aseg1rese de
utilizar la forma correcta el programa no funcionar! Creo que con lo e=plicado
arriba el funcionamiento del programa puerto1.c no presenta problema alguno!
+ol(er al principio
InterfaL para el puerto paralelo
0ctualmente, la maora de los puertos instalados en las computadoras son de
tipo multimodal configurables a tra(s del C/F- de la mquina, en ste artculo me
refiero e=presamente al modo Normal B"PPC, adems de ste estn las opciones
,idireccional, !PP %er#in 1.9, !PP %er#in 1.D !CP principalmente! El modo
de operacin /ormal es el ms elemental solamente permite la escritura en las
lneas de datos, patitas # a la > del conector AC7#8 del puerto paralelo de la "C!
Elctricamente, el puerto paralelo entrega se.ales LLL como tal, teoricamente,
se le puede conectar cualquier dispositi(o que cumpla con los ni(eles de (oltaje
especficos de la lgica LLL, sin embargo el hardKare del puerto paralelo est mu
limitado en cuanto a su capacidad de manejo de corriente, por sta razn se debe
ser mu cuidadoso con el manejo de las se.ales del puerto, un corto circuito puede
da.ar permanentemente la tarjeta madre de la "C! "ara disminuir lo ms posible el
riesgo de da.os al puerto utilizamos un circuito integrado 961".66 como etapa
separadora al mismo tiempo mejoramos la capacidad de manejo de corriente, de
esta forma podemos conectar una serie de diodos emisores de luz ;LEA< que nos
indiquen la acti(idad en las lneas de datos del puerto paralelo! El circuito se detalla
en el siguiente diagrama4
"or cada lnea de entrada que tomamos directamente del puerto paralelo e=iste
una etapa amplificadora7separadora dentro del circuito integrado :'L-#'' que nos
permite trabajar con una tasa de entrega de corriente suficiente para desplegar en
los diodos emisores de luz la informacin escrita en las lneas de datos del puerto!
0dems es posible habilitar deshabilitar el despliegue del nibble de orden inferior
superior del bte escrito en el puerto! Colocando en un ni(el lgico alto la patita 2
del C/ :'L-#'' inhabilitamos el despliegue del nibble de orden bajo, un ni(el lgico
alto en la patita 2> e(ita el despliegue del nibble de orden alto! "ara comodidad,
conecto las patitas 2 2> permanentemente a tierra de tal manera que sea posible
(isualizar la acti(idad en los diodos emisores de luz ;LEA<! En el diagrama se
especifican con n1meros las correspondientes patitas del conector AC7#8!
Fb(iamente se requiere de una fuente regulada de 8 +oltios para operar ste
circuito, adems los siguientes materiales4
2! Circuito /ntegrado LLL :'L-#''!
$! Aiodos Emisores de Luz!
$! Hesistencias de ##3 Fhms, 2I# Jatt!
2! Cable conector para el puerto paralelo!
?aturalmente lo ms recomendable es probar el correcto funcionamiento del
circuito ante# de conectarlo al puerto paralelo de la "C! Ensamble el circuito,
preferentemente en un circuito impreso, conctelo a una fuente regulada de 8
+oltios, conecte temporalmente un e=tremo de una resistencia de 23,333 Fhms a
una lnea de entrada, el resto de las lneas de entrada conctelas a tierra! El otro
e=tremo de la resistencia conctelo directamente al borne positi(o de la fuente de
alimentacin para inducir una se.al LLL alta, el respecti(o LEA debe encender! Con
un trozo de alambre conectado a Lierra, toque temporalemente el e=tremo de la
resistencia que est conectado a la lnea de entrada para inducir una se.al LLL de
lgica baja, el LEA se debe apagar! Hepita sta operacin para cada una de las ocho
lneas de entrada! @na (ez que ha (erificado el correcto funcionamiento del circuito
est listo para conectarlo al puerto paralelo de la "C!
En primer lugar apague la computadora el circuito! Conecte el cable al puerto
paralelo asegurndose que el conector est firme en su sitio! Encienda el circuito
por 1ltimo encienda la computadora, por regla general, el circuito de
restablecimiento de la computadora coloca inicialmente en las lneas de datos del
puerto paralelo un (alor igual a 3=3h, por lo tanto todos los diodos deben estar
apagados una (ez que la computadora ha terminado su proceso de arranque, sin
embargo, si alg1n diodo permanece encendido sto no indica una condicin de falla,
es responsabilidad del softKare que @sted escriba para controlar el puerto
inicializarlo con un (alor adecuado antes de realizar cualquier otra operacin!
+ol(er al principio
1scribiendo datos al puerto paralelo
Con ocho bits podemos escribir en el puerto un total de #8% (alores diferentes,
cada uno de stos representa un bte de informacin cada bte puede
representar una accin concreta que nosotros podemos definir de acuerdo a
nuestras necesidades! En ste artculo el objeti(o es entender cmo trabajar con el
puerto paralelo, por lo tanto hagamos un programa que nos permita escribir un
n1mero cualquiera entre 3 #88 de tal manera que sea posible (isualizar el (alor
en formato binario! En primer lugar consulte la documentacin de su compilador
para (erificar la correcta sint=is de la funcin que nos sir(e para escribir en el
puerto, en el caso especfico de -mantec C66, dicha funcin es outpB C! )sta
funcin requiere dos parmetros, el primero de tipo unsigned int que especifica la
direccin del puerto paralelo, el segundo de tipo char que especifica el (alor a
escribir en las lneas de datos de puerto! @na tpica llamada a la funcin outp( ) se
parece a sto4
outp(0x378, 65);
-e aprecia la facilidad de manejo de la funcin, aunque diferentes compiladores
dan a sus respecti(as funciones nombres diferentes, la mecnica es la misma, se
requieren dos parmetros, la direccin del puerto el (alor a escribir en el puerto!
Estudie el siguiente cdigo4
/**********************************************************
* puerto2.c *
* Escribe datos al puerto paralelo de la PC *
* (c)1999, Virgilio Gmez Negrete *
**********************************************************/
#include <stdio.h>
#include <dos.h>
int puerto(int direcc);
int seleccion;
int main()
{
unsigned int __far *puntero_a_direccion;
int i, direccion[3]={0,0,0}, disponible[3]={0,0,0};
puntero_a_direccion = (unsigned int __far *)0x00000408;
printf("Seleccione el puerto:\n");
/* Cuantos puertos existen? */
for (i=0; i<3; i++)
{
if (*puntero_a_direccion == 0)
printf("Puerto LPT%d...............no disponible\n", i+1);
else
{
disponible[i] = 1;
direccion[i] = *puntero_a_direccion;
printf("Puerto LPT%d...............%d\n", i+1, i+1);
}
puntero_a_direccion++;
}
printf("Salir del programa........0\n");
scanf("%d", &seleccion);
do
{
switch(seleccion)
{
case 0:/* Salir del programa */
printf("Adios!!!\n");
return 0;
break;
case 1:/* Puerto LPT1 */
if(disponible[0]==1)
puerto(direccion[0]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;
case 2:/* Puerto LPT2 */
if(disponible[1]==1)
puerto(direccion[1]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;
case 3:/* Puerto LPT3 */
if(disponible[2]==1)
puerto(direccion[2]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;
default:
printf("ERROR: OPCION INCORRECTA!\n");
break;
}
if(seleccion!=0)
{
printf("Seleccione otra opcion\n");
scanf("%d", &seleccion);
}
}
while(seleccion!=0);
return 0;
}
int puerto(int direcc)
{
unsigned char valor; /* Solo valores entre 0 y 255 */
printf("Ahora puede escribir cualquier valor\n");
printf("entre 1 y 255, 0 para terminar el programa\n");
do
{
printf("Valor al puerto?\n");
scanf("%d", &valor);
outp(direcc, valor);
printf("Se ha escrito %d al puerto\n", valor);
}
while(valor!=0);
return seleccion=0;
}
El programa determina el n1mero de puertos paralelo instalados en la
computadora almacena sus respecti(as direcciones en el arreglo llamado
direccionEiF, en caso de encontrarse una direccin (lida adems se establece en
2 el (alor del arreglo llamado di#ponibleEiF simplemente como una medida de
seguridad adicional! Como resultado de stas acciones el programa despliega un
men1 basado en los puertos encontrados, en este punto @sted puede seleccionar,
en caso de que disponga de ms de un puerto, el puerto en donde est conectado
el circuito mostrado en el diagrama de arriba!
@na (ez seleccionado el puerto @sted puede escribir un (alor cualquiera
comprendido entre 3 #88! /ndependientemente del puerto seleccionado toda la
funcionalidad del programa est encapsulada en la funcin de tipo int llamada
puertoB C a la cual se le pasa un 1nico parmetro que es la direccin del puerto
seleccionado! La funcin est codificada de tal forma que al escribir un 3 el
programa termina, de sta manera al cerrar el programa las lneas de datos del
puerto paralelo estn todas en un ni(el lgico bajo! )ste programa el circuito
asociado son 1tiles para entender de forma (isual la forma de representar (alores
en formato binario, adems establece las bases de trabajo para otros proectos de
control basados en computadora! Aisfrute la e=periencia!
+ol(er al principio
Descaras
El diagrama esquemtico de la interfaz para el puerto paralelo el cdigo fuente
de los programas mostrados en ste artculo estn disponibles en el archi(o
llamado paralel2!zip ;22!: Sb!<
R'mo se confiura el puerto serie S
/a primera pre+unta seraK ] Iebo con#i+urar mis puertos serie [
1n +eneral, slo debers con#i+urar los puertos serie en estos casosK
Tu modem es interno $ 5lu+cnc5la$. Iebers con#i+urar el modem $ al menos el
puerto serie que incorpora.
Tienes ms de dos puertos serie, contando adems con los que incorporan los
modems internos *si tienes al+uno,. 5or lo +eneral debers con#i+urar todos los
puertos a partir del 4B7 incluido.
!n tercer caso, ms raro, que consistira en tener un modem interno en 4B1 o
4B2 $ que no usara los recursos estandar *puerto 7#@ e interrupcion ? para
4B1, $ puerto 2#@ e interrupcin 7 para 4B2,. /os recursos utilizados por el
modem pueden consultarse en el 5anel de ontrol de 3indoGs 6C *8istema DT
Administrador de dispositivos DT 5uertos 4B $ /5T DT el puerto que sea DT
:ecursos,. 1ntonces debers con#i+urar el puerto del modem.
8i no cumples nin+una de estas condiciones, puedes i+norar el resto de la seccin.
!n puerto serie *ms eEactamente, la !A:T del puerto serie, usa un ran+o de
direcciones de entradaDsalida $ una solicitud de interrupcin para comunicarse con el
sistema operativo. 5ara el correcto #uncionamiento del ordenador $ del sistema
operativo, nin+n otro dispositivo del ordenador puede usar al+uno de esos valores.
)uestro objetivo ser conse+uir esto, $ en se+undo lu+ar, "acer que el sistema operativo
atienda a ese ran+o de entradaDsalida $ esa interrupcin para comunicarse con el
modem.
Tradicionalmente la eleccin del ran+o de entradaDsalida $ la interrupcin se realizaba a
trav(s de una serie de microinterruptores manuales situados en el modem. onocida la
posicin de estos interruptores, se con#i+uraba el sistema operativo para que usara esos
valores. 0o$ en da casi la totalidad de los modems internos son 5lu+cnc5la$, lo cual
si+ni#ica que el sistema operativo puede, por so#tGare, decirle a la tarjeta qu( valores
debe usar.
3onfiguracin de modems lugFnFla0 en (inu8
8i tienes un modem 5lu+cnc5la$, lo primero que "abr que "acer es decirle que ran+o de
entradaDsalida $ que interrupcin debe usar. /o ms cmodo en este caso es usar los
mismos valores que 3indoGs 6C. 5ara ello arranca 3indoGs 6C, $ "az >nicioD
Ton#i+uracinDT5anel de control. !na vez en el 5anel de control, eli+e el icono
c8istemac $ dentro de (l, el cAdministrador de dispositivosc. Ientro del apartado c5uertos
4B $ /5Tc eli+e el correspondiente al puerto 4B donde tienes el modem. .usca en
c:ecursosc el ran+o de entradaDsalida $ la interrupcin que use $ apntalos.
on esos valores en la mano, puedes con#i+urar tu modem 5lu+cnc5la$ en /inuE. 1so se
"ace con el pro+rama cisapnpc. 1ntra en /inuE $ busca si tienes un arc"ivo llamado
/etc/isapnp.conf. 8i no lo tienes "az lo si+uienteK pnpdump T NetcNisapnp.con# 1sto
+enerar el esqueleto de un arc"ivo de con#i+uracin para cisapnpc. 1ste pro+rama
+enerar un listado con todas las posibles posibilidades de con#i+uracin que permiten
tus dispositivos 5lu+cnc5la$, pero todas des"abilitadas con un chc al principio de cada
lnea. /os dispositivos aparecen por secciones por lo que es #cil encontrar los
correspondientes a tu modem.
As tu misin se reducir a encontrar en la seccin correspondiente a tu modem del
arc"ivo /etc/isapnp.conf, dos lneas asK h *>4 0 *.A81 0E0))),, h *>)T 0 *>:O
BB *B4I1 R1,,, donde ))) sea el ran+o de entradaDsalida que use el modem en
3indoGs $ BB la interrupcin. /as lneas no tienen por qu( ser consecutivas ni ir en
nin+n orden especial. uando las encuentres, qutales el chc inicial. /ue+o, al #inal de la
seccin del modem encontrars una lnea parecida a estaK h *AT L, Ie la misma
#orma, le quitas el chc inicial. La est. /isto para enviar dic"os valores al modem. 1sto lo
"ace la orden isapnp /etc/isapnp.conf $ deber aparecer en los scripts de arranque
de /inuE para enviar los valores cada vez que enciendas el ordenador. /as
distribuciones ms recientes *:edD0at C.0 $ posteriores, Iebian 2.0 $ posteriores, $a
inclu$en dic"a invocacin por lo que no necesitars tocar los scripts de arranque. 1n
caso de tener una distribucin anti+ua, ser necesario aadir dic"a orden. !n buen sitio
para incluirla sera el script rc.local, que suele estar situado en uno de los
subdirectorios de /etc.
Ie todas #ormas ser necesario ejecutar isapnp /etc/isapnp.conf si queremos
activar los cambios en este momento $ nos queremos a"orrar el rearrancar la mquina.
A"ora "a$ que decirle al sistema operativo que debe usar esos valores para comunicarse
con el modem. 1n el caso de los modems 5lu+cnc5la$ lo que viene a continuacin es
imprescindible.
3onfiguracin de los puertos serie a ojos del sistema operati1o
/o primero que "a$ que saber es que /inuE no llama a los puertos serie de la misma
#orma que el I48 o 3indoGs. As eEiste la si+uiente correspondenciaK
DOS,Yi"&o>s Li"!H
4B1 NdevNtt$80
4B2 NdevNtt$81
4B7 NdevNtt$82
DOS,Yi"&o>s Li"!H
4B? NdevNtt$87
4jo a las ma$sculas $ las minsculas del nombre de /inuE. 8on importantes.
5ara leer la con#i+uracin $ con#i+urar los puertos serie se usa la orden csetserialc. 5ara
leer la con#i+uracin, "a$ que ejecutar setserial con el puerto serie que deseamos ver
como nico parmetro.
5or ejemploK setserial NdevNtt$81 nos muestra la con#i+uracin de 4B2 $ se obtendr
al+o como estoK NdevNtt$81, !A:TK 1&CC0A, 5ortK 0E02#@, >:O 7 o sea, el puerto serie
*/dev/ttyS1,, el tipo de c"ip !A:T que lleva *1&CC0A,, el puerto base de entradaD
salida *2#@, $ la solicitud de interrupcin *7,. )tese que estos son los valores que el
sistema operativo :11 que debe utilizar para comunicarse con el modemNpuerto serie.
1s posible que a"ora no coincidan con los reales, incluso que ni siquiera detecte la
!A:T, lo cual no es raro en caso de modems 5lu+cnc5la$.
8i no coinciden, asi+naremos los valores adecuados. 5or #ortuna, por lo +eneral no ser
necesario indicar la direccin base de entradaDsalida. 8alvo casos mu$, mu$
eEcepcionales 4B1 usa la direccin base 7#@, 4B2 la 2#@, 4B7 la 7e@ $ 4B? la
2e@, $ eso setserial lo sabe. As, al indicar el puerto serie, setserial implcitamente sabe
cual es la direccin base. 1n cambio, en caso de tener un puerto 4BC o superior s
ser necesario indicar la direccin base.
As para 4B1D4B? slo indicaremos la interrupcin. 5or ejemplo, supon+amos que
tenemos un modem en 4B7 que usa la interrupcion C. /a orden a introducir sera.
setserial NdevNtt$82 irq C autocon#i+ L si quisi(ramos indicar tambi(n la direccin base
de entradaDsalida *por tener el modem en 4BC, por ejemplo, se "ara as. setserial
NdevNtt$8? port 0E2e@ irq 10 autocon#i+ lo cual "ace que el sistema operativo use un
ran+o de direcciones desde la 2e@, $ la interrupcin 10. )tese que el c0Ec antes de la
direccin base es importante.
5or ltimo slo queda ver que los cambios "an surtido e#ecto. 5ara ello bastar usar de
nuevo setserial de la primera #orma que se indic.
5or des+racia esta con#i+uracin durar "asta que apa+uemos el ordenador. 5or tanto
ser necesario incluir la lnea o lneas de con#i+uracin setserial /dev/ttyS2 irq
5... en uno de los scripts de arranque de /inuE para que los puertos se con#i+uren cada
vez que se inicie el sistema operativo. !n buen candidato es rc.local, que estar en
uno de los subdirectorios de /etc. 1n caso de ser necesario incluir en rc.local tanto el
isapnp /etc/isapnp.conf para con#i+urar un modem 5lu+cnc5la$, $ el setserial...
de los puertos serie, deber colocarse el isapnp... en primer lu+ar.
Tambi(n "abr que usar setserial de la misma #orma si el ordenador tuviera ms de
dos puertos serie, *contando los que traen los modems internos en caso de disponer de
al+uno,. 1l motivo es que por al+una eEtraa razn de diseo del 5, 4B1 $ 4B7
por de#ecto comparten la misma interrupcin, $ a pesar de que esa con#i+uracin no es
deseable, /inuE por de#ecto busca 4B7 en la misma interrupcin que 4B1, por lo
que "abra que cambiar la de 4B7. /o mismo ocurre con 4B2 $ 4B? por lo que
"abra que cambiar 4B?. 8i no se "iciera esto, podran ocurrir cosas mu$ raras, como
ratones $ modems que dejan de #uncionar, modems que #uncionan -a pedales- *cuando
se mueve el ratn,, etc...
"ttpKNNGGG."ispa#uentes.comN"#DdocN"#'.0N"#D+uiaDusuarioNE10?@2."tml
812I/I'"'I=# D1L SE%!& N *"2C-1T24S D1 4*12"'I=# D1
L" T"2J1T" -"D21
Se conoce por set%p la configuracin de los parmetros (variables de operacin) de algunos
elementos de la tarjeta madre por medio de los Servicios Bsicos de Entrada y Salida (BOS)
de la misma. Estos ajustes se realizan mediante el programa de SETUP, al que se accede
generalmente mediante la tecla <BORRAR> o <DELETE> durante el arranque.
En algunas computadoras se accede al SETUP mediante otra tecla (o combinacin de teclas),
lo que se informa al inicio del arranque. Este mensaje lo genera el programa de arranque
(BOOT) almacenado en la memoria ROM del BOS, generalmente en idioma ingls: /I%
7#E.8 %+ E"%E* SE%!& (o un texto similar). En casos excepcionales no aparece en la
pantalla durante el proceso de arranque, debindose consultar al Manual de Usuario o
probando las teclas ms usuales: <DELETE>, <ESC>, <F2> a veces combinada con <ALT> o
<CONTROL>.
Las tecnologas difieren notablemente segn la fecha de fabricacin de la tarjeta madre, y
aunque no existe tampoco uniformidad en los parmetros de operacin, analizaremos los ms
comunes y los conceptos bsicos de la configuracin, sin profundizar en detalles.
Tpicamente el SE%!& incluye las siguientes secciones:
S%$"#$*# ,M+S SE%!&: Aqu se ajusta la hora y fecha, los parmetros de las unidades DE
(discos duros o CD), unidades de disquete, y tipo de video. Se recomienda realizar la
autodeteccin de las unidades DE de modo que se almacenen sus parmetros especficos y
no dejar el ajuste AUTO, con la finalidad de agilizar el proceso de arranque. Algunas tarjetas
(obsoletas) no realizan la autodeteccin DE, otras lo realizan desde el men principal del
set%p, mientras las ms modernas lo incluyen dentro de esta seccin. Debe realizarse la
autodeteccin siempre que se cambie o agregue una unidad, comprobando su reconocimiento
por el BOS. Si alguna unidad no es reconocida, puede deberse a fallos de contacto en
cualquiera de los extremos de los conectores DE, o en la alimentacin, o en los *%-pes que
determinan la condicin de MASTER o ESCLAVO de las unidades DE.
BI+S 2E$%!*ES SE%!&. Diversos ajustes se realizan en esta seccin: la proteccin de
antivirus del BOS, el cach interno y externo, la secuencia de arranque, los ajustes del
teclado, la habilitacin de las distintas opciones de memoria-sombra (s(ado9) y algunas
secuencias variables del programa de arranque. No debe activarse la proteccin antivirus del
BOS ya que puede ocasionar conflictos con el programa antivirus que se instale. Debe
verificarse la activacin de los cachs internos y externos (siempre que la tarjeta cuente con
ste ltimo), y seleccionar una secuencia de arranque rpida y eficiente: si no se va a arrancar
habitualmente por disquete, NO debe dejarse la secuencia de arranque que comienza por A:,
para evitar un indeseado intento de arranque por un disquete que inadvertidamente quede en la
unidad, ocasionando un inesperado mensaje de ERROR EN DSCO. Las secciones de
memoria s(ado9 del BOS y de VDEO deben quedar activadas, ya que contribuyen a una
mayor velocidad de operacin. Si no se activan, las funciones se ejecutarn desde la memoria
ROM, que es ms lenta que la memora RAM de sombra.
,/I&SE% 2E$%!*ES SE%!&( Su contenido vara sustancialmente segn la tecnologa, e
incluye los intervalos de temporizacin electrnica. Se recomienda dejar activada su
configuracin automtica, o leer cuidadosamente el manual de la tarjeta si se desea optimizar
el ajuste manual de estos parmetros.
&+9E* M$"$EME"% SE%!&( Configura las diversas variantes del sistema de ahorro de
energa. Una computadora que permanezca conectada durante horas pero incluya continuos
periodos de inactividad, puede resultar beneficiosa la activacin del sistema de ahorro de
energa. Debe tenerse en cuenta que algunas desconexiones realizadas por este sistema
pueden ocasionar demoras en la rehabilitacin del servicio cuando se envan las seales
mediante el mouse, el teclado o el mdem. La configuracin que se adopte debe adecuarse al
rgimen de operacin.
&"&:&,I ,+"2I!*$%I+"( Configura la activacin de las seales de Plug and Play, y la
asignacin de recursos a los conectores PC de la tarjeta madre. Deben dejarse los ajustes
predeterminados, y modificarse solo en casos excepcionales de conflictos de recursos u otras
condiciones inusuales.
I"%E*$%E# &E*I&/E*$.S( Configuracin de los puertos DE, UDMA, PC, USB, y los
SERALES y PARALELOS. Si solamente se utiliza el canal DE PRMARO no debe dejarse
activado el funcionamiento del canal SECUNDARO, y la funcin UDMA debe activarse
nicamente si el disco duro est habilitado para esta tecnologa. En esta seccin es frecuente
ajustar la variante del puerto paralelo (SPP, ECP o EPP) que debe responder a los
requerimientos de la impresora que se instale.
.+$# BI+S #E2$!.%S( Realiza un conjunto de ajustes que corresponden a la configuracin
de requerimientos mnimos, y es la ms segura. Pero debe adoptarse nicamente si la mquina
no arranca o falla con el ajuste de requerimientos mximos, puesto que baja su velocidad y
degrada su operacin.
.+$# SE%!& #E2$!.%S ;o M$6IM!M &E*2+*M$",E<( Realiza un conjunto de ajustes
que corresponden a la configuracin de requerimientos mximos y es ms rpida. Debe
adoptarse siempre que no existan fallos en el arranque y el funcionamiento se estabilice.
!SE* &$SS9+*#( Permite la modificacin de la clave de acceso al arranque o al programa
SETUP4 En caso que la clave quede activada y se olvide, la tarjeta madre dispone de un
*%-pe que permite la descarga de la memoria CMOS con lo que se borran todos los ajustes
incluyendo la clave de acceso.
Autodetecta la presencia y parmetros de las unidades DE (disco duro y CD). En algunos
casos esta funcin est incorporada dentro de la seccin de STANDARD "MOS DEFAULT4
Generalmente hay dos formas de salir del SETUP:
S$0E = E6I% SE%!& > O sea, salvar en la memoria CMOS los cambios realizados, y salir.
E6I% 9I%/+!% S$0I"> Salir sin salvar, manteniendo la configuracin anterior.
Generalmente ambas opciones estn disponibles en el men principal del SETUP, y la segunda
puede alcanzarse pulsando repetidamente la tecla <DELETE> (<BORRAR>). En cualquiera de
las dos formas se presenta un dilogo que solicita la validacin de la forma de salida.
Una deficiente configuracin del SETUP puede ocasionar fallos en el arranque o un
funcionamiento inestable o errtico, si la configuracin excede a las posibilidades de los
componentes o por el contrario un funcionamiento degradado (lento) si no se aprovechan sus
potencialidades, por lo que deben seguirse las indicaciones del manual de la tarjeta madre
escogiendo las opciones que garanticen un funcionamiento estable con la mxima velocidad
alcanzable y que se ajuste al rgimen de funcionamiento previsto.
"ttpKNNmssimpleE.comNmantenimientoNsetup."tm
;.3 Uso de instrucciones para mane!o de puertos
ANETOS<
!structura general de un programa
)ormalmente el pro+rama consta de dos partes principalesK
declaraciones
instrucciones
/a parte de declaraciones de#ine las variables a usarse en las instrucciones. /as
instrucciones describen el al+oritmo con el que se quiere solucionar el problema
planteado.
Ientro del pro+rama se pueden intercalar zonas de comentarios que pueden servir para
aclarar $ documentar el cdi+o pro+ramado. omo notacin para identi#icar
comentarios, estos se encerrarn de la si+uiente #ormaK
<F comentario F<

)nstruccin de Csignacin
1Eiste una instruccin bsica que se denomina asi+nacin. /a asi+nacin permite
modi#icar el valor de una variable declarada. /a asi+nacin est de#inida para cada uno
de los tipos de datos elementales vistos. /a sintaEis de una asi+nacin es la si+uienteK
nombre4variable 26 e8presin 5
1n la parte izquierda de la asi+nacin se pone el nombre de la variable que se quiere
modi#icar. /a parte derec"a contiene una eEpresin que le dar el nuevo valor a la
variable, $ por lo tanto debe tener el mismo tipo que la variable. /a eEpresin puede serK

un valor literal. 1j.
float precio;
precio 26 154>.1;
el valor de otra variable. 1j.
float precio, precio21enta;
precio 26 154>.1;
precio21enta 26 precio;
una serie de operaciones entre variables $ literales que dan como resultado el
valor a asi+nar. 1j.
float precio21enta, precio2costo, descuento;
precio21enta 26 precio2costo + 1>.> ' descuento;
!ntrada 0 Dalida
1n muc"as situaciones es conveniente que los valores a asi+nar a una variable se
obten+an del usuario por medio de dispositivos peri#(ricos de entrada como el teclado.
Adems, a veces resulta tambi(n conveniente mostrar ciertos resultados al usuario por
medio de dispositivos peri#(ricos de salida como la pantalla.
8e dispone de las si+uientes pseudoDinstrucciones de entradaNsalida de datos, tambi(n
denominadas de >N4 o inputNoutputK
lee- *nombrePvariable, equivalente a nombrePvariable KS lee-
mos$-a- *nombrePvariable,
5or simplicidad de notacin, estas instrucciones #uncionan con cualquiera de los tipos
elementales de#inidos.
/a instruccin leer +uarda en la variable nombrePvariable el valor que el usuario
introduce por teclado. 5or ej.
c-ar letra;
leer (letra*;
o
letra 9$ leer ;

espera que el usuario introduzca cualquier letra del teclado $ le asi+na este valor a la
variable letra.
/a instruccin mostrar visualiza en la pantalla el valor de la variable nombrePvariable.
int total;
total 9$ 1>>;
mostrar (total*;
muestra en la pantalla el valor de la variable total, en este ejemplo el nmero 100.
8e considera adems que tambi(n es posible usar la instruccin mostrar de las si+uientes
manerasK
mostrar (G !sta es una frase a mostrar en pantallaG*;
mostrar (G !l 1alor de la 1ariable total es9 G , total*;
1n el primer caso se muestra la #rase encerrada entre comillas, $ en el se+undo caso,
adems de mostrarse la #rase encerrada entre comillas se muestra a continuacin el valor
de la variable cu$o nombre est lue+o de la coma separadora.
3ontrol de )nstrucciones
5ara "acer un pro+rama se necesita contar con mecanismos que permitan a+rupar
instrucciones $ controlar el orden de ejecucin de las mismas. 1Eisten tres mecanismos
o estructuras de controlK
omposicin secuencial
omposicin condicional
omposicin iterativa o repetitiva
3omposicin Decuencial
!n pro+rama puede contener simplemente una secuencia de instrucciones. /as
instrucciones de una secuencia se ejecutan una despu(s de la otra.
comienBo
secuencia de instrucciones
fin5
E.em*lo< encontrar la solucin de una ecuacin de primer +rado a E R b S 0. /os datos
a $ b se leen de teclado, se calcula el valor de E resultante, $ se muestra el resultado por
pantalla.
:+ declaraciones +:
float a, b, 8;
:+instrucciones+:
comienBo
leer (a*;
leer (b*;
8 9$ ' b : a;
mostrar (G!l 1alor de 8 es9 G, 8*;
fin5
3omposicin 3ondicional
Al resolver un problema, a veces s debe proceder de una manera $ a veces de otra
dependiendo de al+una determinada condicin.
I"s$-!cci7" si,sino
/a composicin condicional permite ejecutar una secuencia de instrucciones si una
condicin dada es verdadera, $ en caso contrario ejecutar otra secuencia de
instrucciones alternativas.
0i condicin entonces
comienBo
secuencia1 de instrucciones
fin si5
sino
comienBo
secuencia2 de instrucciones
fin sino5
E.em*lo< encontrar el valor absoluto de un nmero. 1l nmero se introduce por teclado,
se calcula el valor absoluto $ se muestra por pantalla.
:+ declaraciones +:
float numero, 1alor2absoluto;
:+instrucciones+:
comien<o
leer (numero*;
Di numero H$ > entonces
comien<o
1alor2absoluto 9$ numero;
fin si;
sino
comien<o
1alor2absoluto 9$ ' numero;
fin sino;
mostrar (G!l 1alor absoluto es9 G, 1alor2absoluto*;
fin;
uando no se quiera realizar nin+una accin en caso de que la condicin no es
verdadera, simplemente se i+nora la parte del -sino-.
Feneralizando, la instruccin -siDsino- puede contar con ) alternativas o condiciones a
evaluar. /as condiciones se evalan en el orden de aparicin, $ cuando se localiza la
primera condicin verdadera se ejecuta la serie de instrucciones correspondientes a esa
alternativa.
0i condicin1 entonces
comienBo
secuencia1 de instrucciones
fin si5
sino si condicin2 entonces
comienBo
secuencia2 de instrucciones
fin sino si5
sino si condicin4 entonces
comienBo
secuencia4 de instrucciones
fin sino si5
. . .
sino si condicin/ entonces
comienBo
secuencia/ de instrucciones
fin sino si5
sino
comienBo
secuencia/&1 de instrucciones
fin sino5
Caso es*ecial &e co"&icio"al< i"s$-!cci7" en caso
1Eiste una variante de la instruccin condicional que puede usarse en lu+ar de la
instruccin -siDsino- cuando se deban realizar distintas secuencias de instrucciones
dependiendo del valor de una eEpresin.
en caso e8presin sea
1alor19 comienBo
secuencia1 de instrucciones;
fin5
1alor29 comienBo
secuencia2 de instrucciones;
fin5
. . .
1alor/9 comienBo
secuencia/ de instrucciones;
fin5
sino2 comienBo
secuencia/&1 de instrucciones;
fin5
fin en caso5
E.em*lo< el usuario introduce una letra en el teclado, $ si la misma es una vocal el
pro+rama debe mostrar el nombre de un animal que comience con dic"a vocal.
:+ declaraciones +:
char letra;
:+instrucciones+:
comien<o
leer (letra*;
en caso de Iue letra sea
FaF9 mostrar(GabejaG*;
FeF9 mostrar(GelefanteG*;
FiF9 mostrar(GiguanaG*;
FoF9 mostrar(GosoG*;
FuF9 mostrar(Gun perroG*;
sino9 mostrar(G(a letra no es 1ocalG*;
fin en caso;
mostrar (G!l 1alor absoluto es9 G, 1alor2absoluto*;
fin;

. 3omposicin )terati1a o Jepetiti1a
!na composicin iterativa permite ejecutar repetidamente una secuencia de
instrucciones mientras se cumpla una condicin.
I"s$-!cci7" mientras
mientras condicin repetir
comienBo
secuencia de instrucciones
fin mientras5
8e comprueba la condicin $ si es verdadera se ejecuta la secuencia de instrucciones.
uando se termina de ejecutar la secuencia se vuelve otra vez a evaluar la condicin $ si
(sta se si+ue cumpliendo se vuelve a ejecutar la secuencia nuevamente. 1ste proceso se
repite "asta que l condicin es #alsa, en cu$o caso se contina ejecutando la si+uiente
instruccin a la instruccin -mientras-.
E.em*lo< construir un pro+rama que sume todos los nmeros que introduce el usuario
"asta que introduzca el nmero cero.

:+ declaraciones +:
float numero, suma2acumulada;
:+instrucciones+:
comien<o
:+ iniciali<acin +:
suma2acumulada 9$ >;
leer (numero*;
mientras numero H > repetir
comien<o
suma2acumulada 9$ suma2acumulada & numero;
leer (numero*;
fin mientras;
mostrar (G(a suma acumulada es9 G, suma2acumulada*;
fin;
Caso es*ecial &e i"$e-aci7"< i"s$-!cci7" para
1Eiste una variante de la instruccin iterativa en el caso de que se quiera repetir una
secuencia un nmero de veces dado.
para nombre21ariable desde 1alor2inicial -asta 1alor2final inc incremento
comienBo
secuencia de instrucciones
fin para5
>nicialmente la variable nombrePvariable se inicializa con el valorPinicial que si+ue a
desde. ada vez que se ejecuta la secuencia de instrucciones el valor de esta variable se
incrementa con el valor incremento que si+ue al inc. uando la variable tiene un valor
superior al valorP#inal que si+ue a "asta el ciclo deja de repetirse. 1n total se realizan
valorP#inal D valorPinicial R 1 iteraciones.
E.em*lo< modi#icamos el ejemplo anterior de manera que el usuario indica primero la
cantidad de nmeros que quiere sumar.

:+ declaraciones +:
int cantidad, contador;
float numero, suma2acumulada;
:+instrucciones+:
comien<o
:+ iniciali<acin +:
suma2acumulada 9$ >;
leer (cantidad*;
para contador desde 1 hasta cantidad inc 1
comien<o
leer (numero*;
suma2acumulada 9$ suma2acumulada & numero;
fin para;
mostrar (G(a suma acumulada es9 G, suma2acumulada*;
fin;

"ttpKNNdmi.uib.esNnabasoloN#onin#N2002D2007NcapitulosN2Dcomponentes."tml