You are on page 1of 73

Universidad Central de Venezuela

Facultad de Ciencias
Escuela de Computacin

Lecturas en Ciencias de la Computacin
ISSN 1316-6239




Algoritmos y Programacin

Prof. Ana Vanesa Leguizamo Len

ND 2007-01
















CENEAC
Caracas, Enero, 2007.
Universidad Central de Venezuela
Facultad de Ciencias
Escuela de Computacin





Algoritmos y Programacin
Notas de Docencia








Ana Vanessa Leguzamo Len
vleguiza@ciens.ucv.ve







Caracas, Enero 2007
2
CONTENIDO
INTRODUCCIN........................................................................................................................................ 1
TEMA 1: INTRODUCCIN A LA PROGRAMACIN......................................................................... 2
CONCEPTOS BSICOS.................................................................................................................................. 2
Hardware: ............................................................................................................................................. 2
Software:................................................................................................................................................ 3
El lenguaje ensamblador ....................................................................................................................... 4
Lenguaje de programacin:................................................................................................................... 4
Algoritmo............................................................................................................................................... 6
Programa............................................................................................................................................... 7
CONSTRUCCIN DE PROGRAMAS ................................................................................................................ 7
Estructuracin por acciones.................................................................................................................. 8
Estructuracin por objetos .................................................................................................................... 8
CALIDAD DE UN PROGRAMA: ...................................................................................................................... 8
TEMA 2: ACCIONES ELEMENTALES ................................................................................................ 10
NOTACIN ALGORTMICA:........................................................................................................................ 10
Valores no estructurados o elementales: ............................................................................................. 10
Valores estructurados:......................................................................................................................... 10
Constantes: .......................................................................................................................................... 10
Variables: ............................................................................................................................................ 10
Expresiones: ........................................................................................................................................ 10
Tipo de Dato:....................................................................................................................................... 11
CARACTERSTICAS Y VENTAJAS DE LOS TIPOS DE DATOS .......................................................................... 11
CLASIFICACIN DE LOS TIPOS DE DATOS................................................................................................... 11
TIPOS DE DATOS NO ESTRUCTURADOS ...................................................................................................... 12
Tipo Entero:......................................................................................................................................... 12
Tipo Real: ............................................................................................................................................ 12
Tipo Caracter: ..................................................................................................................................... 13
Tipo Lgico: ........................................................................................................................................ 13
Ejercicios Resueltos: ........................................................................................................................... 14
PRIORIDAD DE OPERADORES ..................................................................................................................... 14
TEMA 3: ACCIONES ELEMENTALES ................................................................................................ 16
DECLARACIN DE VARIABLES.................................................................................................................. 16
ACCIONES ELEMENTALES ......................................................................................................................... 16
Asignacin:.......................................................................................................................................... 16
Secuenciamiento:................................................................................................................................. 17
Entrada Simple .................................................................................................................................... 18
Salida Simple ....................................................................................................................................... 18
Ejercicios Resueltos: ........................................................................................................................... 18
TEMA 4: INTRODUCCIN AL ENFOQUE ORIENTADO A OBJETOS......................................... 22
PROGRAMACIN ORIENTADA A OBJETOS .................................................................................................. 22
Objeto: ................................................................................................................................................. 22
Identidad de un objeto ......................................................................................................................... 22
Estado de un objeto: ............................................................................................................................ 22
Comportamiento de un objeto.............................................................................................................. 23
CLASES ..................................................................................................................................................... 23
Atributos: ............................................................................................................................................. 24
Mtodos: .............................................................................................................................................. 24
ELEMENTOS DE LA POO. .......................................................................................................................... 25
Abstraccin.......................................................................................................................................... 25
Encapsulacin (Ocultamiento de informacin) ................................................................................... 25
Modularidad ........................................................................................................................................ 25
Polimorfismo ....................................................................................................................................... 25
DEFINICIN DE CLASES............................................................................................................................. 26
RELACIONES ENTRE CLASES...................................................................................................................... 27
3
Herencia: ............................................................................................................................................. 27
Agregacin: ......................................................................................................................................... 28
Composicin:....................................................................................................................................... 28
Asociacin: .......................................................................................................................................... 28
Navegabilidad...................................................................................................................................... 29
Rol........................................................................................................................................................ 30
CLASE ABSTRACTA................................................................................................................................... 31
TEMA 5: ESTRUCTURAS DE CONTROL ........................................................................................... 32
FORMAS DE COMPOSICIN DE ACCIONES................................................................................................... 32
SELECCIN MLTIPLE .............................................................................................................................. 32
SELECCIN SIMPLE................................................................................................................................... 33
Ejercicios Resueltos: ........................................................................................................................... 34
ESTRUCTURAS ITERATIVAS....................................................................................................................... 36
Repetir ................................................................................................................................................. 36
Mientras............................................................................................................................................... 38
Para ..................................................................................................................................................... 39
Ejercicios Resueltos: ........................................................................................................................... 40
TEMA 6: CLASES Y MTODOS............................................................................................................ 43
IMPLEMENTACIN DE UNA CLASE............................................................................................................. 43
CREACIN DE OBJETOS ............................................................................................................................. 44
MTODOS: ................................................................................................................................................ 45
Mtodos: Acciones............................................................................................................................... 45
Mtodos: Funcin................................................................................................................................ 46
PARMETROS............................................................................................................................................ 46
Parmetros actuales:........................................................................................................................... 46
Parmetros formales: .......................................................................................................................... 46
TIPOS DE PASE DE PARMETROS ............................................................................................................... 47
LLAMADA (O USO) DE UN MTODO ........................................................................................................... 47
AMBIENTE DE REFERENCIACIN............................................................................................................... 48
Objetos No locales a una accin: ........................................................................................................ 48
Objetos locales a una accin:.............................................................................................................. 48
TEMA 7: TIPOS DE DATOS ESTRUCTURADOS............................................................................... 50
ESTRUCTURA DE DATOS............................................................................................................................ 50
ARREGLOS ................................................................................................................................................ 50
Acceso a los elementos de un arreglo.................................................................................................. 51
Operacin Constructora:..................................................................................................................... 51
Ejercicios Resueltos: ........................................................................................................................... 52
ARREGLOS MULTIDIMENSIONALES........................................................................................................... 53
ARREGLO BIDIMENSIONAL........................................................................................................................ 54
Ejercicios Resueltos: ........................................................................................................................... 55
ALGORITMOS DE ORDENAMIENTO............................................................................................................ 56
Seleccin Directa................................................................................................................................. 56
Insercin Directa................................................................................................................................. 57
Burbujas............................................................................................................................................... 59
ALGORITMOS DE BSQUEDA .................................................................................................................... 59
Bsqueda Lineal .................................................................................................................................. 60
Bsqueda Lineal (Arreglo Ordenado) ................................................................................................. 60
Bsqueda Binaria ................................................................................................................................ 60
ARCHIVOS................................................................................................................................................. 61
Operaciones Bsicas sobre Archivos................................................................................................... 62
Operaciones de Entrada y Salida ........................................................................................................ 63
Ejercicios Resueltos: ........................................................................................................................... 64
REGISTROS................................................................................................................................................ 64
Acceso a los elementos de un Registro ................................................................................................ 65
Ejercicios Resueltos: ........................................................................................................................... 66
REFERENCIAS ..........................................................................................................................................69
1
INTRODUCCIN

Las presentes Notas de Docencia han sido realizadas con el fin de unificar los
conceptos bsicos de programacin impartidos a los alumnos de Algoritmos y
Programacin, as como la notacin utilizada para escribir los algoritmos que se
produzcan. Esta informacin es producto de los aportes de varios profesores que han
dictado la materia, y han sido recopilados y adaptados para producir una gua completa,
con conceptos tericos y ejercicios resueltos que sirva de referencia a los estudiantes.

Este contenido est adaptado a la ltima revisin hecha al pensum de la Licenciatura en
Septiembre de 2004, as incluye siete captulos que se corresponden con los temas
establecidos para el programa de la asignatura Algoritmos y Programacin, a saber:
Introduccin a la Programacin, Tipos de Datos Elementales, Acciones Elementales,
Introduccin al Enfoque Orientado a Objetos, Estructuras de Control, Clases y Mtodos
y Tipos de Datos Estructurados.

2
TEMA 1: INTRODUCCIN A LA PROGRAMACIN
Organizacin del Computador. Conceptos de algoritmo, dato, informacin, lenguaje natural,
lenguaje pseudo-formal, lenguaje de programacin, programa. Principio de abstraccin.
Refinamiento progresivo y estrategia divide y vencers
CONCEPTOS BSICOS
Computador: es un dispositivo electrnico utilizado para procesar los datos en forma
automtica y obtener resultados. Los datos se pueden introducir en el computador como
entrada y se procesan para producir la informacin de salida.




Un Ambiente de Computacin est formado por:

Hardware: se refiere a todas los componentes fsicos que lo conforman. La palabra
Hardware proviene del ingls: hard que significa duro y ware que significa producto,
artculo o mercanca.

Todos los computadores con un nico procesador son construidos de acuerdo al
modelo propuesto en 1944 por el matemtico Estadounidense de origen hngaro John
Von Neumann. El modelo de Von Neumann consta de lo siguiente:


El computador est compuesto por:
Procesador
Memoria
Principal
Bus
Perifericos: monitor,
teclado, etc.
Memoria secundaria:
discos, floppy, CD.
Computador
(Proceso)

Datos
Resultados
(Informacin)

3
Memoria Principal: donde se almacenan la informacin tratante o instrucciones,
y la informacin tratada o datos. Esta informacin est representada en una
codificacin binaria de 0 y 1.

La Unidad Central de Proceso (CPU o Procesador) encargada de extraer las
instrucciones y datos de la memoria principal, para realizar los tratamientos
correspondientes. Est conformada por la unidad de Control y la Unidad Lgico
Aritmtica.

Bus o unidades de intercambio, ligados a los perifricos para intercambiar
informacin con el mundo exterior

Memoria secundaria, permiten conservar la informacin an luego de apagar el
computador

Perifricos que sirven de comunicacin con el hombre (monitor, teclado,
impresora, scanner, etc) o el intercambio de informacin sobre una red (tarjeta
de red)

Software: son los programas que permiten utilizar los recursos del computador. La
palabra software viene del ingls soft, que significa suave y ware producto.

El sistema operativo es un conjunto de programas que asegura la gestin de recursos
fsicos y lgicos empleados por los usuarios. Tiene como tarea la administracin y
conservacin de la informacin y genera el ambiente necesario para la ejecucin de un
programa. Actualmente se ofrecen una cantidad extra de servicios tales como
tratamiento de texto, navegadores, multimedia, que ofrecen un ambiente de trabajo
confortable y de fcil utilizacin.

Cmo se trata o procesa la informacin en un ambiente de computacin?
El tratamiento de la informacin es la ejecucin por el computador de una serie finita de
comandos preparados, que generalmente tienen como objetivo calcular y devolver
resultados en funcin de datos introducidos al comienzo o en el curso de ejecucin.

4
Programas: Conjunto finito y secuencial de comandos preparados, que tienen como
objetivo ser ejecutados por un computador para realizar clculos y reportar resultados,
generalmente en funcin de datos suministrados al comienzo o durante la ejecucin.
Los comandos que forman un programa son descritos mediante un lenguaje especial.

Cmo es ese lenguaje? Cmo lo entiende el computador?
El nico lenguaje que comprende el computador es su lenguaje de mquina. Cada
modelo de computador posee su propio lenguaje llamado Lenguaje de Mquina, que no
es ms que un conjunto de comandos elementales representados en cdigo binario que
pueden ser ejecutados por el computador.

