Sei sulla pagina 1di 86

Tutorial de Lgica Computacional y Programacin M.S.C.

Alejandro Crdenas Ne
TUTORIAL DE LGICA COMPUTACIONAL Y PROGRAMACIN.
UNIDAD I. LGICA COMPUTACIONAL.
1. Conceptos generales.
Lenguaes !e progra"ac#$n! Permiten escri"ir programas. Algunos son comprensi"les de #orma directa
por la computadora. $tros re%uieren pasos intermedios de traduccin para ser comprendidos por la
computadora.
Clas#%#cac#$n!
Lenguaje de m%uina
Lenguaje de "ajo ni&el o ensam"lador
Lenguaje de alto ni&el
Lenguae M&'u#na.
Lenguaje "sico' propio de cada computadora' ya %ue est relacionado con el diseo del hardware de la
misma (dependiente de la m%uina). Por lo general consisten en cadenas de nmeros al #inal reducidos
ceros y unos (sistema num*rico "inario).
Lenguae Ensa"(la!or.
Son ms #ciles de utiliar %ue los lenguajes m%uina' pero al igual %ue ellos' dependen de la m%uina en
particular. +l lenguaje de "ajo ni&el por e,celencia es el ensamblador. Las instrucciones en lenguaje
ensam"lador son instrucciones conocidas como nemotcnicos. Por ejemplo' nemot*cnicos t-picos de
operaciones aritm*ticas son! en ingl*s! A..' S/0' .12' etc.3 en espaol! S/M' 4+S' .12' etc.
/na instruccin t-pica de suma ser-a!
A.. M' N' P
+sta instruccin signi#ica 5sumar el contenido en la posicin de memoria M al nmero almacenado
en la posicin de memoria N y situar el resultado en la posicin de memoria P6. +&identemente es ms
sencillo recordar la instruccin anterior con un nemot*cnico %ue su e%ui&alente en cdigo m%uina.
7887 8778 8787 8788
/n programa escrito en lenguaje ensam"lador' re%uiere de una #ase de traduccin al lenguaje
m%uina para poder ser ejecutado directamente por la computadora.
+l programa original escrito en lenguaje ensam"lador se denomina programa fuente y el programa
traducido en lenguaje m%uina se conoce como programa objeto' el cual ya es directamente entendi"le
por la computadora.
8
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Consiste en a"re&iaturas similares al ingl*s' llamadas instrucciones mnemotcnicas' %ue permiten
representar las operaciones elementales de la computadora (dependiente de la m%uina).
Lenguae !e Alto N#)el.
+stos lenguajes son los ms utiliados por los programadores. +stn diseados para %ue las personas
escri"an y entiendan los programas de un modo muc9o ms #cil %ue los lenguajes m%uina y
ensam"ladores. /n programa escrito en lenguaje de alto ni&el es independiente de la m%uina (las
instrucciones no dependen del diseo del 9ard:are o de una computadora en particular)' por lo %ue estos
programas son portables o transportables. Los programas escritos en lenguaje de alto ni&el pueden ser
ejecutados con poca o ninguna modi#icacin en di#erentes tipos de computadoras
Permite a los programadores escri"ir instrucciones en un lenguaje ms #amiliar para ellos y %ue contiene
notaciones matemticas comnmente utiliadas (independiente de la m%uina).
Ee"plos !e lenguaes !e alto n#)el por or!en !e apar#c#$n*
; <$4T4AN ; C
; AL=$L ; Tur"o C
; C$0$L ; Tur"o 0asic
; 0AS1C ; Tur"o Pascal
; PL>1 ; C??
; P4$L$= ; 2isual C' C??' etc.
; L1SP ; @a&a
; SMALLTALA
; PASCAL
; A.A
1.1 D#agra"a !e Entra!a+Proceso+,al#!a -E+P+,..
Tarjeta
I/O Genrico
Proceso
Impresora
Teclado
INICIO
FIN
Archivo de Pantalla
Archivo de
datos
Fig. 1.- Diagrama de entrada-proceso-salida
B
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
1./ Algor#t"os.
Algor#t"o! es un m*todo para resol&er un pro"lema mediante una serie de pasos de#inidos' precisos y
#initos.
/n algoritmo de"e ser prec#so e indicar el orden de realiacin de cada paso.
/n algoritmo de"e ser !eter"#n#st#co. Si se sigue un algoritmo dos &eces' se de"e o"tener el mismo
resultado cada &e.
/n algoritmo de"e ser %#n#to. Si se sigue un algoritmo' se de"e terminar en algn momento3 o sea' de"e
tener un nmero #inito de pasos.
Algor#t"os Cot#!#anos.
Se re#iere a todos a%u*llos algoritmos %ue nos ayudan a resol&er pro"lemas diarios' y %ue los
9acemos casi sin darnos cuenta de %ue estamos siguiendo una metodolog-a para resol&erlos.
Algunos ee"plos son*
.isear un algoritmo para cam"iar una llanta a un coc9e.
8. 1nicio.
B. Traer gato.
C. Le&antar el coc9e con el gato.
D. A#lojar tornillos de las llantas.
E. Sacar los tornillos de las llantas.
F. Guitar la llanta.
H. Poner la llanta de repuesto.
I. Poner los tornillos.
J. Apretar los tornillos.
87. 0ajar el gato.
88. <in
1.0 Meto!olog1as para la construcc#$n !e progra"as.
Progra"ac#$n l#neal.
Progra"ac#$n estructura!a.
Progra"ac#$n or#enta!a a o(etos.
C
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
/. Progra"ac#$n l#neal.
/.1 De%#n#c#$n.
La programacin lineal permite escri"ir algoritmos de una #orma secuencial' es decir' cada instruccin
ejecuta 9asta %ue la anterior se 9aya realiado' no o"staante' podemos re#erenciar a una l-nea desde
nusestra secuencia %ue no sea la siguiente' de tal #orma %ue al terminar una secuencia de instrucciones
podemos re#erenciar a la l-nea %ue continua"a en nuestra ejecucin.
/./ D#agra"as !e %luo.
/n .iagrama de <lujo representa la es%uematiacin gr#ica de un algoritmo ' el cual muestra
gr#icamente los pasos o procesos a seguir para alcanar la solucin de un pro"lema . Su correcta
construccin es sumamente importante por%ue' a partir del mismo se escri"e un programa en algn
Lenguaje de Programacin. Si el .iagrama de <lujo est completo y correcto' el paso del mismo a un
Lenguaje de Programacin es relati&amente simple y directo.
Los !#agra"as !e %luo representan la #orma ms tradicional para especi#icar los detalles algor-tmicos de
un proceso. Se utilian principalmente en programacin' econom-a y procesos industriales3 estos
diagramas utilian una serie de s-m"olos con signi#icados especiales. Son la representacin gr#ica de los
pasos de un proceso' %ue se realia para entender mejor al mismo. Son modelos tecnolgicos utiliados
para comprender los rudimentos de la programacin lineal.
,#"(olog1a.
No es indispensa"le usar un tipo especial de s-m"olos para crear un diagrama de #lujo' pero e,isten
algunos ampliamente utiliados por lo %ue es adecuado conocerlos y utiliarlos' ampliando as- las
posi"ilidades de crear un diagrama ms claro y comprensi"le para crear un proceso lgico y con opciones
mltiples adecuadas.
2lec3a. 1ndica el sentido y trayectoria del proceso de in#ormacin o tarea.
Rect&ngulo. Se usa para representar un e&ento o proceso determinado. Kste es controlado dentro del
diagrama de #lujo en %ue se encuentra. +s el s-m"olo ms comnmente utiliado.
4ectngulo redondeado. Se usa para representar un e&ento %ue ocurre de #orma automtica y del cul
generalmente se sigue una secuencia determinada.
Ro"(o. Se utilia para representar una condicin. Normalmente el #lujo de in#ormacin entra por arri"a y
sale por un lado si la condicin se cumple o sale por el lado opuesto si la condicin no se cumple. Lo
anterior 9ace %ue a partir de *ste el proceso tenga dos caminos posi"les.
C1rculo. 4epresenta un punto de cone,in entre procesos. Se utilia cuando es necesario di&idir un
diagrama de #lujo en &arias partes' por ejemplo por raones de espacio o simplicidad. /na re#erencia de"e
de darse dentro para distinguirlo de otros. La mayor-a de las &eces se utilian nmeros en los mismos.
+,isten adems una &ariedad de #ormas especiales para denotar las entradas' las salidas' los
almacenamientos' etc*tera.
D
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Tabla 1. Smbolos Estndar para Diagramas de Flujo
Nombre Smbolo Funcin
Terminal
4epresenta el inicio y #in de un programa.
Tam"i*n puede representar una parada o
interrupcin programada %ue sea necesaria
realiar en un programa.
Entrada/Salida
Cual%uier tipo de introduccin de datos en
la memoria desde los peri#*ricos o registro
de in#ormacin procesada en un peri#*rico.
Proceso
Cual%uier tipo de operacin %ue pueda
originar cam"io de &alor' #ormato o
posicin de la in#ormacin almacenada en
memoria' operaciones aritm*ticas' de
trans#ormaciones' etc.
Decisin
1ndica operaciones lgicas o de
comparacin entre datos (normalmente
dos) y en #uncin del resultado de la
misma determina (normalmente si y no)
cual de los distintos caminos alternati&os
del programa se de"e seguir.
Conector Misma
Pgina
Sir&e para enlaar dos partes cuales%uiera
de un diagrama a tra&*s de un conector en
la salida y otro conector en la entrada. Se
re#iere a la cone,in en la misma pagina
del diagrama
indicador de
direccin o lnea
de flujo
1ndica el sentido de la ejecucin de las
operaciones
Conector
diferente pgina
Cone,in entre dos puntos del
organigrama situado en pginas di#erentes.
Impresora
Se utilia en ocasiones en lugar del
s-m"olo de salida. +l di"ujo representa un
pedao de 9oja.
Entrada
Se utilia en ocasiones en lugar del
s-m"olo de entrada. $riginalmente
representa una tarjeta per#orada.
E
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Teclado
Se utilia en ocasiones en lugar del
s-m"olo de entrada.
Pantalla
Se utilia en ocasiones en lugar del
s-m"olo de salida.
/n diagrama de #lujo es una representacin gr#ica de los pasos %ue seguimos para realiar un proceso3
partiendo de una entrada' y despu*s de realiar una serie de acciones' llegamos a una salida.
Cada paso se apoya en el anterior y sir&e de sustento al siguiente!
F
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne

H
.iagrama de #lujo %ue
encuentra el #actorial de un
nmero
.iagrama de #lujo %ue
encuentra la suma de los
primeros E7 numeros
naturales
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Reglas !e construcc#$n.
.e acuerdo al estndar 1S$' los s-m"olos e incluso las #lec9as de"en de tener ciertas caracter-sticas para
estar dentro del estndar. +n el caso de los c-rculos de cone,in se de"e usar slo cuando se conecta con
un proceso contenido dentro de la misma 9oja.
Tam"i*n e,isten conectores de pgina' %ue son como una casita y se utilian para unir acti&idades %ue se
encuentran en otra 9oja.
+,iste siempre un camino %ue permite llegar a una solucin
+,iste un nico inicio del proceso
+,iste un nico punto de #in para el proceso de #lujo' sal&o del rom"o %ue indica una comparacin
con dos caminos posi"les y ademas una gran ayuda
+&ite sumideros in#initos' "ur"ujas %ue tienen entradas pero no salidas.
+&ite las "ur"ujas de generacin espontnea' %ue tienen salidas sin tener entradas' por%ue son
sumamente sospec9osas y generalmente incorrectas.
Tenga cuidado con los #lujos y procesos no eti%uetados. +sto suele ser un indicio de #alta de
esmero' pero puede esconder un error an ms gra&e! a &eces el analista no eti%ueta un #lujo o un
proceso por%ue simplemente no se le ocurre algn nom"re raona"le.
Los .iagramas de #lujo de"en escri"irse de arri"a 9acia a"ajo' y>o de i%uierda a derec9a.
Los s-m"olos se unen con l-neas' las cuales tienen en la punta una #lec9a %ue indica la direccin
%ue #luye la in#ormacin procesos' se de"en de utiliar solamente l-neas de #lujo 9oriontal o
&erticales (nunca diagonales).
Se de"e e&itar el cruce de l-neas' para lo cual se %uisiera separar el #lujo del diagrama a un sitio
distinto' se pudiera realiar utiliando los conectores. Se de"e tener en cuenta %ue solo se &ana
utiliar conectores cuando sea estrictamente necesario.
No de"en %uedar l-neas de #lujo sin conectar
Todo te,to escrito dentro de un s-m"olo de"e ser legi"le' preciso' e&itando el uso de muc9as
pala"ras.
Todos los s-m"olos pueden tener ms de una l-nea de entrada' a e,cepcin del s-m"olo #inal.
Solo los s-m"olos de decisin pueden y de"en tener ms de una l-nea de #lujo de salida.
/.0 Prue(a !e escr#tor#o
0. Progra"ac#$n estructura!a.
+l creciente empleo de los computadores 9a conducido a "uscar un a"aratamiento del desarrollo de
so#t:are' paralelo a la reduccin del costo del 9ard:are o"tenido gracias a los a&ances tecnolgicos. Los
altos costos del mantenimiento de las aplicaciones en produccin normal tam"i*n 9an urgido la necesidad
de mejorar la producti&idad del personal de programacin.
.+<1N1C1$N+S
I
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
La programacin estructurada (en adelante simplemente P+ )' es un estilo de programacin con el cual el
programador ela"ora programas' cuya estructura es la ms clara posi"le' mediante el uso de tres
estructuras "sicas de control lgico' a sa"er !
a. S+C/+NC1A.
". S+L+CC1LN.
c. 1T+4AC1LN.
/n programa estructurado se compone de #unciones' segmentos' mdulos y>o su"rutinas' cada una con
una sola entrada y una sola salida. Cada uno de estos mdulos (an en el mismo programa completo)' se
denomina programa apropiado cuando' adems de estar compuesto slamente por las tres estructuras
"sicas' tiene slo una entrada y una salida y en ejecucin no tiene partes por las cuales nunca pasa ni
tiene ciclos in#initos.
La P+ tiene un teorema estructural o teorema #undamental' el cual a#irma %ue cual%uier programa' no
importa el tipo de tra"ajo %ue ejecute' puede ser ela"orado utiliando nicamente las tres estructuras
"sicas (secuencia' seleccin' iteracin).
.+<1N1C1LN .+ LAS +ST4/CT/4AS 0MS1CAS .+ C$NT4$L LL=1C$
8.; S+C/+NC1A
1ndica %ue las instrucciones de un programa se ejecutan una despu*s de la otra' en el mismo orden en el
cual aparecen en el programa. Se representa gr#icamente como una caja despu*s de otra' am"as con una
sola entrada y una nica salida.
Las cajas A y 0 pueden ser de#inidas para ejecutar desde una simple instruccin 9asta un mdulo o
programa completo' siempre y cuando %ue estos tam"i*n sean programas apropiados.
B.; S+L+CC1LN
Tam"i*n conocida como la estructura S1;C1+4T$;<ALS$' plantea la seleccin entre dos alternati&as con
"ase en el resultado de la e&aluacin de una condicin o predicado3 e%ui&ale a la instruccin 1< de todos
los lenguajes de programacin y se representa gr#icamente de la siguiente manera!
J
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
+n el diagrama de #lujo anterior' C es una condicin %ue se e&ala3 A es la accin %ue se ejecuta cuando la
e&aluacin de este predicado resulta &erdadera y 0 es la accin ejecutada cuando indica #also. La
estructura tam"i*n tiene una sola entrada y una sola salida3 y las #unciones A y 0 tam"i*n pueden ser
cual%uier estructura "sica o conjunto de estructuras.
C.; 1T+4AC1LN
Tam"i*n llamada la estructura NAC+4;M1+NT4AS;G/+' corresponde a la ejecucin repetida de una
instruccin mientras %ue se cumple una determinada condicin. +l diagrama de #lujo para esta estructura
es el siguiente!
A%u- el "lo%ue A se ejecuta repetidamente mientras %ue la condicin C se cumpla o sea cierta. Tam"i*n
tiene una sola entrada y una sola salida3 igualmente A puede ser cual%uier estructura "sica o conjunto de
estructuras.
2+NTA@AS .+ LA P4$=4AMAC1LN +ST4/CT/4A.A
Con la P+' ela"orar programas de computador sigue siendo una la"or %ue demanda es#uero' creati&idad'
9a"ilidad y cuidado. Sin em"argo' con este nue&o estilo podemos o"tener las siguientes &entajas!
8. Los programas son ms #ciles de entender. /n programa estructurado puede ser le-do en
secuencia' de arri"a 9acia a"ajo' sin necesidad de estar saltando de un sitio a otro en la lgica' lo
cual es t-pico de otros estilos de programacin. La estructura del programa es ms clara puesto %ue
las instrucciones estn ms ligadas o relacionadas entre si' por lo %ue es ms #cil comprender lo
%ue 9ace cada #uncin.
B. 4educcin del es#uero en las prue"as. +l programa se puede tener listo para produccin normal
en un tiempo menor del tradicional3 por otro lado' el seguimiento de las #allas o depuracin
87
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
(de"ugging) se #acilita de"ido a la lgica ms &isi"le' de tal #orma %ue los errores se pueden
detectar y corregir ms #cilmente.
C. 4educcin de los costos de mantenimiento.
D. Programas ms sencillos y ms rpidos.
E. Aumento en la producti&idad del programador.
F. Se #acilita la utiliacin de las otras t*cnicas para el mejoramiento de la producti&idad en
programacin.
H. Los programas %uedan mejor documentados internamente.
0.1 T4cn#ca Top+Do5n.
T4cn#ca para !#se6ar 'ue cons#ste en to"ar el pro(le"a en %or"a.
1nicial como una cuestin glo"al y descomponerlo sucesi&amente en pro"lemas ms pe%ueos y por lo
tanto' de solucin ms sencilla.
La descomposicin del pro"lema original (y de las etapas su"secuentes)' puede detenerse cuando los
pro"lemas resultantes alcanan un ni&el de detalle %ue el programador o analista pueden implementar
#cilmente.
Objetivos bsicos del Top-Down
Simpli#icacin del pro"lema y de los su"programas de cada descomposicin.
Las di#erentes partes del pro"lema pueden ser programadas de modo independiente e incluso por
di#erentes personas.
+l programa #inal %ueda estructurado en #orma de "lo%ue o mdulos lo %ue 9ace ms sencilla su
lectura y mantenimiento.
+jemplo de un diseo descendente (top;do:n ) de un control de almac*n !
88
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
M$!ulo.
T#pos !e "$!ulo.
Proceso !e "o!ular#7ac#$n.
89u4 es progra"ac#$n "o!ular:
/no de los m*todos ms conocidos para resol&er un pro"lema es di&idirlo en pro"lemas ms pe%ueos'
llamados su"pro"lemas. .e esta manera' en lugar de resol&er una tarea compleja y tediosa' resol&emos
otras ms sencillas y a partir de ellas llegamos a la solucin. +sta t*cnica se usa muc9o en programacin
ya %ue programar no es ms %ue resol&er pro"lemas' y se le suele llamar diseo descendente' metodolog-a
del divide y vencers o programacin top-down.
+s e&idente %ue si esta metodolog-a nos lle&a a tratar con su(pro(le"as' entonces tam"i*n tengamos la
necesidad de poder crear y tra"ajar con su(progra"as para resol&erlos. A estos su"programas se les
suele llamar "$!ulos' de a9- &iene el nom"re de programacin modular. +n Pascal disponemos de dos
tipos de mdulos! los procedimientos y las #unciones.
D#agra"a !e &r(ol.
/n diagrama de r"ol es una representacin gr#ica de un e,perimento %ue consta de r pasos' donde cada
uno de los pasos tiene un nmero #inito de maneras de ser lle&ado a ca"o.

+jemplos!
8. /n m*dico general clasi#ica a sus pacientes de acuerdo a! su se,o (masculino o #emenino)' tipo de
sangre (A' 0' A0 u $) y en cuanto a la presin sangu-nea (Normal' Alta o 0aja). Mediante un diagrama
de r"ol diga en cuantas clasi#icaciones pueden estar los pacientes de este m*dico.

N
8B
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Solucin! A
A 0
N
0 A
0
M A0 N
A
$ 0

A
N
< 0 A
0
A0
0
$ A
0


Si contamos todas las ramas terminales' nos damos cuenta %ue el nmero de clasi#icaciones son B , D
, C O BD mismas %ue podemos enumerar3
MAN' MAA' MA0' M0N' M0A' M00' etc' etc.

0./ Estructuras l$g#cas.
,ecuenc#ales.
+s a%u*lla en la %ue una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal
modo %ue la salida de una es la entrada de la siguiente y as- suscesi&amente 9asta el #in del proceso. La
estructura secuencial tiene una entrada y una salida. Su representacin gr#ica es la siguiente!
+ST4/CT/4A S+C/+NC1AL

8C
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
PS+/.$C$.1=$ .+ /NA +ST4/CT/4A S+C/+NC1AL
1nicio
!
!
acciones
!
!
#in
Ee"plo*
Calcular el salario neto de un tra"ajador en #uncin del nmero de 9oras tra"ajadas' precio de la 9ora
de tra"ajo y considerando unos descuentos #ijos al sueldo "ruto en concepto de impuestos (B7 por 877).
Pseu!oc$!#go
1nicio
Pclculo salario netoQ
leer nom"re' 9oras' precioR9ora
salarioR"ruto 9oras S precio
impuestos 7.B7 S salarioR"ruto
salarioRneto salarioR"rutoRimpuestos
escr#(#r nom"re' salarioR"ruto' salarioRnetoR"ruto' salarioRneto
<in
.iagrama de #lujo
8D
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne

Con!#c#onales.
La especi#icacin #ormal de algoritmos tiene realmente utilidad cuando el algoritmo re%uiere una
descripcin ms complicada %ue una lista sencilla de instrucciones. +ste es el caso cuando e,isten un
nmero de posi"les alternati&as resultantes de la e&aluacin de una determinada condicin.
Las estructuras selecti&as se utilian para tomar decisiones lgicas3 de a9- %ue se suelan denominar
tam"i*n estructuras de decisin o alternativas.
+n las estructuras selecti&as se e&ala una condicin y en #uncin del resultado la misma se realia
una opcin u otra. Las condiciones se especi#-can usando e,presiones lgicas. La representacin de una
estructura selecti&a se 9ace con pala"ras en pseudocdigo (i#' t9en' else o "ien en espaol si' entonces'
sino)' con una #igura geom*trica en #orma de rom"a o "ien con un tringulo en el interior de una caja
rectangular.

Las estructuras selecti&as o alternati&as pueden ser!
Simples
8E
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Mltiples
Alternat#)a ,#"ple -s#+entonces;#%+t3en.
La estructura alternati&a simple s#+entonces (en ingl*s #%+t3en o "ien I2+T<EN ) ejecuta una
determinada accin cuando se cumple una determinada condicin. La seleccin s#+entonces e&ala la
condicin y . . .
Si la condicin es verdadera, entonces ejecuta la accin S8 (o acciones caso de ser S8 una
accin compuesta y constar de &arias acciones).

Si la condicin es falsa' entonces no 9acer nada.

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


Pseu!oc$!#go en espa6ol
Si TcondicinU +ntonces
Taccin S8U
<inRsi
Pseu!oc$!#go en #ngl4s
1# TcondicinU t9en
Taccin S8U
endRi#

8F
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Alternativas !ltiples "seg!n#sea, caso de $ case%
Cuando e,isten ms de dos elecciones (alternati&as) posi"les' es cuando se presenta el caso de
alternati&as mltiples. Si el nmero de alternati&as es grande puede plantear serios pro"lemas de escritura
del algoritmo y naturalmente de legi"ilidad.
La estrucura de decisin mltiple e&aluar una e,presin %ue podr tomar n &alores distintos
8'B'C'D'..n . Segn %ue elija uno de estos &alores en la condicin' se realiara una de las n acciones' o lo
%ue es igual' el #lujo del algoritmo seguir un determinado camino entre los n posi"les.

La representacin gr#ica se muestra a continuacin!

D#agra"a !e 2luo

Pseu!oc$!#go
+n ingl*s la estructura de decisin mltiple se representa
Case e,presin o%
Ve8W! accin S8
VeBW! accin SB
!
VenW! accin Sn
else
accin S,

en!=case
8H
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Ee"plo*
Se desea disear un algoritmo %ue escri"a los nom"res de los d-as de la semana en #uncin del &alor
de una &aria"le .1A introducida por teclado.
Los d-as de la semana son H3 por consiguiente' el rango de &alores de .1A ser 8..H' y caso de %ue
.1A tome un &alor #uera de este rango se de"er producir un mensaje de error ad&irtiendo la situacin
anmala.

In#c#o
Leer .1A
SegnRsea .1A 9acer
8! escri"ir(XLunesX)
B! escri"ir(XMartesX)
C! escri"ir(XMi*rcolesX)
D! escri"ir(X@ue&esX)
E! escri"ir(X2iernesX)
F! escri"ir(XSa"adoX)
H! escri"ir(X.omingoX)
else
escri"ir(X+rrorX)
#inRsegn
%#n
8I
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Repet#t#)as.
Estructura M#entras -53#le.
La estructura repetiti&a :9ile' es a%u*lla en %ue el cuerpo del "ucle se repite mientras se cumple una
determinada condicin' su representacin gr#ica es!

Pseu!oc$!#go en espa6ol Pseu!oc$!#go en #ngl4s
M#entras condicin 3acer 53#le condicin !o
Accin S8 TAccionesU
Accin SB !
! En!=53#le
accin Sn
2#n="#entras
Ee"plo*
Contar los nmeros enteros positi&os introducidos por teclado. Se consideran dos &aria"les enteras
N/M+4$ y C$NTA.$4 (contar el nmero de enteros positi&os). Se supone %ue se leen nmeros
positi&os y se detiene el "ucle cuando se lee un nmero negati&o o cero.
Pseu!oc$!#go
In#c#o
contador 7
Leer (numero)
Mientras numero U 7 9acer
8J
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
contador contador?8
Leer (numero)
<inRMientras
Escr#(#r(X+l nmero de enteros positi&os es ! X' contador)
2#n
0.0 Pseu!oc$!#go.
+l pseu!oc$!#go o seu!oc$!#go es una manera gen*rica de descri"ir un algoritmo usando las
con&enciones de los lenguajes de programacin.
+l pseudocdigo descri"e un algoritmo utiliando una mecla de #rases en lenguaje comn' instrucciones
de programacin y pala"ras cla&e %ue de#inen las estructuras "sicas.
+l o"jeti&o del pseudocdigo es permitir %ue el programador se centre en los aspectos lgicos de la
solucin' e&itando las reglas de sinta,is de los lenguajes de programacin.
No siendo el pseudocdigo un lenguaje #ormal' los pseudocdigos &ar-an de un programador a otro' es
decir' no 9ay un pseudocdigo estndar.
&ecuencia
1nicio
accin8
accinB
!
accin n
<in
Decisin
,#"ple
si condicin entonces
accin8
accinB
!
accin n
B7
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Do(le
si condicin t9en
accin8
accinB
!
en caso contrario
accin8
acciB
'teraccin
2#a
para var. (ntera inicial 9asta final 9acer
accin8
accinB
!
accin n

Con!#c#onal al #n#c#o
mientras condicin 9acer
accin8
accinB
!
accin n

Con!#c#onal al %#nal
4epetir
accin8
B8
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
accinB
!
accin n
Nasta %ue condicin
&eleccin
casos selector de
&alor8 ! accin8
accinB
&alorB ! accin8
accinB
&alor n ! accin8
accinB
0.> Proceso general para la construcc#$n !e progra"as.
)%. 'nvestigacin *reliminar! La solicitud para reci"ir ayuda de un sistema de in#ormacin puede
originarse por &arias raones! sin importar cuales sean estas' el proceso se inicia siempre con la peticin
de una persona.
+%. Determinacin de los re,uerimientos del sistema! +l aspecto #undamental del anlisis de sistemas es
comprender todas las #acetas importantes de la parte de la empresa %ue se encuentra "ajo estudio. Los
analistas' al tra"ajar con los empleados y administradores' de"en estudiar los procesos de una empresa
para dar respuesta a las siguientes preguntas cla&e!
YGu* es lo %ue 9aceZ
YCmo se 9aceZ
YCon %ue #recuencia se presentaZ
YGu* tan grande es el &olumen de transacciones o decisionesZ
YCul es el grado de e#iciencia con el %ue se e#ectan las tareasZ
Y+,iste algn pro"lemaZ YGu* tan serio esZ YCul es la causa %ue lo originaZ
-%. Dise.o del sistema! +l diseo de un sistema de in#ormacin produce los detalles %ue esta"lecen la
#orma en la %ue el sistema cumplir con los re%uerimientos identi#icados durante la #ase de anlisis. Los
BB
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
especialistas en sistemas se re#ieren' con #recuencia' a esta etapa como diseo lgico en contraste con la
del desarrollo del so#t:are' a la %ue denominan diseo #-sico.
/%. Desarrollo del software! Los encargados de desarrollar so#t:are pueden instalar so#t:are
compro"ando a terceros o escri"ir programas diseados a la medida del solicitante. La eleccin depende
del costo de cada alternati&a' del tiempo disponi"le para escri"ir el so#t:are y de la disponi"ilidad de los
programadores.
Por lo general' los programadores %ue tra"ajan en las grandes organiaciones pertenecen a un grupo
permanente de pro#esionales.
0%. *rueba de sistemas! .urante la prue"a de sistemas' el sistema se emplea de manera e,perimental para
asegurarse de %ue el so#t:are no tenga #allas' es decir' %ue #unciona de acuerdo con las especi#icaciones y
en la #orma en %ue los usuarios esperan %ue lo 9aga.
Se alimentan como entradas conjunto de datos de prue"a para su procesamiento y despu*s se e,aminan
los resultados.
1%. 'mplantacin 2 evaluacin! La implantacin es el proceso de &eri#icar e instalar nue&o e%uipo'
entrenar a los usuarios' instalar la aplicacin y construir todos los arc9i&os de datos necesarios para
utiliarla. /na &e instaladas' las aplicaciones se emplean durante muc9os aos. Sin em"argo' las
organiaciones y los usuarios cam"ian con el paso del tiempo' incluso el am"iente es di#erente con el
paso de las semanas y los meses.
>. Progra"ac#$n or#enta!a a o(etos.
La Progra"ac#$n Or#enta!a a O(etos -POO u OOP segn siglas en ingl*s) es un paradigma de
programacin %ue de#ine los programas en t*rminos de 5clases de o"jetos5' o"jetos %ue son entidades %ue
com"inan estado (es decir' datos)' comportamiento (esto es' procedimientos o mtodos) e identidad
(propiedad del o"jeto %ue lo di#erencia del resto). La programacin orientada a o"jetos e,presa un
programa como un conjunto de estos o"jetos' %ue cola"oran entre ellos para realiar tareas. +sto permite
9acer los programas y mdulos ms #ciles de escri"ir' mantener y reutiliar.
>.1 Conceptos (&s#cos.
O(etos? "ensaes? clases @ "4to!os.
<erenc#a? encapsulac#$n @ pol#"or%#s"o.
La programacin orientada a o"jetos es una nue&a #orma de programar %ue trata de encontrar solucin a
estos pro"lemas. 1ntroduce nue&os conceptos' %ue superan y ampl-an conceptos antiguos ya conocidos.
+ntre ellos destacan los siguientes!
O(eto! entidad pro&ista de un conjunto de propiedades o atri"utos (datos) y de comportamiento o
#uncionalidad (5m*todos5). Corresponden a los o"jetos reales del mundo %ue nos rodea' o a o"jetos
internos del sistema (del programa).
BC
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Clase! de#iniciones de las propiedades y comportamiento de un tipo de o"jeto concreto. La instanciacin
es la lectura de estas de#iniciones y la creacin de un o"jeto a partir de ellas.
M4to!o! algoritmo asociado a un o"jeto (o a una clase de o"jetos)' cuya ejecucin se desencadena tras la
recepcin de un 5mensaje5. .esde el punto de &ista del comportamiento' es lo %ue el o"jeto puede 9acer.
/n m*todo puede producir un cam"io en las propiedades del o"jeto' y>o la generacin de un 5e&ento5 con
un nue&o mensaje para otro o"jeto del sistema.
E)ento! un suceso en el sistema (tal como una interaccin del usuario con la m%uina' o un mensaje
en&iado por un o"jeto). +l sistema maneja el e&ento en&iando el mensaje adecuado al o"jeto pertinente.
Mensae! una comunicacin dirigida a un o"jeto' %ue le ordena %ue ejecute uno de sus m*todos con
ciertos parmetros asociados al e&ento %ue lo gener.
Prop#e!a! o atr#(uto! contenedor de un tipo de datos asociados a un o"jeto (o a una clase de o"jetos)'
%ue 9ace los datos &isi"les desde #uera del o"jeto' y cuyo &alor puede ser alterado por la ejecucin de
algn m*todo.
Esta!o #nterno! es una propiedad in&isi"le de los o"jetos' %ue puede ser nicamente accedida y alterada
por un m*todo del o"jeto' y %ue se utilia para indicar distintas situaciones posi"les para el o"jeto (o clase
de o"jetos).
Caractersticas de la POO
Nay un cierto desacuerdo so"re e,actamente %u* caracter-sticas de un m*todo de programacin o
lenguaje le de#inen como 5orientado a o"jetos5' pero 9ay un consenso general en %ue las caracter-sticas
siguientes son las ms importantes (para ms in#ormacin' seguir los enlaces respecti&os)!
A(stracc#$n! cada o"jeto en el sistema sir&e como modelo de un 5agente5 a"stracto %ue puede realiar
tra"ajo' in#ormar y cam"iar su estado' y 5comunicarse5 con otros o"jetos en el sistema sin re&elar cmo se
implementan estas caracter-sticas. Los procesos' las #unciones o los m*todos pueden tam"i*n ser
a"stra-dos y cuando lo estn' una &ariedad de t*cnicas son re%ueridas para ampliar una a"straccin.
Encapsula"#ento! tam"i*n llamado 5ocultacin de la in#ormacin5. Cada o"jeto est aislado del e,terior'
es un mdulo natural' y cada tipo de o"jeto e,pone una interfaz a otros o"jetos %ue especi#ica cmo
pueden interactuar con los o"jetos de la clase. +l aislamiento protege a las propiedades de un o"jeto
contra su modi#icacin por %uien no tenga derec9o a acceder a ellas' solamente los propios m*todos
internos del o"jeto pueden acceder a su estado. +sto asegura %ue otros o"jetos no pueden cam"iar el
estado interno de un o"jeto de maneras inesperadas' eliminando e#ectos secundarios e interacciones
inesperadas. Algunos lenguajes relajan esto' permitiendo un acceso directo a los datos internos del o"jeto
de una manera controlada y limitando el grado de a"straccin. La aplicacin entera se reduce a un
agregado o rompeca"eas de o"jetos.
Pol#%or"#s"o
+l polimor#ismo es una nue&a caracter-stica aportada por la $$P. +sta propiedad indica la posi"ilidad de
de#inir &arias operaciones con el mismo nom"re' di#erencindolas nicamente en los parmetros de
entrada. .ependiendo del o"jeto %ue se introduca como parmetro de entrada' se elegir
automticamente cual de las operaciones se &a a realiar.
Herencia
BD
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
La herencia es la ltima de las propiedades relativas a la OOP, Consiste en la propaaci!n de los atri"#tos $ las
operaciones a travs de distintas s#"%clases de&inidas a partir de #na clase comn'
>./ Proceso general para la construcc#$n !e progra"as.
Las metodolog-as orientadas a o"jetos se centran en las estructuras de datos %ue sin em"argo se relegan a
un segundo plano en los modelos procedurales. La "ase de esta metodolog-a es %ue una estructura de
datos de"e contener las operaciones %ue los modi#ican. La t*cnica %ue se utilia para o"tener esta
TTa"straccin de datosUU es la encapsulacin de los mismos en una estructura conocida como clase.
+l acceso a los datos contenidos en la clase se realia mediante las operaciones %ue la propia clase de#ine.
Por tanto' la metodolog-a orientada a o"jetos complementa el punto de &ista procedural de operaciones
realiadas so"re un #lujo de datos' al asociar a cada dato el conjunto de operaciones %ue lo modi#ican.
Como podr &er' am"os en#o%ues son complementarios.
UNIDAD II. E,TRUCTURA, DE DATO,.
Se trata de un conjunto de &aria"les de un determinado tipo agrupadas y organiadas de alguna manera
para representar un comportamiento. Lo %ue se pretende con las estructuras de datos es #acilitar un
es%uema lgico para manipular los datos en #uncin del pro"lema %ue 9aya %ue tratar y el algoritmo para
resol&erlo. +n algunos casos la di#icultad para resol&er un pro"lema radica en escoger la estructura de
datos adecuada. [' en general' la eleccin del algoritmo y de las estructuras de datos %ue manipular
estarn muy relacionadas.
Segn su comportamiento durante la ejecucin del programa distinguimos estructuras de datos!
; +stticas! su tamao en memoria es #ijo. +jemplo! arrays.
; .inmicas! su tamao en memoria es &aria"le. +jemplo! listas enlaadas con punteros' #ic9eros' etc.
1. Datos.
1.1 De%#n#c#$n.
/n !ato es una representacin sim"lica (num*rica' al#a"*tica' etc.)' de un atri"uto o caracter-stica de una
entidad. +l dato no tiene &alor semntico (sentido) en s- mismo' pero con&enientemente tratado
(procesado) se puede utiliar en la realiacin de clculos o toma de decisiones. +s de empleo muy
comn en el m"ito in#ormtico.
+n programacin un dato es la e,presin general %ue descri"e las caracter-sticas de las entidades so"re las
cuales opera un algoritmo.
1./ Clas#%#cac#$n.
BE
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Por su te"poral#!a!* constantes @ )ar#a(les.
Aar#a(le.
+n programacin' las )ar#a(les son estructuras de datos %ue' como su nom"re indica' cam"ian a lo largo
de la ejecucin de un programa. /na &aria"le corresponde a un rea reser&ada en la memoria principal del
computador pudiendo ser de longitud!
Fija' cuando el tamao de la misma no &ariar a lo largo de la ejecucin del programa. Todas las
&aria"les' sean del tipo %ue sean tienen longitud #ija' sal&o las colecciones de datos y las cadenas o
arrays.
Variable' cuando el tamao de la misma puede &ariar a lo largo de la ejecucin. T-picamente colecciones
de datos y arrays.
Constantes.
+n programacin' las constantes son tipos de datos (con &alores num*ricos o de cadena) %ue permanecen
in&aria"les' sin posi"ilidad de cam"iar el &alor %ue tienen durante el curso del programa.
/na constante corresponde a una longitud #ija de un rea reser&ada en la memoria principal del
ordenador' donde el programa almacena &alores #ijos.
Por ejemplo!
+l &alor de pi O C.8D8EJB
Por con&eniencia' el nom"re de las constantes suele escri"irse en maysculas en la mayor-a de lenguajes.
Por su estructura* s#"ples @ agrupa!os.
Tipos de datos simples.
Los tipos simples' %ue incluyen tipos ordinales y tipos reales' de#inen conjuntos ordenados de &alores.
+s uno de los conceptos #undamentales de cual%uier lenguaje de programacin. +stos de#inen los m*todos
de almacenamiento disponi"les para representar in#ormacin' junto con la manera en %ue dic9a
in#ormacin 9a de ser interpretada.
Para crear una &aria"le (de un tipo simple) en memoria de"e declararse indicando su tipo de &aria"le y su
identi#icador %ue la identi#icar de #orma nica. La sinta,is de declaracin de &aria"les es la siguiente!
Tipo(imple Identi&icador), Identi&icador*+
/n tipo de datos se llama simple si sus datos son atmicos3 esto es' consisten en elementos
simples %ue no pueden di&idirse.
BF
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
/n tipo de datos se dice estrctrado cuando sus datos son colecciones de elementos.
1.0 Naturale7a !e los !atos.
Nu"4r#cos.
Son &alores enteros y reales.
+l t#po !e !ator real de#ine un conjunto de nmeros %ue pueden ser representados con la notacin de
punto;#lotante.
Tipo Tamao 4ango Ci#ras
Real
F
...
88;8B
Single
D
...
H;I
Double
I
...
8E;8F
Extended
87
...
8J;B7
Comp
8
I
...
8J;B7
Al%anu"4r#cos.
Son &alores de tipo carcter o cadena de caracteres' nmeros y caracteres especiales. Por ejemplo!
Nom"re O \Nola mundo6
Or!#nales.
+n el conjunto de los tipos ordinales se incluyen!
Tipo de dato entero.
!n tipo de !ato entero en computacin es un tipo de dato %ue puede representar un su"conjunto #inito de
los nmeros enteros. +l nmero mayor %ue puede representar depende del tamao del espacio usado por
el dato y la posi"ilidad (o no) de representar nmeros negati&os. Los tipos de dato entero disponi"les y su
tamao dependen del lenguaje de programacin usado as- como la ar%uitectura en cuestin.
La #amilia de los enteros esta #ormada por los siguientes tipos segn su rango de &alores (el tamao de
almacenamiento se da en "its)!
BH
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Tipo Tamao 4ango
ShortInt
I ;8BI ...8BH
Integer
8F ;CB.HFI ...CB.HFH
LongInt
CB ;B.8DH.DIC.FDI ...B.8DH.DIC.FDH
Byte
I 7 ...BEE
Word
8F 7 ...FE.ECE
Tipo de dato carcter.
Cual%uier signo tipogr#ico. Puede ser una letra' un nmero' un signo de puntuacin o un espacio.
Tipo de dato lgico "booleano%.
+l tipo de dato l$g#co o booleano es en computacin a%uel %ue puede representar &alores de lgica
"inaria' esto es' &alores %ue representen falso o verdadero.
Tipo de dato enumerado.
/n tipo enumerado de#ine un conjunto ordenado de &alores con el simple 9ec9o de listar los
identi#icadores %ue denotan tales &alores. Los &alores no tienen un signi#icado>&alor in9erente al nom"re
del identi#icador y su ordinalidad sigue la secuencia en la cual los identi#icadores se listan.
Definicin.
Para de#inir un tipo enumerado se utilia la siguiente sinta,is!
(1dent;8' ident;B'...' ident;n)
Aplicaciones.
La lista de &alores %ue de#inen un tipo enumerado de datos se puede asociar con un identi#icador en la
seccin de tipos. +ste identi#icador se puede usar despu*s para especi#icar el tipo de &aria"les' parmetros
#ormales y &alores de #unciones. +jemplo!
T[P+
.ias.eSemana O (Lunes' Martes' Miercoles'
@ue&es' 2iernes' Sa"ado' .omingo)
2A4
.ia! .ias.eSemana3
Tipo de dato subrango.
+l tipo de dato ms simple %ue se puede de#inir en un programa Pascal es el tipo su"rango o inter&alo.
+stos tipos son tiles' so"re todo por la #acilidad %ue o#recen para &eri#icar automticamente errores. /n
BI
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
tipo su"rango se de#ine de un tipo ordinal' especi#icando dos constantes de ese tipo' %ue actan como
l-mite in#erior y superior del conjunto de datos de ese tipo. /n tipo su"rango es un tipo ordinal y sus
&alores se ordenan de igual modo %ue en el tipo patrn de %ue se deducen.
+jemplos!
7..J ] este tipo su"rango consta de los elementos
7'8'B'C'D'E'F'H'I'J
X7X..XJX ] este su"rango consta de los caracteres
X7X'X8X'XBX'XCX'XDX'XEX'XFX'XHX'XIX' XJX
XAX..X<X ] este su"rango consta de los caracteres
XAX'X0X'XCX'X.X'X<X
Se pueden crear &aria"les cuyos &alores se restrinjan a un su"rango dado. Las declaraciones de tipo
su"rango se sitan entre las declaraciones de constantes y de &aria"les.
<ormato!
type
Nom"re O l-mite in#erior .. l-mite superior
L$g#cos.
+l tipo de dato l$g#co o booleano es en computacin a%uel %ue puede representar &alores de lgica
"inaria' esto es' &alores %ue representen falso o verdadero.
Gr&%#cos.
Son &alores %ue contienen una imag*n o di"ujo asignado a este tipo de dato.
1.> Espec#%#cac#ones !e pseu!oc$!#go.
/. Conuntos.
/.1 De%#n#c#$n.
1ntuiti&amente' un conjnto es una agrupacin' clase o coleccin de o"jetos a"stractos' a cada uno de los
cules se le denomina elemento del conjunto.
/./ Re%erenc#a !e los co"ponentes.
BJ
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
/.0 Operac#ones con los conuntos.
'gualdad de conjuntos
.os conjuntos y se dicen igales' lo %ue se escri"e si constan de los mismos elementos.
+s decir' siempre %ue para cual%uiera %ue sea el elemento ' se &eri#i%ue
&ubconjuntos 2 &uperconjuntos.
/n conjunto se dice sbconjnto de otro ' si todo elemento de es tam"i*n elemento de ' es
decir' cuando se &eri#i%ue
'
Sea cual sea el elemento . +n tal caso' se escri"e .
Ca"e sealar %ue' por de#inicin' no se e,cluye la posi"ilidad de %ue si ' se cumpla " O #. Si
tiene por lo menos un elemento %ue no perteneca al conjunto ' pero si todo elemento de es
elemento de ' entonces decimos %ue es un su"conjunto propio de ' lo %ue se representa por
.
Si es un su"conjunto de ' decimos tam"i*n %ue es un sperconjnto de ' lo %ue se escri"e
. As- pues
'
y tam"i*n
'
Signi#icando %ue es sperconjnto propio de .
3nin.
Los elementos %ue pertenecen a o a o a am"os y ' #orman otro conjunto' llamado unin de
y ' escrito . As- pues' se tiene
C7
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
.
'nterseccin.
Los elementos comunes entre y #orman un conjunto denominado interseccin de y '
representado por !
.
Si dos conjuntos y son tales %ue ' entonces y se dicen conjuntos disjntos.
+jemplos! si tenemos los conjuntos
+ntonces!
Diferencia.
Los elementos de un conjunto %ue no se encuentran en otro conjunto ' #orman otro conjunto
llamado diferencia de y ' representado por' !
.
C8
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
2emos %ue
'
de manera %ue
. Pero tam"i*n
'
de modo %ue
/.> Espec#%#cac#ones !e pseu!oc$!#go para conuntos.
0. Reg#stros.
0.1 De%#n#c#$n.
/n registro (recor!) es un tipo de datos estructurado denominado (dato recor!) %ue consta de un
conjunto de elementos %ue pueden ser del mismo tipo o de tipos di#erentes.
Los componentes de un registro se llaman campos. Cada campo tiene un nom"re llamado identi#icador de
campo' %ue es algn identi#icador elegido por el programador cuando se declara de tipo registro y un tipo
%ue se identi#ica cuando se declara el tipo de dato record.
0./ Re%erenc#a !e los co"ponentes.
Formato
T$pe
Tiporeistro , record
Campo ) -tipol+
'
'
Campo N - tipoN+
.nd+
CB
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Tipoarchivo , &ile o& tiporeistro'
/ar
Archivol - tipoarchivo+
0eistro) - tiporeistro+
T$pe
Nom"re re , record
Lista id) - Tipo)+
Lista id* - Tipo*+
Lista id1 - Tipo1+
'''
Lista idN - TipoN+
.nd+
Nom"re re- Nom"re de la estr#ct#ra o reistro'
Lista id- Lista de #no o m2s nom"res de campos 3#e componentes el reistro'
Tipo- P#ede ser c#al3#ier tipo de dato est4andar o de&inido por el #s#ario'
Por ejemplo, el reistro-
T$pe
.mpleado , record
Nom"re - (trin5167+
.dad - Inteer+
8omicilio - (trin5967+
(alario - 0eal+
.nd+
se p#ede representar r4a&icamente como-
Acceso a Ca"pos !e un Reg#stro.
Se puede acceder a cada campo de un registro directamente uliando un designador o selector de campo
de la #orma!
Nom"re4eg.Nom"reCampo.
Los datos mostrados en el ejemplo anterior se pueden setear ediante una secuencia de sentencias de
asignacin!
+mpleado.Nom"re !O ^@uan P_ere^3
CC
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
+mpleado.+dad !O CD3
+mpleado..omicilio !O ^A&. +spa`na^3
+mpleado.Salario !O BE77773
Un reg#stro pue!e representarse gr&%#ca"ente en %unc#$n !e sus ca"pos.
0.0 Apl#cac#ones.
Ee"plo*
Progra" Reg#stroB
CEL s#gu#ente progra"a captura 1D e"plea!os @ sus
!atos personales en un arreglo con la ut#l#7ac#$n !e
reg#strosE
Uses CrtB
Const
MaFE"plea!osG1DB
T@pe
reg#stro=e"plea!o G Recor!
no"(re * str#ngH0DIB
pro%es#on * str#ngH/DIB
puesto * str#ngH/DIB
suel!o * real
en!B
Aar
reg#stro * reg#stro=e"plea!oB
e"plea!o *arra@H1..MaFE"plea!osI o% reg#stro=e"plea!oB
#?col?ren *(@teB
(eg#n
Clr,crB
Jr#te-K No"(re Pro%es#$n Puesto ,uel!oK.B
col*G1Bren*G/B
%or #*G1 to MaFE"plea!os !o
(eg#n
J#t3 reg#stro !o
(eg#n
gotoF@-col?ren.B
CD
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Rea!Ln-e"plea!oH#I.no"(re.B
gotoF@-colL/1?ren.B
Rea!Ln-e"plea!oH#I.pro%es#on.B
gotoF@-colL>D?ren.B
Rea!Ln-e"plea!oH#I.puesto.B
gotoF@-colLMN?ren.B
Rea!Ln-e"plea!oH#I.suel!o.B
#nc-ren.B
col*G1B
en!
en!B
Rea!Oe@
en!.
0.> Espec#%#cac#ones !e pseu!oc$!#go para reg#stros.
>. Arreglos.
>.1 De%#n#c#$n.
/n array es un tipo de estructura de datos %ue consta de un nmero #ijo de elementos del mismo tipo. +n
una m%uina' dic9os elementos se almacenan en posiciones contiguas de memoria.
>./ Re%erenc#a !e los co"ponentes.
+s una estructura 9omog*nea de datos de tamao constante accediendo a cada uno de sus elementos
mediante un identi#icador comun y uno o &arios -ndices.
o Todos los elementos del array son del mismo tipo.
o +l nmero de ellos no &ar-a durante la ejecucin del programa.
o Accedemos a un elemento de la estructura mediante un identi#icador comn' el nom"re del
CE
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
array' y con el &alor %ue toman uno o &arios indices. Al nmero de indices necesarios para
designar un elemento del array se le denomina dimensin del array.
o +l nmero m,imo de &alores posi"les %ue puede tomar cada indice se denomina rango de
esa dimensin o indice. Los &alores 9an de ser consecuti&os' por lo %ue el indice 9a de ser
de un tipo ordinal.
4a declaracin ms general de un arra2 es la siguiente5
Type
4ango8 O tipoordinal83
4angoB O tipoordinalB3
2ar
Notas!tipoordinal83
Curso!tipordinalB3
>.0 Arreglos "ult#!#"ens#onales.
"rrays nidimensionales.
/n array de una dimensin (&ector o lista) es un tipo de datos estructurado compuesto de un nmero de
elementos #initos' tamao #ijo y elementos 9omog*neos.
Supongamos %ue desea conser&ar las edades de 87 personas. Para almacenar estas edades se necesita
reser&ar 87 posiciones de memoria' darle un nom"re al array' y a cada persona asignarle su edad
correspondiente.
Arra@s (#!#"ens#onales -ta(las.
/n array "idimensional (ta"la o matr-) es un array con dos -ndices' al igual %ue los &ectores %ue de"en
ser ordinales o tipo su"rango.
CF
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Para localiar o almacenar un &alor en el array se de"en especi#icar dos posiciones (dos su"-ndices)' uno
para la #ila y otro para la columna.
2or"ato*
$. identificador 6 arra@ H7ndice), indice +I o% tipo de elemento
%. identificador 6 arra@ H 7ndice ) I o% arra@ H indice + I of tipo !e ele"ento
Supongase %ue se desea almacenar las cali#icaciones de E alumnos o"tenidas en C e,amenes y mostrar en
orden ascendente sus promedios respecti&amente. +n este caso se usar un array "idimensional (ta"la o
matr-) de E #ilas y D columnas en la cual se almacenar las cali#icaciones de C e,amenes en C columnas y
la cuarta columna se utiliar para almacenar su promedio respecti&o' adems de un array unidimensional
(&ector) donde en #orma paralela se almacenarn los nom"res de los alumnos de la siguiente #orma !
"rrays mltidimensionales.
Tur"o Pascal no limita el nmero de dimensiones de un array' pero s- %ue de"e estar declarado el tipo de
cada su"-ndice.
2or"ato *

$. identificador 6 arra@ H7ndice)I o% arra@ H7ndice +I..
o% arra@ H7ndice nI o% tipo de elemento
%. identificador 6 arra@ H7ndice ), 7ndice +?...?1n!#ce nI of tipo de elemento
Ampliando el ejemplo anterior supongase %ue a9ora deseamos capturar cali#icaciones para C materias en
cuyo caso aplicaremos un array tridimensional. .e la siguiente #orma !
CH
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
-no"(re?eFa"en?"ater#a.
>.> Arreglos con co"ponentes t#po reg#stro.
>.M Apl#cac#ones.
Ee"plo*
Program Matriz_Vector;
{El siguiente programa captura las calificaciones
de 5 alumnos en 3 examenes, y despliega en pantalla
los promedios ordenados en forma descendente }
ses !rt;
!onst
Max"lumno # 5;
MaxExamen # $;{!olumna $ almacena el promedio}
Var
"lumno %array&'((Max"lumno) of string&'*);
examen %array&'((Max"lumno,'((MaxExamen) of real;
aux_examen %array&'((MaxExamen) of real;
{reser+a ,* posiciones de memoria de datos reales %
5 filas por $ columnas}
promedio %real;
aux_alumno %string &'*);
i,-,col,ren %.yte;
.egin
!lr/cr;
{lectura de arrays paralelos de manera simult0nea}
gotoxy15,52;3rite145om.re42;
gotoxy1,*,52;3rite14Examen' Examen, Examen3 Promedio42;
col%#5;ren%#6;
for i%#' to Max"lumno do
.egin
gotoxy1col,ren2;
7ead8n1alumno&i)2; {lectura de +ector}
col%#,,;promedio%#*;
for -%#' to MaxExamen9' do
.egin
gotoxy1col,ren2;
7ead8n1examen&i,-)2; {lectura de matr:z}
promedio%#promedio;examen&i,-);
CI
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
col%#col;'*
end;
examen&i,-;')%#promedio<3;
gotoxy1col,ren2;3rite1promedio<3%3%,2;
inc1ren2;
col%#5
end;
{ordenaci=n}
for i%#' to Max"lumno9' do
for -%#i;' to Max"lumno do
.egin
if examen&i,MaxExamen)>examen&-,MaxExamen) t?en
.egin
{intercam.io de nom.res en +ector}
aux_alumno%#alumno&i);
alumno&i) %#alumno&-);
alumno&-) %#aux_alumno;
{intercam.io de calificaciones en matr:z}
mo+e1examen&i),aux_examen,/ize@f1aux_examen22;
mo+e1examen&-),examen&i),/ize@f1aux_examen22;
mo+e1aux_examen,examen&-),/ize@f1aux_examen22
end
end;
{recorrido de matr:z y +ector}
gotoxy1,5,'$2;3rite14Aatos ordenados42;
gotoxy15,'62;3rite145om.re42;
gotoxy1,*,'62;3rite14Examen' Examen, Examen3 Promedio42;
col%#5;ren%#'B;
for i%#' to Max"lumno do
.egin
gotoxy1col,ren2;
3rite1alumno&i)2;
col%#,,;
for -%#' to MaxExamen do
.egin
gotoxy1col,ren2;
3rite1examen&i,-)%3%,2;
col%#col;'*
end;
col%#5;
inc1ren2
end;
readCey
end(
>.P Espec#%#cac#ones !e pseu!oc$!#go para arreglos !e !atos.
UNIDAD III. PROGRAMACIN E,TRUCTURADA QR,ICA.
1. Declarac#$n !e las estructuras !e !atos.
1.1T#pos !e !atos.
CJ
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
1./Constantes.
+n programacin' las constantes son tipos de datos (con &alores num*ricos o de cadena) %ue permanecen
in&aria"les' sin posi"ilidad de cam"iar el &alor %ue tienen durante el curso del programa.
/na constante corresponde a una longitud #ija de un rea reser&ada en la memoria principal del
ordenador' donde el programa almacena &alores #ijos.
Por ejemplo!
+l &alor de pi O C.8D8EJB
Por con&eniencia' el nom"re de las constantes suele escri"irse en maysculas en la mayor-a de lenguajes.
1.0 Aar#a(les.
+n programacin' las )ar#a(les son estructuras de datos %ue' como su nom"re indica' cam"ian a lo largo
de la ejecucin de un programa. /na &aria"le corresponde a un rea reser&ada en la memoria principal del
computador pudiendo ser de longitud!
fija' cuando el tamao de la misma no &ariar a lo largo de la ejecucin del programa. Todas las &aria"les'
sean del tipo %ue sean tienen longitud #ija' sal&o las colecciones de datos y las cadenas o arrays.
variable' cuando el tamao de la misma puede &ariar a lo largo de la ejecucin. T-picamente colecciones
de datos y arrays.
/. Operac#ones (&s#cas.
/.1 As#gnac#$n !e )alores a )ar#a(les.
D7
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
89omo definir una variable:
Para de#inir una &aria"le siempre necesitaremos un no"(re con el %ue nos re#eriremos a ella durante
nuestro 5programa5' seguido de dos puntos (*) y a continuacin el t#po !e )ar#a(le %ue utiliamos' en
nuestro caso! te,to o nmero.
Escal$n* teFto
'niciar una variable.
Para iniciar una &aria"le' poner un &alor inicial %ue ms tarde podremos modi#icar' lo 9aremos de la
siguiente #orma. (.e"emos tener en cuenta %ue una &aria"le siempre de"e tener un &alor inicial).
/./ Lectura @ escr#tura.
Almacenar resultados en variables.
Nosotros podemos almacenar &alores en nuestras &aria"les de la misma manera %ue las iniciaremos.
Aar#a(le G Aalor. +ste 5almacenamiento5 de in#ormacin la podemos 9acer en cual%uier lugar del cdigo.
.e"emos pensar %ue este )alor puede ser sustituido por una operacin y almacenar el resultado en la
&aria"le. 2eamos un ejemplo! Aar#a(le G M L 0 de esta #orma cuando nosotros deseemos &er el contenido
de Aar#a(le podremos o"ser&ar %ue es un S.
Podemos utiliar una &aria"le como un conta!or. /n conta!or no es ms %ue una &aria"le %ue se &a
incrementado de #orma %ue podemos contar' por ejemplo' las &eces %ue pasamos por un lugar
determinado' las &eces %ue se realia una #uncin' etc... La estructura de un conta!or ser-a la siguiente.
Conta!or G Conta!or L 1.
+,plicaremos como #uncionar-a este conta!or. A la derec9a del igual se produce la operacin' %ue es este
caso es Conta!or L 1' de esta #orma se coge el &alor %ue tiene Conta!or y se le suma 1. +l resultado de
la operacin se guarda en la &aria"le %ue tenemos a la derec9a del igual' %ue este caso es la misma
&aria"le Conta!or. Si esta l-nea la pusi*ramos dentro de un (ucle' podr-amos &er como la Aar#a(le &a
aumentando de 1 en 1 9asta %ue se cumpliera la condicin del (ucle.
/.0 E)aluac#$n !e eFpres#ones.
Ar#t"4t#cas.
Son operaciones de tipo matemtico' %ue permiten procesar la in#ormacin de tal #orma %ue se o"tenga un
&alor. Por ejemplo!
Suma O A ? 0
4a Operacin Asignacin.
variable & e'presin(
D8
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
La sentencia de asignacin es un modo de darle &alores a una &aria"le.
La e,presin se e&ala y el resultado es asignado a la &aria"le.
La sentencia de asignacin modi#ica el contenido de una &aria"le.
2aria"le O &alor constante3 , O C3
2aria"le O &aria"le3 , O y3
2aria"le O e,presin3 , O (y ? 8)>B3
(;presiones
Puede ser!
/na &aria"le
/na constante
/na com"inacin de operadores y operandos.
Operan!os! constantes' &aria"les u otras e,presiones.
Opera!ores! S-m"olo %ue indica al compilador %ue ejecute determinadas operaciones con los elementos
so"re los %ue opera (aritm*ticos' lgicos' de cadena y relacionales).
De relac#$n.
Permite realiar una serie de operaciones anidadas' a partir de una e,presin %ue utilie los concectores
and' not y or (y' no y o respecti&amente)' generalmente se utilian en las estructuras lgicas
condicionales. Por ejemplo!
Si (A T 0) y (@ ? N O C) entonces . O A
L$g#cas.
Se utilian para e&aluar e,presiones %ue slo pueden de&ol&er un &alor de &erdadero o #also. Por ejemplo!
+dad U 8I
La e,presin es &erdadera si la &aria"le edad tiene un &alor mayor a 8I' de lo contrario ser #alsa.
/.> Estructuras l$g#cas.
Intro!ucc#$n al concepto !e (ucle.
DB
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
/n (ucle no es ms %ue una ser#e !e #nstrucc#ones 'ue se rep#ten.
Podemos tener dos tipos de (ucles segn lo %ue nos interese compro"ar. Tenemos un (ucle %ue se repite
"#entras se cumple una condicin determinada' y otro %ue se realia 3asta 'ue se cumple la condicin
%ue marcamos. +n esta leccin nos encargaremos del primer tipo.
A la 9ora de utiliar un (ucle' sea del tipo %ue sea' de"emos ir con cuidado y pensar cuando de"e aca"ar
ya %ue si no tu&i*ramos en cuenta esto podr-amos entrar en un (ucle sin #in' osea %ue ir-amos repitiendo
las mismas l-neas teniendo %ue a"ortar la aplicacin' para poderla #inaliar. Por esto es de suma
importancia %ue pensemos' antes de 9acer nada' en %ue momento' co"o? !on!e @ por'ue de"e aca"ar el
(ucle.
,ecuenc#ales.
1nicio
accin8
accinB
!
accin n
<in
Con!#c#onales.
Estructura (&s#ca !e una con!#c#$n.
+n nuestro curso esta estructura se representar de la siguiente manera!
Otra estructura con!#c#onal.
A9ora &eremos como es la nue&a estructura condicional. +sta estructura' como ya 9emos dic9o
anteriormente es "u@ Tt#l en el "o"ento en el 'ue !e(e"os to"ar !#%erentes !ec#s#ones !e una
"#s"a con!#c#$n. La estructura ser-a la siguiente!
En caso <condicin> hacer
<valor 1>
DC
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
<instrcciones>
<valor !>
<instrcciones>
...
Fin caso
Repet#t#)as.
Estructura (&s#ca.
+n nuestro curso esta estructura "sica de un "ucle M#entras se representar de la siguiente manera!
Otra estrctra repetitiva.
A9ora &amos a &er el mismo ejemplo %ue 9emos puesto antes pero utiliando una nue&a estructura
repetiti&a. Primero &eamos la estructura y despu*s como la podemos aplicar.
"epetir
<instrcciones>
Hasta #e <condicin>
Otra estructura repet#t#)a.
A9ora &amos a &er el mismo ejemplo %ue 9emos puesto antes pero utiliando una nue&as estructura de
repeticin. Primero &eamos la estructura y despu*s como la podemos aplicar.
Desde <$aria%le> & <$alor'nicial> Hasta <$alorFinal>
<instrcciones>
Fin Desde
/.M Espec#%#cac#ones !e pseu!oc$!#go con las operac#ones (&s#cas.
DD
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
0. Arc3#)os.
0.1 De%#n#c#$n.
/n arc9i&o es una estructura de datos %ue reside en memoria secundaria o dispositi&o de
almacenammiento' tales como dis%uetes' C.s' discos duros' y cintas magn*ticas' entre otros.
/n arc9i&o es una estructura 9omog*nea de datos consistente en una secuencia de elementos llamados
registros' todos del mismo tipo' ya sea simple o estructurado. /n arc9i&o se almacena en un dispositi&o
au,iliar (discos' cintas' etc)' de #orma %ue los datos o"tenidos antes' durante y despu*s del procesamiento
de los datos' no se pierden. Para declarar una &aria"le arc9i&o es necesario de#inir pre&iamente la
naturalea de sus registros.
0./ Ca"pos @ reg#stros.
Los arc9i&os estan compuestos por registros y a su &e por un conjunto de datos' los cuales se pueden
manipular de #orma conjunta' en otras pala"ras' los registros se encuentran con#ormados por campos' %ue
son datos espec-#icos so"re algn conjunto de indi&iduos u o"jetos.
Los componentes de un registro se llaman campos. Cada campo tiene un nom"re llamado identi#icador de
campo' %ue es algn identi#icador elegido por el programador cuando se declara de tipo registro y un tipo
%ue se identi#ica cuando se declara el tipo de dato record.
0.0 Organ#7ac#$n.
,ecuenc#al.
Los registros se encuentran organiados en posiciones consecuti&as' y slo se pueden acceder a ellos de
uno en uno a partir del primero.
+sta organiacin consiste en la disposicin consecuti&a de los registros a medida %ue se adicionan al
arc9i&o' o sea %ue el orden de los registros es el de entrada3 para recuperar un registro en particular es
necesario recorrer el arc9i&o desde el primer registro 9asta el registro "uscado.
1gual ocurre en la carpeta donde se guardan los e,menes de los alumnos a medida %ue los entregan. Si se
necesita el e,amen de alguien en particular es necesario "uscar desde el comieno en toda la carpeta.
Como se puede o"ser&ar esta organiacin no es muy e#iciente para recuperar registros da un arc9i&o
cuando su cantidad es muy grande.
Arc<ivos de acceso secuencial
Los arc9i&os de acceso secuencial son llamados tam"i*n arc9i&os de te,to' estn #ormados por cadenas de
caracteres separadas unas de otras por los cdigos retorno de carro>a&ance de l-nea' %ue corresponden a
los caracteres 8C>87 del cdigo ASC11. +l #inal del arc9i&o se indica mediante el caracter ASC11 BF' %ue
tam"i*n se e,presa como ab o +$<.
+s posi"le &isualiar estos arc9i&os con la orden T[P+ del sistema operati&o .$S y se pueden editar con
cual%uier editor de te,tos.
DE
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
+ste tipo de arc9i&os solo permiten operaciones de lectura y escritura secuenciales' la unica #orma de
modi#icarlos es agregando l-neas al #inal del arc9i&o.
Los pasos para leer o escri"ir en un arc9i&o de este tipo son!
.eclarar una &aria"le de tipo te,to y asociarla al nom"re de un arc9i&o. A esto tam"i*n se le llama
declarar el arc9i&o.
A"rir el arc9i&o ya sea para lectura o escritura.
Leer o escri"ir datos en el arc9i&o.
Cerrar el arc9i&o
Declaracin de un arc<ivo
Para declarar un arc9i&o primero se declara una &aria"le tipo te,t de la siguiente #orma!
AAR
AarArc3#)o * TeFtB
/na &e declarada la &aria"le se asigna al nom"re de algun arc9i&o!
A,,IGN -AarArc3#)o? No"(reArc3#)o.B .onde Nom"reArc9i&o es una cadena de caracteres %ue
contiene el nom"re del arc9i&o' la unidad de disco donde se encuentra y el directorio. Por ejemplo!
A,,IGN -AarArc3#)o? KC*UDO,UPRUEQA.TVTK.B
Abrir arc<ivos
+,siten tres #ormas de a"rir un arc9i&o!
4e:rite 4eset Append
(scribir datos en un arc<ivo
Para escri"ir datos a un arc9i&o se utilian las instrucciones crite y criteLn' como si se %uisiera escri"ir
a la pantalla' con la di#erencia de %ue se especi#icar la &aria"le de arc9i&o ya declarada. +jemplo!
Jr#teLn-AarArc3#)o? KPrue(a !e arc3#)osK.B +sta sentencia gra"ar-a el te,to XPrue"a de arc9i&osX en el
arc9i&o asignado a 2arArc9i&o.
4eer datos de un arc<ivo
Para leer los datos de un arc9i&o de acceso secuencial se utilian las instrucciones Rea! y 4eadLn.
La instruccin 4ead lee uno o &arios datos del arc9i&o a"ierto y deja el puntero en el mismo rengln en el
cual ley los datos' en cam"io 4eadLn lee los datos y mue&e el puntero al siguiente rengln.
=in del arc<ivo
Normalmente los arc9i&os de este tipo se leen rengln por rengln 9asta llegar al #inal del mismo. Cuando
se conoce de antemano el tamao del arc9i&o es posi"le utiliar un ciclo <$4' pero es ms seguro utiliar
la #uncin EO2 la cual es &erdadera despues de %ue el programa lee la ltima linea de un arc9i&o de
acceso secuencial.
DF
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
La sinta,is de la #uncin +$< es!
EO2 -Aar#(leArc3#)o.B
+s comn realiar la &eri#icacin de la #uncin con un ciclo cN1L+ como en el ejemplo siguiente!
J<ILE NOT EO2-Arc3#)o. DO
QEGIN
Rea!Ln-Arc3#)o? Datos.B
Jr#teLn-Datos.B
ENDB
9errar arc<ivos
Para asegurar %ue toda la in#ormacin se gra"e en el disco correctamente es necesario cerrar el arc9i&o
antes de %ue se termine la ejecucin del programa' de lo contrario se corre el riego de %ue la ltima
in#ormacin %ue se 9aya accesado no se gra"e en su totalidad.
La instruccin para cerrar un arc9i&o es Close' y su sinta,is es!
Close -Aar#(leArc3#)o.B
=uncin (oln
La #uncin Eoln sir&e para &eri#icar si el puntero 9a llegado al #inal de la linea. 4egresa el &alor
&erdadero si se encuentra al #inal. Comunmente se utilia en las lecturas caracter por caracter.
Agregar datos a un arc<ivo de te;to
Para aadir datos a un arc9i&o de te,to son necesarios los siguientes pasos!
Asignar un arc9i&o a una &aria"le con Ass#gn
Agregar los datos con el procedimiento Appen!
+scri"ir los datos
Cerrar el arc9i&o
A continuacin se ilustra un ejemplo de un programa %ue agrega una linea a un arc9i&o de te,to!
PROGRAM Arc3#)oB
AAR
TeFto * TEVTB
QEGIN
Ass#gn -TeFto? KPRUEQA.DATK.B
Appen!-TeFto.B
Jr#teLn-TeFto? KAgregan!o una l#nea al arc3#)o PRUEQA.DATK.B
Close -TeFto.
END.
Relat#)a.
DH
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Tam"i*n conocida como organiacin directa o aleatoria. Los registros se colocan y acceden al
indicar el lugar %ue ocupan dentro del arc9i&o.
Arc<ivos de acceso directo
/n arc9i&o de acceso directo esta #ormado por un conjunto de partes indi&iduales %ue pertenecen al
mismo tipo de datos. Cada uno de los componentes del arc9i&o es llamado registro.
Cada uno de los componentes de este tipo de arc9i&os es accesi"le directamente.
Los arc9i&os de acceso directo son tam"i*n llamados arc9i&os con tipos o tipeados.
(structura del arc<ivo
A di#erencia de los arc9i&os secuenciales' los arc9i&os tipeados no estan compuestos de lineas de
caracteres' sino %ue se acomodan en registros con estructuras #ijas. La longitud de los registros esta
determinada por la cantidad de "ytes %ue se necesitan para almacenar el tipo de datos %ue contendr el
registro.
Por ejemplo' si se &an a almacenar nmeros enteros en un arc9i&o' cada registro ser&ir para un nmero
espec-#ico y ocupar B "ytes' el siguiente registro utiliar los dos "ytes siguientes del arc9i&o y as-
sucesi&amente 9asta completar la cantidad de datos %ue se &ayan a almacenar.
+ste tipo de arc9i&os no pueden ser &isualiados con la instruccin type del sistema operati&o de"ido al
#ormato utiliado para guardarlos.
Declaracin de un arc<ivo
Para declarar un arc9i&o de acceso directo se realia con las pala"ras reser&adas 2ILE O2' su sinta,is es
la siguiente!
Aar#a(leArc3#)o * 2ILE O2 T#poEle"entosB
+sta declaracin se realia en la seccin correspondiente a la declaracin de las &aria"les. +jemplo!
PROGRAM Arc3#)o=T#pea!oB
AAR
Arc3#)o * 2ILE O2 IntegerB
QEGIN
END.
Normalmente no se desea crear arc9i&os %ue puedan almacenar un solo tipo de datos ya %ue se re%ueririan
&arios arc9i&os' por ejemplo para alguna "ase de datos! uno para los nom"res' otro para apellidos' otro
para la edad' etc. Para e&itar este incon&eniente es posi"le usar registros del tipo 4+C$4.' %ue permiten
gra"ar en un solo registro un grupo de datos %ue pueden ser de di#erentes tipos' uno de tipo 1NT+=+4'
uno de tipo ST41N=' etc.
Los registros del tipo record de"en ser declarados antes de las &aria"les en una seccin llamada TYPE
con el siguiente #ormato!
TYPE
No"(re=Reg G RECORD
DI
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Ca"po=!el=reg#stro=1 * T#poB
Ca"po=!el=reg#stro=/ * T#poB
...
Ca"po=!el=reg#stro=n * T#poB
ENDB
.onde No"(re=Reg es el nom"re del registro %ue se utiliar' Ca"po=!el=Reg#stro=F son las &aria"les
%ue estarn contenidas en el registro y T#po es el tipo de cada una de las &aria"les del registro.
La seccin T[P+ se escri"e antes de la declaracin de las &aria"les.
Como ejemplo' si se %uiere crear un arc9i&o el %ue se guarden el nom"re' domicilio' edad y estado ci&il
de un grupo de personas el primer paso a realiar es crear un registro %ue contenga todos estos campos!
TYPE
Datos G RECORD
No"(re * ,tr#ngH>DIB
Do"#c#l#o * ,tr#ngHPDIB
E!a! * IntegerB
E!oC#)#l * ,tr#ngH1DIB
ENDB
+l siguiente paso es declarar un arc9i&o del tipo .atos as- como una &aria"le del mismo tipo de los %ue se
utiliarn en el arc9i&o!
AAR
Arc3#)o * 2ILE O2 DatosB
Persona * DatosB
Asignacin de un arc<ivo
An cuando se tenga declarado el arc9i&o no es posi"le gra"ar nada en *l si no se le asigna un nom"re
real para guardarlo en el disco. +l proceso de dic9a asignacin es el mismo %ue para los arc9i&os de te,to!
Ass#gn -Arc3#)o? KNo"(re.eFtK.B
Nom"re.t,t puede ser una constante' una &aria"le o estar escrita directamente en el programa.
Naturalmente de"e cumplir con todas las reglas para nom"rar un arc9i&o.
Abrir arc<ivos
/na &e declarado un arc9i&o ya es posi"le a"rirlo. +n caso de %uerer a"rir un arc9i&o nue&o se utilia la
instruccin Re5r#te' o si el arc9i&o ya e,iste en el disco se a"re con el procedimiento Reset.
No e,iste ninguna di#erencia entre la apertura de un arc9i&o de acceso directo para su lectura o para su
escritura.
Si al utiliar el procedimiento 4e:rite el arc9i&o asignado ya e,ist-a se eliminar del disco y se crear
uno nue&o' por lo mismo se de"e tener ciudado al momento de a"rir estos arc9i&os.
DJ
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
>egistro actual 2 tama.o de un arc<ivo
La #uncin 2#le,#7e regresa el tamao de un arc9i&o' o mejor dic9o de&uel&e el nmero de registros
contenidos en *ste.
Al momento de a"rir un arc9i&o nue&o la #uncin <ileSie regresa el &alor de 7' lo %ue signi#ica %ue el
arc9i&o no tiene datos guardados en *l.
*osicionamiento en el interior de un arc<ivo
Cada uno de los registros de un arc9i&o esta re#erenciado por un nmero espec-#ico comenando desde el
registro 7 y aumentando de 8 en 8.
La #uncin 2#lePos de&uel&e el nmero de registro actual' su sinta,is es!
2#lePos -Aar#a(leArc3#)o.
2aria"leArc9i&o es la &aria"le a la cual se asign un nom"re de arc9i&o en el disco.
Para mo&erse a un registro determinado se utilia la #uncin ,eeW' con la siguiente sinta,is!
,eeW -Aar#a(leArc3#)o? Nu"Reg#stro.B
Para mo&erse al #inal del arc9i&o para agregar un nue&o registro se utilia este mismo comando con el
parametro Num4egistro como sigue!
,eeW -Aar#a(leArc3#)o? 2#le,#7e-Aar#a(leArc3#)o..B
Cuando se a&ana en un arc9i&o registro por registro se utilia la #uncin EO2 para determinar si ya se
lleg al #inal del arc9i&o.
4ectura 2 escritura de arc<ivos
Para la lectura y escritura en un arc9i&o de acceso directo unicamente se utilian los procedimientos Rea!
y Jr#te. .espues de cada operacion de lectura o escritura el puntero se posiciona en el siguiente registro.
Para estar seguros de %ue se leera el registro %ue se desea se de"e emplear el procedimiento seed antes de
cual%uier procedimiento de lectura o escritura.
9errar un arc<ivo
Para cerrar los arc9i&os a"iertos se procede igual %ue en uno de acceso secuencial' utiliando el
procedimiento close!
Close -Aar#a(leArc3#)o.B
In!eFa!a.
+sta organiacin consiste en la disposicin de los registros en los arc9i&os con "ase en el &alor de uno o
ms campos llamados -ndices' con el propsito de #acilitar su recuperacin. As- #uncionan los
E7
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
diccionarios' los registros se presentan ordenados al#a"*ticamente y se llega a las pro,imidades del
registro "uscado con la ayuda del -ndice.
+sta organiacin es e#ica para recuperar registros de un arc9i&o grande' pero no para agregar registros'
ya %ue re%uiere 9allar la localiacin precisa del nue&o registro entre los registros e,istentes en el arc9i&o'
antes de almacenarlo. +ste caso no ocurre con la organiacin secuencial' en la cual los nue&os registros
simplemente se agregan al #inal del arc9i&o.
Para de#inir esta organiacin es importante de#inir tres conceptoss!
a) Area primaria! contiene registros.
") Campo cla&e! +s un campo con un &alor %ue identi#ica de #orma nica un registro' por lo %ue su &alor
no puede aparecer repetido en otro registro.
c) Area -ndices! +s un arc9i&o secuencial en el %ue cada registro esta"lece la cla&e de un registro del rea
primaria y su u"icacin (direcccin). .e esta #orma el sistema accede de #orma directa a una direccin del
rea primaria a partir del -ndice. Para comprender mejor este tipo de organiacin' consideraremos el
ejemplo clsico en el %ue "uscamos un tema y posteriormente a"rimos el li"ro en esa pgina.
0.> Acceso a los reg#stros.
,ecuenc#al.
+l acceso secuencial a un registro se reaalia desde el primero y los sucesi&os 9asta lllegar al registro
seleccionado. +ste m*todo de acceso se puede utiliar con cual%uier soporte y organiacin.
Aleator#a.
+l acceso aleatorio slo se puede realiar en los llamados soportes direcciona"les' como los discos
magn*ticos' *ste consiste en accesar a un registro directamente' es decir' sin accesar los registros
anteriores.
0.M T#pos !e arc3#)os.
TeFto.
Contienen datos de tipo carcter' este tipode arc9i&os consiste en &arias l-neas %ue constan de un nmero
&ari"le de caracteres. +l arc9i&o puede leerse o escri"irse' ya sea l-nea por l-nea o carcter por carcter.
Tam"ien puede ser accesado desde cual%uier editor de te,to y programa de aplicacin espec-#ica' como
procesadores de pala"ras' etc.
Tam"i*n conocidos como (Slream <ile) son utiliados para almacenar documentos %ue consisten en te,to3
+n ellos' cada registro es un solo s-m"olo o cdigo de control.
E8
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
+l leer estos arc9i&os reci"imos la in#ormacin en orden secuencial en el %ue aparece cuando lo &emos en
un monitor.
Los arc9i&os de te,to son una secuencia de l-neas separadas por marcas de #in de l-nea.
Q#nar#o.
Son arc9i&os %ue no tienen una estructura de#inida' slo procesan la in#ormacin' generalmente se usan
para copiar o mo&er arc9i&os de estructura desconocida y se re%uiere de protocolos o lenguajes especiales
para codi#icar el contenido de *stos.
es un arc9i&o %ue lee "yte por "yte sin asumir ninguna estructura.
Los arc9i&os 0inarios no son un nue&o tipo de arc9i&o' pero si una nue&a #orma de manipular cual%uier
tipo de arc9i&o. Las t*cnicas de arc9i&o "inarios permiten leer o cam"iar cual%uier "yte de un arc9i&o.
Son 9erramientas e,tremadamente potentes' pero como toda 9erramienta potente de"e manejarse con
cuidado
Estructura!o.
Son arc9i&os %ue utilian estructuras de datos simples y>o agrupadas' donde todos los elementos se
emncuentran relacionados entre si, el programa no necesita traducir el contenido del arc9i&o para
entenderlo' ya %ue de"e disponer de una estructura de#inida.
0.P Espec#%#cac#ones !e pseu!oc$!#go para arc3#)os.
>. Operac#ones con arc3#)os.
>.1 Creac#$n @ el#"#nac#$n !e arc3#)os.
Creacin de Arc9i&o.; +n este proceso se pretende solamente crear un arc9i&o nue&o en disco' con su
nom"re' tipo y especialidad de almacenamiento de datos apropiado.
Apertura de Arc9i&os.; +n este caso se pretende a"rir un arc9i&o ya e,istente en disco para procesarlo' ya
sea cargar o gra"ar datos en sus registros' o leer algun registro en especial para mandarlo a una &aria"le
de cual%uier tipo.
re5r#te crea un nue)o arc3#)o -o so(re+escr#(e en uno eF#stente. @ lo a(re para procesa"#ento con
el apuntador de registro coloca!o en el reg#stro D.
re5r#te (nom"reRarc9i&o).
erase (nom"reRarc9i&o) 0orra un arc9i&o e,terno.
>./ Lectura @ escr#tura !e reg#stros.
EB
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Jr#te -#'&8'&B) 0orra un arc9i&o e,terno.
erase (#'&8'&B) 0orra un arc9i&o e,terno.
% )ar#a(le t#po arc3#)o
&8'&B &aria"le de tipo datos
>.0 Proceso !e un arc3#)o secuenc#al.
Actuali?acin de arc<ivos secuenciales.
/n arc9i&o maestro representa un panorama esttico de algn aspecto de una empresa. Sin em"argo
muc9os de los aspectos de dic9a organiacin no son estticos' sino %ue continuamente ocurren cam"ios
internos y>o e,ternos %ue a#ectan directa o indirectamente a la empresa' como puede ser la contratacin de
personal' despidos' los ajustes de precios' etc. Para %ue un arc9i&o pueda re#lejar un estado actual lo ms
con#ia"le posi"le' nuestro arc9i.&o de"e ser actualiado.
@entajas 2 Desventajas.
La &entaja ms importante de la t*cnica de organiacin secuencial de arc9i&os es la capacidad de acceso
al 5siguiente5 registro rpidamente! Mientras %ue el patrn de acceso a un arc9i&o secuencial se con#orme
al ordenamiento de registros en el arc9i&o' los tiempos de acceso sern muy "uenos. Sin em"argo' si el
patrn de acceso al programa no se con#orma al patrn de ordenamiento de los registros' entonces la
e#iciencia del programa puede ser terri"le.
$tra &entaja de los arc9i&os de organiacin secuencial es %ue son muy sencillos de usar y aplicar.
Almacenamiento De Arc<ivos &ecuenciales.
Los arc9i&os secuenciales pueden almacenarse en dispositi&os de acceso serial o directo. Con #recuencia
los dispositi&os de acceso serial son considera"lemente menos caros %ue los dispositi&os de acceso
directo en un sistema de cmputo' pero de 9ec9o' los dispositi&os de almacenamiento de acceso directo
en una computadora siempre proporcionan mayor capacidad de almacenamiento y acceso ms rpido %ue
los dispositi&os de acceso serial.
Declaracin De Arc<ivos &ecuenciales.
Casi todos los lenguajes proporcionan #acilidades para declarar arc9i&os secuenciales.
9reacin de un arc<ivo secuencial.
La creacin de un arc9i&o secuencial incluye la escritura de registros en una secuencia deseada dentro del
medio de almacenamiento. La creacin de un arc9i&o secuencial de transacciones incluye la tarea de
recolectar datos' con&ertir los datos a una #orma legi"le para la m%uina' editar los datos' con&ertir los
mo&imientos rec9aados y ordenar los datos editados.
>ecuperacin De 'nformacin De Arc<ivos &ecuenciales.
Los registros de"en ser recuperados de un arc9i&o secuencial en orden consecuti&o. +l orden en el cual
los registros #ueron gra"ados en el arc9i&o' determina el orden en el cual los registros pueden recuperarse.
.e 9ec9o' en realidad se 9ace todo lo contrario! el orden deseado para recuperar los registros de"e dictar
el orden en el cual de"en gra"arse.
La recuperacin de in#ormacin de un arc9i&o secuencial puede clasi#icarse' ya sea en generadora de
reportes o para 9acer consultas' dependiendo del &olumen de in#ormacin producida. Los arc9i&os
secuenciales son #recuentemente accesados en el modo de generacin de reportes. .e"ido a %ue los
registros de"en ser accesados consecuti&amente' es "astante e#iciente accesar cada registro del arc9i&o.
EC
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Aeneracin de arc<ivos.
/na des&entaja de los arc9i&os secuenciales es %ue en el proceso de actualiacin' la mayor-a de los
arc9i&os secuenciales no pueden ser actualiados' ms "ien 9a"r %ue reescri"irlos totalmente. Para lle&ar
a ca"o este proceso e,istir un arc9i&o maestro anterior y otro actual. +stas &ersiones sucesi&as del
arc9i&o son normalmente conocidas como generaciones de archivo. Si el arc9i&o maestro &iejo
perteneci a la generacin 8' entonces el arc9i&o nue&o del d-a pertenecer a la generacin B' y as-
sucesi&amente.
+l tener &arias generaciones del arc9i&o se 9ace con el o"jeti&o de o"tener reportes 9istricos %ue podr-an
ayudar en un momento dado para la toma de decisiones de una empresa.
>.> Proceso !e un arc3#)o relat#)o.
Se utilia la organiacin relati&a cuando e,iste la necesidad de accesar registros indi&iduales
directamente. +n un arc9i&o relati&o e,iste una relacin predeci"le entre la lla&e usada para identi#icar un
registro y su localiacin dentro del arc9i&o. Sin em"argo es importante comprender %ue el ordenamiento
lgico de los registros no necesita tener ninguna relacin con su secuencia #-sica. Los registros no
necesariamente aparecen #-sicamente ordenados de acuerdo al &alor de sus lla&es. A cada arc9i&o relati&o
de"e de#in-rsele una relacin %ue ser utiliada.
>.M Proceso !e un arc3#)o #n!eFa!o.
Cu&n!o !e(en crearse 1n!#ces.
Cuando piense si de"e crear un -ndice' de"e e&aluar dos #actores para asegurarse de %ue el -ndice ser ms
e#iciente %ue una e,ploracin de ta"la! la naturalea de los datos y la de las consultas "asadas en la ta"la.
Por 'u4 se !e(e crear un 1n!#ce.
Los -ndices aceleran la recuperacin de los datos. Por ejemplo' si no utilia un -ndice' de"er e,aminar un
li"ro entero' pgina a pgina' para "uscar in#ormacin acerca de un tema.
SGL Ser&er utilia -ndices para sealar la u"icacin de in#ormacin espec-#ica en una pgina de datos' en
lugar de tener %ue "uscar en todas las pginas de datos de una ta"la. .e"e tener en cuenta los siguientes
9ec9os y directrices acerca de los -ndices!
Los -ndices suelen acelerar las consultas %ue com"inan ta"las y realian operaciones de
ordenacin o agrupacin.
Los -ndices e,igen %ue las #ilas sean nicas si se de#ini esta propiedad al crear el -ndice.
Los -ndices se crean y mantienen en orden ascendente.
Los -ndices son ms tiles en las columnas con un alto grado de selecti&idad' es decir' columnas o
com"inaciones de columnas en las %ue la mayor parte de los datos son nicos.
Por 'u4 no !e(e crear un 1n!#ce
Los -ndices consumen espacio de disco y producen costos de proceso y de mantenimiento. .e"e tener en
cuenta los siguientes 9ec9os y directrices acerca de los -ndices!
ED
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Cuando se modi#ican datos en una ta"la indiada' SGL Ser&er tiene %ue actualiar los -ndices
asociados.
+l mantenimiento de los -ndices re%uiere tiempo y recursos. Por lo tanto' no de"e crear -ndices
%ue no &aya a utiliar con #recuencia.
Los -ndices de las ta"las pe%ueas pro"a"lemente aporten pocas &entajas' por%ue puede ser ms
costoso "uscar en las pginas de -ndice %ue e,plorar la ta"la completa.
Nota Los -ndices no son o"ligatorios. Puede consultar y manipular los datos sin necesidad de utiliar un
-ndice. No o"stante' el acceso a los datos es considera"lemente ms rpido cuando e,isten -ndices
apropiados.
D#rectr#ces para la #n!#7ac#$n.
+l entorno de la compa-a' las caracter-sticas y el uso de los datos determinan las columnas %ue se de"en
especi#icar para generar los -ndices. La utilidad de un -ndice depende directamente del porcentaje de #ilas
de una ta"la %ue de&uel&e una consulta. Los porcentajes "ajos o las consultas muy selecti&as o"tienen las
m,imas &entajas de los -ndices.
Cuando se crea un -ndice so"re una columna' *sta se denomina colmna de )ndice. /n &alor de una
columna de -ndice se denomina valor de clave.
Nota Todas las columnas de una ta"la pueden estar indiadas y cual%uier columna puede #ormar parte de
ms de un -ndice' aun%ue esto generalmente resta e#icacia.
Colu"nas 'ue !e(e #n!#7ar
.e"e crear -ndices en las columnas donde lle&e a ca"o "s%uedas #recuentemente' como!
Cla&es primarias
Cla&es e,ternas u otras columnas %ue se utilian con #recuencia para com"inar ta"las
Columnas en las %ue se "uscan inter&alos de &alores de cla&e
Columnas en las %ue el acceso se realia por orden de clasi#icacin
Colu"nas 'ue no !e(e #n!#7ar
No de"e crear -ndices so"re columnas %ue tengan las caracter-sticas siguientes!
4ara &e se 9ace re#erencia a ellas en las consultas.
Contienen pocos &alores nicos. Por ejemplo' un -ndice so"re una columna %ue slo contiene dos
&alores' como masculino y #emenino' de&uel&e un alto porcentaje de #ilas y no aporta &entajas.
+stn de#inidas con los tipos de datos "it' te,to e imagen. Las columnas con datos de estos tipos
no pueden indiarse.
Crear @ el#"#nar 1n!#ces.
Los -ndices se crean con la instruccin C4+AT+ 1N.+e y se eliminan con la instruccin .4$P 1N.+e.
Uso !e la #nstrucc#$n CREATE INDEV
EE
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
La instruccin C4+AT+ 1N.+e se utilia para crear -ndices. Tam"i*n se puede emplear el Asistente para creacin de -ndices
del Administrador corporati&o de SGL Ser&er. Al crear un -ndice so"re una o ms columnas de una ta"la' de"e tener en cuenta
los 9ec9os y directrices siguientes!
SGL Ser&er crea -ndices automticamente cuando se crea una restriccin P41MA4[ A+[ o
/N1G/+ en una ta"la. +s mejor de#inir una restriccin P41MA4[ A+[ o /N1G/+ %ue crear
-ndices estndar.
Para poder ejecutar la instruccin C4+AT+ 1N.+e de"e ser el propietario de la ta"la.
No pueden crearse -ndices so"re &istas.
SGL Ser&er almacena la in#ormacin de los -ndices en la ta"la de sistema s@s#n!eFes.
Antes de crear un -ndice so"re una columna' a&erigfe si ya e,isten -ndices so"re esa columna.
Mantenga los -ndices en un tamao pe%ueo3 para ello' limite los &alores de cla&e a una o dos
columnas. Normalmente' los -ndices pe%ueos son mas e#icientes %ue los %ue tienen &alores de
cla&e grandes.
Seleccione las columnas "asndose en %ue contengan &alores nicos para %ue cada &alor de cla&e
identi#i%ue a un pe%ueo nmero de #ilas.
,#ntaF#s
C4+AT+ V/N1G/+W VCL/ST+4+. g N$NCL/ST+4+.W
1N.+e nombre*e+ndice $N tabla -colmna V? ...nW.
Vc1TN
VPA.R1N.+eW
VV?W <1LL<ACT$4 G factor*e,ellenoW
VV?W 1=N$4+R./PRA+[W
Si no se especi#ica /N1G/+ en la instruccin C4+AT+ 1N.+e' el -ndice admitir duplicados. Si no se
especi#ica CL/ST+4+. en la instruccin C4+AT+ 1N.+e' se crear un -ndice no agrupado.
Ee"plo
+n este ejemplo se crea un -ndice agrupado so"re la columna lastname (apellidos) de la ta"la mem"er
(miem"ro).
C4+AT+ CL/ST+4+. 1N.+e clRlastname
$N li"rary..mem"er (lastname)
Uso !e la #nstrucc#$n DROP INDEV
La instruccin .4$P 1N.+e se utilia para eliminar un -ndice de una ta"la. Al eliminar un -ndice' de"e
tener en cuenta los 9ec9os siguientes!
Cuando se ejecuta la instruccin .4$P 1N.+e' SGL Ser&er recupera el espacio de disco %ue
ocupa"a el -ndice.
No se puede utiliar la instruccin .4$P 1N.+e en -ndices creados mediante restricciones
P41MA4[ A+[ o /N1G/+. Para eliminar estos -ndices' se de"e eliminar antes la restriccin.
Cuando se elimina una ta"la' tam"i*n se eliminan todos sus -ndices.
Cuando se elimina un -ndice agrupado' se reconstruyen automticamente todos los -ndices no
agrupados de la ta"la.
La "ase de datos en la %ue reside un -ndice %ue se desea eliminar de"e ser la "ase de datos actual.
No se puede utiliar la instruccin .4$P 1N.+e en las ta"las de sistema.
,#ntaF#s
EF
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
.4$P 1N.+e tabla.)ndice V? ...nW
Ee"plo
+n este ejemplo se elimina el -ndice clRlastname de la ta"la de miem"ro.
/S+ li"rary
.4$P 1N.+e mem"er.clRlastname
UNIDAD IA. PROGRAMACIN E,TRUCTURADA INTERMEDIA.
Estrucutra de un Programa PASCAL.
1. Proce!#"#entos @ %unc#ones.
1.1 De%#n#c#$n.
Proce!#"#entos.
/n procedimiento es un su"programa %ue realia alguna de las tareas del programa' y %ue no de&uel&e
ningn &alor al su"programa %ue lo in&oc.
/n procedimiento est compuesto de un grupo de sentencias a las %ue se asigna un nom"re (identificador)
y constituye una unidad del programa. La tarea asignada al procedimiento se ejecuta siempre %ue Pascal
encuentra el nom"re del procedimiento.
EH
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
+n Tur"o Pascal resulta o"ligatorio declarar los procedimientos antes de ser re#erenciados en el cuerpo
del programa.
1./ R"(#to local @ glo(al.
+l &"(#to de una &aria"le 9ace re#erencia a la limitacin de uso' esto es' de lectura y>o escritura de una
&aria"le dentro de una aplicacin. +ste puede ser!
Local! Cuando la misma slo es accesi"le desde un nico procedimiento 9ijo' no pudiendo ser le-da o
modi#icada desde otro procedimiento 9ermano o desde el propio procedimiento padre. +s posi"le declarar
&aria"les en "lo%ues de condicin' "ucles' etc de tal modo %ue slo pueda accederse a ellas en el propio
"lo%ue.
Se tiene este tipo de &aria"les cuando' un su"programa tiene sus propias &aria"les declaradas en la
seccin correspondiente del su"programa. +ste tipo de &aria"les se crean cada &e %ue se llama a
ejecucin el su"programa y al salirse de *l se pierden' permitiendo en algunos casos manejar el mismo
nom"re de &aria"le en el programa principal y en el su"programa como de tipos di#erentes o del mismo
tipo sin %ue esto pueda alterar en algo algunos de los &alores.Puede decirse entonces' %ue las &aria"les
locales son a%uellas &aria"les %ue se emplean nicamente donde #ueron declaradas. Por ejemplo' en el la
unidad del #ormulario se tiene la siguiente declaracin!
Glo(al! Cuando la misma es accesi"le tanto desde rutinas o macros de la aplicacin' como en todos los
procedimientos y #unciones de la misma.
Se tiene este tipo de &aria"les cuando se realia la declaracin de las mismas en la seccin
implementation' justo despu*s de las directi&as del sistema. Si llega a emplearse en un su"programa @ no
est& !eclara!a en este' entonces se dice %ue se tienen &aria"les de tipo glo"al' esto implica %ue si en el
su"programa se altera el &alor' tam"i*n en el programa principal resultar alterado o repercute en *l. Por
ejemplo' se puede tener en el programa la siguiente declaracin!
2unc#ones.
La di#erencia principal entre un procedimiento y una #uncin es %ue el identi#icador de la #uncin asume
un &alor' y cuando la #uncin termina su tarea' de&uel&e ese &alor al mdulo %ue la in&oc3 mientras %ue
el procedimiento no de&uel&e ningn &alor.
Puesto %ue el nom"re de la #uncin toma un &alor' dic9o nom"re de"e tener asociado un tipo de dato.
Constantes @ )ar#a(les.
Las reglas para #ormar los identi#icadores en Pascal son las siguientes!
8. Pueden estar compuestos de caracteres al#a"*ticos' num*ricos y el carcter de su"rayado ( R ).
B. .e"en comenar con un carcter al#a"*tico o el carcter de su"rayado.
C. Puede ser de cual%uier longitud (slo los FC primeros caracteres son signi#icati&os).
D. No se 9ace distincin entre maysculas y minsculas.
E. No se permite el uso de los 1.+NT1<1CA.$4+S 4+S+42A.$S en los nom"res de &aria"les'
EI
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Constantes' programas o su";programas.
'dentificadores vlidos
Nom"re
Cadena
+dadRMa,ima
eR[Rb
+ti%uetaB
'dentificadores no vlidos
Numh.ias ! carcter h no &lido
e nom"re ! Contiene un "lanco
"egin ! es una pala"ra reser&ada
ejeis ! carcter i no &lido
Declarac#$n !e constantes @ )ar#a(les.
Para declarar las constantes se utilia la pala"ra reser&ada C$NST seguida de un identi#icador al %ue se le
dar un &alor determinado' un signo de igual 5O5' el &alor %ue reci"ir el identi#icador y al #inal un punto
y coma 535. +jemplo!
C$NST pi O C.8D8EJBF3
.e esta #orma el identi#icador pi reci"ir el &alor de C.8D8EJBF y no ser posi"le cam"iarlo en el
transcurso del programa.
+s posi"le declarar &arias constantes sucesi&amente' puede ser una por rengln o &arias en un solo
rengln. Cuando se 9ace *sto' la pala"ra C$NST solo se pone una sola &e como ca"ecera y a
continuacin todas las constantes por de#inir. +jemplo!
CON,T
PI G 0.1>1MN/PB
No"(re G KXuan Gut#4rre7KB
Un#!a! G 1B
$tra #orma de escri"ir lo mismo es as-!
CON,T PI G 0.1>1MN/PB No"(re G KXuan Gut#4rre7KB Un#!a! G 1B
Pero por cuestiones de legi"ilidad es pre#eri"le la primera opcin.
La declaracin de &aria"les se lle&a a ca"o de la misma #orma' solo %ue en lugar de la pala"ra C$NS
utiliamos la pala"ra AAR' y en lugar de 5O &alor35' utiliamos * t#po ' sustituyendo 5tipo5 por alguna
clase &lida de datos en Tur"o Pascal. +jemplo!
AAR Nu"=entero * IntegerB
No"(re * ,tr#ngB
Proce!#"#entos @ %unc#ones !el usuar#o.
EJ
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
.eclaracin de un procedimiento.
La s#ntaF#s para declarar un proce!#"#ento es *
2or"ato 1 *
proce!ure nombre#procedimientoB
declaraciones locales
(eg#n
cuerpo del procedimiento
en!B
2or"ato /*
proce!ure nombre#procedimiento"parmetros formales%B
declaraciones locales
(eg#n
cuerpo del procedimiento
en!B
La e,istencia de par&"etros=%or"ales depender de la naturalea del procedimiento' esto es' de la tarea
%ue &a a realiar y de la #orma en %ue lo 9a estructurado su creador.
1n&ocacin al procedimiento.
Para invocar a un proce!#"#ento? la s#ntaF#s es *
Ynombre#de#procedimientoZ -parmetros#actuales. B
Don!e la eF#stenc#a !e parmetros#actuales !epen!er& !e 'ue en la !eclarac#$n !el proce!#"#ento
se 3a@an ut#l#7a!o par&"etros %or"ales.
Declarac#$n !e %unc#ones.
La !eclarac#$n !e una %unc#$n t#ene la s#gu#ente %or"a *
%unct#on Combre -p),p+,....*tipo
C!eclarac#ones locales @ su(progra"asE
(eg#n
Dcuerpo de la funcinE
Combre 56 valor de la funcin
en!B
F7
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
p1?p/?... l#sta !e par&"etros %or"ales
t#po t#po !e !ato !el resulta!o
'ue !e)uel)e la %unc#$n
Ee"plos *
%unct#on )er#%#ca * (oolean B
C 2unc#$n s#n par&"etros %or"alesE
%unct#on ca"(#a-Aar )alor=1? )alor=/* real.*realB
%unct#on potenc#a- (ase? eFponente * real .*realB
In)ocac#$n !e %unc#ones.
Las %unc#ones se #n)ocan !e la s#gu#ente "anera *
Dnombre#funcinE -parmetros#locales% B
!on!e *
par&"etros=locales es una l#sta !e )ar#a(les @;o constantes separa!as por co"as. La eF#stenc#a !e
par&"etros=locales !epen!er& !e 'ue eF#stan parmetros formales en la !eclarac#$n !e la %unc#$n.
1.0 Par&"etros.
Paso !e par&"etros.
Al #n)ocar a un su(progra"a se le pue!en pasar par&"etros? los cuales pue!en cons#st#r !e )alores
!e )ar#a(les !eclara!as en el "$!ulo #n)oca!or. El paso !e tales par&"etros pue!e 3acerse !e !os
"aneras *
Por )alor
Por re%erenc#a
*aso por valor.
El paso !e par&"etros por )alor cons#ste en en)#ar una COPIA !el )alor !e la )ar#a(le al "$!ulo
#n)oca!o.
De esta "anera se asegura 'ue el )alor !e la )ar#a(le s$lo pue!e ser "o!#%#ca!o por el "$!ulo 'ue
la !eclar$.
,# la pala(ra Aar no aparece !elante !el parmetro formal en un proce!#"#ento? Tur(o Pascal
supone 'ue el par&"etro %or"al es un parmetro por valor.
Ee"plo*
Progra" ,u"a=por=AalorB
CEl s#gu#ente progra"a real#7a la su"a
!e !os nu"eros E
Uses CrtB
Aar
F8
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
A?Q?C*#ntegerB
proce!ure su"a-A?Q?C *#nteger.B
(eg#n
C *G A L Q
en!B
(eg#n
Clr,crB
C*G1DB
A*G1DB
Q*G1DB
su"a-A?Q?C.B
Jr#teLn-A?K?K?Q?K?K?C.B
Rea!Oe@B
Clr,cr
en!.
El resulta!o !e la eecuc#$n !el progra"a ser1a *
1D?1D?1D
El )alor !e C no se "o!#%#ca puesto 'ue es un par&"etro por )alor.
Paso por re%erenc#a.
+n el caso de %ue se re%uiera %ue el &alor de una &aria"le sea modi#icado por el mdulo in&ocado' de"e
9acerse el paso de parmetro por re#erencia' por medio del cual el mdulo in&ocado tiene acceso a la
direccin en %ue se guarda el &alor a modi#icar.
Para aclarar los conceptos de paso por valor y paso por referencia' analicemos el programa de suma y
multiplicacin de matrices dado en la seccin anterior.
$"ser&amos %ue las in&ocaciones a su"programas son similares en los casos de paso por &alor y paso por
re#erencia.
Por ejemplo' las in&ocaciones a los procedimientos imprime y suma %uedan de la siguiente manera!
#"pr#"e-KCK?"at=c?ren=a?col=(.B
su"a-"at=a?"at=(?"at=c?ren=a?col=a.B
y sus respecti&as declaraciones son !
proce!ure #"pr#"e-n"at*c3arB"at=%*"atBren=%?col=%*#nteger.B
proce!ure su"a-"at=%=a?"at=%=(*"atBAar "at=%=c*"atBren=%?col=%*#nteger.B
2emos %ue en la declaracin del procedimiento suma e,iste la parte! 2ar matR#Rc ! mat
la cual signi#ica lo siguiente !
FB
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
[La &aria"le "at=%=c contiene la direccin de la &aria"le correspondiente en la in&ocacin ( "at=c ) ' y
es de tipo "at 5
+sto signi#ica %ue el paso del parmetro "at=c se 9io por referencia' y %ue el procedimiento in&ocado
(su"a) puede modi#icar el &alor de "at=c .
Ee"plo*
Progra" ,u"a=por=Re%erenc#aB
CEl s#gu#ente progra"a real#7a la su"a
!e !os nT"eros E
Uses CrtB
Aar
A?Q?C*#ntegerB
proce!ure su"a-A?Q*#ntegerBAar C*#nteger.B
(eg#n
C *G A L Q
en!B
(eg#n
Clr,crB
C*G1DB
A*G1DB
Q*G1DB
su"a-A?Q?C.B
Jr#teLn-A?K?K?Q?K?K?C.B
Rea!Oe@B
Clr,cr
en!.
+l resultado de la ejecucin del programa ser-a !
1D?1D?/D
+l &alor de C se modi#ica puesto %ue es un parmetro por re#erencia.
Nota ! +n Tur"o Pascal no se permite el paso de procedimientos y #unciones como parmetr
1.> Un#!a!es.
De%#n#c#$n.
Declarac#$n !e un#!a!es.
Las unidades son mdulos independientes del programa %ue' aun%ue no son ejecuta"les por si mismos'
pueden ser utiliados por el programa principal sin necesidad de reescri"ir el cdigo %ue contienen. Para
la utiliacin de estos 5su"programas5 es necesaria su declaracin.
FC
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
La pala"ra reser&ada /S+S cumple el propsito de declarar las unidades en el #ormato siguiente!
U,E, crt? !osB
+sta linea declara y 9a"ilita para su uso a la unidad crt y a la unidad !os
Cada unidad %ue se declara de"era estar separada de la siguiente por una coma. Al #inal de todas las
unidades declaradas se de"er colocar un punto y coma [B[.
Las un#!a!es est&n!ar !e tur(o pascal son*
Crt
.os
=rap9
$&erlay
Printer
System
Proce!#"#entos @ %unc#ones pre!e%#n#!os.
Proce!#"#entos INC @ DEC.
+l procedimiento 1NC incrementa en 8 el contenido de cual%uier &aria"le de tipo entero' es lo mismo en
un programa teclear!
Aar#a(le *G Aar#a(le L 1B
o telcear!
Inc-Aar#a(le.B
+l procedimiento DEC decrementa en 8 el &alor de cual%uier &aria"le de tipo entero %ue se le indi%ue' se
usa igual %ue 1NC!
DEC -Aar#a(le.B
Trunca"#ento @ re!on!eo.
La #uncin Roun! -nT"ero. redondea un nmero real al entero ms cercano y de&uel&e el resultado
como un nmero real.
La #uncin Trunc -nT"ero. elimina la parte decimal del nmero real y de&uel&e el resultado como tipo
entero.
FD
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
2unc#ones eFponenc#ales @ logar1t"#cas.
La #uncin ,'r de&uel&e el cuadrado del &alor utiliado como parmetro.
,'rt regresa la ra- cuadrada del &alor dado como parmetro' el resultado siempre es real aun%ue se
utilice un nmero de tipo entero como argumento.
2unc#ones ar#t"4t#cas.
A(s regresa el &alor a"sluto del identi#icador %ue se le pase como parmetro. +l &alor %ue de&uel&e ser
del mismo tipo %ue el argumento.
A(s-+/>. CRegresa el )alor />E
La #uncin Int de&uel&e la parte entera de un &alor real' como tipo real.
La #uncin 2rac regresa la parte decimal de un &alor real' tam"i*n como &alor real.
2unc#ones tr#gono"4tr#cas.
Las #unciones trigonometricas de#inidas en Tur"o Pascal son! ,#n-)alor.' Cos-)alor. y Arctan-)alor.'
todas las demas pueden de#inirse desde estas!
Tan-F. Sin(,) > Cos(,)
Cot-F. Cos(,) > Sin(,)
,ec-F. 8 > Cos(,)
Csc-F. 8 > Sin(,)
Procedimientos y #unciones para el manejo de cadenas.
Pos
Cop@
Insert
Delete
UpCase
,tr
Aal
Las cadenas de caracteres son secuencias de caracteres con longitudes %ue &ar-an desde 8 9asta los BEE
caracteres. +l tipo identi#icador de las cadenas es ,tr#ng. Cuando declaramos una &aria"le de tipo string
ser posi"le introducir 9asta BEE caracteres en ella' pero tam"i*n es #acti"le declarar cadenas ms cortas
agregando al momento de la declaracin la longitud de la &aria"le' por ejemplo!
AAR
Mensae * ,tr#ngH1/DIB CLong#tu! "aF#"a G 1/D caracteresE
9omparacin de cadenas
La comparacin de cadenas es una operacin muy comn en Tur"o Pascal3 estas comparaciones se
realian con "ase en el orden del cdigo ASC11' por ejemplo la cadena XPrue"aX es menor a la cadena
Xprue"aX ya %ue el &alor del cdigo ASC11 de P es I7 y el de p es 88B.
As- tam"i*n podemos di#erenciar las cadenas con respecto a su tamao! XNolaX es menor a X0ien&enidoX
FE
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
+,iste un caso especial de una cadena' %ue es cuando no tiene ningn caracter en ella' en ese momento
decimos %ue es una cadena nula o &ac-a. Se recomienda ampliamente inicialiar todos los &alores de las
cadenas a cadenas nulas al inicio del programa' ya %ue podr-an contener datos e,traos e indesea"les.
anejo de los elementos de la cadena
+s posi"le leer cada elemento de una cadena por separado' por ejemplo' si en la &aria"le -alle
almacenamos la cadena XNidalgoX es posi"le asignar a otra cadena el &alor de CalleHFI donde , es el
caracter de la cadena %ue se %uiere leer' as- tam"i*n es posi"le &isualiar el caracter en pantalla usando la
instruccin criteLn. +jemplo!
PROGRAM CaracterB
AAR
Calle * ,tr#ngB
Letra * ,tr#ngB
QEGIN
Calle *G K<#!algoKB
Jr#teLn-CalleH/I.B CA#sual#7a el segun!o caracter !e CalleE
Letra *G CalleH1IB CGuar!a en Letra el pr#"er caracter !e CalleE
Jr#teLn-Caracter. END.
Para conocer la longitud de una cadena utiliamos la #uncin Lengt3' la longitud es la cantidad de
caracteres %ue contiene la cadena en un momento determinado.
Su sinta,is es!
Lengt3 -ca!ena.B
La #uncin regresa un &alor entero.
PROGRAM 2unc#on=Lengt3B
AAR
Ca!ena * ,tr#ngB
QEGIN
Ca!ena *G KPrue(a !e long#tu!KB
Jr#teLn -KLong#tu! !e la ca!ena* K? Lengt3 -Ca!ena..B
END.
+l programa imprime en la pantalla un mensaje con la longitud de la cadena almacenada en memoria' en
este caso espec-#ico 8I.
+n ocasiones es necesario com"inar dos o ms cadenas de caracteres en una sola' para lograr *sto
utiliamos los siguientes m*todos.
Operador F
+s una de las #ormas ms sencillas de unir dos cadenas y se maneja e,actamente como una suma' la nica
limitante es %ue en caso de ser mayor la longitud resultante de la suma %ue la longitud %ue pueda manejar
la &aria"le en %ue se almacenar se truncarn los caracteres so"rantes. +jemplo!
Ca!ena1 *G KQuenos KB
Ca!ena/ *G K!#as KB
Ca!ena0 *G Ca!ena1 L Ca!ena/B
Jr#teLn -Ca!ena0.B
FF
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Se imprimir en la pantalla! X0uenos diasX. (Notese %ue este ejemplo es solo una seccin del programa'
para ejecutarlo es necesario completar la estructura).
=uncin 9oncat
La #uncin concat produce los mismos resultados %ue la concatenacin' es posi"le incluir cual%uier
nmero de cadenas %ue se necesiten concatenar.
La suma de las cadenas no de"er so"repasar la longitud %ue la &aria"le' a la cual se asignar dic9a suma'
puede manejar. +jemplo!
Ca!ena *G Concat -Ca!1? ca!/? ca!0.B
*os
Laa #uncin Pos nos sir&e para localiar una determinada cadena dentro de otra' en otras pala"ras para
&eri#icar si una cadena es su"cadena de otra segunda.
Los parmetros %ue re%uiere son! la cadena %ue se "uscar y la cadena donde se "uscar la primera!
Pos -Ca!ena1? Ca!ena/.B
Cuando encuentra la cadena la #uncin de&uel&e su posicin inicial' en caso de %ue no la encuentre
de&uel&e el &alor de 7.
+jemplo!
Ca!ena *G KDo"#ngo Lunes Martes M#ercoles Xue)es A#ernes ,a(a!oKB
Jr#teLn-Ca!ena.B
Jr#teLn-Pos-KLunesK? Ca!ena..B CMuestra NE
Jr#teLn-Pos-KXue)esK? Ca!ena..B CMuestra 0/E
Jr#teLn-Pos-KA@erK? Ca!ena..B CMuestra DE
9op2
La #uncin copy regresa una su"cadena de una &aria"le o constante dada como parmetro. Su sinta,is es!
Cop@ -Ca!ena? In#c#o? Cant#!a!.B
.onde Cadena es la #uente de la su"cadena' 1nicio es la posicin desde la cual se o"tendr la su"cadena y
Cantidad es el nmero de caracteres %ue se e,traern.
Los &alores de 1nicio y Cantidad de"en ser de tipo entero.
+jemplo!
Ca!ena *G [Nue)os 3or#7ontes[B
Jr#teLn -Cop@-Ca!ena? S? 1D..B CA#sual#7a* 3or#7ontesE
'nsert
+l procedimiento 1nsert sir&e para insertar una cadena dentro de otra en alguna posicin determinada.
Sinta,is!
Insert -Ca!ena1? Ca!ena/? Pos#c#$n.
.onde Cadena8 es la %ue se insertar' CadenaB es donde se insertar y Posicin es el lugar donde se
insertar. +l parmetro Posicin de"e ser de tipo entero.
FH
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Delete
+ste procedimiento elimina un determinado nmero de caracteres de una cadena. Su sinta,is es!
Delete -Ca!ena? In#c#o? NT"ero.
Cadena es la &aria"le en la cual se eliminarn los caracteres' 1nicio es la posicin del primer caracter a
eliminar y Nmero es la cantidad de caracteres %ue se "orrarn.
3p9ase
La #uncin /pCase regresa la letra mayuscula correspondiente al caracter dado como parmetro. +s muy
comn tra"ajando con cadenas %ue se %uiera con&ertir una %ue contiene un nmero a su &alor num*rico'
para poder utiliarlo en operaciones matemticas' as- como con&ertir un nmero a su e%ui&alente en una
cadena.
+sto es ms #cil de entender si consideramos %ue no es lo mismo el &alor HE y el &alor XHEX' en el primer
caso es un nmero mientras %ue en el segundo es un par de caracteres ASC11.
Para lograr estos cam"ios de tipo en Tur"o Pascal utiliamos los procedimientos siguientes!
&tr
+l procedimiento Str o"tiene una cadena a partir de un &alor num*rico. Su sinta,is es!
,tr-Aalor? Ca!ena.
.onde &alor es el nmero a con&ertir y Cadena es la &aria"le donde se almacenar la cadena ya
con&ertida.
@al
+ste procedimiento con&ierte una cadena en un &alor de tipo num*rico' el pro"lema con esta #uncin es
%ue si la cadena no esta #ormada e,clusi&amente de nmeros siguiendo las reglas para el tipo de datos %ue
se &allan a o"tener se generar un error. Sinta,is!
Aal -Ca!? Nu"? C$!#go.
Cadena contiene la cadena %ue ser procesada' Num es la &aria"le de tipo num*rico donde se guardar el
&alor de la cadena y Cdigo es una &aria"le de tipo entero (1nteger) %ue contendr el &alor de 7 si no 9u"o
errores y un &alor di#erente en caso de %ue no se 9aya podido con&ertir la cadena' el &alor de Cdigo
representa la posicin de la cadena donde ocurrio el error.
9lr(ol
Sinta,is!
ClrEolB
+ste procedimiento "orra todos los caracteres de la linea actual desde la posicin del cursor 9asta el #inal
de la linea. +jemplo!
PROGRAM Proc=ClrEolB
U,E, CrtB
AAR F?@ * IntegerB
QEGIN
2OR F *G 1 TO /> DO
2OR @ *G 1 TO SD DO
Jr#te-K\K.B
GotoVY-1M?1M.B
ClrEolB
END.
FI
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
9lr&cr
Sinta,is!
Clr,crB
Se utilia para "orrar la pantalla completa o la &entana actual y situa el cursor en la es%uina superior
i%uierda. +jemplo!
PROGRAM L#"p#arPantallaB
U,E, CrtB
AAR F?@ * IntegerB
Pr( * ,tr#ngB
QEGIN
2OR F *G 1 TO /> DO
2OR @ *G 1 TO SD DO
Jr#te-K\K.B
Jr#teLn-KPres#one HENTERI para (orrar la pantallaK.B
Rea!Ln-Pr(.B
Clr,crB
Jr#teLn-K,e (orr$ la pantallaK.B
END.
Dela2
Sinta,is!
Dela@-T"p * Jor!.B
.etiene la ejecucin del programa durante un tiempo especi#icado en Tmp en milisegundos. +l inter&alo
&lido es desde 7 9asta FEECE' la precisin del retardo depende de la precisin del reloj interno de la
computadora. +jemplo!
PROGRAM Retar!oB
U,E, CrtB
QEGIN
Jr#teLn-KIn#c#a retar!o !e aproF#"a!a"ente M segun!osK.B
Dela@-MDDD.B
Jr#teLn-K2#n !el retar!oK.B
END.
Del4ine
Sinta,is!
DelL#neB
0orra la linea donde se encuentra el cursor y las lineas in#eriores su"en una posicin. +jemplo
PROGRAM QorrarL#neaB
U,E, CrtB
AAR F * IntegerB
pr( * ,tr#ngB
QEGIN
Clr,crB
2or F *G 1 to /D DO
Jr#teLn-KL#nea nT"ero* K? F.B
Jr#teLn-KPres#one HENTERI para (orrar la l#nea PK.B
GotoVY-D?P.B
DelL#neB
Jr#teLn-KL#nea P el#"#na!aK.B
END.
FJ
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
AotoGH
Sinta,is!
GotoVY-F? @ * Q@te.B
Posiciona el cursor en las coordenadas especi#icadas por F y @.
+l "yte , representa la columna partiendo de i%uierda a derec9a y el "yte y representa la #ila partiendo de
arri"a 9acia a"ajo. +jemplo!
PROGRAM Pos#c#$nB
U,E, CrtB
QEGIN
GotoVY-1D?1D.B
Jr#te-K]K.B
GotoVY-/D?/D.B
Jr#te-K]K.B
END.
Iig<@ideo
Sinta,is!
<#g3A#!eoB
Acti&a la pantalla de &ideo de alta intensidad.
'ns4ine
Sinta,is!
InsL#ne
1nserta una linea en "lanco en la posicin actual del cursor.
Co&ound
Sinta,is!
No,oun!B
.esacti&a el sonido iniciado con el procedimiento Sound.
&ound
Sinta,is!
,oun! -2recuenc#a * Jor!.B
=enera un sonido en la "ocina de la computadora a una #recuencia determinada por el &alor de
<recuencia. Para detener el sonido es necesario ejecutar el procedimiento NoSound.
Te;tJacKground
Sinta,is!
TeFtQacWGroun! -Color * (@te.B
Se utilia para seleccionar el color del #ondo de la pantalla. Los &alores %ue puede utiliar son del 7 al H'
tam"i*n es posi"le utiliar las constantes prede#inidas para los colores.
Te;t9olor
Sinta,is!
TeFtColor -Color * Q@te.B
+l procedimiento Te,tColor se usa para seleccionar el color del te,to en la pantalla.
Te;tode
Sinta,is!
TeFtMo!e -Mo!o * Jor!.B
H7
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
.e#ine el modo de &ideo' *sto es' el nmero de #ilas y columnas %ue se podrn mostrar en pantalla'
tam"i*n si se mostrarn en "lanco y negro o en color.
Los modos &lidos de pantalla de te,to son!
Constante Aalor Mo!o !e )#!eo
0cD7 7 D7,BE 0lanco y negro en tarjeta de color
C$D7 8 D7,BE Color
0cI7 B I7,BE 0lanco y negro en tarjeta de color
C$I7 C I7,BE Color
Mono H I7,BE Monocromtico
Lindow
Sinta,is!
J#n!o5 -F1? @1? F/? @/ * Q@te.B
.e#ine las coordenadas de la &entana de te,to acti&a3 ,8 y y8 son las coordenadas de la es%uina superior
i%uierda' ,B y yB son las coordenadas de la es%uina in#erior derec9a.
Las siguientes son las #unciones de la unidad C4T!
Me2*ressed
Tipo! Qoolean
La #uncin AeyPressed de&uel&e el &alor de True si se puls alguna tecla y #alse si no se 9a presionado
ninguna.
>eadMe2
Tipo! C3ar
+sta #uncin lee un caracter del teclado' se utilia muc9o para leer teclas de direccin' teclas de control y
de #unciones.
L<ereG
Tipo! Q@te
c9eree de&uel&e el nmero de la columna donde se encuentra el cursor.
L<ereH
Tipo! Q@te
La #uncin c9ere[ de&uel&e el nmero de la #ila donde se encuentra el cursor al momento de llamar a la
#uncioacute3n.
1.M Espec#%#cac#ones "e!#ante pseu!oc$!#go para proce!#"#entos @
%unc#ones.
CPROGRAMA PARA ,UMAR Y MULTIPLICAR MATRICE,E
H8
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
INICIO
IMPRIME enca(e7a!o.
LEE las !#"ens#ones !e las "atr#ces A @ Q.
,I las "atr#ces no son co"pat#(les para la su"a?
ENTONCE,
IMPRIME "ensae=1.
,I las "atr#ces no son co"pat#(les para la "ult.?
ENTONCE,
IMPRIME "ensae=/.
,I son co"pat#(les para la su"a o para la "ult. ?
ENTONCE,
INICIO
LEE las "atr#ces A @ Q.
IMPRIME las "atr#ces A @ Q.
,I son co"pat#(les para la su"a? ENTONCE,
INICIO
,UMA las "atr#ces A @ Q.
IMPRIME la "atr#7 resulta!o C.
2IN
,I son co"pat#(les para la "ult#pl#cac#on? ENTONCE,
INICIO
MULTIPLICA las "atr#ces A @ Q.
IMPRIME la "atr#7 resulta!o D.
2IN
2IN
2IN.
/. I"pres#$n !e reportes.
/.1 Estructura general !e un reporte.

L1neas !e !etalle.
+s la impresin de la in#ormacin del arc9i&o "ajo ciertos criterios' presentada en columnas segn el
campo indicado en columnas segn el campo indicado en los enca"eados de pgina.

L1neas !e totales.
1n#ormacin impresa al #inal del reporte' tal como totales' datos estad-sticos del resum*n o la conclusin
del reporte.
HB
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne

Enca(e7a!os !e p&g#na.
1n#ormacin impresa al principio de cada pgina como nmero de pgina' #ec9a' t-tulo de la pgina y los
enca"eados de las columnas.

P#es !e p&g#na.
1n#ormacin impresa al #inal de cada pgina' como #ec9a' o nmero de pgina.
4+P$4T+S .+LPN1
1mprimir toda la ta"la signi#ica muc9as 9ojas de impresora.
Primero se de"er %uitar el #iltro en la ta"la y segundo entender lo %ue tienen en comn todas las 9ojas de
impresora %ue se ocupan para imprimir la ta"la.
Primero todas las 9ojas ocupan un mismo enca"eado o un mismo pie de pgina' donde puede ir por
ejemplo la #ec9a o el nmero de pgina.
La primera 9oja de todo el reporte' cuando menos de"e lle&ar una "anda de titulo' con el nom"re de la
compa-a' el titulo y propsito de la ta"la' la #ec9a' etc.
Todo los renglones de la ta"la' ocuparan muc9as 9ojas de impresora para desplegarse' incluyendo un
enca"eado para todas las columnas %ue estn en la 9oja' repito necesitamos un enca"eado para
columnas y %ue apareca en todas las paginas.
Pro"a"lemente' en la 9oja #inal' seria con&eniente aadir algunos contadores y acumuladores' por ejemplo
la cantidad de renglones' algn acumulado de alguna columna num*rica en especial' etc.
G4eport' usa este modelo de "andas para la construccin de reportes' es decir' en la practica anterior se
uso un componente G4S9ape' para di&idir el reporte en dos partes' secciones o "andas' pero G4eport trae
incorporado un componente llamado G40and %ue permite di&idir en partes' secciones o "andas todo el
reporte.
+ste componente G40and' en su propiedad 0andType' permite construir los siguientes seis tipos
importantes de "anda.
QANDA NOTA,
PAGE <EADER 0anda de enca"eados de pginas.
HC
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Aparece en todas las 9ojas impresas.
Poner dentro componentes para nmero de pgina' etc.
TITLE 0anda de Titulo o enca"eados del 4eporte.
Solo aparece en la primera 9oja impresa.
Poner componentes %rla"el con el nom"re de la compa-a' el propsito de la ta"la' #ec9a' etc.
COLUMM <EADER 0anda de o para enca"eados de columnas.
Aparece en todas las 9ojas impresas.
Poner dentro componentes %rla"el con el enca"eado %ue lle&a cada columna de la ta"la.
DETAIL 0anda de detalle.
+s la mas importante' por%ue es la %ue contiene los datos de los renglones de la ta"la.
+s la %ue constituye el grueso de las 9ojas impresas.
Solo colocar dentro de esta "anda los componentes de datos impresos' G4.0Te,t y G4.01mage
,UMMARY 0anda de resumen.
Solo aparece en la 9oja #inal de impresin.
Poner dentro de ella componentes de operaciones como es G4+,pr y estudiarlo en la ayuda' para conocer
sus m*todos (#unciones) y aplicarlas.
PAGE 2OOTER 0anda de pie de pagina.
Aparece en todas las 9ojas impresas.
Su #uncin es similar a la "anda de enca"eado.
.e 9ec9o' en un reporte solo se usa la " "anda de enca"eado o la "anda de pie de pgina' pero no las
dos.
Solo poner dentro de esta "anda' componentes de nmero de pgina' o de #ec9as' o de 9ora' etc.
Lo ms importante a tomar en cuenta es cada componente G40and %ue se ponga dentro de un reporte' se
de"er de#inir usando su propiedad 0andType' como una cual%uiera de los seis tipos de "andas' es decir'
G40and8 O "anda de enca"eado'
G40andB O 0anda de titulo'
G40andC O 0anda de detalle' etc.
HD
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
+n general el procedimiento completo es!
8.;Poner un componente Ta"le en la #orma y nadamas cargarle sus tres propiedades "sicas( no usar
#iltros).
B.;Poner un Componente Guicd4ep( es la 9oja de impresin) y cargarle las propiedades ya descritas en
procedimiento de impresin anterior.
C.; Colocar y e,pandir un primer componente G40and dentro del componente Guicd4ep y primero
asociarle el tipo de "anda %ue representa' por ejemplo de enca"eado o de titulo' recordar %ue un reporte
no necesariamente tiene %ue lle&ar las seis "andas.
A este componente G40and' cam"iarle propiedades de #ont' #rame' color' etc.
D.; Colocar dentro del componente G40and8' los componentes necesarios y apropiados como se indico
en el cuadro anterior de "andas y signi#icados' por ejemplo G4La"el' etc.
E.;Colocar otro componente G40and en la 9oja de impresin' e,panderlo y de#inirlo como "anda de
titulo o "anda de enca"eado de columnas' etc.
F.;4epetir los pasos anteriores' 9asta completar todas las "andas.
H.; Colocar un "otn de ordenes $A' y asociarle el cdigo de Pre&ie: o de impresin.
/./ Conta!ores @ acu"ula!ores.
CONTADOR*
/n contador es una &aria"le cuyo &alor se incrementa o decrementa en una cantidad constante cada &e
%ue se produce un determinado suceso o accin. Los contadores se utilian con la #inalidad de contar
sucesos o acciones internas de un "ucle3 de"en realiar una operacin de inicialiacin y posteriormente
las sucesi&as de incremento o decremento del mismo. La inicialiacin consiste en asignarle al contador
un &alor. Se situar antes y #uera del "ucle.
HE
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
4epresentacin!
Tnom"re del contadorU j nom"re del contadorU ? T&alor constanteU
Si en &e de incremento es decremento se coloca un menos en lugar del ms.
+jemplo! i O i ? 8
ACUMULADOR O TOTALI^ADOR!
+s una &aria"le %ue suma so"re s- misma un conjunto de &alores para de esta manera tener la suma de
todos ellos en una sola &aria"le. La di#erencia entre un contador y un acumulador es %ue mientras el
primero &a aumentando de uno en uno' el acumulador &a aumentando en una cantidad &aria"le.
4epresentacin! TNom"re del acumuladorU j Tnom"re del acumuladorU ? T&alor &aria"leU
0. Lenguaes !e progra"ac#$n estructura!a.
0.1 9u#cW Qas#c.
(#recuentemente a"re&iado' correctamente' como G0' o incorrectamente' como G0asic) es un
descendiente del lenguaje de programacin 0AS1C %ue Microso#t Corporation desarroll para su uso con
el sistema operati&o MS;.$S. +sta"a ligeramente "asado en =c;0AS1C pero aad-a tipos de#inidos por
el usuario' estructuras de programacin mejoradas' mejores gr#icos y soporte de disco' y un compilador
adems del int*rprete. Microso#t sac a la &enta Guicd0asic como un pa%uete de desarrollo comercial.
HF
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Microso#t pu"lic la primera &ersin de Guicd0AS1C el 8I de agosto de 8JIE' en un nico dis%uete de
E.BE5. Guicd0AS1C usa"a un entorno de desarrollo integrado (1.+) radicalmente di#erente al %ue
acompaa"a a las &ersiones anteriores de 0AS1C. Los nmeros de l-nea ya no eran necesarios puesto %ue
los usuarios pod-an insertar y %uitar l-neas directamente mediante un editor de te,tos en pantalla.
Guicd0AS1C inclu-a el 5Compilador PC 0AS1C5' %ue ser&-a para compilar los programas en ejecuta"les
.$S. +l editor pose-a un int*rprete con el cual el usuario pod-a ejecutar un programa sin tener %ue cerrar
el editor en a"soluto' y pod-a usarse para depurar un programa antes de crear el #ic9ero ejecuta"le.
.esgraciadamente' 9a"-a ciertas pe%ueas di#erencias entre el int*rprete y el compilador' por lo %ue
programas %ue ejecuta"an per#ectamente en el int*rprete no lo 9ac-an en su &ersin compilada o incluso
no llega"an a compilar.
La ltima &ersin de Guicd0AS1C #ue la D.E aun%ue se sigui desarrollando como el Pro#essional
.e&elopment System (P.S)' cuya ltima &ersin #ue la H.8. A la &ersin P.S tam"i*n se le llam a &eces
Guicd0AS1C +,tendido. +l sucesor de Guicd0AS1C y P.S #ue 2isual 0asic 8.7' %ue sali en dos
&ersiones incompati"les entre s-' una para .$S y otra para cindo:s. Las &ersiones posteriores de 2isual
0asic no inclu-an &ersiones para .$S' ya %ue Microso#t %uer-a %ue los desarrolladores se concentraran en
las aplicaciones para cindo:s.
A partir de MS;.$S E' las &ersiones de .$S inclu-an un sustituto de =c;0AS1C "asado en
Guicd0AS1C D.E. +se sustituto se llama"a G0AS1C. +n comparacin con Guicd0AS1C' est limitado ya
%ue le #altan unas pocas #unciones' slo puede manejar programas de un tamao limitado' no tiene
soporte para mdulos separados' y slo es int*rprete. Al carecer de compilador' no puede producir
directamente programas ejecuta"les' aun%ue los programas desarrollados con G0AS1C pueden ser
compilados mediante Guicd0asic D.E' P.S H.8 o 20.$S 8.7' si se dispone de alguno de ellos.
0./ Pascal.
Pascal es un lenguaje de programacin ideado en 8JFI por Nidlaus cirt9 en buric9' como una e&olucin
del lenguaje AL=$L F7. Su nom"re es en 9onor del matemtico #ranc*s 0laise Pascal' %ue cre una
m%uina de calcular. +ste lenguaje #ue el primero en incorporarse a los conceptos de la programacin
estructurada. Na sido de#inido un estndar del lenguaje Pascal por ANS1>1S$ en 8JJ7.
Pascal es un lenguaje de programacin desarrollado por un pro#esor suio llamado Nidlaus cirt9 a
#inales de los aos F7. Su o"jeti&o era crear un lenguaje %ue #acilitara el aprendiaje de la programacin a
sus alumnos. Sin em"argo con el tiempo su utiliacin e,cedi el m"ito acad*mico para con&ertirse en
una 9erramienta para la creacin de aplicaciones de todo tipo.
Pascal se caracteria por ser un lenguaje de programacin estructurado #uertemente tipado. +sto implica
%ue!
+l cdigo esta di&idido en porciones #cilmente legi"les llamadas fnciones o procedimientos. .e esta
#orma Pascal #acilita la utiliacin de la programacin estrctrada en oposicin al antiguo estilo de
programacin monol)tica.
+l tipo de dato de todas las &aria"les de"e ser declarado pre&iamente para %ue su uso %uede 9a"ilitado.
+l nom"re de Pascal #ue escogido en 9onor al matemtico 0laise Pascal.
HH
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
9aracter7sticas !nicas.
A di#erencia de lenguajes de programacin descendientes de C' Pascal utilia el s-m"olo !O para la
asignacin en &e de O. Si "ien el segundo es ms conciso' la prctica 9a demostrado %ue muc9os
usuarios utilian el s-m"olo de igualdad para comparar &alores en lugar del comparador de C %ue es el
s-m"olo OO. +sta sinta,is conduce a muc9os errores V"ugsW di#-ciles de rastrear en cdigo C. .ado %ue
Pascal no permite dentro de e,presiones y utilia sinta,is distinta para asignaciones y comparaciones' no
su#re estos errores.
$tra di#erencia importante es %ue en Pascal' el tipo de una &aria"le se #ija en su de#inicin3 la asignacin
a &aria"les de &alores de tipo incompati"le no estn autoriadas (+n C' en cam"io' el compilador 9ace el
mejor es#uero para dar una interpretacin a casi todo tipo de asignaciones). +sto pre&iene errores
comunes donde &aria"les son usadas incorrectamente por%ue el tipo es desconocido. +sto tam"i*n e&ita la
necesidad de notacin 9ngara' esto es pre#ijos %ue se aaden a los nom"res de las &aria"les y %ue indican
su tipo.
'mplementaciones.
Las primeras &ersiones del compilador de Pascal' entre ellas la ms distri"uida #ue /CS. Pascal'
traduc-an el lenguaje en cdigo para una m%uina &irtual llamada m%uina;P. La gran &entaja de este
en#o%ue es %ue para tener un compilador de Pascal en una nue&a ar%uitectura de m%uina solo 9ac-a #alta
reimplementar la m%uina;P. Como consecuencia de esto' solo una pe%uea parte del interprete ten-a %ue
ser reescrita 9acia muc9as ar%uitecturas.
+n los aos 8JI7' Anders Nejls"erg escri"i el compilador 0lue La"el Pascal para la Nascom;B. Ms
tarde #ue a tra"ajar para 0orland y reescri"i su compilador %ue se con&irti en Tur"o Pascal para la 10M
PC. +ste nue&o compilador se &endi por kDJ' un precio orientado a la distri"ucin masi&a.
+l econmico compilador de 0orland tu&o una larga in#luencia en la comunidad de Pascal %ue comen a
utiliar principalmente en el 10M PC. Muc9os a#icionados a la PC en "usca de un lenguaje estructurado
reemplaaron el 0AS1C por este producto. .ado %ue Tur"o Pascal' solo esta"a disponi"le para una
ar%uitectura' traduc-a directamente 9acia al cdigo de m%uina del 1ntel I7II' logrando construir
programas %ue corr-an muc9o ms rpidamente %ue los producidos en los es%uemas interpretados.
.urante los aos 8JJ7' estu&o disponi"le la tecnolog-a para construir compiladores %ue pudieran producir
cdigo para di#erentes ar%uitecturas de 9ard:are. +sto permiti %ue los compiladores de Pascal tradujeran
directamente a cdigo de la ar%uitectura donde correr-a.
Con Tur"o Pascal &ersin E' 0orland' agreg programacin orientada a o"jetos a Pascal.
Sin em"argo' 0orland despu*s decidi mejorar esa e,tensin del lenguaje introduciendo su producto
.elp9i' diseado a partir de estndar .bject Pascal propuesto por Apple como "ase. 0orland tam"i*n lo
llam $"ject Pascal en las primeras &ersiones' pero cam"io el nom"re a lenguaje de programacin .elp9i
en sus ltimas &ersiones.
0.0 C.
C es un lenguaje de programacin creado en 8JFJ por Aen T9ompson y .ennis M. 4itc9ie en los
La"oratorios 0ell como e&olucin del anterior lenguaje 0' a su &e "asado en 0CPL. Al igual %ue 0' es
un lenguaje orientado a la implementacin de Sistemas $perati&os' concretamente /ni,. C es apreciado
por la e#iciencia del cdigo %ue produce y es el lenguaje de programacin ms popular para crear
so#t:are de sistemas' aun%ue tam"i*n se utilia para crear aplicaciones.
HI
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Se trata de un lenguaje #uertemente tipado de medio ni&el pero con muc9as caracter-sticas de "ajo ni&el.
.ispone de las estructuras t-picas de los lenguajes de alto ni&el pero' a su &e' dispone de construcciones
del lenguaje %ue permiten un control a muy "ajo ni&el. Los compiladores suelen o#recer e,tensiones al
lenguaje %ue posi"ilitan meclar cdigo en ensam"lador con cdigo C o acceder directamente a memoria
o dispositi&os peri#*ricos.
La primera estandariacin del lenguaje C #ue en ANS1' con el estndar eC.8EJ;8JIJ. +l lenguaje %ue
de#ine este estndar #ue conocido &ulgarmente como ANS1 C. Posteriormente' en 8JJ7' #ue rati#icado
como estndar 1S$ (1S$>1+C JIJJ!8JJ7). La adopcin de este estndar es muy amplia por lo %ue' si los
programas creados lo siguen' el cdigo es porta"le entre plata#ormas y>o ar%uitecturas. +n la prctica' los
programadores suelen usar elementos no;porta"les dependientes del compilador o del sistema operati&o.
Iistoria
Desarrollo #n#c#al
+l desarrollo inicial de C se lle& a ca"o en los La"oratorios 0ell de AThT entre 8JFJ y 8JHC3 segn
4itc9ie' el periodo ms creati&o tu&o lugar en 8JHB. Se le dio el nom"re 5C5 por%ue muc9as de sus
caracter-sticas #ueron tomadas de un lenguaje anterior llamado 505.
Nay muc9as leyendas acerca del origen de C y el sistema operati&o con el %ue est -ntimamente
relacionado' /ni,. Algunas de ellas son!
+l desarrollo de C #ue el resultado del deseo de los programadores de jugar con Space Tra&el. Na"-an
estado jugando en el main#rame de su compa-a' pero de"ido a su poca capacidad de proceso y al tener
%ue soportar 877 usuarios' T9ompson y 4itc9ie no ten-an su#iciente control so"re la na&e para e&itar
colisiones con los asteroides. Por ese moti&o decidieron portar el juego a un P.P;H de la o#icina %ue no se
utilia"a3 pero esa m%uina no ten-a sistema operati&o' as- %ue decidieron escri"ir uno. <inalmente
decidieron portar el sistema operati&o del P.P;88 %ue 9a"-a en su o#icina' pero era muy costoso' pues
todo el cdigo esta"a escrito en lenguaje ensam"lador. +ntonces decidieron usar un lenguaje de alto ni&el
y porta"le para %ue el sistema operati&o se pudiera portar #cilmente de un ordenador a otro.
Consideraron usar 0' pero carec-a de las #uncionalidades necesarias para apro&ec9ar algunas
caracter-sticas a&anadas del P.P;88. +ntonces empearon a crear un nue&o lenguaje' C.
La justi#icacin para o"tener el ordenador original %ue se us para desarrollar /ni, #ue crear un sistema
%ue automatiase el arc9i&o de patentes. La &ersin original de /ni, se desarroll en lenguaje
ensam"lador. Ms tarde' el lenguaje C se desarroll para poder reescri"ir el sistema operati&o.
+n 8JHC' el lenguaje C se 9a"-a &uelto tan potente %ue la mayor parte del dernel /ni,' originalmente escrito en el lenguaje
ensam"lador P.P;88>B7' #ue reescrita en C. +ste #ue uno de los primeros ncleos de sistema operati&o implementados en un
lenguaje distinto al ensam"lador. (Algunos casos anteriores son el sistema Multics' escrito en PL>1' y Master Control Program
para el 0E777 de 0urroug9s' escrito en Algol en 8JF8).
UNIDAD A. PROGRAMACIN ORIENTADA A OQXETO,.
La Progra"ac#$n Or#enta!a a O(etos -POO u OOP segn siglas en ingl*s) es un paradigma de
programacin %ue de#ine los programas en t*rminos de 5clases de o"jetos5' o"jetos %ue son entidades %ue
com"inan estado (es decir' datos)' comportamiento (esto es' procedimientos o mtodos) e identidad
(propiedad del o"jeto %ue lo di#erencia del resto). La programacin orientada a o"jetos e,presa un
HJ
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
programa como un conjunto de estos o"jetos' %ue cola"oran entre ellos para realiar tareas. +sto permite
9acer los programas y mdulos ms #ciles de escri"ir' mantener y reutiliar.
.e esta #orma' un o"jeto contiene toda la in#ormacin' (los denominados atri"utos) %ue permite de#inirlo
e identi#icarlo #rente a otros o"jetos pertenecientes a otras clases (e incluso entre o"jetos de una misma
clase' al poder tener &alores "ien di#erenciados en sus atri"utos). A su &e' dispone de mecanismos de
interaccin (los llamados m*todos) %ue #a&orecen la comunicacin entre o"jetos (de una misma clase o de
distintas)' y en consecuencia' el cam"io de estado en los propios o"jetos. +sta caracter-stica lle&a a
tratarlos como unidades indi&isi"les' en las %ue no se separan (ni de"en separarse) in#ormacin (datos) y
procesamiento (m*todos).
.ada esta propiedad de conjunto de una clase de o"jetos' %ue al contar con una serie de atri"utos
de#initorios' re%uiere de unos m*todos para poder tratarlos (lo %ue 9ace %ue am"os conceptos estn
-ntimamente entrelaados)' el programador de"e pensar indistintamente en am"os t*rminos' ya %ue no
de"e nunca separar o dar mayor importancia a los atri"utos en #a&or de los m*todos' ni &ice&ersa. Nacerlo
puede lle&ar al programador a seguir el 9"ito errneo de crear clases contenedoras de in#ormacin por un
lado y clases con m*todos %ue manejen esa in#ormacin por otro (llegando a una programacin
estructurada camu#lada en un lenguaje de programacin orientado a o"jetos).
+sto di#iere de los lenguajes imperati&os tradicionales' en los %ue los datos y los procedimientos estn
separados y sin relacin' ya %ue lo nico %ue se "usca es el procesamiento de unos datos de entrada para
o"tener otros de salida. La programacin estructurada anima al programador a pensar so"re todo en
t*rminos de procedimientos o #unciones' y en segundo lugar en las estructuras de datos %ue esos
procedimientos manejan. Los programadores de lenguajes imperati&os escri"en #unciones y despu*s les
pasan datos. Los programadores %ue emplean lenguajes orientados a o"jetos de#inen o"jetos con datos y
m*todos y despu*s en&-an mensajes a los o"jetos diciendo %u* realicen esos m*todos en s- mismos.
Origen
Los conceptos de la programacin orientada a o"jetos tienen origen en Simula FH' un lenguaje diseado
para 9acer simulaciones' creado por $le;@o9an .a9l y Aristen Nygaard del Centro de Cmputo Noruego
en $slo. Segn se in#orma' la 9istoria es %ue tra"aja"an en simulaciones de na&es' y #ueron con#undidos
por la e,plosin com"inatoria de cmo las di&ersas cualidades de di&ersas na&es pod-an a#ectar unas a las
otras. La idea ocurri para agrupar los di&ersos tipos de na&es en di&ersas clases de o"jetos' siendo
responsa"le cada clase de o"jetos de de#inir sus propios datos y comportamiento. <ueron re#inados ms
tarde en Smalltald' %ue #ue desarrollado en Simula en eero, PA4C (y cuya primera &ersin #ue escrita
so"re 0asic) pero diseado para ser un sistema completamente dinmico en el cual los o"jetos se podr-an
crear y modi#icar 5en marc9a5 en lugar de tener un sistema "asado en programas estticos.
La programacin orientada a o"jetos tom posicin como la metodolog-a de programacin dominante a
mediados de los aos oc9enta' en gran parte de"ido a la in#luencia de C?? ' una e,tensin del lenguaje de
programacin C. Su dominacin #ue consolidada gracias al auge de las 1nter#aces gr#icas de usuario' para
los cuales la programacin orientada a o"jetos est particularmente "ien adaptada. +n este caso' se 9a"la
tam"i*n de programacin orientada a e&entos.
Las caracter-sticas de orientacin a o"jetos #ueron agregadas a muc9os lenguajes e,istentes durante ese
tiempo' incluyendo Ada' 0AS1C' Lisp' Pascal' y otros. La adicin de estas caracter-sticas a los lenguajes
%ue no #ueron diseados inicialmente para ellas condujo a menudo a pro"lemas de compati"ilidad y a la
capacidad de mantenimiento del cdigo. Los lenguajes orientados a o"jetos 5puros5' por otra parte'
carec-an de las caracter-sticas de las cuales muc9os programadores 9a"-an &enido a depender. Para saltar
este o"stculo' se 9icieron muc9as tentati&as para crear nue&os lenguajes "asados en m*todos orientados
a o"jetos' pero permitiendo algunas caracter-sticas imperati&as de maneras 5seguras5. +l +i##el de
I7
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
0ertrand Meyer #ue un temprano y moderadamente acertado lenguaje con esos o"jeti&os pero a9ora 9a
sido esencialmente reemplaado por @a&a' en gran parte de"ido a la aparicin de 1nternet' y a la
implementacin de la m%uina &irtual de @a&a en la mayor-a de na&egadores.
(a Programacin Orientada a O%)etos *POO+ como solcin
La programacin orientada a o"jetos es una nue&a #orma de programar %ue trata de encontrar solucin a
estos pro"lemas. 1ntroduce nue&os conceptos' %ue superan y ampl-an conceptos antiguos ya conocidos.
+ntre ellos destacan los siguientes!
O(eto! entidad pro&ista de un conjunto de propiedades o atri"utos (datos) y de comportamiento o
#uncionalidad (5m*todos5). Corresponden a los o"jetos reales del mundo %ue nos rodea' o a o"jetos
internos del sistema (del programa).
Clase! de#iniciones de las propiedades y comportamiento de un tipo de o"jeto concreto. La instanciacin
es la lectura de estas de#iniciones y la creacin de un o"jeto a partir de ellas.
M4to!o! algoritmo asociado a un o"jeto (o a una clase de o"jetos)' cuya ejecucin se desencadena tras la
recepcin de un 5mensaje5. .esde el punto de &ista del comportamiento' es lo %ue el o"jeto puede 9acer.
/n m*todo puede producir un cam"io en las propiedades del o"jeto' o la generacin de un 5e&ento5 con
un nue&o mensaje para otro o"jeto del sistema.
E)ento! un suceso en el sistema (tal como una interaccin del usuario con la m%uina' o un mensaje
en&iado por un o"jeto). +l sistema maneja el e&ento en&iando el mensaje adecuado al o"jeto pertinente.
Mensae! una comunicacin dirigida a un o"jeto' %ue le ordena %ue ejecute uno de sus m*todos con
ciertos parmetros asociados al e&ento %ue lo gener.
Prop#e!a! o atr#(uto! contenedor de un tipo de datos asociados a un o"jeto (o a una clase de o"jetos)'
%ue 9ace los datos &isi"les desde #uera del o"jeto' y cuyo &alor puede ser alterado por la ejecucin de
algn m*todo.
Esta!o #nterno! es una propiedad in&isi"le de los o"jetos' %ue puede ser nicamente accedida y alterada
por un m*todo del o"jeto' y %ue se utilia para indicar distintas situaciones posi"les para el o"jeto (o clase
de o"jetos).
+n comparacin con un lenguaje imperati&o' una 5&aria"le5 no es ms %ue un contenedor interno del
atri"uto del o"jeto o de un estado interno' as- como la 5#uncin5 es un procedimiento interno del m*todo
del o"jeto.
Caractersticas de la POO
Nay un cierto desacuerdo so"re e,actamente %u* caracter-sticas de un m*todo de programacin o
lenguaje le de#inen como 5orientado a o"jetos5' pero 9ay un consenso general en %ue las caracter-sticas
siguientes son las ms importantes (para ms in#ormacin' seguir los enlaces respecti&os)!
A(stracc#$n! cada o"jeto en el sistema sir&e como modelo de un 5agente5 a"stracto %ue puede realiar
tra"ajo' in#ormar y cam"iar su estado' y 5comunicarse5 con otros o"jetos en el sistema sin re&elar cmo se
implementan estas caracter-sticas. Los procesos' las #unciones o los m*todos pueden tam"i*n ser
a"stra-dos y cuando lo estn' una &ariedad de t*cnicas son re%ueridas para ampliar una a"straccin.
I8
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
Encapsula"#ento! tam"i*n llamado 5ocultacin de la in#ormacin5. Cada o"jeto est aislado del e,terior'
es un mdulo natural' y cada tipo de o"jeto e,pone una interfaz a otros o"jetos %ue especi#ica cmo
pueden interactuar con los o"jetos de la clase. +l aislamiento protege a las propiedades de un o"jeto
contra su modi#icacin por %uien no tenga derec9o a acceder a ellas' solamente los propios m*todos
internos del o"jeto pueden acceder a su estado. +sto asegura %ue otros o"jetos no pueden cam"iar el
estado interno de un o"jeto de maneras inesperadas' eliminando e#ectos secundarios e interacciones
inesperadas. Algunos lenguajes relajan esto' permitiendo un acceso directo a los datos internos del o"jeto
de una manera controlada y limitando el grado de a"straccin. La aplicacin entera se reduce a un
agregado o rompeca"eas de o"jetos.
Pol#"or%#s"o! comportamientos di#erentes' asociados a o"jetos distintos' pueden compartir el mismo
nom"re' al llamarlos por ese nom"re se utiliar el comportamiento correspondiente al o"jeto %ue se est*
usando. $ dic9o de otro modo' las re#erencias y las colecciones de o"jetos pueden contener o"jetos de
di#erentes tipos' y la in&ocacin de un comportamiento en una re#erencia producir el comportamiento
correcto para el tipo real del o"jeto re#erenciado. Cuando esto ocurre en 5tiempo de ejecucin5' esta
ltima caracter-stica se llama asignacin tard)a o asignacin dinmica. Algunos lenguajes proporcionan
medios ms estticos (en 5tiempo de compilacin5) de polimor#ismo' tales como las plantillas y la
so"recarga de operadores de C??.
<erenc#a! las clases no estn aisladas' sino %ue se relacionan entre s-' #ormando una jerar%u-a de
clasi#icacin. Los o"jetos 9eredan las propiedades y el comportamiento de todas las clases a las %ue
pertenecen. La 9erencia organia y #acilita el polimor#ismo y el encapsulamiento permitiendo a los
o"jetos ser de#inidos y creados como tipos especialiados de o"jetos pree,istentes. +stos pueden
compartir (y e,tender) su comportamiento sin tener %ue reimplementar su comportamiento. +sto suele
9acerse 9a"itualmente agrupando los o"jetos en clases y estas en rboles o enrejados %ue re#lejan un
comportamiento comn. Cuando un o"jeto pertenece a ms de una clase se llama 9erencia mltiple3 esta
caracter-stica no est soportada por algunos lenguajes (como @a&a).
(enga)es orientados a o%)etos
+ntre los lenguajes orientados a o"jetos destacan los siguientes!
A!a
CLL
C\
AQ.NET
Clar#on
Delp3#
E#%%el
Xa)a
LeF#co -en castellano.
O(ect#)e+C
Oca"l
O7
P<P
Po5erQu#l!er
P@t3on
Ru(@
,"alltalW
IB
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
9onceptos generales de la programacin orientada a objetos.
-lase! +s una plantilla %ue de#ine la estructura de un conjunto de o"jetos' %ue al ser creados se
llamarn las instancias de la clase. +sta estructura est compuesta por la de#inicin de los atri"utos
y la implementacin de las operaciones (m*todos).
.bjeto! +s la instanciacin de una clase' es decir' una ocurrencia de esta' %ue tiene los atri"utos
de#inidos por la clase' y so"re la %ue se puede ejecutar las operaciones de#inidas en ella.
/dentidad! Caracteristica de cada o"jeto %ue lo di#erencia de los dems' incluyendo de a%uellos
%ue pudieran pertenecer a la misma clase y tener los mismos &alores en sus atri"utos.
0erencia1 La 9erencia es uno de los mecanismos de la programacin orientada a o"jetos' por
medio del cual una clase se deri&a de otra de manera %ue e,tiende su #uncionalidad. /na de sus
#unciones ms importantes es la de pro&eer Polimor#ismo y late binding.
La idea es la de partir de las situaciones ms generales e ir derivando 9acia las ms particulares' creando
categor-as' de la misma #orma en %ue piensa el ser 9umano.
1. Espec#%#cac#ones para el pseu!oc$!#go.
1.1 Declarac#$n !e clases @ su(clases.
1./ Declarac#$n !e o(etos? !atos estructura!os @ "4to!os.
1.0 Operac#ones (&s#cas entre o(etos.
/. Proceso para el !esarrollo !e soluc#ones.
La "eto!olog1a !e "o!ela!o de o"jetos tiene las siguientes etapas.
An&l#s#s. +l m*todo de anlisis es una a"straccin precisa y concisa de los re%uerimientos del usuario
so"re lo %ue realiar el sistema y no como lo 9ar. /n "uen modelado puede ser entendido y croticado
por e,pertos de la aplicacin %ue no son programadores.
A(stracc#$n. Consiste en en#ocar aspectos esenciales de una entidad e ignorar las propiedades
accidentales.
D#se6o !el s#ste"a. +l o"jeti&o es organiar en su"sistemas "asados en la estructura del anlisis y la
ar%uitectura propuesta.
D#se6o !e o(etos. +l diseador adiciona detalles al modelo del diseo de acuerdo a la estrategia
esta"lecida durante el diseo del sistema.
I"ple"entac#$n. La programacin de"e ser relati&amente meenor y una parte mecnica del ciclo de
desarrollo' por%ue las decisiones di#-ciles de"en 9acerse durante el diseo.
M4to!os. /n m*todo es la implementacin de una operacin para una clase. Sin em"argo' cada m*todo
de"e ser iplementado por di#erentes pieas de cdigo y dependen slo de la clase del o"jeto.
IC
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
/.1 De%#n#c#$n !el pro(le"a.
/./ I!ent#%#car los o(etos @ sus clases.
/.0 De%#n#r los "4to!os re'uer#!os para ca!a o(eto @ clase.
/.> Desarrollo !el progra"a pr#nc#pal.
ID
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
0. Lenguaes !e progra"ac#$n or#enta!a a o(etos.
0.1 ,"alltalW
,"alltalW es un sistema in#ormtico %ue permite realiar tareas de computacin mediante la interaccin
con un entorno de o"jetos &irtuales. Se puede considerar %ue un Smalltald es un mundo &irtual donde
&i&en $"jetos %ue se comunican mediante el en&io de mensajes.
/n sistema Smalltald esta compuesto por!
M%uina &irtual
1magen &irtual %ue contiene todos los o"jetos del sistema
Lenguaje de programacin (tam"i*n conocido como ,"alltalW)
0i"lioteca de $"jetos reusa"les
+ntorno de desarrollo
Los or-genes de ,"alltalW se encuentran en las in&estigaciones realiadas por Alan Aay' .an 1ngalls' Ted
Aae9ler' Adele =old"erg y otros durante los aos setenta en el Palo Alto 4esearc9 1nstitute de eero,
(conocido como 2ero' Parc)' para la creacin de un sistema in#ormtico orientado a la educacin. +l
o"jeti&o era crear un sistema %ue permitiese e,pandir la creati&idad de sus usuarios' proporcionando un
entorno para la e,perimentacin' creacin e in&estigacin.
Se "usca %ue todo lo %ue se pueda realiar con un ordenador se pueda realiar mediante un Sistema
Smalltald' por lo %ue en algunos casos se puede considerar %ue incluso sir&e como Sistema $perati&o.
Smalltald es considerado el primero de los lenguajes orientados a o"jetos ($$P). +n Smalltald T$.$ es
un o"jeto' incluidos los nmeros reales o el propio entorno ,"alltalW.
Como lenguaje tiene las siguientes caracter-sticas!
$rientacin a $"jetos Pura
Tipado dinmico
1nteraccin entre o"jetos mediante en&io de mensajes
Nerencia simple y con ra- comn
4e#le,in completa
4ecoleccin de "asura
Multiplata#orma
1nterpretado
,"alltalW 9a tenido gran in#luencia so"re otros lenguajes como @a&a o 4u"y' y de su entorno 9an surgido
muc9as de las prcticas y 9erramientas de desarrollo promulgadas actualmente por las metodolog-as
giles (re#actoriacin' desarrollo incremental' desarrollo dirigido por tests' etc.).
A pesar de ser un lenguaje muy simple' muy poderoso' y %ue promue&e "uenas prcticas de
programacin' Smalltald (9asta el B77B) no 9a"-a llegado a ser un lenguaje muy popular. +sto se de"e a la
poca aceptacin de lenguajes interpretados en los aos 8JI7 y 8JJ7. A pesar de esto algunas empresas
IE
Tutorial de Lgica Computacional y Programacin M.S.C. Alejandro Crdenas Ne
como .igitald' 2isual cords e 10M llegaron a tener relati&o *,ito con la plata#orma como una
9erramienta de desarrollo rpido %ue compet-a contra 9erramientas como Po:er 0uilder y en menor
grado contra 2isual 0asic %ue eran muy populares en los aos I7 y J7.
0.0 CLL
C?? es un lenguaje de programacin' diseado a mediados de los oc9enta' por 0jarne Stroustrup' como
e,tensin del lenguaje de programacin C.
+s un lenguaje 9-"rido' %ue se puede compilar y resulta ms sencillo de aprender para los programadores
%ue ya conocen C. Actualmente e,iste un estndar' denominado 1S$ C??' al %ue se 9an ad9erido la
mayor-a de los #a"ricantes de compiladores ms modernos. +,isten tam"i*n algunos int*rpretes como
4$$T (enlace e,terno). Las principales caracter-sticas del C?? son! el soporte para programacin
orientada a o"jetos y el soporte de plantillas o programacin gen*rica (templates). Por ende' se puede
decir %ue C?? es un lenguaje %ue a"arca tres paradigmas de la programacin! La programacin
estructurada' la programacin gen*rica y la programacin orientada a o"jetos.
Adems posee una serie de propiedades di#-ciles de encontrar en otros lenguajes de alto ni&el!
Posi"ilidad de rede#inir los operadores (so"recarga de operadores)
1denti#icacin de tipos en tiempo de ejecucin (,33/)
-44 est considerado por muc9os como el lenguaje ms potente' de"ido a %ue permite tra"ajar tanto a
alto como a "ajo ni&el' sin em"argo es a su &e uno de los %ue menos automatismos trae (o"liga a 9acerlo
casi todo manualmente al igual %ue C) lo %ue 5di#iculta5 muc9o su aprendiaje.
+l nom"re CLL #ue propuesto por 4icd Masciatti en el ao 8JIC' cuando el lenguaje #ue utiliado por
primera &e #uera de un la"oratorio cient-#ico. Antes se 9a"-a usado el nom"re 5C con clases5. +n C??'
5C??5 signi#ica 5uno ms de C5 y se re#iere a %ue C?? es una e,tensin de C.
0.0 Tur(o Pascal.
Tur(o Pascal o Qorlan! Pascal es el 1.+ ms utiliado en am"ientes MS;.$S a la 9ora de programar
en Pascal. Creado por 0orland' es el predecesor del 1.+ .elp9i.
La primera &ersin data de 8JIC. A partir de la &ersin E.E' pu"licada en 8JIJ' se aade soporte para
programacin orientada a o"jetos ($"ject Pascal). +sta &ersin puede conseguirse gratuitamente en la
:e" de 0orland desde B77B.
La ltima edicin' 0orland Pascal H.7' pod-a compilar para MS;.$S y cindo:s. <ue sustituido por
.elp9i en 8JJE.
IF

Potrebbero piacerti anche