MÉTODOS NUMÉRICOS CONJUNTO DE NÚMEROS DE PUNTO FLOTANTE (GENERACIÓN DE MANTISAS)



Documentos relacionados
MÉTODOS DE BÚSQUEDA. Pedro Guevara Salgado Luís Olascoaga

MATRICES. nombrematriz = array[puntoinicialfila..puntofinalfila, puntoinicialcolumna..puntofinalcolumna ] of tipodato

Introducción a la Programación Ingenieria en Informática Junio 2008

1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura:

Excepciones. Prof. Laura Lanzarini

>> Programación Visual (GUI)

Manual de turbo pascal

UTN FRLP Ing. en Sistemas de Información Algoritmos y Estructura de Datos Trabajos Prácticos Curso 2010

Departamento de Informática Universidad de Valladolid Campus de Segovia LABORATORIO: INTRODUCCIÓN A LAS UNIDADES EN TURBO PASCAL

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Formato para prácticas de laboratorio


Asumiremos que se dispone de procedimientos para leer y escribir caracteres. Se desarrollan algunas funciones primitivas que nos serán útiles.

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Estructura de Datos y de la Información. Pilas y expresiones aritméticas

1. Suma de dos números introducidos por teclado. 2. Comparación de dos números introducidos por teclado. program suma; uses crt;

[Titulo] : Creacion de un Crypter [Lenguaje] : Delphi [Autor] : Doddy Hackman. [Temario]

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

Program Orden; Uses crt; Const n=100; Type vector= array[1..n] of integer; Var a,b : vector; prim, ulti,i, ne : integer; metodo : char;

Operaciones con vectores

Unidades en PASCAL (Units)

Repaso Visual Basic Interfaz Gráfica

[Titulo] : Creacion de un Keylogger [Lenguaje] : Delphi [Autor] : Doddy Hackman

PASCAL. Repaso de Pascal Introducción a Python. Pascal. Pascal - introducción. Pascal Declaraciones: Variables. Pascal Declaraciones: Tipos 07/04/2015

Cómo desarrollar un servicio de Windows con Delphi

EJERCICIOS EN PASCAL 1.- Área de un triángulo (Entrada y salida estándar - Pascal) 1.- Escribir un programa (en Pascal) que:

Ejercicios de fundamentos de los computadores

LABORATORIO DE PROGRAMACIÓN II Problemas HOJA 1 RECURSIVIDAD

UNIVERSIDAD NACIONAL DE INGENIERÍA CENTRO DE EXTENSIÓN Y PROYECCIÓN SOCIAL

Pilas. Uso (I) * 2 = * + Transformación de expresiones aritméticas de notación infija a postfija. Ejemplo:

[Titulo] : Creacion de un Troyano de Conexion Inversa. [Lenguaje] : Delphi [Autor] : Doddy Hackman. [Temario]

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

TIPO DE DATO ABSTRACTO (TAD)

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

Práctica A: Uso de la calculadora de Windows para convertir números decimales y binarios

Haz Ingeniería Con Aplicaciones Prácticas

Estructura de datos Tema 6: Tablas de dispersión (hashing)

Departamento de Informática Universidad de Valladolid Campus de Segovia. TEMA 4: TIPOS ABSTRACTOS DE DATOS (TADs)

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Fundamentos de Informática Examen 18 de Septiembre de 2006 Mecánica y Electricidad

Organización del Computador. Prof. Angela Di Serio

Introducción a la calidad de código

Creación de un componente de datos (Data-Aware Component)

!"# $ % & &!! #! '# # "+,$ # "--$ ' #. "//$

Turbo Pascal 7, FPS y sus herramientas de análisis de errores.

Estructura de datos (arreglos) Vectores y Matrices

Introducción a la Programación

Curso de Programación en Excel con VBA

FUNDAMENTOS DE OBJECT PASCAL

Unidad, Librería, Unidad estándar, Interfaz, Implementación, Inicialización

Tema 2. El lenguaje de programación Java (Parte 1)

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

COLEGIO PABLO DE TARSO IED CONSTRUCCION DE PROYECTOS DE VIDA PRODUCTIVOS VISUAL BASIC PRÁCTICAS DOC RAUL MONROY PAMPLONA

