le, ei, profesor ramón castro liceaga universidad latina (unila) iii. diseÑo de algoritmos para la...

59
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS.

Upload: teofila-belmontes

Post on 06-Feb-2015

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

LE, EI, Profesor Ramón Castro Liceaga

UNIVERSIDAD LATINA (UNILA)

III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS.

Page 2: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

LOS DATOS A PROCESAR PUEDEN SER:

SIMPLES

Ocupan solo una casilla de memoria. (enteros, caracteres, decimales).

Ejem.- 567

COMPLEJOS O ESTRUCTURADOS .- Hacen referencia a un grupo de casillas de memoria y son construidos a partir de los datos simples.

-Arreglos o vectores, matriz, árboles, registros, archivos, Bases de Datos, etc.

Page 3: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Tipos simples.

Las En C/C++ existen básicamente cuatro tipos de datos, aunque como se verá después, podremos definir nuestros propios tipos de datos a partir de estos cuatro.

TIPO Tamañochar 1 byteint 2 bytesfloat 4 bytes

double 8 bytes

Page 4: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

QUE SON LOS ARREGLOS O VECTORES ?

Es un conjunto o lista de datos estructurados

Es una colección finita, homogenea y ordenada de elementos

Finita.- Indica el número máximo

Homogenea.- Son del mismo tipo (entero, reales, caracteres)

Ordenada.- Llevan un orden consecutivo a través de un índice

Ejem.- A= 34 45 12 05 93 Datos(0) (1) (2) (3) (4) Indices

Page 5: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Los índices hacen referencia a los componentes (datos) en forma individual.

Ejem.- A= 34 45 12 05 93 Datos(0) (1) (2) (3) (4) Indices

En forma individual.- A[2]= 12

Cuanto vale A[1], A[4] …?

Page 6: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

DECLARACIÓN DE UN ARREGLO EN C/C++

La sintaxis de declaración de arreglos es:

tipo nombre_arreglo [numero_de_elementos];

Ejem:

int A[5]; //Define un arreglo de 5 numeros

int CoordenadasDePantalla[5]; // Un arreglo de 5 enteros

char IDCompania[20]; //Un arreglo de 20 caracteres

float Calificación[3]; //Arreglo de 3 números decimales

Page 7: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Que podemos programar con Arreglos ?.

Las operaciones básicas con Arreglos son:

•Lectura de un arreglo

•Despliegue de datos de un arreglo

•Llenado de un arreglo

•Ordenacion de un arreglo

•Búsqueda de datos en un arreglo

Page 8: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

LLENADO/LECTURA DE UN ARREGLO

Pseudocodigo:

Dame los 10 datos ?

PARA i desde 0 hasta 10 incrementa

LEE A[i].

Codigo en C o C++

printf ("Dame los 10 datos");

for (i=0; i<10; i++)

{

scanf ("%d", &valor [i]);

}

Page 9: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

DESPLIEGUE DE UN ARREGLO Y OPERACIONES CON SUS COMPONENTES

Pseudocodigo:

PARA i desde 0 hasta 10 incrementa

Inicio

DESPLIEGA “Valor”, Indice + 1, valor

SUMA los valores del arreglo

termina

Codigo en C o C++

for (i=0; i<10; i++)

{

printf ("Valor %d = %d\n", i+1, valor [i]);

suma += valor [i];

}

Page 10: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

PRACTICA (5):

A) HACER UN PROGRAMA (ProgArreg.cpp) EN C o C++ QUE PIDA EL PROCESO PARA N CALIFICACIONES Y LOS DATOS DESPLEGANDO AL FINAL SU PROMEDIO.

Page 11: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

#include <stdio.h>

#include <conio.h>

int i, valor [10], suma=0, n;

float promedio;

main ()

