Sie sind auf Seite 1von 9

Actividad evaluativa 1.2.

Nombre: Wendy Lizbeth Bueno Snchez.


Maestro: Daniel Campa.
Grupo: 303.
Materia: Programacin orientada a
objetos.

Fecha: 18 de
abril del 2016
Funciones de
entrada y salida.
Cuando

nos

referimos

entrada/salida

estndar (E/S estndar) queremos decir que los datos o bien se estn leyendo del teclado,
bien se estn escribiendo en el monitor de vdeo.
En el lenguaje c++ tenemos varias alternativas para ingresar y/o mostrar datos, dependiendo
de la librera que vamos a utilizar para desarrollar el programa.
Las operaciones de entrada y salida no forman parte del conjunto de sentencias de C++, sino
que pertenecen al conjunto de funciones y clases de la biblioteca estndar de C++. Ellas se
incluyen en los archivos de cabecera iostream.h por lo que siempre que queramos utilizarlas
deberemos introducir la lnea de cdigo #include <iostream.h>
Esta biblioteca es una implementacin orientada a objetos y est basada en
el concepto de flujos. A nivel abstracto un flujo es un medio de describir la secuencia de datos
de una fuente a un destino o sumidero. As, por ejemplo, cuando se introducen caracteres
desde el teclado, se puede pensar en caracteres que fluyen o se trasladan desde el teclado a
las estructuras de datos del programa.

SALIDA (OUT)
El operador de insercin,
<<, inserta datos en flujo,
ejemplos:
cout
<< 500; // enva el numero 500 a la pantalla
cout
<< " esto es una cadena " ; // visualiza Esto es una cadena
Es posible usar una serie de operadores
<< en cascada,
ejemplo:
cout
<< 500
<< 600
<< 700;
visualiza 500, 600, 700.
De igual modo,
cout
<< 500
<<", "
<< 600
<< ", "
<< 700;
visualiza 500, 600, 700
C++ utiliza secuencias de escape para visualizar caracteres que no estn representados por
smbolos tradicionales, tales como \a, \b, etc.
ejemplo:
cout << "\n" // salta a una nueva lnea
cout << "Yo estoy preocupado \n no por el funcionamiento \n sino por la claridad \n";

ENTRADA (CIN)

El archivo de cabecera iostream.h de la biblioteca C++proporciona un flujo de entrada


estndar cin y un operador de extraccin, >>, para extraer valores del flujo y almacenarlos en
variables, la entrada normal es el teclado.
ejemplo:
int n, n1, n2; // se declara las variables n, n1 y n2
cin >> n; // el cursor aparece en pantalla esperando un
// date de entrada por el teclado para ponerlo
// en la variable n.
// abajo, el cursor aparece despus del mensaje entre comillas
// esperando dos valores, cada uno seguido de la tecla ENTER.
cout << " Introduzca los valores de n1 y n2 " ;
cin >> n1 >> n2

Sentencias de control.
Un
programa
es
una
sucesin
de sentencias que
son
ejecutadas
secuencialmente.
Por ejemplo, el siguiente programa tiene
cuatro sentencias:
n = int(raw_input('Ingrese n: '))
m= int(raw_input('Ingrese m: '))
suma = n + m
print 'La suma de n y m es:', suma

Las primeras tres son asignaciones, y la ltima es una llamada a funcin. Al ejecutar el
programa, cada una de estas sentencias es ejecutada, una despus de la otra, una sola vez.
Adems de las sentencias simples, que son ejecutadas en secuencia, existen las sentencias
de control que permiten modificar el flujo del programa introduciendo ciclos y condicionales.
Un condicional es un conjunto de sentencias que pueden o no ejecutarse, dependiendo del
resultado de una condicin.
Un ciclo es un conjunto de sentencias que son ejecutadas varias veces, hasta que una
condicin de trmino es satisfecha.
Tanto los condicionales como los ciclos contienen a otras sentencias. Para indicar esta
relacin se utiliza la indentacin: las sentencias contenidas no se escriben en la misma
columna que la sentencia de control, sino un poco ms a la derecha:
n = int(raw_input())
m = int(raw_input())
if m < n:
t=m
m=n
n = t print m, n
En este ejemplo, las tres asignaciones estn contenidas dentro de la sentencia de control if.
El print m, n no est indentado, por lo que no es parte de la sentencia if.
Este programa tiene cuatro sentencias, de las cuales la tercera es una sentencia de control,
que contiene a otras tres sentencias.
Para indentar, utilizaremos siempre cuatro espacios.

