第02章程式設計環境

2023-01-06 08:45:03 字數 4686 閱讀 4682

2.1 cb介面

2.2 win 版 hello world

2.2.1 乙個空白工程

2.2.2 最簡單的hello world工程

2.3 dos 版 hello world

2.3.1 乙個空白的控制台工程

2.3.2 用控制台輸出「hello world」

2.4 簡單程式除錯

2.4.1 編譯期錯誤與執行期錯誤

2.4.2 學會使用幫助文件

在第一章,我們從一較高的高度上談論——是的,我們只是在「談論」計算機語言。直到最後一節,我們才相對具體地說到了程式設計工具。這就好比是和乙個初識的女孩子海闊天空地聊了一番國際國內形勢後,臨走時我們問了她一句:

「你有e-mail嗎?」

啟動borland c++ builder 後,你會發現它的視窗和我們常見的一體化視窗的應用程式有所不同,cb的各子視窗並沒有整合在乙個主應用視窗中,而是分散為獨立的子視窗。

(筆者的桌面解析度為1024*728,但為了不讓圖的尺寸太大,我特意將各視窗拉得很小)

如果你開啟cb後出現在介面和上圖有所不同,可以通過file選單,再選new application,建一新的工程,則上圖標註的2到4的視窗應該出現。如果仍然有缺,請用滑鼠點上圖的標註為1所示視窗的標題欄(以確保為活動狀態),然後反覆按f11,f12,可以在以上視窗來回切換。

下面我們來了解這四個視窗:

標註為1的視窗:這是我們比較熟悉的應用程式主視窗,雖然它看上去是乙個長條,不過其上有主選單(mainmenu),工具欄(*******),和別的軟體一樣。不一樣的是這一「長條」的右下部分的多頁式工具條。

事實上它並不是尋常意義上的工具條,因為其上的每一工具按鈕並不提供執行某一命令的功能。我們稱它為控制項欄。控制項是cb提供的了先進的程式設計思想的體現之一,本章後面我們會初步學習如何使用控制項。

標註為2的視窗:相信你一眼就可以看出這是乙個檔案編輯的視窗。我們稱之為**編輯視窗,或簡稱為**視窗。由名及義,這是我們寫程式**的地方。

標註為3的視窗稱它為c++ builder軟體的視窗並不妥當。事實上,它是我們自已要寫的軟體的視窗。windows作業系統的應用軟體,譬如word2000,譬如wps office,或者簡單如畫筆,記事本,總是會有一或多個視窗。

這是windows應用軟體的典型特徵(windows作業系統也因此稱為windows)。儘管也可以寫沒有視窗的應用程式,但大多數情況下我們的程式至少需要乙個視窗,所以cb在建立新工程時,總是預設為我們生成乙個主視窗,這就是標註為3的視窗——在程式執行前,我們稱它為設計表單(form),在程式執行之後,它就是我們程式的視窗。我們的程式需要有幾個不同的視窗,就可在設計期間生成同樣多個類似標註為3的設計表單。

(我對」表單」這個詞總是無法產生具體的概念,可是不僅c++ builder,還有delphi—cb的「姐姐」,以及visual basic——微軟的得意之作,包括.net計畫中的c#等快速應用程式設計系統,都使用form這個詞來稱呼設計期間的視窗。所以我還是統一口徑叫表單。

但不管怎樣,如果你在我的課程中偶爾發現設計視窗這樣的說法,不用猜測,你儘管認定我就是在說表單。乙個原則:只在設計期間,我們才有可能稱它為表單,當視窗執行了,那就是視窗了,我們從不叫乙個執行著的視窗為表單)。

標註為4的視窗,標題寫著「object inspector」直譯物件檢視器。事實上cb在除錯程式時還有乙個「debug inspector」,我倒覺得讓後者叫前者的名字更合適。因為這裡object,也就物件,可不是我們以前說過物件導向的物件。

