第一篇:順序結構與邏輯運算實驗報告
實驗 2
順序結構與邏輯運算
1.實驗目的和要求 (1)掌握數據輸入/輸出函數的使用,能正確使用各種格式轉換符。
(2)熟悉順序結構程序中語句的執行過程,并學會基本調試程序方法。
(3)能夠正確使用邏輯運算符和邏輯表達式。
(4)學會運用邏輯表達式或關系表達式等表示條件。
(5)熟練掌握 if 語句和 switch 語句,掌握條件表達式構成的選擇結構。
(6)熟練掌握跟蹤調試程序,針對具體數據組織輸入測試數據,觀察程序運行能否得到預期的輸出結果。
(7)學會編寫簡單程序。
2.實驗內容:實驗指導書中的實驗三和實驗四 3.實驗步 驟及結果 實驗三部分:
3-1-1 該程序正確的源程序代碼(或窗口截圖):
程序運行結果畫面如下:
3-1-2 該程序正確的源程序代碼(或窗口截圖):
程序運行結果畫面如下:
3-2-1 該程序完整的源程序代碼(或窗口截圖):
程序運行結果畫面如下:
3-2-2 該程序完整的源程序代碼(或窗口截圖):
程序運行結果畫面如下:
3-3 注意:這道程序我們不按書中提示進行,而在 VC 環境下進行調試。
語法錯誤和邏輯錯誤的區別何在? 語法了 錯誤是指編譯的程序中破壞了 C 語言固有的語法規則,比如缺 少或者多添了一個字母符號,一個標點符號,或者缺少群頭文件等,導致程序合 無法編譯和運行;邏輯錯誤是指代碼符合 C 語言規范,程序可以運行,但是結果有誤,通常是語句邏輯有誤。
如何啟動單步調試? 點擊【 組建 】
按鈕下的 【 開始調試 】
選項,在新出現的對話框中點擊【 【step into 】按鈕,每條語句便可單獨執行。
要使程序運行到“ss=(k…”這一行暫停下來,該如何操作? 光標 放在目標行前,點擊 項目欄的【remove breakpoint 】程序便可在目標處暫停。
怎樣終止調試狀態(程序復位)? 點擊【 【step over 】程序便可 在目標處暫停調試。
單步調試狀態下,向下運行一條語句的操作方法(分兩種情況回答,第一種,跟蹤到自定義函數內部,第 2 種,不跟蹤到自定義函數內部):1.單擊調試菜單中的【step into 】跟蹤到自定義函數內部。2.單擊調試菜單中的【step over 】不跟蹤到自定義函數內部 在本題中,假設要在運行第 2 條語句(即 scanf 語句后),要馬上觀察 i,j,k,ss,m,n 的變量的值,操作方法:于 光標放于 scanf 行前,單擊調試菜單中的【查看】運行到 scanf 語句,輸入任意的整形變量的值。請把觀察這些變量時的畫面粘貼到下面:
通過這道題單步調試,你對 i++和++i 及 i—和—i 應該有了更直觀的理解,他們的區別在于:
i++(i--)是 是給 先賦值給 i 再加(減)1 參與運算;而++i(--i)是先給變量加(減)1,再用變化的值參與運算。
3-4 請回答書中問題 問題(1)c1,c2 應定義為字符型。
問題(2)將 將 c1,c2 定義為字符型用 printf 函數輸出。
問題(3)
在一些情況下可以相互替換,有時不能替換。這是因為字符型表示的數值范圍在-128~127 之間,而就有符號基本整形所表示的數值范圍在-32768~32767 之間,有符號 短整形的數值范圍在-32768~32767 之間,還有其它整形的數值范圍也于字符型不同,但兩者相同的部分可以相互轉換。
程序運行結果畫面如下:
3-5 該程序的源程序代碼(或窗口截圖):
運行結果畫面:
3-7 該程序的源程序代碼(或窗口截圖):
運行結果畫面:
實驗四
邏輯運算和判斷選取控制
4-1-a 該程序正確的源程序代碼(或窗口截圖):
運行結果畫面:
4-1-b 該程序正確的源程序代碼(或窗口截圖):
運行結果畫面:
4-1-c 該程序正確的源程序代碼(或窗口截圖):
運行結果畫面:
4-2-1 該程序完整的源程序代碼(或窗口截圖):
運行結果畫面:
4-2-2 該程序完整的源程序代碼(或窗口截圖):
運行結果畫面:
4-3 該程序完整的源程序代碼(或窗口截圖):
運行結果畫面:
4-4 運行結果畫面:
4-5 該程序的源程序代碼(或窗口截圖):
運行結果畫面:
*4-6 該程序的源程序代碼(或窗口截圖):
運行結果畫面:
實驗小結 通過本次實驗我掌握了函數的輸入輸出,以及 if 和 switch 的使用,掌握了一些基本的調試功能,懂得了一些簡單程序的編寫,會簡單追蹤調試程序,理清了順序結構中語句的執行過程。
第二篇:《計算機組成原理》實驗報告---8位算術邏輯運算實驗
計算機專業類課程
實驗報告 課程名稱:計算機組成原理 學
院:信息與軟件工程學院 專
業:軟件工程 學生姓名: 學
號: 指導教師:
日
期: 2012 年 12 月 15 日
電子科技大學計算機學院實驗中心
電 子 科 技 大 學
實
驗
報
告
一、實驗名稱: 8位算術邏輯運算實驗
二、實驗學時:2
三、實驗內容、目的和實驗原理: 實驗目的:
1.掌握算術邏輯運算器單元ALU(74LS181)的工作原理。2.掌握模型機運算器的數據傳送通路組成原理。3.驗證74LS181的組合功能。
4.按給定數據,完成實驗指導書中的算術/邏輯運算。
實驗內容:
使用模型機運算器,置入兩個數據DR1=35,DR2=48,改變運算器的功能設定,觀察運算器的輸出,記錄到實驗表格中,將實驗結果對比分析,得出結論。實驗原理:
1.運算器由兩片74LS181以并/串形式構成8位字長的ALU。2.運算器的輸出經過一個三態門(74LS245)和數據總線相連。3.運算器的兩個數據輸入端分別由兩個鎖存器(74LS273)鎖存。4.鎖存器的輸入連至數據總線,數據開關(INPUT DEVICE)用來給出參與運算的數據,并經過一三態門(74LS245)和數據總線相連。5.數據顯示燈(BUS UNIT)已和數據總線相連,用來顯示數據總線內容。
實驗器材(設備、元器件):模型機運算器
四、實驗步驟:
1.仔細查看試驗箱,按以下步驟連線 1)ALUBUS連EXJ3 2)ALU01連BUS1 3)SJ2連UJ2 4)跳線器J23上T4連SD 5)LDDR1,LDDR2,ALUB,SWB四個跳線器撥在左邊 6)AR跳線器撥在左邊,同時開關AR撥在“1”電平2.核對線路,核對正確后接通電源
3.用二進制數據開關KD0-KD7向DR1和DR2寄存器置入8位運算數據。
電子科技大學計算機學院實驗中心 ① 調撥8位數據開關KD0-KD7為01100101(35H),準備向DR1送二進制數據。
② 數據輸出三態緩沖器門控信號ALUB=1(關閉)。③ 數據輸入三態緩沖器門控信號 SWB=0(打開)。
④ 數據鎖存DRi控制信號LDDR1=1(打開),同時,LDDR2=0(關閉)。
⑤ 打入脈沖信號T4,將數據65H置入DR1。重復步驟1-5,同理將數據A7H置入DR2 4.檢驗DR1和DR2置入的數據是否正確。
1)
數據輸出三態緩沖器門控信號ALUB=0(打開); 2)數據輸入三態緩沖器門控信號SWB=1(關閉); 3)
數據鎖存DRi控制信號LDDR1、LDDR2=0(關閉)4)
設置開關M、開關S3、S2、S1、S0 相應值
如M=1,S3、S2、S1、S0=1111,驗證8位數據 DR1;S3、S2、S1、S0=1010驗證8位數據DR2 5.驗證74LS181的算術和邏輯運算功能。
1)在給定DR1=65、DR2=A7的情況下,改變算術邏輯運算功能發生器的功能設置,觀察運算器的輸出。
2)將輸出結果填入實驗報告表中,并和理論分析進行比較、驗證。
6.填寫實驗數據。
五、實驗數據及結果分析(包括各種截圖:實驗過程截圖、界面截圖、操作截圖、運算結果截圖):
運算器數據通路圖:
模型機運算器連線及跳線完畢圖:
電子科技大學計算機學院實驗中心
實驗數據輸出表:
六、實驗結論、心得體會和改進建議: 通過這次試驗,掌握了算術邏輯運算器單元ALU(74LS181)的工作原理,掌握了簡單運算器的數據傳送通道,了解了由74LS181等組合邏輯電路的運算功能發生器運算功能,能夠按給定數據,完成實驗指定的算術/邏輯運算。
電子科技大學計算機學院實驗中心
第三篇:選擇結構實驗報告
預習報告
實驗項目:選擇結構程序設計
實驗日期:2012年3月26日
實驗原理:利用 if 或switch 語句實現多分支選擇結構程序設計
實驗儀器:PC
實驗內容及步驟:
內容:利用scanf函數讀入變量x的值,利用if或switch 語句判斷x所在的區間,并求函數在x 處的函數值
步驟:
1、程序設計:
(1)定義變量;(2)利用scanf給變量x賦值;(3)利用 if 或 switch 判斷x所在范圍執行相應計算,以求得函數在x 處的函數值;(4)輸出相應函數值
2、輸入程序、調試并運行通過。
實驗報告
實驗目的要求:抄寫指導手冊上相應章節的目的要求
實驗環境:windows XPTC或 VC
實驗內容:完整抄寫P77頁4.5小題
實驗步驟:直接寫代碼
實驗結果:根據實驗題目自己輸入相應值并觀察程序輸出結果
總結:主要寫出自己在本次實驗中的收獲及不足
第四篇:《順序結構》 教學設計
鹽城中學
何娟
《順序結構》教學設計
一、教材分析
本節課是《算法與程序設計》(選修)
鹽城中學
何娟
★
學習方法:模仿學習、自主探究學習,小組交流合作學習
六、設計思想
尊重學生解決問題的思維過程,模擬學生的學習體驗和情感體驗,在以學生為主體、教師為主導的架構下,搭建以生為本的學習的平臺,幫助學生通過學與練,以不斷解決問題為手段,一步步完成學習任務。
新課標中提出了信息技術課程要以進一步提高學生信息素養為宗旨,強調通過合作解決實際問題,掌握信息技術,感受信息文化,增強信息意識,提高學生總體的信息素養。而在本節課中就堅持了以教師為主導,學生為主體,發展能力和提高素質為主線的啟發式教學思想,努力為學生創設了開放式的學習環境。
本節課以一個簡單的例子——計算圖形的周長、面積并打印為主線介紹順序結構的特點、執行過程和基本思想,并通過這個程序抽象出代碼設計的四個基本部分:定義常變量、輸入數據、處理數據、輸出數據。讓學生通過模仿學習、自主學習相結合的方式編寫程序,發現問題,探究解決問題,最后學會自我總結。
七、教學過程
1.分組體驗,導入新課
導入:上節課我們學習了賦值語句,現在屏幕上有三道題目,請同學選擇其一解答。學生分組體驗程序的運行結果。題一:
Dim a As Integer Dim b As Integer a = a + 1 a = 3 b = a b = b + 1 Print a, b 運行結果:3 4 題二:
Dim a As Integer Dim b As Integer a = 3 a = a + 1 b = a b = b + 1 Print a, b 運行結果:4 5
題三:
Dim a As Integer Dim b As Integer
鹽城中學
何娟
a = 3 b = a a = a + 1 b = b + 1 Print a, b 運行結果:4 4 教師:經過觀察,我們發現上述三個例子中涉及到的語句都是一模一樣的,可是為什么得到結果不一樣呢?
學生:順序不同。
教師:對,由于這個程序的執行過程是按語句書寫的先后順序一句一句執行的,每次給變量賦的值不同,所以得到的結果不一樣。這種按語句順序執行的結構我們成為順序結構,在以后的學習過程中我們還將學習另外兩種結構:分支結構和循環結構。分支結構根據不同的條件判斷來決定程序執行的走向,循環結構根據條件判斷,需要重復執行某一段代碼。而順序結構每一條語句執行且只執行一次,沒有跳過某一條語句,也沒有重復執行某一條語句。老師這里有三幅圖,圖中顯示的路途方式和程序設計的三種基本結構非常的類似,同學們仔細觀察一下,你能猜出哪一幅圖對應于順序結構嗎?
圖1
圖2
圖3 學生:圖1
2.學科遷移,設計代碼
鹽城中學
何娟
教師:這節課我們著重學習順序結構。請看這道題目:已知圓的半徑為1000,編寫程序求解其周長和面積,并作圖。如果是一道數學題,同學肯定不費吹灰之力,可是編程怎么求解呢?同學可能一時犯了難,沒關系,既然同學們對數學的解題步驟比較熟悉,我們姑且把把它當作一道數學題來解答。首先,我們分析一下,題目中涉及到幾個變量?哪幾個?
學生:三個,半徑、周長和面積。
教師:和數學中一樣,我們分別用r、c、s表示這三個變量。請一位同學書寫相關語句
學生操作:
教師:剛才的三個變量哪些是已知條件?
學生:半徑
教師:其值是多少?
學生:1000 教師:好,利用賦值語句給半徑賦值,代碼是?
學生回答,教師操作:r=1000 教師:此時,我們已經知道r的值了,那么如何通過已知條件求解出c和s呢?請一位同學在教師機上演示。
學生操作:c=2*3.14*r
s=3.14*r*r
(書寫過程中若有語法錯誤,請其他同學糾正)設疑:程序編寫到這里是否行了呢?同學的意見出現了分歧,都說實踐是檢驗真理的唯一標準,那么我們就讓機器來驗證吧
教師:程序并沒有如我們所料想的那樣顯示結果,事實證明我們的程序存在一些小問題,那究竟是哪里出錯了呢?正如同學們知道的,我們其實已經把周長和面積的值求出來了,可是程序為什么不顯示結果呢?對!我們把求出來的結果存放在變量c和s中,而對于用戶而言,并不知道變量c和s的存在,他只關心屏幕上有沒有顯示結果,所以,我們還應該打印變量c和s。代碼是?
學生:print c,s 教師:這樣的代碼已經能完成基本功能了,為了使用戶看得更清楚明了,再添加一些說明性文字。Print “圓的周長為”;c Print “圓的面積為”;s 教師:接下來我們還要作圖。你們平時是怎么畫圓的?
學生:用圓規畫圓,先確定圓心位置,然后確定半徑畫圓。
教師:vb中提供了circle方法可以象圓規一樣畫圓,請同學看老師演示代碼
Circle(2000, 2000), 1000其中(2000,2000)是圓心位置,1000是圓半徑。需要說明的是,vb中的坐標系和數學中不同,原點(0,0)的位置為窗口左上角,窗口左邊框為縱軸正方向,窗口上邊框為橫軸正方向。關于circle方法我還提供了一個小資料,同學們可以根據小資料修改不同參數畫出不一樣的圓。
3.現學現賣,小試牛刀
鹽城中學
何娟
課堂實踐一:已知圓的半徑為1000,編寫程序畫出此圓,然后求解其周長和面積。(提供代碼圖片和circle小資料)
展示學生程序:老師不但可選成功的程序,也可選取較不成功的作品,但要有典型意義。
4.層層遞進,探究實踐
教師:現在我們已經能夠求出指定半徑圓的周長和面積并作圖了,如果我們把這個程序給用戶使用,他們可能會想這個程序只能求半徑為1000的圓,我要是能輸入其他的半徑值就好了,而用戶不一定懂得修改程序代碼,直接修改程序行不通,同學們能不能想想辦法讓用戶能自己輸入半徑的值?
學生1:我們可以用文本框
學生2:還可以用inputbox函數
教師:那就剛才程序的基礎上修改代碼實現你的想法吧。
課堂實踐二:根據用戶輸入的半徑值求圓的周長和面積并作圖。解法一:
鹽城中學
何娟
解法2:
展示學生程序:演示幾個學生的程序,請學生相互評價指出優點和不足,教師適當點評。教師總結:一個完整的代碼通常包括這樣幾個部分:
1、定義常變量
2、輸入
3、處理
4、輸出
5.課堂小結,提出希望
一直以來,在我們的印象中,編程是件很難的事。但是通過這節課的學習,我們發現編程也是有章可循的,希望同學們能喜愛上編程,讓程序學習變成一件快樂的事,編寫出更多更好的程序,成為
第五篇:順序表的操作實驗報告
順序表的基本操作
一、實驗目的
1、復習C++語言程序設計中的知識。
2、熟悉線性表的邏輯結構。
3、熟悉線性表的基本運算在兩種存儲結構上的實現。
4、掌握順序表的存儲結構形式及其描述和基本運算的實現。
5、熟練掌握動態鏈表結構及有關算法的設計
二、實驗內容
實現順序表的建立、取元素、修改元素、插入、刪除等順序表的基本操作。[基本要求](1).依次從鍵盤讀入數據,建立帶頭結點的順序表;(2).輸出順序表中的數據元素
(3).根據指定條件能夠取元素和修改元素;(4).實現在指定位置插入和刪除元素的功能。
三、實驗步驟、調試及輸出結果
(—).數據結構與核心算法的設計描述: #include
/*當前的表長度*/ /*順序表的打印:*/ void PrintList(SeqList *L,int n){int i;printf(“the sqlist isn”);for(i=1;i<=n;i++)printf(“%d ”,L->elem[i]);printf(“n”);}
/*順序表的查找:*/ int LocateList(SeqList *L,int x){int i;i=1;while(((L->elem[i])!=x)&&(i<=10))++i;if((L->elem[i])==x)return(i);else return(0);}
/*順序表的插入:*/ void InsertList(SeqList *L,int x,int i){int j;if(i<1 ||i>L->length+1)printf(“no insert position!n”);else {for(j=L->length;j>=i;j--)L->elem[j+1]=L->elem[j];L->elem[i]=x;L->length++;} } /*順序表的刪除:*/ void DeleteList(SeqList *L,int i){int j;if(i<1 ||i>L->length)printf(“no delete position!n”);else {for(j=i;j<=(L->length)-1;j++)L->elem[j]=L->elem[j+1];L->length--;} } void main(){
SeqList L;int i,x;int n=10;
/*當前順序表的長度*/ L.length=0;CreateList(&L,n);
/*建立順序表*/ PrintList(&L,L.length);
/*輸出順序表*/ printf(“input the research element:”);scanf(“%d”,&x);i=LocateList(&L,x);/*順序表查找*/ printf(“the research position is %dn”,i);printf(“input the position of insert:”);scanf(“%d”,&i);printf(“input the value of insert:”);scanf(“%d”,&x);InsertList(&L,x,i);/*順序表插入*/ PrintList(&L,L.length);
/*輸出順序表*/ printf(“input the position of delete:”);scanf(“%d”,&i);DeleteList(&L,i);/*順序表刪除*/ PrintList(&L,L.length);/*輸出順序表*/ }(二).調試及輸出結果 測試數據:
1、輸入n個數;
2、輸出順序列表;
3、順序表的查找;4.順序表的插入;
5、順序表的刪除;
數據測試如下截圖:
四、實驗討論與總結:
通過這次寫實驗報告,我深切的理解了這門課的本質。剛開始學這門課時,當時還不清楚這門課程的目的,現在,我真正的理解了:數據結構像是身體的骨骼。數據結構是個框架,模型,抽象數據類型中列舉了各種操作,而所用的C++語言,將各種操作描述出來構成算法。
在這次設計的過程中,我知道了順序表是按順序存儲的,用了一維數組來存儲,但是,在執行時出現了問題。后來問同學,指出我的錯誤,不過獲益不少。我又重新整理思路,把順序表的基本操作寫好了。雖然走了很多彎路,但是讓我認識到,一定要創新,大膽,不能按照舊的思路去干新的事情。
單鏈表寫起來簡單多了,這個很快就搞定了。但是細節上出了問題。比如說,有些變量的重復定義,有些變量又沒有定義,在調用函數,就直接復制過來,沒有改參數……通過修改,我深刻理解到:細節決定成敗,在以后,不管做任何事情都要認真,細心。
這次的實驗報告,讓我受益匪淺,不僅有知識方面的,還有生活和精神上的。總之,我會繼續我的興趣編程,相信在編程的過程中,能不斷的提高自己。