Soluciones propuestas

Seminario de Actualización - Excel Avanzado y Macros. Visual Basic. Conceptos Básicos de Visual Basic para Aplicaciones

Paradigmas de Programación

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

GUÍA DE TRABAJO N 3 C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 10. Tema: APLICACIONES WINDOWS FORMS LENGUAJE C#

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Comencemos a programar con. Entrega 10. Estructuras de Control II

16. Realizar un programa que obtenga el producto de los primeros seis números naturales

Si L es recursivo, entonces es recursivamente numerable

Diseño de Aplicaciones con Model Maker for Delphi

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

MINI CURSO DE PROGRAMACIÓN EN DELPHI DANIEL EDUARDO SALAS USECHE SE PERMITE EL LIBRE USO DE ÉSTE DOCUMENTO MIENTRAS SE MANTENGA CLARA Y PÚBLICA LA

Ingeniería de Sistemas

Guías técnicas Grupo Danysoft: Creación de Componentes en Delphi (parte I)

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

8283: Administración y programación en Microsoft SQL Server 2012

Cursada Primer Semestre 2015 Guía de Trabajos Prácticos Nro. 2

Tema 7: Árboles ESTRUCTURAS DE DATOS 1

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS

Tecnologías de la Información. Apuntes de programación en Visual Basic 6.0

UNIVERSIDAD AUTONOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES PRESENTACION

Métodos Numéricos utilizando Scilab

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

Contenido de la Presentación

Patrón Fábrica Abstracta. Julio Ariel Hurtado Alegría Ingeniería de Software II 2015

ING. PEDRO ALBERTO ARIAS QUINTERO

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Tema 4.- Pilas y Colas

Cómo nombrar variables ( 2&

Solución: exp Febrero, primera semana. Paso 1º: Cálculo del campo exponente. Según el apartado a) del primer corolario: 53.

Convirtiendo números del sistema decimal al sistema binario.

1. (0,25 puntos) A que número binario es equivalente el decimal 138?

PRÁCTICAS DE VISUAL BASIC APLICADO AL CÁLCULO ACTUARIAL

INFORMATICA VISUAL BASIC 2008 GRAFICACIÓN I

UNIVERSIDAD LIBRE DE COLOMBIA FACULTAD INGENIERIA DE SISTEMAS ELECTIVA TECNICA II.NET Y SQL SERVER

Índice. Definición Objetivos Estructura de una unidad Ejemplo de creación y uso FAQs Opciones de compilación Unidades estándar de TurboPascal

Curso Introducción JAVA Pág.: 1

Universidad Metropolitana Castro Carazo Prof. Ing. Patricia Vargas. Material de apoyo Semana #2 PROGRAMACIÓN II

Trabajo Práctico Nº 4 Iteración

Programación en Pascal

ALMACENAMIENTO PERSISTENTE DE DATOS

PROYECTO MUJER SEGURA Febrero 14, de 2014

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Caso de Estudio: TDA Racional

Transcripción:

MÉTODOS NUMÉRICOS CONJUNTO DE NÚMEROS DE PUNTO FLOTANTE (GENERACIÓN DE MANTISAS) Luís Roberto Olascoaga Surmay Universidad de Córdoba Facultad de Ciencias Básicas e Ingenierías Departamento de Ingeniería de Sistemas y Telecomunicaciones

CURSO: Métodos Numéricos TEMA: Conjunto de números de punto flotante (Generación de mantisas) DESCRIPCION: Desarrollo practico del tema de la generación de mantisas para un conjunto de números de punto flotante, del cual conocemos los valores de su precisión t, base (que para el caso asumimos que es la base binaria) y rango de valores que tomaran los exponentes de l (valor mas pequeño) hasta u (valor más alto). OBJETIVO: Diseñar e implementar en lazarus una clase para generar el conjunto de mantisas en forma binaria para un conjunto de números de punto flotante considerando los datos de la precisión y rango de exponentes del mismo. PALABRAS CLAVES: Formatos de números reales conversión de números decimales a binario, conjunto de números de punto flotante, mantisas, números racionales, programación orientada a objetos, diseño de clases, implementación con eventos. AUTOR: Lic. Luis Olascoaga Surmay DESARROLLO: A continuación se presenta la implementación práctica del tema de la generación de las mantisas para un conjunto de números de punto flotante del cual conocemos como entrada sus datos característicos fundamentales. Estudie la teoría expuesta en clase y luego analice el código presentado para encenderlo adecuadamente, a continuación construya el proyecto correspondiente en lazarus, pase el código, diseñe la ventana como se indica al final y haga la programación de los eventos correspondientes.

