Está en la página 1de 31

Repblica Bolivariana de Venezuela

Ministerio del Poder Popular para la Defensa


Universidad Nacional Experimental Politcnica de la Fuerza Armada
Bolivariana UNEFA

Turbo pascal

Integrantes:
Materia:
Programacin.

Yorley Yanayaco
Andrea Manuitt
Juan Raymond

Caracas, 8 de junio del 2014.


FUNCIONES INCORPORADAS EN TURBO PASCAL.
FUNCIN: Una funcin es una relacin entre dos variables. Pascal ya trae unas que son
predeterminadas e incorporadas,
EFECTO

TIPO DE

PARMETRO

FUNCION

TIPO DE
RESULTAD
O
Entero o real

Abs(x)

Calcula valor absoluto de x

Entero o real

*Arctan(x)

Calcula arcotangente de x

Entero o real

Real

* Cos(x)

Calcula coseno de x

Entero o real

Real

Exp(x)

Calcula exponencial de x ( ex )

Entero o real

Real

Frac(x)

Devuelve parte decimal de x

Real

Real

Int(x)

Devuelve parte entera de x

Real

Real

Ln(x)

Calcula logaritmo natural de x

Entero o real

Real

Pi

Devuelve el valor de Pi (3.1415)

Real

Real

Entero o Real

Entero

Redondea el valor de x al entero positivo ms


Round(x)

prximo.
Roun(-x) = Round(x)

* Sin(x)

Calcula seno de x

Entero o Real

Real

Sqr(x)

Calcula cuadrado de x

Entero o Real

Entero o Real

Sqrt(x)

Calcula raiz cuadrada de x (x>=0)

Entero o Real

Real

Trunc(x)

Suprime la parte decimal de x

Real

Entero

Log10(x)

Logaritmo base 10

Entero o Real

Real

Mod

Calcula el resto de una divisin

Entero o Real

Entero o Real

NOTA1: las funciones marcadas con un * significa que el argumento es siempre en radianes.
NOTA2: la expresin XY se escribe en Turbo Pascal de la siguiente manera:

