Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Algoritmos para resolver problemas computacionales (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

Ejemplo de programa BASIC
430 LET f=f(m): LET c=c(m): PRINT AT f,c;a$(m,8);AT f+1,c;a$(m,14);AT f+2,c;a$(m,20): PRINT AT f,c;a$(m,7 TO 8);AT f+1,c;a$(m,13 TO 14);AT f+2,c;a$(m,19 TO 20): BEEP .01,-10: PRINT a$(m): BEEP .02,0: BRIGHT 0: GO TO 350
440 BEEP .07,15: BEEP .06,25: BEEP .07,35: BEEP .07,35: BEEP .09,40: RETURN
450 INK 8: LET xx=c(n)*8-2: LET yy=177-(f(n)*8): PLOT xx,yy: DRAW 27,0: DRAW 0,-27: DRAW -27,0: DRAW 0,27
460 LET xx=c(m)*8-2: LET yy=177-(f(m)*8): PLOT xx,yy: DRAW 27,0: DRAW 0,-27: DRAW -27,0: DRAW 0,27: INK 0: RETURN
470 RESTORE 260: FOR n=1 TO 22
475 IF n=17 THEN LET g$(6,2)=".": GO TO 540
480 READ p$
490 FOR m=0 TO 7: READ f: POKE USR p$+m,f: NEXT m
520 IF n<12 THEN LET g$(n,1)=p$
530 IF n>11 THEN LET g$(n-11,2)=p$
540 NEXT n: RETURN
700 PAPER 5: LET y$=b$(k,1): LET t$=b$(k,2): LET f=f(k): LET c=c(k): BEEP u,25: PRINT AT f,c+2;t$;AT f+1,c+2;" ";AT f+2,c+2;" ": BEEP u,49: BEEP u,25
710 PRINT AT f,c+1;t$;" ";AT f+1,c+1;" ";y$;AT f+2,c+1;" v": BEEP u,49: BEEP u,25
720 PRINT AT f(k),c(k);b$(k,2);" ";b$(k,2);AT f(k)+1,c(k);" ";b$(k,1);" ";AT f(k)+2,c(k);" v ": BEEP u,49: PAPER 7: RETURN
¿?

Monografias.com

Lenguajes de bajo nivel
No existen procedimientos ni funciones
No existen registros ni tipos definidos por el usuario
No existen bloques estructurados (while, repeat, etc.)
En definitiva: no hay abstracciones

Y sin embargo… funciona:
http://dis.um.es/~ginesgm/museo.html

Monografias.com

Evolución e historia de la programación
Lenguajes
de bajo nivel

(Basic, Fortran, Ensamblador, …)
Lenguajes
estructurados

(Pascal, C,Modula, ADA, …)

Monografias.com

Lenguajes estructurados
UNIT calculo;

INTERFACE

const
NMAX= 10;
MAX_GUARDA= 2000;

type
TDatosEnt= array [1..NMAX] of integer;
TDatosSal= record
NPasos: Shortint;
Paso: array [1..NMAX-1] of record
O1: byte;
O2: byte;
Fn: byte;
end;
end;

procedure Operar (var Arr: TDatosEnt; O1, O2, Func, Nivel: byte; var Vale: boolean); forward;
procedure CalculaCifras (var Entrada: TDatosEnt); forward;
procedure CalculaCifrasRec (var Entrada: TDatosEnt; PA, PB, Func, Nivel: byte); forward;

Concepto de módulo/unidad
Separación de interface/implementación
Tipos definidos por el usuario
Procedimientos y funciones

Monografias.com

Lenguajes estructurados
IMPLEMENTATION

var
suma, num: integer;
CopiaOrden: TDatosEnt;

procedure OrdenaComb (var Entrada: TDatosEnt; Nivel: byte);
var
i, j, maxim, pmaxim, tmp: integer;
begin
CopiaOrden:= Entrada;
num:= Nivel;
for i:= 1 to Nivel-1 do begin
maxim:= CopiaOrden[i];
pmaxim:= i;
j:= i+1;
while j<=Nivel do begin
if CopiaOrden[j]>maxim then begin
maxim:= CopiaOrden[j];
….
end;
end;
end;
Procedimiento con parámetros
Bloques de control estructurados
Separación interface/ implementación

Monografias.com

Lenguajes estructurados
Procedimientos y funciones son abstracciones de control
Los tipos definidos por el usuario son abstracciones de datos
Las unidades, módulos o paquetes son abstracciones de nivel superior: abstracciones de funcionalidades

Monografias.com

Lenguajes estructurados
Inconvenientes:
Los datos y los procedimientos de manipulación sobre los mismos van por separado.
Es necesario garantizar la ocultación de la implementación.
Proliferación de variables globales. ¿Qué papel juegan?
Los programas son cada vez más complejos y difíciles de mantener.

Monografias.com

Evolución e historia de la programación
Lenguajes
de bajo nivel

(Basic, Fortran, Ensamblador, …)
Lenguajes
estructurados

(Pascal, C,Modula, ADA, …)
Lenguajes
orientados a objetos

(Smalltalk, C++, Java, Eiffel, …)

Monografias.com

Lenguajes orientados a objetos
// Interface

class Timer {
private:
double StartTime;
double ClockRate;
public:
Timer (void);
bool StartTimer (void);
double ReadTimer (void);
bool Exists;
};

class Elipse {
protected:
double Fcx, Fcy;
double Frx, Fry, Fang;
void FsetXY (int x1, int y1, int x2, int y2);
public:
Elipse (int x1, int y1, int x2, int y2);
Elipse * Clonar (void);
void Pinta (IplImage *image, int color= 0, int ancho= -1);
};
Encapsulación de datos y operaciones
Los datos son privados
Las operaciones son públicas
Una clase es un Tipo Abstracto de Datos

Monografias.com

Lenguajes orientados a objetos
// Implementación

Timer::Timer (void)
{
LARGE_INTEGER *QW= new LARGE_INTEGER;
Exists= QueryPerformanceFrequency(QW);
ClockRate= QW->LowPart;
delete QW;
}

bool Timer::StartTimer (void)
{
LARGE_INTEGER *QW= new LARGE_INTEGER;
bool res= QueryPerformanceCounter(QW);
StartTime= QW->LowPart;
delete QW;
return res;
}
Separación interface/ implementación

Monografias.com

Lenguajes orientados a objetos
Una clase encapsula los datos de un tipo y las operaciones sobre el mismo
Una clase es, al mismo tiempo, un tipo abstracto de datos y un módulo que encierra un conjunto de funciones relacionadas
Separación clara entre interface (parte visible desde fuera) e implementación (oculta)

Monografias.com

Resolución de problemas
¿Cómo resuelve un problema de programación un ingeniero?

A) Tecleando código en una máquina.