它其實是用來檢視,設定當前放在設計表單上的某個/些控制項的屬性值和事件值的工具。後面我們會用到它,控制項,也稱元件——但有些cb的書區分這兩者,認為前者是後者的某一特定子集——就是視窗1右下的控制項欄上的控制項,至於控制項的屬性,稍後我們使用時,你就會了解。為了直觀,我決定稱4號視窗為控制項屬性檢視器,或者屬性檢視器,或者屬性視窗,總之離不了屬性二字。

屬性檢視器有兩頁:properties(屬性)和events(事件)。

參照左邊的圖,這裡順便再統一一下口徑,如圖中properties和events;我們稱它為多頁(properties為第一頁,events為第二頁)。

關於分散視窗(蘋果機早期的應用程式風格)的得失,我們不想在此討論。需要說明的是,cb的的各常用子視窗都提供dockable,因此如果你喜歡整合式的視窗,大可通過滑鼠拖拖放放來定製自已的整合視窗。

dockable是指:拖動視窗a,當經由視窗b的某一邊緣地帶時,視窗a可以成為視窗b上的子視窗而停靠在視窗b的某一角落。在cb裡,不僅角落可以停靠,當位置為視窗b的中心時,視窗b還能以多頁的方式加入視窗b。

大多數軟體或許會在退出時儲存住最後的視窗位置大小等設定,cb則提供你隨時儲存,呼叫各套桌面設定,比如編寫**時的桌面,除錯時的桌面等。

以下就是筆者常用的,用於編寫**時cb桌面設定之一,它被我存檔為「powereditdsk」:

這套桌面整合了類專家(clas***plorer),工程管理(project manager)及訊息視窗,任務列表(to-do list)等視窗於**編輯視窗內。

鑑於如果各位的桌面設定不統一會造成課程講解上的一些困難,另外還有乙個不是理由的理由:cb有關桌面的設定有煩人的bug,所以我們的課程使用cb預設的桌面設定,也是文前標有1、2、3、4的那張圖中所示的視窗位置。

編寫自已的第乙個程式,並且用字幕打出「世界你好!」——這是「很早很早」以前一本c程式教材的作者的發明——後來據說成了經典……不過很多人說這太過時了。不管怎樣,我認為這作為我們初次使用cb的教學例子仍然很合適。

很多人可能感到有點突然。當cb慢吞吞啟動後,一堆介面元素無論如何都讓人感到這不是乙個輕量級的人物;我們什麼程式設計基礎都還沒有掌握,能駕馭好這個巨人嗎?其實這就是cb的強大所在:

具有高度的彈性,你可以用它編寫很小的程式,也可以集合數十個程式設計師,用它編寫大型軟體。

牛刀小試開始。

這是windows的天下,儘管在《白話c++》的學習中,windows程式設計並非重點,但我們還是選擇了windows作為我們認識cb的起點。

從主選單中選擇 file | new application

(約定:在談選單命令時我們約定用這種格式:file | new application 表示如上圖的實際操作。)

執行 new application之後,cb為我們新乙個空白工程。所謂空白工程是指:絕大都數windows程式所共同擁有的,必須的乙個框架。

再說白點,就是你每寫乙個新程式,都需要的一堆完全一樣的**,也就是說在多數情況,這是一步機械的工作。既然是「機械」的工作,當然由機器來完成最合適。

很多年前,筆者vc和bc都未流行的時,做了乙個月「機械工」後,和許多那時的程式設計師一樣,筆者很快嘗試自已對這部分的**進行封裝。後來筆者又建議單位購買一套中國人寫的視窗物件類庫;再後來,筆者可始用bc,用vc,至今天,對於大家能有機會直接使用堪稱最好封裝的vcl學習程式設計,筆者能說的一句話就是:珍惜你的機會,珍惜你的20元錢。

空白工程帶有乙個名為「form1」的表單(上一節圖中標有「3」的視窗)。這就是程式執行時的主視窗。驗證一下你就能明白:

請選選單:run | run 或者按 f9 鍵。空白工程——當然也是乙個完整的工程——被編譯成程式,最後自動執行,出現乙個標題為「form1」的視窗。