Mtodos de
ordenamiento.
Debido a que las estructuras de datos
son
utilizadas
para
almacenar
informacin, para poder recuperar esa
informacin de manera eficiente es
deseable que aquella est ordenada.
Existen varios mtodos para ordenar
las diferentes estructuras de datos
bsicas.
En
general
los
mtodos
de
ordenamiento no son utilizados con
frecuencia, en algunos casos slo una

vez. Hay mtodos muy simples de implementar que son tiles en los casos en dnde el
nmero de elementos a ordenar no es muy grande (ej, menos de 500 elementos). Por otro
lado hay mtodos sofisticados, ms difciles de implementar pero que son ms eficientes
en cuestin de tiempo de ejecucin.
Los mtodos simples son: insertion sort (o por insercin directa) selection sort, bubble sort,
y shellsort, en dnde el ltimo es una extensin al insertion sort, siendo ms rpido. Los
mtodos ms complejos son el quick-sort, el heap sort, radix y address-calculation sort. El
ordenar un grupo de datos significa mover los datos o sus referencias para que queden en
una secuencia tal que represente un orden, el cual puede ser numrico,
alfabtico o incluso alfanumrico, ascendente o descendente.
Se ha dicho que el ordenamiento puede efectuarse moviendo los registros con las claves.
El mover un registro completo implica un costo, el cual se incrementa conforme sea mayor
el tamao del registro. Es por ello que es deseable evitar al mximo el movimiento de los
registros. Una alternativa es el crear una tabla de referencias a los registros y mover las
referencias y no los datos. A continuacin se mostrarn los mtodos de ordenamiento
empezando por el ms sencillo y avanzando hacia los mas sofisticados
La eficiencia de los algoritmos se mide por el nmero de comparaciones e intercambios
que tienen que hacer, es decir, se toma n como el nmero de elementos que tiene el
arreglo a ordenar y se dice que un algoritmo realiza O(n2) comparaciones cuando compara
n veces los n elementos, n x n = n2.

Bsqueda de datos.
La bsqueda es una operacin que tiene
por objeto la localizacin de un elemento
dentro de la estructura de datos. A menudo
un programador estar trabajando con
grandes cantidades de datos almacenados
en arreglos y pudiera resultar necesario
determinar si un arreglo contiene un valor
que coincide con algn valor clave o
buscado.
Siendo el array de una dimensin o lista
una estructura de acceso directo y a su vez
de acceso secuencial, encontramos dos
tcnicas que utilizan estos dos mtodos de
acceso, para encontrar elementos dentro
de un array: bsqueda lineal y bsqueda
binaria.

