41

Click here to load reader

Giao trinh thuc hanh - Delphi 7

  • Upload
    vdlinh08

  • View
    1.145

  • Download
    16

Embed Size (px)

Citation preview

Page 1: Giao trinh thuc hanh - Delphi 7

TR ỜNG Đ I HỌC CẦN TH

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Giáo trình thựƠ hành

LẬP TRÌNH CĂN BẢN B MSMH: TN036

(Áp ơụng Ơho Ơh ng trình tín Ơhỉ)

Biên so n: ThS. VŨ DUY LINH

Năm 2010

Page 2: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng dụng – Khoa CNTT & TT - ĐHCT Trang i

M C L C

Buổi thực hành th 1 ....................................................................................................... 1

Buổi thực hành th 2 ....................................................................................................... 4

Buổi thực hành th 3 ....................................................................................................... 7

Buổi thực hành th 4 ..................................................................................................... 11

Buổi thực hành th 5 ..................................................................................................... 15

Buổi thực hành th 6 ..................................................................................................... 19

Buổi thực hành th 7 ..................................................................................................... 23

Buổi thực hành th 8 ..................................................................................................... 27

Buổi thực hành th 9 ..................................................................................................... 28

Buổi thực hành th 10 ................................................................................................... 30

Buổi thực hành th 11 ................................................................................................... 33

Buổi thực hành th 12 ................................................................................................... 35

Tài liệu tham khảo ......................................................................................................... 38

Page 3: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng dụng – Khoa CNTT & TT - ĐHCT Trang ii

CẤU TRÚC M I BU I TH C HÀNH

G m các yêu cầu sau:

Sinh viên đọc lý thuyết ở nhà trước

Thực hành các bài tập có hướng dẫn

Thực hành các bài tập không có hướng dẫn (nhằm phát triển tư duy lập trình)

Thực hành các bài tập trong giáo trình lý thuyết (có tính logic chặt chẽ theo từng chương c a giáo trình lý thuyết – TN035)

M c đích:

Giúp cho sinh viên trong việc học lý thuyết trên lớp và thực hành trong phòng

thực tập được thống nhất và dễ tiếp thu hơn.

VǛ DUY LINH.

Page 4: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 1

Bu i th c hành thứ 1

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

- Chương 1: Dữ liệu và Thuật toán

- Chương 2: Borland Delphi

- Chương 3: Các thành phần cơ bản c a ngôn ngữ Delphi

- Chương 4: Các kiểu dữ liệu sơ cấp, lệnh đơn

M c tiêu:

- Làm quen và học cách sử dụng các thành phần trên giao diện IDE c a Delphi 7.

- Đặt các thành phần lên Form và sử dụng các thuộc tính cơ bản c a chúng.

- Tạo, lưu một dự án, biên dịch và thực thi một dự án.

- Làm quen với kiểu dữ liệu sơ cấp và khái báo biến, hằng trong chế độ Console.

Bài 1.1: Thiết kế một chương trình đơn giản theo các bước sau:

- Tạo dự án mới: chọn File/New/Application

Hình 1: Cửa sổ thiết kế biểu mẫu

- Đặt các thuộc tính cho Form: Chọn Form (click lên phần nền hoặc tiêu đề c a Form), sau đó thao tác trong lớp Properties c a cửa sổ Object Inspector với các thuộc tính: Caption: Bai tap dau tien, Name: frmBT1_1

- Đặt các thành phần lên Form :

Hình 2: Các thành phần trong thẻ Standard

- Đặt một TLabel lên Form: Click vào nút biểu tượng , sau đó vẽ một hình chữ nhật tại vị trí cần đặt Label lên Form và thiết lập các thuộc tính Name: lblChao,

và Caption: Chao Mung Den Voi Delphi 7.0

- Đặt một TButton lên Form: Click vào nút lệnh , sau đó vẽ một hình chữ nhật tại vị trí đặt Button này lên Form và thiết lập các thuộc tính Name: btnChao, và Caption: Chao

Page 5: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 2

- Di chuyển đối tượng đi bằng cách drag chuột lên đối tượng hoặc dùng tổ hợp phím Ctrl + phím mǜi tên. Thay đổi kích thước đối tượng bằng cách drag chuột lên đường biên c a đối tượng hoặc dùng tổ hợp phím Shift + phím mǜi tên

- Tiến hành lưu và đặt tên cho tập tin viết mã lệnh và tập tin dự án. Chọn File/Save All (hoặc Shift + Ctrl+ S hoặc click vào ). Từ cửa sổ Save Unit As, tại hộp Save In chúng ta chọn ổ đĩa lưu bài, sau đó click chuột vào biểu tượng để tạo ra một thư mục mới dùng để ch a tất cả các tập tin c a dự án, ví dụ: S:\BT1_1

Hình 3: Đăt tên cho tập tin mã lệnh

Trong cửa sổ Save Unit As ở mục Save in chúng ta chọn thư mục cần lưu chương trình (S:\BT1_1 đã được tạo bước trên) và ở mục File Name nhập vào tên tập tin mã lệnh (Ví dụ: untBT1_1.pas), sau cùng click chuột vào nút Save.

Hình 4: Đặt tên cho tập tin dự án

Trong cửa sổ Save Project As ở mục Save in chúng ta chọn thư mục cần lưu chương trình (S:\BT1_1) và ở mục File Name nhập vào tên tập tin dự án (Ví dụ: prjBT1_1.dpr), sau cùng click chuột vào nút Save

- Biên dịch và chạy chương trình (F9).

Page 6: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 3

Bài 1.2: Tạo dự án mới và thiết giao diện như hình sau. Chú ý: Cách đặt tên cho các đối tượng nên đặt đúng theo quy tắc đặt tên đã được giới thiệu trong giáo trình lý thuyết.

Hình 5: Bài tập thiết kế giao diện

* Các bài tập trong giáo trình lý thuy t (TN035):

Bài 1.3: Ví dụ 3, trang 14: Để làm quen với chương trình ở chế độ Form Application

Bài 1.4: Ví dụ 9, trang 24: Để hiểu được cách chuyển đổi kiểu (Typecast) trong chế độ Console.

Bài 1.5: Ví dụ 2, trang 30: Để hiểu kiểu Byte, char và bảng mã ASCII trong chế độ Console.

Bài 1.6: Ví dụ 4, trang 33: Để hiểu kiểu Real và cách xuất nhập trong chế độ Console.

Page 7: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 4

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

- Chương 3: Các thành phần cơ bản c a ngôn ngữ Delphi

- Chương 4: Các kiểu dữ liệu sơ cấp, lệnh đơn

- Chương 5: Lập trình sự kiện – các thành phần trong Delphi

M c tiêu:

- Hiểu được ch c năng và cách sử dụng các thành phần c a Delphi.

- Nắm vững được các khái niệm kiểu (Class) và đối tượng (Object) trong lập trình sự kiện.