怎麼和設計時的那個表單一模一樣呢?當然,所見即所得嘛。不一樣的地方也有——設計表單上有一些用於定位的小點,而執行後的視窗沒有這些。

左圖為表單,右圖為視窗,表單(form)指設計時的視窗,視窗(window)指執行時的表單。

關閉該視窗,繼續我們的 hello,world的工作。

請從c++ builder的主視窗(上一節中標有「1」的視窗)右下部的控制項欄中找到如圖所示的label控制項,同時記住:label 控制項在standard 頁中。點選代表該控制項的圖示按鈕:

(圖中畫有字母「a」的圖示按鈕即為label,這個控制項用來顯示一些簡單的文字內容。)滑鼠摁下該按鈕後(按下後按鈕的形狀如上圖),將滑鼠挪取表單form1上隨便位置點左鍵,乙個labe1控制項被放在表單上:

用滑鼠再點一下label1,確保它為如上圖中的選中狀態(帶有八個黑點塊)。我們要通過修改屬性,讓它顯示為「hello,world」。

主選單:view | object inspector (或者按f11鍵),出現object inspector視窗,也就是上一節中標有「4」的視窗,我們稱為控制項屬性檢視器,通過它,我們可檢查並設定當前選中的控制項的屬性(包括事件)。 由於剛才選中了label(如果不是,請重複用滑鼠再點一下表單上的label1)。

所以object inspector 視窗的上部應顯示如下:

上面的 label:tlabel表示當前屬性視窗顯示的是 label1的屬性。同時我們注意下在的caption屬性為label1,(注意,name的屬性也為label1,千萬別混了)。

caption意為「標題」,它決定乙個label顯示的內容。你應該很明白怎麼做了,在圖中所示的caption屬性右邊的編輯框內,將label1改為 hello,world。眼尖的學員一定發現,在改的同時,表單上的labe1l如我們所願,顯示為「hello,world」了。

筆者我眼力不鈍,但還是沒有看到結果,原因是乙個有乙個視窗擋住了form1。按一下f2,form1跳到前面。

再按 f9,只見螢幕一閃,第乙個我們參與設計的程式閃亮登場!

很好,我們已經向這個世界打聲招呼。工作似乎有點成果。我們插播一段關於如何存檔的說明。

在cb中儲存程式,總體上和在字處理裡儲存乙個文件是一樣的操作,比如你一般都要給新文件命名,並且找到乙個合適位置儲存。這裡講的是特別之處。

其一、建議大家為本課程中所講的例子程式準備乙個統一的資料夾,然後以這個資料夾為父資料夾,再為每乙個例子各建乙個子資料夾(除非是教程中特別指出需要將兩個例子工程放於一處)。

第8章程式設計基礎

一 是非題。和loop作用相同,都能終止迴圈。a.對b.錯 2.自定義函式與過程檔案的不同在於自定義函式必須返回乙個值。a.對b.錯 語句只能接收字元型常量。a.對b.錯 4.不管是過程還是函式,接收引數的命令必須出現在被調程式的第一行。a.對b.錯 5.過程檔案可以由若干個過程構成,而過程必須放在...

第02章審計計畫 2019

第二章審計計畫 課後作業 一 單項選擇題 1.註冊會計師開展初步業務活動的目的不包括 a.確定被審計單位財務報表是否存在重大錯報風險 b.具備執行業務所需的獨立性和能力 c.不存在因管理層誠信問題而可能影響註冊會計師保持該項業務的意願的事項 d.與被審計單位之間不存在對業務約定條款的誤解 2.下列各...

第02章埠操作命令

目錄第1章埠配置命令 1 1.1 乙太網埠配置命令 1 1.1.1 bandwidth 1 1.1.2 clear counters 1 1.1.3 flow control 2 1.1.4 inte ce ethernet 2 1.1.5 loopback 3 1.1.6 mdi 3 1.1.7 ...