unit umantisas; {$mode objfpc}{$h+} interface uses Classes, SysUtils, Math; type { TMantisa } TMantisa = class private Precision:Integer; MinExpo:Integer; MaxExpo:Integer; public constructor Create; procedure SetPrecision(Pre:Integer); procedure SetMinExpo(Min:Integer); procedure SetMaxExpo(Max:Integer); function GetPrecision:Integer; function GetMinExpo:Integer; function GetMaxExpo:Integer; function NumMantisas:integer; function Rellenar(Bin:string):string; function Potencia(Expo:Integer):longint; function BinMantisa(Num:Integer):string; function FormarMantisa(BinMan:string):string; procedure SumarFrac(a,b:Integer;var c,d:integer); function Expandir(BinMan:string):string ; implementation { TMantisa } constructor TMantisa.Create; Precision:=0; MinExpo:=0; MaxExpo:=0; procedure TMantisa.SetPrecision(Pre: Integer); Precision:=Pre; procedure TMantisa.SetMinExpo(Min: Integer); MinExpo:=Min;

procedure TMantisa.SetMaxExpo(Max: Integer); MaxExpo:=Max; function TMantisa.GetPrecision: Integer; result:=precision; function TMantisa.GetMinExpo: Integer; result:=minexpo; function TMantisa.GetMaxExpo: Integer; result:=maxexpo; function TMantisa.Potencia(Expo: Integer): longint; result:=trunc(power(2,expo)); function TMantisa.NumMantisas: integer; result:=potencia(precision 1); function TMantisa.Rellenar(Bin: string): string; while Length(Bin)<Precision do Bin:='0' + Bin; result:=bin; function TMantisa.BinMantisa(Num: Integer): string; result:=''; repeat if Num mod 2 = 0 then result:='0' + result else result:='1' + result; Num:=Num div 2; until Num=0; function TMantisa.FormarMantisa(BinMan: string): string; result:='(.' + BinMan + ')';

procedure TMantisa.SumarFrac(a, b: Integer; var c, d: Integer); var Mcd,tem:Integer; if b>d then mcd:=b else mcd:=d; tem:=a*(mcd div b) + c*(mcd div d); c:=tem; d:=mcd; function TMantisa.Expandir(BinMan: string): string; var i,num,den,a,b:integer; a:=0; b:=1; result:=''; for i:=1 to Length(BinMan)do if BinMan[i]='1' then num:=1 else num:=0; den:=potencia(i); result:=result + BinMan[i] +'/'+ IntToStr(Den) + ' + '; SumarFrac(num,den,a,b); result:=copy(result,1,length(result) 2); result:=result + ' = ' + IntToStr(a) + '/' + IntToStr(b); end.

El diseño para la ventana es el siguiente: El código para el evento click del botón generar es el siguiente: //Evento click boton generar procedure TForm1.Button1Click(Sender: TObject); var Tem:string; i,min:integer; Man:TMantisa; M1.Clear; Man:=TMantisa.Create; Man.SetPrecision(StrToInt(E1.Text)); Man.SetMinExpo(StrToInt(E2.Text)); Man.SetMaxExpo(StrToInt(E3.Text)); Min:=Man.NumMantisas; for i:=min to 2*min 1 do Tem:=Man.BinMantisa(i); M1.Lines.Add(' '+ Man.FormarMantisa(Tem) + ' = ' + Man.Expandir(Tem)); Man.Free;

Pruebe la aplicación con las entradas indicadas en la siguiente pantalla: