A. java實驗報告
實驗1
Java開發工具及程序設計初步
實驗目的
能夠搭建Java的開發環境
熟悉常用的JDK操作命令的使用
熟悉Java程序的編寫和編譯過程
了解常用Java開發工具的使用
實驗內容
實驗練習1:搭建和使用JDK
1.JDK的下載和安裝
JDK是SUN公司免費在網上發布的,我們可以進入SUN公司的網站(http://java.sun.com)下載並安裝。JDK安裝完成後,進行如下操作:
(1)查看並寫出JDK的安裝目錄______________________________;
(2)查看主目錄bin文件夾中常用的JDK命令文件,寫出java、javac等JDK命令所在的文件目錄_________________________________;
(3)在Windows中打開一個命令行窗口,打開命令行窗口的方法有兩種:
•選擇「開始」→「所有程序」→「附件」→「命令提示符」
•選擇「開始」→「運行…」命令,在打開的「運行」窗口中輸入「cmd」命令並「確定」。
(4)在打開的命令行窗口中,分別執行java和javac命令,如:C:\>java
查看執行結果,看是否輸出如下的java命令的幫助信息(如圖1-1所示)。
圖1-1:java命令的幫助信息
C:\>javac
查看執行結果,看是否輸出如下的javac命令的幫助信息(如圖1-2所示)。
圖1-2:javac命令的幫助信息
如果上面的信息均能輸出,說明JDK的安裝成功,基本上可正常使用。
2.操作系統環境變數的使用
操作系統的環境變數是在操作系統中定義的變數,可被該操作系統上運行的程序訪問。JDK中主要有兩個相關的操作系統環境變數,即path和classpath。
(1)查看操作系統環境變數
•在命令行窗口中執行set命令
如:C:\>set
查看set命令的輸出結果,在set命令的輸出結果中可看到許多等式,其中等號的左邊是環境變數的名稱,等號的右邊是環境變數的取值。
命令:set
<環境變數名>,可查看指定的某個環境變數的設置情況。
執行命令:C:\>set
path,查看path變數的設置情況。
•在「環境變數」窗口中查看環境變數
用滑鼠右鍵單擊「我的電腦」,選擇「屬性」命令,在打開的「系統屬性」對話框中選擇「高級」→「環境變數」,打開「環境變數」窗口。
在「環境變數」窗口中,有用戶變數和系統變數兩種環境變數。其中,用戶環境變數只對某個用戶起作用;系統環境變數對該系統上的所有用戶都有效。
當我們以某一用戶身份登錄Windows時,它所使用的變數是系統變數和用戶變數的總和。
如果一個變數在系統變數窗口和用戶變數窗口都進行了設置,那麼這個變數的取值在一般情況下為系統變數的取值與用戶變數的取值相加;但有時也會出現用戶變數的取值覆蓋系統變數取值的情況。不管是什麼情況,最終都以在命令行窗口中通過set命令查看到的結果為准。
(2)設置系統的環境變數
•在命令窗口中執行set命令
格式:set
變數名=[變數值]
執行如下命令,查看執行結果。
C:\>set
Xx=aa
//新建一個環境變數並設置其取值
C:\>set
Xx
//查看該環境變數
C:\>set
Xx=
//取消環境變數的設置
C:\>set
//查看環境變數
注意:在命令行窗口中設置的環境變數,只在該命令行窗口中起作用。
•在「環境變數」窗口中進行設置
可使用「新建」或「編輯」按鈕。
注意:①
在「環境變數」窗口中設置的環境變數對以後所有的應用程序和命令行窗口都起作用,但不會影響原來運行的應用程序和啟動的命令行窗口。
②
在「用戶環境變數」窗口中進行的設置需要在注銷重新登錄後才起作用。
(3)path環境變數的作用和設置
環境變數path的值指定了JDK命令搜索路徑,即當我們要執行某個命令時,操作系統首先會在當前目錄下查找這個命令,如果當前目錄下沒有這個命令程序,操作系統會沿著path環境變數中所指定的目錄依次去查找這個命令文件,並以最先找到的為准。
觀察path變數的取值情況,path變數可以有多個取值,每個值代表一條搜索路徑,它們之間用「;」分隔。
在命令行窗口中執行如下命令:
C:\>set
path
//查看path環境變數
C:\>set
path=
或set
path=C:\
//取消path變數的設置或重新設置path的值
C:\>set
path
C:\>java
或javac
//執行java或javac命令
會出現如下錯誤信息(如圖1-3所示):
圖1-3:錯誤信息
分析錯誤的原因:_____________________________________________________
改正的方法:__________________________________
實驗練習2:Java程序的編寫與編譯過程
1.一個簡單的Java程序的編寫與編譯
第一步:先在磁碟上創建保存程序文件的目錄(文件夾),如:D:\javawork\lesson1。
第二步:在「記事本」中創建並編輯Java源程序文件Test1.java,程序代碼如下:
class
Test1
{
}
保存文件,擴展名為.java。
第三步:在命令行窗口中,對源文件Test1.java進行編譯。
可參考如下命令:
如果當前盤當前目錄為C:\,先將當前目錄設置為D:\javawork\lesson1。
C:\>d:
D:\>cd
ja*w*
D:\javawork>cd
le*
D:\javawork\lesson1>javac
Test1.java
如果編譯成功,則不出現任何提示,回到命令提示符狀態下。打開保存源文件的文件夾,查看編譯生成的位元組碼文件Test1.class。
第四步:運行位元組碼文件Test1.class。
D:\javawork\lesson1>java
Test1
執行結果出現異常,如圖1-4所示。
圖1-4:執行出現異常
出現異常的原因是:缺少執行應用程序的入口main方法。main方法的聲明必須是public
static
void
main(String
args[]){}。修改源程序代碼並重新編譯,源程序代碼如下:
class
Test1
{
public
static
void
main(String
args[])
{
}
}
編譯完成後,執行位元組碼文件。
在main方法中,添加輸出的語句並重新編譯執行,程序代碼如下:
class
Test1
{
public
static
void
main(String
args[])
{
System.out.println("Hello
World!");
}
}
輸出結果如圖1-5所示。
圖1-5:程序執行結果
2.classpath環境變數的作用與設置
環境變數calsspath用於指定Java類的路徑,即設置classpath的作用是告訴Java運行系統的類載入器到哪裡去尋找要執行的類。
在前面打開的命令行窗口中繼續執行以下命令:
D:\>java
Test1
執行結果如圖1-6所示:
圖1-6:改變當前目錄後重新執行的結果
會發現程序執行出現異常:無法找到Test1類。說明在classpath變數中沒有將Test1.class文件所在的目錄設置為搜索路徑,在命令行窗口中執行命令:
D:\>set
classpath=%classpath%;d:\javawork\lesson1
重新執行程序,則運行結果正常。
調試練習
本節中的程序Test2.java不能正確地編譯,修改所有的語法錯誤,使程序能夠成功編譯。程序編譯之後,執行程序,比較輸出結果與示例輸出,然後排除所有可能的邏輯錯誤,示例輸出演示了代碼更正後程序的正確輸出結果。
1.示例輸出
2.錯誤的代碼
//Test2.java
import
javax.swing.JOptionPane;
public
class
test2
{
public
static
void
main(string
args[])
{
JOptionPane.showMessageDialog(null,"Hello")
}
}
B. c程序的運行環境和運行一個c程序的方法實驗報告書
實驗目的 (1)了解所用的計算機系統的基礎操作方法,學會獨立使用該系統。 (2)了解在該系統上如何編輯、編譯、連接和運行一個C程序。 (3)通過運行簡單的C程序,初步了解C源程序的特點。 二、實驗內容 1.檢查所用的計算機系統是否已安裝了C編譯系統並確定它所在的子目錄。如果是在Windows操作系統下使用Turbo C編譯器,可以按以下步驟進行操作: ①單擊Windows桌面上的「開始」按鈕,在菜單中單擊「查找(F)」,在其右面的下拉菜單中單擊「文件或文件夾(F)」。屏幕上出現「查找」窗口。 ②在「名稱」框中輸入文件名「tc.exe」,單擊「開始查找」按鈕,系統即自動在指定的范圍內尋找所需要文件,如果找到,就會顯示出文件路徑(例如:C:\lib\tc或c:\tc)。 ③注意:在「搜索」框中應說明搜索范圍,如使「搜索」欄中的內容為「C:\」,表示從根目錄開始尋找,即搜索整個C盤。 2.建立用戶自己的子目錄 ①利用「Windows資源管理器」在磁碟(如D盤)上建立自已的文件夾。 ②利用DOS命令md在磁碟上建立自己的子目錄。 3.進入TC工作環境 第一種方法; ①單擊桌面上的「開始」按鈕,從菜單中選擇「程序」,單擊它然後在其下拉菜單中選擇「MS-DOS」,屏幕上出現MS-DOS窗口。 ②用DOS命令cd,使當前目錄改變為tc.exe所在的子目錄(例如:C:\lib\tc)。 ③在tc的子目錄下輸入tc,按回車鍵進入tc的工作環境。 第二種方法: 用滑鼠雙擊「我的電腦」圖標,進入C盤根目錄,在C盤根目錄下找到tc.exe文件所在的文件夾(如C盤下的lib文件夾下的tc文件夾),在文件夾中找到tc.exe文件,雙擊滑鼠進入TC的工作環境。 4.熟悉Turbo C集成環境 ①了解和熟悉編輯(Edit)窗口和信息(Message)窗口的作用。試一下能否向信息窗口輸入程序。按功能鍵F5,觀察它有什麼作用,再按一次F5,再觀察它有什麼作用。按F6,觀察它有什麼作用;再按一次F6,再觀察它有什麼作用。(參見第一部分的1.1節) ②按功能鍵F10,並按回車鍵,觀察「File」菜單,了解它們的作用和方法。用鍵盤上的「→」鍵,分別選中Edit、Run、Compile、Project、Options、Debug、Break/watch,觀察它們的菜單,大致上了解它們的作用,以後用到時再深入了解。 ③選擇File菜單中的New並按回車鍵,在編輯窗口中隨意輸入幾行字元,觀察窗口頂部左端line和col後面數字的變化。 5.編輯並運行一個簡單的程序 ①再選擇File菜單中的New並按回車鍵,使編輯窗口變成空白。 ②輸入下面的程序 main( ) { printf("* * * * *\n"); printf(" Hello.\n"); printf("* * * * *\n"); } ③按功能鍵F9進行編譯和連接,觀察屏幕上顯示的編譯信息。如果出現「出錯信息」,則應找出原因並改正之,再進行編譯。 ④如果編譯無錯誤,按Ctrl和F9鍵使程序運行,按Alt和F5鍵,切換到用戶屏,觀察運行結果。 ⑤按任一鍵回到TC窗口,將程序命令為ex1.c保存在自已的子目錄下。(參見第一部分1.2節的內容) 6.編輯並運行另一個C程序 ①再選擇File→New,使編輯窗口變成空白。 ②輸入以下程序 main( ) { int a,b,sum; a=150;b=200; sum=a+b; printf("sum is %d\n",sum); } ③按F9進行編譯,仔細分析編譯信息窗口和Message窗口,可能顯示有多個錯誤,逐個修改,直到不出現錯誤。 ④運行程序,分析運行結果。 ⑤將程序命名為ex2.c,保存到自己所建的子目錄下。 7.編輯並運行一個需要在運行時輸入數據的程序 ①清空編輯窗口,輸入下面的程序。 main( ) { int a,b, max; scanf("%d%d",&a,&b); if(a>b) max=a; else max=b; printf("%d",max); } ②編輯並運行,注意按Ctrl和F9運行後,先從鍵盤輸入整數2和5,然後按回車鍵,再按Alt和F5鍵,觀察運行結果。 ③將程序中的第3行改為: int a;b;max; 再進行編譯,觀察其結果。 ④將程序第5、6兩行合並為一行,即 if(a>b) max=a ; else max=b ; 進行編譯和運行,分析結果。 將程序命名為ex3.c保存在用戶自己的子目錄下。
麻煩採納,謝謝!
C. 編譯原理實驗報告
#include<stdio.h>
void main()
{
int m=0,n=0,n1=0,n2=0,n3=0,zg,fzg,flag;
int bz[7]=;/*狀態改變控制,1 表示可以改變狀態zt值,0 表示不可以*/
int zt[7]=;/*狀態值,2表示未定狀態,1表示 是,0表示 否*/
char temp[100]="\0";/*用於求first集*/
char z[7];/*非總結符*/
char z1[7];/*總結符*/
char z2[7]="\0";/*gs[]文法中出現的標記個數的輔助字元 01234*/
char gs[100]="\0";/*文法,按順序排成字元串*/
printf("請依次輸入非終結符(不超過7個):");
gets(z);
while(z[m]!='\0')
fzg=m;//zg是非終結符個數
while(n<m)
//生成01234輔助字元
printf("您輸入了:");
puts(z);
fflush(stdin);
printf("請依次輸入終結符(不超過7個):");
gets(z1);
while(z1[n1]!='\0')
zg=n1;
printf("您輸入了:");
puts(z1);
fflush(stdin);
printf("按照正確格式輸入所有文法(總長度不超過100格式如下):");
printf("如果文法為(字元'k'表示空):\n");
printf("S-->AB S-->bC A-->k A-->b\n");
printf("輸入:0SAB0SbC1Ak1Ab\n");
printf(" (注:數字01234表示第一二三四個非終結符)\n");
gets(gs);
fflush(stdin);
printf("您輸入了:");
puts(gs);
m=0;
//對於輸入文法字元串的轉換,將每個文法式左部去除
while(gs[m]!='\0')
{
n=m;
if(gs[m]>='0'&&gs[m]<='9')
{
m++;
while(gs[m]!='\0')
{
gs[m]=gs[m+1];
m++;
}
//gs[m-1]='\0';
}
m=++n;
}
m=0;
//puts(gs);
/*情況一,直接判定是 形如: (A-->k) */
while(gs[m]!='\0')
{
if(gs[m]=='k')
{
zt[gs[m-1]-48]=1;
bz[gs[m-1]-48]=0;
}
m++;
}
/*情況二,直接判定--否 形如: (D-->aS ,D-->c) */
for(n=0;n<fzg;n++)
{
if(bz[n]==1)
{
m=0;
n2=0;
while(gs[m]!='\0')
{
if(z2[n]==gs[m])
{
if(gs[m+1]>=z1[0]&&gs[m+1]<=z1[n1-1])
zt[n]=0;
else //gs[m+1] 是非終結符n2做標記
}
//跳出循環,無法解決該情況,推到下面情況三
m++;
}
if(n2!=99) //完成所有掃描,未出現非終結符,得出結論zt[n]=0.bz[n]=0不允許再改變zt[n]
}
}
/*情況三,最終判定*/
do
{
flag=0;
for(n=0;n<fzg;n++)
{
if(bz[n]==1) //未得到判定
{ m=0;
while(gs[m]!='\0')
{
if(gs[m]==z2[n]) //判定gs[m]是輔助字元0123
{
m++;
while(gs[m]>='A'&&gs[m]<='Z')
{
n1=0;
for(n2=0;n2<fzg;n2++) //循環查找是gs[m]哪個非終結符
{
if(gs[m]==z[n2])
{
if(zt[n2]==1) //這個非終結符能推出空
zt[n]=1;
else if(bz[n2]==1) //這個非終結符 現在 不能推出空,但它的狀態可改即它最終結果還未判定
else
//設 m1 做標記供下一if參考
break; //找到gs[m]是哪個非終結符,for循環完成任務,可以結束
}
}
if(n1==99) break;
m++;
}
}
m++;
}
if(zt[n]==1) bz[n]=0;
if(bz[n]==0) flag=1;//對應for下的第一個if(zt[n]==2)
}
}
}while(flag);
printf("結果是:\n");
for(m=0;m<5;m++)
{
switch(zt[m])
{
case 0:printf("%c---否\n",z[m]);break;
case 1:printf("%c---是\n",z[m]);break;
case 2:printf("%c---未定\n",z[m]);break;
}
}
/*
puts(gs);
puts(zt);
puts(z);
puts(z1);
puts(z2);
printf("%d,,,%d",fzg,zg);
*/
//下面求first集
//下面求first集
for(n=0;n<fzg;n++)
m=0;n=0;n1=0;n2=0;
while(gs[n]>='0'&&gs[n]<='9')
{
for(;m<fzg;m++)
{
if(n2!=m)
n1=0; //m=n2用於第二次以後的for循環中還原上次m的值
if(gs[n]==z2[m])
{
while(gs[n+1]>'9')
{
if(n1==0)
//如果是第一個直接保存
//不是第一個,先與字元數組中其它字元比較,沒相同的才保存
else if(gs[n]>='a'&&gs[n]<='z'&&gs[n+1]>='A'&&gs[n+1]<='Z') //gs[n]是終結符 且 gs[n+1]是非終結符
;//什麼也不做,程序繼續n++,掃描下一個gs[n]
else
{
for(n3=0;n3<=n1;n3++)
{
if(temp[m*13+n3]==gs[n+1])
break;
}
if(n3>n1) //for循環結束是因為n3而不是break
}
n++;
}
break; //break位於if(gs[n]==z2[m]),對於gs[n]已找到z2[m]完成任務跳出for循環
}
}
n2=m; //存放該for循環中m的值
n++;
}
//進一步處理集除去非終結符
m=0;n=0;n1=0;n2=0;
for(m=0;m<fzg;m++)
{
if(flag!=m)
n1=0; //m=flag用於第二次以後的for循環中還原上次m的值
while(temp[m*13+n1]!='\0')
{
while(temp[m*13+n1]>='A'&&temp[m*13+n1]<='Z') //搜索非終結符
{
for(n=0;n<fzg;n++) //確定是哪個非終結符
{if(temp[m*13+n1]==z[n])
break;
}
while(temp[m*13+n1]!='\0') //從temp[n*13+n1]開始每個字元依次往前移動一
n1--;
while(temp[n*13+n2]!='\0') //把z[n]對應的first加入temp[m*13+n1]這個first中,每個字元依次加在最後
{
for(n3=0;n3<n1;n3++) //循環判定是否有相同的字元
{
if(temp[m*13+n3]==temp[n*13+n2])
break;
}
if(temp[n*13+n2]=='k'&&zt[m]==0) //那些不能推出 空,但是因為要加入 其他非終結符的first集 而可能含有 空
n2++;
else if(n3>=n1) //for循環結束是因為n3而不是break ,即無相同字元
else n2++;
}
n1=0;
n2=0;
}
n1++;
}
flag=m; //存放該for循環中m的值
}
//非終結符的first集輸出
m=0;n1=0;
for(m=0;m<fzg;m++)
{
n1=0;
printf("非終結符 %c 的first集是: ",z[m]);
while(temp[m*13+n1]!='\0')
{
printf("%c",temp[m*13+n1]);
n1++;
}
printf("\n");
}
}
D. C語言程序設計實驗報告怎麼寫啊
通過本試驗初步培養計算機邏輯解題能力。熟練掌握賦值語句和if語句的應用;掌握switch多路分支語句和if嵌套語句的使用
E. c語言實驗報告總結怎麼寫
c語言實驗報告總結這樣寫:
在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助於我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。
在這個星期里,我們專業的學生在專業老師的帶領下進行了c語言程序實踐學習。在這之前,我們已經對c語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對裡面的好多東西還是很陌生,的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。
由於時間的關系,我們的這次實踐課程老師並沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理.簡單界面程序.高級界面程序.程序的添加修改.用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。
上機實驗是學習程序設計語言必不可少的實踐環節,特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對於程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。
學習c程序設計語言除了課堂講授以外,必須保證有不少於課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c語言開發程序的能力,為今後的繼續學習打下一個良好的基礎。
為此,我們結合課堂講授的內容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:
1、加深對課堂講授內容的'理解
課堂上要講授許多關於c語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。
通過多次上機練習,對於語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對於一些內容自己認為在課堂上聽懂了,但上機實踐中會發現原來理解的偏差,這是由於大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。
學習c語言不能停留在學習它的語法規則,而是利用學到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。
通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數同學在完成老師作業時的心態。但是在程序設計領域里這是一定要克服的傳統的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去"掩蓋"程序中的錯誤,而不是盡可能多地發現程序中存在的問題。
自己編好程序上機調試運行時,可能有很多你想不到的情況發生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發能力。
2、熟悉程序開發環境、學習計算機系統的操作方法
一個c語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環境下才能進行。所謂"環境"就是所用的計算機系統硬體、軟體條件,只有學會使用這些環境,才能進行程序開發工作。
通過上機實驗,熟練地掌握c語言開發環境,為以後真正編寫計算機程序解決實際問題打下基礎。同時,在今後遇到其它開發環境時就會觸類旁通,很快掌握新系統的使用。
3、學習上機調試程序
完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結果顯然是錯誤的。
開發環境所提供的編譯系統無法發現這種程序邏輯錯誤,只能靠自己的上機經驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對於初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。
通過這次為數不多的幾天計算機實踐學習,我們了解了一些關於c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難!