B) Siguiendo un proceso metódico.

Monografias.com

Resolución de problemas
Estudio de viabilidad, análisis del terreno, requisitos pedidos, etc.
Diseñar los planos del puente y asignar los materiales.
Poner los ladrillos de acuerdo con los planos.
Supervisión técnica del puente.
¿Cómo construye un puente un arquitecto?
1. Análisis del problema
2. Diseño del programa (alg. y estr.)
3. Implementación (programación)
4. Verificación y pruebas
ARQUITECTO INFORMÁTICO

Monografias.com

Observación.

Hipótesis.

Experimentación.

Verificación.
MÉTODO CIENTÍFICO INFORMÁTICO
1. Análisis del problema
2. Diseño del programa (alg. y estr.)
3. Implementación (programación)
4. Verificación y pruebas
Resolución de problemas

Monografias.com

Conclusiones
Proceso de análisis/diseño. No empezar tecleando código como locos.
Usar abstracciones, respetando los dos principios básicos:
Encapsulación: las funciones relacionadas deben ir juntas (clases, módulos, paquetes, etc.).
Ocultación de la implementación: los aspectos de implementación no son visibles fuera del módulo, clase, etc.

Monografias.com

Ejercicios para casa
Leer el capítulo 1, y las secciones 2.1 y 2.2 del texto guía.
Preparar un resumen en un folio por las dos caras (una cap. 1 y otra para 2.1 y 2.2), ESCRITO A MANO.
Entregar la semana que viene, en clase.
Nombre del alumno, AED, Grupo 3, Cap.1, Fecha (horas estim.)

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter