?? calculate.m
字號:
function answer=calculate(Number1,Number2,opvalue)
switch (opvalue)
case '+'
answer=Number1+Number2;%加法
case '-'
answer=Number1-Number2;%減法
case '*'
answer=Number1*Number2;%乘法
case '/'
answer=Number1/Number2;%除法
case '^'
answer=Number1^Number2;%求冪次
case 'log'
answer=log(Number1)/log(Number2); %取對數
otherwise
end
% --- 開啟鍵盤
function btnStart_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsStart;% --- 開啟鍵
global IsNew;% --- 操作數新得開始
Number1='';
Number2='';
opvalue = '';
IsNew='true';
IsStart='true';
set(handles.editDisplay,'string','0');
% --- 清除全部按鍵響應
function btnClearAll_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
Number1='';
Number2='';
opvalue = '';
IsNew='true';
set(handles.editDisplay,'string','0');
end
% --- 按鍵清屏響應
function btnClear_Callback(hObject, eventdata, handles)
global Number2;% --- 操作數2
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
Number2='';
IsNew='true';
set(handles.editDisplay,'string','0');
end
% --- 回退字符響應
function btnBack_Callback(hObject, eventdata, handles)
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
temp=get(handles.editDisplay,'String');
if strcmp(temp,'0')~=1
if(max(size(temp))==1)
set(handles.editDisplay,'String',0);
IsNew='true';
else
set(handles.editDisplay,'String',temp(1:end-1));
end
else
set(handles.editDisplay,'String',0);
IsNew='false';
end
end
% --- 按鍵0響應
function btn0_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
temp=get(handles.editDisplay,'String');
if strcmp(temp,'0')~=1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','0');
IsNew='false';
else
num=strcat(get(handles.editDisplay,'String'),'0');
set(handles.editDisplay,'String',num);
end
end
end
% --- 按鍵1響應
function btn1_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','1');
IsNew=0;
else
num=strcat(get(handles.editDisplay,'String'),'1');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵2響應
function btn2_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','2');
IsNew='false',;
else
num=strcat(get(handles.editDisplay,'String'),'2');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵4響應
function btn4_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','4');
IsNew='false',;
else
num=strcat(get(handles.editDisplay,'String'),'4');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵5響應
function btn5_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','5');
IsNew='false',;
else
num=strcat(get(handles.editDisplay,'String'),'5');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵6響應
function btn6_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','6');
IsNew='false',;
else
num=strcat(get(handles.editDisplay,'String'),'6');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵3響應
function btn3_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','3');
IsNew='false',;
else
num=strcat(get(handles.editDisplay,'String'),'3');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵7響應
function btn7_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','7');
IsNew='false',;
else
num=strcat(get(handles.editDisplay,'String'),'7');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵8響應
function btn8_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','8');
IsNew='false',;
else
num=strcat(get(handles.editDisplay,'String'),'8');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵9響應
function btn9_Callback(hObject, eventdata, handles)
global IsNew;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(IsNew,'true')==1
set(handles.editDisplay,'String','9');
IsNew='false',;
else
num=strcat(get(handles.editDisplay,'String'),'9');
set(handles.editDisplay,'String',num);
end
end
% --- 按鍵+響應
function btnAdd_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(Number1,'')~=1
Number2=str2num(get(handles.editDisplay,'String'));
Number1=calculate(Number1,Number2,opvalue);
set(handles.editDisplay,'String',num2str(Number1));
opvalue='+';
Number2='';
else
opvalue='+';
Number1=str2num(get(handles.editDisplay,'String'));
end
IsNew='true';
end
% --- 按鍵-響應
function btnMinus_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(Number1,'')~=1
Number2=str2num(get(handles.editDisplay,'String'));
Number1=calculate(Number1,Number2,opvalue);
set(handles.editDisplay,'String',num2str(Number1));
opvalue='-';
Number2='';
else
opvalue='-';
Number1=str2num(get(handles.editDisplay,'String'));
end
IsNew='true';
end
% --- 按鍵×響應
function btnMul_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(Number1,'')~=1
Number2=str2num(get(handles.editDisplay,'String'));
Number1=calculate(Number1,Number2,opvalue);
set(handles.editDisplay,'String',num2str(Number1));
opvalue='*';
Number2='';
else
opvalue='*';
Number1=str2num(get(handles.editDisplay,'String'));
end
IsNew='true';
end
% --- 按鍵/響應
function btnDiv_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(Number1,'')~=1
Number2=str2num(get(handles.editDisplay,'String'));
Number1=calculate(Number1,Number2,opvalue);
set(handles.editDisplay,'String',num2str(Number1));
opvalue='/';
Number2='';
else
opvalue='/';
Number1=str2num(get(handles.editDisplay,'String'));
end
IsNew='true';
end
% --- 按鍵開方響應
function btnSqrt_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
temp=str2num(get(handles.editDisplay,'String'));
if temp~=0
sqrt(temp)
set(handles.editDisplay,'String',num2str( sqrt(temp)));
Number1='';
Number2='';
end
IsNew='true';
end
% --- 按鍵求冪響應
function btnPow_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(Number1,'')~=1
Number2=str2num(get(handles.editDisplay,'String'));
Number1=calculate(Number1,Number2,opvalue);
set(handles.editDisplay,'String',num2str(Number1));
opvalue='^';
Number2='';
else
opvalue='^';
Number1=str2num(get(handles.editDisplay,'String'));
end
IsNew='true';
end
% --- 按鍵Log響應,取對數
function btnLog_Callback(hObject, eventdata, handles)
global Number1;% --- 操作數1
global Number2;% --- 操作數2
global opvalue;% --- 運算符
global IsNew;% --- 操作數新得開始
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(Number1,'')~=1
Number2=str2num(get(handles.editDisplay,'String'));
Number1=calculate(Number1,Number2,opvalue);
set(handles.editDisplay,'String',num2str(Number1));
opvalue='log';
Number2='';
else
opvalue='log';
Number1=str2num(get(handles.editDisplay,'String'));
end
IsNew='true';
end
% --- 按鍵=響應
function btnEqual_Callback(hObject, eventdata, handles)
global Number1;
global Number2;
global opvalue;
global IsStart;
if strcmp(IsStart,'true')==1
if strcmp(Number1,'')~=1
Number2=str2num(get(handles.editDisplay,'String'));
Number1=calculate(Number1,Number2,opvalue);
set(handles.editDisplay,'String',num2str(Number1));
Number1='';
Number2='';
IsNew='true';
end
end
% --- 按鍵 +/-(數字) 響應
function btnSign_Callback(hObject, eventdata, handles)
global IsStart;
if strcmp(IsStart,'true')==1
temp=get(handles.editDisplay,'String');
if temp(1:1)=='-'
temp=temp(2:end)
set(handles.editDisplay,'String',temp);
else
temp=0-str2num(temp);
set(handles.editDisplay,'String',temp);
end
end
% --- 按鍵 .(小數點) 響應
function btnDot_Callback(hObject, eventdata, handles)
global IsStart;
if strcmp(IsStart,'true')==1
temp=get(handles.editDisplay,'String');
if find(temp=='.')>0
;
else
temp=strcat(temp,'.');
set(handles.editDisplay,'String',temp);
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -