999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談C++教學中與其他課程的融會貫通

2008-12-31 00:00:00余景華肖鐵軍馬學文
計算機教育 2008年14期

摘 要:本文討論了在計算機專業(yè)的課程教學過程中如何與其他課程相聯(lián)系,從而既能激發(fā)學生學習后續(xù)計算機課程的興趣,又能將相對孤立的計算機專業(yè)知識結(jié)合起來,達到較好的教學效果。

關鍵詞:C++語言;計算機組成原理;編譯原理;操作系統(tǒng)

中圖分類號:G642 文獻標識碼:B

1 引言

目前,大部分高校的計算機教育中各門計算機專業(yè)課程的教學是相互孤立的,學生在學完每門課程后,對每門課的內(nèi)容非常了解,卻不能將所學過的計算機課程聯(lián)系起來,因此對計算機的整體工作過程始終都沒有一個完整的認識。

本文以講述“C++語言程序設計”這門課時如何與“計算機組成原理”、“編譯原理”以及“操作系統(tǒng)”等課程相聯(lián)系為例。其中“計算機組成原理”的開課時間在“C++語言程序設計”之前,“編譯原理”和“操作系統(tǒng)”的開課時間在“C++語言程序設計”之后。

2 與“計算機組成原理”的聯(lián)系

如例1所示,在講述“C++語言程序設計”的文件流時,就可以聯(lián)系到“計算機組成原理”中的浮點數(shù)表示。

例1:#include

using namespace std;

void main( )