{

printf ("Cuantas calificaciones ? ");

scanf ("%d", &n);

printf ("Dime los %d Datos en el mismo renglon\n", n);

for (i=0; i<n; i++)

{ scanf ("%d", &valor[i]); }

for (i=0; i<n; i++)

{ printf ("Valor %d = %d\n", i+1, valor [i]);

suma += valor [i]; }

promedio = (float) suma/n;

printf ("El promedio es %g\n", promedio);

getch();

}

Page 12: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

ARREGLOS MULTIDIMENCIONALES:

Un vector es un array unidimensional, es decir, sólo utiliza un índice para referenciar a cada uno de los elementos. Su declaración será:

tipo nombre [tamaño];

Una matriz es un array multidimensional. Se definen igual que los vectores excepto que se requiere un índice por cada dimensión. Su sintaxis es la siguiente:

tipo nombre [tamaño 1][tamaño 2]...;

Una matriz bidimensional se podría representar gráficamente como una tabla con filas y columnas.

Page 13: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

ARREGLOS MULTIDIMENCIONALES:

Ejem.- Una matriz de 2X3 (2 filas por 3 columnas) se inicializa en C/C++ como:

int matriz[2][3] = {

{ 20,50,30 },

{ 4,15,166 }

};

Otra manera es llenar el arreglo mediante una instrucción FOR anidada

Page 14: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

ESTRUCTURA DE DATOS ( ARREGLOS )

/* Matriz bidimensional. */#include <stdio.h>#include <conio.h>

main() /* Rellenamos una matriz */{int x,i,numeros[3][4]; /* rellenamos la matriz */printf("Dime los valores de matriz 3X4\n");for (x=0;x<3;x++) for (i=0;i<4;i++)

scanf("%d",&numeros[x][i]);

/* visualizamos la matriz */ for (x=0;x<3;x++) for (i=0;i<4;i++) printf("%d",numeros[x][i]);getch();}

Page 15: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

ESTRUCTURA DE DATOS ( ARREGLOS )