- Thao tác thuần thục cách tạo th tục sự kiện trong ngôn ngữ Delphi.

- Cách sinh mã tự động và sửa lỗi trong ngôn ngữ Delphi

Bài 2.1: Thiết kế và viết chương trình với các thuộc tính name được đặt cho các đối tượng như sau: Biểu mẫu chương trình: frmBT2_1, hộp văn bản: edtHello, hai nút

lệnh: btnOK, btnClose. Khi nhấn nút lệnh OK, chương trình sẽ hiển thị dòng Hello World. Khi nhấn nút lệnh Cancel, chương trình sẽ kết thúc chương trình.

Hình 6: Các đối tượng bài 2.1

Procedure TfrmBT2_1.btnCloseClick(Sender: TObject);

Begin

Close;

End;

Procedure TfrmBT1.btnOKClick(Sender: TObject);

Begin

edtHello.Text := 'Hello World!';

End;

Bài 2.2: Tạo ng dụng gồm một nhãn, một hộp văn bản và hai nút lệnh như hình 7:

btnClose

btnOK

edtHello

Page 8: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 5

Hình 7: Các đối tượng bài 2.2

Khi chạy chương trình, nhập họ và tên tùy ý vào hộp văn bản, nhấn nút OK,

chương trình sẽ xuất hiện hộp thông báo với nội dung: Xin chao b n: <họ tên vừa đư c nhập>. Nhấn nút Close để kết thúc chương trình.

*Hướng dẫn:

- Đặt tên cho form là frmBT2_2

- Viết mã lệnh cho nút lệnh btnOK: Nhấp đúp vào btnOK trên Form để tạo th tục sự kiện OnClick trên nút lệnh btnOK c a frmBT2_2 như sau:

Procedure TfrmBT2_2.btnOKClick(Sender: TObject);

Begin

End;

- Thêm câu lệnh ShowMessage('Xin chao ban: ' + edtHoten.Text); vào thân th tục sự kiện như sau:

Procedure TfrmBT2_2.btnOKClick(Sender: TObject);

Begin

ShowMessage('Xin chao ban: ' + edtHoten.Text);

End;

- Tương tự viết mã lệnh cho sự kiện OnClick c a nút btnClose:

Procedure TfrmBT2_2.btnCloseClick(Sender: TObject);

Begin

Close;

End;

Bài 2.3: Tạo ng dụng gồm một hộp soạn thảo, một nhãn, và hai nút nhấn như hình 8.

- Nhập họ và tên vào hộp văn bản, nhấn nút OK, nội dung vừa gõ bên hộp văn bản sẽ được truyền/gán qua nhãn kế bên.

- Nhấn nút Close để kết thúc chương trình.

lblHoten edtHoten

btnOK

btnClose

Page 9: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 6

Hình 8: Các đối tượng bài 2.3

Bài 2.4: Thiết kế form với các nút lệnh màu Xanh, Do, Vang, … và viết lệnh sao cho khi người sử dụng click chuột vào các nút lệnh đó thì màu nền c a form sẽ thay đổi theo. Hướng dẫn: sử dụng thuộc tính Color c a form gán các hằng số clGreen, clRed, clYellow,…

* Các bài tập trong giáo trình lý thuy t (TN035):

Bài 2.5: Ví dụ 9, trang 69: Sử dụng đối tượng nhãn và các hàm ngày tháng.

Bài 2.6: Ví dụ 11, trang 73: Sử dụng đối tượng Edit, hàm InputBox và th tục sự kiện OnCreate c a Form.

Bài 2.7: Ví dụ 14, trang 76: Sử dụng hàm InputQuery, và th tục sự kiện OnActivate

c a Form.

Bài 2.8: Ví dụ 15, trang 79: Sử dụng đối tượng hộp văn bản Edit, nút lệnh Button, sự kiện OnClick c a nút lệnh Button, cách bắt lỗi dữ liệu nhập vào bởi hàm TryStrToFloat.

edtHoten

lblHoten

Page 10: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 7

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

- Chương 5: Lập trình sự kiện – các thành phần trong Delphi

- Chương 6: Các lệnh có cấu trúc – lệnh ghép và lệnh rẽ nhánh.

M c tiêu:

- Tiếp tục với các thành phần ở các bài tập buổi 2, thiết kế Form với các thành phần khác TCheckbox, TRadioGroup

- Lập trình trên sự kiện OnKeyDown, OnKeyPress,…

- Sử dụng cấu trúc lệnh If … Then … Else và Case … Of

Bài 3.1: Thiết kế Form như sau dùng để tính cộng, trừ, nhân và chia hai số nguyên và

ghi kết quả ra hộp văn bản. Các đối tượng có tên như sau: edtNhapA, edtNhapB,

edtKQ, btnCong, btnTru, btnNhan và btnChia trên Form có thuộc tính name là frmBT3_1 như hình 9:

Hình 9: Form làm toán

Chúng ta lần lượt xử lý sự kiện OnClick c a các nút btnCong, btnTru,

btnNhan và btnChia. Sau đây là đoạn lệnh tương ng cho th tục sự kiện OnClick c a nút lệnh btnCong:

Procedure TfrmBT3_1.btnCongClick(Sender: TObject);

Var a, b, kq: Integer;

Begin

a := StrToInt(edtNhapA.Text);

b := StrToInt(edtNhapB.Text);

kq := a + b;

edtKQ.Text := IntToStr(kq);

End;

Trong đoạn lệnh này chúng ta có khai báo các biến a, b và kq để phục vụ quá trình tính toán và sử dụng hai hàm chuyển đổi dữ liệu StrToInt và IntToStr. Mục đích sử dụng hai hàm này là để chuyển đổi một chuỗi các ký tự số sang số thực sự và chuyển từ số thực sự sang chuỗi các ký số.

Page 11: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 8

Procedure TfrmBT3_1.btnChiaClick (Sender: TObject);

Var a, b: Integer; kq:Extended;

Begin

a := StrToInt(edtNhapA.Text);

b := StrToInt(edtNhapB.Text);

if b = 0 then //kiểm tra b có bằng không hay không

edtKQ.Text := 'Khong the chia cho khong' //báo lỗi khi b=0

else // b khác không

begin

kq:= a / b;

edtKQ.Text := FloatToStr(kq);

end;

End;

Trong đoạn lệnh này, ta sử dụng hàm If để kiểm tra và báo lỗi khi b = 0, ngoài

ra còn sử dụng hàm FloatToStr vì kết quả c a a/b là một số thực.

Chú ý: Tại các ô nhập edtNhapA và edtNhapB nếu chúng ta nhập một giá trị không phải là kiểu số thì chương trình sẽ bị lỗi và tự động đóng lại. Để xử lý lỗi này,

chúng ta cần xem thêm hai hàm TryStrToInt và TryStrToFloat như sau:

Procedure TfrmBT3_1. btnCongClick (Sender: TObject);

Var a, b, kq: Integer;

Begin