Ejemplo 00001110101011110000111101010101 instruccin de 32 bits
Donde: 1 bit: unidad mnima de informacin, representada por 1 0
Byte= 8 bits
1 Kilobyte= 1024 Bytes
1Megabyte= 1024 Kilobytes
1 Gigabyte= 1024 Megabytes.

El lenguaje ensamblador es una codificacin alfanumrica del lenguaje de mquina.
Es ms legible, pero continua siendo particular a una familia de computadoras y difcil
de usar.
Ejemplo Load R1, 5

Lenguaje de programacin: conjunto de enunciados que hacen posible al ser humano
expresarse siguiendo las reglas de una gramtica dada y que estn destinados a
representar los objetos y los comandos que pueden constituir un programa.
Ejemplo: if (b>0) r1=5 else r1=10

La definicin de un lenguaje de programacin cubre tres aspectos:
Lxico: Define los smbolos que sirven para la redaccin de un programa y las reglas
para la formacin de palabras en el lenguaje. Ejemplo 255 es una cifra entera.
Sintaxis: conjunto de reglas que permiten organizar las palabras en frases. Por ejemplo:
255/5 formada por dos cifras enteras y un operador de divisin sigue las reglas
sintcticas que definen una expresin
5
Semntica: define las reglas que dan sentido a una frase. Una frase puede ser
sintcticamente correcta pero incorrecta semnticamente: 255 / 5

Cmo se ejecuta un programa escrito en un lenguaje de programacin en un
computador, si slo entiende lenguaje de mquina?
Existen dos soluciones a este problema:
La primera en traducir el programa escrito en un Lenguaje de Programacin (LP) a otro
programa semnticamente equivalente escrito en Lenguaje de Mquina (LM). Esta
traduccin se realiza a travs de un software especial llamado compilador. En general
el compilador produce cdigo para un slo tipo de mquina.

La segunda opcin consiste en simular el funcionamiento del lenguaje de programacin
sobre el computador real, interpretando las instrucciones del programa fuente. El
software que realiza esta interpretacin se llama Intrprete. La interpretacin directa de
instrucciones escritas en un LP de alto nivel es generalmente muy difcil, y por ellos e
realiza en dos fases. En la primera fase, se realiza una traduccin del programa fuente
a un lenguaje intermediario, lo cual es un proceso equivalente a la compilacin. Luego,
se realiza la interpretacin sobre este lenguaje intermedio. Esta es la tcnica que usa el
lenguaje de programacin Java.

Un programa fuente en Java es traducido a un programa objeto en un lenguaje
intermedio, llamado Java pseudo-cdigo (o byte-code). Este programa objeto es
entonces ejecutado sobre la mquina virtual Java (JVM) quien lo interpreta.

Como se ve, la compilacin y la interpretacin no son incompatibles. El inters de la
interpretacin es asegurar la portabilidad de los programas: esto significa que un
programa elaborado en un computador puede ser ejecutado sobre otros, sin
modificaciones. Pero tiene el inconveniente que el tiempo de ejecucin de programas
interpretados es notablemente mayor que el de los programas compilados.

Un Diagrama de flujo es un diagrama que ilustra el flujo de datos, informacin y trabajo
por medio de smbolos especializados que, cuando se conectan por lneas de flujo,
reflejan la lgica de un sistema o programa.

6


Algoritmo: Un algoritmo es una secuencia finita de pasos para la solucin de un
problema. El algoritmo describe, de forma no ambigua, la secuencia de acciones a
efectuar para especificar una funcionalidad a tratar de manera automtica. Est escrito
en una notacin formal, independiente del lenguaje utilizado para programar. Los
algoritmos estn compuestos por objetos y acciones sobre esos objetos.

Objeto: Elementos que conforman un algoritmo. En particular se distinguen los
objetos de datos, los cuales poseen atributos o valores y no son ms que un
elemento de informacin dentro de un contexto particular, que tiene un nombre y
un valor asociado.

Un objeto tiene tres caractersticas fundamentales:
Identificacin nica.
7
Estado.
Comportamiento (operaciones, funciones y mtodos).

Estado: Es el conjunto de valores de los diferentes objetos en un momento
determinado. En un algoritmo se diferencian dos estados particulares de un
objeto, que son el estado INICIAL y el estado FINAL.

Accin: Suceso o evento que dura un tiempo finito y produce un resultado o
efecto bien definido y previsto. Toda accin produce cambios de estado (valor)
sobre los objetos y est perfectamente determinada por sus estados inicial y
final.
La concepcin de un algoritmo requiere de un gran esfuerzo intelectual. Para un mismo
problema, existen muchos algoritmos que conducen a la solucin. La eleccin del mejor
algoritmo casi siempre est guiada por criterios de eficacia y eficiencia, pero no son las
nicas caractersticas deseables en los programas.

Programa: es un algoritmo expresado en un lenguaje de programacin.
CONSTRUCCIN DE PROGRAMAS
La programacin es la disciplina de la computacin que trata el desarrollo de
programas. Es una tarea compleja, que requiere mtodos rigurosos, para alcanzar el
objetivo de todo programa que es obtener resultados vlidos y confiables.

En general, la actividad de programacin se realiza por etapas, contemplando al menos
las siguientes: (explicar cada una)








Anlisis del Problema
Diseo de la Solucin
Desarrollo del Programa
Prueba del programa
8
De manera general podemos decir que un programa efecta acciones sobre objetos. De
all que existan dos enfoques para estructurar los programas:

Estructuracin por acciones (aos 70): El problema a resolver es descompuesto
(dividido) en subproblemas an ms simples, sucesivamente hasta obtener problemas
con soluciones elementales programables directamente. Esta descomposicin se
realiza utilizando una capacidad intelectual denominada abstraccin.

Abstraccin: Mecanismo intelectual que permite durante el anlisis del problema la
separacin de los aspectos relevantes de los irrelevantes en el contexto estudiado.
Ejemplo: si el problema consiste en determinar cual es la persona ms alta del saln, lo
relevante es la estatura de cada persona, no el peso, el color de los ojos o del cabello.

Estructuracin por objetos (aos 80): la estructura del programa est basada en los
objetos que maneja y las relaciones entre ellos. El problema a resolver es visto como un
modelo del mundo real constituido por objetos. Los objetos son componentes que
contienen atributos (datos) y mtodos (acciones) que describen el comportamiento del
objeto.
CALIDAD DE UN PROGRAMA:
Para garantizar que un programa es de calidad, se toman en cuenta varios aspectos
que estos deben cumplir. A continuacin se presentan los ms comunes:
Eficacia: el programa debe resolver el problema para el cual fue desarrollado
Eficiencia: esto se mide en funcin del uso de los recursos del computador. Un
programa es ms eficiente mientras utilice menos recursos (memoria, tiempo de
uso del CPU - tiempo de respuesta -, etc.).
Legibilidad: Un programa debe estar escrito de forma tal que pueda ser
entendido por otros programadores cuando haya necesidad de realizar
modificaciones. Para esto es conveniente intradocumentar los programas:
agregar comentarios en lenguaje natural, que ayuden a entender su lgica.
Adaptabilidad: Un programa es adaptable, si a un bajo costo, puede ser
modificado para resolver otros problemas.
Reusabilidad: un programa es reutilizable si sus componentes pueden ser
extrados para ser utilizados para resolver diversos problemas.
9
Portabilidad: un programa es portable si puede ser ejecutado sobre diversas
plataformas, con cambios mnimos.


10
TEMA 2: ACCIONES ELEMENTALES
Declaraciones de variables, constantes y tipos. Instruccin de Asignacin. Valor izquierdo y
derecho de una variable. Acciones predefinidas. Operacin de Lectura. Operacin de Escritura.
NOTACIN ALGORTMICA:
A fin de garantizar la correcta interpretacin del lector de los algoritmos que escribimos,
debemos especificar una notacin, la cual debe ser:
Fcil de entender.
Debe reflejar el anlisis que produjo la solucin al problema, de manera directa.
Debe ser poderosa, es decir, que con pocos elementos se puedan expresar
muchas cosas.

Los algoritmos manejan valores y datos para procesarlos y obtener resultados. Los
conjuntos de valores que puede tomar la informacin pueden dividirse en dos
categoras:

Valores no estructurados o elementales: son aquellos valores que no pueden
dividirse en componentes. Ejemplo: la CI, la edad, un real, un entero.

Valores estructurados: son aquellos valores que estn formados por componentes y
por tanto, pueden descomponerse en trminos de los valores que lo constituyen.
Ejemplo: una persona, un carro.

Los valores que constituyen cada conjunto se pueden expresar de tres maneras:

Constantes: denotan un valor particular dentro de un conjunto. Ejemplo: (3, 5, -10, 0)
dentro del conjunto de los enteros. (verdadero, falso) lgicos. (3.5, 3.14, -10.0) reales,
(a, b, c) caracteres.

Variables: denotan un valor genrico dentro del conjunto. Ej A, Int, salir

Expresiones: denotan valores a partir de operaciones entre nombres y/o constantes.
Ej: x+1, x^2, x>5 Y y<3, A div I, A mod I

11




Sobre cada uno de dichos conjuntos de valores estn definidas una serie de
operaciones primitivas que permiten manipular sus valores. De aqu se origina el
concepto de tipo de dato.

Tipo de Dato: es un conjunto de valores junto a una serie de operaciones que pueden
ser aplicadas sobre dichos valores.

Por ejemplo, objetos de tipo Entero pueden tomar valores del conjunto de los enteros
(Z), y las operaciones sobre dichos valores son:
Aritmticos: +,-, -(unario), *, div, mod, ^
Relacionales: >,<, =, , ,
CARACTERSTICAS Y VENTAJAS DE LOS TIPOS DE DATOS
Caractersticas:
Un tipo de dato determina la clase de valores que puede asumir una variable o una
expresin. En ocasiones una variable determina el tipo de una expresin.
Cada variable pertenece a un solo tipo de dato
Cada operador acta sobre operandos de algn tipo, y da como resultado un valor de
algn tipo

Ventajas:
La verificacin de tipos es realizada por el traductor
Permite agrupar un conjunto de valores que guardan una estrecha relacin.
Permite ver las operaciones sobre los valores de manera indivisible
Ocultamiento de la representacin interna: se ve slo la especificacin y no la
implementacin.
CLASIFICACIN DE LOS TIPOS DE DATOS
El criterio para clasificar los tipos de datos est dado por el nmero de componentes
(determina si es estructurado o no) y segn el tipo de sus componentes (si es no
8 5
3 1
DIV MOD
12
estructurado equivale al tipo, y si es estructurado determina si es homogneo o
heterogneo).









Podemos referirnos a objetos de tipo no estructurado cuando el conjunto de valores que
pueden tomar son no estructurados, y objetos de tipo estructurado cuando el conjunto
de valores que pueden tomar son estructurados.
TIPOS DE DATOS NO ESTRUCTURADOS
Los tipos de datos no estructurados que estn disponibles en la mayora de los
lenguajes de programacin son el tipo entero, caracter, real y lgico. Muchos lenguajes
permiten la definicin de tipos subrango o subintervalos y enumerados. A continuacin
explicaremos brevemente cada uno de estos tipos.
Tipo Entero:
Conjunto de valores: subconjunto de los enteros
Conjunto de operaciones
Aritmticos: +,-, -(unario), *, div, mod, ^
Relacionales: >,<, =, , ,
Tipo Real:
Conjunto de valores: subconjunto de los reales
Conjunto de operaciones:
Aritmticos: +,-, -(unario), *, /, ^
Relacionales: >,<, =, , ,
Tipo
Nmero de
Componentes
Elemental
Estructurado
Entero, caracter, lgico, real
Enumerado
Subrango
Homogneos: archivos
arreglos
Heterogneos: registros
1

