Với môn học này sinh viên sẽ được làm quen với một số kiến thức cơ bản, các ứng dụng trong thực tế như soạn thảo văn bản, lập trình pascal.... Với đề tài “Các cấu trúc điều khiển trong c
Trang 1BÀI TẬP LỚNTÊN NHÓM:NHÓM 5
Trang 3PHẦN A: MỞ ĐẦU
Trong thời đại ngày nay, thời đại của công nghiệp hóa hiên đại hoá đất nước, hội nhập và phát triển do đó đòi hỏi con người cần phải có tri thức mà tri thức là khả năng sáng tạo tư duy của mỗi con người, là thước đo quan trọng cho nguồn nhân lực của đất nước, là khả năng biến đổi thông tin thành kiến thức, và từ kiến thức tạo ra giá trị Với mục đích nâng cao chất lượng của cuộc sống giúp cho sinh viên có khả năng tư duy và sáng tạo củng cố và nâng cao kiến thức là một việc hết sức quantrọng
Môn môn tin học là một môn học mang tính thực tế, khó, đòi hỏi người học phải có khả năng tư duy,sáng tạo, và cần phải học tập nghiên cứu nhiều Môn tin học là một môn học hết sức quan trọng đối với sinh viên ngành sư phạm toán-tin và ngành công nghệ thông tin Với môn học này sinh viên sẽ được làm quen với một số kiến thức cơ bản, các ứng dụng trong thực tế như soạn thảo văn bản, lập trình pascal
Tuy nhiên đối với môn học này yêu cầu đòi hỏi người học phải có tính tư duy trừu tượng kĩ năng lập luận logic
Do đó nó đã thôi thúc em cố gắng nghiên cứu học tập kĩ hơn nhiều hơn sâu hơn để có thể hiểu
sâu hơn kiến thức trong chương trình của môn học này Đặc biệt là “Các cấu trúc điều khiển trong
chương trình passcal và ứng dụng”.
Với đề tài “Các cấu trúc điều khiển trong chương trình passcal và ứng dụng” đây cũng là
một phần trong môn tin học Nó cũng sẽ giúp cho học sinh, sinh viên hiểu rõ hơn về kiến thức của môn.Từ đó có thể giúp cho học sinh, sinh viên đạt được nhiều kết quả như mong muốn:giải quyết bài toán một cách có hiệu quả hơn, nhanh hơn, với nhiều phương pháp giải khác nhau, giúp đi sâu hơn vào bài toán, bổ trợ kiến thức giúp ích rất lớn cho việc học môn tin học
Có thể các sinh viên khoá trước đã làm đề tài này, tuy nhiên kiến thức luôn là vô tận càng đi sâu, càng tìm hiểu kĩ và càng khám phá thì chúng ta lại tìm ra được nhiều điều hay, thú vị từ những kiến thức, tính chất, bài toán Điều đó làm cho các dạng bài tập thêm phong phú hơn
Trang 4Từ những lý do trên mà em đã chọn đề tài: “Các cấu trúc điều khiển trong chương trình
passcal và ứng dụng” từ đó đưa ra một số lí thuyết, bài tập mẫu cho sinh viên, một số phương pháp
giải các dạng bài tập trong phần này Có thể giúp học sinh, sinh viên nắm vững kiến thức và giải các bài tập một cách nhanh và chính xác hơn
II.MỤC ĐÍCH NGHIÊN CỨU.
1 Bước đầu xây dựng làm quen với việc nghiên cứu khoa học để hiểu sâu hơn cơ sở
2 Xây dựng các phương pháp giải quyết các bài toán trong lập trình pascal, rèn luyện cho học sinh sinh viên kĩ năng kĩ xảo giải các dạng bài tập giúp cho học sinh hứng thú hơn trong việc giải các dạng bài tập liên quan đến “Các cấu trúc điều khiển trong chương trình passcal và ứng dụng”
3 Giúp hiểu rõ hơn các vẫn đề về cơ sở lý thuyết ,nôi dung của “Các cấu trúc điều khiển trong chương trình passcal và ứng dụng” Phục vụ tốt hơn trong việc học môn Tin học
4 Rèn luyện thói quen làm việc độc lập sáng tao và tư duy tốt hơn
5 Giúp học sinh, sinh viên tích luỹ kiến thức, kinh nghiệm, phục vụ cho việc học tập, rèn luyện,cũngnhư phục vụ cho công tác giảng dạy cho sinh viên sau này
III.ĐỐI TƯỢNG NGHIÊN CỨU VÀ PHẠM VI NGHIÊN CỨU.
- Nghiên cứu giáo trình pascal
- Nghiên cứu về các vấn đề , nội dung liên quan đến “Các cấu trúc điều khiển trong chương trình passcal và ứng dụng”
- Nghiên cứu chương trình học phổ thông về chương trình pascal
- Nghiên cứu lí thuyết các câu lệnh gán, cấu trúc vòng lặp, cấu trúc rẽ nhánh
IV.GIẢ THUYẾT KHOA HỌC.
Nếu đề tài được thực hiện thì có thể góp phần nâng cao chất lượng học tập môn tin học đặc biệt là phần “Các cấu trúc điều khiển trong chương trình passcal và ứng dụng”
Với đề tài này nó có có thể làm tài liệu tham khảo cho học sinh, sinh viên các lớp Toán – tin, công nghệ thông tin, của Trường Cao Đẳng Sư Phạm Nghệ An
V.NHIỆM VỤ NGHIÊN CỨU.
- Xây dựng cơ sở lí luận: Nghiên cứu về lí thuyết của đề tài “Các cấu trúc điều khiển trong chương trình passcal và ứng dụng”
- Nghiên cứu tìm hiểu đặc điểm nội dung giáo trình môn pascal nói chung và đặc biệt là “Các cấu trúc điều khiển trong chương trình passcal và ứng dụng” nói riêng
Trang 5- Nghiên cứu, phân dạng các dạng bài tập liên quan đến “Các cấu trúc điều khiển trong chương trình passcal và ứng dụng”.
VI.PHƯƠNG PHÁP NGHIÊN CỨU.
1 Phương pháp nghiên cứu lý luận :
+ Tìm hiểu nghiên cứu tài liệu lý thuyết trong giáo trình môn lập trình pascal và các môn liên quan
+ Các đề tài nghiên cứu khoa học có liên quan
2 Phương pháp điều tra quan sát :
+ Từ cơ sở lý thuyết áp dụng vào bài tập
+ Tham gia đầy đủ các giờ dạy của giảng viên môn lập trình pascal
+ Thảo luận học nhóm với các sinh viên trong lớp k34 toán tin
3 Sử dụng kết hợp nhiều phương pháp: so sánh, đối chiếu, phân tích tổng hợp
4 Thu thập và xử lí thông tin
VII ĐÓNG GÓP CỦA ĐỀ TÀI.
Một số dạng bài tập đặc trưng và nâng cao của phần “ Các cấu trúc điều khiển trong chương trình
passcal và ứng dụng”, hình thành nên một tài liệu tham khảo cho sinh viên ngành Toán – tin, công
nghệ thông tin tham khảo và học tập
CHƯƠNG I: CƠ SỞ LÝ THUYẾT
I GIỚI THIỆU NGÔN NGỮ PASCAL
Trang 61 Ngôn ngữ pascal
Vào đầu những năm 1970 do nhu cầu học tập của sinh viên, giáo sư Niklaus
Writh - Trường Đại Học Kỹ Thuật Zurich - Thụy Sĩ đã sáng tác một ngôn ngữ lập trình cấp cao cho công tác giảng dạy sinh viên Ngôn ngữ được đặt tên là PASCAL để tưởng nhớ đến nhà toán học người Pháp Blaise Pascal
Pascal là một ngôn ngữ lập trình có cấu trúc thể hiện trên 3 phương diện
- Về mặt dữ liệu: Ngoài các kiểu dữ liệu đơn giản còn có các kiểu dữ liệu có cấu trúc Ta có thể xây dựng các kiểu dữ liệu phức tạp từ các kiểu dữ liệu đã có
- Về mặt câu lệnh: Từ các câu lệnh đơn giản và lệnh có cấu trúc ta có thể xây
dựng các câu lệnh hợp thành
- Về mặt chương trình: Một chương trình có thể chia làm nhiều chương trình con
2 TURBO PASCAL
Khi mới ra đời, Standart Pascal là một ngôn ngữ đơn giản, dùng để giảng dạy
và học tập, dần dần các ưu điểm của nó được phát huy và trở thành một ngôn ngữ mạnh Từ Pascal chuẩn ban đầu, đã được nhiều công ty phần mềm cải tiến với nhiều thêm bớt khác nhau
TURBO PASCAL là sản phẩm của hãng Borland được dùng rất phổ biến trên
thế giới vì những ưu điểm của nó như: tốc độ nhanh, các cải tiến so với Pascal chuẩn phù hợp với yêu cầu người dùng
TURBO PASCAL 4.0 trở đi có cải tiến rất quan trọng là đưa khái niệm Unit để
có thể dịch sẵn các Module trên đĩa, làm cho việc lập trình trở nên ngắn gọn, dễ dàng, chương trình viết dễ hiểu hơn
Từ phiên bản 5.5 (ra đời năm 1989) trở đi, Turbo Pascal có một kiểu dữ liệu
hoàn toàn mới là kiểu Object cho phép đưa các mã lệnh xen kẽ với dữ liệu Ngoài ra
nó còn thư viện đồ hoạ rất phong phú với nhiều tính năng mạnh, ngôn ngữ lập trình cấp cao Delphi cũng sử dụng cú pháp tương tự như Turbo Pascal
II SỬ DỤNG PASCAL 7.0
1 Khởi Động Turbo Pascal
Trang 7Nếu máy tính chúng ta đã cài đặt Turbo Pascal trên đĩa, ta có thể khởi động chúng như sau (Nếu máy tính chưa có, chúng ta phải cài đặt Turbo Pascal sau đó mới thực thi được)
- Từ MS-DOS: Đảm bảo rằng thư mục hiện hành đúng vị trí cài đặt (hoặc dùng lệnh PATH) Turbo Pascal Ta đánh vào TURBO rồi Enter
- Từ Windows: Ta nên giả lập MS-DOS Mode cho tập tin TURBO.EXE hoặc Shortcut của nó, nếu không mỗi khi ta thực thi TURBO PASCAL chương trình sẽ thoát khỏi Windows, trở về MS-DOS Sau khi thoát Turbo Pascal ta phải đánh lệnh EXIT để khởi động lại Windows
2 Cấu trúc của một chương trình Pascal
Một chương trình Pascal gồm 2 phần chính: Phần khai báo và phần thân chương trình Khi thực thi,chương trình Pascal sẽ thực thi tuần tự từng lệnh một theo như thứ tự đã được viết, trừ khi gặp các cấu trúc điều khiển rẽ nhánh hoặc lặp, bắt đầu từ thân chương trình chính
a Phần khai báo
Phần khai báo có thể có các mục sau:
· Tên chương trình PROGRAM <Tên chương trình>;
· Khai báo sử dụng unit USES <Tên Unit>[,<Tên Unit>];
· Khai báo nhãn LABEL <Tên nhãn>[,<Tên nhãn>];
· Khai báo hằng CONST
· Khai báo kiểu TYPE
· Khai báo biến VAR
· Khai báo chương trình con
Trang 8Trong chương trình pascal, sau phần mô tả dữ liệu là phần mô tả các câu lệnh Các câu lệnh cónhiệm vụ xác định các công việc mà máy tính phải thực hiện để xử lý các dữ liệu đã được mô tả vàkhai báo.
Câu lệnh được chia thành câu lệnh đơn giản và câu lệnh có cấu trúc
I.1 Câu lệnh đơn giản
-) Vào dữ liệu: read, readln
-) Ra dữ liệu: write,writeln
-) lệnh gán: :=
-) Lời gọi chương trình con (gọi trực tiếp chương trình con)
-) Xử lý tập tin: RESET, REWRITE, ASSIGN…
I.2 Câu lệnh có cấu trúc:
1.3 Chú ý: Các câu lệnh phải được ngăn cách với nhau bởi dấu chấm phẩy (;) và các câu lệnh có thể
viết trên một dòng hay nhiều dòng
2 Cấu trúc tuần tự
2.1 Lệnh gán (Assignment statement)
Một trong các câu lệnh đơn giản và cơ bản nhất của pascal là lệnh gán Mục đích của lệnh này làgán cho một biến đã khai báo một giá trị nào đó cùng kiểu với biến
Cách viết : <tên biến>:= <biểu thức> ;
Ví dụ: Khi đã khai báo:
Trang 9 Lưu trữ các giá trị khác nhau vào một ô nhớ tại những thời điểm khác nhau.
Một quá trình tính toán có thể coi như là một quá trình làm thay đổi giá trị của một (hay một số) ônhớ nào đó, cho đến khi đạt được giá trị cần tìm
Trang 10Begin End;
- Điều kiện là một biểu thức boolean
- Nếu <Công viêc> sau THEN hoặc ELSE có nhiều hơn một lệnh thì ta phải gói lại trong
BEGIN END;
- Toàn bộ lệnh IF THEN ELSE xem như một lệnh đơn
Ví dụ : Trong toán học khi ta tính căn bậc 2 của một số thì điều kiện số đó phải lớn hơn 0 hoặc bằng
0 Cũng vậy để tính căn bậc 2 của một số bất kì nhập từ bàn phím, khi ta đã lập trình sẵn điều kiện số đó phải lớn hơn 0 hoặc bằng 0 mới có thể tính được căn bậc 2
Ta có chương trình tính căn bậc 2 của một số trong chương trình pascal như sau:
Trang 11Writeln (‘nhan Enter de thoat’);
IF<Điều kiện>THEN<Công việc>;
Nếu điều kiện này đúng, thì máy sẽ thực hiện công việc rồi tiếp tục thực hiện công việc tiếp theo
Ngược lại, nếu điều kiện này sai, máy sẽ bỏ qua công việc và đi đến thực hiện công việc tiếp theo
Trang 12Cấu trúc câu lệnh như sau :
Công việc i
Trang 13GT1: Công việc 1; Nếu giá trị 1(GT1) thi hành Công việc 1
Gti : Công việc i ; Nếu giá trị công việc i (Gti) thi hành Công việc i
ELSE Công việc 0; Nếu không có giá trị nào thỏa mãn thì thực hiện Công việc 0END;
Ghi chú:
- Lệnh CASE OF có thể không có ELSE
- Biểu thức chọn là kiểu rời rạc như Integer, Char, không chọn kiểu real
- Nếu ứng với nhiều giá trị khác nhau của biểu thức chọn vẫn thi hành một lệnh thì giá trị đó có thể viết trên cùng một hàng cách nhau bởi dấu phẩy(,) : Giá trị k1, k2,…, kp: lệnh k;
Ví dụ: Trong khi thực hiện việc chọn màu vẽ mà ta thích, ta có thể lập trình ra tên màu mà ta muốn chọn Ta có chương trình như sau:
‘R’,’r’ : Write(‘RED = MAU DO’);
‘W’,’w’ : Write(‘WHITE =MAU TRANG’);
‘B’,’b’ : Write(‘BLUE =MAU XANH DUONG’);
Cấu trúc lệnh FOR cho phép lặp lại nhiều lần một lệnh
Số lần lặp đã biết trước Phát biểu FOR có 2 dạng:
Trang 14+ FOR …TO…DO…là lệnh đếm lên.
+ FOR …DOWNTO….DO là lệnh đếm xuống
Cú pháp tổng quát là:
FOR < biến đếm>:= < trị đầu> TO/DOWNTO <trị cuối> DO <công việc>;
Lưu đồ:
Sai Đúng
{lặp} Sai
đúng
Kết thúc
Ý nghĩa của lưu đồ:
Đầu tiên kiểm tra giá trị đầu nhỏ hơn hoặc bàng giá trị cuối không? Nếu:
+) Sai, kết thúc câu lệnh
+) Đúng, thì thực hiện công việc, sau đó kiểm tra biến đếm có còn nhỏ hơn giá trị cuối không? Nếu đúng, thì tăng biến đếm thêm 1 và cứ lặp cho khi biến đếm không còn nhỏ hơn hoặc bằng giá trị cuốinữa thì thoát khỏi vòng lặp và kết thúc lệnh
Chú ý: Trị đầu, trị cuối là các biến hoặc hằng và biến đếm phải là kiểu rời rạc.
Ví dụ: Khi ta in một dãy số từ 0 đến 9
Trước tiên ta phải cho biến đếm chạy từ giá trị đầu cho tới giá trị cuối:
Chương trình được thực hiện như sau:
PROGRAM Day_so;
Trị đầu <= Trị
cuối Biến đếm:= Trị đầu
<Công việc>
Biến đếm<= Trị cuối Tăng biến đếm lên 1
Trang 15+) Nếu điều kiện Đúng thì chương trình sẽ chạy trong cấu trúc WHILE DO.
+) Sau mỗi lần lặp, chương trình trở lại kiểm tra điều kiện Tùy theo biểu thức lôgic của điều kiện là đúng hay sai thì chương trình sẽ thực hiện công việc tương ứng
+) Nếu sai thì chuyển xuống dưới lệnh WHILE DO
Ta có lưu đồ:
Ý nghĩa của lưu đồ:
;
Điều kiện Công việc Lệnh tiếp theo
Trang 16Trong khi mà điều kiện còn đúng thì thực hiện công việc, rồi quay trở về kiểm tra lại điều kiện Vòng lặp được tiếp tục, đến khi điều kiện đặt ra không còn đúng nữa thì đi tới thực hiện lệnh tiếp theo.
Ví dụ: Viết chương trình tính trung bình của n số : x1 + x2 + x3 +….+ xn mà trong toán muốn tính điểm trung bình của một lớp học nào đó Ta có chương trình như sau:
Writeln(‘Trung binh la=’,average:10:3);
Writeln(‘nhan Enter de thoat’);
Trang 17CÚ PHÁP :
Sơ đồ cú pháp REPEAT…UNTIL
Sai
Đúng
Lưu đồ cấu trúc của REPEAT….UNTIL
Ý nghĩa của câu lệnh:
Nếu điều kiện lôgic là Sai (False) thì lặp lại lệnh cho đến khi diều kiện Đúng (True) thì mới thoát ra khỏi cấu trúc REPEAT UNTIL
Nếu có câu lệnh thì mỗi câu lệnh ngăn cách nhau bằng dấu chấm phẩy(;) Công việc của REPEAT
và UNTIL không nhất thiết phải dùng lệnh ghép để nhóm từ 2 lệnh đơn trở lên thành công việc
Ghi chú:
So sánh hai cách viết WHILE DO và REPEAT UNTIL ta thấy có sự khác biệt:
- Trong cấu trúc WHILE DO thì <Điều kiện> được kiểm tra trước, nếu thỏa<Điều kiện> thì mới thực hiện <Công việc>
- Ngược lại, trong cấu trúc REPEAT UNTIL thì <Công việc> sẽ thực thi sau đó mới kiểm tra
<Điều kiện>,nếu không thỏa mãn<Điều kiện> thì tiếp tục thi hành <Công việc> cho đến khi <Điều kiện> là đúng
Trang 18Lệnh REPEAT UNTIL thường được sử dụng trong lập trình, nhất là lúc người sử dụng muốn tiếp tục bài toán ở trường hợp thay đổi biến mà không phải trở về chương trình và nhấn tổ hợp phím Ctrl+ f9 lại.
CHƯƠNG II: CÁC DẠNG BÀI TẬP
Dạng 1: Dạng bài tập sử dụng câu lệnh đơn giản để giải quyết một số bài
Write('Nhap vao do dai canh thu nhat: '); Readln(a);
Write('Nhap vao do dai canh thu hai: '); Readln(b);
Write('Nhap vao goc giua hai canh: '); Readln(goc);
Trang 19Program Tinh_can_bac_n_cua_x;
Var x,S: Real;
n: Word;
Begin
Write('Nhap vao n= '); Readln(n);
Write('Nhap vao x= '); Readln(x);
S:=EXP(1/n*LN(x));
Writeln('S = ',S:0:2);
Readln;
End
Bài tập 3: Viết chương trình nhập vào 2 số a, b Sau đó hoán đổi giá trị của 2 số đó:
a Cho phép dùng biến trung gian
Chương trình:
Program Swap;
Var a,b,tam: Integer;
Begin
Write('Nhap vao a= '); Readln(a);
Write('Nhap vao b= '); Readln(b);
tam:=a; {tam lấy giá trị của a}
a:=b; {a lấy giá trị của b}
b:=tam; {b lấy lại giá trị của tam}
Trang 20Write('Nhap vao a= '); Readln(a);
Write('Nhap vao b= '); Readln(b);
a:=a+b; {a lấy tổng giá trị của a+b}
b:=a-b; {b lấy giá trị của a}
a:=a-b; {a lấy lại giá trị của b}
Trang 22Bài tập 3: Viết chương trình tính khoảng cách từ một điểm I(xi,yi) đến đường thẳng có phương trìnhD: Ax + By + C = 0.
Gợi ý:
Công thức tính khoảng cách: h = . 2 . 2
B A
C y B x
Có 2 sinh viên viết chương trình giải bài toán này như sau:
Trang 23Hãy cho biết 2 chương trình trên cho kết quả đúng hay sai? Tại sao?
Bài 6: Viết chương trình nhập vào từ bàn phím hai số nguyên dương m và n, sau đó tính trung bìnhcộng bình phương các số nguyên từ m đến n
Dạng 2: Dạng bài tập sử dụng lệnh cấu trúc rẽ nhánh vào giải quyết một số
bài toán.
I Câu lệnh if then và câu lệnh if then else.
Bài tập 1: Viết chương trình nhập vào một số nguyên và kiểm tra xem số vừa nhập là số chẵn hay sốlẻ