If TryStrToInt(edtNhapA.Text, a) And

TryStrToInt(edtNhapB.Text, b) then //Chuyển đổi có kiểm tra a và b

begin

kq:= a + b;

edtKQ.Text := IntToStr(kq); //Xuất kết quả

end

Else ShowMessage(‘Nhap so sai!’); //Báo lỗi khi nhập số sai

End;

Bài 3.2: Lựa chọn phép tính. Thiết kế Form như hình 10:

Page 12: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 9

Hình 10: Thiết kế Form bài 3.2

Chúng ta xử lý sự kiện OnClick c a nút lệnh btnTinh như TTSK sau:

Procedure TfrmBT3_2.btnTinhClick(Sender: TObject);

Var a,b,kq: Integer;toantu:char;chon:string;

Begin

a := StrToInt(edtNhapA.Text);

b := StrToInt(edtNhapB.Text);

chon := InputBox('Nhap toan tu','+ - * /',''); //yêu cầu nhập toán tử

toantu := chon[1]; //lấy ký tự đầu tiên c a hàm InputBox

Case toantu Of

'+': ShowMessage('Ket qua: ' + IntToStr(a+b));

'-': ShowMessage('Ket qua: ' + IntToStr(a-b));

'*': ShowMessage('Ket qua: ' + IntToStr(a*b));

'/': If b = 0 then ShowMessage('khong the chia cho 0')

Else ShowMessage('Ket qua: ' + FloatToStr(a/b))

Else // else case

ShowMessage('Nhap toan tu sai');

End; // end case

End;

Bài 3.3: Sử dụng sự kiện OnKeyDown hoặc OnKeyPress

Thiết kế form có name là frmBT3_3 như hình bên dưới

Hình 11: Thiết kế Form

Trong th tục sự kiện OnKeyDown c a đối tượng edtNhap trên Form

frmBT3_3, ta đưa thêm đoạn chương trình sau (Chú ý: Key là tham số có sẵn c a th tục sự kiện này nên KHÔNG được khai báo thêm):

Page 13: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 10

If Key = 13 then //kiểm tra phím được nhấn có phải là Enter không

begin

ShowMessage( 'Chao ban ' + edtNhap.Text);

edtNhap.Clear; edtNhap.SetFocus;

end;

Chúng ta có kết quả như hình bên dưới khi nhập tên và gõ phím Enter trong

hộp văn bản edtNhap:

Hình 12: Hiển thị kết quả bằng th tục ShowMessage

Nếu sử dụng sự kiện OnKeyPress cho edtNhap thì dòng lệnh If Key = 13 then sẽ được thay thế bằng If Ord(Key) = 13 then vì trong trường hợp này tham số

Key có kiểu ký tự.

Bài 3.4: Viết chương trình biện luận n

y

