Pages

2011年3月22日 星期二

[Java] 我寫的Java輸出輸入函式整合Class (將持續更新並修改)

由於JAVA的input跟output跟我之前學的C很不一樣,再加上我學習速度緩慢,到現在JAVA的輸入都還不熟,因此寫下一個Package,直接將所有input、output相關功能整理成為我習慣的使用方式,並包成一個class。

之後只要在程式上方import UncleIo.*,就可以有許多好用的輸出入方式。

目前所有的IO只有以下所列的兩三個,之後會陸續增加,我還在初學Java,有錯誤請多多指導:

//This file was written by Uncle
//This is a code to collect all usefull IO implement of JAVA.
//This code was created by Uncle on 2011/03/22
//Last Updated on 2011/03/22

package UncleIo;
import java.io.*;
import UncleIo.UncleIo;
public class UncleIo
{
public static void main(String s[]) throws IOException
{
//test area

UncleIo uncle = new UncleIo();
uncle.UnclePrintf("Please enter a string:");
String haha = uncle.UncleReadString();
uncle.UnclePrintf("\n%s\n",haha);
uncle.UnclePrintf("Please enter an Integer:");
int h = uncle.UncleGetInt();
uncle.UnclePrintf("%d\n",h);
uncle.UnclePrintf("ByeBye\n");
//UnclePrintf("Please enter a string:");

}
UncleIo()
{

}
void UnclePrintf(String format, Object...thing)
{
System.out.printf(format,thing);
}
int UncleGetInt() throws IOException
{
InputStreamReader inputSR = new InputStreamReader(System.in);
BufferedReader bufR = new BufferedReader(inputSR);
return Integer.parseInt(bufR.readLine());
}

String UncleReadString() throws IOException
{
BufferedReader tmp = new BufferedReader(new InputStreamReader(System.in));
String str = tmp.readLine();
return str;
}
}

新增Win7 開始功能表的"執行"選項

以下記錄如何新增開始功能表的"執行"選項:
點選開始按鈕右鍵->內容,在[開始]功能表頁籤內點選"自訂"按鈕。

把"執行命令"選項打勾。
按確定後回到開始功能表就可以看到"執行"選項。

[Java] 函式宣告,型態後面接點點點:"..."

以下是我簡單的記錄:

void fun(Object...p)
{
//函式內容。
}

Object後面的點點點"..."代表可以使用函式時可傳入很多Object,也可以不傳任何參數。

[Java] try catch finally

天氣冷了,必須要多寫程式,保持溫暖。

以下記錄Java中try、catch語法:

try {
//做一些事情,在特殊情況下也許會出現例外錯誤。
}
catch(Exception wrong)
{
//發生例外錯誤時要做的事。
}//可以有很多catch,程式碼由上往下掃,一catch到就先執行。
finally
{
//沒有例外錯誤,也會執行的程式碼。
}

----------------------------------------------------------
例外(Exception)有很多種,但是這些例外都繼承自Exception,所以大部分可直接使用Exception型態來catch錯誤情況。

2011年3月13日 星期日

[Java] C有scanf,Java的輸入要使用什麼?

以下整理我學到的Java中由鍵盤給資料到程式的方式:

(1)Scanner:
需import java.util.Scanner;
注意預設是以空白鍵來切出token,使用方式:

Scanner input = new Scanner(System.in);
float f = input.nextFloat();
其他還有nextInt、nextDouble。

如果是input.next()的話就是讀取string類別。

(2)不想讓輸入的字串被空白鍵切開,就使用BufferedReader讀一整行:
需import java.io.*

BufferedReader tmp = new BufferedReader(new InputStreamReader(System.in));
string str = tmp.readLine();


// by Uncle

[通訊] 頻譜及相位的模擬

用Matlab模擬頻譜及相位時,可依照以下步驟:
(1)確定時域觀察區間。
(2)由時域觀察區間得取樣點數。
(3)依據取樣點數規劃頻譜橫軸的刻度。

以下matlab程式碼,可以觀察sinc函數的頻譜及相位:
-----------------------------------------------
%%This code was written by Uncle.
%%This code can perform DFT operation, and observe the phase spectrum of the signal.
fs = 250;
T = (1/200);
dt = (1/fs);
t = [-5:dt:5]; %觀察區間在-5~+5之間。
x_t = sinc(t/T);

N = length(x_t); %或者N = length(t)也可以。

F_t = fft(x_t,N)*dt;
F_t = fftshift(F_t);

df = fs/(N-1);
f = [0:df:fs] - fs/2;

p_f = angle(F_t); %還沒取abs之前就要先取相位。

subplot(2,1,1)
plot(f,abs(F_t))
subplot(2,1,2)
plot(f,p_f)
%end

----------------------------------------------

2011年3月12日 星期六

[組語] 在Visual Studio 2010 設定組語撰寫環境

1. 在安裝MASM 32之前,防毒系統一定要先關閉,如此可以保證完整安裝,因為有些防毒系統會將MASM當成木馬,造成安裝失敗。

安裝MASM的畫面:


2. 安裝Irvine,預設解壓縮路徑可以設為C:\Irvine

3. 安裝完MASM跟Irvine之後,接下來就是Visual Studio 2010內一些組態設定:

(1)新增一個空專案。
(2)先點選方案總管下剛剛新增的專案,並點選專案->組建自訂。將masm勾選。
(3)在方案總管下專案的原始程式檔那邊,新增一個C++程式碼。並將副檔名設為.asm。
(4)在專案總管下點選專案名稱,點選專案->屬性,選擇左側VC++目錄,在右邊的include目錄新增MASM 32的nclude目錄。並且在程式庫目錄新增MASM 32的lib目錄。例如安裝在C:\masm32,則新增Include目錄C:\masm32\include;$(IncludePath),以及新增程式庫目錄C:\masm32\lib;$(LibraryPath)。

Irvine是提供連結的函式庫。

(5)先點選方案總管的專案名稱右鍵開啟屬性,將組態屬性->連結器->系統裡,右邊的子系統設定為主控台(方便組語程式輸出結果在console視窗)。將連結器->一般內,右邊的其他程式庫目錄新增剛才解壓Irvine的路徑(如此連結器就知道要去哪裡找程式庫了)。
連結器->輸入內,其他相依性增加Irvine32.lib。並且在Microsoft Macro Assembler->General內,右邊Include Path新增剛才解壓Irvine的路徑。並在Microsoft Macro Assembler->Object File內,右邊的Object File Name路徑複製後貼到Microsoft Macro Assembler->Listing File內右邊Assembled Code Listing File,將副檔名改為lst。

設定完成後,就可以開始寫組語程式了。建置後點選啟動但不偵錯即可執行。

有關Macro這個字,我查了一下,是"指令組"的意思。