Bsqueda Secuencial:
La bsqueda secuencial es la tcnica ms simple para buscar un elemento en un arreglo.
Consiste en recorrer el arreglo elemento a elemento e ir comparando con el valor buscado
(clave). Se empieza con la primera casilla del arreglo y se observa una casilla tras otra hasta
que se encuentra el elemento buscado o se han visto todas las casillas. El resultado de la
bsqueda es un solo valor, y ser la posicin del elemento buscado o cero. Dado que el
arreglo no est en ningn orden en particular, existe la misma probabilidad de que el valor se
encuentra ya sea en el primer elemento, como en el ltimo. Por lo tanto, en promedio, el
programa tendr que comparar el valor buscado con la mitad de los elementos del arreglo.
El mtodo de bsqueda lineal funciona bien con arreglos pequeos o para arreglos no
ordenados. Si el arreglo est ordenado, se puede utilizar la tcnica de alta velocidad de
bsqueda binaria, donde se reduce sucesivamente la operacin eliminando repetidas veces la
mitad de la lista restante.
Bsqueda Binaria:
La bsqueda binaria es el mtodo ms eficiente para encontrar elementos en un arreglo
ordenado. El proceso comienza comparando el elemento central del arreglo con el valor
buscado. Si ambos coinciden finaliza la bsqueda. Si no ocurre as, el elemento buscado ser
mayor o menor en sentido estricto que el central del arreglo. Si el elemento buscado es mayor
se procede a hacer bsqueda binaria en el subarray superior, si el elemento buscado es
menor que el contenido de la casilla central, se debe cambiar el segmento a considerar al
segmento que est a la izquierda de tal sitio central.

Clases y objetos.
Objetos
Un objeto es una cosa tangible, algo a que se puede aprehender intelectualmente o algo
hacia lo que se puede dirigir una accin o pensamiento.
Un objeto representa un item individual e identificable, o una entidad real o abstracta, con un
papel definido en el dominio del problema
Un objeto tiene:
1. Estado
2. Comportamiento
3. Identidad
La estructura y el comportamiento de objetos similares se definen en sus clases comunes. El
trmino objeto y ejemplo (instance) de una clase son intercambiables.
Estado de un objeto
El estado de un objeto abarca todas las propiedades del objeto, y los valores actuales de cada
una de esas propiedades. Las propiedades de los objetos suelen ser estticas, mientras los
valores que toman estas propiedades cambian con el tiempo.

El estado de un objeto est influido por la historia del objeto.


No deben confundirse los objetos, que existen en el tiempo, son mutables, tienen
estado, pueden ser creados, destruidos y compartidos..., con los valores (los asignados a
una variable, por ejemplo) que son cantidades con las propiedades de ser atemporales,
inmutables.
El estado de un objeto representa el efecto acumulado de su comportamiento.
El hecho de que los objetos tengan estado implica que ocupan un espacio, ya en el
mundo fsico , ya en la memoria del ordenador.
Identidad de un objeto
Identidad es la propiedad de un objeto que lo lleva a distinguirse de otros.
Comportamiento de un objeto
Comportamiento es como un objeto acta y reacciona, en trminos de sus cambios de estado
y de los mensajes que intercambia.
El comportamiento de un objeto representa su actividad externamente visible y testable. Son
las operaciones que una clase realiza (llamadas tambin mensajes) las que dan cuenta de
como se comporta la clase. Por operacin se denota el servicio que una clase ofrece a sus
clientes. Un objeto puede realizar cinco tipos de operaciones sobre otro, con el propsito de
provocar una reaccin:
1. Modificador: altera el estado de un objeto.
2.Selector: accede al estado de un objeto, sin alterarlo.
3. iterador: permite a todas las partes de un objeto ser accedidas en un orden.
4. Constructor: crea un objeto y/o inicializa su estado.
5. Destructor: libera el estado de un objeto y/o destruye el objeto.
Relaciones entre objetos

Las relaciones entre objetos abarcan las operaciones, resultados y suposiciones que unos hacen sobre los
otros.
1. Links Son conexiones fsicas o conceptuales entre objetos. Denota la asociacin especfica por la que un objeto
(cliente) usa o solicita el servicio de otro objeto (servidor). El paso de mensajes entre objetos los sincroniza.

2. Agregaciones Denota relaciones todo/parte, con capacidad para governar desde el todo las partes. Es
equivalente a la relacin "tener un". El todo puede contener a la parte.

Agregacin es conveniente en las ocasiones en que el encapsulamiento de las partes es


prioritario. Si se requiere que las relaciones entre objetos esten vagamente acopladas, se
utilizan links.
Clases

Una clase es un conjunto de objetos que comparten una estructura y comportamiento comunes.

Clase representa una abstraccin, la esencia que comparten los objetos.


Un objeto es un ejemplo de una clase.

Un objeto no es una clase, y una clase no es un objeto (aunque puede serlo, p.e. en Smalltalk).
Las clases actan como intermediarias entre una abstraccin y los clientes que pretenden utilizar la
abstraccin. De esta forma, la clase muestra:

1. visin externa de comportamiento (interface), que enfatiza la abstraccin escondiendo su estructura y


secretos de comportamiento.
2. visin interna (implementacin), que abarca el cdigo que se ofrece en la interface de la clase.
Relaciones entre clases

Representan tipos de comparticin entre clases, o relaciones semnticas.


1. Asociacin. Indica relaciones de mandato bidireccionales (Punteros ocultos en C++). Conlleva dependencia
semntica y no establece una direccin de dependencia. Tienen cardinalidad.
2. Herencia. Por esta relacin una clase (subclase) comparte la estructura y/o comportamiento definidos en una
(herencia simple) o ms (herencia mltiple) clases, llamadas superclases.
o
o
o
o

Representa una relacin del tipo "es un" entre clases.


Una subclase aumenta o restringe el comportamiento o estructura de la superclase (o ambas cosas).
Una clase de la que no existen ejemplos se denomina {\it abstracta}.
C++ declara como virtuales todas aquellas funciones que quiere modificar en sus subclases.

3. Agregacin. Representa una relacin del tipo "tener un" entre clases. Cuando la clase contenida no existe
independientemente de la clase que la contiene se denomina agregacin por valor y adems implica contenido
fsico, mientras que si existe independientemente y se accede a ella indirectamente, es agregacin por
referencia.
4. Uso. Es un refinamiento de la asociacin donde se especifica cual es el cliente y cual el servidor de ciertos
servicios, permitiendo a los clientes acceder slo a las interfaces pblicas de los servidores, ofreciendo mayor
encapsulacin de la informacin.
5. Ejemplificacin Se usa en lenguajes que soportan genericidad (declaracin de clases parametrizadas y
argumentos tipo template). Representa las relaciones entre las clases parametrizadas, que admiten parmetros
formales, y las clases obtenidas cuando se concretan estos parmetros formales, ejemplificados o inicializados
con un ejemplo.
6. Metaclases Son clases cuyos ejemplos son a su vez clases. No se admiten en C++.
Relaciones entre clases y objetos
Todo objeto es el ejemplo de una clase, y toda clase tiene 0 ms objetos.
Mientras las clases son estticas, con semntica, relaciones y existencia fijas previamente a la ejecucin de un
programa, los objetos se crean y destruyen rpidamente durante la actividad de una aplicacin.

El diseo de clases y objetos es un proceso incremental e iterativo. Debe asegurar la


optimizacin en los parmetros:
1. Acoplamiento: Grado de acoplamiento entre mdulos.
2. Cohesin: Mide el grado de conectividad entre elementos de un mdulo, y entre objetos de una clase.
3. Suficiencia: Indica que las clases capturan suficientes caractersticas de la abstraccin para conseguir un
comportamiento e interaccin eficiente y con sentido.
4. Completitud: Indica que la interface de la clase captura todo el significado caracterstico de una abstraccin,
escrito en el mnimo espacio.
5. Primitividad: Las operaciones deben implementarse si dan acceso a una representacin fundamental de la
abstraccin. Cuales son operaciones primitivas y cuales no (se pueden realizar a partir de otras) es un asunto
subjetivo y afecta a la eficiencia en la implementacin.

Bibliografias.

http://progra.usm.cl/apunte/materia/sentencias-de-control.html

https://sites.google.com/site/morganbeltrandiaz/project-definition
http://www.mailxmail.com/curso-aprende-programar/metodos-ordenamiento-busqueda
http://fpsalmon.usc.es/genp/doc/cursos/poo/clases.html