int numeros[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

quedarían asignados de la siguiente manera:

numeros[0][0]=1 numeros[0][1]=2 numeros[0][2]=3 numeros[0][3]=4

numeros[1][0]=5 numeros[1][1]=6 numeros[1][2]=7 numeros[1][3]=8

numeros[2][0]=9 numeros[2][1]=10 numeros[2][2]=11 numeros[2][3]=12

Page 16: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

PRACTICA (9):HACER UN PROGRAMA DE UNA MATRIZ QUE SIMULE UN TABLERO DE AjEDREZ DE 8x8:

/* Programa: Matriz_tablero.cpp. Simula una matriz de 8x8 */

#include <stdio.h>

#include <conio.h>

main() {

int suma, x,i,numeros[8][8];

printf("Dime los valores de matriz 8X8\n");

for (x=0;x<8;x++)

for (i=0;i<8;i++)

scanf("%d",&numeros[x][i]);

for (x=0;x<8;x++){ // visualizamos la matriz

printf("\n");

for (i=0;i<8;i++){

printf("%d",numeros[x][i]);

}

}

printf("\n");

getch();

} // Al finalizar hacer un programa que calcule una suma de valores en casillas

Page 17: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

QUE SON ORDENAMIENTOS DE DATOS ?

SORT / ORDENACION.-

Es reagrupar un grupo de datos en una secuencia especifica de orden

(mayor -> menor o menor -> mayor)

Page 18: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

LA ORDENACION DE ELEMENTOS PUEDE SER:

• Ordenación Interna.- En memoria principal (arrays, listas).

• Ordenación Externa.- En memoria secundaria. (dispositivos de almacenamiento externo.- archivos y Bases de datos).

Page 19: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

TIPOS DE ORDENACION

Los mas usuales son:

• POR INTERCAMBIO (Compara e intercambia elementos.- Burbuja)

• POR SELECCIÓN (Selecciona el mas pequeño y lo intercambia)

• POR INSERSION (Inserta los elementos en una sublista ordenada)

• METODO SHELL (Es una insersión mejorada)

• ORDENACION RAPIDA (Quick Sort.- divide una lista en dos partes)

Page 20: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

ALGORITMO DE EJEMPLO DE UN ORDENAMIENTO

PROBLEMA:

En una Empresa el área de Recursos Humanos requiere ordenar 3 números de empleados obteniendo la siguiente salida.

Page 21: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

POR INTERCAMBIO (Burbuja o bubble sort )

El bubble sort, también conocido como ordenamiento burbuja, funciona de la siguiente manera:

• Se va comparando cada elemento del arreglo con el siguiente; si un elemento es mayor que el que le sigue, entonces se intercambian; esto producirá que en el arreglo quede como su último elemento, el más grande.

• Este proceso deberá repetirse recorriendo todo el arreglo hasta que no ocurra ningún intercambio.

• Los elementos que van quedando ordenados ya no se comparan. "Baja el más pesado".

Page 22: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

EJEMPLO: Ordenamiento por Burbuja o bubble sort

Consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados. Sea un array de 6 números de empleados: {40,21,4,9,10,35}:

Primera pasada:{21,40,4,9,10,35} <-- Se cambia el 21 por el 40.{21,4,40,9,10,35} <-- Se cambia el 40 por el 4.{21,4,9,40,10,35} <-- Se cambia el 9 por el 40.{21,4,9,10,40,35} <-- Se cambia el 40 por el 10.{21,4,9,10,35,40} <-- Se cambia el 35 por el 40.

Segunda pasada:{4,21,9,10,35,40} <-- Se cambia el 21 por el 4.{4,9,21,10,35,40} <-- Se cambia el 9 por el 21.{4,9,10,21,35,40} <-- Se cambia el 21 por el 10.

Ya están ordenados, pero para comprobarlo habría que acabar esta segundacomprobación y hacer una tercera.

Page 23: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Funciones.- Son bloques de código utilizados para dividir un programa en partes mas pequeñas

Prototipo de función.- Es la declaración de la función en el código

Variables:

Gobales.- Nivel programa

locales.- Nivel funcion

Que son las funciones ?

Page 24: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

// Definimos una función donde A=arreglo y N=tamaño

int bubblesort(int A[],int N){

int i,j,AUX;

for(i=2;i<=N;i++){ //siguiente

for(j=N;j>=i;j--){ //anterior

if(A[j-1]>A[j]){ //si i > d intercambio

AUX=A[j-1]; //guardamos en AUX

A[j-1]=A[j]; //pasamos d a i

A[j]=AUX; //copiamos AUX en d

}

}

}

return 1;

}

Page 25: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

• Practica: Hacer un programa con Arreglos que ordene por el método de la burbuja Bubblesort en forma ascendente un vector de 10 números de empleados de una empresa.

Pseudocódigo:

1.- Inicio

2.- Definir un vector de 10 números

3.- Llenar el vector con los números

4.- Mostrar la salida de los números capturados en desorden

5.- Ordenar el vector por el método bubblesort

6.- Mostrar la salida con los números ordenados del vector

Códificación :

main()

{

int A[10];

llenavector(A,10); // es uma función

printf("ORDENAMIENTO POR BURBUJA \n");

printf("Numeros a ordenar: \n");

salida(A,10); // es uma función

printf("\n\nNumeros ordenados: \n");

bubblesort(A,10); // es uma función

salida(A,10); // es uma función

getch();

}

Page 26: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

Función que llena el vector con los números

int llenavector(int A[],int N){

int c;

int x;

cout<<"Ingrese 10 numeros de empleados:"<<endl;

for(c=1;c<=N;c++){

cin>>x; // lee x numero

A[c]=x; // lo graba en el vector

}

return 1;

}

Page 27: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

Ordenar el vector por el método bubblesort

int bubblesort(int A[],int N){ int i,j,AUX; for(i=2;i<=N;i++){ for(j=N;j>=i;j--){ if(A[j-1]>A[j]){ AUX=A[j-1]; //Intercambio A[j-1]=A[j]; A[j]=AUX; } } } return 1; }

Page 28: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

Muestra la salida de los números en el arreglo.

int salida(int A[],int N){

int c;

for(c=1;c<=N;c++){

printf("%d, ",A[c]); // muestra el vector

}

return 1;

}

// Nota: este mismo procedimiento fue el que se utilizó para mostrar los datos desordenados.(solo se escribe una vez)

Page 29: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EI, Profesor Ramón Castro Liceaga

• Practica # S01: Construir el programa con Arreglos que ordene por el método de la burbuja Bubblesort en forma ascendente un vector de 10 números de empleados de una empresa.

• Librerias:#include <stdlib.h>

#include <stdio.h>

#include <iostream>

#include <conio.h>

using namespace std;

Page 30: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Que es la Programación Orientada a Objetos ?Que es la Programación Orientada a Objetos ?

• Es un estilo de programación en que cada programa es visto como un objeto se forma por una serie de componentes, autocontenidos que cooperan para realizar las acciones de la aplicación completa.

Page 31: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Origen Origen

• Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo.

Page 32: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Diferencias con la programación estructuradaDiferencias con la programación estructurada

• Las principales diferencias entre la programación estructurada y la orientada a objetos son:

• La programación orientada a objetos es más moderna, es una evolución de la programación estructurada

• La programación orientada a objetos se basa en lenguajes que soportan sintáctica y semánticamente la unión entre los tipos abstractos de datos y sus operaciones (a esta unión se la suele llamar clase).

• La programación orientada a objetos incorpora en su entorno de ejecución mecanismos tales como el polimorfismo y el envío de mensajes entre objetos. .

Page 33: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

ConceptosConceptos orientados a objetos orientados a objetos

• Objeto • Clase • Método • Evento • Mensaje• Propiedad o atributo • Componentes de un objeto• Representación de un objeto

Page 34: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

CaracterísticasCaracterísticas de la POO de la POO

Las características mas importantes son:

•Abstracción •Encapsulamiento •Principio de ocultación•Polimorfismo•Herencia

Page 35: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Que es un Que es un paradigmaparadigma ? ?

• Paradigma: Modo de Pensar expresado en breve (Un punto de vista personal, una metáfora, un esquema-mental, una visión del Mundo o cosmovisión)

• Por ejemplo: ¿Cómo pensaba la gente que era la Tierra antes de 1492?

Page 36: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Clases y ObjetosClases y Objetos

• Objeto es la entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). Corresponden a los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

• Las Clases son definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Page 37: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

MétodoMétodo

• Es un algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Page 38: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

EventoEvento

• Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

Page 39: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

MensajeMensaje

• Es una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Page 40: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

PropiedadPropiedad o atributo o atributo

• Es contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Page 41: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Componentes de un objetoComponentes de un objeto

• Los componentes de un objeto son:

• atributos, • identidad, • relaciones • y métodos.

Page 42: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

RepresentaciónRepresentación de un objeto de un objeto

• Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes

Page 43: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

TipoTipo

• Es un conjunto de firma de métodos con un nombre que lo identifica. Un tipo puede ser definido a través de una Clase o una Interface.

Page 44: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Que es un Que es un lenguaje de programación lenguaje de programación • Un lenguaje de programación es un idioma artificial diseñado para

expresar procesos que pueden ser llevadas a cabo por máquinas como las computadoras.

• Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones.

• Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.

• Es aquel que utilizamos para poder transmitir ordenadamente nuestras ideas a una computadora.

Page 45: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Tipos de lenguajes Tipos de lenguajes

• Existen 4 tipos de LP:

– Lenguaje máquina 00110011

– Lenguaje ensamblador ld a, #10

– Lenguajes de alto nivel for(i=0;i<10;i++)

– Lenguajes orientados a objetos class persona{ }

Page 46: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Como se clasifican Como se clasifican

• Lenguajes imperativos. Utilizan instrucciones como unidad de trabajo de los programas (Cobol, Pascal, C, Ada).

• Lenguajes declarativos. Los programas se construyen mediante descripciones de funciones o expresiones lógicas (Lisp, Prolog).

• Lenguajes orientados a objetos. El diseño de los programas se basa mas en los datos y su estructura. La unidad de proceso es el objeto y en el se incluyen los datos (variables) y las operaciones que actúan sobre ellos (Java, Smalltalk, C++).

• Lenguajes orientados al problema. Diseñados para problemas específicos, principalmente de gestión, suelen ser generadores de aplicaciones. (Lenguajes de 4ª Generacion 4GL, Progress, ABAP, ORACLE)

• Lenguajes naturales. Están desarrollándose nuevos lenguajes con el principal objetivo de aproximar el diseño y construcción de programas al lenguaje de las personas.

Page 47: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Lenguaje de programación orientado a objetosLenguaje de programación orientado a objetos

• Entre los Entre los lenguajes orientados a objetos lenguajes orientados a objetos destacan los siguientes:destacan los siguientes:

• Action Script , Ada, C++, C#, Clarion, C++Builder, D, Action Script , Ada, C++, C#, Clarion, C++Builder, D, Delphi, Harbour, Eiffel, Java, Lexico (en Delphi, Harbour, Eiffel, Java, Lexico (en castellano), Objective-C, Ocaml, Oz, Perl (soporta castellano), Objective-C, Ocaml, Oz, Perl (soporta herencia múltiple), PHP (en su versión 5) , herencia múltiple), PHP (en su versión 5) , PowerBuilder, Python, Ruby, Smalltalk, Magik PowerBuilder, Python, Ruby, Smalltalk, Magik (SmallWorld), VB.NET Visual FoxPro , XBase++(SmallWorld), VB.NET Visual FoxPro , XBase++

• Utilizaremos en nuestros ejemplos el lenguaje Utilizaremos en nuestros ejemplos el lenguaje Java en su versión J2SDK.Java en su versión J2SDK.

Page 48: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Lenguaje Java orientado a objetosLenguaje Java orientado a objetos

• El diseño orientado a objeto puede ser programado en cualquier lenguaje.

• Los desarrollos se organizan alrededor de los datos, y no de las funcionalidades.

• Afortunadamente han aparecido nuevos lenguajes que facilitan la programación orientada a objetos, como es el caso de Java.

• En adelante para explicar las funcionalidades de programación orientadas a objetos adoptaremos código de Java como ejemplo

Page 49: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

LE, EI, Profesor Ramón Castro Liceaga

El Paradigma de la orientación a objetos

PRACTICA # J01

•Instalación y prueba de un lenguaje de programación orientado a objetos: Java con Netbeans IDE

Page 50: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

LE, EI, Profesor Ramón Castro Liceaga

Niveles de abstracción para la construcción de algoritmos

La construcción de algoritmos se basa en la abstracción de las características del problema a través de un proceso de análisis, que permitirá seguir con el diseño de una solución basada en modelos, los cuales ven su representación tangible en el proceso de implementación del algoritmo.

Page 51: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

LE, EI, Profesor Ramón Castro Liceaga

Estructuras básicas en un algoritmo.

1. Ciclos2. Contadores3. Acumuladores4. Condicionales5. Interruptores

Page 52: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

CiclosSe caracterizan por iterar o repetir instrucciones en función de una condición que debe cumplirse en un momento bien definido. Existen dos tipos de ciclos: while y do-while.

while se caracteriza por realizar la verificación de la condición antes de ejecutar las instrucciones asociadas al ciclo.

do-while evalúa la condición después de ejecutar las instrucciones una vez.

En este tipo de ciclos el número de repeticiones que se realizarán es variable y depende del contexto de ejecución del algoritmo.mientras <condicion> hacer Instruccion1 Instruccion2... Instrucción nfin mientras

Page 53: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Contadores

Se caracteriza por iterar o repetir instrucciones en función de una condición que debe cumplirse en un momento conocido y está representado por la instrucción para (for).

Esta estructura se evalúa el valor de una variable a la que se asigna un valor conocido al inicio de las iteraciones; este valor sufre incrementos o decrementos en cada iteración y suspende la ejecución de las instrucciones asociadas una vez que se alcanza el valor esperado.

Para <variable> = <valor inicial> hasta <valor tope> <Incremento>] hacer Instruccion1 Instruccion2 ... Instrucción nFin para <variable>

Page 54: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Acumuladores

Son variables que tienen por objeto almacenar valores incrementales o decrementales a lo largo de la ejecución del algoritmo. Este tipo de variables utiliza la asignación recursiva de valores para no perder su valor anterior.

Son útiles para calcular totales en diferentes valores o cantidades

La asignación recursiva de valor a este tipo de variables se ejemplifica a continuación:

<variable> = <variable> + <incremento>

total = total + cantidad;

o tambien suma += valor [i];

Page 55: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Condicionales (if.. else)

Se utiliza para ejecutar selectivamente secciones de código de acuerdo con una condición definida.Sólo tiene dos posibilidades: si la condición se cumple, se ejecuta una sección de código; si no, se ejecuta otra sección, aunque esta parte puede omitirse.

si <condicion> entonces Instruccion1 Instrucción n[si no Instrucción 3 Instrucción n]Fin si

Page 56: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Interruptores

Son variables globales del programa que se utilizan en combinación con las estructuras cíclicas y selectivas para habilitar o deshabilitar secciones de código.

Un ejemplo de este tipo de variables son las banderas que, dependiendo del valor que almacenen, condicionan el comportamiento del programa.

Ejemplo:

Si flag = 1 entonces escribe el encabezado del reporte.

Page 57: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Técnicas de diseño de algoritmos

Algunas técnicas de diseño de algoritmos son:

• Refinamiento progresivo• Procesamiento regresivo• Divide y vencerás• Estrategia Greedy• Programación dinámica• Inducción

Page 58: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Técnicas de diseño de algoritmos-Refinamiento progresivo

Es una técnica de análisis y diseño de algoritmos que se basa en la división del problema principal en problemas más simples. Este tipo de procedimiento se conoce como Top-Down y también es aplicable a la optimización del desempeño y a la simplificación de un algoritmo.

-Procesamiento regresivo

Parte de la existencia de múltiples problemas y se enfoca en la asociación e identificación de características comunes entre ellos para diseñar un modelo que represente la solución para todos los casos de acuerdo con la parametrización de las entradas. Esta técnica también es conocida como Bottom-Up y puede aplicarse en la optimización y simplificación de algoritmos.

-Divide y vencerás

Dividir un problema en subproblemas del mismo tipo y aproximadamente todos ellos del mismo tamaño, resolver los subproblemas recursivamente y, finalmente, combinar la solución de los subproblemas para dar una solución al problema original. La recursión finaliza cuando el problema es pequeño y la solución es fácil de construir directamente.

Page 59: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS

Técnicas de diseño de algoritmos-Estrategia Greedy

Un algoritmo Greedy elige, en cada paso, una solución local optima. Las estrategias greedy encuentra una solución maxima al problema. (ejem. Rutas de entrega)

-Programación dinámica

Es un método para reducir el tiempo de ejecución de un algoritmo mediante la utilización de subproblemas superpuestos y subestructuras óptimas. Una subestructura óptima significa que soluciones óptimas de subproblemas pueden ser usadas para encontrar las soluciones óptimas del problema en su conjunto. Se pueden resolver problemas con subestructuras óptimas siguiendo estos tres pasos:Dividir el problema en subproblemas más pequeños. Resolver estos problemas de manera óptima usando este proceso de tres pasos recursivamente.Usar estas soluciones óptimas para construir una solución óptima al problema original.

-Inducción

A través de la inducción matemática se puede definir un mecanismo para encontrar todos los posibles elementos de un conjunto recursivo partiendo de un subconjunto conocido, o bien, para probar la validez de la definición de una función recursiva a partir de un caso base.