n

Tipo de
Componentes
=

13
Tipo Caracter:
Conjunto de valores: Tabla ASCII tiene 128 caracteres, Tabla ASCII extendida tiene 256
caracteres.
Conjunto de operaciones:
Relacionales: >,<, =, , ,

Acerca del cdigo ASCII: La organizacin Internacional de Normas (ISO) define el
cdigo estadounidense ASCII (Cdigo Standard Americano para el Intercambio de
Informacin), que constituye el cdigo ms aceptado. Este cdigo consta de 128
caracteres, de los cuales 99 son imprimibles y los 33 restantes son de control. En
muchas mquinas se usan 8 bits para representar los caracteres, y suele usarse la tabla
ASCII extendida, que consta de 256 caracteres (los mismos 128 del cdigo ASCII y
otros 128 caracteres).

En el conjunto de caracteres se tienen las 26 letras maysculas latinas, las 26
minsculas, los 10 nmeros arbigos y otros caracteres como los signos de puntuacin
y el espacio. Entre los caracteres hay un orden, que viene dado por el valor binario que
tiene asociado. Este orden depende del sistema de codificacin que se use. Sin
embargo, en general los subconjuntos de letras y nmeros son ordenados y contiguos,
cumplindose:

a<b< <z
A<B< <Z
0<1< <9

Esto hace que los operadores relacionales puedan aplicarse sobre los caracteres. As
mismo, muchos lenguajes de alto nivel proveen herramientas para realizar operaciones
aritmticas sobre caracteres. En Pascal Succ(a)=b; Chr(ORD(a)+1)=b. En C y en
Java, sencillamente a+1=b. Las letras AZ estn ubicadas del 65 al 90, de la a z
del 97 al 122. Los nmeros de 0 9 del 49 al 57, el espacio en el 32.
Tipo Lgico:
Conjunto de valores: {verdadero y falso}
14
Conjunto de operaciones:
Lgicas: no, o, y
Relacionales: =,




Resumiendo:

Tipo de dato Constantes Variables Expresiones
Entero 3, 0, -1 I, J, K, ini I+J*K, 5+8*3
Real 3.141, 0.1, -1.1 Pi, X, Z X^(1/2) , Pi*R^2
Lgico verdadero/falso L1, L2, L3 no L1 y L2 o no L3
Caracter A, h, C1, C2 A>B, C1C2

Ejercicios Resueltos:
Traducir a lenguaje algortmico
1) pq
no p o q;

2) ax
2
+bx+c
a * (x^2) + b * x + c;

3) a+2b
3
(a + 2 * b) / 3;
PRIORIDAD DE OPERADORES
Cuando mezclamos en una expresin operadores relacionales, booleanos y aritmticos,
tendremos la siguiente prioridad:

( )
- (unario), no, ^
*, /, mod, div
p q p q pq pq
V V F F V V
V F F V F V
F V V F F V
F F V V F F
Para recordar
15
+, -
<, , >,
=,
y
o
16
TEMA 3: ACCIONES ELEMENTALES
Declaraciones de variables, constantes y tipos. Instruccin de Asignacin. Valor izquierdo y
derecho de una variable. Acciones predefinidas. Operacin de Lectura. Operacin de Escritura.
DECLARACIN DE VARIABLES
Las variables se declaran de la siguiente forma:
<nombre del tipo> <lista de 1 o ms variables>;

Cada variable es la concatenacin de uno o ms caracteres alfanumricos,
comenzando siempre por un caracter alfabtico.

Ejemplos:
Accin Principal
Entero i, j, k;
Real x, y;
Lgico b1;
Caracter y1;
faccin

ACCIONES ELEMENTALES
Las acciones elementales son: la asignacin, la entrada simple y la salida simple. Con
estas acciones se pueden crear acciones ms complejas mediante las formas de
composicin de acciones.
Asignacin:
Asociacin de un valor a una variable. Permite modificar el estado de los objetos del
algoritmo. La notacin algortmica que usaremos para la asignacin es:

<nombre de variable> <constante, variable o expresin>;

Por ejemplo, si I y J son variables de tipo entero, las siguientes asignaciones son
validas:

I 1; # asignacin de una constante a una variable
I J; # asignacin de una variable a otra
I I+1; # asignacin del resultado de evaluar una expresin a
# una variable
I J mod 2; # asignacin del resultado de evaluar una expresin a
# una variable
17
Otro ejemplo

Caracter C1;
Entero I;
Lgico Enc;

C1 a; # en este momento C1=a
Enc (1>0); # Luego de la asignacin, el valor de Enc es
# verdadero
I 5+16 div 3 # luego de la asignacin, el valor de I es 10

Secuenciamiento:
Consiste en presentar las acciones en un orden. Las acciones se efectan en el mismo
orden en que son escritas. El smbolo punto y coma ( ; ) se utiliza para separar una
instruccin de otra.

Ejemplo:
Accin Principal
Entero I;
I 1; #en este momento I tiene el valor de 1
I I+1; # en este momento I tiene el valor de 2
I I^5; # en este momento I tiene el valor de 32
I I mod 2; # I = 0
faccin

Otro ejemplo

Accin Principal
Caracter C1;
Entero I;
Lgico Enc;
C1 a; # en este momento C1=a
Enc (1>0); # Luego de la asignacin, el valor de Enc es
# verdadero
I 5+16 div 3 # luego de la asignacin, el valor de I es 10
faccin

18
Entrada Simple
Almacena un valor extrado desde un dispositivo externo (del cual hacemos abstraccin,
aunque generalmente es el teclado) en una variable. El efecto de esta accin es el
cambio de valor de la variable en cuestin.
La sintaxis algortmica que adoptaremos para esta accin es:

Leer (<nombre de variable>);

Ejemplos:
Entero I;
Leer (I);

Real X;
Leer (X);

Caracter c;
Leer (c);

Cabe destacar que luego de leer un valor de un dispositivo externo, el valor de la
variable cambia de igual forma que en una asignacin.
Salida Simple
Transmite un valor (constante, variable o evaluacin de una expresin) a un dispositivo
externo (del cual hacemos abstraccin, aunque generalmente es el monitor) para ser
mostrado al usuario. Generalmente es utilizado para mostrar los resultados obtenidos.

La sintaxis algortmica que utilizaremos para esta accin es:

Escribir(<Nombre de variable, constante o expresin>);

Ejemplos
Escribir (1); # se ha escrito el nmero 1
Entero I;
I 1;
Escribir (I+1); #se ha escrito el nmero 2

Ejercicios Resueltos:
Haga un algoritmo que dados dos nmeros enteros devuelva el resultado de la suma de
ellos.
19
Accin Principal
Entero A, B, Res;
Leer(A); Leer(B);
Res A + B;
Escribir(Res);
faccion

Dado un nmero entero N obtener el primer dgito (asociado a las unidades)

Accin Principal
Entero N, Res; #se han declarado dos variables, con valor
# indefinido
Leer(N); # N contiene el numero introducido por el
# usuario
Res n mod 10; # Res tiene el resultado, el primer dgito de N
Escribir(Res); # Se escribi el resultado.
faccion

Dado un numero entero N obtener el dgito asociado a las decenas

Accin Principal
Entero N, Res; # se han declarado dos variables, con valor
# indefinido
Leer(N); # N contiene el numero introducido por el
# usuario
Res N div 10; # Res contiene el numero N sin el primer dgito
Res Res mod 10; # Res tiene el segundo dgito de N
Escribir(Res); # Se escribi el resultado.
faccion


En este algoritmo podemos suprimir la variable Res, ya que la escritura soporta la
evaluacin de expresiones, finalmente el algoritmo puede ser escrito como:

Accin Principal
Entero N; # se declaro la variable N
Leer(N); # N contiene el numero introducido
# por el usuario
Escribir(N div 10 mod 10); # Se escribi el resultado.
faccion

Dado un nmero entero N obtener el dgito I-esimo

En este caso el usuario debe introducir adems del nmero, la posicin del dgito a
extraer. Haciendo analoga con los ejercicios anteriores, debemos extraer los I-1
20
primeros dgitos del numero N, como I es entero, debemos asumir, por ahora, que es
mayor que 0

Accin Principal
Entero N, I, Res;
Leer (N);
Leer (I);
Res N div 10^(I-1);
Res Res mod 10;
Escribir (Res);
faccion

Dado un crculo centrado en el origen, determine si un punto pertenece al mismo.

Anlisis: para empezar hay que saber cuales don los elementos que intervienen en este
problema. Por un lado, tenemos el crculo. Un circulo centrado en el origen est definido
como todos los puntos (x,y) tal que:

x
2
+y
2
r
2

Donde r es el radio del circulo y x e y las coordenadas de un punto en el plano R2. Los
valores que necesitamos conocer entonces son el radio y el punto (x,y) que queremos
verificar. El resultado es simplemente evaluar si el punto est dentro o no del crculo con
la inecuacin.

Accin Principal
Real r, x, y;
Lgico Res
Leer( r ); Leer (x); Leer (y);
Res (x*x + y^2 r*r)
Escribir (Res);
faccion

Ntese que podemos eliminar la variable Res si escribimos Escribir(x*x + y^2 r*r)

Dado un nmero entero de 3 dgitos, verificar si es palindrome.

Accin Principal
Entero N, D1, D3;
Lgico L;
Leer(N);
21
D3 N div 100; // D1 tiene el valor del primer dgito del
// nmero
D1 N mod 10; // D3 tiene el valor del tercer dgito
L D1 = D3; // si D1=D3 L tiene verdadero, sino tiene falso
Escribir(L);
faccion
22
TEMA 4: INTRODUCCIN AL ENFOQUE ORIENTADO A OBJETOS
Objetos y Clases. Atributos de clase y de objetos. Mensajes. Encapsulamiento. Descomposicin
basada en objetos. Relaciones entre clases y objetos
PROGRAMACIN ORIENTADA A OBJETOS
Es una ampliacin natural del concepto de Tipo de Datos, que incorpora los aspectos
descriptivos y funcionales de la informacin en bloques autnomos de programacin
(clases). La mayor parte del software comercial y en uso est basado en los conceptos
de orientacin a objetos.

En la POO, cada objeto puede ser considerado como un proveedor de servicios
utilizados por otros objetos que son sus clientes. Cada objeto puede ser a la vez
proveedor y cliente. De all que un programa pueda ser visto como un conjunto de
relaciones entre proveedores y clientes.
Objeto:
Es una entidad fundamental que tiene una identidad, un estado y un comportamiento.
Identidad de un objeto
Cada objeto tiene una identidad nica, aun si su estado en un momento dado, es
idntico al de otros objetos

Profesor: J. Prez
Ensea: Matemticas

Profesor: J. Prez
Ensea: Matemticas
Estado de un objeto:
El estado de un objeto es una de las posibles condiciones en que un objeto puede
existir El estado de un objeto normalmente cambia con el tiempo
El estado de un objeto es usualmente implementado por un conjunto de propiedades
llamadas atributos


23
Ejemplo.

Nombre: Vanessa
CI: 123456
Contratacin: 01/01/01
Puesto: profesora

Comportamiento de un objeto
El comportamiento determina como un objeto acta y reacciona
El comportamiento define la manera en la que un objeto responde a las peticiones de
otros objetos
El comportamiento visible de un objeto se modela con un conjunto de mensajes a los
que el puede responder
Los mensajes se implementan como las operaciones del objeto



CLASES
Cuando se han identificado muchos objetos en un dominio, decimos que una clase es
una abstraccin que describe un grupo de objetos que tienen:
propiedades en comn (atributos)
comportamiento en comn (operaciones)
relaciones comunes con otros objetos (asociaciones)

Una clase es una abstraccin porque:
Enfatiza caractersticas relevantes al sistema
Suprime otras caractersticas

La Relacin entre Clases y Objetos
Una clase es una definicin abstracta de un objeto
Escuela de
Computacin
Profesores
Asigna curso
Confirmacin
24
Define la estructura y comportamiento de cada objeto en la clase
Sirve como una plantilla para crear objetos

Un objeto es una instancia concreta de una clase
Los objetos pueden agruparse en clases

Clase Asignatura

Estructura
Nombre
Cdigo
Crditos
Secciones

Comportamiento
Aadir un Estudiante
Eliminar un Estudiante
Ver si el cupo est lleno

Los servicios ofrecidos por los objetos son de dos tipos:
Los datos, que llamamos atributos
Las acciones, que llamamos mtodos.
Atributos:
Son elementos de datos utilizados para definir una ocurrencia de un objeto. Un atributo
es una caracterstica de un objeto. Mediante los atributos se define la informacin de un
objeto, la cual es manipulada solamente por los mtodos definidos sobre dicho objeto.
Mtodos:
Son las operaciones que se aplican sobre los objetos. La implementacin de los
mtodos no es visible fuera del objeto.

Ejemplo: Algoritmos y programacin es un objeto de la clase Asignatura y est
caracterizada por cuatro atributos que son: su Nombre: Algoritmos y programacin,
25
Cdigo: 6201, Crditos: 6, Secciones: 4, y los mtodos que permiten Aadir un
estudiante, eliminar un estudiante y verificar si hay cupo.
ELEMENTOS DE LA POO.
Abstraccin
Es el principio de ignorar aquellos aspectos de un fenmeno observado que no son
relevantes, con el objetivo de concentrarse en aquellos que si lo son. Una abstraccin
denota las caractersticas esenciales de un objeto (datos y operaciones).

Encapsulacin (Ocultamiento de informacin)
Plantea la integracin en una entidad simple de un conjunto de datos y operaciones
sobre estos datos. La idea central de la encapsulacin es esconder los detalles y
mostrar lo relevante. La encapsulacin permite el ocultamiento de la informacin
separando el aspecto correspondiente a la especificacin de la implementacin; de esta
forma, distingue el "qu hacer" del "cmo hacer". La especificacin es visible al usuario
y la implementacin oculta al l. En la prctica, se esconde la especificacin del objeto,
as como la implementacin de los mtodos.

Modularidad
Es la propiedad que permite tener independencia entre las diferentes partes de un
sistema. En POO las clases son mdulos perfectamente definidos y estructurados, al
definir un objeto se crea una instancia de la clase que contiene sus datos y mtodos
para realizar operaciones sobre l.

Polimorfismo
Es la propiedad que permite que un nombre pueda denotar instancias de distintas
clases. Existen 2 tipos de polimorfismo:

El polimorfismo por inclusin se basa en el hecho de que un objeto puede pertenecer a
ms de una clase y por consiguiente puede ser manipulado por los mtodos de las
clases a las cuales pertenece. La herencia entre clases es el mecanismo ms conocido
26
de polimorfismo por inclusin en el EOO.

El polimorfismo operacional permite aplicar operaciones con igual nombre a diferentes
objetos que no estn relacionados. En este tipo de polimorfismo, los mtodos son
interpretados en el contexto del objeto particular, ya que los mtodos con nombres
comunes son implementados de diferente manera dependiendo de cada objeto.
DEFINICIN DE CLASES
Diagrama de Clases: siguiendo la notacin UML (Unified Modeling Language), cada
clase identificada en el dominio del problema planteado, es representada con un
rectngulo dividido en tres partes, de la siguiente forma:


Donde Nombre es el nombre de la clase

Atributos es la lista de atributos definidos para la clase, indicando por cada uno:

<modo de acceso><Nombre del atributo>: <tipo de dato>

<modo de acceso> indica la visibilidad del atributo, fuera del alcance de la clase,
pudiendo ser:
Privado (-): No puede accederse a el fuera del alcance de la clase
Publico (+): Puede accederse sin limitaciones fuera del alcance de la clase
Protegido (#): Puede ser accedido solo en las subclases o clases hijas dentro de la
jerarquia de clases relacionadas por la herencia.

<Nombre del atributo> denominacin dada al atributo
<Tipo de dato> describe el dominio de datos dentro del que se representa el atributo.
Puede ser un tipo de dato elemental (entero, real, string, logico), un arreglo o una clase
ya definida.
Nombre
Atributos
Mtodos
27

Mtodos: es la lista de mtodos definidos sobre los objetos de la clase, indicando para
cada mtodo:

<modo de acceso> <Nombre>(<lista de parametros>)

Para el caso de la clase Asignatura:

RELACIONES ENTRE CLASES
Las relaciones entre clases se pueden enumerar en: asociacin, herencia, agregacin,
composicin, instanciacin y metaclase.

Herencia: Es la relacin entre clases donde una clase comparte la estructura y/o
conducta de otras clases. Define una jerarqua "es un" entre clases. Una subclase se
considera una especializacin de la superclase. Por ejemplo, un mosquito "es un"
insecto, y una especializacin de insecto. Se representa mediante una relacin de
generalizacin/especificacin, que se denota con la flecha siguiente:
Ejemplo: profesor hereda de persona, entonces




Los diagramas con herencia se pueden presentar as:
Asignatura
- Nombre: string
- Cdigo: entero
- Crditos: entero
- Secciones: entero

+ Aadir_estudiante()
+ Eliminar_Estudiante()
+ Ver_cupo()
padre
hijo
Profesor
Persona
Departamento
Mercadeo Contabilidad Informtica . . .
28
Agregacin: La agregacin es una relacin "es parte de". Por ejemplo, un segmento
est delimitado por dos puntos a y b, que son parte del segmento. Es un tipo de relacin
dinmica, en donde el tiempo de vida del objeto incluido es independiente del que lo
incluye. El objeto base utiliza al incluido para su funcionamiento. Esta relacin se
destaca por un rombo vaco del lado base, y una flecha del lado incluido.


El en caso del computador, si no deseamos venderlo completo, podemos vender
sus partes. As, pese a que el computador haya sido desarmado, sus partes
siguen existiendo.

En una prctica de boxeo, los guantes pueden ser pensados como una parte del
boxeador. Si el boxeador se retira, los guantes podran ser utilizados por otro. As, los
guantes de boxeo perduran, a pesar de que el boxeador ya no est en el cuadriltero

Composicin: Es similar a la agregacin, salvo que es un tipo de relacin esttica, en
donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del
que lo incluye. El Objeto base se contruye a partir del objeto incluido, es decir, es
"parte/todo". Esta relacin se destaca por un rombo relleno del lado todo, y una flecha
del lado parte.



Otro ejemplo es Universidad y Facultad. Si la universidad deja de existir, tampoco
deben existir sus facultades, y si no hay facultades tampoco escuelas ni los salones, ni
los pupitres.

Asociacin: Una asociacin denota una dependencia semntica entre objetos. La
asociacin entre clases tiene asociada una cardinalidad para instancias de ellas: uno a
uno, uno a muchos, muchos a muchos. Por ejemplo, entre estudiante y materia hay una
relacin muchos a muchos: un estudiante tiene asociado n materias (n1), y una
Computador
Monitor
Teclado
Arbol
Rama
1
m
29
materia tiene asociada m estudiantes (m1). Una asociacin se representa como una
lnea que une dos o ms clases.


La Cardinalidad es una restriccin que se pone a una asociacin/agregacin, que limita
el nmero de instancias de una clase que pueden tener esa asociacin con una
instancia de la otra clase. Puede expresarse de las siguientes formas:

Con un nmero fijo: 1.
Con un intervalo de valores: 2..5
Con un rango en el cual uno de los extremos es un asterisco. Significa que es un
intervalo abierto. Por ejemplo, 2..* significa 2 o ms.
Con una combinacin de elementos como los anteriores separados por comas: 1, 3..5,
7, 15..*.
Con un asterisco: * . En este caso indica que puede tomar cualquier valor (cero o ms).

Para el caso de la cuenta bancaria, a esta puede ser aplicada 0 o ms operaciones..

En una relacin de agregacin o de asociacin, se puede indicar el nombre de la
relacin (por ejemplo, emplea, aplica, tiene, etc), cardinalidad y/o rol.

Navegabilidad
En una asociacin, se puede indicar la navegabilidad mediante un tringulo colocado
sobre la lnea, donde la base est colocada hacia el objeto origen. Significa que es
posible "navegar" desde el objeto de la clase origen hasta el objeto de la clase destino.
Se trata de un concepto de diseo, que indica que un objeto de la clase origen conoce
al (los) objeto(s) de la clase destino, y por tanto puede llamar a alguna de sus
operaciones.
Operacin
Cuenta
Bancaria
Se aplican
* 1
30
Rol
Para indicar el papel que juega una clase en una asociacin se puede especificar un
nombre de rol. Ejemplo: contratante y empleado para las clases empresa y Persona

Cuando una asociacin tiene propiedades propias se representa como una clase unida
a la lnea de la asociacin por medio de una lnea a trazos. Como vemos en el ejemplo,
tenemos dos clases que se asocia: empresa y trabajador, pero en la asociacin nace
una nueva clase que tiene como atributo el salario, producto de emplear al trabajador.


Asociacin n-arias, se unen por un rombo. Para el caso de un equipo de Bisbol que
contrata jugadores para temporadas, tendramos lo siguiente:


El nombre de la asociacin es opcional y se muestra como un texto que est prximo a
la lnea. Se puede aadir un pequeo tringulo negro slido que indique la direccin en
la cual leer el nombre de la asociacin. En Figura siguiente se puede leer la asociacin
como Una Empresa emplea uno o ms Persona.

Los nombres de las asociaciones normalmente se incluyen en los modelos para
Empresa Persona
Emplea
1 1*
Contratante Empleado

Salario

Empresa Persona
Emplea
1 1*
Contratante Empleado
Temporada
Equipo Jugador
Salario

Contrata
1 11...*
1*
31
aumentar la legibilidad. Para agregacin, Combinacin y de herencia no se suele poner
el nombre.

CLASE ABSTRACTA
Una clase abstracta se denota con el nombre de la clase y de los mtodos con letra
"itlica". Esto indica que la clase definida no puede ser instanciada pues posee mtodos
abstractos (an no han sido definidos, es decir, sin implementacin). La nica forma de
utilizarla es definiendo subclases, que implementan los mtodos abstractos definidos.
Un ejemplo es la clase Figura. La clase Figura no tiene implementado un mtodo
Dibujar. Sin embargo las subclases Crculo, Tringulo y Elipse s.



Figura

Dibujar()
Tringulo

Dibujar()
Crculo

Dibujar()
Elipse

Dibujar()
32
TEMA 5: ESTRUCTURAS DE CONTROL
Secuenciacin. Bloques. Seleccin simple, compuesta, anidada y mltiple. Estructuras de control
iterativas: Repetir, Mientras, Para.
FORMAS DE COMPOSICIN DE ACCIONES
Son los mecanismos mediante los cuales es posible construir nuevas acciones a partir
de otras. En este curso estudiaremos las siguientes:

Seleccin mltiple
Seleccin simple
Formas de iteracin: Mientras, Repetir, Para.

SELECCIN MLTIPLE
Es una forma de composicin de acciones que se utiliza en problemas donde es
necesario realizar un anlisis por casos, es decir, permite tratar problemas donde las
acciones a tomar dependan de la evaluacin de ciertas condiciones.
La notacin que vamos a utilizar, es la siguiente:

Seleccion
E1: <accin1>
E2: <accin2>
.
.
En: <accin n>
fseleccion

Donde Ei debe satisfacer las siguientes condiciones:
E1 o E2 o . . . o En = verdadero
Ei, Ej Ei y Ej = falso

Es decir, una y solo una de las posibilidades debe satisfacerse.

Ejemplo de un semforo:
Si est en rojo, detenerse
Si est en verde, pasar
Si est en amarillo, detenerse si es posible, si no pasar con precaucin
33
En una seleccin el criterio sera el color del semforo, para el que el dominio de
definicin es el conjunto formado por los tres colores del semforo {verde, rojo, amarillo}

Seleccin
Semaforo=verde: pasar;
Semaforo = rojo: parar;
Semaforo= amarillo: pasar con precaucin;
fseleccin

Ejemplo:
Hallar el mximo entre 2 nmeros dados

Accion Principal
Entero A, B, Max;
Seleccion
A>B: Max A;
A=B: Max A;
A<B: Max B;
fseleccin
faccin

SELECCIN SIMPLE
Surge como una simplificacin de un caso particular de la seleccin mltiple, es decir, si
la seleccin est formada por dos casos y no hay accin asociada a uno de esos casos,
entonces usamos la seleccin simple.

Ej:
Seleccion
L1: A;
L2:B
fseleccion

Si L1 entonces
A
fsi
Si L2 entonces
B
fsi


En el caso del mayor de dos nmeros, podramos escribir el algoritmo as:

Accion Principal
Entero A, B, Max;
Si A>B entonces
Max A;
fsi
Si A=<B entonces
34
Max B;
fsi
faccin

O tambin as:

Accion Principal
Entero A, B, Max;
Si A>B entonces
Max A;
sino
Max B;
fsi
faccin

Ejercicios Resueltos:
Como aguinaldo de fin de ao, se ha decidido conceder un bono a todos los empleados
y trabajadores del pas, en base a su sueldo mensual. A los empleados menores de 25
aos, se les dar el 25% de su sueldo, a los trabajadores entre 25 y 45 aos, se les
dar el 30% de su sueldo, y a los trabajadores con ms de 45 aos, se les dar el 40%
de su sueldo.
Adicionalmente, a las mujeres se les dar un bono adicional de Bs. 100.000 por cada
hijo que tenga.
En ningn caso el bono puede exceder de Bs. 3.000.000

Dados los datos de una persona (edad, sexo, sueldo, nde hijos) determinar el monto
del bono.

Accin Principal
Entero Edad, hijos;
Caracter sexo;
Real sueldo, bono;

Leer (sueldo);
Leer (Edad);
Leer (sexo);
Leer (hijos);

Seleccion
Edad < 25: bono sueldo * 0.25;
Edad 25 y Edad 45: bono sueldo * 0.30;
Edad > 45: bono sueldo * 0.40;
fseleccin
35

Si sexo= f entonces
bono bono + (100.000 * hijos);
fsi

Si bono>3.000.000 entonces
bono 3.000.000;
fsi

Escribir (bono);
faccion

Dados los coeficientes de dos rectas decir si son iguales, paralelas o distintas. Si son
distintas decir en que punto se intersectan.

La ecuacin de una recta viene dada por y=m1x + b1.
Si tenemos dos rectas, entonces tenemos
R1: Y = m1x+b1
R2: Y = m2x+b2

R1=R2 si m1=m2 y b1=b2
R1 || R2 si m1=m2 y b1 b2
R1 R2 si m1m2 y b1 b2

Accion Principal
Entero m1, m2, b1, b2;
Leer(m1);
Leer(m2);
Leer(b1);
Leer(b2);

Seleccin
m1=m2 y b1=b2: Escribir(Las rectas son iguales);
m1=m2 y b1b2: Escribir(las rectas son paralelas);
m1m2: Escribir(las rectas son diferentes);
xi (b1-b2) / (m2-m1);
yi m1*xi+b1;
Escribir(se intersectan en +xi, xy);
fseleccion
faccion

36
ESTRUCTURAS ITERATIVAS
Hasta ahora, hemos visto que una accin puede ser ejecutada slo cero o una vez. Es
posible repetir ms de una vez la ejecucin de una accin? Si, mediante estructuras
iterativas
Repetir
Es una estructura de control que permite ejecutar un bloque de instrucciones varias
veces hasta que la expresin que controla dicha estructura sea verdadera. Debido a
que la evaluacin de la expresin de control se realiza al final del bloque de
instrucciones, este conjunto de instrucciones se ejecuta al menos una vez.

Con un diagrama de flujo, podramos ilustrarlo as:









La sintaxis algortmica que vamos a utilizar para expresar este ciclo es:

Repetir
<accin 1>
.
.
<accin n>
hasta <expresin>

Ejemplo.
En el ejercicio del clculo del bono, realizar el clculo e imprimir el bono
correspondiente a c/u de los empleados de la empresa. Asuma que CI=0 indica que ya
se calcul el bono de todos los empleados y que la empresa tiene al menos un
empleado.

Instrucciones
Condicin
F
V
37
Accin Principal
Entero CI, Edad, hijos;
Caracter sexo;
Real sueldo, bono;

Leer(CI);
Repetir
Leer (sueldo);
Leer (Edad);
Seleccin
Edad < 25: bono sueldo * 0.25;
Edad 25 y Edad 45: bono sueldo * 0.30;
Edad > 45: bono sueldo * 0.40;
fseleccin
Leer (sexo);
Leer (hijos);
Si sexo=f entonces
Bono bono + (100.000 * hijos);
fsi

Si bono>3.000.000 entonces
Bono 3.000.000;
fsi
Escribir (CI, bono);
Leer(CI)
Hasta (CI=0)
faccin


Dado un conjunto de 100 nmeros enteros, determinar el menor, el mayor y el promedio
de ellos.
Accin Principal
Entero Menor, Mayor, N, Suma, cont;
Real promedio;
Leer(N);
Mayor N;
Menor N;
Suma N;
Cont 1;
Repetir
Leer(N)
Si N > Mayor entonces
Mayor N;
fsi
Si N < Menor entonces
Menor N;
fsi
Suma Suma + N;
cont cont+1;
Hasta (cont=100)
Promedio Suma/100;
Escribir (Mayor);
38
Escribir(Menor);
Escribir(promedio);
faccin
Mientras
Es una estructura iterativa con control antes de ejecutar el bloque de instrucciones, es
decir, el bloque de instrucciones se ejecuta mientras la evaluacin de la expresin sea
verdadera, lo que implica que es posible que no se ejecute dicho bloque. Con un
diagrama de flujo podramos verlo as:







La sintaxis que vamos a utilizar es

Mientras <condicin> hacer
<inst1>
.
.
<instn>
fmientras

Ejemplo:
El Banco APC necesita que usted desarrolle un algoritmo que permita cambiar una
cantidad de dinero en billetes a su equivalente en monedas de 500, 100, 50, 20 y 10.
Asuma que la cantidad de dinero es mltiplo de 10. El algoritmo debe terminar cuando
la cantidad introducida sea igual a 0.
Accin Principal
Entero dinero, mon500, mon100, mon50, mon20, mon10, resto;
Leer(dinero);
Mientras (dinero 0) hacer
mon500 dinero div 500;
resto dinero mod 500;
mon100 resto div 100;
resto resto mod 100;
mon50 resto div 50;
resto resto mod 50;
mon20 resto div 20;
resto resto mod 20;
Instrucciones
Condicin
F
V
39
mon10 resto div 10;
Leer(dinero);
fmientras
Escribir(mon500);
Escribir(mon100);
Escribir(mon50);
Escribir(mon20);
Escribir(mon10);
faccion

Para
Es una estructura iterativa que es controlada por una variable, la cual es modificada
desde una cantidad inicial en incrementos dados hasta que alcanza un valor final.












La sintaxis que vamos a utilizar es la siguiente:

Para <Identificador> <valor1> hasta <valor2> en <inc> hacer
<inst 1>

<inst n>
fpara

En este ciclo la variable <Identificador> se inicializa en <valor1> y el ciclo continuar
hasta que <Identificador> sobrepase <valor2. <inc> es el tamao del paso en el que se
incrementa la variable <Identificador>

Ejemplo:
Dado un nmero entero, hallar su factorial.
Instrucciones
Condicin
F
V
Var N1
VarVar+N2
40
Para calcular el factorial de un nmero N, se debe cumplir que:
N > 0
Fact(n) = n*Fact(n-1)
Fact(1) = 1
Fact(n) = n*(n-1)*(n-2)* . . . * 2 * 1

Accion Principal
Entero i, n, fact;
Leer(n);
Si (n>0) entonces
Para (i=1) hasta n en 1 hacer
fact fact * i;
fpara
Escribir(fact);
sino
Escribir(el numero debe ser positivo);
fsi
faccion

Usando un Mientras

Accion Principal
Entero i, n, fact;
Leer(n);
i 1;
Si (n > 0) entonces
Mientras (i n+1) hacer
fact fact * i;
i i+1;
fmientras
Escribir(fact);
sino
Escribir(el numero debe ser positivo);
fsi
faccion

Ejercicios Resueltos:
La panadera Mi Pan desea que usted desarrolle un programa que dada la cantidad de
personas le indique los ingredientes necesarios para hacer el pastel dans. La receta
con la que ellos cuentan es para 4 personas y es la siguiente:
675 gramos de manzanas
75 gramos de mantequilla
150 gramos de azcar
100 gramos de migas de pan
41
150 mililitros de leche.
Realice un algoritmo que dado el nmero de personas indique la cantidad de
ingredientes a utilizar

Accin Principal
Entero personas
Real mantequilla, manzanas, azucar, pan, leche;

Leer(personas)

Si (personas>0) entonces
Mantequilla (75/4)*personas;
Manzanas (675/4)*personas;
azucar (150/4)*personas;
pan (100/4)*personas;
leche (150/4)*personas;
Escribir(Mantequilla +((75/4)*personas)+ gramos);
Escribir(Manzanas +((675/4)*personas)+ gramos);
Escribir(azucar +((150/4)*personas)+ gramos);
Escribir(pan +((100/4)*personas)+ gramos);
Escribir(leche +((150/4)*personas)+ mililitros);
Sino
Escribir(Numero invalido);
fsi
faccion

Dados a y b enteros, obtener el producto de ambos por sumas sucesivas.

Accion Principal
Entero a, b, i, prod;
prod 0;
Para (I=1) hasta b en 1 hacer
prod prod + a;
fpara
faccion

Se tiene un listado de alumnos que consiste en cdula y 4 notas por alumno. La
condicin de aprobacin es un promedio mayor o igual que 10. Informar un listado en el
mismo orden de entrada con el numero de cdula, el promedio y una leyenda (aprobado
o desaprobado) por alumno. No se conoce la cantidad total de alumnos a procesar. El
listado puede estar vaco (CI=0).

Accin Principal
Entero CI, nota1, nota2, nota3, nota4;
Real prom;
Leer(CI);
42
Mientras (CI0) hacer
Leer(nota1);
Leer(nota2);
Leer(nota3);
Leer(nota4);
Prom (nota1+nota2+nota3+nota4) / 4;
Si (prom<10) entonces
Escribir(El alumno +CI+ tiene promedio de +prom+ y
est reprobado);
Sino
Escribir(El alumno +CI+ tiene promedio de +prom+ y
est aprobado);
fsi
fmientras
faccion

De una prueba de nivel realizada a 100 alumnos se conoce la cantidad total de
preguntas realizadas y la cantidad de respuestas correctas por cada uno. Informar el
nivel registrado de acuerdo a la siguiente escala:
Muy Bueno si el porcentaje es mayor o igual a 90%;
Bueno entre 70% y 90% ;
Regular entre 50% y 70% ;
Malo si el porcentaje es menor que 50%.

Accion Principal
Entero preguntas, respuestas, I;
Real porcentaje;
Leer(preguntas);
Para (i=1) hasta 100 en 1 hacer
Leer(CI);
Leer(respuestas);
Porcentaje respuestas/preguntas;
Seleccion
Porcentaje 90: Escribir(El alumno +CI+ tuvo un nivel
Muy Bueno);
Porcentaje 70 y Porcentaje 90: Escribir(El alumno +CI+
tuvo un nivel Bueno);
Porcentaje 50 y Porcentaje < 70: Escribir(El alumno
+CI+ tuvo un nivel Regular);
Porcentaje < 50: Escribir(El alumno +CI+ tuvo un nivel
Malo);
fseleccin
fpara
faccion

43
TEMA 6: CLASES Y MTODOS
Declaracin de Clases. Atributos. Mtodos. Control de acceso. Utilizacin de mtodos. Pase de
Parmetros: valor y referencia. Mtodos Predefinidos. Mtodos Constructores y Destructores.
Definicin de Objetos. Relaciones entre clases: dependencia, agregacin, herencia. Jerarqua de
Clases. Redefiniciones de mtodos y polimorfismo. Los mtodos en los lenguajes
procedimentales: Acciones y Funciones, ambientes de referenciacin: datos locales y no
Locales.
IMPLEMENTACIN DE UNA CLASE
La implementacin de una clase est delimitada por:

Clase <Nombre_Clase> [hereda de <lista de superclases>]
.
.
.
fclase <Nombre_Clase>

Para declarar los atributos y mtodos de una clase, usaremos la siguiente notacin:
<modo de acceso><tipo de dato><Nombre del atributo>;

<modo de acceso> indica la visibilidad del atributo, fuera del alcance de la clase,
pudiendo ser:

Privado
Publico
Protegido

Algortmicamente, las clases son descripciones netamente estticas de conjuntos
posibles de objetos. Su rol es definir nuevos tipos (valores + operaciones)

Por el contrario, los objetos son instancias particulares de una clase.. Durante la
ejecucin del programa slo los objetos existen.

La declaracin de una variable de una clase dada NO crea el objeto. La asociacin
siguiente: <Clase> <Variable>, por ejemplo Rectngulo R, no genera automticamente
un objeto Rectngulo. Slo indica que R ser una referencia a objetos de la clase
rectngulo. La creacin de un objeto, debe ser indicada explcitamente por el
44
programador, de forma anloga a como inicializamos las variables con un valor dado,
slo que para los objetos se hace a travs de un mtodo constructor.
CREACIN DE OBJETOS
Cada objeto o instancia de una clase debe ser creada explcitamente a travs de un
mtodo especial denominado Constructor. Los atributos de un objeto toman valores
iniciales dados por el constructor. Por convencin el mtodo constructor tiene el mismo
nombre de la clase y no se le asocia modo de acceso (es pblico) y se distingue en la
implementacin de la clase con las palabras:

Constructor ()
.
.
fconstructor;

Algunos lenguajes proveen un mtodo constructor por defecto para cada clase y/o
permiten la definicin de ms de un mtodo constructor. En la notacin algortmica,
definimos obligatoriamente un mtodo constructor de la clase.

Si tenemos la clase Rectngulo, representada grficamente por:







Su declaracin quedara de la siguiente manera:

Clase Rectngulo
Privado Real Largo, Ancho;

Constructor Rectngulo()
Largo 10;
Ancho 5;
fconstructor;
fclase Rectngulo

Rectngulo
- Altura: Entero
- Base: Entero

45
Si quisiramos calcular el rea de un rectngulo, se debe definir adems un accin
Principal, donde se realizarn las instrucciones necesarias para ello, ej.

Clase Rectngulo
Privado Real Largo, Ancho;

Constructor Rectngulo()
Largo 10;
Ancho 5;
Fconstructor;

Accin Principal
Rectngulo R; # se declara un objeto rectngulo
Entero Area;
R.Rectangulo(); # se crea el objeto rectngulo
Area R.Largo * R.Ancho; # se calcula el rea del rectngulo
Escribir(Area);
faccion

fclase Rectngulo

MTODOS:
Son las operaciones que se aplican sobre los objetos. La implementacin de los
mtodos no es visible fuera del objeto. Los mtodos definen el comportamiento de los
objetos, as como las funcionalidades que ellos tienen.

Tenemos dos tipos de mtodos: aquellos que devuelven un solo valor, que llamaremos
Funciones, y los que devuelven 0 o ms valores, que llamaremos Acciones.
Mtodos: Acciones
Es un mecanismo que permite asociarle un nombre a un conjunto de instrucciones, para
luego referirnos a esas acciones mediante ese nombre. Estos mtodos pueden devolver
0 o ms valores.

Definicin de acciones:

<modo de acceso>Accin <Nombre> [(lista de parmetros formales)]
#objetivo de la accin
<definicin de variables locales>
<instrucciones>
faccin <nombre>;

46
donde:
<nombre> es el identificador de la accin
<lista de parmetros formales> son los objetos en base a los cuales se definen las
acciones, pero que no tienen valor hasta que se use la accin.
<definicin de variables locales>, es el conjunto de variables que no tienen significado
fuera de esta secuencia de acciones.
<acciones> secuencia de acciones a ser ejecutadas. Est delimitada por el faccin.
Mtodos: Funcin
Es un mecanismo que permite asociarle un nombre a un conjunto de acciones, para
luego referirnos a esas acciones mediante ese nombre. A diferencia de las Acciones,
una funcin se utiliza cuando se desea obtener solo un valor de retorno.

La notacin que vamos a utilizar es la siguiente:

<modo de acceso>Funcin <nombre> [(parmetros)] <Tipo>
#objetivo de la accin
<definicin de variables locales>
<instrucciones>
<valor> o >identificador>
ffuncin <nombre>;

PARMETROS
Los parmetros representan los datos que manipulan los mtodos al momento de ser
invocados. Tenemos dos tipos de parmetros:
Parmetros actuales:
Se especifican en la llamada a la accin y son los valores sobre los cuales se desea
aplicar la accin
Parmetros formales:
Se especifican en la definicin de la accin y son alcanzables solo en el cuerpo de la
accin, tal y como variables locales.
47
TIPOS DE PASE DE PARMETROS
Paso por Valor: el parmetro actual no es modificado si se modifica el parmetro formal
dentro de la accin. Esto se debe a que el parmetro actual (constante, variable o
expresin) se evala y el resultado se copia en el correspondiente parmetro formal,
que ocupa otra posicin de memoria.

Paso por Referencia: el parmetro actual sufre los mismo cambios que el parmetro
formal. El parmetro actual no puede ser ni una constante ni una expresin. Ambos
parmetros comparten la misma posicin de memoria.
LLAMADA (O USO) DE UN MTODO
objeto.<nombre>[(lista de parmetros)];

La llamada a un mtodo es a su vez una accin elemental que permite la ejecucin de
la secuencia de acciones elementales asociada a su nombre. Consiste en indicar el
nombre y los parmetros actuales que van a ser utilizados, los cuales corresponden
posicionalmente a los parmetros formales.

La cantidad de parmetros actuales debe ser igual a la cantidad de parmetros formales
y del mismo tipo de dato.

Ejemplo:

Dado un rectngulo definido por un par de puntos: esquina superior izquierda e inferior
derecha, y dado un punto p, se desea saber en cual de los rectngulos est contenido
p.

Un punto de coordenadas (x, y) esta contenido dentro de un rectngulo cuya esquina
superior izquierda tiene coordenadas (x0, y0) y la inferior derecha (x1, y1) si:

(X0 X) (X X1) (Y1 Y) (Y Y0)

Clase Rectngulo
Privado Real X0,Y0, X1,Y1;
Constructor Rectngulo(Real XI, YI, XD, YD)
X0 XI;
Xo, Yo X1, Yo


X0, Y1 X1, Y1
48
Y0 YI;
X1 XD;
Y1 YD;
fconstructor

Privado Funcin Pertenece (Real X, Y) Lgico
# chequea si un punto pertenece a un rectngulo
(X0 X) y (X X1) y (Y1 Y) y (Y Y0);
ffuncion

Privado Funcin Area () Real
# retorna el rea ocupada por un rectangulo
(X1-X0) * (Y0-Y1); # Largo * Ancho
ffuncin

Privado Funcin Permetro () Real
# retorna el permetro del rectngulo
2 * ((X1-X0) + (Y0-Y1));
ffuncin

Privado Funcin Diagonal () Real
# retorna el valor de la diagonal del rectangulo
Real aux;
aux ((X1 X0) ^ 2) ((Y1 Y0) ^ 2) ;
aux ^ (1/2) ;
ffuncion
fclase

AMBIENTE DE REFERENCIACIN
Est dado por el segmento de cdigo en el cual un objeto dado puede ser referenciado
o utilizado. Tenemos entonces 2 tipos de objetos en una accin:
Objetos No locales a una accin:
Objetos que estn definidos en otro mtodo, en la clase o en el algoritmo principal, pero
que tienen alcance (pueden ser utilizados) en el mtodo.
Objetos locales a una accin:
Son aquellos objetos que son definidos dentro de cada mtodo.

Ejemplo:
Clase Ejemplo
Entero X, Y;
Accin P1()
Entero X, Z;
P2 ();
faccin P1
49

Accin P2()
Real Y, W;
faccin P2
Accin P3()
Lgico P1, Y, Z;
faccin P3

Accin Principal
P1();
P3();
faccin Principal

Vemoslo grficamente:














Podemos ver entonces:

Locales No Locales
Principal X. Y, P1, P3
P1 X (P1), Z, P2 Y, P3, P1
P2 Y, W X(P1), Z, P2, P1, P3
P3 P1, Y, Z X(alg. Ppal), P3

Principal
Entero X, Y
P1
P2
P3
Entero X, Z
Real Y, W
Lgico P1, Y, Z
50
TEMA 7: TIPOS DE DATOS ESTRUCTURADOS
Arreglos unidimensionales y multidimensionales: Declaracin y Operaciones. Algoritmos de
bsqueda secuencial y binaria. Algoritmos de ordenamiento por seleccin y por intercambio.
Registros. Archivos Secuenciales: Declaracin, Operaciones, Archivos de Texto. Algoritmo de
mezcla de archivos.
ESTRUCTURA DE DATOS
Es una herramienta mediante la cual es posible almacenar datos estructurados en la
memoria del computador, permitiendo manipular datos complejos de forma sencilla.
Estas estructuras de datos estn formadas por ms de un elemento, donde estos
pueden ser todos del mismo tipo de dato (ED homognea) o de tipos de datos
diferentes (ED heterognea).







ARREGLOS
Un arreglo es un Tipo de Dato Estructurado (TDE) cuya implantacin implica una
estructura de datos conformada por una sucesin de celdas, que permite almacenar en
la memoria principal del computador un conjunto finito de elementos homogneo (del
mismo tipo de dato). Para hacer referencia a cualquiera de las celdas del arreglo es
necesario el nombre del arreglo y el valor de uno de los elementos perteneciente al
conjunto de ndices asignado, lo que permite tener acceso aleatorio.



La notacin que vamos a utilizar para definir arreglos es la siguiente:

Arreglo <Identificador> de <Tipo> [Li...Ls]
1 2 3 . . . N -1 N
Tipo
Nmero de
Componentes
Elemental
Estructurado
Entero, caracter, lgico, real
Enumerado
Subrango
Homogneos: archivos
arreglos
Heterogneos: registros
1

n

Tipo de
Componentes
=

51

Donde:
Li: es el limite inferior del arreglo
Ls es el limite superior del arreglo

Acceso a los elementos de un arreglo
Para acceder a los elementos almacenados en un arreglo, contamos con 2 operaciones:
Operacin Constructora:
Permite asociarle a un arreglo un valor estructurado correspondiente a las
caractersticas del arreglo, es decir, permite indicar explcitamente cuales son todos los
valores que va a almacenar el arreglo. La operacin constructora es utilizada en el
momento de la declaracin del arreglo.

La notacin que vamos a utilizar para la operacin constructora es la siguiente:

Arreglo Vocales de caracter [ ] = {a,e,i,o,u}

Para este caso tendramos declarado un arreglo de 5 posiciones, ubicadas de la
siguiente manera:




Operacin Selectora:
Permite referenciar un componente individual de un arreglo para lo cual se debe indicar
el nombre del arreglo seguido de un valor particular del intervalo de definicin.

La forma de utilizar la operacin selectora es la siguiente:

<Identificador del arreglo>[<posicin>]

En el caso del ejemplo anterior, la operacin selectora equivalente sera:

1 2 3 4 5
a e i o u
52
Vocales[1] a;
Vocales[2] e;
Vocales[3] i;
Vocales[4] o;
Vocales[5] u;


Ejemplo:
Inicializar un arreglo

Accin Inicializar (Var Arreglo A, Entero N)
#Incializa el Arreglo A de N posiciones con valores dados por el
#usuario.
Entero i, j ;
Para i 1 hasta N hacer
Leer(j);
A[i] j;
fpara
faccion
Ejercicios Resueltos:
Hallar el mximo valor en un arreglo de N elementos enteros

Accin Mximo
Entero max, i ;
Arreglo A de Entero [1N];
Leer (N);
Inicializar(A);
max A[1];
Para i 2 hasta N hacer
Si (A[i] > max) entonces
max A[i];
fsi
fpara
faccin

Dado un arreglo A de N elementos enteros, almacenar en un arreglo B, las sumas
parciales de los elementos de A

Accin Sumas_Parciales
Entero ant, i ;
Arreglo A de Entero [1N];
Arreglo B de Entero [1N];
Leer (N);
Inicializar(A);
ant 0;
53
Para i 1 hasta N hacer
B[ ] ant + A[i];
ant B[i];
fpara
faccin

Dados 2 arreglos A y B de longitudes N y M, el primero ordenado ascendente y el
segundo ordenado descendente, crear un nuevo arreglo C de N + M elementos
intercalando los elementos de A y B de modo que c quede ordenado ascendente.

Accin Mezcla
Entero j, i, k ;
Arreglo A de Entero [1N];
Arreglo B de Entero [1M];
Arreglo C de Entero [1N+M];
Leer (N);
Leer (M);
Inicializar(A);
Inicializar(B);
i 1;
j M;
k 1;
Mientras (k N+M) hacer
Seleccin
i = N: Para j j hasta 1 en 1 hacer
C[ k ] B [j];
k k +1;
fpara

j = 1: Para i i hasta N hacer
C[k] A [i];
k k +1;
fpara

(i N) y (j 0): Si (A[i] B[j]) entonces
C[k] A [i];
i i + 1;
sino
C[k] B [j];
j j - 1;
fsi
k k + 1;
fseleccion
fmientras
faccin
ARREGLOS MULTIDIMENSIONALES
Es una extensin de los arreglos unidimensionales al considerar que el tipo base es un
arreglo unidimensional o multidimensional.
54
ARREGLO BIDIMENSIONAL
Es un arreglo cuyas componentes son arreglos unidimensionales (comnmente llamado
Matriz)

Especificacin:
Arreglo <Identificador> de <Tipo> [Li
1
...Ls
1
], [Li
2
...Ls
2
]

Donde:
Li
1
: limite inferior del arreglo

Ls
1
: limite superior del arreglo

Li
2
: limite inferior de los arreglos componentes

Ls
2
: limite superior de los arreglos componentes






La operacin selectora sera:

<Identificador>[<posicin>
1
][<posicin>
2
]








La operacin constructora para el caso de una matriz de 3 x 4
Arreglo A de entero [ ] [ ]={{1,2,3,4},{0,0,0,0},{-1, 2, 8, 100}};





Li
1
Ls
1

Li
2






Ls
2

11 12 13 14
21 22 23 24
31 32 33 34
55







Ejemplo:
Accin Inic_matriz (Entero N, M; Var Arreglo M)
# Inicializa una matriz de NxM
Entero i, j;

Para i 1 hasta N hacer
Para j 1 hasta M hacer
Leer(M[i,j]);
fpara
fpara
faccion Inic_matriz

Ejercicios Resueltos:
Dadas 2 matrices A y B de NxM, obtener la suma de ellas en otra matriz C

Accin Principal
Entero i, j;
Arreglo A de Entero [1N][1M];
Arreglo B de Entero [1N][1M];
Arreglo C de Entero [1N][1M];
Leer(N);
Leer(M);
Inic_matriz(N,M,A);
Inic_matriz(N,M,B);
Para i 1 hasta N hacer
Para j 1 hasta M hacer
C[i,j] A[i,j]+B[i,j];
fpara
fpara
faccion

Multiplicacin de 2 matrices

Clase Multiplicar_Matrices
Entero N,M,P;
Arreglo A de Entero [1N][1M];
1 2 3 4
0 0 0 0
-1 2 8 100
56
Arreglo B de Entero [1M][1P];
Arreglo C de Entero [1N][1P];

Funcion Prod( Entero i, j) -> Entero
Entero k, p;
Para k 1 hasta M hacer
p p+ A[i,k] * B[k,j];
fpara
p
funcin

Accin Inic_matriz (Entero N, M; Var Arreglo M)
# Inicializa una matriz de NxM
Entero i, j;
Para i 1 hasta N hacer
Para j 1 hasta M hacer
Leer(M[i,j]);
fpara
fpara
faccion Inic_matriz

Accion Principal
Entero I, j;
Inic_matriz(N,M,A);
Inic_matriz(M,P,B);
Para i 1 hasta N hacer
Para j 1 hasta P hacer
C[i,j] Prod(i,j);
fpara
fpara
faccion
fclase

ALGORITMOS DE ORDENAMIENTO
Vamos a ver 3 algoritmos de ordenamiento, no quiere decir que sean los mejores ni los
nicos.
Seleccin Directa
Consiste en lo siguiente:
Buscar el elemento ms pequeo de la lista.
Intercambiarlo con el elemento ubicado en la primera posicin de la lista.
Buscar el segundo elemento ms pequeo de la lista.
Intercambiarlo con el elemento que ocupa la segunda posicin en la lista.
Repetir este proceso hasta que se haya ordenado toda la lista.

57
El algoritmo es el siguiente:

Accin Seleccion_Directa (Entero N; Arreglo A)
# Accin que ordena un arreglo por seleccin directa
Entero i, j, k, min;
Para i 1 hasta N -1 hacer
Min A[i];
Para J i hasta N hacer
Si A[j] < min entonces
Min A[j];
K j
fsi
fpara
Intercambiar(A[i], A[k]);
fpara
faccion

Ejemplo: dado el arreglo
4 3 5 2 1

1 - 3 - 5 - 2 4 se busca el menor y se intercambia con el de la posicin 1
1 - 2 - 5 - 3 4 se busca el menor desde la posicin 2 y se intercambia con el
que ocupa dicha posicin
1 - 2 - 3 - 5 4 se busca el menor desde la posicin 3 y se intercambia con el
que ocupa dicha posicin
1 - 2 - 3 - 4 5 se busca el menor desde la posicin 4 y se intercambia con el
que ocupa dicha posicin

Insercin Directa
El algoritmo consiste en lo siguiente:
Se toma el primer elemento
Se toma el segundo y se compara con el primero: si es mayor, se coloca a la derecha, y
si es menor a la izquierda
Se toma el tercer elemento y se compara con los dos anteriores, desplazndolo hasta
que quede en su posicin final.
Se continua haciendo esto, insertando cada carta en la posicin que le corresponde,
hasta que este ordenado.
El algoritmo es:

58
Accin Insercion_directa(Entero N; Arreglo A)
# Ordena un arreglo por insercin directa
Entero i, j, temp;
Para i 2 hasta N hacer
temp A[ i ];
j i - 1;
Mientras ((A[ j ] > temp) y (j>=1)) hacer
A[ j+1] A[ j ];
j j -1;
fmientras
A[ j + 1 ] temp;
fpara

Ejemplo, dado el arreglo del ejemplo anterior:
4 - 3 - 5 - 2 1
temp toma el valor del segundo elemento, 3. La primera carta es el 4. Ahora
comparamos: 3 es menor que 4. Luego desplazamos el 4 una posicin a la derecha y
despus copiamos el 3 en su lugar.
4 - 4 - 5 - 2 1
3 - 4 - 5 - 2 1
El siguiente elemento es 5. Comparamos con 4. Es mayor que 4, as que no ocurren
intercambios.
Continuamos con el 2. Es menor que cinco: desplazamos el 5 una posicin a la
derecha:
3 - 4 - 5 - 5 1
Comparamos con 4: es menor, as que desplazamos el 4 una posicin a la derecha:
3 - 4 - 4 - 5 1
Comparamos con 3. Desplazamos el 3 una posicin a la derecha:
3 - 3 - 4 - 5 1
Finalmente copiamos el 2 en su posicin final:
2 - 3 - 4 - 5 1
El ltimo elemento a ordenar es el 1. Cinco es menor que 1, as que lo desplazamos
una posicin a la derecha:
2 - 3 - 4 - 5 5
Continuando con el procedimiento la lista va quedando as:
2 - 3 - 4 - 4 - 5
2 - 3 - 3 - 4 - 5
2 - 2 - 3 - 4 - 5
59
1 - 2 - 3 - 4 5
Burbujas
Consiste en desplazarse repetidamente a travs del arreglo, comparando elementos
adyacentes de dos en dos. Si un elemento es mayor que el que est en la siguiente
posicin se intercambian.

El algoritmo es el siguiente:

Accin Burbujas (Entero N; Arreglo A)
# Ordena un arreglo por el mtodo de burbujas
Entero i, j;
Para i 2 hasta N hacer
Para j N hasta I en 1 hacer
Si A[ j-1] > A[ j ] entonces
Intercambiar(A[j-1], A[ j ]);
fsi
fpara
fpara

Ejemplo:

4 - 3 - 5 - 2 - 1
4 - 3 - 5 - 1 2
4 - 3 - 5 - 1 2
4 - 3 - 1 - 5 2
4 - 1 - 3 - 5 2
1 - 4 - 3 - 5 2
1 - 4 - 3 - 5 2
1 - 4 - 3 - 2 5
1 - 4 - 2 - 3 5
1 - 2 - 4 - 3 5
1 - 2 - 4 - 3 5
1 - 2 - 3 - 4 5
ALGORITMOS DE BSQUEDA
Vamos a ver 3 algoritmos de bsqueda, no quiere decir que sean los mejores ni los
nicos.
60
Bsqueda Lineal
La bsqueda consiste en recorrer secuencialmente el arreglo hasta encontrar la primera
aparicin del elemento buscado.
Existen dos condiciones que ponen fin a la bsqueda:
Se encontr el elemento buscado
Se recorri todo el arreglo.

El algoritmo es el siguiente:

Funcin Busqueda_lineal (Entero N, x; Arreglo A) Entero
# Accin que busca un elemento x en un arreglo
Entero i, pos;
pos 0;
Para i 1 hasta N hacer
Si (A[i] = x) entonces
pos i;
fsi
fpara
pos
ffuncion

Bsqueda Lineal (Arreglo Ordenado)
En este caso, el arreglo sobre el que se va a hacer la bsqueda est ordenado
El algoritmo es:


Funcin Busqueda_lineal2 (Entero N, x; Arreglo A) Entero
# Accin que busca un elemento x en un arreglo
Entero i, pos;
pos 0;
Mientras (i<N) y (A[i] < x) hacer
i i+1;
fpara
Si (A[i] = x) entonces
pos i;
fsi
pos
ffuncion

Bsqueda Binaria
Este algoritmo requiere como condicin inicial que el arreglo este ordenado.
61
El algoritmo de basa en que para buscar un elemento en un arreglo de tamao N, se
puede reducir el problema a buscar en la mitad de los elementos, dado que el arreglo
esta ordenado. As, podemos comparar el elemento ubicado en el medio del arreglo
(A[med]) con el elemento a buscar, y segn la comparacin tenemos las siguientes
acciones:
A[med] = x : esto implica que se encontr el elemento
A[med] > x : Si esto es cierto, el elemento buscado debe encontrarse entre las
posiciones 1 y med-1.
A[med] < x : Si esto es cierto, el elemento buscado debe encontrarse entre las
posiciones med+1 y N.

Es necesario establecer en que sub-arreglo estamos trabajando, para ello utilizaremos 2
variables, Li y Ls que nos indicaran los limites inferior y superior de tal subarreglo.

El algoritmo es el siguiente:

Funcin Busqueda_binaria (Entero N, x; Arreglo A) Entero
# Accin que busca un elemento x en un arreglo
Entero Li, Ls, med, pos;
pos 0;
Si (x A[1]) y (x A[N]) entonces
Li 1;
Ls N;
Mientras (Li Ls) y (pos 0) hacer
Med (Li + Ls) div 2;
Seleccin
A[med] < x : Li med + 1;
A[med] > x: Ls med 1;
A[med] = x: pos med;
fseleccion
fmientras
fsi
pos
ffuncion

ARCHIVOS
Es una estructura de datos que consiste en una secuencia de elementos del mismo tipo
que residen en la memoria secundaria del computador.

Caractersticas principales
62
Residen en memoria secundaria
Independencia respecto a los programas
Permanencia de la informacin almacenada
Gran capacidad de almacenamiento

Tipos de organizacin

Secuencial





Aleatoria o directa





Indexada








La declaracin de un archivo secuencial sera:

Archivo <Identificador>;


Operaciones Bsicas sobre Archivos
Las operaciones bsicas sobre un archivo secuencial son:
Escritura o lectura
Cabezal
M Cabezal N
1


2


3


4
63

Abrir el archivo
Esta operacin debe realizarse antes de cualquier otra operacin sobre el archivo. Esta
operacin prepara el ambiente para trabajar con los archivos

AbrirArchivo(<Identificador>
A
,nombre del archivo, <Argumentos>);

Donde <Argumentos> es uno o ms de las siguientes palabras reservadas:

Escribir: indica que el archivo se abre de solo escritura
Lectura: indica que el archivo de abre de solo lectura
Texto: indica que el archivo a abrir es un archivo de texto
Binario: indica que el archivo a abrir es un archivo binario
Aadir: indica que el archivo se abre de escritura pero todo lo que se escriba se aade
al final del archivo

Los argumentos de combinan con el operador lgico y. Por ejemplo:

AbrirArchivo(A, prueba.txt, Lectura y Texto);

Cerrar el archivo
Una vez que se ha utilizado el archivo, es cerrado para dejarlo disponible a un nuevo
uso.

CerrarArchivo(<Identificador>
A
);

Fin de archivo
Es una funcin que retorna verdadero cuando se alcanza el fin del archivo, y falso en
caso contrario.

FDA(<Identificador>
A
);

Operaciones de Entrada y Salida
Son las que permiten escribir y leer el archivo
Leer del archivo
64

LeerArchivo(<Identificador>
A
, <Identificador>);

Escribir en el archivo

EscribirArchivo(<Identificador>
A
, <Identificador>);

Ejemplo: Imprimir todos los caracteres de un archivo.

Accin Principal
Archivo A;
Caracter c;
AbrirArchivo(A, prueba.txt, Lectura y Texto);
Mientras No FDA(A) hacer
LeerArchivo(A, c);
Escribir( c );
fmientras
CerrarArchivo(A);
faccion

Ejercicios Resueltos:
Dado un archivo de texto se quiere generar otro igual al anterior pero suprimiendo las
vocales.
Accin Principal
Archivo A;
Archivo A;
Caracter c;
AbrirArchivo(A, prueba.txt, Lectura y Texto);
AbrirArchivo(B, res.txt, Escribir y Texto);
LeerArchivo(A, c);
Mientras No FDA(A) hacer
Si No Vocal ( c ) entonces
EscribirArchivo(B, c );
fsi
LeerArchivo(A, c);
fmientras
CerrarArchivo(A);
CerrarArchivo(B);
faccion
REGISTROS
Estructura de datos formada por una coleccin finita de elementos, no necesariamente
homogneos, llamados campos, y permiten almacenar una serie de datos relacionados
entre s bajo un nombre comn.

65
Especificacin
Registro <nombre_de_registro> =
<Tipo>
1
<Identificador>
1

<Tipo>
2
<Identificador>
2

.....
<Tipo>
N
<Identificador>
N

fregistro

Acceso a los elementos de un Registro
Para acceder a los elementos de un registro contamos con dos operaciones

Operacin Constructora
Permite asociarle al nombre de un registro un dato estructurado que se corresponda
componente a componente.

Ejemplo:
Registro Fecha =
Entero da, mes, ao;
fregistro

Registro Persona =
Entero CI;
String Nombre;
Fecha Fnacimiento;
fregistro

Persona {10234223, Somebody, {10,10,1986} }

Operacin Selectora
Permite referenciar una componente particular del registro.

<nombre>.<campo>

As como un arreglo, el registro puede ser pasado por parmetros, as como cada
campo individual.
Ejemplo:
Definir una estructura de datos que permita almacenar toda la informacin relevante del
curso de algoritmos y programacin: notas, profesores, preparadores, estudiantes.

Registro estudiante=
Entero cedula;
66
String nombre;
String seccion;
Entero nota;
fregistro

Registro AlgyProg
String prof;
String prep;
String seccion;
Arreglo est de estudiante[1N];
fregistro

Ejercicios Resueltos:
Dadas dos fechas, decir cul de ellas es ms antigua.

Registro Fecha =
Entero da, mes, ao;
fregistro

Accin Principal
Fecha f1, f2;
Leer (f1.dia); Leer (f1.mes); Leer (f1.ao); Leer (f2.dia); Leer
(f2.mes); Leer (f2.ao);
Seleccin
f1.ao > f2.ao: Escribir(f1.dia, f1.mes, f1.ao);
f1.ao < f2.ao: Escribir(f2.dia, f2.mes, f2.ao);
f1.ao = f2.ao: Seleccin
f1.mes > f2.mes: Escribir(f1.dia, f1.mes, f1.ao);
f1.mes < f2.mes: Escribir(f2.dia, f2.mes, f2.ao);
f1.mes = f2.mes: Seleccin
f1.dia > f2.dia: Escribir(f1.dia,
f1.mes, f1.ao);
f1.dia < f2.dia: Escribir(f2.dia,
f2.mes, f2.ao);
f1.dia = f2.dia: Escribir(son
iguales);
fseleccion
fseleccion
fseleccion
faccion

Dado un archivo de estudiantes, imprimir aquellos cuya cdula de identidad sea mayor
que 10 millones. Use la siguiente especificacin:

Tipo Registro Estudiante =
Entero CI;
String Nombre;
67
Entero ND;
fregistro

Accin Principal
Archivo Arch_Est;
Estudiante est;
AbrirArchivo(Arch_Est, estudiantes.bin, lectura y binario);
Mientras No FDA(Arch_Est) hacer
LeerArchivo(Arch_Est, est);
Si (est.CI > 10000000) entonces
Escribir(est.CI, est.Nombre, est.ND);
fsi
fmientras
CerrarArchivo(Arch_Est);
faccion

Dados dos archivos de estudiantes ordenados ascendentemente por el campo CI,
generar un tercer archivo que sea la mezcla ordenada de los anteriores.

Tipo Registro Estudiante =
Entero CI;
String Nombre;
Entero ND;
fregistro


Accion Principal
Archivo Arch1, Arch2, Arch3;
Estudiante est1, est2;
AbrirArchivo(Arch1, est1.bin, lectura y binario);
AbrirArchivo(Arch2, est2.bin, lectura y binario);
AbrirArchivo(Arch_Est, est3.bin, escritura y binario);
SI No FDA(Arch1) entonces
LeerArchivo(Arch1, est1);
fsi
Si No FDA(Arch2) entonces
LeerArchivo(Arch2, est2);
fsi
Mientras (No FDA(Arch1) y No FDA(Arch1)) hacer
Si (est1.CI est2.CI) entonces
EscribirArchivo(Arch3, est2);
LeerArchivo(Arch2, est2);
Sino
EscribirArchivo(Arch3, est1);
LeerArchivo(Arch1, est1);
fsi
fmientras

Mientras No FDA(Arch1) hacer
LeerArchivo(Arch1, est1);
EscribirArchivo(Arch3, est1);
fmientras

Mientras No FDA(Arch2) hacer
LeerArchivo(Arch2, est2);
68
EscribirArchivo(Arch3, est2);
fmientras
CerrarArchivo(Arch1);
CerrarArchivo(Arch1);
CerrarArchivo(Arch3);
faccion





69
REFERENCIAS
Arnold, K., Gosling, J., Holmes, D. El lenguaje de programacin Java. 3a Edicin.
Addison-Wesley. 2001.
Booch, G. Anlisis y diseo orientado a objetos. Addison Wesley. Segunda edicin,
1996.
Carmona, R. El enfoque Orientado a Objetos. Escuela de Computacin, UCV
Coto, Ernesto. Lenguaje pseudoformal para la construccion de algoritmos. Escuela de
Computacin. 2003.
Deitel, H. y Deitel, P. Java: Cmo Programar. 5ta. Edicin. Prentice-Hall, 2004.
Fowler, Martin. UML Gota a Gota. Addison Wesley Longman. 1999.
Jaime Sisa, Alberto. Estructuras de Datos y Algoritmos. Prentice-Hall. 2002.
Meyer, B. Construccin de Software Orientado a Objetos. Prentice Hall. Segunda
Edicin. 1999

You might also like