Exp(Y*Ln(x)

Ejemplo de funciones predefinidas.


*Trunc(5.2) = 5 Trunc(5.99) = 5 Trunc(-3.14) = -3 Round(4.44) = 4
* Round(18.5) = 19 Round(-7.15) = -7 Round(0.7) = 1 Abs(-63) = 63
*Abs(3.97) = 3.97 Frac(28.437) = 0.437 Int(45.438) = 45.0 Exp(4.5) = e4.5 = 2.7982824.5

Si operando1 es 0, el resultado de la operacin div o mod no est definido


Si operando2 es negativo, el resultado de la operacin mod est indefinido
Otras funciones que utilizaremos en el curso son las siguientes:
*Funcin UPCASE: cambia las letras minsculas a letras MAYSCULAS las deja igual.
Forma: UPCASE (s); donde s es una expresin tipo char
Ejemplo:
UPCASE(a)
A
UPCASE(A)
A
*Funcin RANDOM: devuelve un nmero pseudoaleatoreo.
donde n debe ser una expresin entera de valor mayor que 0, de ser 0 o negativo se
produce un error.
n es opcional

Forma: RANDOM (n)


Si no existe n la funcin devuelve un nmero pseudoaleatorio en el rango:
0<= nmero < 1
Si n existe la funcin devuelve un nmero entero pesudoaleatorio en el rango:
0<= nmero < n

Funciones y Procedimientos en Pascal


INTRODUCCIN AL TURBO
PASCAL.
El lenguaje Turbo Pascal se caracteriza por ser un lenguaje de propsito general (puede usarse en
un gran nmero de diversas aplicaciones), es un lenguaje procedimental, es estructurado (usa
las estructuras repeat, for, while y no necesita go to) y recursivo, y posee una gran riqueza
de tipos de datos.
Un programa en PASCAL es un conjunto de instrucciones o sentencias, escritas segn ciertas
reglas, para realizar operaciones sobre entidades de datos conocidas como constantes, variables y
resultados de funciones.
Estructura de un programa haciendo uso del lenguaje Turbo Pascal:
PROGRAM identificador
USES

Encabezamiento

asocia una serie de rutinas


de control de pantalla

LABEL

declaracin de etiquetas

CONST

definicin de constantes

Seccin de declaraciones y

TYPE

declaracin de tipos de datos

definiciones

definidos por el usuario


declaracin de variables

VAR
FUNCTION

>PROCEDURE Declaraciones y cuerpo

Seccin de subprogramas

de los subprogramas
BEGIN
Sentencias
o
instrucciones
END.

Cuerpo del programa o


Seccin Ejecutable

El encabezamiento
Un programa escrito en PASCAL empieza siempre con un encabezamiento que consiste en:
La palabra reservada PROGRAM.
El nombre del programa.
Los nombres de los ficheros externos que se usan para entrada y salida. Se escriben
separados por comas y entre parntesis.
El delimitador punto y coma.

La seccin de las declaraciones


Todas las entidades definidas por el usuario que se usan en un programa deben ser
declaradas en esta seccin, indicando un identificador y lo que representa.
ETIQUETAS

(LABEL)

CONSTANTES

(CONST) TIPOS

(TYPE) VARIABLES

(VAR)

PROCEDIMIENTOS

(PROCEDURE)

FUNCIONES

(FUNCTION)

No es necesario que un programa contenga declaraciones de todas esas categoras.


Las declaraciones pueden escribirse en un orden cualquiera.
Una misma clase de declaracin puede aparecer ms de una vez. Pero una
declaracin particular no se puede repetir en un bloque.
Las etiquetas son enteros decimales que pueden usarse para sealar alguna sentencia
y hacerla accesible mediante la sentencia GOTO.
Ejemplo:
TYPE estaciones = (primavera, verano, otoo, invierno) ; VAR letra :
CHAR;
CONST pi = 3.1416 ; LABEL 100,
200, 300 ;
La seccin ejecutable.
Contiene a las sentencias que, cuando se ejecutan, realizan las acciones del programa.
La seccin ejecutable sigue a la de las declaraciones y est delimitada por BEGIN y END,
terminando en un punto.
Entre BEGIN y END puede haber sentencias condicionales, repetitivas, sentencias de

asignacin, sentencias que controlan el flujo de la ejecucin.


OBJETOS DE UN PROGRAMA EN TURBO
PASCAL.
IDENTIFICADORES: un identificador es un nombre dado a un elemento de programa, tal
como una constante, una variable, un procedimiento, un programa, una funcin, una
unidad, un campo de registro, etc.
CARACTERSTICAS DE LOS
IDENTIFICADORES:
Secuencia de caracteres de cualquier longitud, slo los 63 primeros son significativos.
Debe comenzar por una letra (A Z) y no puede contener blancos.
Despus del primer carcter se aceptan letras, dgitos y subrayado ( _ ).
No se pueden usar palabras reservadas.
Ejemplos vlidos: N OMBRE_APELLIDO, IMPUESTO, NOTA2, H346
Ejemplos no vlidos: NOMBRE APELLIDO, EJ?AB, 23ALX, 4NOM, &NOM
NOTA: El Turbo Pascal no distingue las letras maysculas de las minsculas en los
identificadores. Ejemplo: EDAD edad Edad son identificadores vlidos e idnticos.
PALABRAS RESERVADAS: son palabras que tienen un significado especial y que no se
pueden utilizar para otros propsitos. Las palabras reservadas no se pueden usar como
identificador.
Ejemplo de palabras reservadas: ABSOLUTE, AND, ARRAY, BEGIN, CONST, DIV, DO,
DOWNTO, ELSE, END, EXTERNAL, FILE, FOR, FORWARD, FUNCTION, GOTO, IF,
IMPLEMENTATION, IN INLINE, INTERFASE, INTERRUPT, LABEL, MOD, NIL, NOT,
OF,

OR, PAKED, PROCEDURE, PROGRAM, RECORD, REPEAT, SET, SHL, SHR, STRING,
THEN, TO, TYPE, UNIT, UNTIL, USES, VAR, WHILE, WITH, XOR, etc.
DATOS: es una representacin simblica (numrica, alfabtica, algortmica etc. Cifras
originales que por si solas tienen poco significado. Son los conceptos bsicos o
elementales como el nombre de las cosas o personas, las cantidades, etc.
TIPOS DE DATOS:

DATOS NUMRICOS: conformados por dgitos, puede incluir un signo (+,-), un punto
decimal ( . ) y un exponente. No pueden contener comas ( , ) o espacios en blanco.
DATOS NUMRICOS ENTEROS (INTEGER): No contienen ni punto decimal, ni
exponente.
Ejemplo: 5 +5 -6 7343
Rango de valores posibles entre: -32768 ....32767
Enteros largos (LOGINT), su rango de valores: -2147483648 .....2147483647
DATOS NUMRICOS REALES (REAL): Deben contener punto decimal ( . ) o un
exponente o ambos.
Ejemplo: 0.0 -0.2 -314.63 0.000078 +32.45 32.45
En forma exponencial la base 10 se reemplaza por la letra E, manteniendo la forma
siguiente: nE+-dd donde n = nmero decimal y dd = exponente entero (+,- o cero) . Ejemplo:
5.2x10-4 5.2E-4 5.2e-4 -6.784E-12 7.0E5 7.0E+5
DATOS CARACTER (CHAR): slo pueden contener un caracter y deben estar encerrados
entre apstrofes. Pueden ser una letra (A Z), un dgito ( 0 9) o un caracter especial ($,*, &, etc.).
Ejemplo: A * 6
X
NOTA: No se pueden utilizar apstrofes cuando se introducen caracteres desde el
terminal.

DATOS CADENA (STRING): es una secuencia de caracteres (letras, dgitos o caracteres


especiales) escritos en una lnea sobre el programa y encerrados entre apstrofes, generalmente no
mayor de 255 caracteres.
Ejemplo: DIOS SI EXISTE COMO ESTAS? EDO.
MERIDA
6457-AL3 2X(3+D)J
DATOS LGICOS (BOOLEAN): pueden tomar slo dos valores:
true significa verdadero
false significa falso donde false < trae
CONSTANTES: son datos que no varan durante la ejecucin o vida del programa. El dato
simple se asocia a menudo a un IDENTIFICADOR que le proporciona un nombre al dato. El
identificador se dice que es una constante si se le asigna un dato permanente.
Las constantes deben ser declaradas antes de su utilizacin.
Forma de definicin de constantes:
CONST

nombre = valor;
nombre1, nombre2, . nombren = valor;

Dnde:

CONST es la palabra reservada para la declaracin de constantes


nombre es un identificador que representa el nombre de la constante
valor es el dato efectivo que se asigna al nombre, el cual puede ser entero, real,
carcter, cadena, lgico, ..., conjuntos o arreglos,.. o una expresin que se evala en
tiempo de compilacin.
; punto y coma es el elemento separador de sentencias.

Ejemplos:

CONST
Pi = 3.141592; Constante real
CUENTA = 632; Constante entera
Min = 0; Constante entera
SUMA = (2.5+40)/(3.5-4); Constante real COLOR
= AZUL; Constante cadena (string)
ANCHO,ALTO,LONG = 25; Constantes enteras
SEC = X; Constante caracter

NOTA: El tipo del valor asociado a la constante define el tipo de la constante. Los valores
de las constantes tipo cadena o caracter deben ser asignados entre apstrofes.

VARIABLES: Es un identificador cuyo valor puede cambiar durante la ejecucin del programa.
Cada variable debe ser declarada (definida) individualmente en la seccin de declaracin del
programa antes de ser utilizadas.
Forma de definicin de variables:
VAR nombre: tipo;
Donde:

VAR nombre1, nombre2, ...nombren: tipo;

VAR: es la palabra reservada para la declaracin de variables.


nombre: es el identificador que representa el nombre de la variable.
tipo: se refiere al tipo de dato contenido en la variable. Existen tantos tipos de
variables como tipos de datos diferentes.
; punto y coma es el elemento separador de sentencias.

Ejemplos:

VAR
EDAD: INTEGER;
SALARIO: REAL;
NOMB: STRING[30];
LETRA: CHAR;
NACIONALIDAD:
CHAR; CONDICION:
BOOLEAN;

NOTA: Las definiciones de constantes deben preceder a las declaraciones de variables.


Ejemplo: CONST TITULO = LA CASA DE LA CULTURA;
FRAC = 0.18453;
VAR FILA, COLUMNA:
INTEGER; SB: REAL;
COMENTARIOS: es cualquier frase encerrada entre llaves { } o entre los signos (* *) que
puede acompaar a las instrucciones de un programa, sean estas de declaraciones o
pertenecientes al cuerpo del mismo.
Ejemplo:
VAR EDAD: INTEGER; {Edad del estudiante}
Expresiones:
Las expresiones son combinaciones de constantes, variables, smbolos de operacin
(matemticos, lgicos y relacionales) y nombres de funciones que se utilizan en el cuerpo del
algoritmo. Las expresiones pueden ser simples o compuestas.

Las expresiones simples, son asignaciones directas a una variable o constante de un valor
numrico o carcter, vase el siguiente ejemplo:
Nombre de la
Expresin
A

Valor asignado
=
6

A la variable A se le asigna el valor de 6

=
DEFINITIVO

= dd/mm/aa

FE
CH
A
D
LA
R

=212
0

A la variable B se le asigna el valor


DEFINITIVO
A la variable FECHA se le asigna una
fecha dada
A la constante DOLAR se le asigna el
valor 2120

=VENEZUELA

P
A

Explicacin o anlisis

A la constante PAIS se le asigna el


valor
VENEZUELA

Una expresin compuesta es la asignacin a una variable o constante que surge de la


unin de valores numricos, operadores aritmticos, de comparacin o lgicos. Por
Ejemplo:
Nombre de
la
Expresi
n

Valor asignado

SUELDO

A la variable A se le asigna el valor 12, que


resulta de
multiplicar 6 por 2

=6*
2

ED
AD

Explicacin o anlisis

=A+B

=AOACTUAL - ANONAC

=DIASTRAB*SDIARIO

A la variable C se le asigna el valor de sumar A


+B
La variable EDAD obtendr el resultado de
restarle a la constante ANOACTUAL el
valor de la variable ANOAC
La variable SUELDO tomar el valor de
multiplicar los das trabajados contenidos en
la variable DIASTRAB por el valor de
salario diario contenido en SDIARIO

Expresiones Aritmticas
Son utilizadas para construir frmulas matemticas. Las variables y constantes utilizadas
son de naturaleza numrica, es decir nmeros enteros o reales, y las operaciones a
efectuar son de orden aritmtico.
Operadores
Aritmticos
Operadore
s
+
-

Significado
Sumar
Restar

Ejemplo
SI A=10 y
A

Interpretacin
Resultado es: 23
-

*
*
/

Multiplicar
Exponenciacin
Divisin

A
A
A

1
100.000.000.000.0
0,

REGLAS PARA EVALUAR EXPRESIONES ARITMTICAS:


1. Todas las subexpresiones entre parntesis se evalan primero. Las subexpresiones con
parntesis anidados se evalan de dentro hacia fuera. El parntesis ms interno se evala
primero.
2. Prioridad de operadores aritmticos:
* / div mod se evalan primero
+ - se evalan de ltimo
Ejemplos:
4+2*5

4+10

23*2div5

14

46div5

3+5*(10-(2+4))

3+5*(10-6)

(9+3)*5div4mod7+1

3+5*4 3+20

12*5div4mod7+1

23

60div4mod7+1

15mod7+1

1+1

Expresiones Relacionales
Se construyen a partir de los operadores relacionales (de relacin o comparacin, = , > , <
, >=, <=, <>. Los operadores relacionales sirven para expresar las condiciones en los
algoritmos. Si A=10 y B=13
Operadore
s
>
<
>
<
=
<

Significado
Mayor que
Menor que
Mayor igual
Menor igual
Igual
Diferente

Ejemplo
A
A
A
A
A
A

Interpretacin
Resultado:
VERDADERO
FAL
VERDADERO
FAL
VERDADERO

Orden de Evaluacin
Al incluir estos operadores con los operadores aritmticos, obtenemos este nuevo orden de
evaluacin:
Priorida
1
2
3
4

Operador
Contenido de parntesis ()
*,/,div,mod
+,=, <, >, <=, >=, distinto a

Contador: Un contador es una variable cuyo valor se incrementa o decrementa en una


Cantidad constante, cada vez que se produce un determinado suceso, accin o iteracin.

Acum
ulador: Un acumulador es una variable que suma sobre s misma un conjunto de valores, al
finalizar con el ciclo contendr, en una sola variable, la sumatoria de todos los
Valores, que cumplen una determinada condicin.

Unidades turbo pascal.


UNIDAD SYSTEM
Contiene los procedimientos y funciones estndar de Turbo Pascal relativas a la entrada/salida,
cadenas de caracteres, calculo en coma flotante, gestin de memoria, entre otras funciones.

Unidad CRT.
Esta unidad proporciona un conjunto de declaraciones que permiten el acceso al control de
los modos de pantalla, de teclado, posicionamiento del cursor, entre otros.
Algunos de sus procedimientos son:
clrscr: borra la pantalla.
keypressed: detecta la pulsacin de una tecla.
Sound: hace sonar el altavoz interno
window: define una ventana de texto en la pantalla.

UNIDAD DOS.
Esta unidad contiene declaraciones, constantes, tipos variables, procedimientos y
funciones relacionadas con el sistema operativo DOS y la gestin de archivos.
Algunos de sus procedimientos son:
gettime: proporciona la hora a travs del reloj interno
getdate: proporciona fecha registrada en el ordenador.
Disksize: proporciona el tamao de la unidad de almacenamiento sealada.
UNIDAD PRINTER

Esta unidad facilita la tarea del programador cuando utiliza la impresora como dispositivo de
salida. Permite enviar la salida estndar de Pascal a la impresora utilizando para ello los
procedimientos write y writeln.

LA DECLARACIN USES

Para declarar una unidad, o lo que es lo mismo, dejarla lista para ser utilizada, se utiliza la
palabra reservada USES que debe ir inmediatamente despus de la sentencia
PROGRAM, despus se escriben los nombres de las unidades que se utilizarn:

Reglas sintcticas

El punto y coma ( ; ) y el punto ( . ) son DELIMITADORES en PASCAL.


El punto y coma separa sentencias consecutivas. Tambin se usa para terminar el
encabezamiento del programa y las declaraciones de los datos. No es necesario escribir
punto y coma despus de la palabra BEGIN ni antes de la palabra END porque BEGIN y
END no son sentencias.
El punto indica el final del programa.
Las palabras BEGIN y END tambin son delimitadores, no son sentencias. Se usan
para separar las partes funcionales de un programa. Con ellas se indica el principio y el final
de la seccin ejecutable. Tambin sirven para delimitar una sentencia compuesta. Cada
BEGIN debe estar asociado con un END, excepto en dos casos: la sentencia CASE y la
declaracin de RECORD.

El PASCAL permite formato libre en la escritura del texto que compone el programa. Se
pueden colocar las sentencias en cualquier lugar de una lnea, escribir una sentencia en
ms de una lnea y colocar varias sentencias en una misma lnea. Pero no se puede dividir un
nombre y un nmero entre varias lneas o con un espacio en blanco.
Un programa puede contener comentarios en cualquier lugar. Los comentarios se
delimitan encerrndolos entre llaves ({ }). Tambin es posible comenzar un comentario
con " (* " y acabarlo con " *).
El comando readln: carga un valor en una variable y salta una lnea. El comando
writeln: muestra informacin por pantalla y salta una lnea. Si no se escribe (ln) no
saltar la lnea
Para dejar una lnea en blanco: writeln, o readln.
El readkey sirve para que la pantalla muestre el resultado del programa hasta que el usuario
presione una tecla.

Recursividad
Se dice que una funcin matemtica es recursiva o recurrente cuando hay que definirla

para una serie de valores elementales y el resto de sus valores se puede obtener a partir de
los valores elementales. Por ejemplo, la funcin FACTORIAL de un nmero entero N, que se
denota N!, se adapta la definicin de funcin recursiva: se define para los valores elementales 0 y
1:0! = 11! = 1y, para el resto de los valores se puede obtener utilizando estos:2! = 2 * 1!3! = 3 *
2!4! = 4 * 3!................. N! = N * (N-1)! Hay funciones matemticas que no admiten un
mtodo de obtencin recursivo; las hay que admiten tanto un mtodo recursivo como
un mtodo no recursivo (iterativo), y las hay que slo admiten un mtodo recursivo.
8.2. RECURSIVIDAD EN TURBO PASCAL
Las funciones recursivas pueden codificarse en Turbo Pascal as como en otros
lenguajes de programacin; an ms, la idea de la recursividad puede aplicarse tambin a
procedimientos. Un subprograma (procedimiento o funcin) Pascal es recursivo cuando
tiene la capacidad de llamarse a s mismo. Pinsese que si un subprograma recursivo no
se disea bien, podemos caer en anidamientos sucesivos del subprograma y no salir
nunca de l. Para evitar esto, al escribir un subprograma recursivo en Turbo Pascal, debemos
asegurarnos de dos cosas:
1.) Que contiene una condicin de salida que garantice el fin de los anidamientos.
2.) Que en cada llamada al subprograma recursivo, se 'est ms cerca' de la condicin de salida

Ejemplo: Construir una funcin recursiva que obtenga el factorial de cualquier nmero entero:
FUNCTION
FACTORIAL (N:INTEGER) : REAL;
BEGINIF
N<=1
THEN
FACTORIAL:= 1 {Condicin de Salida}
ELSE
FACTORIAL:= N * FACTORIAL (N-1); {Cada llamada a la funcin}
END
Ntese la gran novedad con respecto a los subprogramas no recursivos: en la zona de
instrucciones del subprograma aparece una autollamada, en la que el dato (o datos) que se transfiere
al parmetro (o parmetros) vara, en cada ejecucin, en el sentido de aproximacin a
la condicin de salida, la cual viene controlada por un valor o valores concretos del
parmetro (o par-metros).Veamos qu sucede en la memoria cuando se utiliza la tcnica de la
recursin, examinando una ejecucin concreta de la funcin anterior. Supongamos que se
ejecuta FACTORIAL (3). En el momento de la llamada a la funcin, se toma
una porcin de memoria para la variable local N (2 bytes por ser de tipo INTEGER),

en la que se almacena el valor 3, y 6 bytes para la variable-identificador FACTORIAL.


Como no estamos en la condicin de salida, se ejecuta la instruccin:
FACTORIAL := 3 * FACTORIAL (2);
Aqu se produce la primera
Autollamada: Se crean las variables locales de Nivel 2, N (en la que se almacena el
valor 2) y FACTORIAL (llamaremos a estas variables N2 y FACTORIAL2 para
distinguirlas mejor). La variable de Nivel 1 FACTORIAL permanece en el stack pendiente de
resolucin. Como tampoco ahora estamos en la condicin de salida, se ejecuta la instruccin:
FACTORIAL:= 2 * FACTORIAL (1);
Aqu se produce la segunda
Autollamada: se crean las variables locales de Nivel 3, N (en la que se almacena el valor 1) y
FACTORIAL (a las que llamaremos N3 y FACTORIAL3). La variable de Nivel 2,
FACTORIAL2, se queda tambin en el stack pendiente de resolucin. Ahora ya s
estamos en la condicin de salida: se ejecuta la instruccin: FACTORIAL3:= 1; con lo
cual, la llamada a la funcin de Nivel 3 concluye: se libera la memoria ocupada por N3
y FAC-TORIAL3, y se ejecuta la instruccin de Nivel 2 que qued pendiente: FACTORIAL2 := 2 *
FACTORIAL3;:= 2 * 1; En este momento, concluye la llamada a la funcin de Nivel 2: se libera la
memoria ocupa-da por N2 y FACTORIAL2 y se ejecuta la instruccin de Nivel 1 que qued
pendiente: FACTORIAL := 3 * FACTORIAL2;:= 3 * 2; Aqu concluye la llamada a la funcin de
Nivel 1: se libera la memoria ocupada por N y por FACTORIAL, y la variable-identificador
entrega el valor 6 (3!) al programa principal.
En este ejemplo podemos observar que la cantidad de memoria utilizada por los subprogramas
recursivos es muy grande, por lo que deben utilizarse con precaucin y slo en los casos enlos que
una solucin no recursiva sea poco adecuada o impracticable. As, la funcin FACTORIAL se puede
codificar de un modo iterativo ms eficiente:
FUNCTION
FACTORIAL (N: INTEGER): REAL;
VAR
I: INTEGER; F: REAL;
BEGIN
F:=1;
FOR
I:=2

TO
N
DO
F:=F*I;FACTORIAL:=F;
end

Tipos de datos complejos, pilas, colas, listas, rboles y Grafos.


PILAS;
Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos slo por Uno
de los extremos. Como consecuencia, los elementos de una pila sern eliminados en orden inverso
al que se insertaron. Es decir, el ltimo elemento que se meti a la pila ser el primero en salir de
ella.
Consta de una lista de elementos donde se pueden insertar y eliminar elementos slo por uno de los
extremos. Debido a esto como consecuencia, los elementos de una pila sern eliminados en orden
inverso al que se insertaron. En otras palabras, el ltimo elemento que se meti a la pila ser el
primero en salir de ella. Su utilizacin principal es para el software del sistema, compiladores e
intrpretes.
En la vida cotidiana existen muchos ejemplos de pilas, una pila de platos en una alacena,
una pila de latas en un supermercado, una pila de papeles sobre un escritorio, etc.
Debido al orden en que se insertan y eliminan los elementos en una pila, tambin se le
Conoce como estructura LIFO (Last In, First Out: ltimo en entrar, primero en salir).
Representacin en Memoria
Las pilas no son estructuras de datos fundamentales, es decir, no estn definidas como tales
en los lenguajes de programacin. Las pilas pueden representarse mediante el uso de:
Arreglos.
Listas enlazadas.

Colas
Una cola es una estructura de datos similar a una lista con restricciones
Especiales. Los elementos son agregados en la parte posterior de la cola y son
Eliminados por el frente.

Si una persona ha elegido sus libros dentro de la librera y desea pasar a


Pagarlos, debe hacer cola para poder efectuar el pago. La cajera atender
a cada persona en el orden en que llegaron.
A nivel de lgico, podemos representar a una cola de la siguiente manera:

Construccin de colas
Implementar colas involucra el uso clases similares a una lista. Las
operaciones sobre esta estructura son idnticas: insertar y eliminar, con las
consideraciones pertinentes.
Insertar
Insertar un dato en una cola es muy similar a hacerlo en una pila o una
lista, la diferencia es que tendremos que hacerlo por el final de la cola. A
este proceso se le llama encolar.

Eliminar
Para extraer un dato de la cola, es necesario modificar el valor del nodo
primero, de manera que deje de apuntar al primer elemento de la cola. De la
misma manera que con las pilas, se extrae el valor antes de que se pierda. Se hace que el nodo
primero ahora apunte al nuevo elemento (anterior de la cola).

LISTAS

Son colecciones de elementos, donde cada uno de ellos, adems de almacenar informacin,
almacena la direccin del siguiente elemento. Una lista es una estructura lineal de datos. Es decir,
cada uno de sus componentes y un predecesor nicos, con excepcin del ltimo y del primero.
Las listas pueden implementarse mediante arreglos, resultando as una estructura esttica. Tambin
puede ser una memoria dinmica (La cantidad de memoria ocupada puede modificarse durante la
ejecucin del programa). Una lista enlazada o encadenada es una coleccin de elementos nodos,
en donde cada uno contiene datos y un enlace o liga.
Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales
como Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder a
las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ y Java,
respectivamente, disponen de referencias para crear listas enlazadas.
Una lista es una estructura de datos secuencial.

Lista densa: la propia estructura determina cul es el siguiente elemento de la lista. Ejemplo: un
array.
Lista enlazada: la posicin del siguiente elemento de la estructura la determina el elemento actual.
Una lista es una secuencia de elementos llamados nodos. Cada nodo esta formado por un campo de
datos y 1 o ms campos de enlace que apunta(n) al siguiente nodo. Todo nodo tiene un predecesor y
antecesor excepto el primero y el ltimo.
La lectura de una lista se realiza secuencialmente pero su posicin fsica en memoria solo depende
del mtodo para implementarla. Si por ejemplo usamos punteros que es la tcnica ms adecuada
podemos almacenar los componentes de la lista en posiciones dispersas de memoria, aunque ante el
usuario continuara apareciendo como una estructura secuencial.
Se llaman operaciones simples las que afectan a un solo dato y complejas las que afectan a varios.
Las operaciones complejas pueden realizarse repitiendo las simples.
Es necesario almacenar al menos la posicin de memoria del primer elemento.
Adems es dinmica, es decir, su tamao cambia durante la ejecucin del programa. Una lista
enlazada se puede definir recursivamente de la siguiente manera:

a)

una lista enlazada es una estructura vaca o

b)

un elemento de informacin y un enlace hacia una lista (un nodo).

c)

Grficamente se suele representar as:

Una lista puede cambiar de tamao, pero su ventaja fundamental es que son flexibles a la hora de
reorganizar sus elementos; a cambio se ha de pagar una mayor lentitud a la hora de acceder a
cualquier elemento.

rboles
Recursin
Alguna vez hemos visto ese conjunto de muecos de madera de origen ruso
(matrioshkas) en la que uno se encuentra dentro de otro. Dentro del primer

mueco, se encuentra un mueco menor, y dentro de ese mueco, hay otro


mueco de menor tamao y as sucesivamente. Un mtodo recursivo es como
los muecos rusos: se reproducen a s mismo con versiones ms y ms
pequeas.

Recursin es la capacidad de un mtodo o funcin de invocarse a s mismo


para resolver un problema [1]. Cada vez que un mtodo se llama a s mismo,
se enva una parte ms pequea del problema, a fin de encontrar una solucin
a la misma.
En Java, un mtodo puede llamar a otros mtodos, pero adems, se
puede llamar a s mismo! Haciendo una llamada recursiva.
La recursin se forma de dos elementos:
- Caso base. El momento en que se detiene la recursin.
- Llamada recursiva. Invocacin del mtodo a s mismo.
Cuando se alcanza el caso base, la recursin comienza un proceso llamado
backtracking (retroceso), resolviendo las llamadas anteriores de s mismo.
Ejemplo clsico de recursin
El clculo del factorial de un nmero, es el mtodo ms recurrido para

explicar la recursin. Supongamos que solamente sabemos la definicin de


factorial:
o El factorial de 0 (cero), es igual a 1 (caso base)
o El factorial de N, es igual a N multiplicado por el factorial de N-1
(llamada recursiva)
Calculemos el factorial de 3
Factorial (3) = 3 x Factorial (3-1) // por definicin
Factorial (3) = 3 x Factorial (2)
Pero ahora nos damos cuenta que desconocemos el factorial de 2, as que
procedemos a calcularlo
Factorial (2) = 2 x Factorial (2-1) // por definicin
Factorial (2) = 2 x Factorial (1)
Seguimos sin conocer el factorial de 3, de 2, y ahora de 1. As que pasamos
a calcular el factorial de 1
Factorial (1) = 1 x Factorial(1-1) // por definicin
Factorial (1) = 1 x Factorial(0)
Conocemos el factorial de 0 (cero) que es 1 (nuestro caso base), por lo que
comenzamos a resolver e iniciar el backtracking.
Factorial (1) = 1 x Factorial (0) = 1 x 1 = 1
Factorial (2) = 2 x Factorial (1) = 2 x 1 = 2
Factorial (3) = 3 x Factorial (2) = 3 x 2 = 6
El factorial de 3, es igual a 6 ( 3 x 2 x 1).

