. Chương mở đầu. 1
GIỚI THIỆU CHUNG VỀ NHIỆM VỤ1
Chương I. 2
ĐIỀU HÀNH DỰ ÁN BẰNG PHƯƠNG PHÁP2
PERT-CMP2
(Phương pháp sơ đồ mạng lưới). 2
I. Lập sơ đồ mạng lưới3
II. Phân tích các chỉ tiêu thời gian. Xác định đường căng.5
II.1. Tính các thời điểm.5
II.2. Tính thời gian dự trữ.6
II.3.Đường găng. (đường tới hạn). 7
II.4. Biểu đồ thời gian9
III. Điều khiển nhân lực.11
IV. Hoàn thành sớm dự án.13
V. Dự án có tính ngẫu nhiên.14
VI. Dự án có thoả hiệp thời gian – Cước phí.18
Cước phí trực tiếp. 19
Điểm chuẩn. 19
Thời gian. 19
VII. Kiểm tra hiệu chỉnh dự án.20
CHƯƠNG 2. 21
CƠ SỞ VỀ LÝ THUYẾT ĐỒ THỊ. 21
I .Một số khái niệm cơ bản.21
1.1. Định nghĩa đồ thị.21
1.2. Các thuật ngữ cơ bản.22
1.3.Đường đi, chu trình, đồ thị liên thông.23
II. Biểu diễn đồ thị trên máy tính.25
2.1. Ma trận kề, Ma trận trọng số.25
2.2. Danh sách cạnh (cung).27
2.3. Danh sách kề.27
III. Bài toán tìm đường đi ngắn nhất.27
3.1. Các khái niệm mở đầu.28
3.2.Đường đi ngắn nhất xuất phát từ một đỉnh .29
3.3. Đường đi ngắn nhất giữa tất cả các cặp đỉnh. 30
CHƯƠNG 3. 32
BÀI TOÁN LẬP LỊCH THI CÔNG CÔNG TRÌNH32
I .Bài toán.32
II. Thuật toán Dijkstra.33
III. Giải quyết bài toán.38
IV. Điều khiển nhân lực. 39
Chương IV41
GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH41
I. Cửa sổ thuộc tính.41
1. Một số thuộc tính của đối tượng Form.41
2. Một số thuộc tính của cửa sổ Lable. 42
3. Một số thuộc tính của đối tượng Textbox.42
4. Thuộc tính của đối tượng Commandbox. 43
5. Thuộc tính đối tượng Checkbox.43
6. Thuộc tính hay dùng của đồi tượng picturebox. 43
7. Một số thuộc tính hay dùng của đối tượng Image.44
8. Một số thuộc tính hay dùng của đối tượng Listbox.44
9. Một số thuộc tính hay dùng của đối tượng Combobox. 45
10. Một số thuộc tính hay dùng của đối tượng Timer. 45
11. Một số thuộc tính hay dùng của đối tượng frame. 45
12. Một số thuộc tính hay dùng của đối tượng Button45
13. Một số thuộc tính hay dùng của đối tượng line. 45
14. Một số thuộc tính hay dùng của đối tượng Shape. 46
II. Biến, Kiểu biến và cách khai báo. 46
1. Biến46
2. Kiểu của biến46
3. Cách Khai báo. 47
III. Các phép toán trong Visual Basic. 47
1. Các toán tử trong Visual Basic. 47
2. Thứ tự ưu tiên các phép toán47
3. Toán tử gán47
4. Toán tử quan hệ. 47
5. Toán tử logic. 48
IV. Các cấu trúc điều khiển48
1. Cấu trúc lựa chọn IF48
2. Cấu trúc Select Case. 48
3. Cấu trúc DO WHILE LOOP49
4. Cấu trúc Do . Loop WHILE49
5. Cấu trúc Do Loop Until49
6. Cấu trúc For Next. 49
V. Thủ tục và hàm . 50
1. Thủ tục. 50
2. Hàm . 50
VI. Một số lệnh của Visual Basic. 50
1. Lệnh End. 50
2. Lệnh Exit Do. 50
3. Lệnh Exit For. 51
4. Lệnh Exit Sub. 51
5. Lệnh Beep. 51
6. Lệnh Date. 51
7. Lệnh Time. 51
8. Lệnh Load. 51
9. Lệnh Chdrive. 51
10. Lệnh MkDir. 51
11. Lệnh ChDir. 51
12. Lệnh RmDir. 51
13. Lệnh Kill52
14. Lệnh Name. 52
15. Lệnh AppActive title [, Wait]. 52
VII. Một số hàm dùng trong VB52
1. Hàm Abs (Number). 52
2. Hàm Sin(Number AS Double). 52
3. Hàm Cos (number AS Double). 52
4. Hàm Tan (number AS Double). 52
5. Hàm Atn (number AS Double). 52
6. Hàm Int (number). 52
7. Hàm Fix (number). 52
8. Hàm Sgn (Number). 52
9. Hàm Sqr (Number). 52
10. Hàm Exp (Number). 52
11. Hàm Log (). 52
12. Hàm round (Biểu thức [,so]). 52
13. Hàm Rnd ([Number]). 53
14. Hàm Day (Biến). 53
15. Hàm Month (Biến). 53
16. Hàm Year (biến). 53
17. Hàm Now53
18. Hàm Weekday (biến). 53
19. Hàm Hour (thoigian). 53
20. Hàm Minute (thoigian). 53
21. second (thoigian). 53
22. Hàm Replace (chuoi, chuoicantim, chuoithaythe, vitrithaythe, solanthaythe)53
23. Hàm Val (string). 53
24. Hàm Str (Number). 53
25. Hàm Qbcolor (color). 53
26. Hàm RGB (red, green, blue). 53
27. Hàm Asc (String). 53
28. Hàm Chr (CharCode). 53
29. Hàm Len (Expreession). 54
30. Hàm Ltrim (string). 54
31. Hàm Rtrim (string). 54
32. Hàm Trim (string). 54
33. Hàm Left (String, n). 54
34. Hàm Right (String, n). 54
35. Hàm Mid (String, n [, length]). 54
36. Hàm Space (n). 54
37. Hàm String (n, ký tự). 54
38. Hàm Instr (Start, S1, S2, Compare). 54
39. Hàm Ucase (string). 54
40. Hàm Lcase (string). 54
41. Hàm Format (Value, format). 54
42. Hàm IIF (<Bieu thuc>,<Gia tri1>,<Gia tri2>). 54
VIII. Các phương thức trong VB55
1. Phương thức Print. 55
2. Phương thức CLS. 55
3. Phương thức Move (Left As String [,top][,width][,height]). 55
4. Phương thức Scale (x1,y1)-(x2,y2). 55
5. Phương thức Line (x1, y1) – (x2, y2), color, BF55
6. Phương thức Circle. 55
Chương 5. 56
CÀI ĐẶT BÀI TOÁN56
I. Phân tích bài toán.56
1. Các chức năng chính của bài toán.56
2. Cấu trúc dữ liệu của bài toán.56
II. Giới thiệu chương trình.57
1. Lập lịch thi công công trình.57
2. Điều khiển nhân lực.64
III. Chương trình nguồn.64
KẾT LUẬN66
70 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2436 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Đề tài Điều hành dự án bằng phương pháp PERT-PCM và ứng dụng giải bài toán lập lịch thi công công trình- thầy Đỗ Như An huơg dẫn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
begin
d[v]:=d[u]+a[u,v]:
truoc[v]:=u;
end;
end.
Tính ñuùng ñaén cuûa thuaät toaùn coù theå chöùng minh treân cô sôû nguyeân lyù toái öu cuûa qua hoaïch ñoäng roõ raøng laø ñoä phöôùc taïp tính toaùn cuûa thuaät toaùn laø O(n3) löu yù raøng chuùng ta coù theå chaám döùt voøng laëp theo K khi phaùt hieän trong quaù trình thöïc hieän hai voøng laëp trong khoâng coù bieán d[t] naøo bò ñoåi giaù trò vieäc naøy coù theå xaûy ra vôùi k < n-2 vaø ñieàu ñoù laøm taêng hieäu quaû cuûa thuaät toaùn trong vieäc giaûi caùc bìa toaùn thöïc teá. Tuy nhieân, caùi tieán ñoù khoâng thöïc söï caûi thieän ñöôïc ñaùnh giaù ñoä phöùc taïp cuûa baûn thaân thuaät toaùn. Ñoái vôùi ñoà thò thöa thôùt hôn laø söû duïng danh saùch keà Ke(v), v Î V, ñeå bieåu dieãn ñoà thò, khi ñoù voøng laëp theo u caàn vieát laïi döôùi daïng .
For u Î ke(v) do
If d[v] > d[u]+a[u, v] then
begin
d[u]:= d[u]+a[u, v];
truoc[v]:=u;
end;
trong tröôøng hôïp naøy ta thu ñöôïc thuaät toaùn vôùi ñoä phöùc taïp O (n.m).
3.3. Ñöôøng ñi ngaén nhaát giöõa taát caû caùc caëp ñænh
Roõ raøng ta coù theå giaûi baøi toaùn tìm ñöôøng ñi ngaén nhaát giöõa taát caû caùc caëp ñænh cuûa ñoà thò baèng caùch söû duïng n laàn thuaät toaùn moâ taû ôû muïc tröôùc, trong ñoù ta seõ choïn s laàn löôït laø caùc ñænh cuûa ñoä thò. Roõ raøng, khi ñoù ta thu ñöôïc thuaät toaùn vôùi ñoä phöùc taïp laø O(n3) (neáu söû duïng thuaät toaùn Ford-Bellman) hoaëc O(n3) ñoái vôùi tröôøng hôïp troïng soá khoâng aâm hoaëc ñoà thò khoâng coù chu trình. Trong tröôøng hôïp toång quaùt, söû duïng thuoät toaùn Ford-Bellman n laàn khoâng phaûi laø caùch laøm toát nhaát. ÔÛ ñaây ta seõ moâ taû moät thuaät toaùn giaûi baøi toaùn treân vôùi ñoä phöùc taïp tính toaùn O(n3): Thuaät toaùn Floyd. Thuaät toaùn ñöôïc moâ taû döôùi ñaây.
Procedure Floyd
(* Tìm ñöôøng ñi ngaén nhaát giöõa caùc caëp ñænh
Ñaàu vaøo:Ñoà thò cho bôûi ma traän troïng soá a{i,j},i,j=1,2….,n.
.Ñaàu ra:Ma traän ñöôøng ñi ngaén nhaát giöõa caùc caëp ñænh d{i, j}=1,2….n,
trong ñoù d{i, j} cho ñoä daøi ñöôøng ñi ngaén nhaát töø i ñeán j.
Ma traän ghi nhaän ñöôøng ñi
P{i,j},i,j=1,2…n.
Trong ñoù p{i,j}ghi nhaän ñænh ñi tröôùc ñænh j
Trong ñöôøng ñi ngaén nhaát töø i ñeán j.
*)
Begin
(*khôûi taïo*)
for i:=1 to n do
for j:=1 to n do
begin
d{i, j}:=a{i, j};
p{i, j}:=i;
end;
(*böôùc laëp *)
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if d{i, j}>d{i, k}+d{k, j} then
begin
d{i, j}:=d{i, k}+d{k, j};
p{i, j}:= p{k, j};
end;
end;
Roõ raøng ñoä phöùc taïp tính toaùn cuûa thuaät toaùn laø O(n3).
CHÖÔNG 3
BAØI TOAÙN LAÄP LÒCH THI COÂNG COÂNG TRÌNH
I .Baøi toaùn.
Vieäc thi coâng moät coâng trình lôùn ñöôïc chia ra laøm n coâng ñoaïn, ñaùnh soá töø 1 ñeán n. coù moät soá coâng ñoaïn maø vieäc thöïc hieän noù chæ ñöôïc tieán haønh sau khi moät soá coâng ñoaïn naøo ñoù ñaõ hoaøn thaønh. Ñoái vôùi moãi coâng ñoaïn i bieát t[i] laø thôøi gian caàn thieát ñeå hoaøn thaønh noù (i = 1, 2, ..n).
Ta coù theå xay döïng ñoà thò coù höôùng n ñænh bieåu dieãn haïn cheá veà trình töï thöïc hieän caùc coâng vieäc sau: moãi ñænh cuûa ñoà thò töông öùng vôùi moät ñoà thò, neáu coâng vieäc i phaûi ñöôïc thöïc hieän tröôùc coâng ñoaïn j thì treân ñoà thò coù cung (i, j), troïng soá treân cung naøy ñöôïc gaùn baèng t[i].
Theâm vaøo ñoà 2 ñænh 0 vaø n +1 töông öùng vôùi hai söï kieän ñaëc bieät: ñænh soá 0 töông öùng vôùi coâng ñoaïn Leã khôûi coâng, noù phaûi ñöôïc thöïc thöïc hieän tröôùc taát caû caùc coâng ñoaïn khaùc, vaø ñænh n+1 töông öùng vôùi coâng ñoaïn Caét baêng khaùnh thaønh coâng trình, noù phaûi thöïc hieän sau taát caû caùc coâng ñoaïn, vôùi t[0] = t[n+1] = 0 (treân thöïc teá chæ caàn noái ñænh 0 vôùi taát caû ñænh coù baùn baäc vaøo baèng 0 vaø noái taát caû caùc ñænh coù baùn baäc ra baèng 0 vôùi ñænh n+1). Goïi ñoà thò thu ñöôïc laø G. Roõ raøng baøi toaùn ñaët ra vaán ñeà baøi toaùn tìm ñöôøng ñi daøi nhaát töø ñænh 0 ñeán taát caû caùc ñænh coøn laïi treân ñoà thò G. Do ñoà thò G roõ raøng khoâng chöùa chu trình, neân ñeå giaû baøi toaùn ñaët ra coù theå aùp duïng caùc thuaät toaùn ñöôïc neâu ôû treân.
Thí duï: Ta coù baûng caùc haïng muïc ñöôïc cho trong baûng döôùi ñaây.
Haïng muïc
t[i]
Haïng muïc phaûi hoaøn thaønh tröôùc
1
2
3
4
5
6
7
8
10
15
10
30
1 2
15
20
10
1
2,3
4
2,3
5,6
5
1 : 0
0 1 2 : 10
0 3 : 0
0 1 2 4 : 25
0 1 2 4 5 : 55
0 3 6 : 10
0 1 2 4 5 : 55
Ñöa veà baøi toaùn ñoà thò coù höôùng, caùc ñænh laø caùc haïng muïc nhö hình sau:
1 (10) 2 5 (12) 8
(0) (10)
0 (15) (30) (12) 9
(0) (10) (15) (15) (20) 3 4
6 7
(10)
Caùch giaûi quyeát:
* Theâm hai ñænh 0 vaø ñænh 9 ta thu ñöôïc moät ñoà thò coù höôùng trong ñoù troïng soá t[i] laø caïnh xuaát phaùt töø i
* Tìm ñöôøng ñi daøi nhaát thì
- Ñoåi daáu troïng soá
- Tìm ñöôøng ñi ngaén nhaát xuaát phaùt töø 0
Laëp
VH
1
2
3
4
5
6
7
8
9
Ktaïo
0
0,0
0,¥
0,0
0, ¥
0, ¥
0, ¥
0, ¥
0, ¥
0, ¥
1
*
1,-10
0,0
0, ¥
0, ¥
0, ¥
0, ¥
0, ¥
0, ¥
2
*
0,0
2,-25
0, ¥
2,-25
0, ¥
0, ¥
0, ¥
3
*
2,-25
0, ¥
2,-25
0, ¥
0, ¥
0, ¥
4
*
4,-25
2,-25
0, ¥
0, ¥
0, ¥
5
*
2,-25
5,-67
5,-67
0, ¥
6
*
5,-67
5,-67
0, ¥
7
*
5,-67
7,-87
8
*
7,-87
9
*
Chöông trình söû duïng thuaät toaùn Dijkstra ñeå tình thôøi gian caùc coâng vieäc baét ñaàu vaø keát thuùc döï aùn.
Chöông trình thi coâng coâng trình khoâng söû duïng tröïc tieáp thuaät toaùn naøy maø coøn phuï thuoäc vaøo caùc coâng vieäc laøm ñaàu tieân, vì vaäy coâng vieäc ñaàu tieân laø ta phaûi xaùc ñònh coâng vieäc naøo laø coâng vieäc ñaàu tieân, vieäc xaùc ñònh coâng vieäc ñaàu tieân cuõng raát ñôn giaûn, khi ta nhaäp soá lieäu thì coâng vieäc ñaàu tieân thì khoâng coù coâng vieäc naøo laøm tröôùc noù.
Ñeå giaûi baøi toaùn treân ta coù theå duøng nhieàu phöông phaùp. Nhöng trong ñeà taøi naøy chuùng toâi söû duïng thuaät toaùn Dijkstra.
II. Thuaät toaùn Dijkstra.
Thuaät toaùn Dijkstra ñöôïc phaùt bieåu nhö sau:
Trong tröôøng hôïp troïng soá treân caùc cung laø khoâng aâm do Dijkstra ñeà nghò ñeå giaûi baøi toaùn tìm ñöôøng ñi ngaén nhaát töø dænh s ñeán caùc ñænh coøn laïi cuûa ñoà thò . Thuaät toaùn ñöôïc xaây döïng treân cô sôû gaùn cho caùc ñænh caùc nhaõn taïm thôøi. Nhaõn cuûa moãi ñænh cho bieát caän treân cuûa ñoä daøi ñöôøng ñi ngaén nhaát töø s ñeán noù. Caùc nhaõn naøy seõ ñöôïc bieán ñoåi theo moät thuû tuïc laëp, maø ôû moãi böôùc laëp coù moät nhaõn taïm thôøi trôû thaønh nhaõn coá ñònh. Neáu nhaõn cuûa moät ñænh naøo ñoù trôû thaønh coá ñònh thì noù seõ cho ta khoâng phaûi laø caän treân maø laø ñoä daøi ñöôøng ñi ngaén nhaát töø ñænh s ñeán noù. Thuaät toaùn ñöôïc moâ taû nhö sau.
Procedure Dijkstra;
(* Ñaàu vaøo: Ñoà thò coù höôùng G=(V, E) vôùi n ñænh
s Î V laø ñænh xuaát phaùt a[u, v], u, v Î V, ma traän troïng soá
Giaû thieát: a[u, v] >= 0, u, v Î V
Ñaàu ra: khoaûng caùch töø d(s) ñeán taát caû caùc ñænh coøn laïi d[v], v Î V
Truoc [v], v Î V, ghi nhaän ñænh tröôùc v trong ñöôøng ñi ngaén nhaát töø s ñeán v
*)
Begin
(* Khôûi taïo *)
for v Î V do
Begin
d[v] := a[s, v];
Truoc[v] := s;
End;
d[s] := 0;
T := V \ {s} (*Taäp caùc ñænh coù nhaõn taïp thôøi *)
(* Böôùc laëp*)
while T 0 do
Begin
Tìm ñænh u Î T thoûa maõn d[u] = min { d[z]: z Î T}
T := T \ {u}; (*Coá ñònh nhaõn cuûa ñænh u*)
For v Î T do (*Gaùn nhaõn laïi cho caùc ñænh trong T*)
If d[v] > d[u] + a[u, v] then
Begin
D[v] := d[u] + a[u, v]
Truoc [v] := u;
End;
End;
End;
Ñònh lyù 1: Thuaät toaùn Dijkstra tìm ñöôïc ñöôøng ñi ngaén nhaát treân ñoà thò sau thôøi gian côù O(n2).
Chöùng minh: Tröôùc heát ta chöùng minh laø thuaät toaùn tìm ñöôøng ñi ngaén nhaát töø ñænh s ñeán caùc ñænh coøn laïi cuûa ñoà thò. Giaû söû raèng ôû moät böôùc laëp naøo ñoù caùc nhaõn coá ñònh cho ta ñoä daøi caùc ñöôøng ñi töø s ñeán caùc ñænh coù nhaõn coá ñònh, ta seõ chöùng minh raèng ôû laàn laëp tieáp theo neáu ñænh u* thu ñöôïc nhaõn coá ñònh d(u*) chính laø ñoä daøi ñöôøng ñi ngaén nhaát töø s ñeán u*.
Kyù hieäu S: laø taäp hôïp coù nhaõn coá ñònh coøn S2 laø taäp caùc ñænh coù nhaõn taïm thôøi ôû böôùc laëp ñang xeùt. Keát thuùc moãi böôùc laëp nhaõn taïm thôøi d(v) cho ta ñoä daøi cuûa ñöôøng ñi ngaén nhaát töø s ñeán v chæ qua nhöõng ñænh naèm hoaøn toaøn trong taäp S1. Giaû söû raèng ñöôøng ñi ngaén nhaát töø s ñeán u* khoâng naèm trong taäp S1, töùc laø noù ñi qua ít nhaát moät ñænh cuûa taäp S2. Goïi z Î S2 laø ñænh ñaàu tieân nhö vaäy treân ñöôøng ñi naøy . Do troïng soá treân caùc cung laø khoâng aâm, neân ñoaïn ñöôøng töø z ñeán u* coù ñoä daøi L > 0 vaø d(z) < d(u*) – L < d(u*).
Baát ñaúng thöùc naøy laø maâu thuaãn vôùi caùch xaùc ñònh u* laø ñænh coù nhaõn taïm thôøi nhoû nhaát. Vaäy ñöôøng ñi ngaén nhaát töø ñænh s ñeán u* phaûi naèm choïn trong S1, vaø vì theá d[u*] laø ñoä daøi cuûa noù. Do ôû laàm laëp ñaàu tieân S1 = {s} vaø sau moãi laàn laëp ta chæ theâm vaøo S1 moät ñænh u* neân giaû thieát laø d(v) cho ñoä daøi ñöôøng ñi ngaén nhaát töø s ñeán v vôùi moïi v Î S1 laø ñuùng vôùi böôùc laëp ñaàu tieân. Theo qui naïp suy ra thuaät toaùn cho ñöôøng ñi ngaén nhaát töø s ñeán moïi ñænh cuûa ñoà thò.
Baây giôø ta ñaùnh giaù soá pheùp toaùn caàn thöïc hieän theo thuaät toaùn. ÔÛ moãi böôùc laëp ñeå tìm ra ñænh u caàn thöïc hieän O(n) pheùp toaùn, vaø ñeå gaùn nhaõn laïi cuõng phaûi thöïc hieän moät soá löôïng pheùp toaùn cuõng la O(n). Thuaät toaùn phaûi thöïc hieän n- 1 böôùc laëp. Vaäy thôøi gian tính toaùn cuûa thuaät toaùn laø côõ O(n2).
Thí duï: Tìm ñöôøng ñi ngaén nhaát töø ñænh 1 ñeán caùc ñænh coøn laïi cuûa ñoà thò ôû hình döôùi:
(7)
2 3 6
(5) (1)
(1) (2) (1) (1)
(4)
1 (2) 4 (3) 5
Minh hoïa thuaät toaùn Dijkstra
Keát quaû tính toaùn ñöôïc trình baøy trong baûng döôùi ñaây.
Böôùc laëp
Ñænh 1
Ñænh 2
Ñænh 3
Ñænh 4
Ñænh 5
Ñænh 6
Khôûi taïo
0, 1
1, 1*
¥, 1
¥, 1
¥, 1
¥, 1
1
-
-
6, 2
3, 2*
¥, 1
8, 2
2
-
-
4, 4*
-
7, 4
8, 2
3
-
-
-
-
7, 4
5, 3
4
-
-
-
-
6, 6 *
-
5
-
-
-
-
-
-
Chuù yù:
1) Neáu chæ caàn tìm ñöôøng ñi ngaén nhaát töø s ñeán t naøo ñoù thì coù theå keát thuùc thuaät toaùn khi ñænh t trôû thaønh ñænh coù nhaõn coá ñònh.
(1)
Soá phaàn töû:= soá ñænh -1;
i:=1;
i < ñnguoàn
Taäp ñænh[i]:=i;
Ññ-ñeán[i]:=kc[ñnguoàn, i];
Ññ- tröïc tieáp ñeán[i]:=ñnguoàn;
i:=i+1;
i:=ñnguoàn +1
i £ soá ñænh
Taäp ñænh[i]:=i;
Ññ-ñeán[i]:=kc[ñnguoàn, i];
Ññ- tröïc tieáp ñeán[i]:=ñænh nguoàn;
i:=i+1;
Baét Ñaàu
N
Y
N
Y
* Sô ñoà thuaät toaùn Dijkstra.
(1)
(3)
(4)
(2)
j£ soá ñænh -2
Min:= ññ-ñeán[ñænh[1]];
Vò trí :=1;
i£ k
Ññ-ñeán[ñænh[i]] <min;
Min:= ññ-ñeán[ñænh[i]];
Vò trí :=i;
i:=i+1
Ñænh xeùt:=ñænh[vò trí];
Ñænh[vò trí]:=ñænh[spt];
Spt:=spt-1;
i:=1
i£ spt
Y
N
Y
N
Y
N
Y
N
(4)
(2)
X:=ñænh[i]
(3)
Ññ-ñeán[x] > Ññ-ñeán[ñænh xeùt]+ kc[ñænh xeùt,x];
Ññ-ñeán[x]:=Ññ-ñeán[ñænh xeùt
+ kc[ñænh xeùt,x]];
i:=i+1;
Keát Thuùc
Y
N
III. Giaûi quyeát baøi toaùn.
Sau khi ñöa baøi toaùn veà daïng ñoà thò coù höôùng, vôùi moãi ñænh laø moät haïng muïc ta coù theå tieán haønh nhö sau:
- Chuyeån thaønh ma traän troïng soá coù daïng a(i, j), vôùi haïng muïc i phaûi ñöôïc thi coâng tröôùc haïng muïc j, giaù trò cuûa a(i, j) cho bieát thôøi gian haïng muïc i laøm xong.
- Ñoåi daáu giaù trò cuûa ma traän: ví duï a(i, j) = -a(i, j)
- Aùp duïng thuaät toaùn Dijkstra.
- Keát thuùc thuaät toaùn ta thu ñöôïc d[u] .
- Ñoåi daáu giaù trò d[u] vöøa thu ñöôïc: d[v] = -d[u]
- Giaù trò d[v] chính laø ñöôøng ñi daøi nhaát töø 0 ñeán ñænh v, khi ñoù d[v] cho ta thôøi ñieåm sôùm nhaát coù theå baét ñaàu thöïc hieän coâng ñoaïn v, noùi rieâng d[n+1] laø thôøi ñieåm sôùm nhaát coù theå caét baêng khaùnh thaønh toaøn boä coâng trình.
Töông töï nhö treân ví duï treân khi keát thuùc toaøn boä döï aùn, keát quaû thu ñöôïc nhö sau:
Giaû söû leã khôûi coâng döï aùn laø 1-1-2003
Thì sau 87 ngaøy (Giaû söû ñôn vò tính laø ngaøy) ta coù theå caét baêng khaùnh thaønh toaøn boä döï aùn.
IV. Ñieàu khieån nhaân löïc
Caùc hoaït ñoäng khoâng gaêng ñöôïc pheùp xeâ dòch nhaát ñònh, nhaát laø khi FFij = TFij. Coù theå saép ñaët chuùng ñaùp öùng caùc yeâu caàu khaùc nöõa. Ngoaøi thôøi gian ra, chaúng haïn nhaân löïc, nguyeân lieäu, chi phí …Veà maët toaùn hoïc xöû lyù yeâu caàu loaïi naøo cuõng vaäy. ÔÛ ñaây ta noùi theo ngoân ngöõ nhaân löïc chaúng haïn.
Thí Duï III.1. Giaû söû nhaân löïc cho caùc hoaït ñoäng cuûa döï aùn ôû Thí Duï II.2 ñoøi hoûi nhö sau:
Hoaït ñoäng
Soá nhaân coâng
Hoaït ñoäng
soá nhaân coâng
(1, 2)
0
(4, 6)
2
(1, 3)
5
(4, 7)
1
(2, 4)
0
(5, 6)
2
(3, 4)
7
(5, 7)
5
(3, 5)
3
(6, 7)
6
Chuù yù raèng taïi thôøi ñieåm hai hoaït ñoäng cuøng tieán haønh thì soá nhaân löïc caàn laø toång hai soá coâng nhaân. Vì vaäy caàn phaûi saép xeáp kheùo caùc hoaït ñoäng khoâng gaêng ñeå ñoøi hoûi toång nhaân coâng cuûa caû döï aùn ít (taïm coi laø moãi ngöôøi bieát laøm moïi vieäc). Vieäc saép xeáp toái öu laø phöùc taïp, ñeán nay ta söû duïng bieåu ñoà thôøi gian bieåu dieãn theâm nhaân löïc ñeå saép xeáp theo tröïc quan. H.1.6 (a) bieåu dieãn toång coâng nhaân caàn ôû moãi thôøi ñieåm neáu taát caû caùc hoaït ñoäng khoâng gaêng xeáp vaøo luùc sôùm nhaát coù theå, coøn H.1.6 (b) laø töông öùng khi xeáp vaøo luùc muoän nhaát coù theå. Hai bieåu ñoà naøy neân veõ thaúng döôùi H.1.5 nöõa. Saép ñaët sôùm nhaát ôû hình (a) cho thaáy ôû moãi thôøi ñieåm döï aùn caàn nhieàu nhaát laø 10 coâng nhaân coøn ôû saép ñaët muoän nhaát (b) laø 12 coâng nhaân. ÔÛ hai phöông aùn naøy, soá coâng nhaân caàn ôû caùc thôøi ñieåm khoâng ñeàu. Theo tröïc quan ta chænh laïi töø (a) nhö sau: chuyeån hoaït ñoäng (4, 6) ñeáân thôøi ñieåm muoän nhaát coù theå, chuyeån (4, 7) ñeán ngay sau khi (5, 7) keát thuùc. Keát quaû ñöôïc veõ laïi ôû bieåu ñoà H.1.7. (chuù yù laø hoaït ñoäng (1, 2) vaø (2, 4) khoâng caàn coâng nhaân neân khoâng caàn veõ.).
Chöông IV
GIÔÙI THIEÄU NGOÂN NGÖÕ LAÄP TRÌNH
Visual Basic laø moät ngoân ngöõ laäp trình khaù phoå bieán hieän nay, noù laø moät coâng cuï raát tieän lôïi cho haàu heát caùc chöông trình öùng duïng, caùc chöông trình söû lyù theo yeâu caàu cuûa ngöôøi duøng. Ñieàu ñaëc bieät cuûa ngoân ngöõ Visual Basic ñoù laø noù duøng ngay giao dieän ngöôøi duøng ñoà hoïa , hay GUI (Graphical User Interface).
Ñieàu ñaëc bieät, Visual Basic cho pheùp boå xung caùc menu, hoäp vaên baûn, nuùt leänh, nuùt tuøy choïn (cho caùc löïa choïn loaïi tröø), caùc hoäp kieåm tra (cho caùc löïa choïn khoâng loaïi tröø), caùc hoäp danh saùch, thanh cuoán, caùc hoäp taäp tin vaø thö muïc cho caùc cöûa soå troáng. Baïn coù theå duøng caùc löôùi (Grid) ñeå quaûn lyù döõ lieäu theo baûng. Baïn coù theå truyeàn thoâng vôùi caùc öùng duïng Windows khaùc, vaø coù theå laø quan troïng nhaát, baïn seõ coù moät phöông phaùp deã daøng ñeå ngöôøi duøng ñieàu kieåm vaø truy caäp caùc cô sôû döõ lieäu. (Nhöõng thaønh phaàn ñoù ñöôïcVisual basic goïi laø Ñieàu Kieåm (control)).
Coù theå coù nhieàu cöûa soå treân maøn hình. Caùc cöûa soå naøy coù toaøn queàn truy caäp clipboard vaø caùc thoâng tin trong haàu heát caùc öùng duïng Windows khaùc chaïy cuøng luùc. Baïn coù theå duøng Visual Basic ñeå truyeàn thoâng vôùi caùc öùng duïng khaùc ñang chaïy döôùi Windows. Duøng phieân baûn hieän ñaïi nhaát cuûa coâng ngheä COM/OLE trong Windows.
Phöông thöùc laäp trình cuûa Visual Basic laø thieát keá tröôùc, vieát leänh sau. Vì vaäy moâi tröôøng laøm vieäc khoâng phöùc taïp nhö caùc ngoân ngöõ laäp trình khaùc. Chuùng bao goàm caùc ñoái töôïng.
I. Cöûa soå thuoäc tính.
1. Moät soá thuoäc tính cuûa ñoái töôïng Form.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Duøng ñeå ñaët teân cho Form, teân naøy seõ ñöôïc duøng cho thuû tuïc maø baïn vieát maõ.
Appearance
Quy ñònh caùch theå hieän cuûa Form
Flat (Form phaúng)
3D (Form noåi)
Backcolor
Choïn maøu neàn cuûa Form
Bordestyle
Quy ñònh kieåu khung cuûa Form
Caption
Quy ñònh tieâu ñeà cuûa Form
Controlbox
Neáu ñaët laø true thì cöûa soå coù Controlmenubox.
Neáu ñaët laø False thì cöûa soå khoâng coù Controlmenubox.
Icon
Duøng Icon coù bieåu töôïngnhö theá naøo khi baïn click nuùt minimize
Max buttion
Neáu ñaët laø true thì cöûa soå coù nuùt Maximize
Neáu ñaët laø false thì cöûa soå khoâng coù nuùt Maximize
Min buttion
Neáu ñaët laø true thì cöûa soå coù nuùt Minimize
Neáu ñaët laø false thì cöûa soå khoâng coù nuùt Miniimize
Moveable
Neáu ñaët laø true thì coù theå nhaán Mouse vaøo tieâu ñeà vaø keùo ñi nôi khaùc, neáu False thì khoâng keùo ñi ñöôïc
Showintaskbar
True: cöûa soå naøy hieän leân teân cuûa noù cuõng theå hieän trong taskbar cuûa Öindôù, neáu False thì khoâng.
Visiable
True: Thaáy Form
False: aån Form
Windowstate
Quy ñònh kích thöôùc Form
Bình thöôøng
Cöïc tieåu
Cöïc ñaïi
2. Moät soá thuoäc tính cuûa cöûa soå Lable
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Teân cuûa lable
Alignment
Canh noäi dung cuûa lable
Canh traùi
Canh phaûi
Canh giöõa
Autosize
Baïn chon true noù töï ñoäng co giaõn cho vöøa noäi dung cuûa noù
Choïn false thì baïn töï ñieàu chænh cho vöøa
Backcolor
Quy ñònh maøu neàn cho lable
Caption
Ghi chöõ treân lable
Font
Choïn kieåu chöõ cho lable
Fontcolor
Quy ñònh maøu chöõ treân lable
3. Moät soá thuoäc tính cuûa ñoái töôïng Textbox.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho Textbox
Alignment
Canh noäi dung cuûa textbox
Canh traùi
Canh phaûi
Canh giöõa
Appearance
Quy ñònh caùch theå hieän cuûa Textbox
flat bình thöôøng
3D 3 chieàu
Backcolor
Quy ñònh maøu neàn cho Textbox
Font
Choïn kieåu chöõ cho textbox
Forecolor
Quy ñònh maøu chöõ treân textbox
Maxlength
Quy ñònh soá kyù töï toái ña nhaäp vaøo textbox
Multiline
True: coù theå xuoàng haøng khi chieàu ngang khoâng ñuû
False: khoâng xuoáng haøng
Scrollbar
Duøng ñeå xaùc laäp hoäp textbox khoâng coù thanh cuoán doïc, ngang haëc caû hai vôùi ñieàu kieän thuoäc tính Mulltiline = true
Text
Baïn haõy xoùa chöõ vaø ñeå troáng
Visible
Quy ñònh text coù ñöôïc nhìn thaáy treân form hay khoâng
True: nhìn thaáy, False: khoâng nhìn thaáy
4. Thuoäc tính cuûa ñoái töôïng Commandbox
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng Commandbox
Caption
Laøm tieâu ñeà cho nuùt
Font
Choïn font cho nuùt
Visible
True: nuùt nhìn thaáy
False: nuùt khoâng nhìn thaáy
5. Thuoäc tính ñoái töôïng Checkbox.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho checkbox
Alignment
Canh noäi dung cuûa checkbox
Appearance
Quy ñònh caùch theå hieän cuûa Checkbox
Backcolor
Quy ñònh maøu neàn cho checkbox
Font
Choïn kieåu chöõ cho checkbox
Caption
Doøng tieâu ñeà cho checkbox
Forecolor
Quy ñònh maøu chöõ cho checkbox
Value
0: Khoâng choïn
1: traïng thaùi choïn
2: Traïng thaùi xaùm
Visible
True: Khoâng nhìn thaáy
False: nhìn thaáy
6. Thuoäc tính hay duøng cuûa ñoài töôïng picturebox
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Teân cho ñoái töôïng picturebox
Autosize
True: töï ñoäng ñaët laïi kích thöôùc cuûa ñoái töôïng cho vöøa vôùi kích thöôùc cuûa hình ñaõ ñöôïc ñaët vaøo
False: neáu hình ñaët vaøo lôùn hôn kích thöôùc thì hình naøy seõ bò che khuaát
Picture
Duøng ñeå löu tröù böùc hình baïn muoán trình baøy
Align
Duøng ñeå quy ñònh caùch boá trí ñaëc bieät cuûa picture treân form
Autoredraw
Hình seõ khoâng bò xoùa ñi khi baïn thu nhoû hay phoùng to kích thöôùc
Fillcolor
Quy ñònh maøu toâ cho caùc phöông thöùc ñoà hoïa
Fillstyle
Quy ñònh daïng maøu toâ
Drawstyle
Quy ñònh ñöôøng neùt veõ
Drawith
Quy ñònh ñoä daøy neùt veõ
7. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Image.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng Image
Picture
Töông töï nhö thuoäc tính picture cuûa ñoùi töôïng picturebox
Borderstyle
Quy ñònh kieåu khung coù (1) hoaëc khoâng coù khung(0)
Stretch
True: hình seõ töï ñoäng co giaõn sao cho vöøa vaëên trong ñoái töôïng
False: ñoái töôïng seõ töï ñiruf chænh cho vöøa vôùi hình
8. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Listbox.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng Listbox
Colums
Duøng ñeå theå hieän listbox coù bao nhieâu coät, maëc nhieân laø 1
Integranlhieght
True: Listbox seõ töï ñieàu chænh kích thöôùc sao cho khoâng coù muïc naøo bò che khuaát nöûa chöøng
False: thì seõ chính xaùc nhö khi baïn thieát keá
Listcount
Xaùc ñògh danh saùch coù bao nhieâu muïc, baïn chæ coù theå ñoïc chöù khoâng ñaët laïi giaù trò
List
Quy ñònh moät danh saùch cho Listbox
Multiselect
Quy ñònh moãi laàn chæ coù theå choïn moät hay nhieàu muïc
Listindex
Muïc ñang coù focut trong danh saùch laø muïc thöù bao nhieâu
Selcount
Cho bieát hieän ñang coù bao nhieâu muïc ñöôïc choïn trong danh saùch
Sorted
True: Saép xeáp danh saùch theo thöù töï
False: saép xeáp nhö trình töï baïn ñöa vaøo
9. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Combobox
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng combobox
Style
Quy ñònh kieåu cho combobox
Sorted
True: Saép xeáp theo thöù töï Alphabet
False: saép xeáp nhö trình töï baïn ñöa vaøo
10. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Timer
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng Timer
Enable
True: cho pheùp phaùt ra söï kieän thôøi gian
False: ngöôïc laïi
Interval
Laø gí trò soá duøng ñeå quy ñònh bao nhieâu laâu thì phaùt ra söï kieän thôøi gian. Ñôn vò tính laø miligiaây. Neáu ñaët laø 0 thì ñoái töôïng timer khoâng hoaït ñoäng
11. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng frame
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng frame
Caption
Noäi dung cuûa tieâu ñeà frame
12. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Button
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng option button
Alignment
Quy ñònh vò trí nuùt choïn
0: nuùt choïn naèm beân traùi tieâu ñeà
1: nuùt choïn naèm beân phaûi tieâu ñeà
Caption
Tieâu ñeà cuûa option button
Font
Choïn font chöõ cho tieâu ñeà
Value
Neáu giaù trò naøy baèng true thì option naøy ñang ñöôïc choïn, ngöôïc laïi thì noù ñang ôû vò troù khoâng ñöôïc choïn
13. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng line
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng line
Bordercolor
Quy ñònh maøu cho ñöôøng thaúng
Borderwith
Quy ñònh ñoä daøy cuûa ñöôøng thaúng
Borderstyle
Quy ñònh kieåu ñöôøng thaúng coù giaù trò töø 0 ñeán 7
X1, X2, X3, X4
Xaùc ñònh toïa ñoä cuûa ñöôøng thaúng treân form
Drawmode
Quy ñònh mode ñeå veõ ñöôøng
14. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Shape
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng shape
Shape
Quy ñònh moät soá hình daùng
0: Hình chöõ nhaät
1: Hình vuoâng
2: hình ellipse
3: Hình troøn
4: Hình chöõ nhaät troøn goùc
5: Hình vuoâng troøn goùc
Fillstyle
Quy ñònh caùc kieåu veõ coù giaù trò töø 0 ñeán 7
Fillcolor
Quy ñònh maøu toâ beân trong cuûa hình
Borderstyle
Quy ñònh kieåu kieåu ñöôøng vieàn cuûa hình
Borderwith
Quy ñònh ñoä daøy neùt cuûa hình
Berdercolor
Quy ñònh maøu ñöôøng vieàn
Backstyle
Quy ñònh maøu neàn cuûa hình
Backcolor
Quy ñònh maøu cuûa phaàn neàn khi backstyle laø Opque
II. Bieán, Kieåu bieán vaø caùch khai baùo
1. Bieán
Töông töï nhö caùc ngoân ngöõ laäp trình khaùc, bieán laø moät yeáu toá khoâng theå thieáu, bieán nhö laø moät phaàn cuûa boä nhôù, muoán döû duïng ta phaûi khai baùo. Teân bieán khoâng daøi quaù 255 kyù töï, coù tính gôïi nhôù, khoâng duøng caùc kyù hieäu, traùnh duøng caùc töø khoùa cuûa VB
2. Kieåu cuûa bieán
Khi khai baùo bieán ta phaûi khai boùa kieåu cho noù. Trong VB, ngöôøi ta duøng moät loaïi tieáp ngöõ nhö $, &, #, @, … ñeå bieát bieán ñoù coù kieåu laø gì, cuï theå nhö sau:
- String: laø kieåu döõ lieäu chuoãi, khoaûng giaù trò coù theå leân ñeán hai tyû kyù töï. Nhaän bieát bieán naøy baèng tieáp ngöõ $
Ví duï: Hoten$ = “Traàn Vaên Hai”.
Byte: laø kieåu soá nguyeân döông, khoaûng giaù trò töø 0 ñeán 255.
Long: laø caùc soá nguyeân, khoaûng giaù tròn töø –2.147.483.648 ñeán 2.147.483.647. Nhaän bieát bieán naøy baèng daáu & ôû cuoái
Ví duï: A& 50.
Integer: laø caùc soá nguyeân töø –32.768 ñeán 32.767. Nhaän bieát baèng daáu % ôû cuoái
Ví duï: b% = 1234
Single: laø caùc soá coù daáu chaám thaäp phaân, coù giaù trò aâm töø – 3,402823E8 ñeán –1,40129823E8 vaø coù gía trò döông töø 1,401298E-45 ñeán 3,402823E8. Nhaän bieát baèng daáu ! ôû cuoái
Ví duï: C! = 4.7
- Double: laø caùc soá coù daáu chaám thaäp phaân. Nhaän bieát baèng daáu # ôû cuoái. Khoaûng giaù trò töø –1,797693134486231E308 ñeán – 44,94065645841247E-324, giaù trò döông töø 44,94065645841247E-324 ñeán 1,797693134486231E308.
Ví duï: D# = 6.432
- Currency: Coù 15 soá naèm beân traùi daáu phaûy, 4 soá naèm beân traùi daáu phaûy. Nhaäp bieát baèng daáu @ ôû cuoái. Khoaûng giaù trò töø – 922337203685477,5808 ñeán 922337203685477,5807.
Ví duï: e@ = 5.1234.
- Date: Löu rtöõ thoâng tin veà thôøi gian. Nhaän bieát baèng daáu # ôû ñaàu vaø ôû cuoái.
Ví duï: ngay = #12/12/2003#
- Boolean: bieán logic coù giaù trò true hay false duøng ñeå gaùn giaù trò hay trong caùc caâu leänh ñieàu kieän
- Variant: Löu taát caû caùc giaù trò khaùc nhau.
3. Caùch Khai baùo
Ngoaøi caùch nhaän bieát bieán baèng caùc tieáp vò ngöõ, ta coù theå khai baùo bieán nhö sau:
DIM AS
Vi duï: DIM Ten AS String
III. Caùc pheùp toaùn trong Visual Basic
1. Caùc toaùn töû trong Visual Basic
Toaùn töû ^: Duøng ñeå tính luõy thöøa
Toaùn töû *: Duøng ñeå nhaân hai soá haïng
Toaùn töû \: Chia hai soá laáy phaàn nguyeân
Toaùn töû / : Chia hai soá laáy giaù trò thöïc
Mod: Chia laáy phaàn dö
Toaùn töû +: Coäng hai toaùn haïng
Toaùn töû -: Tröø hai toaùn haïng
2. Thöù töï öu tieân caùc pheùp toaùn
Pheùp tính luõy thöøa
Ñoåi moät soá thaønh soá aâm
Nhaân vaø chia
Chia soá nguyeân
Chia laáy soá dö
Coän g vaø tröø
3. Toaùn töû gaùn
a = b
4. Toaùn töû quan heä
Kyù hieäu
Yù nghóa
Ví duï
=
Baèng nhau
A=b
<
Nhoû hôn
A<b
<=
Nhoû hôn hoaëc baèng
A<=b
Khaùc nhau
Ab
>
Lôùn hôn
a>b
>=
Lôùn hôn hoaëc baèng
a>=b
5. Toaùn töû logic
A
NOT A
True
False
False
True
- Pheùp toaùn AND, OR vaø XOR
A
B
A And B
A or B
True
True
True
True
True
False
False
True
False
True
False
True
False
False
False
False
IV. Caùc caáu truùc ñieàu khieån
1. Caáu truùc löïa choïn IF
Caáu truùc löïa choïn IF cho pheùp ta reõ chöông trình thaønh 2 nhaùnh, neáu baïn muoán reõ nhieàu nhaùnh thì coù theå söû duïng caáu truùc IF loàng nhau.
Caáu truùc If khoâng coù Else
If Then
___________
End If
Caáu truùc If coù Else
If Then
____________
Else
____________
End If
2. Caáu truùc Select Case
Caáu truùc naøy ñöôïc duøng khi baïn xeùt nhieàu ñieàu kieän cho moät bieán naøo ñoù
CASE
_____’ Caùc leänh
CASE
_____’ Caùc leänh
CASE
_____’ Caùc leänh
CASE ELSE
_________
END SELECT
3. Caáu truùc DO WHILE ….. LOOP
Caáu truùc nhö sau
DO WHILE
‘ caùc leänh
LOOP
Caâu leänh naøy thöïc hieän nhö sau:
Tröôùc tieân noù kieåm tra ñieàu kieän: neáu ñieàu kieän ñuùng thì thöïc hieän leänh sau ñoù kieåm tra ñieàu kieän cho ñeán khi dieàu kieän sai thì thöïc hieän sau leänh LOOP
Neáu ñieàu kieän sai thì thöïc hieän leänh sau LOOP, boû qua leänh giöõa DO… LOOP
4. Caáu truùc Do …. Loop WHILE
Caáu truùc nhö sau
Do
‘ Caùc leänh
Loop While
Caâu leänh naøy thöïc hieän nhö sau:
Caùc caâu leänh sau Do seõ ñöôïc thöïc hieän, sau ñoù môùi xeùt ñieàu kieän khi ñieàu kieän sai thì môùi thöïc hieän leänh sau Loop
Neáu ñieàu kieän sai thì thöïc hieän leänh sau Loop
5. Caáu truùc Do … Loop Until
Caáu truùc nhö sau:
Do
‘ Caùc leänh
Loop until
Caâu leänh thöïc hieän nhö sau
Caùc leänh sau do seõ ñöôïc thöïc hieän tröôùc cho ñeán khi naøo ñieàu kieän ñuùng
6. Caáu truùc For … Next
Caáu truùc nhö sau
For to Step [khoaûng taêng]
‘ Caùc leänh
Next Bieán
Ñeå döøng caáu truùc For ta duøng phaùt bieåu Exit For
Ngoaøi ra, muoán thoaùt ra khoûi thuû tuïc vôùi ñieàu kieän naøo ñoù ta duøng thuû tuïc Exit Sub
V. Thuû tuïc vaø haøm
1. Thuû tuïc
Khi laäp trình ta thöôøng gaëp nhöõng ñoaïn chöông trình hay laäp ñi laäp laïi nhieàu laàn ôû nhöõng choã khaùc nhau. Ñeå chöông trình ñôõ phöùc taïp, caùc ñoaïn naøy ñöôïc thay theá baèng caùc chöông trình con töông öùng, khi caàn ta chæ caàn goïi noù ra maø khoâng caàn pahæ vieát laïi caû ñoaïn.
Maët khaùc, ñoái vôùi moät soá chöông trình lôùn vaø phöùc taïp. Vieäc xem xeùt toång quan cuõng nhö vieäc gôõ roái, hieäu chænh seõ raát khoù khaên. Vieäc laäp caùc chöông trình con seõ chia chöông trình ra thaønh töøng khoái, töøng modul. Ñieàu naøy giuùp cho chuùng ta kieåm tra, gôõ roái vaø ñieàu khieån deã daøng.
Caáu truùc cuûa moät thuû tuïc coù daïng nhö sau:
Sub
______________’ Caùc leänh
End Sub
Neáu baïn muoán duøng thuû tuïc naøy trong toaøn boä chöông trình thì baïn duøng theâm töø khoùa Public tröôùc töø khoùa Sub, coøn neáu baïn chæ muoán duøng trong moät form chöùa noù thì baïn theâm töø khoùa Private tröôùc töø khoùa Sub
2. Haøm
Haøm cuõng töông töï nhö thuû tuïc, chæ khaùc laø ta duøng haøm khi muoán nhaän laïi moät keát quaû traû laïi cuûa haøm.
Caáu truùc haøm nhö sau:
Function (tham soá AS Kieåu) AS
______________’ Caùc Leänh
Teân haøm = Giaù trò
End Function
VI. Moät soá leänh cuûa Visual Basic
1. Leänh End
Duøng ñeå chaám söùt chöông trình ñang chaïy, khi leänh naøy thöïc hieän thì caùc cöûa soå chöông trình seõ ñoùng laïi vaø giaûi phoùng ra khoûi boä nhôù. Leänh naøy thöôøng ñöôïc söû duïng cho nuùt leänh coù teân Exit côùi bieán coá Click
Ví duï
Sub Command1_Click()
End
End Sub
2. Leänh Exit Do
Leänh naøy duøng ñeå thoaùt khoûi voøng laëp Do
Ví duï
Do While
____________
Exit Do
3. Leänh Exit For
Leänh naøy duøng ñeå thoaùt khoûi voøng laëp For
4. Leänh Exit Sub
Leänh naøy duøng ñeå thoaùt khoûi chöông trình con naøo ñoù
5. Leänh Beep
Leänh naøy phaùt ra tieáng Beep
6. Leänh Date
Leänh naøy cho pheùp baïn ñaët laïi ngaøy giôø cuûa heä thoáng.
Cuù phaùp: Date = #Ngaøy#
Ví duï
Date = #07/12/20003#
Text1 = Date
7. Leänh Time
Leänh naøy cho pheùp baïn ñaët laïi giôø cuûa heä thoáng
Cuù phaùp: Time = #giôø#
Ví duï:
Time = # 11:53:AM#
8. Leänh Load
Leänh naøy duøng ñeå naïp moät Form vaøo boä nhôù
Cuù phaùp: Laod teân Form
Ví duï
Load form1
Form1.Show
9. Leänh Chdrive
Duøng ñeå ñoåi oå ñóa laøm vieäc
Ví duï:
Chdrive “D:” chuyeån xang laøm vieäc treân ñóa D
10. Leänh MkDir
Duøng ñeå taïo thö muïc môùi treân ñóa
Ví duï:
MkDir “C:/Baitap” ‘ Taïo thö muïc baøi taäp naèm ôû thö muïc goác ñóa C
11. Leänh ChDir
Duøng ñeå thay ñoåi thö muïc laøm vieäc.
Ví duï:
ChDir “\Lythuyet” ‘ chuyeån xang laøm vieäc thö muïc lyù thuyeát
12. Leänh RmDir
Leänh naøy duøng ñeå xoùa thö muïc roãng ñang toàn taïi reân ñóa.
Ví duï:
RmDir “C:\Baitap” ‘ Xoùa thö muïc Baitap treân ñóa C
13. Leänh Kill
Duøng ñeå xoùa moät hay nhieàu taäp tin treân ñóa
Ví duï:
Kill “C:\baitap\bt1.txt”’ xoùa taäp tin bt1.txt trong thö muïc baitap treân oå C
14. Leänh Name
Leänh naøy duøng ñeå ñoåi tin moät taäp tin treân cuøng moät oå ñóa.
Ví duï:
Name “C:\bt.txt” as “C:\baitap.txt”
15. Leänh AppActive title [, Wait]
Duøng ñeå kích hoaït moät cöûa soå trong moät chöông trình naøo ñang chaïy.
VII. Moät soá haøm duøng trong VB
1. Haøm Abs (Number)
Haøm naøy traû veà moät soá laø giaù trò tuyeät ñoái cuûa Nuumber
2. Haøm Sin(Number AS Double)
Tính Sin cuûa moät goùc
3. Haøm Cos (number AS Double)
Tính Cos cuûa moät goùc
4. Haøm Tan (number AS Double)
Tính Tan cuûa moät goùc
5. Haøm Atn (number AS Double)
Tính Artang cuûa moät goùc
6. Haøm Int (number)
Traû veà phaàn nguyeân cuûa moät soá neáu laø soá döông. Coøn neáu laø soá aâm thì seõ traû veà phaàn nguyeân coù giaù trò nhoû hôn moät ñôn vò.
7. Haøm Fix (number)
Haøm traû veà phaàn nguyeân cuûa moät soá.
8. Haøm Sgn (Number)
Haøm traû veà moät soá nguyeân.
Neáu so >0 seõ traû veà giaù trò laø 1
Neáu so <0 seõ traû veà giaù trò laø –1
Neáu so = 0 seõ traû veà giaù trò laø 0
9. Haøm Sqr (Number)
Tính caên baäc hai cuûa moät soá
10. Haøm Exp (Number)
Tính e muõ cuûa moät soá
11. Haøm Log ()
Tính Logarit cuûa moät soá. Haøm traû veà giaù trò thöïc
12. Haøm round (Bieåu thöùc [,so])
Haøm naøy seõ laøm troøn soá
13. Haøm Rnd ([Number])
Haøm traû veà moät soá thöïc ngaãu nhieân
14. Haøm Day (Bieán)
Traû veà soá ghi ngaøy cuûa bieán nhaäp vaøo
15. Haøm Month (Bieán)
Traû veà soá ghi thaùng cuûa bieán nhaäp vaøo
16. Haøm Year (bieán)
Traû veà soá ghi naêm cuûa bieán nhaäp vaøo
17. Haøm Now
Traû veà ngaøy thaùng naêm vaø thôøi gian hieän taïi
18. Haøm Weekday (bieán)
Cho bieát thöù maáy trong tuaàn
19. Haøm Hour (thoigian)
Cho bieát giôø öùng vôùi bieán.
20. Haøm Minute (thoigian)
Cho bieát phuùt öùng vôùi bieán.
21. second (thoigian)
Cho bieát giaây öùng vôùi bieán.
22. Haøm Replace (chuoi, chuoicantim, chuoithaythe, vitrithaythe, solanthaythe)
Thay theá chuoãi naøy baèng moät chuoãi khaùc.
23. Haøm Val (string)
Traû veà moät soá thöïc töông öùng vôùi chuoãi String. String phaûi laø moät chuoãi goàm caùc kyù soá hôïp leä.
Giaù trò cuûa haøm laø 0 neáu chuoãi coù kyù töï ñaàu laø kyù töï
Giaù trò cuûa haøm laø moät soá neáu chuoãi ñoù hoaøn toaøn laø caùc kyù soá.
Neáu caùc kyù töï soá vieát caùch nhau thì haøm naøy seõ caét boû khoaûng traéng vaø cho traû veà giaù trò baèng vôùi daõy naøy.
24. Haøm Str (Number)
Haøm traû veà moät chuoãi kyù töï.
Chuoãi naøy luoân luoân coù moät kyù töï ñaàu ghi daáu trong tröôøng hôïp soá aâm, hoaëc moät khoaûng troáng trong tröôøng hôïp soá döông
25. Haøm Qbcolor (color)
Haøm cho maøu cuûa moät ñoái töông naøo ñoù
26. Haøm RGB (red, green, blue)
Choïn maøu baát kyø qua tæ leä 3 maøu chuaån Red, Green, Blue.
27. Haøm Asc (String)
Traû veà maõ Ascii cuûa kyù töï string
28. Haøm Chr (CharCode)
Haøm traû veà moät kyù töï töông öùng vôùi moät maõ Ascii naøo ñoù
29. Haøm Len (Expreession)
Cho bieát chieàu daøi cuûa chuoãi
30. Haøm Ltrim (string)
Haøm naøy traû veà moät chuoãi sau khi ñaõ caét boû moät soá khoaûng troáng beân traùi cuûa chuoãi
31. Haøm Rtrim (string)
Haøm naøy traû veà moät chuoãi sau khi ñaõ caét boû moät soá khoaûng troáng beân phaûi cuûa chuoãi
32. Haøm Trim (string)
Haøm naøy traû veà moät chuoãi sau khi ñaõ caét boû moät soá khoaûng troáng beân traùi vaø beân phaûi cuûa chuoãi
33. Haøm Left (String, n)
Haøm traû veà moät chuoãi kyù töï ñöôïc caét töø n kyù töï (keå caû kyù töï traéng) beân traùi cuûa chuoãi String.
34. Haøm Right (String, n)
Haøm traû veà moät chuoãi kyù töï ñöôïc caét töø n kyù töï (keå caû kyù töï traéng) beân phaûi cuûa chuoãi String.
35. Haøm Mid (String, n [, length])
Haøm naøy traû veà moät chuoãi, chuoãi naøy ñöôïc laáy töø chuoãi String baét ñaàu töø vò trí n vôùi chieàu dai length.
36. Haøm Space (n)
Haøm traû veà moät chuoãi goàn n khoaûng traéng.
37. Haøm String (n, kyù töï)
Haøm traû veà moät chuoãi kyù töï gioáng nhau.
38. Haøm Instr (Start, S1, S2, Compare)
Duøng ñeå tìm moät chuoãi con coù naèm trong chuoãi meï hay khoâng, neáu coù thì naèm ôû vò trí thöù maáy.
Start: Vò trí baét ñaàu tìm, khoâng ghi thì tìm ôû vò trí ñaàu
S1 vaø S2 laø chuoãi meï vaø chuoãi con
Compare coù giaù trò
0: So saùnh chính xaùc töøng kyù töï
1: So saùnh khoâng phaân bieät chöõ hoa, chöõ thöôøng
2: Chæ duøng trong khi laäp trình cho Microsoft Acess
39. Haøm Ucase (string)
Ñoåi thaønh chöõ hoa.
40. Haøm Lcase (string)
Ñoåi thaønh chöõ thöôøng.
41. Haøm Format (Value, format)
Duøng ñeå ñònh daïng
42. Haøm IIF (,,)
Haøm naøy traû veà giaù trò 1 neáu bieåu thöùc ñuùng, vaø ngöôïc laïi thì traû veà giaù trò 2.
VIII. Caùc phöông thöùc trong VB
1. Phöông thöùc Print
In ra maøn hình cuûa moät bieåu maãu, moät doøng duy nhaát taïi vò trí hieän thôøi cuûa con troû.
2. Phöông thöùc CLS
Duøng ñeå xoùa
3. Phöông thöùc Move (Left As String [,top][,width][,height])
Duøng ñeå di chuyeån ñoái töôïng ñeán vò trí xaùc ñònh vaø hieäu chænh noù vôùi kích thöôùc môùi.
4. Phöông thöùc Scale (x1,y1)-(x2,y2)
Duøng ñeå quy ñònh laïi toïa ñoä treân form
5. Phöông thöùc Line (x1, y1) – (x2, y2), color, BF
Duøng ñeå veã moät ñöôøng thaúng hay moät hình chöõ nhaät
6. Phöông thöùc Circle
Duøng ñeå veã moät hình troøn, ellipse, cung troøn, cung ellipse treân Form hay treân Picturebox.
Chöông 5
CAØI ÑAËT BAØI TOAÙN
I. Phaân tích baøi toaùn.
1. Caùc chöùc naêng chính cuûa baøi toaùn.
Chöông trình goàm caùc chöùc naêng sau:
- AÙp duïng phöông phaùp PERT-PCM vaøo ñeå giaûi quyeát baøi toaùn laäp lòch thi coâng coâng trình, coâng vieäc naøy nhaèm laäp ra moät lòch thi coâng caùc coâng trình trong moät döï aùn sao cho thôøi gian hoaøn thaønh döï aùn laø toái öu nhaát veà thôøi gian, chuùng ta chæ caàn nhìn vaøo lòch laäp ra laø ñaõ ñieøu khieån ñöôïc döï aùn cuûa chuùng ta.
- Ñieàu khieån nhaân löïc khi thi coâng caùc coâng trình, coâng vieäc naøy giuùp chuùng ta ñieàu khieån löôïng nhaân coâng hieän coù.
2. Caáu truùc döõ lieäu cuûa baøi toaùn.
Döõ lieäu cuûa baøi toaùn ñöôïc löu tröõ döôùi daïng moät baûng ghi coù caáu truùc nhö sau:
Type LuuTru
DinhDau As Long
DinhCuoi As Long
GiaTri As Long
NgayThiHanh As Date
Ten As String * 50
End Type
Trong ñoù DinhDau löu tröõ soá thöù töï cuûa haïng muïc caàn phaûi laøm tröôùc, ví duï nhö sau
1 (10) 2 5 (12) 8
(0) (10)
0 (15) (30) (12) 9
(0) (10) (15) (15) (20) 3 4
6 7
(10)
thì khi ñoù DinhDau seõ coù giaù trò laø 1, DinhCuoi seõ coù giaù trò laø 2 vaø luùc ñoù GiaTri seõ baèng 10, ngaøy thi haønh duøng ñeå löu tröõ ngaøy baét ñaàu thi haønh döï aùn, coøn bieán Ten duøng ñeå löu tröõ teân caùc haïng muïc caàn thi coâng, ví duï haïng muïc (1,2 ) laø xaây töôøng chaúng haïn, khi ñoù luùc löu tröõ döõ lieäu seõ löu tröõ taát caû caùc bieán ñoù.
Chöông trình coøn löu tröõ theâm moät File duøng ñeå löu tröõ theân teân caùc haïng muïc noù cuõng coù daïng moät baûng ghi nhö sau;
Type HocvienType
TenHM As String * 50
End Type
Bieán TenHM duøng ñeå löu tröõ caùc teân haïng muïc, caùc teân naøy seõ ñöôïc löu tröõ döôùi daïng moät File cuøng caáp vôùi File nguoàn cuûa chöông trình khi chöông trình chaïy, noù coù taùc duïng caäp nhaät nhöõng teân haïng muïc môùi cho chöông trình cuûa chuùng ta.
II. Giôùi thieäu chöông trình.
Chöông trình bao goàm hai coâng vieäc chính ñoù laø: Laäp lòch thi coâng coâng trình vaø Ñieàu khieån nhaân löïc
1. Laäp lòch thi coâng coâng trình.
Chöông trình ñöôïc toå chöùc döôùi moät Menu chính coù daïng nhö sau
Menu chính cuûa chöông trình naøy lieân keát vôùi moïi Form cuûa chöông trình, ôû ñaây ta coù theå söû duïng chöông trình Help ñeå ñöôïc höôùng daãn söû duïng hoaëc taïi moãi bieåu töôïng cuûa chöông trình ñeàu coù Tooltip baèng tieáng Vieät hieän leân, vì vaäy baïn coù theå deã daøng söû duïng chöông trình naøy.
Töø Form chính naøy ta coù theå tieán haønh ñöôïc caùc coâng vieäc nhö sau:
- Môû moät File môùi ñeå nhaäp döõ lieäu töø ñaàu: baèng caùch baám vaøo bieåu töôïng New coù hình tôø giaáy traéng, hoaëc baám vaøo Menu File/New ñeå chöông trình baét ñaàu laøm vieäc.
+ Sau khi baám New thì chöông trình seõ cho moät Form chöa coù döõ lieäu. Töø ñaây baïn coù theå nhaäp döõ lieäu ñeå tính toaùn: ñaàu tieân laø nhaäp soá haïng muïc caàn laøm trong moät döï aùn, ôû ñaây soá haïng muïc phaûi laø soá, vaø soá phaûi laø soá döông.
+ Neáu baïn nhaäp sai chöông trình seõ thoâng baùo loãi ñoù vaø yeâu caàu baïn nhaäp laïi cho ñeán khi naøo nhaäp ñuùng thì thoâi, baïn cuõng coù theå Click vaøo nuùt HuûyBoû ñeå huûy boû coâng vieäc nhaäp döõ lieäu.
+ Sau khi nhaäp xong baïn coù theå baám nuùt Enter ñeå xaùc ñònh soá baïn vöøa nhaäp, hoaëc Click vaøo bieåu töông Tieáp Tuïc , chöông trình seõ kieåm tra sem baïn ñaõ nhaäp ñuùng chöa. Neáu chöa ñuùng thì baïn phaûi nhaäp laïi.
+ Baïn coù theå huûy boû baèng caùch Click vaøo bieåu töôïng Huûy Boû hoaëc nhaán phím ESC ñeå huûy boû vieäc nhaäp döõ lieäu cuûa mình vaø quay trôû laïi Form ban ñaàu.
+ Sau khi nhaäp xong soá haïng muïc caàn tính toaùn vaø nhaán Enter chöông trình seõ cho moät baûng tính trong ñoù baïn caàn phaûi nhaäp teân cuûa töøng haïng muïc maø trong döï aùn caàn phaûi laøm, ôû ñaây baïn coù theå goõ tröïc tieáp teân töøng haïng muïc hoaëc baïn coù theå söû duïng phöông phaùp gaép thaû töø moät danh saùch beân caïnh, neáu teân haïng muïc naøo chöa coù thì baïn coù theå boå xung teân haïng muïc baèng caùch Click vaøo muïc Boå xung teân haïng muïc, tieáp theo baïn nhaäp thôøi gian laøm xong cuûa töøng haïng muïc moät vaø söï raøng buoäc giöõa caùc haïng muïc vôùi nhau, neáu coù moät haïng muïc maø coù nhieàu hôn 2 haïng muïc phaûi laøm tröôùc thì phaûi nhaäp chuùng caùch nhau baèng daáu “,”
+ Neáu haïng muïc naøo maø khoâng laøm töø ñaàu thì baïn coù theå boû traéng khoâng caàn nhaäp ñieàu kieän raøng buoäc töùc laø haïng muïc ñoù seõ laøm ñaàu tieân, khoâng caàn phaûi laøm sau baát cöa haïng muïc naøo.
+ Khi nhaäp xong baïn coù theå baám Enter hoaëc Click vaøo bieåu töôïng Soá Lieäu Nhaäp ñeå xaùc ñònh vieäc nhaäp döõ lieäu cuûa baïn.
+ Khi laäp döõ lieäu môùi baïn caàn chuù yù laø nhaäp thôøi gian baét ñaàu tieán haønh döï aùn, thôøi gian baét ñaàu ôû ñaây phaûi lôùn hôn thôøi gian hieän taïi, neàu khoâng chöông trình cuõng seõ hieän moät thoâng baùo noùi raèng baïn nhaäp sai, vaø taát nhieân baïn phaûi nhaäp laïi.
+ Neáu baïn muoán huûy boû vieäc nhaäp cuûa baïn, baïn coù theå baám vaøo nuùt Quay Laïi hoaëc baám nuùt ESC ñeå thoaùt khoûi chöông trình vaø quay trôû laïi maøn hình ban ñaàu.
+ Neáu trong quaù trình nhaäp döõ lieäu baïn khoâng bieát caùch baïn coù theå tham khaûo höôùng daãn baèng caùch Click vaøo bieåu töôïng Trôï Giuùp
+ Neáu vieäc nhaäp döõ lieäu toát baïn coù theå baám nuùt Quay Laïi ñeå tieáp tuïc chöông trình.
- Sau khi ñaõ coù döõ lieäu baïn coù theå coù ñöôïc moät ñoà thò moâ taû söï lieân heä giöõa caùc haïng muïc baèng caùch Click vaøo bieåu töôïng Imetate hoaëc töø Menu Imetate\Graph seõ cho ta ñoà thò moâ taû döõ lieäu.
+ Baïn cuõng coù theå in döõ lieäu ra giaáy baèng caùch baám vaøo bieåu töôïng maùy in treân Form döõ lieäu naøy.
+ Baïn Click vaøo bieåu töôïng Quay Laïi ñeå trôû laïi Menu chính.
- Tieáp theo, neáu baïn muoán xem lòch thi coâng caùc haïng muïc trong döï aùn nhö theá naøo baïn coù theå Click vaøo bieåu töôïng Design treân Toolbar hoaëc Design treân thanh Menu ñeå baïn coù theå xem chi tieát lòch thi coâng caùc haïng muïc trong döï aùn. Form coù daïng nhö sau:
+ ÔÛ ñaây coù 4 coät. Coät thöù nhaát ghi thöù töï caùc haïng muïc ñöôïc thi coâng, coät thöù hai cho bieát teân haïng muïc caàn thi coâng, coät thöù 3 cho bieát soá löôïng thôøi gian haïng muïc ñoù baét ñaàu tieán haønh, taát nhieân ñoái vôùi haïng muïc cuoái cuøng thì ñaây laø thôøi ñieåm caét baêng khaùnh thaønh döï aùn naøy, coät thöù 4 in ra ngaøy maø haïng muïc ñoù baét ñaàu tieán haønh, ñieàu naøy seõ giuùp cho caùc nhaø quaûn lyù nhaân söï tham gia trong caùc döï aùn quaûn lyù döï aùn cuûa mình ñöôïc deõ daøng hôn. Nhöõng soá lieäu ôû ñaây baïn chæ coù theå xem chöù khoâng xoùa hay söûa ñoåi moät caùi gì caû. Baïn cuõng coù theå xuaát döõ lieäu ra maùy in.
+ Keát thuùc Form naøy baïn coù theå Click vaøo bieåu töôïng quay laïi ñeå trôû veà Menu chính.
- Sau khi tham khaûo song lòch thi haønh döï aùn baïn coù theå löu tröõ döõ lieäu vaøo trong maùy tính cuûa baïn baèng caùch Click vaøo Menu File\Save
+ Chöông trình seõ ñöa ra hoäp hoäi thoaïi cho pheùp baïn löu tröõ döõ lieäu vaøo ñaâu tuøy yù baïn. Sau khi choïn ñöôïc nôi löu tröõ baïn nhaäp teân File vaø Click vaøo nuùt Save, noù seõ ghi toaøn boä döõ lieäu cho baïn.
+ Trong chöông trình naøy baïn chæ coù theå löu teân File vôùi phaàn môû roäng laø *.PCM, ôû ñaây khoâng coù gì laø raøng buoäc caû bôûi vì toâi muoán ñaët ra moät caùi gì ñoù gôïi nhôù ñeå caûm ôn nhöõng ngöôøi ñi tröôùc hoï ñaõ nghieân cöùa ñöôïc moät öùng duïng quan troïng nhö theá naøy, moät öùng duïng maø noù ñem laïi nhieàu lôïi nhuaän cho con ngöôøi khi xaây döïng caùc döï aùn lôùn. Form coù daïng:
- Töông töï nhö ghi döõ lieäu ñeå löu tröõ, baïn cuõng coù theå ñoïc döõ lieäu maø baïn ñaõ löu tröõ ra baèng caùch Click vaøo Menu\File\Open
+ Sau ñoù baïn cuõng coù theå löï choïn taäp tin naøo chöa döõ lieäu maø baïn caàn môû, Form coù daïng nhö sau:
- Ñeán ñaây coâng vieäc töôûng chöøng nhö ñaõ hoaøn taát nhöng moïi chuyeän khoâng phaûi ñôn giaûn nhö vaäy. Trong thöïc teá coù nhöõng döï aùn maø khi ngöôøi ta thi coâng roài môùi thaáy coù moät soá coâng vieäc khoâng thích hôïp, vaø nhö theá hoï phaûi phaù ra, hoaëc coù nhöõng luùc hoï khoâng caàn moät soá haïng muïc naøo ñoù, vaø cuõng coù nhöõng luùc hoï laïi muoán theâm moät soá haïng muïc naøo ñoù. Taát nhieân ñaây laø nhöõng ñieàu maø nhöõng nhaø quaûn lyù hoï cuõng khoâng muoán, nhöng trong thöïc teá nhöõng chuyeän nhö theá naøy noù vaãn toàn taïi. Chính vì vaäy maø trong chöông trình naøy toâi cuõng coù ñeà caäp ñeán vaán ñeà naøy.
- Form naøy seõ môû ra nhöõng döï aùn maø ñang ñöôïc thi coâng, luùc naøy thì giaû söû ñaët tröôøng hôïp chuùng ta laø nhöõng ngöôøi ñang ñieàu haønh nhöõng döï aùn ñoù, nhöng ôû ñaây ñôn giaûn hôn nhieàu vì ñaây chæ laø giaû söû thoâi. Luùc ñoù baïn coù theå boå xung moät haïng muïc naøo ñoù vaøo trong danh saùch caùc haïng muïc seõ ñöôïc thi coâng, vaø moät ñieàu taát nhieân laø ta chuùng phaûi nhaäp thôøi gian laøm xong haïng muïc vöøa nhaäp ñoù. Form ôû ñaây coù daïng nhö sau:
+ Baïn coù theå theâm vaøo bao nhieâu haïng muïc tuøy yù baïn, nhöng löu yù laø sau moãi laàn theâm vaøo thì phaûi nhôù laø thöù töï thi coâng seõ bò thay ñoåi, vaø haïng muïc theâm vaøo khoâng ñöôïc lôùn hôn haïng muïc cuoái cuøng laø 2 vì khi baét ñaàu theâm vaøo Giaû söû döï aùn cuûa baïn coù 100 haïng muïc maø baïn theâm vaøo haïng mucï thöù 102 thì khoâng ñöôïc, chöông trình seõ baùo loãi vaø baïn phaûi nhaäp laïi. Sau moãi laàn nhaäp döõ lieäu baïn coù theå nhaán phím Enter ñeå xaùc ñònh vieäc nhaäp cuûa baïn.
- Töông töï nhö theâm haïng muïc vieäc boû moät soá haïng muïc cuõng dieãn ra töông töï, baïn chæ caàn Click vaøo bieåu töôïng xoùa haïng muïc laø seõ coù moät cöûa soå töông töï nhö cöûa soå nhaäp haïng muïc theâm vaøo cho baïn nhaäp .
+ Sau Khi keát thuùc vieäc theâm hay xoùa moät soá haïng muïc baïn phaûi Click vaøo bieåu töôïng nhaäp soá lieäu ñeå chöông trình tính toaùn laïi cho baïn, luùc naøy lòch thi coâng laïi coù moät lòch môùi, khaùc haún lòch ban ñaàu neáu nhö baïn ñaõ theâm vaøo hoaëc boû ñi moät soá haïng muïc khoâng caàn thi coâng.
- Neáu nhö baïn nhaäp döõ lieäu môùi hay môû moät file ñaõ löu trong ñóa maø baïn ñaõ söûa ñoåi döõ lieäu ôû beân trong thì baïn leân löu döõ lieäu vaøo moät File thì vieäc nhaäp döõ lieäu hay söûa ñoåi döõ lieäu môùi coù taùc duïng. Ôû ñaây chöông trình noù bieát ñöôïc ta ñaõ löu hay chöa, neáu chöa löu thì khi naøo thoaùt khoûi chöông trình noù seõ nhaéc nhôû chuùng ta laø coù löu döõ lieäu hay khoâng.
+ Neáu baïn click vaøo yes thì moät cöûa soå ghi File laïi hieän ra yeâu caàu baïn ghi teân file vaø Click vaøo nuùt Save.
2. Ñieàu khieån nhaân löïc.
Cuõng töông töï nhö laäp lòch thi coâng coâng trình ôû ñaây chöông trình cuõng bao goàm caùc coâng ñoaïn töông töï nhö treân. Khi keát thuùc chöông trình seõ cho ta moät baûng trong ñoù ñöa ra moät danh saùch bao goàm soá coâng nhaân caàn coù cho moãi coâng vieäc.
III. Chöông trình nguoàn.
Trong chöông trình naøy bao goàm raát nhieàu haøm vaø thuû tuïc ôû ñaây chæ xin ñöa ra moät thuû tuïc quan troïng ñoù laø moät thuû tuïc chính trong chöông trình, thuû tuïc naøy trong phaàn laäp lòch thi coâng trình ñoù laø thuaät toaùn Dijsktra, thuaät toaùn ñöôïc vieát nhö sau.
Public Sub Dijkstra()
Dim v, u, minp As Long
S = 0
For v = 0 To n + 1
D(v) = A(S, v)
Truoc(v) = S
Final(v) = False
Next v
Truoc(S) = 0
D(S) = 0
Final(S) = True
Do W7hile Not Final(T)
'Tim u la dinh co nhan tam thoi nho nhat
minp = 3000000
For v = 0 To n + 1
If (Not Final(v)) And (minp > D(v)) Then
u = v
minp = D(v)
End If
Final(u) = True
Next v ' chu y
'============================================
If Not Final(T) Then
For v = 0 To n + 1
If (Not Final(v)) And (D(v) + A(u, v) < D(u)) Then
D(v) = D(u) + A(u, v)
Truoc(v) = u
End If
Next v
End If
Loop
End Sub
KEÁT LUAÄN
Trong söï phaùt trieån vöôït baäc cuûa xaõ hoäi hieän nay, vieäc xaây döïng caùc döï aùn lôùn ñaõ coù raát nhieàu chuyeân gia coù nhieàu kinh nghieäm trôï giuùp hoï hoaøn thaønh döï aùn naøy, ñoàng thôøi hoï cuõng ñaõ coù ñuû nhöõng kinh nghieäm ñeå hoaøn thaønh caùc döï aùn ñoù.
Tuy nhieân ñeå hoaøn thaønh nhöõng döï aùn lôùn ñoù thì vôùi söï phaùt trieån cuûa coâng ngheä thoâng tin hieän nay ñaõ phaàn naøo ñaõ goùp phaàn vaøo coâng cuoäc phaùt trieån vaø xaây döïng neàn kinh teá cuûa nöôùc nhaø.
Trong thôøi gian laøm ñeà taøi naøy. Vôùi moät coâng ngheä toái öu ñaõ nghieân cöùu vaø phaùt trieån trong xaây döïng vaø ñieàu haønh nhöõng döï aùn lôùn (Nhaát laø nhöõng döï aùn ñoøi hoûi söï chính xaùc, ñoøi hoûi phaûi tieát kieäm nhaân löïc, tieát kieäm thôøi gian … nhöng phaûi hoaøn thaønh trong moät thôøi gian sôùm nhaát), nhöng ñaõ phaàn naøo ñaùp öùng ñöôïc ñöôïc caùc nhu caàu caàn thieát ôû treân.
Ñeà taøi “Ñieàu haønh döï aùn baêng phöông phaùp PERT-PCM vaø öùng duïng giaûi quyeát baøi toaùn laäp lòch thi coâng coâng trình” vôùi söï chæ baûo taän tình cuûa thaày Ñoã Nhö An ñaõ giuùp em hoaøn thaønh ñeà taøi naøy.
Do thôøi gian vaø kinh nghieäm haïn cheá neân ñeà taøi chaéc vaãn chöa heát khoûi nhöõng thieáu xoùt. Trong thôøi gian sau toâi seõ coá gaéng hoaøn thaønh chuùng vaø coù theå ñöa ra söû duïng trong cuoäc soáng hieän nay.
Các file đính kèm theo tài liệu này:
- Điều hành dự án bằng phương pháp PERT-PCM và ứng dụng giải bài toán lập lịch thi công công trình- thầy Đỗ Như An huơg dẫn - 70 trang.doc