Está en la página 1de 7

Paso 4 - Componente práctico - Prácticas simuladas

Integrantes:
CRISTHIAN CAMILO ROA CALLE
NORBERTO ANDRES MURCIA RUEDA
ANUAR ANDRES BENAVIDES MEJIA

Tutor:
SERGIO LUIS ALEJANDO MIRANDA ROJAS

Escuela de Ciencias Básicas, Tecnología e Ingeniería


Universidad UNAD
2023
Desarrollo de la Actividad
Punto a. Conversión de Números en Base 10
Para abordar este punto, se desarrolló un programa en MATLAB que permite la
conversión de tres números en base 10 a cualquier base seleccionada por el usuario, en
el rango de 2 a 15.

Punto b. Cálculo de la Suma y Presentación de Resultados


El programa verifica las entradas del usuario, realiza las conversiones necesarias y
presenta los resultados, incluyendo el nombre de la base, los símbolos empleados en
dicha base, los tres números convertidos y la suma de ellos.
Punto c. Funciones Definidas
Se definieron dos funciones clave:
 NombreYSimbolos: Recibe la base como entrada y devuelve el nombre de la
base y los símbolos empleados en esa base.
 BaseYSumar: Recibe tres números en base 10 y la base a la que se deben
convertir. Calcula la suma de los tres números convertidos.

Punto d. Interfaz Gráfica de Usuario


Se implementó una interfaz gráfica de usuario utilizando las funciones inputdlg y
msgbox de MATLAB. Esto permite una interacción amigable con el usuario para
ingresar datos y visualizar resultados.

% Punto d. Interfaz Gráfica de Usuario


function InterfazGrafica()
% Solicitar entrada al usuario a través de una GUI
prompt = {'Primer número en base 10:', 'Segundo número en base 10:',
'Tercer número en base 10:', 'Base a convertir (2-15):'};
dlgtitle = 'Entrada de datos';
dims = [1 50];
definput = {'', '', '', ''};
userInput = inputdlg(prompt, dlgtitle, dims, definput);

% Verificar si el usuario hizo clic en "Cancelar" o cerró la ventana


if isempty(userInput)
msgbox('Operación cancelada por el usuario.', 'Advertencia', 'warn');
return;
end

% Convertir las entradas de cadena a números


N1 = str2double(userInput{1});
N2 = str2double(userInput{2});
N3 = str2double(userInput{3});
baseConv = str2double(userInput{4});

% Verificar la validez de las entradas


if any(isnan([N1, N2, N3, baseConv])) || ~(2 <= baseConv && baseConv <=
15)
msgbox('Por favor, ingrese números válidos y una base entre 2 y 15.',
'Error', 'error');
return;
end

% Llamar a las funciones existentes con las entradas del usuario


[nombreBase, simbolosBase] = NombreYSimbolos(baseConv);
[RN1, RN2, RN3, suma] = BaseYSumar(N1, N2, N3, baseConv);

% Mostrar los resultados en una GUI


resultadoMsg = sprintf(['Nombre de la base: %s\n', ...
'Símbolos empleados en la base: %s\n', ...
'Resultado para el primer número: %s\n', ...
'Resultado para el segundo número: %s\n', ...
'Resultado para el tercer número: %s\n', ...
'Suma de los tres números convertidos: %s'],
nombreBase, simbolosBase, RN1, RN2, RN3, suma);
msgbox(resultadoMsg, 'Resultados', 'help');
end

Punto e. Explicación Mediante Video


Se creó un video explicativo de no más de 5 minutos. El video detalla el desarrollo del
algoritmo, la implementación de la interfaz y muestra la ejecución de la actividad.
Punto f. Inclusión de Códigos en el Informe
Los códigos desarrollados en MATLAB se incluyen en el informe para una revisión
detallada.

function InterfazGrafica()

% Solicitar entrada al usuario a través de una GUI

prompt = {'Primer número en base 10:', 'Segundo número en base 10:',


'Tercer número en base 10:', 'Base a convertir (2-15):'};
dlgtitle = 'Entrada de datos';
dims = [1 50];
definput = {'', '', '', ''};
userInput = inputdlg(prompt, dlgtitle, dims, definput);