xyxf ),( với n là số nguyên, x, y là

các số thực bất kỳ được nhập từ bàn phím.

Bài 3.5: Viết chương trình nhập vào 3 số thực a, b, c đại diện cho 3 cạnh c a một tam giác từ bàn phím và kiểm tra dữ liệu nhập có đúng không (độ dài mỗi cạnh c a tam giác phải là một số lớn hơn không). Viết chương trình kiểm tra 3 số a, b, c vừa nhập có thỏa tính chất “Tổng c a 2 cạnh phải lớn hơn cạnh còn lại” không. Nếu thỏa: hãy tính chu vi và diện tích c a tam giác, còn ngược thông báo “Độ dài 3 số vừa nhập không tạo thành tam giác”.

* Các bài tập trong giáo trình lý thuy t (TN035):

Bài 3.6: Ví dụ 16, trang 83: Sử dụng đối tượng CheckBox, nút lệnh Button, sự kiện OnClick c a nút lệnh Button, và lệnh If … then ... else.

Bài 3.7: Ví dụ 17, trang 89: Sử dụng đối tượng RadioGroup và sự kiện OnClick trên đối tượng RadioGroup.

Bài 3.8: Ví dụ 3, trang 140: Giải phương trình bậc 1

Bài 3.9: Ví dụ 4, trang 143: Giải phương trình bậc 2

Bài 3.10: Ví dụ 6, trang 147: Các phép tính +, - , *, / sử dụng lệnh Case … Of

Page 14: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 11

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

- Chương 5: Lập trình sự kiện – các thành phần trong Delphi

- Chương 6: Các lệnh có cấu trúc – lệnh ghép và lệnh rẽ nhánh

M c tiêu:

- Tiếp tục với các thành phần ở các bài tập buổi trước, thiết kế Form với các thành phần khác TMemo, TListBox,…

- Sử dụng cấu trúc lệnh For … To/Downto … Do

Bài 4.1: Thiết kế Form với các thành phần như hình 13. Khi nhấn nút lệnh OK, dãy số từ 0 đến 9 sẽ hiển thị trong hộp văn bản. Khi nhấn nút lệnh Close thì đóng Form.

Hình 13: Form bài 4.1

* Hướng dẫn:

- Thuộc tính Name c a các đối tượng là: frmBT4_1, edtDayso, btnOK, btnClose.

- Viết mã lệnh điều khiển sự kiện OnClick cho nút lệnh btnOK:

Ta sử dụng cấu trúc lệnh For … to … do để hiển thị các số tự nhiên từ 0 đến 9 trong hộp văn bản thông qua biến chạy i kiểu nguyên.

Procedure TfrmBT4_1.btnOKClick(Sender: TObject);

Var i: integer; //Khai báo biến chạy i

Begin

End;

Sau đó hoàn thành nội dung bên trong thân TTSK này như sau:

Procedure TfrmBT4_1.btnOKClick(Sender: TObject);

Var i: integer; //Khai báo biến chạy i

Begin

edtDayso.Text := ''; // Khởi tạo bằng chuỗi rỗng

For i:=0 to 9 do

edtDayso.Text := edtDayso.Text + ' ' + IntToStr(i);

Page 15: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 12

{ +: phép nối chuỗi, ' ': khoảng trắng để các số tự nhiên cách nhau}

End;

Bài 4.2: Thiết kế Form mà khi click vào nút lệnh OK sẽ hiển thị các số nguyên lẻ từ 1 đến 49 trong hộp memo như hình 14:

Hình 14: Kết quả bài 4.2

* Hướng dẫn:

Tương tự như bài tập 4.1, sử dụng cho vòng lặp For với biến chạy từ 0 đến 50 để tạo một chuỗi các chữ số rồi kiểm tra với mỗi giá trị c a biến chạy là số nguyên lẻ thì sẽ được đưa vào memo (sử dụng phương th c Lines.Add(Const S: String))

Bài 4.3: Viết chương trình tính tổng như hình 15:

Hình 15: Kết quả bài 4.3

* Hướng dẫn:

- Viết mã lệnh cho nút lệnh OK.

+ Khai báo biến chạy i kiểu số nguyên và tổng S kiểu nguyên.

+ Khai báo biến n để lấy giá trị từ edtSoN: dùng hàm chuyển đổi kiểu từ kiểu String sang kiểu Integer.

n := StrToInt(edtSoN.Text);

+ Khi hiển thi biến kết quả S ra hộp soạn thảo edtTongS, phải sử dụng hàm chuyển đổi kiểu từ kiểu Integer sang kiểu String.

edtTongS.Text := IntToStr(S);

+ Sử dụng lưu đồ với câu lệnh For cho vòng lặp sau:

Memo: memDaySo

Begin

Nhập n

Page 16: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 13

Bài 4.4: Viết chương trình để tính tổng như sau:

a/. S1 = 1*2 + 2*3 + … + n*(n+1)

b/. S2 = -1 + 2 – 3 + 4 + … + (-1)n * n

với n ≥ 1 kiểu nguyên được nhập từ bàn phím.

Hình 16: Kết quả bài 4.4

Bài 4.5: Thiết kế Form như hình sau:

GroupBox

Page 17: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 14

Hình 17: Kết quả bài 4.5

Nhấn nút lệnh Thi hanh để thực hiện yêu cầu:

- Đếm các số lớn hơn 10 và nhỏ hơn hoặc bằng 20. Đưa kết quả vào hộp soạn thảo tương ng.

- Tính tổng c a các số lớn hơn 10 và nhỏ hơn hoặc bằng 20. Đưa kết quả vào hộp soạn thảo tương ng.

- Nhấn nút lệnh Xóa để xóa rỗng các Edit, danh sách các số đã nhập trên Form.

* Các bài tập trong giáo trình lý thuy t (TN035):

Bài 4.6: Ví dụ 18, trang 93: Sử dụng đối tượng Memo và Button để thiết kế một chương trình soạn thảo văn bản NotePad đơn giản.

Bài 4.7: Ví dụ 19, trang 98: Sử dụng đối tượng ListBox và Button để thiết kế một chương trình đếm các phần tử đã được chọn tùy ý.

Bài 4.8: Ví dụ 20, trang 103: Sử dụng đối tượng CheckListBox,… để thiết kế một chương trình đăng ký môn học và tính tiền học phí.

Bài 4.9: Ví dụ 21, trang 110: Sử dụng đối tượng ValueListEditor,… để thiết kế một chương trình nhập và tìm kiếm tên môn học đơn giản.

Bài 4.10: Ví dụ 22, trang 115: Sử dụng đối tượng ComboBox,… để thiết kế một chương trình thực hiện 6 phép tính cộng, trừ, nhân, chia, chia lấy phần nguyên, và chia lấy phần dư.

Bài 4.11: Ví dụ 11, trang 153: Tính biểu th c X bằng lệnh lặp For … To … Do

Page 18: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 15

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

- Chương 5: Lập trình sự kiện – các thành phần trong Delphi

- Chương 6: Các lệnh có cấu trúc – lệnh lặp kiểm tra điều kiện trước và kiểm tra điều kiện sau với số lần lặp không xác định trước.

M c tiêu:

- Thiết kế Form.

- Sử dụng cấu trúc lệnh While … Do và Repeat … Until

Bài 5.1: Thiết kế Form như hình 18 và thực hiện một vòng lặp để nhập vào một dãy số nguyên dương kết thúc bằng một số không hoặc một số âm. Sau đó in ra kết quả tổng c a dãy số vừa nhập.

Hình 18: Tính tổng dãy số dương.

*Hướng dẫn:

- Sử dụng lệnh While … Do

- Th tục sự kiện OnClick c a nút lệnh btnTinhTong c a biểu mẫu frmBT5_1:

Procedure TfrmBT5_1.btnTinhClick(Sender: TObject);

Var tong:integer; so :integer;

Begin

tong := 0; so := StrToInt(InputBox('Nhap so', 'n = ',''));

while so > 0 do

begin

tong := tong + so;

so := StrToInt(InputBox('Nhap so', 'n = ',''));

end;

edtTong.Text := IntToStr(tong);

End;

Vòng lặp While dùng để yêu cầu người sử dụng nhập dãy số bằng hàm InputBox. Vòng lặp này sẽ kiểm tra giá trị nhập trong biến so để kết thúc quá trình nhập khi nhận được giá trị <= 0.

Page 19: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 16

Bài 5.2: Thiết kế Form như hình 2 và viết chương trình tính số Pi theo giải thuật Leibniz như sau:

Pi/4 = 1 – 1/3 + 1/5 – 1/7 + …. + (-1)i * 1/(2*i+1) + ….

Với 1/(2*i+1) là độ chính xác c a phép toán

Hình 19: Tính số Pi

*Hướng dẫn:

- Sử dụng lệnh Repeat … Until

- Th tục sự kiện OnClick c a nút lệnh btnTinhPI trong biểu mẫu frmBT5_2:

Procedure TfrmBT5_2.btnTinhPIClick(Sender: TObject);

Var tong, cx: single; i : integer;

Begin

tong := 0; i := 0;

If TryStrToFloat(edtNhap.Text, cx) then

Begin

Repeat

If Odd(i) then tong := tong - 1/(2*i+1)

Else tong := tong + 1/(2*i+1);

i := i + 1;

Until 1/(2*i+1) < cx;

tong := tong * 4;

edtKetqua.Text := FloatToStr(tong);

End

Else

ShowMessage('Chua nhap do chinh xac');

End;

Bài 5.3: Thiết kế Form và viết chương trình nhập vào một số n ( n > 20 ). Sau đó tính tổng các số nguyên dương lẻ (bắt đầu từ 1) sao cho kết quả tính tổng là số lớn nhất nhỏ hơn giá trị n.

Page 20: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 17

Bài 5.4: Thiết kế Form và viết chương trình cho phép người sử dụng nhập vào một dãy số nguyên dương bằng cách kết hợp một edtNhap, btnNhap và lbxSo (ListBox

dùng lưu các số nhập). Nút lệnh Tinh Tong dùng làm công việc tính tổng các giá trị đầu tiên trong dãy số không chia hết cho 5 (Phép tính sẽ dừng lại khi nó gặp một giá trị chia hết cho 5 hoặc đã tính tổng hết dãy số). Ví dụ cụ thể: Các số hạng trong dãy số được nhập là: 12, 7, 9, 6, 5, 14. Click vào nút lệnh btnTinhTong sẽ tính tổng 12 + 7 +

9 + 6 = 34

Nút bấm Xoa dùng để xóa giá trị các ô Edit và ListBox.

Chúng ta có thể tham khảo đoạn lệnh sau cho phép tính:

i := 0; tong := 0;

//Vòng lặp sẽ dừng khi gặp số chia hết cho 5 hoặc đã tính đến số hạng cuối cùng

While (i < lbxSo.Count) And (TryStrToInt(lbxSo.Items[i], so))

And (so mod 5 <> 0) do

Begin

tong := tong + so;

Inc(i);

End;

Hình 20: Tính tổng các số đầu tiên không chia hết cho 5

* Các bài tập trong giáo trình lý thuy t (TN035):

Bài 5.5: Ví dụ 23, trang 120: Sử dụng đối tượng StringGrid,… để thiết kế một chương trình hiển thị 26 ký tự chữ cái và hiển thị ký tự khi được chọn.

Bài 5.6: Ví dụ 13, trang 156: Sử dụng vòng lặp While … Do để tìm số nguyên dương k lớn nhất thỏa 4 mũ k nhỏ hơn m. Trong đó m là một số thực lớn hơn 1 được nhập từ bàn phím.

Page 21: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 18

Bài 5.7: Ví dụ 14, trang 158: Sử dụng vòng lặp While … Do để tính tổng các số hạng c a số nguyên dương n được nhập từ bàn phím.

Bài 5.8: Ví dụ 16, trang 161: Sử dụng vòng lặp Repeat … Until để tìm số nguyên dương k lớn nhất thỏa 4 mũ k nhỏ hơn a. Với a là một số thực lớn hơn 1 được nhập từ bàn phím.

Page 22: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 19

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

- Chương 5: Lập trình sự kiện – các thành phần trong Delphi

- Chương 6: Các lệnh có cấu trúc

- Chương 7: Chương trình con – biến chung, biến riêng, các loại tham số trong chương trình con.

M c tiêu:

- Ôn tập lại các câu lệnh có cấu trúc.

- Thiết kế Form với các thành phần đã học và TMMainMenu và TMenuItem.

- Phân biệt sự khác nhau giữa: th tục sự kiện, các phương th c, và hàm/th tục do người viết chương trình định nghĩa.

Bài 6.1: Thiết kế Form để tính giai thừa c a một số nguyên N được nhập từ bàn phím như hình sau.

Hình 21: Kết quả bài 6.1

Thực hiện tính n! như sau: n! = 1 nếu n = 0; n! = 1* 2 *3 *… *n nếu n>0;

Thông báo lỗi nếu n < 0.

Bài 6.2: Thiết kế Form như hình sau:

Hình 22: Kết quả bài 6.2

Thiết kế hai ListBox (lbx1, lbx2) với các thuộc tính:

lbx1

lbx2

Page 23: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 20

Items: bỏ trống,

MultiSelect = True (cho phép chọn một lúc nhiều phần tử).

Click nút Tao so, để tạo 15 số ngẫu nhiên được tạo ra và đưa vào lbx1.

Click nút > tất cả các phần tử được chọn trong list1 sẽ chuyển sang lbx2. Sử dụng phương th c MoveSelection c a ListBox: lbx1.MoveSelection(lbx2);

Click nút >> tất cả các phần tử trong lbx1 sẽ chuyển sang lbx2. Sử dụng phương th c SelectAll và MoveSelection:

lbx1.SelectAll;

lbx1.MoveSelection(lbx2);

Tương tự cho hai nút < và nút <<

Click nút Xoa để thực hiện xoá trắng cả hai ListBox.

Click nút Dong để kết thúc chương trình.

Bài 6.3: Thiết kế Form như hình sau:

Hình 23: Kết quả bài 6.3

Nhập mã số, họ tên vào hai hộp văn bản tương ng.

Khi click nút Them, mã số vừa nhập được thêm vào ComboBox và họ tên vừa nhập thì được thêm vào ListBox phía dưới. Hộp nhập mã số và họ tên được xóa trắng, con nháy nhảy về hộp nhập mã số. Số lượng người trong danh sách sẽ được cập nhật thường xuyên khi thêm người mới hay xoá đi một người ra khỏi danh sách. Trong

trường hợp hộp Ma So hoặc Ho ten chưa được nhập, khi click nút Them sẽ hiển thị bảng thông báo: “Thiếu thông tin”.

Chọn một mã số trong ComboBox, click nút Xoa, mã số bị xóa khỏi ComboBox, đồng thời họ tên tương ng cũng bị xóa khỏi danh sách họ tên.

Bài 6.4: Thiết kế Form như hình sau:

Page 24: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 21

Hình 24: Kết quả bài 6.4

Click nút Yeu Cau, các món ăn được chọn được đưa vào memo memThucDon, thêm vào tổng số các món ăn và số th tự cho từng món ăn được chọn. Bên cạnh đó, hiển thị thêm loại nước giải khát mà người dùng chọn. Khi thay

đổi món ăn, giải khát, Click lại nút Yeu Cau, memo memThucdon sẽ tự cập nhật lại.

* Hướng dẫn:

- Kiểm tra xem phần tử th i trong CheckListBox có được chọn (checked) hay không: CheckListBoxName.Checked[i] = true

Bài 6.5: Thiết kế Form như hình sau:

Hình 25: Kết quả bài 6.5

Memo:

memThucdon

CheckListBox:

clbMon_an

Các

RadioButton

CheckBox

6.4

6.5

lbxSo

Page 25: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 22

Lần lượt nhập số nguyên vào hộp soạn thảo, click nút >>, nếu tổng S vẫn còn nhỏ hơn 250 thì đưa số nguyên đó qua lbxSo, hiển thị tổng S. Nếu tổng S vượt quá 250 thì hiển thị bảng thông báo lỗi.

* Hướng dẫn:

- Khai báo biến S là biến toàn cục.

- Trong sự kiện FormCreat gán S:= 0;

- Trong sự kiện OnClick c a nút >> sử dụng cấu trúc lệnh lặp để tính tổng S. Sau đó kiểm tra: Nếu S lớn hơn 250 thì thiết lập nút >> không được kích hoạt nữa (gán thuộc tính Enabled := False) còn ngược lại thì chương trình c tiếp tục….

* Bài tập trong giáo trình lý thuy t (TN035):

Bài 6.5: Ví dụ 25, trang 127: Viết chương trình tiện ích gồm các ch c năng: Máy tính, Xem ngày giờ hiện hành c a hệ thống.

Page 26: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 23

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

- Chương 6: Các lệnh có cấu trúc.

- Chương 7: Chương trình con.

M c tiêu:

- Thiết kế Form tương ng với một yêu cầu thực tế.

- Cách sử dụng khai báo tham số hình th c thông qua kiểu dữ liệu được định nghĩa gián tiếp thông qua từ khóa Type.

- Sử dụng chương trình con để giải quyết bài toán.

Bài 7.1: Tính biểu th c: 2

3542

)(

37

na

naanS

Nhận xét: chúng ta thấy trong biểu th c tính S bên trên thì phép tính lũy thừa được tính 5 lần. Vì vậy, để tránh đoạn lệnh tính lũy thừa bị lặp lại nhiều lần thì ta thiết kế một hàm tính lũy thừa như sau:

Function Luythua(x: Single; n: integer): Extended;

Var i : integer;

Begin

result := 1.0;

For i := 1 to n do

result := result * x; //nhân x lặp lại n lần

End;

Sau khi đã có hàm tính lũy thừa thì ta sử dụng câu lệnh sau trong đoạn lệnh xử lý sự kiện OnClick c a nút lệnh tính S như sau:

S := (Luythua(n, 2)*Luythua(a, 4) + 7*Luythua(a, 5) - 3*Luythua(n, 3)) /

Luythua(a+n, 2);

Hình 27: Tính biểu th c S với hàm tính lũy thừa

Bài 7.2: Tính biểu th c: )!1(

!7!5

n

anS

Page 27: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 24

* Hướng dẫn: Tính tương tự bài trên với hàm tính giai thừa như sau:

Function Giaithua(n: integer):Extended;

Var i:integer;

Begin

Result := 1;

For i := 1 to n do

Result := Result * i;

End;

Hoặc viết theo cách đệ quy như sau:

Function Giaithua(n: integer):Extended;

Begin

If n = 0 then //trường hợp neo – dừng đệ quy

Giaithua := 1

Else

Giaithua := n* Giaithua(n-1); // đệ quy

End;

Bài 7.3: Thiết kế Form và viết chương trình nhập vào 2 số nguyên dương a và n. Tính

các biểu th c sau: n

naaaaS ...321 32

!...!3!21

...2

32

n

aaaaS

n

Bài 7.4: Thiết kế Form và viết chương trình nhập vào một số nguyên dương n và các

tính năng sau:

- Nút Tao So: tạo ngẫu nhiên n số nguyên và lưu vào ListBox.

- Nút Xoa và Dong: dùng để xóa dữ liệu và đóng Form.

- Nút Tim SNT: tìm tất cả các số nguyên tố trong dãy số vừa tạo và lưu vào một ListBox khác.

- Nút Tong SNT: tính tổng các số nguyên tố vừa tìm được.

* Hướng dẫn:

- Sử dụng hàm Random(n) để tạo số ngẫu nhiên có giá trị từ 0 đến n, nhưng để tạo ngẫu nhiên tốt thì chúng ta phải sử dụng th tục Randomize ở đầu đoạn lệnh.

Page 28: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 25

Hình 28: Tính tổng các số nguyên tố

- Sử dụng chương trình con SNT(n: Integer):Boolean như sau:

Function SNT(n: Integer): Boolean;

Var i:integer;

Begin

If n <=1 then Result := False // n hiển nhiên không là nguyên tố

Else

Begin

Result := True; // Giả định ban đầu n là số nguyên tố

For i := 2 to n-1 do //có thể thay n -1 bằng n Div 2 hoặc Trunc(Sqrt(n))

If n Mod i = 0 then Result := False; // n không phải là số nguyên tố

End;

End;

Hàm SNT sẽ trả về giá trị True nếu số n là số nguyên tố, ngược lại nếu n không

phải là số nguyên tố thì nó trả về giá trị False. Dựa là giá trị True/False c a hàm SNT,

với mỗi phần tử trong danh sách các số vừa nhập, ta sử dụng lệnh IF để kiểm tra phần tử đó có phải là số nguyên tố hay không để hiển thị qua ListBox2.

* Các bài tập trong giáo trình lý thuy t (TN035):

Bài 7.5: Ví dụ 7, trang 168: Viết chương trình tính giai thừa bằng cách sử dụng hàm - Function.

Bài 7.6: Ví dụ 8, trang 172: Viết chương trình hiển thị câu chào bằng cách sử dụng th tục - Procedure.

Bài 7.7: Ví dụ 9, trang 175: Viết chương trình tính cộng hai số theo tham số hình th c không định kiểu

Page 29: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 26

Bài 7.8: Ví dụ 10, trang 177: Viết chương trình tính giá trị lập phương c a một số bằng tham trị.

Bài 7.9: Ví dụ 11, trang 179: Viết chương trình tính giá trị lập phương c a một số bằng tham biến.

Bài 7.10: Ví dụ 15, trang 185: Viết chương trình tính tổng S bằng chương trình con.

Với: S = [f(1)]1/g(1) + [f(2)]

2/g(2) + … + [f(n)]n/g(n)

Trong đó: f(k) = 20 + 2

1 + 2

2 +…+ 2k

g(k) = 0! + 1! + 2! +…+ k!

Page 30: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 27

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

Hệ thống các chương từ 1 đến 7

M c tiêu:

- Sinh viên hệ thống hóa kiến th c và hiểu rõ các bước từ phân tích bài toán đến việc tìm ra thuật toán, và thiết kế, viết chương trình theo tư duy độc lập c a mình.

- Viết theo cách không hoặc có sử dụng chương trình con.

- SV đã được cung cấp đ kiến th c lập trình, Giáo viên tổ ch c kiểm tra giữa kỳ.

Bài 8.1: Cho S = 1! + x2 + 3! + x

4 +…+ (n-1)! + x

n ≤ V, với x>0, V>0 bất kỳ được

nhập từ bàn phím. Hãy viết chương trình tìm số nguyên dương n lớn nhất sao cho tổng S thỏa biểu th c trên theo 2 cách: Không sử dụng và có sử dụng chương trình con.

Bài 8.2: Viết chương trình nhập vào một dãy n số nguyên dương, tính trung bình cộng các số nguyên tố trong dãy n số đó.

KIỂM TRA GI A KỲ

Page 31: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 28

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

- Chương 8: Kiểu liệt kê, miền con và tập hợp

- Chương 9: Kiểu mảng: Mảng tĩnh một chiều

M c tiêu: Sử dụng các kiểu dữ liệu sơ cấp và kiểu dữ liệu có cấu trúc để giải quyết bài toán được thuận tiện và dễ dàng hơn.

Bài 9.1: Thiết kế Form và viết lệnh nhập vào một số nguyên n (0< n ≤ 20) và thực hiện các thao tác sau:

- Nút lệnh Tao So để tạo dãy n số nguyên ngẫu nhiên có giá trị từ 0 đến 100 và

lưu vào một ListBox có tên là lbxSo

- Hai nút lệnh SX Tang và SX Giam để sắp xếp dãy n số nguyên theo th tự tăng dần và giảm dần, kết quả sắp xếp ghi vào một ListBox khác có tên là lbxSX .

* Hướng dẫn:

- Khai báo mảng động (hoặc tĩnh) một chiều các số nguyên

- Chuyển toàn bộ các giá trị trên ListBox1 tạo số sang mảng

- Sắp xếp trên mảng a có kiểu nguyên với chỉ số từ 0 đến 20 rồi sau đó ghi các phần tử mảng đã sắp xếp ra ListBox2.

Hình 29: Sắp xếp dãy số bằng mảng

Bài 9.2: Thiết kế Form và viết lệnh nhập vào một số nguyên n (0 < n ≤ 20), khi Click

vào nút lệnh Tao So để tạo dãy n số nguyên ngẫu nhiên có giá trị từ 0 đến 100 và lưu vào một ListBox. Click vào nút Tach So để tách những số nguyên tố và không nguyên

tố ra thành 2 danh sách riêng biệt. Nút Sap Xep để sắp xếp các số nguyên tố theo th

9.1

Page 32: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 29

tự tăng dần, các số không nguyên tố theo th tự giảm dần. Nút lệnh Dem để đếm có bao nhiêu số nguyên tố và số không nguyên tố.

Hình 30: Thao tác trên mảng dữ liệu

Bài 9.3: Thiết kế và viết chương trình nhập vào một mảng có n phần tử kiểu nguyên.

Hãy cho biết số phần tử nhỏ hơn không, bằng không, lớn hơn không. Sắp xếp các phần tử nhỏ hơn không theo th tự giảm, các phần tử lớn hơn không có th tự tăng.

* Bài tập trong giáo trình lý thuy t (TN035):

Bài 9.4: Ví dụ 4, trang 210: Sử dụng StringGrid để hiển thị và sắp xếp các phần tử c a mảng tĩnh một chiều.

9.2

Page 33: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 30

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

Chương 9: Kiểu mảng: Mảng động một chiều và mảng 2 chiều

M c tiêu:

- Sử dụng các kiểu dữ liệu sơ cấp và kiểu dữ liệu có cấu trúc để giải quyết bài toán dễ và thuận tiện hơn.

- Sử dụng mảng động để làm quen với sự cung cấp biến linh hoạt được xác định ở thời điểm chạy chương trình.

- Thao tác trên mảng hai chiều với StringGrid.

Bài 10.1: Thiết kế form và viết lệnh nhập vào các giá trị c a một định th c cấp 3 và tính giá trị c a định th c đó:

222120

121110

020100

aaa

aaa

aaa

A

Hình 31: Tính giá trị c a định th c cấp 3

* Hướng dẫn: Sử dụng StringGrid có 3 dòng và 3 cột để nhập vào các hệ số aij. Để có thể nhập trực tiếp các số vào StringGrid khi chạy chương trình thì chúng ta đặt một số thuộc tính sau trong nhóm thuộc tính options với giá trị True:

- goEditing: cho phép chỉnh sửa giá trị trực tiếp vào các ô c a TStringGrid.

- goTabs: cho phép nhấn phím Tab để di chuyển sang ô phía sau.

- goAlwaysShowEditor: khi nhấn phím Tab di chuyển đến một ô nào đó thì chúng ta có thể nhập liền giá trị ch không cần nhấn phím F2 hay Click chuột vào ô đó.

Khi cần lấy giá trị một ô nào thì dùng thuộc tính Cells[chỉ số cột, chỉ số dòng]

Hàm tính định th c (th công) như sau:

Function TinhDinhThuc(a: Matran): Single;

Page 34: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 31

Begin

Result := a[0,0]*a[1,1]*a[2,2]+ a[1,0]*a[2,1]*a[0,2]+

a[2,0]*a[0,1]*a[1,2] - a[1,0]*a[0,1]*a[2,2] -

a[0,0]*a[2,1]*a[1,2] - a[2,0]*a[1,1]*a[0,2];

End;

Trong đó Matran là một kiểu dữ liệu được định nghĩa như sau:

Type Matran = array[0 .. 2,0 .. 2] of Single;

Bài 10.2: Thiết kế form và viết lệnh giải hệ phương trình 3 ẩn số như sau

23*22*21*20

13*12*11*10

03*02*01*00

azayaxa

azayaxa

azayaxa

Với các hệ số aij là các số thực được nhập từ bàn phím.

Hướng dẫn:

- Tính các định th c sau:

222120

121110

020100

aaa

aaa

aaa

D

222123

121113

020103

aaa

aaa

aaa

Dx

222320

121310

020300

aaa

aaa

aaa

Dy

232120

131110

030100

aaa

aaa

aaa

Dz

- Biện luận: Nếu D <>0 thì nghiệm x = Dx/D, y = Dy/D, z = Dz/D

Hình 32: Giải hệ phương trình 3 ẩn số

Bài 10.3: Viết chương trình nhập vào mảng 2 chiều có m hàng, n cột (m, n [3..10] )

kiểu số nguyên. Hãy:

Page 35: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 32

- Hiển thị mảng ra màn hình.

- Đếm xem có bao nhiêu phần tử c a mảng chia hết cho 3.

- Tính trung bình các phần tử là số nguyên tố nếu có.

* Bài tập trong giáo trình lý thuy t (TN035):

Bài 10.4: Ví dụ 9, trang 223: Sử dụng Edit để hiển thị các phần tử mảng và tính trung

bình các phần tử dương và trung bình các số âm c a mảng động một chiều.

Bài 10.5: Ví dụ 7, trang 216: Sử dụng StringGrid để hiển thị mảng 2 chiều, tính tổng ma trận và sắp xếp giảm dần theo từng hàng.

Page 36: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 33

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035

Chương 10: Chuỗi ký tự - String

M c tiêu:

- Thiết kế Form tương ng với một yêu cầu thực tế.

- Thao tác trên chuỗi ký tự.

Bài 11.1: Thiết kế Form và viết chương trình nhập vào một chuỗi ký tự và thực hiện các yêu cầu sau:

- Chuyển chuỗi nhập về định dạng kiểu viết tên riêng (ký tự đầu c a mỗi từ được viết in hoa)

- Tách lấy 2 từ cuối cùng c a chuỗi ký tự đã được định dạng.

* Hướng dẫn:

- Hàm Trim(s:string):string: cắt các khoảng trắng thừa hai bên c a chuỗi s.

- Hàm UpperCase(s:string):string; và LowerCase(s:string):string; chuyển đổi định dạng c a chuỗi s thành dạng viết hoa hoặc viết thường

- Hàm UpCase(c:char):char; chuyển ký tự c thành dạng viết hoa

- Hàm Length(s:string):integer; lấy chiều dài c a chuỗi s

- Hàm Pos(‘chuỗi con’, ‘chuỗi mẹ’, vị trí bắt đầu tìm) :integer; tìm vị trí c a chuỗi con trong chuỗi mẹ, nếu tìm không có thì kết quả trả về là 0.

- Hàm Copy(s:string, vị trí bắt đầu, số ký tự):string; copy từ chuỗi s lấy ra một chuỗi con.

- Th tục Delete(s:string, vị trí bắt đầu, số ký tự); xóa chuỗi con trong chuỗi s

Để chuyển thành dạng viết tên riêng thì sử dụng đoạn lệnh sau (giả sử biến s

ch a các ký tự cần định dạng)

s:=LowerCase(Trim(s));

While Pos(#32#32, s) <> 0 do Delete(s, Pos(#32#32, s), 1);

s[1]:=Upcase(s[1]);

For i:=2 to length(s) do

If s[i-1] = #32 then s[i]:=Upcase(s[i]);

Page 37: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 34

Hình 33: Kết quả bài tập 11.1

Bài 11.2: Thiết kế Form và viết chương trình tạo địa chỉ email tự động cho một họ tên nào đó. Cách tạo địa chỉ email như sau:

- Định dạng toàn bộ chuỗi thành chữ thường

- Lấy ký tự đầu c a phần họ và chữ lót ghép với tên thì tạo được phần user name

- Lấy user name đó ghép ‘@’ và tên miền thành một địa chỉ email

Ví dụ: Pham Thi Kim Loan thì có địa chỉ email như sau: [email protected]

Hình 34: Tạo địa chỉ email tự động

* Các bài tập trong giáo trình lý thuy t (TN035):

Bài 11.3: Ví dụ 15, trang 240: Chuyển đổi sang dạng tOOGLE cASE và cắt n từ bên

phải.

Bài 11.4: Ví dụ 16, trang 242: Nhập chuỗi s. Đếm số từ trong s. Xem có bao nhiêu từ trong s trùng với từ mới vừa nhập.

Page 38: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 35

Lý thuy t cần xem trước: Trong giáo trình lý thuyết - TN035 - Hệ thống kiến th c các chương từ 1 đến 10

M c tiêu:

- Tổng hợp tất cả các kiến th c đã được cung cấp để giải quyết bài toán sao cho

hiệu quả nhất.

- Rèn luyện tư duy và kỹ năng lập trình

Bài 12.1: Thiết kế Form và viết lệnh nhập vào một chuỗi ký tự. Tách riêng từng từ c a chuỗi nhập đặt vào mảng, sau đó hiển thị các từ ở vị trí lẻ.

* Hướng dẫn:

Khai báo mảng động một chiều a thuộc kiểu string và sử dụng đoạn lệnh sau để tách từ

s:=Trim(s);

While Pos(#32#32, s) <> 0 do

Delete(s, Pos(#32#32, s), 1);

sotu := 0; // đếm số từ

For i:= 1 to length(s) do

If s[i] = #32 then inc(sotu);

SetLength(a, sotu);

s:=s + #32; //thêm vào cuối 1 khoảng trắng

n := 0; // chỉ số mảng động

While s <> '' do //lặp công việc nếu s còn ch a ký tự

begin

a[n] := Copy(s, 1, pos(#32, s) - 1); //copy từ đầu tiên

Delete(s,1, Pos(#32, s)); //xóa từ đầu tiên

Inc(n);

end;

Page 39: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 36

Hình 35: Tìm từ ở vị trí lẻ

Bài 12.2: Thiết kế Form và viết lệnh nhập vào một chuỗi ký tự, và thực hiện các thao tác sau:

- Đổi chuỗi nhập sang chữ hoa

- Tìm từ có độ dài lớn nhất

- Tìm từ ở vị trí th i

- Sắp xếp các từ đó theo th tự tăng dần.

* Hướng dẫn:

- Khai báo một mảng các ký tự a để lưu giữ các từ c a chuỗi nhập

- Sử dụng hàm UpperCase để chuyển chuỗi ký tự thành dạng viết hoa

- Tách các từ riêng ra và đặt vào từng mảng a

- Dùng hàm Length để lấy chiều dài c a một chuỗi ký tự

- Sắp xếp một mảng các ký tự theo th tự tự điển

Hình 36: Kết quả bài tập 12.2

Bài 12.3 Viết chương trình nhập số nguyên n có giá trị từ 1 đến 4 và tính biểu th c :

S1 = [f(1)]1 + [f(2)]

2 + … + [f(n)]

n

Page 40: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 37

Với: f(k) = 1 * 3 * … * k nếu k là số lẻ

f(k) = 2 * 4 * … * k nếu k là số chẵn

S2 = [g(1)]2 + [g(2)]

2 + … + [g(n)]

n

Với: g(k) =1 + 2! + … + k!

Bài 12.4: Viết chương trình nhập vào 1 số nguyên dương n, với n ≥ 3 ( kiểm tra dữ liệu nhập), và tính tổng các phần tử chia hết cho 3 như sau :

S = 3 + 6 + … + i ( với i chia hết cho 3 và 3 ≤ i ≤ n)

Bài 12.5: Viết chương trình nhập vào một dãy n số nguyên dương, tính trung bình cộng các số nguyên tố trong dãy n số đó.

Bài 12.6: Viết chương trình nhập vào một số n (0< n ≤ 20), tạo n số nguyên ngẫu nhiên có giá trị từ 0 đến 100. Sắp xếp dãy số theo th tự tăng dần và giảm dần thông qua kiểu dữ liệu mảng.

Bài 12.7: Viết chương trình nhập vào một chuỗi ký tự s, chuyển chuỗi đó sang định dạng chữ viết hoa, viết thường và viết tên riêng. Sau đó dùng hàm InputBox đề nhập thêm một từ mới và kiểm tra từ này có xuất hiện trong chuỗi s hay không.

Bài 12.8: Viết chương trình nhập vào một chuỗi ký tự s, cắt lấy từ kế cuối cùng và kiểm tra từ đó có phải là từ có độ dài lớn nhất hay không.

Page 41: Giao trinh thuc hanh - Delphi 7

Giáo Trình Thực Hành Lập Trình Căn Bản B – TN036

Bộ Môn Tin Học ng Dụng – Khoa CNTT & TT – Trường ĐHCT Trang 38

TÀI LI U THAM KH O

1. Borland IDD - JM, MM, HM, CC, JG (2005), Object Pascal Language Guide.

2. http://delphi.about.com

3. John Barrow, Linda Miller, Katherine Malan, Helene Gelderblom (2005),

Introducing Delphi Programming: Theory through Practice (Paperback), Oxford

University Press, USA.

4. John Ayres (2002), The Tomes of Delphi – Win32 Core API Windows 2000

Edition, Wordware Publishing, Inc.

5. Julian Bucknall (2001), The Tomes of Delphi – Algorithms and Data

Structures, Wordware Publishing, Inc.

6. Lê Phương Lan, Hoàng Đ c Hải (2000), Giáo trình lý thuyết và bài tập Borland Delphi, NXB Giáo Dục, Hà Nội.

7. Marco Cantu (2003), Mastering Delphi 7, SyBex.

B N QUY N TÁC GI

Tài liệu này được viết nhằm phục vụ cho việc học tập c a sinh viên ở giai đoạn đầu làm quen và học cách lập trình sự kiện như thế nào thông qua ngôn ngữ lập trình Delphi, môi trường xây dựng ng dụng t c thời RAD. Tác giả sẽ upload tài liệu này lên internet trong thời gian gần thông qua file: “Giao trinh lap trinh can ban B – Delphi 7.pdf”.

Tài liệu được s d ng mi n phí cho cộng đ ng, xin không được lấy để bán hoặc thu phí khi download với bất kỳ lý do gì. Mọi thông tin cần trao đổi, xin liên hệ tác giả thông qua

địa chỉ email: [email protected].

Cần thơ, 19 November 2010, © Vũ Duy Linh.