miércoles, 5 de marzo de 2014

Conversor de temperaturas







Esta interfaz gráfica permite obtener la conversión entre cuatro de las escalas de temperatura más usuales (Celsius, Kelvin, Farenheit, Rankine). Para ello debe introducir un valor en uno de los campos de texto y pulsar el botón Convertir. Si se introducen datos en más de un campo el programa establece un orden preferencial dado por la sentencia de control if-elseif que comienza en la línea 46.

Hasta la línea 38 se crean todos los elementos gráficos que componen la GUI, estableciendo las características y ubicación en la ventana para cada uno. La función convertir está asociada al callback del Push Button Convertir; en las primeras cuatro líneas de código de la función anterior (41-44)  se lee mediante la propiedad String, el valor que se ha introducido en cada uno de los Edit Text, nótese que se hace referencia a los campos editables utilizando el handle obtenido previamente. La sentencia de control if-elseif tiene como función verificar el campo de texto en el cual se ha introducido un dato, comenzando de arriba hacia abajo, es decir que si todos los campos están rellenos el programa tomará el valor introducido en los grados centígrados.


1
function converTemperatura
2
% Conversor de temperatura
3
% Última modificación: 03/01/14
4
% Jorge De Los Santos
5
% delossantosmfq@gmail.com && matlabtyp@gmail.com
6
% Blog: http://matlab-typ.blogspot.com
7

8
fcolor=[0.92 0.92 0.92];
9
figure('NumberTitle','off','MenuBar','none','color',fcolor,...
10
    'Name','Conversor de Temperatura','position',[200 200 150 200],...
11
    'resize','off');
12
centerfig(gcf);
13

14
% Grados Celsius
15
uicontrol('Style','text','String','°C','Position',[110 170 20 20],...
16
    'BackgroundColor',fcolor,'FontSize',10,'FontWeight','b');
17
gC=uicontrol('Style','edit','String','','Position',[20 170 80 20]);
18

19
% Grados Kelvin
20
uicontrol('Style','text','String','K','Position',[110 135 20 20],...
21
    'BackgroundColor',fcolor,'FontSize',10,'FontWeight','b');
22
gK=uicontrol('Style','edit','String','','Position',[20 135 80 20]);
23

24
% Grados Fahrenheit
25
uicontrol('Style','text','String','°F','Position',[110 100 20 20],...
26
    'BackgroundColor',fcolor,'FontSize',10,'FontWeight','b');
27
gF=uicontrol('Style','edit','String','','Position',[20 100 80 20]);
28

29
% Grados Rankine
30
uicontrol('Style','text','String','R','Position',[110 65 20 20],...
31
    'BackgroundColor',fcolor,'FontSize',10,'FontWeight','b');
32
gR=uicontrol('Style','edit','String','','Position',[20 65 80 20]);
33

34
uicontrol('Style','Pushbutton','String','Convertir','FontSize',9,...
35
    'FontWeight','b','Position',[10 20 70 25],'callback',@convertir);
36

37
uicontrol('Style','Pushbutton','String','Borrar','FontSize',9,...
38
    'FontWeight','b','Position',[90 20 50 25],'callback',@borrar);
39

40
    function convertir(src,event)
41
        C=get(gC,'String');
42
        K=get(gK,'String');
43
        F=get(gF,'String');
44
        R=get(gR,'String');
45
       
46
        if ~strcmp(C,'')
47
            C=str2double(C);
48
            K=C+273.15;
49
            F=(9/5)*C+32;
50
            R=(C+273.15)*(9/5);
51
        elseif ~strcmp(K,'')
52
            K=str2double(K);
53
            C=K-273.15;
54
            F=(9/5)*K-459.67;
55
            R=(9/5)*K;
56
        elseif ~strcmp(F,'')
57
            F=str2double(F);
58
            C=(F-32)*(5/9);
59
            K=(F+459.67)*(5/9);
60
            R=F+459.67;
61
        elseif ~strcmp(R,'')
62
            R=str2double(R);
63
            C=(R-491.67)*(5/9);
64
            K=(5/9)*R;
65
            F=R-459.67;
66
        else
67
            warndlg('Inserte un valor en al menos un campo','Error');
68
        end
69
       
70
        set(gC,'String',num2str(C));
71
        set(gK,'String',num2str(K));
72
        set(gF,'String',num2str(F));
73
        set(gR,'String',num2str(R));
74
    end
75

76
    function borrar(src,event)
77
        set(findobj('style','edit'),'str','');
78
    end
79
end

1 comentario: