⑴ 任意輸入20個數,編程(用VF語言)找出最大數和最小數。
VC可以嗎?不知道VF的語法。
VC的表示:
float min,max,box; //min 代表最小值,max代表最大值,box是臨時變數
float array[20]; //array[20]是存放20個數的數組
min=max=array[0]; //把數組的第一個元素給最小值最大值作為初始值
for(int i=1;i<20;i++) //循環語句,i是循環控制量,i<20是循環條件,i++是控制循環條件的語句
{
if(array[i]<min ) //如果min值比第i個元素大,
min=array[i]; //修改min值
if(array[i]>max) //如果max值比第i個元素小
max=array[i]; //修改max值
}
//最後min ,max將記錄20個數字中的最小值和最大值
⑵ vf編程求出1+1+2+2+···+n+n<=1000中n的最大值
#include<stdio.h>
int main()
{int n,s=0;
for(n=0;s<1000;)
{++n;
s+=n*n*n;
}
printf("最大n=%d\n",--n);
return 0;
}
⑶ 跪求整理好的VF指令
<P>APPEND 在表的末尾添加一個或多個新記錄</P>
<P>APPEND FROM 從一個文件中讀入記錄,追加到當前表的尾部</P>
<P>AVERAGE 計算數值表達式或欄位的算術平均值</P>
<P><FONT color=#f70909>BROWSE 打開瀏覽窗口,顯示當前或選定表的記錄</FONT></P>
<P>CHANGE 顯示要編輯的欄位</P>
<P>CLOSE 關閉各種類型的文件</P>
<P>COPY STRUCTURE 用當前選擇的表結構創建一個新的空自由表</P>
<P>COPY TO ARRAY 將當前選定表中的數據復制到數組</P>
<P>COPY TO 用當前選定表的內容創建新文件</P>
<P>COUNT 統計表中記錄數目</P>
<P>CREATE 生成一個新的VisualFoxPro表</P>
<P>CREATE DATABASE 創建並打開一個資料庫</P>
<P>DELETE 給要刪除的記錄做標記</P>
<P>DELETE DATABASE 從磁碟上刪除資料庫</P>
<P>DELETE VIEW 從當前資料庫中刪除一個SQL視圖</P>
<P>DISPLAY 在VisualFoxPro主窗口或用戶自定義窗口中顯示與當前表有關的信息</P>
<P>DISPLAY DATABASE 顯示有關當前資料庫的信息,或當前資料庫中的欄位、命名連</P>
<P>接、表或視圖的信息</P>
<P>DISPLAY MEMORY 顯示內存變數和數組的當前內容</P>
<P>DISPLAY STRUCTURE 顯示一個表文件的結構</P>
<P>DISPLAY VIEWS 顯示當前資料庫中關於SQL視圖的信息以及SQL視圖是否基於本地</P>
<P>或遠程表的信息</P>
<P>DROP TABLE 把一個表從資料庫中移出,並從磁碟中刪除它</P>
<P>DROP VIEW 從當前資料庫中刪除指定的SQL視圖</P>
<P>FIND 查找記錄</P>
<P>GO|GOTO 將記錄指針移動到指定記錄上</P>
<P>INSERT 插入記錄</P>
<P>JOIN 將兩個資料庫文件合並</P>
<P><FONT color=#ff3300>LIST 連續顯示表或環境信息</FONT></P>
<P>LIST DATABASE 連續顯示有關當前資料庫的信息</P>
<P>LOCATE 按順序搜索表從而找到滿足指定邏輯表達式的第一個記錄</P>
<P>MODIFY DATABASE 打開資料庫設計器,讓你能夠交互地修改當前資料庫</P>
<P>MODIFY STRUCTURE 顯示表設計器</P>
<P>MODIFY VIEW 顯示視圖設計器</P>
<P>OPEN DATABASE 打開一個資料庫</P>
<P>PACK 從當前表中永久刪除標有刪除標記的記錄</P>
<P>RECALL 恢復所選表中帶有刪除標記的記錄</P>
<P>SCAN...ENDSCAN 運行掃描數據表文件</P>
<P>SCATTER 從當前記錄中把數據復制到一組內存變數或數組中</P>
<P>SEEK 查找記錄命令</P>
<P>SELECT 激活指定工作區</P>
<P>SET DELETED 指定VisualFoxPro是否處理標有刪除標記的記錄,以及其他命令是</P>
<P>否可以操作它們</P>
<P>SET INDEX 打開一個或多個索引文件,供當前表使用 ;</P>
<P>SET RELATION 在兩個打開的表之間建立關系</P>
<P>SKIP 使記錄指針在表中向前移動或向後移動</P>
<P>SUM 對當前選定表的指定數值欄位或全部數值欄位進行求和</P>
<P>TOTAL 計算當前選定表中數值欄位的總和</P>
<P>UPDATE 更新資料庫文件的記錄</P>
<P>USE 打開一個表及其相關索引文件,或打開一個SQL視圖</P>
<P>ZAP 從表中刪除所有記桌,只留下表的結構</P>
<P><FONT face=黑體color=#0968f7><STRONG>二、索引及排序命令</STRONG></FONT></P>
<P>COPY INDEXES 從單項索引.IDX文件創建復合索引標識</P>
<P>DELETE TAG 從復合索引(.CDX)文件中刪除標識</P>
<P>INDEX 創建一個索引文件,利用該文件可以按某種邏輯順序顯示和訪問表記錄</P>
<P>SET ORDER 指定表的主控索引文件或標識</P>
<P>SORT 對當前選定表進行捧序,井將捧過序的記錄輸出到新表中</P>
<P><FONT face=黑體color=#1111ee><STRONG>三、Visual FoxPro環境設定命令</STRONG></FONT></P>
<P>DISPLAY STATUS 顯示VisualFoxPro環境的狀態</P>
<P><FONT face=黑體color=#1111ee><STRONG>四、SET 設定命令</STRONG></FONT></P>
<P>SET CONSOLE 激活或廢止從程序中向VisualFoxPro主窗口或活動的用戶自定義窗</P>
<P>口的輸出</P>
<P>SET DEFAULT 指定默認的驅動器、目錄或文件夾</P>
<P>SET DEVICE 將@…SAY的輸出結果定向到屏幕、列印機或文件</P>
<P>SET EXACT 指定比較不同長度兩個字元串時,VisualFoxPro使用的規則</P>
<P>SET PATH 指定查找文件的路徑</P>
<P>SET SAFETY 設定確認模式</P>
<P>SET TALK 決定VisualFoxPro是否顯示命令結果</P>
<P><FONT face=黑體color=#0909f7><STRONG>五、Visual FoxPro文件管理命令</STRONG></FONT></P>
<P>COPY FILE 復制任何類型的文件</P>
<P>DELETE FILE 從磁碟上刪除文件</P>
<P>RENAME 把文件名稱更改為一個新名稱</P>
<P>TYPE 顯示文件的內容</P>
<P><FONT face=黑體color=#1a42e6><STRONG>六、Visual FoxPro輸入輸出命令</STRONG></FONT></P>
<P>?|?? 計算表達式的值,並輸出計算結果</P>
<P>\|\\ 文字直接輸出命令</P>
<P>CLEAR 從內存中釋放指定項</P>
<P>CREATE FORM 打開表單設計器</P>
<P>DIR或DIRECTORY 顯示目錄或文件夾中文件的信息</P>
<P>DO FORM 運行用表單設計器創建的、編譯過的表單或表單集</P>
<P>INPUT 由用戶輸入數據</P>
<P>MODIFY FORM 打開表單設計器,從中可以修改或創建一個表單</P>
<P>MODIFY QUERY 打開查詢設計器,從中可以修改或創建一個查詢</P>
<P>MODIFY SCREEN 打開表單設計器</P>
<P>READ 讀取已建立的對象</P>
<P><FONT face=黑體color=#1111ee><STRONG>七、Visual FoxPro菜單命令</STRONG></FONT></P>
<P>DEFINE MENU 創建菜單欄</P>
<P>DEFINE PAD 在用戶自定義菜單欄或Ⅵsu81FoxPro系統菜單欄上創建一個菜單標題</P>
<P>MENU 建立菜單</P>
<P>MENU TO 啟動菜單</P>
<P>MODIFY MENU 打開菜單設計器,從中可以修改或創建菜單系統</P>
<P><FONT face=黑體color=#0909f7><STRONG>八、Visual FoxPro列印命令</STRONG></FONT></P>
<P>MODIFY REPORT 打開報表設計器,從中可以修改或創建一個報表</P>
<P>SET PRINTER 打開或者關閉向列印機的輸出,或將結果輸出到一個文件、埠</P>
<P><FONT face=黑體color=#0000ff><STRONG>九、Visual FoxPro程序管理命令</STRONG></FONT></P>
<P>&& 標明程序文件中非執行的內部注釋的開始</P>
<P>* 標明程序文件中非執行的注釋行的開始</P>
<P>CANCEL 結束當前VisualFoxPro程序的執行</P>
<P>DECLARE 創建一維或二維數組</P>
<P>DIMENSION 創建一維或二維內存變數數組 '</P>
<P>DOCASE...ENDCASE 分支判斷命令</P>
<P>DO 執行一個VisualFoxPro程序或過程</P>
<P>DOWHILE...ENDDO 循環語句</P>
<P>EXIT 從DOWHILE、FOR或SCAN循環中退出</P>
<P>FOR...ENDFOR 循環語句</P>
<P>IF…ENDIF 判斷語句</P>
<P>MODIFY COMMAND 打開一個編輯窗口,從中可以修改或創建程序文件</P>
<P>PARAMETERS 將調用程序傳來的數據賦值給私有內存變數或數組</P>
<P>PRIVATE 在當前程序中隱藏指定的、在調用程序中定義的內存變數或數組</P>
<P>PROCEDURE 用在程序文件中標識一個過程的開始</P>
<P>PUBLIC 定義全局內存變數或數組</P>
<P>QUIT 結束當前VisualFoxPro工作期,並將控制權返回給操作系統</P>
<P>RELEASE 從內存中刪除內存變數和數組</P>
<P>RESTORE FROM 恢復保存在內存變數文件或備注欄位中的內存變數和內存變數數組</P>
<P>,並把它們放回到內存中</P>
<P>RETURN 將程序控制返回給調用程序</P>
<P>SAVE TO 把當前內存變數和數組保存到內存變數文件或備注欄位中</P>
<P>SET PROCEDURE 打開過程文件</P>
<P>WAIT 顯示信息並暫停VisualFoxPro的執行,按某個鍵或單擊滑鼠後繼續執行</P>
<P><FONT face=黑體color=#1111ee><STRONG>十、Visual FoxPro日期及時間命令</STRONG></FONT></P>
<P>SET DATE 指定日期表達式和日期時間表達式的顯示格式</P>
<P><FONT face=黑體color=#0909f7><STRONG>十一、Visual FoxProSQL命令</STRONG></FONT></P>
<P>ALTER TABLE-SQL 以編程方式修改表的結構</P>
<P>DELETE-SQL 給要刪除的記錄做標記</P>
<P>INSERT-SQL 在表尾追加一個包含指定欄位值的記錄</P>
<P>SELECT-SQL 從一個或多個表中檢索數據</P>
<P>UPDATE-SQL 以新值更新表中的記錄</P>
<P><FONT face=黑體color=#0909f7><STRONG>十二、Visual FoxPro類及程序庫命令</STRONG></FONT></P>
<P>DEFINE CLASS 創建一個用戶自定義類或子類,並為創建的類或子類指定屬性、事</P>
<P>件和方法</P>
<P>DISPLAY OBJECTS 顯示有關一個對象或一組對象的信息</P>
<P>MODIFY CLASS 打開類設計器,讓用戶修改已有的類定義或創建新的類定義</P>
一、命令
1.use 表名 打開表
2.List 顯示表記錄,但不能修改
3.browse 瀏覽表記錄,可以修改
4.display 顯示記錄指針指向的記錄
5.append 追加記錄
6.append blank 追加空白記錄
7.insert blank 插入空白記錄
8.delete 邏輯刪除記錄,記錄前出現星號
9.pack 物理刪除,將邏輯刪除的記錄徹底刪除
10.recall 記錄恢復
11.zap 刪除表裡的所有記錄
12.go n 指向第n條記錄
13.go top 指向第一條記錄
14.go bottom 指向最後一條記錄
15.skip n 往下跳n條記錄
16.skip -n 往上跳n條記錄
17.? 從屏幕的下一行的第一列起顯示結果
18.? ? 從當前行當前列起顯示結果
19.use sb to sb() 復制sb表給sb()表
20.recno() 記錄號函數
21.bof() 上溢出
22.eof() 下溢出
23.dimension x(4) 定義數組x,裡面有四個元素,其中每個元素的默認值為.F. declare和dimension 相同
24.replace 替換
25.add 表示增加欄位
26.distinct 不重復記錄
27.error 錯誤
28.continue 繼續
29.else if 否則
30.column 列
31.input 顯示數值
32.accept 顯示字元串
33.wait 是彈出的一個信息框
34.drop 刪除欄位或刪除表
35.otherwise 其它情況
36.check 規則
37.cursor 臨時表
38.build 連編
二、VF里文件類型
1.項目 .pjx project 2.資料庫 .dbc database
3.表 .dbf table 4.菜單 .mnx .mpr menu
5.程序 .prg 6.表單 .scx form
7.報表 .frx report 8.查詢 .qpr query
9.視圖 .vue view 10.文件 .txt
11.備注型文件 .fpt
三、例題
1.creat table student(學號 c(6),姓名c(8),性別c(2),年齡n(2)) 創建學生表
2.insert into student values("001","張三","男",20) 插入一條學生記錄
3.alter table student alter 學號 c(8) 將學號欄位的寬度改為8
4.alter table student rename 學號 to 學生編號 將學號欄位重命名為學生編號
5.alter table student drop 年齡 將年齡欄位刪除
6.alter table student add 所在院系c(10) 為student表增加一個欄位
7.select *from student into table xusheng 將表student復制給表xuesheng
8.update student set 成績=成績+10 where 性別="男" 將男生的成績提高10分
9.delete from student where 性別"女" 冊除所有女生的記錄
10.alter table student alter 學號 set check left(學號,2="00")
四、創建、運行與修改
1.create database 123 創建資料庫123
modify database 123 修改資料庫123 (注意:alter在SQL中修改表結構)
2.modify command 123 修改程序123
do 123 運行程序123
3.create form 123 創建表單123
modify form 123 修改表單123
do form123 運行表單123
4.create menu 123 創建菜單123
modify menu 123 修改菜單123
do 123.mpr 運得菜單123
5.modify query 123 修改查詢123
do 123.qpr 運得查詢123
6.modify report 123 修改報表123
report form 123 運行報表123
7.drop view 123 刪除視圖123
create view 123 創建視圖123 (打開視圖用use)
五、排序
1.sort to nl on 年齡 按年齡升序排列,產生一個新表nl
2.sort to cj on 成績/d 按成績降序排列,產生一個新表cj
六、索引
1.index on 姓名 tag xm //按姓名升序建立普通索引,索引標識為xm//
2.index on 性別 tag xb //按性別升序建立普通索引,索引標識為xb//
3.index on 成績 tag cj descending //按成績降序建立普通索引,索引標識為cj//
4.index on 性別 tag xb1 unique(唯一索引) //按性別升序建立唯一索引,索引標識為xb1//
5.index on 年齡 tag nl candidate //按年齡升序建立候選索引,索引標識為nl//
6.index on 性別+str(成績) tag xbcj //按性別升序,如性別相同按成績升序建立普通索引,索引標識為xbcj//
7.index on 性別+str(成績) tag xbcj1 descending //按性別降序,如性別相同按成績降序建立普通索引,索引標識為xbcj1//
8.index on 年齡-成績/1000000 tag nlcj //按年齡升序,如年齡相同按成績降序建立普通索引,索引標識為nlcj//
9.index on 年齡-成績/1000000 tag nlcj1 descending //按年齡降序,如年齡相同按成績升序建立普通索引,索引標識為xbcj1//
七. 命令
set index to 打開當前的一個或多個索引文件並確定主控索引文件(to後加東西是打開,不加是關閉)
set order to 確定主控索引
locate 順序查找滿足條件的記錄,並且指向它
seek 索引查找
count 記數命令
sum 求和命令
average 求平均值命令
total 匯總命令
max 求最大值
min 求最小值
八.SQL查詢結構
1.select 欄位列表 要顯示的欄位
2.from 表名列表 查詢涉及到的所有表
3.where 條件 條件
4.into 目標 查詢結果輸出到哪去
5.group by 條件表達式 對記錄進行分組
6.having 篩選條件 選擇符合條件的分組
7.order by 關鍵字 對查詢結果按某幾個欄位進行排序
8.top 數值表達式 對顯示表的前幾個記錄
九.程序結構
1.順序結構
2.選擇結構:(1)if 條件表達式 (2)if 條件表達式 (3)do case
語名序列 語名序列1 case 條件表達式1
endif else 語句序列1
語句序列1 case 條件表達式2
endif 語句序列2
case 條件表達式3
語句序列3
3.循環結構:(1)for (2)do while 條件表達式 (3)scan(掃描)
循環體 循環體 循環體
endfor enddo endscan
Loop 重新回到循環的最開始 input to x 從鍵盤輸入一個數給變數x
exit 結束循環跳出循環 accept to y 從鍵盤輸入一個字元串給變數y
set sysmenu to default 退出菜單
thisform.release 退出表單
thisform.refresh 刷新表單
十.函數
數值型函數
函數名 功能 例子 結果
1.abs() 求絕對值 ?abs(-4) 4
2.sqrt() 求平方根 ?sqrt(4) 2
3.int() 取整數 ?int(7.5) 7
4.max() 求最大值 ?max(3,4,5) 5
5.min() 求最小值 ?min(3,4,5) 3
6.mod() 取余 ?mod(11,3) 2
7.round() 四捨五入 ?round(3.1415,3) 3.142
8.ceiling() 返回不小於某值 ?ceiling(3.3) 4
的最小整數
9.floor() 返回不大於指定數
的最大整數 ?floor(3.3) 3
十一.字元處理函數
1.substr() 求子串 ?substr("abcd",2,2) "bc"
2.left() 取左串 ?left("abcd",2) "ab"
3.right() 取右串 ?right("abcd",2) "cd"
4.len() 求串長 ?len("abcd") 4
5.at() 求一個串在另一個
串中出現的位置 ?at("bc","abcd",1) 2
6.space() 輸出空格 ?space(4) " "
7.upper() 將小寫字母轉換成
大寫字母 ?upper("aBc") "ABC"
8.lower() 將大寫字母轉換成
小寫字母 ?lower("aBc") "abc"
9.val() 將字元串轉換為數值 ?val("3.14") 3.14
10.str() 將數值轉換為字元串 ?str(3.14,5,1) "3.1"
11.alltrim() 去掉字元串前面和後面的空格去掉 ?alltrim("abcd") "abcd"
12.stuff 修改字元串 ?stuff("good boy",5.3) "goodgirl"
十二.日期處理函數
1.date() 當前日期 6.ctod() 將字元轉換為日期 ?ctod("10/1/99") {10/01/99}
2.time() 當前時間 7.dtoc() 將日期轉換為字元 ?dtoc({10/01/99}) "10/01/99"
3.year() 取年函數 8.dtos() 將日期轉換為年月日
4.month() 取月函數 格式字元串 ?dtos({10/1/99}) "19991001"
5.day() 取日函數
十三.項目下有六個選項卡
⑷ (vf題)從鍵盤輸入3個數,求他們的最大值,最小值和平均值。
use 學生
記錄指針第一條記錄上
DISPLAY NEXT 4
顯示1-4條記錄
GO BOTTOM
到最後一條記錄,記錄指針
SKIP -3
記錄指針前移三次
DISPLAY REST
顯示最後四條記錄
use
關閉學生表
⑸ vf代碼找出1000以內的10個最大的完數
完數,即完美數,一個數如果恰好等於除它本身外的因子之和,這個數就稱為完數。
1000以內所有完數
C語言代碼:
#include <stdio.h>
/**CopyRight@fantasy0707*/
#define N 1000 //完數求解范圍
main()
{
int i,j,sum; //sum用來存放因子之和
for(i=1;i<N;i++) //對1到1000以內的數依次嘗試
{
sum=0; //給sum賦值,同時也是對上一次的值清空
for(j=1;j<=i/2;j++) //查找因子
{
if(i%j==0) // 如果是因子
{
sum+=j; //把當前的因子累加到sum中
}
}
if(sum==i) //判斷是不是完數,即因子之和等於自身
{
printf("%-5d its factors are: ",i); //是完數,輸出
for(j=1;j<=i/2;j++) //再次找出這個完數的因子
{
if(i%j==0) //輸出各個因子
printf("%d,",j);
}
printf("\n");
}
}
}
⑹ 有沒有人知道計算機二級vf的輔導教程 或者 學習材料 及計算機二級考試的步驟
計算機二級vf,是上午考筆試,下午考機試。
下面是筆試的公共基礎材料。此外,你筆試還需做一套試卷。 機試的題庫,你把郵箱號給我,我給你發過去。
希望能對你有所幫助。。。
公共基礎知識
第一章 數據結構與演算法
(P1—P38) 1.1 演算法 1.1.1 演算法的基本概念 (P1—P4)
所謂演算法是指解題方案的准確完整的描述。
1. 演算法的基本特徵
(1)可行性(2)確定性(3)有窮性(4)擁有夠的情報
2. 演算法的基本要素
一個演算法通常由兩種基本要素組成:一是對數據對象的運算和操作,二是演算法的控制結構。
(1) 演算法中對數據的運算和操作 (插入、刪除)
(2) 演算法的控制結構
一個演算法一般都可以用順序、選擇、循環三種基本控制結構組合而成。
1.1.2 演算法復雜度(P4—P6)
演算法的復雜度主要包括時間復雜度和空間復雜度。
1. 演算法的時間復雜度
所謂演算法的時間復雜度,是指執行演算法所需要的計算工作量。
可以用演算法在執行過程中所需基本運算的執行次數來度量演算法的工作量。
2. 演算法的空間復雜度
一個演算法的空間復雜度,一般是指執行這個演算法所需要的內存空間。
1.2數據結構的基本概念
數據結構,主要研究和討論以下三個方面的問題:
① 數據的邏輯結構;
② 數據的存儲結構;
③ 對各種數據結構進行的運算。(插入、刪除)
主要目的是為了提高數據處理的效率。所謂提高數據處理的效率,主要包括兩個方面:一是提高數據處理的速度,(時間復雜度)二是盡量節省在數據處理過程中所佔用的計算機存儲空間。(空間復雜度)
1.2.1什麼是數據結構 (P6—P11)
1. 數據的邏輯結構
所謂數據的邏輯結構,是指反映數據元素之間邏輯關系的數據結構。
2. 數據的存儲結構
數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構(也稱為數據的物理結構)
一種數據的邏輯結構根據需要可以表示成多種存儲結構,常用的存儲結構有順序、鏈接、索引等存儲結構。而採用不同的存儲結構,其數據處理的效率是不同的。
1.2.3線性結構與非線性結構 (P12)
一般將數據分為兩大類型:線性結構與非線性結構。
線性結構又稱線性表
如果一個數據結構不是線性結構,則稱之為非線性結構。
1.3線性表及其順序存儲結構
1.3.1線性表的基本概念 (P12—P13)
線性表是由n (n≥0)個數據元素a1,a2,…,an組成的一個有限序列,表中的每一個數據元素,除了第一個外,有且只有一個前件,除了最後一個外,有且只有一個後件。即線性表或是一個空表,或可以表示為。
(a1,a2,…,ai,…,an)
非空線性表有如下一些結構特徵:
① 有且只有一個根結點a1,它無前件;
② 有且只有一個終結點an,它無後件;
③ 除根結點與終端結點外,其他所有結點有且只有一個前件,也有且只有一個後件。
1.3.2線性表的順序存儲結構 (P13—P14)
在計算機中存放線性表,一種最簡單的方法是順序存儲,也稱為順序分配。
線性表的順序存儲結構具有以下兩個基本特點:
① 線性表中所有元素據所佔的存儲空間是連續的;
② 線性表中各數據元素在存儲空間中是按邏輯順序依次存放的。
假設線性表中的第一個數據元素的存儲地址為ADR(a1),每一個數據元素佔K個位元組,則線性表中第i 個元素ai在計算機存儲空間中的存儲地址為
ADR(a1)=ADR(a1)+(i-1)K
1.3.3順序表的插入運算 (P14—P15)
在平均情況下,要在線性表中插入一個新元素,需要移動表中一半的元素。因此,在線性表順序存儲的情況下,要插入一個新元素,其效率是很低的。
1.3.4順序表的刪除運算 (P15—P16)
在平均情況下,要在線性表中刪除一個元素,需要移動表中表中一半的元素。因此,在線性表順序存儲的情況下,要刪除一個元素,其效率也是很低的。
由線性表在存儲結構下的插入與刪除運算可以看出,線性表的順序存儲結構對於小線性表或者其中元素不常變動的線性表來說是合適的,因為順序存儲的結構比較簡單。但這種順序存儲的方式對於元素經常需要變動的大線性表就不太合適了,因為插入刪除的效率比較低。
1.4棧和隊列
1.4.1棧及其基本運算 (P16—P18)
1.什麼是棧
棧是限定在一端進行插入與刪除的另一端稱為棧底。即棧是按照「先進後出」(FILO)或「後進先出」(LIFO)的原則組織數據的,因此,棧也被稱為「先進後出」表或「後進先出」表。由此可以看出,棧具有記憶作用。
2.棧的順序存儲及其運算(採用順序存儲結構的棧稱為順序棧)
棧的基本運算有三種:入棧、退棧與讀棧頂元素。
(1) 入棧運算(2)退棧運算(3)讀棧頂元素
1.4.2隊列及其基本運算 (P18—P20)
1.什麼是隊列
隊列(queue)是指允許在一端進行插入、而在另一端進行刪除的線性表。允許插入的一端稱為隊尾,通常用一個稱為尾指針(rear)的指針指向隊尾元素,一端稱為排頭(也稱為隊頭)通常也用一個排頭指針(front)指向排頭元素的前一個位置。
隊列雙稱為「先進先出」或「後進後出」的線性表。
3. 循環隊列及其運算
在實際應用中,隊列的順序存儲結構一般採用循環隊列的形式。
所謂循環隊列,就是將隊列存儲空間的最後一個位置繞到第一個位置,形成邏輯上的環狀空間,供隊列循環使用。
1.5線性鏈表
1.5.1線性鏈表的基本概念 (P20—P23)
由於線性表的順序存儲結構存在以上這些缺點,對於大的線性表,特別是元素變動頻繁的大線性表不宜採用順序存儲結構,而是採用下面要介紹的鏈式存儲結構。
在鏈式存儲方式中,要求每個結點由兩部分組成:一部分用於存放數據元素值,稱為數據域;另一部分用於存放指針,稱為指針域。
在鏈式存儲結構中,存儲數據結構的存儲空間可以下連續,各數據結點的存儲順序與數據元素之間的邏輯關系可以不一致,而數據元素之間的邏輯關系是由指針域來確定的。
鏈式存儲方式既可用於表示線性結構,也可以用於表示非線性結構。
1. 線性鏈表
線性表的鏈式存儲結構稱為線性鏈表。
2. 帶鏈的棧
棧也是線性表,也可以採用鏈式存儲結構。
3. 帶鏈的隊列
與棧類似,隊列也是線性表,也可以採用鏈式存儲結構。
1.5.2線性鏈表的基本運算 (P23—P25)
線性鏈表在插入過程中不發生數據元素移動的現象,只需改變有關結點的指針即可,從而提高了插入的效率。
從線性鏈表的刪除過程可以看出,在線性鏈表中刪除一個元素後,不需要移動表的數據元素,只需改變被刪除元素所在結點的前一個結點的指針域即可。
1.5.3循環鏈表及其基本運算 (P25—P26)
循環鏈表具有以下兩個特點:
(1) 在循環鏈表中增加了一個表頭結點,指針域指向線性表的第一個元素的結點。循環鏈表的頭指針指向表頭結點。
(2) 循環鏈表中最後一個結點的指針域不是空,而是指向表頭結點。即在循環鏈表中,所有結點的指針構成了一個環狀鏈。
1. 6樹與二叉樹
1.6.1樹的基本概念 (P26—P28)
在樹結構中,每一個結點只有一個前件,稱為父結點,沒有前件的結點只有一個,稱為樹的根結點,簡稱為樹的根。
在樹結構中,每一個結點可以有多個後件,它們都稱為該結點的子結點。沒有後件的結點稱為葉子結點。
在樹結構中,一個結點所擁有的後件個數稱為該結點的度
在樹中,所有結點中的最大的度稱為樹的度。
根結點在第1層。
樹的最大層次稱為樹的深度。
1.6.2二叉樹及其基本性質 (P28—P31)
1. 什麼是二叉樹
二叉樹具有以下兩個特點:
① 非空二叉樹只有一個根結點;
② 每一個結點最多有兩棵子樹,且分別稱為該結點的左子樹與右子樹。
2. 二叉樹的基本性質
性質1在二叉樹的第K層上,最多有2K-1(K≥1)個結點。
性質2深度為m的二叉樹最多有2m-1個結點。
性質3在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。
3. 滿二叉樹與完全二叉樹
(1)滿二叉樹
所謂滿二叉樹是指這樣的一種二叉樹:除最後一層外,每一層上的所有結點都有兩個子結點,這就是說,在滿二叉樹中,每一層上的結點數都達到最大值,即在滿二叉樹的第K層上有2K-1個結點,且深度為m的滿二叉樹有2m-1個結點。
(2)完全二叉樹
所謂完全二叉樹是指這樣的二叉樹:除最後一層外,每一層上的結點數均達到最大值;在最後一層上只缺少右邊若干結點。
滿二叉樹也是完全二叉樹,而完全二叉樹一般不是滿二叉樹。
性質6設完全二叉樹共有n個結點。從根結點開始,按層序用自然數1,2,…,n給結點進行編號,則對於編號為k(k=1,2,…,n)的結點有以下結論:
① 若k=1,則該結點為根結點,它沒有父結點;若k>1,則該結點的父結點編號為INT(k/2)。
② 若2k≤n,則編號為k的結點的左子結點編號為2k;否則該結點無左子結點。
③ 若2k+1≤n,則編號為k的結點的右子結點編號為2k+1;否則該結點無右子結點。
1.6.3二叉樹的存儲結構 (P31—P32)
在計算機中,二叉樹通常採用鏈式存儲結構。
1.6.4二叉樹的遍歷 (P32—P33)
二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷、後序遍歷。
1. 前序遍歷(DLR)
2. 中序遍歷(LDR)
3. 後序遍歷(LRD)
1.7查找技術
1.7.1順序查找 (P33)
順序查找又稱順序搜索。
對於大的線性表來說,順序查找的效率是很低的。雖然順序查找的效率不高,但在下列兩種情況下也只能採用順序查找:
(1) 線性表無序表,則不管是順序存儲結構還是鏈式存儲結構,都只能用順序查找。
(2) 即使是有序線性表,如果採用鏈式存儲結構,也只能用順序查找。
1.7.2二分法查找 (P33—P34)
二分法查找只適用於順序存儲的有序表。
顯然,當有序線性表為順序存儲時都能採用二分查找,並且,二分查找的效率要比順序查找高得多。可以證明,對於長度為n的有序線性表,在最壞情況下,二分查找只需要比較log2n次,而順序查找需要比較n次。
1.8排充技術
1.8.1交換類排序法 (P34—P35)
1. 冒泡排序法
冒泡排序法是一種最簡單的交換類排序方法。
假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數為n(n-1)/2。
2. 快速排序法
快速排序法也是一種互換類的排序方法,但由於它比冒泡排序法的速度快,因此稱之為快速排序法。
1.8.2插入類排序法 (P35—P37)
1. 簡單插入排序法
自以為插入排序,是指將無序序列中的各元素依次插入到已經有序的線性表中。
在簡單插入排序法中,這種排序方法的效率與冒泡排序法相同。在最壞情況下,證券交易插入排序需要n(n-1)/2次比較。
2. 希爾排序法
希爾排序法屬於插入類排序,但它對簡單插入排序做了較大的改進。
1.8.3選擇類排序法 (P37—P38)
1. 簡單選擇排序法
從中選出最小的元素,將它交換到表的最前面。
簡單選擇排序法在最壞情況下需要比較n(n-2)/2次。
2. 堆排序法
堆排序法屬於選擇類的排序方法。
堆排序的方法對於規模較小的線性表並不合適,但對於較大規模的來說是很有效的。
第2章 程序設計基礎 (P40—P45)
2.1程序設計方法與風格
程序設計的風格總體而言應該強調簡單和清晰,程序必須是可以理解的。可以認為,著名的「清晰第一,效率第二」的論點已成為當今主導的程序設計風格。
源程序文檔化應考慮如下幾點:
(1) 符號名的命名:符號名的命名應具有一定的實際含義,以便於對程序功能的理解。
(2) 程序注釋:正確的注釋能夠幫助讀者理解程序。注釋一般分為序言性注釋和功能性注釋。
(3) 視覺組織:為使程序的結構一目瞭然,可以在程序中利用空格、空行、縮進等技巧使程序層次清晰。
2.2結構化程序設計
2.2.1結構化程序設計的原則 (P41—P42)
結構化程序設計方法的主要原則可以概括為自頂向下,逐步求精,模塊化,限制使用goto語句。
2.2.2結構化程序的基本結構與特點 (P42—P43)
1. 順序結構
2. 選擇結構:選擇結構又稱為分支結構。
3. 重復結構:重復結構又稱為循環結構。
2.3面向對象的程序設計
今天面向對象方法已經發展成為主流的軟體開發方法。
一些著名的面向對象語言(如C++、Java)
2.3.2面向對象方法的基本概念 (P45—P48)
1. 對象
對象是面向對象方法中最基本的概念。對象可以用來表示客觀世界中的任何實體。
面向對象的程序設計方法中涉及的對象由一組表示其靜態特徵的屬性和它可執行的一組操作組成。
(4) 封裝性。
2. 類(Class)和實例(Instance)
將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法方法的對象的集合。所以,類是對象的抽象,而一個對象則是其對應類的一個實例。
3. 消息
對象間的這種相互合作需要一個機制協助進行,這樣的機制稱為「消息」。消息是一個實例與另一個實例之間傳遞的信息。
4. 繼承
繼承是面向對象的方法的一個主要特徵。
第3章 軟體工程基礎
3.1軟體工程基本概念
3.1.1軟體定義與軟體特點 (P50)
計算機軟體是包括程序、數據及相關文檔的完整集合。
可見軟體由兩部分組成:一是機器可執行和程序和數據;二是機器不可執行的,與軟體開發、運行、維護、使用等有關的文檔。
軟體的特點:
① 軟體是一種邏輯實體,而不是物理實體,具有抽象性。
② 軟體的生產與硬體不同,它沒有明顯的製作過程。
③ 軟體在運行、使用期間不存在磨損、老化問題。
④ 軟體的開發、運行對計算機系統具有依賴性,受計算機系統的限制,這導致了軟體移植的問題。
⑤ 軟體復雜性高,成本昂貴。
⑥ 軟體開發涉及諸多的社會因素。
3.1.2軟體危機與軟體工程 (P51—P52)
軟體工程概念的出現源自軟體危機。
20世紀60年代末以後,「軟體危機」。所謂軟體危機是泛指在計算機軟體的開發和維護過程中所遇到的一系列嚴重問題。
1968年在北大西洋公約組織會議(NATO會議)上,討論擺脫軟體危機的辦法,軟體工程作為一個概念首次被提出。
軟體工程包括個要素,即方法、工具和過程。
3.1.3軟體工程過程與軟體生命周期 (P52—P53)
2.軟體生命周期
通常,將軟體產品從提出、實現、使用維護到停止使用退役的過程稱為軟體生命周期。
3.1.4軟體工程的目標與原則(P53—P54)
1. 軟體工程的目標
軟體工程內容主要包括:軟體開發技術和軟體工程管理。
3.1.5軟體開發工具與軟體開發環境 (P54)
1. 軟體開發工具 (VB、VC++、VFP)
2. 軟體開發環境
軟體開發環境或稱軟體工程環境是全面支持軟體開發全過程的軟體工具集合。
計算機輔助軟體工程(CASE)
3.2結構化分析方法
3.2.1需求分析與需求分析方法 (P53—P59)
1. 需求分析
(1) 需求分析階段的工作
需求分析階段的工作,可以概括為四個方面:
① 需求獲取
② 需求分析
③ 編寫需求規格說明書
④ 需求評審
2. 需求分析方法
常見的需求分析方法有:
① 結構化分析方法。主要包括:面向數據流的結構化分析方法(SA)面向數據結構的Jackson方法(JSD)面向數據結構的結構化數據系統開發方法(DSSD)
② 面向對象的分析方法(OOA)
3.2.2結構化分析方法 (P55—P59)
2.結構化分析的常用工具
(1) 數據流圖(DFD)
(2) 數據字典(DD)
數據字典是結構化分析方法的核心。
(3) 判定樹
(4) 判定表
3.2.3軟體需求規格說明書 (P59—P60)
軟體規格說明書(SRS)是需求分析階段的最後成果,是軟體開發中的重要文檔。
軟體需求規格說明書的作用是:
① 便於用戶、開發人員進行理解和交流。
② 反映出用戶問題的結構,可以作為軟體開發工作的基礎和依據
③ 作為確認測試和驗收的依據。
3.3結構化設計方法
3.3.1軟體設計基本概念 (P60—P62)
1.軟體設計的基礎
軟體設計分兩步完成:概要設計和詳細設計。
2.軟體設計的基本原理
(1) 抽象
(2) 模塊化
(3) 信息隱蔽
(4) 模塊獨立性
模塊獨立程度是評價設計好壞的重要度量標准。衡量軟體的模塊獨立軟體的模塊獨立性使用耦合性和內聚性兩個定性的度量標准。
① 內聚性:內聚性是一個模塊內部各個元素間彼此結合的緊密程度的度量。
② 耦合性:耦合性是模塊間互相連接的緊密程度的度量。
耦合性與內聚性是模塊獨立性的兩個定性標准,耦合與內聚是相互關聯的。在程序結構中,各模塊的內聚性越強,則耦合性越弱。一般較優秀的軟體設計,應盡量做到高內聚,低耦合。
3.3.3詳細設計 (P67—P71)
幾種主要的工具:
1. 程序流程圖(PFD)
2. N-S (盒圖)
3. PAD圖 PAD圖是問題分析圖(Problem Analysis Diagram)的英文縮寫。
4. PDL
過程設計語言(PDL)也稱為結構化的英語和偽碼。
3.4軟體測試
軟體測試的投入,通常其工作量、成本占軟體開發總工作量、總成本的40%以上。
軟體測試是保證軟體質量的重要手段,其主要過程涵蓋了整個軟體生命期的過程。
3.4.1軟體測試的目的 (P71)
關於軟體測試的目的,軟體測試是為了發現錯誤而執行程序的過程。
3.4.3軟體測試技術與方法綜述(P71—P77)
可以分為靜態測試和動態測試方法。若按照功能劃分可以分為白盒測試和黑盒測試方法。
1. 靜態測試與動態測試
(1) 靜態測試
靜態測試可以由人工進行,充分發揮人的邏輯思維優勢。
(2) 動態測試
靜態測試不實際運行軟體,主要通過人工進行。動態測試是基於計算機的測試,是為了發現錯誤而執行程序的過程。
2. 白盒測試
白盒測試方法也稱結構測試或邏輯驅動測試。
3. 黑盒測試方法
黑盒測試方法也稱功能測試或數據驅動測試。黑盒測試是對軟體已經實現的功能是否滿足需求進行測試和驗證。黑盒測試完全不考慮程序內部和邏輯結構和內部特性。
3.4.4軟體測試的實施(P77—P80)
軟體測試是保證軟體質量的重要手段。
軟體測試過程一般按4個步驟進行,
1. 單元測試
單元測試是對軟體設計的最小單位——模塊(程序單元)進行正確性檢驗的測試。
2. 集成測試
集成測試是測試和組裝軟體的過程。
3. 確認測試
4. 系統測試
3.5程序的調試
3.5.1基本概念 (P80—P81)
程序調試的任務是診斷和改正程序中的錯誤。它與軟體測試不同,軟體測試是盡可能多地發現軟體中的錯誤。
軟體測試貫穿整個軟體生命期,調試主要在開發階段。
3.5.2軟體調試方法 (P81—P82)
1. 強行排錯法
2. 回溯法
3.原因排除法
第4章 資料庫設計基礎 (P84—P111)
4.1資料庫系統的基本概念
4.1.1數據、資料庫、資料庫管理系統 (P84—P87)
1. 數據
數據(Data)實際上就是描述事物的符號記錄。
2. 資料庫
資料庫(簡稱DB)是數據的集合。
3. 資料庫管理系統
資料庫管理系統(簡稱DBMS)它是一種軟體。
資料庫管理系統是資料庫系統的核心。
目前流行的DBMS均為關系資料庫系統,如微軟的Visual FoxPro和Access等。
4. 資料庫管理員(簡稱DBA)
5. 資料庫系統
資料庫系統(簡稱DBS)由如下幾部分組成:資料庫(數據)、資料庫管理系統(軟體)、資料庫管理員(人員)、系統平台之一____硬體平台(硬體)、系統平台之二——軟體平台(軟體)這五個部分構成了一個以資料庫為核心的完整的運行實體,稱為資料庫系統。
4.1.2資料庫系統的發展 (P87—P88)
數據管理發展至今已經歷了三個階段:人工管理階段、文件系統階段和資料庫系統階段。
1. 關系資料庫系統階段
4.1.3資料庫系統的基本特點 (P88—P890)
資料庫系統具有以下特點:
1. 數據的集成性
2. 數據的高共享性與低冗餘性
3. 數據獨立性
數據獨立性是數據與程序間的互不依賴性,數據獨立性一般分為物理獨立性與邏輯獨立性兩級。
(1) 物理獨立性:物理獨立性即是數據的物理結構的改變,從而不致引起應用程序的變化。
(2) 邏輯獨立性:資料庫總體邏輯結構的改變,不需要相應修改應用程序,這就是數據 的邏輯獨立性。
4. 數據統一管理與控制
4.1.4資料庫系統的內部結構體系 (P89—P91)
1. 資料庫系統的三級模式
(1) 概念模式。概念模式是資料庫系統中全局數據邏輯結構的描述,是全體用戶(應用)公共數據視圖。
(2) 外模式。外模式也稱子模式或用戶模式。它是用戶的數據視圖。
(3) 內模式。內模式又稱物理模式,它給出了資料庫物理存儲結構與物理存取方法。
2. 資料庫系統的兩級映射
(1) 概念模式到內模式的映射。
(2) 外模式到概念模式的映射。
4.2數據模型
4.2.1數據模型的基本概念 (P91)
數據模型按不同的應用層次分成三種類型,它們是概念數據模型、邏輯模型、物理數據模型,
概念模型有E-R模型、邏輯數據模型又稱數據模型,
層次模型、網狀模型、關系模型,
物理數據模型又稱物理模型。
1.2.2 E-R模型 (P91—P95)
概念模型是E-R模型(或實體聯系模型)
1.E-R模型的基本概念
(1)實體
現實世界中的事物可以抽象成為實體
(2)屬性
現實世界均有一些特性,這些特性可以用屬性來表示。屬性刻畫了實體的特徵。
(3)聯系
一對一的聯系,簡記為1:1。
一對多或多對一聯系,簡記為1:M(1:m)或M:1(m:1)。
多對多聯系,簡高為M:N或m:n。
3.E-R模型的圖示法
在E-R圖中用橢圓形表示屬性。
在E-R圖中用菱形表示聯系。
4.2.3層次模型的基本結構是樹形結構 (P95)
4.2.4網狀模型 (P95—P96)
網狀模型是一個不加任何條件限制的無向圖。
4.2.5關系模型 (P96—P98)
1.關系的數據結構
關系模型採用二維表來表示。
4.3關系代數
(4)查詢
① 投影運算
② 選擇運算
③ 笛卡爾積運算
則關系R與S經笛卡爾積記為R×S。
3.關系代數中的擴充運算
(1)交運算 (還有並和差)
關系R與S經交運算後所得到的關系是由那些既在R內又在S內的有序組成,記為R∩S。
(2)除運算
如果將笛卡爾積運算看作乘運算的話,那麼除運算就是它的運算。
T÷R=S或R/R=S
4.4資料庫設計與管理
資料庫設計是資料庫應用核心。
4.4.1資料庫設計概述 (P104)
整個資料庫應用系統的開發成目標獨立的若干階段。它們是:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段。
4.4.2資料庫設計的需求分析 (P104—P105)
4.4.3資料庫概念設計 (畫E-R圖) (P105—P108)
4.4.4資料庫的邏輯設計 (P108—P109)
1. 從E-R圖向關系模式轉換。
4.4.5資料庫的物理設計 (P110)
⑺ VF 從鍵盤上輸入十個數,然後找出其中的最大值和最小值
這是程序,不能直接在命令窗口中輸入,
你要先用
modi comm 程序名
命令建立一個程序文件,然後將上面的語句復制到程序文件中。