% Verificar si el usuario hizo clic en "Cancelar" o cerró la ventana


if isempty(userInput)
msgbox('Operación cancelada por el usuario.', 'Advertencia', 'warn');
return;
end

% Convertir las entradas de cadena a números


N1 = str2double(userInput{1});
N2 = str2double(userInput{2});
N3 = str2double(userInput{3});
baseConv = str2double(userInput{4});

% Verificar la validez de las entradas


if any(isnan([N1, N2, N3, baseConv])) || ~(2 <= baseConv && baseConv <=
15)
msgbox('Por favor, ingrese números válidos y una base entre 2 y 15.',
'Error', 'error');
return;
end

% Llamar a las funciones existentes con las entradas del usuario


[nombreBase, simbolosBase] = NombreYSimbolos(baseConv);
[RN1, RN2, RN3, suma] = BaseYSumar(N1, N2, N3, baseConv);

% Mostrar los resultados en una GUI


resultadoMsg = sprintf(['Nombre de la base: %s\n', ...
'Símbolos empleados en la base: %s\n', ...
'Resultado para el primer número: %s\n', ...
'Resultado para el segundo número: %s\n', ...
'Resultado para el tercer número: %s\n', ...
'Suma de los tres números convertidos: %s'],
nombreBase, simbolosBase, RN1, RN2, RN3, suma);
msgbox(resultadoMsg, 'Resultados', 'help');
end

function [nombreBase, simbolosBase] = NombreYSimbolos(base)


if ~(2 <= base && base <= 15)
fprintf('La base debe estar en el rango de 2 a 15.\n');
nombreBase = '';
simbolosBase = '';
return;
end

nombresBases = {'Binaria', 'Ternaria', 'Cuaternaria', 'Quinaria',


'Senaria', 'Septenaria', 'Octal', 'Novenaria', 'Decimal', 'Undecimal',
'Duodecimal', 'Tridecimal', 'Tetradecimal', 'Pentadecimal'};
simbolosBases = '0123456789ABCDE';

nombreBase = nombresBases{base - 1};


simbolosBase = simbolosBases(1:base);
end

function [RN1, RN2, RN3, suma] = BaseYSumar(N1, N2, N3, base)


RN1 = DecimalToBase(N1, base);
RN2 = DecimalToBase(N2, base);
RN3 = DecimalToBase(N3, base);

suma = DecimalToBase(N1 + N2 + N3, base);


end

function resultado = DecimalToBase(numero, base)


if ~(2 <= base && base <= 15)
fprintf('La base debe estar en el rango de 2 a 15.\n');
resultado = '';
return;
end

simbolosBase = '0123456789ABCDE';
cociente = fix(numero);
resultado = '';

while cociente > 0


residuo = mod(cociente, base);
cociente = floor(cociente / base);
resultado = [simbolosBase(residuo + 1), resultado];
end
end
Referencias Bibliográficas

Mircea Ancău, A. (2019). Practical Optimization with MATLAB. Cambridge Scholars


Publishing. (Pp. 12-
14). https://bibliotecavirtual.unad.edu.co/login?url=https://search.ebscohost.com/login.a
spx?direct=true&db=nlebk&AN=2270852&lang=es&site=eds-
live&scope=site&ebv=EB&ppid=pp_12
Rizal Adimayuda, W Srigutomo, L Sari, Irma Fitria Amalia, & N Guspita.
(2021). Application of GUI Matlab in physics: Planetary motion (Kepler’s Law).
Journal of Physics: Conference Series, 1987, 012045. (Pp. 2-5).
https://bibliotecavirtual.unad.edu.co/login?url=https://search.ebscohost.com/login.aspx?
direct=true&db=edsair&AN=edsair.doi...........2488825ed24c0f0fc13b19bb8245f438&la
ng=es&site=eds-live&scope=site
Michael Weeks. (2020). Programming Fundamentals Using MATLAB. Mercury
Learning & Information. (Pp. 291-300).
https://bibliotecavirtual.unad.edu.co/login?url=https://search.ebscohost.com/login.aspx?
direct=true&db=e000xww&AN=2681807&lang=es&site=eds-
live&scope=site&ebv=EB&ppid=pp_291

También podría gustarte