Para programar recursin, debemos tener en cuenta que siempre debe


existir una forma de llegar al caso base, de lo contrario, las llamadas
recursivas seran infinitas. La recursin se utiliza siempre que deseemos
resolver un problema a travs de l mismo, mediante fracciones ms sencillas
de l.
Existen diversas aplicaciones para la recursin, tales como clculos
matemticos, trabajo con listas o rboles, etc. Ejemplos:
Sucesin de Fibonacci
Encontrar un nodo hoja en rboles
Recorrer una lista
Etc
Definicin
Es una estructura de datos formada por nodos los cuales estn conectados por aristas. Un rbol se
define como un tipo de grafo que no contiene ciclos.
rbol Vaco: Un rbol puede estar vaco; es decir no contener ningn nodo.
Raz: es el nodo que est al tope del rbol. Un rbol solo tiene una raz.
Camino: es la secuencia de nodos que hay que visitar para llegar de un nodo a otro de un rbol.
Padre: En un rbol toda rama va de un nodo n1 a un nodo n2, se dice que n1 es padre de n2.
Hijo: todo nodo puede tener ms de una arista que lo lleva a otro nodo por debajo de l. Estos nodos
que se encuentran por debajo de un nodo dado se llaman hijos.
Hojas: son aquellos nodos que no tienen hijos. En un rbol solo puede haber una raz pero puede
haber muchas hojas.
Subrbol: Cualquier nodo se puede considerar como la raz de un subrbol.

GRAFOS
Un grafo es un conjunto de puntos (vrtices) en el espacio, que estn conectados por un conjunto de
lneas (aristas).
Los grafos son estructuras de datos dinmicas no lineales, utilizadas comnmente en el anlisis de
redes, en diseo de circuitos elctricos, en estrategias de mercados, cartografa, mapas conceptuales,
matemticas, planificacin de procesos y muchas rea del conocimiento.
Aristas
Son las lneas con las que se unen las aristas de un grafo y con la que se construyen tambin
caminos. Si la arista carece de direccin se denota indistintamente {a, b} o {b, a}, siendo a y b
los vrtices que une.
Si {a ,b} es una arista, a los vrtices a y b se les llama sus extremos.
Aristas Adyacentes: Se dice que dos aristas son adyacentes si convergen en el mismo vrtice.
Aristas Paralelas: Se dice que dos aristas son paralelas si vrtice inicial y el final son el mismo.
Aristas Cclicas: Arista que parte de un vrtice para entrar en el mismo.
Cruce: Son dos aristas que cruzan en un punto.
Vrtices
Son los puntos o nodos con los que esta conformado un grafo. Llamaremos grado de un vrtice al
nmero de aristas de las que es extremo. Se dice que un vrtice es `par' o `impar' segn lo sea su
grado.

Vrtices Adyacentes: si tenemos un par de vrtices de un grafo (U, V) y si tenemos un arista que los
une, entonces U y V son vrtices adyacentes y se dice que U es el vrtice inicial y V el vrtice
adyacente.
Vrtice Aislado: Es un vrtice de grado cero.
Vrtice Terminal: Es un vrtice de grado 1.

SISTEMAS DE ARCHIVOS
Un sistema de archivos son los mtodos y estructuras de datos que un sistema operativo utiliza para
seguir la pista de los archivos de un disco o particin; es decir, es la manera en la que se organizan
los archivos en el disco.
El trmino tambin es utilizado para referirse a una particin o disco que se est utilizando para
almacenamiento, o el tipo del sistema de archivos que utiliza. As uno puede decir tengo dos
sistemas de archivo refirindose a que tiene dos particiones en las que almacenar archivos, o que
uno utiliza el sistema de archivos extendido, refirindose al tipo del sistema de archivos.
La diferencia entre un disco o particin y el sistema de archivos que contiene es importante. Unos
pocos programas (incluyendo, razonablemente, aquellos que crean sistemas de archivos) trabajan
directamente en los sectores crudos del disco o particin; si hay un archivo de sistema existente all
ser destruido o corrompido severamente. La mayora de programas trabajan sobre un sistema de
archivos, y por lo tanto no utilizarn una particin que no contenga uno (o que contenga uno del tipo
equivocado).
Antes de que una particin o disco sea utilizada como un sistema de archivos, necesita ser iniciada,
y las estructura de datos necesitan escribirse al disco. Este proceso se denomina construir un sistema
de archivos.

Al ser los Sistemas de Archivos, mtodos tan extensos y poli funcionales, es necesario clasificarlos,
para entender de mejor manera su manejo y funcin.
ARCHIVOS SECUENCIALES
Es la forma bsica de organizar un conjunto de registros, que forman un archivo, utilizando una
organizacin secuencial. En un archivo organizado secuencialmente, lo registros quedan grabados
consecutivamente cuando el archivo se utiliza como entrada. En la mayora de los casos, los
registros de un archivo secuencial quedan ordenados de acuerdo con el valor de algn campo de
cada registro. Semejante archivo se dice que es un archivo ordenado; el campo, o los campos, cuyo
valor se utiliza para determinar el
ordenamiento es conocido como la llave del ordenamiento. Un archivo puede ordenarse ascendente
o descendentemente con base en su llave de ordenamiento.
La forma ms comn de estructura de archivo es el archivo secuencial. En este tipo de archivo, un
formato fijo es usado para los registros. Todos los registros tienen el mismo tamao, constan del
mismo nmero de campos de tamao fijo en un orden particular. Como se conocen la longitud y la
posicin de cada campo, solamente los valores de los campos se necesitan almacenarse; el nombre
del campo y longitud de cada campo son atributos de la estructura de archivos.
ESCRITURA DE LOS ARCHIVOS SECUENCIALES:
En estos archivos, la informacin slo puede leerse y escribirse empezando desde el principio del
archivo.
Los archivos secuenciales tienen algunas caractersticas que hay que tener en cuenta:
1. La escritura de nuevos datos siempre se hace al final del archivo.
2. Para leer un dato concreto del archivo hay que avanzar siempre hasta donde se encuentre dicho
dato. Si el dato requerido se encuentra antes del dato en que est se est posicionado el archivo en
un momento dado, ser necesario regresar al comienzo del archivo y avanzar hasta el dato
necesario.
ESTRUCTURA DE LA ORGANIZACIN SECUENCIAL
En un archivo secuencial, se almacenan los registros uno tras otro. El primer registro almacenado se
coloca al principio del archivo. El segundo se almacena inmediatamente

despus (no existen posiciones sin uso), el tercero despus del segundo, etc. Este orden nunca
cambia en la organizacin secuencial.
Una caracterstica de los archivos secuenciales es que todos los registros se almacenan por posicin:
de primer registro, segundo registro etc.
Ventajas:
Los archivos secuenciales proveen la mejor utilizacin de espacio y son rpidos cuando los registros
son accesados secuencialmente.
Los archivos con poca volatilidad, gran actividad y tamao variable son altamente susceptibles de
ser organizados secuencialmente.
La ventaja ms importante de la tcnica de organizacin secuencial de archivos es la capacidad de
acceso al "siguiente" registro rpidamente: Mientras que el patrn de acceso a un archivo secuencial
se conforme al ordenamiento de registros en el archivo, los tiempos de acceso sern muy buenos.
Sin embargo, si el patrn de acceso al programa no se conforma al patrn de ordenamiento de los
registros, entonces la eficiencia del programa puede ser terrible.
Otra ventaja de los archivos de organizacin secuencial es que son muy sencillos de usar y aplicar.
Desventajas:
El acceso a un registro es pobre, la localizacin de un determinado registro no se puede hacer
individualmente no de manera rpida, y el acceso aleatorio es imprctico.
Adems, en los archivos secuenciales la direccin de registro est implcita y estn vulnerables a
fallas del sistema
ARCHIVO SECUENCIAL INDEXADO
Los registros se organizan en una secuencia basada en un campo clave presentando dos
caractersticas, un ndice del archivo para soportar los accesos aleatorios y un archivo de
desbordamiento. El ndice proporciona una capacidad de bsqueda para llagar rpidamente al
registro deseado y el archivo de desbordamiento es similar al archivo de registros usado en un
archivo secuencial, pero est integrado de forma que los archivos de desbordamiento se ubiquen
siguiendo un puntero desde su registro predecesor.
La estructura ms simple tiene como ndice un archivo secuencial simple, cada registro del archivo

ndice tiene dos campos, un campo clave igual al del archivo principal y un puntero al archivo
principal. Para encontrar un campo especifico se busca en el ndice hasta encontrar el valor mayor
de la clave que es iguale o precede al valor deseado de la clave, la bsqueda continua en el archivo
principal a partir de la posicin que indique el puntero.
Cada registro del archivo principal tiene un campo adicional que es un puntero al archivo de
desbordamiento. Cuando se inserta un nuevo registro al archivo, tambin se aade al archivo de
desbordamiento. El registro del archivo principal que precede inmediatamente al nuevo registro
segn la secuencia lgica se actualiza con un puntero del registro nuevo en el archivo de
desbordamiento, si el registro inmediatamente anterior est tambin en el archivo de
desbordamiento se actualizar el puntero en el registro.
Para procesar secuencialmente un archivo completo los registros del archivo principal se procesarn
en secuencia hasta encontrar un puntero al archivo de desbordamiento, el acceso contina en el
archivo de desbordamiento hasta que encuentra un puntero nulo, entonces renueva el acceso donde
se abandon en el archivo principal.
Las caractersticas ms relevantes de un archivo indexado, son las siguientes:
a) El diseo del registro tiene que tener un campo, o combinacin de campos, que permita
identificar cada registro de forma nica, es decir, que no pueda haber dos registros que tengan la
misma informacin en l. A este campo se le llama campo clave y es el que va a servir de ndice. Un
mismo fichero puede tener mas de un campo clave, pero al menos uno de ellos no admitir valores
duplicados y se le llama clave primaria. A las restantes se les llama claves alternativas.
b) Permiten utilizar el modo de acceso secuencial y el modo de acceso directo para leer la
informacin guardada en sus registros.
El modo de acceso directo se hace conociendo el contenido del campo clave del registro que
queremos localizar. Con esa informacin el sistema operativo puede consultar el ndice y conocer la
posicin del registro dentro del fichero.
En el modo de acceso secuencial los registros son ledos ordenados por el contenido del campo
clave, independientemente del orden en que se fueron grabando (El orden lgico no es igual al
orden fsico), debido a que el acceso a los datos se hace a travs del ndice, que para hacer ms fcil
la bsqueda de los registros permanece siempre ordenado por el campo clave.

c) Solamente se puede grabar en un soporte direccionable. Ej.: disco magntico. Si esto no fuera as
no podra emplear el acceso directo.
VENTAJAS
1. Permite el acceso secuencial.
2. Permite el acceso directo a los registros.
3. Se pueden actualizar los registros en el mismo fichero, sin necesidad de crear un fichero nuevo de
copia en el proceso de actualizacin.
DEVENTAJAS
1. Ocupa ms espacio en el disco que los ficheros secunciales, debido al uso del rea de ndices.
2. Tiene tendencia a que aumente el tiempo medio de acceso a los registros, cuando se producen
muchas altas nuevas con claves que hay que intercalar entre las existentes, ya que aumenta el rea
de overflow.
3. Solo se puede utilizar soportes direccionables.
4. Obliga a una inversin econmica mayor, por la necesidad de programas y, a veces, hardware ms
sofisticado.

Archivos Directos o de Dispersin


Los archivos directos explotan la capacidad de los discos para acceder directamente a cualquier
bloque de direccin conocida. Como en los archivos secuenciales y secuenciales indexados, se
requiere un campo clave en cada registro. Sin embargo, aqu no hay concepto de ordenamiento
secuencial.

Explotan la capacidad de los discos para acceder directamente a cualquier bloque de


direccin conocida.

Se requiere un campo clave en cada registro.

Los archivos directos son muy usados donde se necesita un acceso muy rpido, donde se
usan registros de longitud fija y donde siempre se accede a los registros de una vez.

Archivos aleatorios.
Los Archivos aleatorios almacenan datos en forma de registros mediante una estructura definida de
tipo Type (estructura definida por nosotros) tambin llamada UDT.
Para declarar un archivo de acceso directo se realiza con las palabras reservadas FILE OF.
Los registros de tipo RECORD permiten grabar en un solo registro un grupo de datos que pueden
ser de diferentes tipos, uno de tipo INTEGER, uno de tipo STRING, etc. Deben ser declarados antes
de las variables en una seccin llamada TYPE.
Aun cuando se tenga declarado el archivo no es posible grabar nada en el si no se le asigna un
nombre real para guardarlo en el disco. el proceso de dicha asignacin es el mismo que para los
archivos de texto: Assign (archivo, "nombre.ext"), abrir archivos.
Cada uno de los registros de un archivo esta referenciado por un numero especifico comenzando
desde el registro 0 y aumentando de 1 en 1.
La funcin FilePos devuelve el nmero de registro actual, su sintaxis es:
-FilePos (variable Archivo)
-Seek (variable Archivo, NumResgistro)
-Seek (variable archivo, FileSize (variable Archivo).
Para la lectura y escritura de un archivo de acceso directo nicamente se utilizan los procedimientos
Read y Write. Para cerrar los archivos abiertos se procede igual que en uno de acceso secuencial,
utilizando el procedimiento close.