{ int i=10;

double j=233.4;

char a[] =\"adffffdf\";

ofstream fout( \"test.txt\", ios::binary );

if ( fout )

{fout.write((char *)(i),sizeof(i));

fout.write((char *)(j),sizeof(j));

fout.write(a,sizeof(a));

}

上述程序的功能是創(chuàng)建一個文件test.txt,并向該文件中以二進制的形式寫入一個整型數(shù)10,一個浮點數(shù)233.4和一個字符串。運行這個程序后,在visual c++中打開這個文件,看到如下的結(jié)果。

000000 0A 00 00 00 CD CC CC CCCC 2C 6D 40 61 64 66 66

000010 66 66 64 66 00

其中000000和000010表示的是地址,因為CPU采用的是小端方式存儲數(shù)據(jù),即低字節(jié)對應低地址,所以前面的4個字節(jié)0A 00 00 00正確地讀法是00 00 00 0A,表示整型數(shù)10;中間的八個字節(jié)CD CC CC CCCC 2C 6D 40正確地讀法是 40 6D 2C CC CC CC CC CD,表示的是浮點數(shù)233.4;后面的8個字節(jié)61 64 66 66 66 66 64 66為寫入的字符串\"adffffdf\"的每個字符的ASCII碼值;最后的00是字符串的結(jié)束標志。

如何得知十六進制數(shù)40 6D 2C CC CC CC CC CD就是程序中寫入的233.4呢?我們可以利用在計算機組成原理中學過的浮點數(shù)表示法來進行驗證。

計算機組成原理中曾經(jīng)講過64位的浮點數(shù)的格式如圖1所示,

其中,S占1位,表示尾數(shù)的符號位,0表示正數(shù),1表示負數(shù)。

E占11位,表示階碼,用移碼表示,表示范圍為-210~210-1 之間,其中全0表示-210,全1表示210-1 。

M占52位,表示尾數(shù)小數(shù)點后的數(shù)據(jù)。

先來分析一下尾數(shù)的符號S和階碼E,即前12位40 6,將其化解成12位的二進制數(shù)0100 0000 0110。

其中,S是最高位的值,為0,即這個浮點數(shù)是一個正數(shù)。

E占用剩余的11位,為100 0000 0110,計算出其對應的十進制數(shù)為7,即階碼為7。

M占用后面的52位即D 2C CC CC CC CC CD。根據(jù)計算機組成原理中的定義,真正的尾數(shù)為1.D 2C CC CC CC CC CD,將其劃為二進制形式為1.1101 0010 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101

階碼為7,因此真正的數(shù)據(jù)應該是將小數(shù)點右移7,移位后的數(shù)據(jù)為

11101 001.0 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101

其中整數(shù)部分11101 001化為十進制數(shù)為233,小數(shù)部分0.0 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101化為十進制數(shù)約等于0.4,加在一起等于233.4。從而驗證出文件中寫入的40 6D 2C CC CC CC CC CD表示的正是程序中寫入的浮點數(shù)233.4。

經(jīng)過這樣的演示,可以使學生理解計算機專業(yè)的硬件和軟件課程之間不是相互孤立的,它們之間都有著緊密地聯(lián)系,從而激發(fā)學生學習各門計算機課程的興趣,并促使學生主動復習先前學過的課程,進而取得較好的教學效果。

3 與“編譯原理”的聯(lián)系

在講述“C++語言程序設計”的指針和引用的區(qū)別的時候,也可以提到“編譯原理”中的詞法分析。

指針是內(nèi)容為目標存儲單元地址的存儲單元,而引用變量就是存儲單元。引用在定義時必須初始化且不可重新賦值,指針在定義時可不初始化,在使用時才初始化,并且可修改。

通常的書里會給出如圖2所示的例子,并給出相應的程序段如例2。

例2:int num = 9;

int *p= num;

int ref = num;

程序段中首先定義一個變量num,然后定義一個指針p指向num 變量,最后定義num的一個引用ref。其中p占有一個內(nèi)存空間,里面存放的是num的地址,而ref不占內(nèi)存空間,只是num的一個別名。

在下面的程序例3中我們可以這樣修改指針,

例3:int data = 10;

p = data;

程序運行的結(jié)果如圖3所示。

此時p占有的內(nèi)存空間中存放的內(nèi)容變成data的地址。

但是我們不能通過下面的語句修改ref為變量data的引用:

ref = data;

這樣的解釋使得很多學生只是處于似懂非懂的狀態(tài),不能真正的明白。此時,我們可以引出“編譯原理”中的一些簡單知識對它進行解釋。這樣的解釋也讓學生更容易理解當引用、變量、指針都作為形參的區(qū)別。

C++編譯器編譯c++源程序時,首先為被編譯的源程序中的所有變量建立一張變量表。假設程序中變量的定義如下所示:

int num = 9;

int *p= num;

int ref = num;

int data = 10;

p = data;

num =data;

則其對應的變量表如表1所示。

變量表中包含源程序中所有的變量名和編譯程序根據(jù)變量定義的位置和大小而設置的邏輯地址。假設各邏輯地址的分配情況如表1所示。

在編譯階段,當編譯器編譯int num = 9這條語句時,會在表1中添加變量名num,并分配一個邏輯地址0000h。并在相應的地址單元中填入9,如圖4所示。

當編譯int *p =num這條語句時,編譯器會在表1中再添加變量名p,并分配給他一個邏輯地址0004h,并將num的地址為0000h拷貝到地址為0004h的單元中去,如圖4所示。

當編譯int ref =num這條語句時,編譯器會在表1中添加變量名ref,同時將num的邏輯地址0000h拷入到ref的邏輯地址項中。從這兒,我們可以看出ref和num對應了同一個地址單元0000h,因此在程序中修改num的值和修改ref的值其實都是修改地址單元0000h中的數(shù)據(jù)。

當編譯int data = 10;這條語句時,編譯器會在表1中添加變量名data,并分配一個邏輯地址0008h。并在相應的地址單元中填入10,如圖4所示。

在編譯后產(chǎn)生的目標機器代碼中凡是遇到變量名的地方全部用其相應的邏輯地址代替。因此,在編譯后的目標機器碼中不存在任何變量、引用或指針名,只有邏輯地址。

在程序運行階段,系統(tǒng)會將目標代碼裝入到內(nèi)存,并根據(jù)計算機組成原理中講過的法則,將其轉(zhuǎn)換為物理地址。假設其轉(zhuǎn)后的物理地址和邏輯地址的對應關系如表2所示。

當程序和數(shù)據(jù)被裝入內(nèi)存并準備開始運行的時候,其數(shù)據(jù)在內(nèi)存的初始分配情況如圖5所示

當執(zhí)行num=data 這條語句時,系統(tǒng)會將棧中地址為8004h單元中的數(shù)值10拷貝到棧中地址為8000h中,即9變成了10。運行后的結(jié)果如圖6所示。

因為程序裝入內(nèi)存后,指針本身在內(nèi)存中占有空間,而引用不占用空間,所以在C++程序中允許對指針進行修改,而不能對引用進行修改。

因為程序裝入內(nèi)存后,指針本身在內(nèi)存中占有空間,而引用不占用空間,所以在C++程序中允許對指針進行修改,而不能對引用進行修改。

經(jīng)過這樣的解釋,可以讓學生對c++語言如何在計算機上運行有一個簡單初淺的印象,也能夠激發(fā)他學習后續(xù)課程“編譯原理”的興趣。

4 與“操作系統(tǒng)”的聯(lián)系

同樣在講述“C++語言程序設計”的文件流時,也可以聯(lián)系到“操作系統(tǒng)”這門課的文件管理。如例1所示,在C++語言中,當我們想向一個文件中寫入數(shù)據(jù)時,需要先創(chuàng)建輸出文件流ofstream的對象fout,通過fout對象創(chuàng)建或打開一個現(xiàn)有的文件test.txt,然后再利用ofstream的成員函數(shù)write(),將所需要寫入的數(shù)據(jù)通過內(nèi)存變量寫入文件中。程序非常簡單,但其實文件的操作沒有那么簡單,甚至是非常復雜的。在計算機組成原理中曾經(jīng)講過硬盤,而文件就是存放在硬盤上的。當打開一個文件時,就需要從硬盤上相應的磁盤磁道扇區(qū)中找到相應的文件。但是用戶無論是通過資源管理器打開或創(chuàng)建相應目錄下的文件,還是通過在程序中打開或創(chuàng)建相應目錄下的文件,都是非常的簡單,這是因為很多底層的工作都已經(jīng)由操作系統(tǒng)中的文件管理系統(tǒng)為我們做好。

經(jīng)過這樣一些簡單的提醒,可以讓學生對應用程序和操作系統(tǒng)之間的聯(lián)系有一個感性的認識。

5 結(jié)論

在“C++語言程序設計”的教學過程中,完全可以與其他的相關計算機課程結(jié)合起來講。這樣既可以激發(fā)學生學習后續(xù)計算機課程的興趣,又使學生能夠?qū)⒃?jīng)所學過的孤立的計算機專業(yè)知識結(jié)合起來,從而對計算機的工作過程有一個整體的認識。在很多的計算機專業(yè)課程的教學過程中,都可以與其他相關的課程結(jié)合起來講。

參考文獻:

[1] 陳維新. C++面向?qū)ο蟪绦蛟O計教程[M]. 北京:清華大學出版社,2004.

Elementary introduction of connecting with other computer courses in c++ teach

YU Jing-hua, XIAO Tie-jun, MA Xue-wen

(School of Computer and Telecommunication Engineer, Jiangsu University, zhenjiang ,212013 )

Abstract:To achieve good teaching effect, teacher can inspire the student’s interest of subsequence computer courses and make them to combine the previous courses by connecting to other relative computer course in the process of teaching. This paper picks out the example of c++ programming teaching to describe how it did.

keyword:c++ programming,computer organization,compile principle,operating system

主站蜘蛛池模板: 欧美亚洲香蕉| 欧美亚洲香蕉| 久久精品国产免费观看频道| 一区二区欧美日韩高清免费| 中文字幕66页| 亚洲中文精品人人永久免费| 77777亚洲午夜久久多人| 五月婷婷丁香色| 色成人综合| 在线不卡免费视频| 成人在线视频一区| 伊人天堂网| 国内精品手机在线观看视频| 久久亚洲美女精品国产精品| 黄片一区二区三区| 亚洲色欲色欲www网| 成年人视频一区二区| 在线免费观看AV| 在线看免费无码av天堂的| 不卡网亚洲无码| 国产尤物视频在线| 一级毛片无毒不卡直接观看| 日韩无码白| 国产黑丝一区| 在线永久免费观看的毛片| 欧美日韩91| 伊人色在线视频| 久久夜色撩人精品国产| 成人蜜桃网| 国产探花在线视频| 日本精品视频一区二区| 永久免费无码成人网站| 国产视频欧美| 天天躁日日躁狠狠躁中文字幕| 综合网天天| 亚洲精品图区| 夜夜操国产| 91日本在线观看亚洲精品| 网久久综合| 天堂网国产| 欧美a在线| 免费播放毛片| 5555国产在线观看| 欧美在线精品怡红院| 55夜色66夜色国产精品视频| 国产精选小视频在线观看| 狠狠色综合网| 久久香蕉国产线看观| 思思热精品在线8| 色婷婷成人| 久综合日韩| 久久精品日日躁夜夜躁欧美| 欧美黄网在线| 色妞永久免费视频| 在线观看免费黄色网址| 国产成人亚洲无吗淙合青草| 国产福利影院在线观看| 日本国产精品| 日韩欧美综合在线制服| 亚洲中文无码h在线观看| 欧美日本视频在线观看| 精品一区二区三区中文字幕| 欧日韩在线不卡视频| AV熟女乱| 成人在线观看不卡| 国内精品小视频在线| 国产www网站| 高清无码一本到东京热| 五月婷婷精品| 亚洲天堂成人在线观看| 青青青国产视频手机| 亚洲三级片在线看| 欧美啪啪一区| 亚洲床戏一区| 亚洲色欲色欲www在线观看| 99久久精彩视频| av一区二区三区在线观看| 精品视频第一页| 国产一区二区精品高清在线观看| 国内精品久久人妻无码大片高| 色老头综合网| 日韩精品毛片人妻AV不卡|