Đưa ra ví dụ : Bạn là người không biết tiếng Anh vậy làm sao để bạn có thể nói chuyện với người Anh hay đọc một cuốn Khái niệm lập trình: Lập trình là sử dụng một cấu trúc dữ liệu và các
Trang 1Chương 1: MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
§1: KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
I MỤC ĐÍCH YÊU CẦU
- Biết có 3 lớp ngôn ngữ lập trình và các mức của ngôn ngữ lập trình: ngôn ngữmáy, hợp ngữ và ngôn ngữ bậc cao
- Biết vai trò của chương trình dịch
- Biết khái niệm thông dịch và biên dịch
- Biết một trong những nhiệm vụ quan trọng của chương trình dịch là phát hiệnlỗi cú pháp của chương trình nguồn
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
- Phương pháp: Thuyết trình, vấn đáp
- Phương tiện: Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM:
- Trong chương trình lớp 10 các em đã được biết đến một số khái niệm: ngônngữ lập trình, chương trình dịch; nên trong bài này chúng ta nên trình bày rõcho học sinh hiểu về biên dịch và thông dịch
IV.NỘI DUNG BÀI GIẢNG:
Hoạt động của Giáo viên và Học sinh Nội dung
GV: Đặt câu hỏi 1: Em hãy cho biết các
bước giải một bài toán trên máy tính?
HS: Suy nghĩ và trả lời câu hỏi.
GV: Phân tích câu trả lời của học sinh.
Nhắc lại các bước giải bài toán trên máy
tính đã học ở lớp 10
GV: Đặt câu hỏi 2: Em hãy cho biết có
mấy loại ngôn ngữ lập trình?
HS: Trả lời câu hỏi của giáo viên.
GV: Phân tích câu trả lời của học sinh.
Mỗi loại máy có một ngôn ngữ riêng,
thường thì chương trình viết bằng ngôn
ngữ của máy nào chỉ chạy được trên máy
đó
Khi viết chương trình bằng ngôn ngữ bậc
cao muốn thi hành được trên loại máy nào
thì cần chuyển chương trình sang ngôn ngữ
máy của máy đó
GV: Đặt câu hỏi 3 : Làm thế nào để
chuyển chương trình viết bằng ngôn ngữ
bậc cao sang ngôn ngữ máy?
Đưa ra ví dụ : Bạn là người không biết
tiếng Anh vậy làm sao để bạn có thể nói
chuyện với người Anh hay đọc một cuốn
Khái niệm lập trình: Lập trình là sử dụng
một cấu trúc dữ liệu và các câu lệnh củamột ngôn ngữ lập trình cụ thể để mô tả dữliệu và diễn đạt thuật toán
-Trả lời câu hỏi: Có 3 loại ngôn ngữ lậptrình: Ngôn ngữ máy, hợp ngữ và ngôn ngữbậc cao
Chương trình viết bằng ngôn ngữ máy cóthể nạp trực tiếp vào bộ nhớ thi hành ngay
Chương trình viết bằng ngôn ngữ bậc caonói chung không phụ thuộc loại máy, muốnthi hành được thì nó phải được chuyển sangngôn ngữ máy
=>Cần phải có chương trình dịch để chuyểnchương trình viết bằng ngôn ngữ lập trìnhbậc cao sang ngôn ngữ máy để máy có thể
Trang 2sách tiếng Anh?
+ Khi một người làm phiên dịch người đó
phải dịch như thế nào? (Dịch ngay từng
câu khi 2 người nói chuyện)
+ Khi một người muốn dịch 1 cuốn sách
sang tiếng Việt thì làm thế nào? (Dịch
toàn bộ cuốn sách đó sang tiếng Việt để
người đó có thể đọc được)
GV: Lấy ví dụ về biên dịch và thông dịch
cho học sinh có thể hình dung được mỗi
công việc
Biên dịch: Sử dụng ngôn ngữ lập trình
Pascal để dịch một chương trình viết sẵn ra
đĩa và thi hành chương trình đã dịch để học
sinh quan sát
Thông dịch: Sử dụng các lệnh trong
Command promt để thực hiện một số lệnh
của DOS hoặc dùng ngôn ngữ Foxpro để
thực hiện một số lệnh quản trị dữ liệu, học
sinh dễ dàng nhận ra việc thông dịch
Đi kèm với các chương trình dịch thường
có các công cụ như soạn thảo chương trình
nguồn, lưu trữ, tìm kiếm, phát hiện lỗi,
thông báo lỗi,… ngôn ngữ lập trình thường
Dịch toàn bộ chương trình nguồn thànhmột chương trình đích (ngôn ngữ máy) để
có thể thực hiện trên máy và có thể lưu trữ
để sử dụng lại khi cần
+ Thông dịch (Interpreter): Dịch lần lượt
từng câu lệnh và thực hiện ngay câu lệnhấy
Thông dịch được thực hiện bằng cách lặplại dãy các bước sau:
Kiểm tra tính đúng đắn của câu lệnh tiếptheo trong chương trình nguồn
Chuyển đổi các câu lệnh đó thành mộthay nhiều câu lệnh trong ngôn ngữ máy
Thực hiện các câu lệnh vừa chuyển đổiđược
V CỦNG CỐ , DẶN DÒ:
Nhắc lại một số khái niệm mới
Trang 3§2: CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH
I MỤC ĐÍCH YÊU CẦU
Biết ngôn ngữ lập trình có 3 thành phần cơ bản là: bảng chữ cái, cú pháp và ngữnghĩa
Hiểu và phân biệt được 3 thành phần này
Biết các thành phần cơ bản của Pascal: Bảng chữ cái, tên, tên chuẩn, tên riêng (từkhóa), hằng và biến
Phân biệt được tên, hằng và biến
Biết đặt tên đúng
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
Phương pháp: Thuyết trình, vấn đáp
Phương tiện: Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM:
Phần này bắt đầu một kiến thức mới, ngoài giới thiệu cho các em biết các kháiniệm mới, cần giải thích sự khác nhau giữa cú pháp và ngữ nghĩa
Riêng các thành phần cơ sở của Pascal, với mỗi khái niệm cần nên lấy ví dụ minhhọa đúng-sai, và ví dụ sự khác biệt giữa chúng, nên minh họa bằng một đoạnchương trình đơn giản
IV.NỘI DUNG BÀI GIẢNG:
Hoạt động của Giáo viên và Học sinh Nội dung
GV: Các ngôn ngữ lập trình nói chung
thường có chung một số thành phần như:
Dùng những ký hiệu nào để viết chương
trình, viết theo quy tắc nào, viết như vậy có
ý nghĩa là gì? Mỗi ngôn ngữ lập trình có
một quy định riêng về những thành phần
này
Ví dụ: Bảng chữ cái của các ngôn ngữ lập
trình khác nhau có sự khác nhau Chẳng hạn
ngôn ngữ Pascal không sử dụng dấu !
nhưng ngôn ngữ C++ lại sử dụng ngôn ngữ
này
- Cú pháp các ngôn ngữ lập trình khác nhau
cũng khác nhau, ngôn ngữ Pascal dùng cặp
từ Begin – End để gộp nhiều lệnh thành 1
lệnh nhưng C++ lại dùng cặp kí hiệu {}
Ví dụ: Xét 2 biểu thức:
A + B (1) A, B là các số thực
I + J (2) I, j là các số nguyên
Khi đó dấu + trong (1) sẽ là cộng hai số
thực, trong (2) là cộng hai số nguyên
- Mỗi ngôn ngữ khác nhau cũng có cách xác
1.Các thành phần cơ bản:
- Mỗi ngôn ngữ lập trình thường có 3 thànhphần cơ bản là : bảng chữ cái, cú pháp vàngữ nghĩa
a.Bảng chữ cái: Là tập các ký hiệu dùng
để viết chương trình
-Trong ngôn ngữ Pascal bảng chữ cái gồm:Các chữ cái trong bảng chữ cái tiếng Anh,các chữ số 0 9 và một số ký tự đặc biệt(xem trong SGK)
b.Cú pháp: Là bộ quy tắc dùng để viết
chương trình
Trang 4định ngữ nghĩa khác nhau.
HS: Lắng nghe, ghi chép.
GV: Đưa ra ví dụ ngôn ngữ tự nhiên cũng
có bảng chữ cái, ngữ pháp (cú pháp) và
nghĩa của câu, từ
GV: Trong các ngôn ngữ lập trình nói
chung, các đối tượng sử dụng trong chương
trình đều phải đặt tên để tiện cho việc sử
dụng Việc đặt tên trong các ngôn ngữ khác
nhau là khác nhau, có ngôn ngữ phân biệt
chữ hoa, chữ thường, có ngôn ngữ không
phân biệt chữ hoa, chữ thường
GV: Giới thiệu cách đặt tên trong ngôn ngữ
cụ thể Pascal
Ví dụ :
Tên đúng: a, b, c, x1, x2, _ten …
Tên sai: a bc,2x, a&b …
GV: Ngôn ngữ nào cũng có 3 loại tên cơ
bản này nhưng tùy theo ngôn ngữ mà các
tên có ý nghĩ khác nhau trong các ngôn ngữ
khác nhau
o Trong khi soạn thảo chương trình, các
ngôn ngữ lập trình thường hiển thị các
tên dành riêng với một màu chữ khác
hẳn với các tên còn lại giúp người lập
trình nhận biết được tên nào là tên dành
riêng (từ khóa) Trong ngôn ngữ
Pascal, từ khóa thường hiển thị bằng
màu trắng
GV: Mở một chương trình viết bằng
Pascal để học sinh quan sát cách hiển thị
của một số từ khóa trong chương trình
- Các ngôn ngữ lập trình thường cung
cấp một số đơn vị chương trình có sẵn
trong các thư viện chương trình giúp
người lập trình có thể thực hiện được
c Ngữ nghĩa: Xác định ý nghĩa thao tác
cần thực hiện ứng với tổ hợp ký tự dựa vàongữ cảnh của nó
- Cú pháp cho biết cách viết chươngtrình hợp lệ, ngữ nghĩa xác định ýnghĩa của các tổ hợp ký tự trongchương trình
- Lỗi cú pháp được chương trình dịchphát hiện và thông báo cho người lậptrình Chương trình không còn lỗi cúpháp thì mới có thể dịch sang ngônngữ máy
- Lỗi ngữ nghĩa được phát hiện khi chạychương trình
2 Một số khái niệm
a Tên
- Mọi đối tượng trong chương trình đềuphải được đặt tên Mỗi ngôn ngữ lậptrình có một quy tắc đặt tên riêng
- Trong ngôn gnữ Turbo Pascal tên làmột dãy liên tiếp không qúa 127 ký tựbao gồm các chữ cái, chữ số và dấugạch dưới nhưng phải bắt đầu bằngchữ cái hoặc dấu gạch dưới
- Trong Free Pascal, tên có thể có tối đa
Trang 5nhanh một số thao tác thường dùng.
- Giáo viên chỉ cho học sinh một số tên
chuẩn trong ngôn ngữ Pascal
GV: Đưa ra ví dụ: Để viết chương trình
giải phương trình bậc hai ta cần khai báo
- Hằng thường có 2 loại, hằng được đặt
tên và hằng không được đặt tên Hằng
không được đặt tên là những giá trị viết
trực tiếp khi viết chương trình Mỗi
ngôn ngữ lập trình có một quy định về
cách viết hằng riêng.Hằng được đặt tên
cũng có cách đặt tên cho hằng khác
nhau
- Biến là đối tượng được sử dụng nhiều
nhất trong khi viết chương trình Biến
là đại lượng có thể thay đổi được nên
thường được dùng để lưu trữ kết qủa,
làm trung gian cho các tính toán,…Mỗi
loại ngôn ngữ có những loại biến khác
nhau và cách khai báo cũng khác nhau
- Khi viết chương trình, người lập trình
thường có nhu cầu giải thích cho
những câu lệnh mình viết, để khi đọc
lại được thuận tiện hoặc người khác
đọc có thể hiểu được chương trình
mình viết, do vậy các ngôn ngữ lập
trình thường cung cấp cho ta cách để
đưa các chú thích vào trong chương
trình
- Ngôn ngữ khác nhau thì cách viết chú
thích cũng khác nhau
GV: Mở một chương trình Pascal đơn giản
có chứa các thành phần là các khái niệm
của bài học, nếu không có máy để giới
- Các tên trong chương trình khôngđược trùng nhau
b Hằng và biến
Hằng: Là các đại lượng có giá trị không
đổi trong quá trình thực hiện chương trình
- Các ngôn ngữ lập trình thường có:
+ Hằng số học : số nguyên hoặc số thực.+ Hằng xâu : là chuỗi ký tự đặt trongd6áu nháy “ hoặc ””
+ Hằng Logic : là các giá trị đúng hoặcsai
Biến:
- Là đại lượng được đặt tên, giá trị cóthể thay đổi được trong chương trình
Trang 6thiệu thì có thể sử dụng bản in sẵn khổ lớn.
chỉ cho học sinh từng khái niệm được thể
hiện trong chương trình
- Các NNLT có nhiều loại biến khácnhau
- Biến phải khai báo trước khi sử dụng
c Chú thích
- Trong khi viết chương trình có thể viếtcác chú thích cho chương trình Chúthích không làm ảnh hưởng đếnchương trình
Trong Pascal chú thích được đặt trong { và} hoặc (* và *)
Hiểu chương trình là sự mô tả của thuật toán bằng một ngôn ngữ lập trình
Biết cấu trúc của một chương trình Pascal: cấu trúc chung và các thành phần
Nhận biết được các thành phần của một chương trình đơn giản
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
Phương pháp: Thuyết trình, vấn đáp
Phương tiện: Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM:
Cách dạy hiệu qủa nhất là có một chương trình mẫu với đầy đủ các thành phầncủa một chương trình, chỉ cho học sinh từng thành phần trong chương trình đó vàthành phần nào có thể có, thành phần nào bắt buộc phải có …
IV.NỘI DUNG BÀI GIẢNG:
Hoạt động của Giáo viên và Học sinh Nội dung
GV : Thuyết trình đưa ra cấu trúc chung
của chương trình :
HS: Lắng nghe, ghi chép
GV : Thuyết trình đưa ra kiến thức
HS : Lắng nghe, ghi chép
GV : Phần khai báo sẽ báo cho máy biết
chương trỉnh sẽ sử dụng những tài nguyên
nào của máy
- Có thể khai báo tên chương trình, hằng
Trang 7GV : Mỗi ngôn ngữ lập trình có cách khai
báo khác nhau và tùy thuộc vào ngôn ngữ
mà ta cần tìm hiểu xem trong chương trình
ta cần khai báo những gì
GV : Thư viện chương trình thường chứa
những đoạn chương trình lập sẵn giúp
người lập trình thực hiện một số công việc
thường dùng, các đoạn chương trìnhnày
cực kỳ hữu ích cho gnười lập trình, nhất là
trong những ngôn ngữ lập trình tiên tiến
hiện nay
GV : Lấy một ngôn ngữ lập trình mới nhất
hiện nay, chẳng hạn Visual Basic.NET, lấy
một số lệnh để học sinh thấy được sự tiện
dụng khi sử dụng thư viện
GV : Khai báo hằng là việc đặt tên cho
hằng để tiện khi sử dụng và tránh việc phải
viết lặp lại nhiều lần cùng một hằng trong
chương trình Khai báo hằng còn tiện lợi
hơn khi cần thay đổi giá trị của nó trong
chương trình
GV : Lập trình bằng ngôn ngữ nào cần tìm
hiểu cách khai báo hằng của ngôn ngữ ấy
GV : Nếu có thể giáo viên giải thích để
học sinh có thể hiểu được rằng, khai báo
biến là xin máy tính cấp cho chương trình
một vùng nhớ để lưu trữ và xử lý thông tin
trong bộ nhớ trong
GV : Mỗi ngôn ngữ lập trình có cách tổ
chức chương trình khác nhau, thường thì
phần thân chứa các câu lệnh của chương
Khai báo tên chương trình
- Trong Turbo pascal Program <tên chương trình>;
- Tên chương trình do người lập trình tựđặt theo đúng quy tắc đặt tên
Ví dụ : Program Bai_1;
Program Tong;
Khai báo thư viện:
- Trong ngôn gnữ Pascal : Uses <tên thư viện>;
- Trong ngôn ngữ C++ : #include<Tên tệp thư viện>
Ví dụ: Trong Turbo Pascal : Uses CRT,
Ví dụ:
Trong Pascal : Const N = 100;
e = 2.7;
Trong C++ : Const int N = 100;
Const float e = 2.7
Khai báo biến :
- Mọi biến sử dụng trong chương trìnhđều phải khai báo để chưoyng trìnhdịch biết để xử lý và lưu trữ
- Biến chỉ mang một giá trị gọi là biếnđơn
(Khai báo biến sẽ trình bày ở bài 5)
Phần thân chương trình :
Trang 8GV : Cho học sinh quan sát 2 chương trình
trong 2 ngôn ngữ khác nhau là Pascal và
C++
HS : Quan sát và nhận xét về cách viết của
hai chương trình trong 2 ngôn ngữ khác
nhau
Thông qua đó học sinh cần nhận ra : hai
chương trình cùng thực hiện một công việc
nhưng viết bằng hai ngôn ngữ khác nhau
nên hệ thống các câu lệnh trong chương
trình cũng khác nhau
Có thể thêm câu lệnh hiển thị một xâu vào
trong chương trình Pascal để thể hiện rõ
hơn là nếu muốn đưa ra câu thông báo thì
ta có thể sử dụng lệnh Writeln và xâu
được để trong dấu nháy đơn
- Thân chương trình thường là nơi chứatoàn bộ các câu lệnh của chương trìnhhoặc lời gọi chương trình con
- Thân chương trình thường có cặp dấuhiệu bắt đầu và kết thúc chương trình
Ví dụ: Trong ngôn gnữ Pascal
Begin [<Các câu lệnh>]
End
3 Ví dụ chương trình đơn giản
Xét hai chương trình đơn giản trong 2 ngônngữ khác nhau sau đây :
Chương trình 1 : Trong ngôn ngữ Turbo
PascalProgram VD;
Begin Write(‘Chao cac ban’);
}
V CỦNG CỐ , DẶN DÒ:
Nhắc lại một số khái niệm mới
Cho một chương trình mẫu về nhà yêu cầu học sinh phân biệt và chỉ rõ từngthành phần của chương trình đó
§4 MỘT SỐ KIỂU DỮ LIỆU CHUẨN
I MỤC ĐÍCH YÊU CẦU
Biết một số kiểu dữ liệu định sẵn: nguyên, thực, ký tự, logic, và miền con
Xác định được kiểu cần khai báo của dữ liệu đơn giản
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
Phương pháp: Thuyết trình, vấn đáp
Phương tiện: Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM:
Trong phần này giáo viên chú ý cần lấy nhiều ví dụ đơn giản để học sinh luyệntập việc xác định kiểu dữ liệu cần khai báo …
IV NỘI DUNG BÀI GIẢNG:
Hoạt động của Giáo viên và Học sinh Nội dung
GV : Vấn đáp: Khi cần viết chương trình
quản lý học sinh ta cần sử lý thông tin ở
những dạng nào ?
Trang 9HS : Suy nghĩ, trả lời câu hỏi của GV
GV : Phân tích câu trả lời của học sinh,
đưa ra một vài dạng thông tin như sau :
- Họ tên học sinh là những thông tin
- Ngôn ngữ lập trình nào cũng đưa ra
một số kiểu dữ liệu chuẩn đơn giản,
từ những kiểu đơn giản này ta có thể
xây dựng thành những kiểu dữ liệu
phức tạp hơn
- Kiểu dữ liệu nào cũng có miền giới
hạn của nó, máy tính không thể lưu
trữ tất cả các số trên trục số nhưng
nó có thể lưu trữ với độ chính xác
cực cao
- Tùy thuộc vào ngôn ngữ lập trình mà
tên của các kiểu dữ liệu khác nhau và
miền giá trị của các kiểu dữ liệu này
cũng khác nhau
- Với mỗi kiểu dữ liệu người lập trình
cần ghi nhớ tên kiểu, miền giá trị và
số lượng ô nhớ để lưu một giá trị
thuộc kiểu đó
- Trong lập trình nói chung thì kiểu kí
tự thường là tập các kí tự trong các
bảng mã kí tự, trong các bảng mã
hóa kí tự người ta quy định có bao
nhiêu kí tự khác nhau và mỗi kí tự có
một mã thập phân tương ứng Để lưu
các giá trị là kí tự thì phải lưu mã
thập phân tương ứng của nó
GV : Đặt câu hỏi: Em biết những bảng
mã nào?
HS : HS sẽ đưa ra một số bảng mã nhưng
GV chú ý các em NNLT Pascal chỉ sử
dụng bảng mã ASCII cho kiểu kí tự
NNLT Pascal có một số kiểu dữ liệu chuẩnsau :
(10-4932 104932) 10
3 Kiểu kí tự
- Tên kiểu: CHAR
- Miền giá trị: Là các kí tự trong bảng mãASCII gồm 256 ký tự
- Mỗi ký tự có 1 mã tương ứng từ 0 đến255
- Các kí tự có quan hệ so sánh, việc sosánh dựa trên mã của từng kí tự
Ví dụ: Trong bảng mã ASCII, các kí tự trong
bảng chữ cái tiếng Anh xếp liên tiếp vốinhau, các chữ số cũng xếp liên tiếp, cụ thể: A
mã 65; a mã 97, 0 mã 48
4 Kiểu logic
- Tên kiểu : Boolean
- Miền giá trị : Chỉ có 2 giá trị là TRUE
Trang 10Kiểu logic là kiểu thường chỉ có 2 giá trị
đúng – sai Mỗi ngôn ngữ khác nhau lại
có cách mô tả kiểu logic khác nhau,
Pascal dùng True – False nhưng một số
ngôn ngữ khác lại mô tả bằng 0 – 1,… Có
ngôn ngữ lại không có kiểu logic mà
người lập trình phải tự tìm cách để thể
hên những giá trị dạng này
(Đúng) hoặc FALSE (Sai)
- Một số ngôn ngữ có cách mô tả các giátrị logic bằng những cách khác nhau
- Khi viết chương trình bằng ngôn ngữlập trình nào thì cần tìm hiểu đặc trưngcủa các kiểu dữ liệu của ngôn ngữ đó
V CỦNG CỐ , DẶN DÒ:
Nhắc lại các kiểu dữ liệu đơn giản hay dùng
Cho về nhà một số ví dụ về việc lưu trữ trong cuộc sống và yêu cầu học sinh tìm kiểu dữ liệu tương ứng
§5 KHAI BÁO BIẾN
I MỤC ĐÍCH YÊU CẦU
Hiểu được cách khai báo biến
Khai báo đúng
Nhận biết được khai báo sai
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
Phương pháp : Thuyết trình, vấn đáp
Phương tiện : Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM:
Trong phần này giáo viên chú ý cần llấy nhiều ví dụ đơn giản để học sinh luyệntập việc xác định kiểu dữ liệu và tự khai báo biến
Chú ý cho học sinh :
Cần đặt tên biến sao cho gợi nhớ đến ý nghĩa của nó
Không nên đặt tên qúa ngắn hay quá dài, dễ dẫn đến mắc lỗi hoặc hiểunhầm
Khai báo biến cần quan tâm đến phạm vi giá trị của nó
IV NỘI DUNG BÀI GIẢNG :
Hoạt động của Giáo viên và Học sinh Nội dung
GV : Khai báo biến là chương trình báo
cho máy biết phải dùng những tên nào
cần khai báo các biến như sau:
Var a, b, c, x1, x2, delta : real;
- Để tính chu vi và diện tích tam giác
cần khai báo các biến sau:
nhau bởi dấu phẩy
+ Kiểu dữ liệu : là một kiểu dữ liệu nào
đó của ngôn ngữ Pascal
+ Sau Var có thể khai báo nhiều danh
sách biến có những kiểu dữ liệu khác
Trang 11của tam giác.
p: nửa chu vi tam giác
cv, s: chu vi và diện tích tam giác
GV : Đặt câu hỏi: Khi khai báo biến cần
chú ý những điều gì ?
HS : Suy nghĩ trả lời câu hỏi
GV : Phân tích câu trả lời của học sinh
nhau+ Cần đặt tên biến sao cho gợi nhớ đến ýnghĩa của nó
+ Không nên đặt tên quá ngắn hay quádài, dễ dẫn tới mắc lỗi hoặc hiểu nhầm.+ Khai báo biến cần quan tâm đến phạm
Giới thiệu phép toán, biểu thức số học, hàm số học chuẩn và biểu thức quan hệ
Hiểu lệnh gán, viết được lệnh gán
Phân biệt được sự khác nhau giữa lệnh gán (:=) và phép so sánh bằng
Viết được biểu thức số học và logic với các phép toán thông dụng
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
Phương pháp: Thuyết trình, vấn đáp
Phương tiện: Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM:
Đối với việc dạy phép toán, cần chú ý cho học sinh một số phép toán thườngkhông dùng trong toán học, và một số phép toán có kí hiệu khác với kí hiệu trongtoán học
Kết quả của phép toán quan hệ mang giá trị logic
Đối với việc dạy biểu thức số học, cần phân biệt cho học sinh cách viết biểuthức số học trong toán học và trong tin học Kiễu giá trị của biểu thức thường làkiểu của biến, hay hằng có độ lớn kiểu lớn nhất trong nó, nên sử dụng biến trunggian để tránh việc sử dụng biến nhiều lần
Khi dạy biểu thức quan hệ và biểu thức logic, cần lấy nhiều ví dụ từ đơn giản đếnphức tạp để học sinh có thể tính toán đưa ra giá trị của biểu thức, hay nêu ví dụ cụthể về các mối quan hệ trong cuộc sống để học sinh tự đưa ra biểu thức logic
IV NỘI DUNG BÀI GIẢNG :
Hoạt động của Giáo viên và Học sinh Nội dung
GV : Dẫn dắt vào bài: Trong khi viết
chương trình ta thường phải thực hiện các
tính toán, thực hiện các so sánh để đưa ra
quyết định xem làm việc gì? Vậy trong
chương trình ta viết thế nào? Có giống với
ngôn ngữ tự nhiên hay không? Tất cả các
ngôn ngữ có sử dụng chúng một cách
giống nhau không ?
GV : Toán học có những phép toán nào ?
HS : Đưa ra một số phép toán thường dùng
- Ngôn ngữ lập trình nào cũng sử dụngđến phép toán, biểu thức, câu lệnh gán
- Ta xét các khái niệm này trong ngônngữ Pascal
1 Phép toán
NNLT Pascal sử dụng một số phép toánsau:
- Với số nguyên : +, -, * (nah6n), div
Trang 12trong toán học
GV : Chúng có dùng được trong các ngôn
ngữ lập trình ?
Chỉ một số phép dùng được, một số phép
phải xây dựng từ các phép toán khác
VD : Phép lũy thừa không phải ngôn ngữ
nào cũng viết được
GV : Mỗi ngôn ngữ khác nhau lại có cách
kí hiệu phép toán khác nhau
GV : Trong toán học, biểu thức là gì?
HS : Đưa ra khái niệm.
GV : Đưa ra khái niệm biểu thức trong lập
trình
GV: Cách viết các biểu thức này trong lập
trình có giống cách viết trong toán học ?
HS : Đưa ra ý kiến của mình
GV : Phân tích ý kiến của học sinh.
GV : Đưa ra cách viết biểu thức và thứ tự
thực hiện phép toán trong lập trình
GV : Cách viết biểu thức phụ thuộc cú
pháp từng ngôn ngữ lập trình
Đưa ra một số biểu thức toán học và yêu
cầu các em viết chúng trong ngôn ngữ
Pascal
HS : Gọi một vài học sinh lên bảng viết.
GV : Đặt câu hỏi, muốn tính X2 ta viết thế
giản, người ta xây dựng sẵn một số đơn vị
chương trình trong các thư viện chương
trình giúp người lập trình tính toán nhanh
(chia lấy nguyên), mod (chia lấy dư)
- Với số thực : +, -, *, / (chia)
- Các phép toán quan hệ <, <= , >, >=,
=, <>: Cho kết qủa là một giá trị logic(True hoặc False)
- Các phép toán Logic : NOT (phủ
định), OR (hoặc), AND (và): thườngdùng để kết hợp nhiều biểu thức quan
hệ với nhau
2 Biểu thức số học
- Là một dãy các phép toán +, -, *, / Div
và Mod từ các hằng, biến kiểu số vàcác hàm
- Dùng cặp dấu () để qui định trình tựtính toán
Thứ tự thực hiện các phép toán :
- Trong ngoặc trước, ngoài ngoặc sau
- Nhân chia trước cộng trừ sau
- Giá trị của biểu thức có kiểu là kiểucủa biến hoặc hằng có miền giá trị lớnnhất trong biểu thức
3 Hàm số học chuẩn
- Các ngôn ngữ lập trình thường cungcấp sẵn một số hàm số học để tính một
số giá trị thông dụng
- Cách viết : Tên_hàm (Đối số)
- -Kết qủa của hàm phụ thuộc vào kiểucủa đối số
- Đối số là một hay nhiều biểu thức sốhọc đặt trong dấu ngoặc () sau tên hàm
- Bản thân hàm cũng có thể coi là biểuthức số học và có thể tham gia vào biểuthức như toán hạng bất kỳ
Trang 13các giá trị thông dụng.
GV : Với các hàm chuẩn, cần quan tâm
đến kiểu của đối số và kiểu của giá trị trả
về
VD : Sinx thì được đo bằng độ hay
radian ?
GV : Trong lập trình thường ta phải so
sánh hai giá trị nào đó trước khi thực hiện
lệnh nào đó Biểu thức quan hệ còn được
gọi là biểu thức so sánh 2 giá trị, cho kết
quả là đúng hoặc sai (logic)
VD : 3>5: Cho kết quả sai
GV : Đặt câu hỏi, muốn so sánh nhiều điều
kiện đồng thời làm thế nào?
HS : Đưa ra ý kiến của mình (và, hoặc,…)
Đưa ra ví dụ và cách viết đúng trong ngôn
GV : Phân tích câu trả lời của học sinh sau
đó tổng hợp lại: cần chú ý đến kiểu của
biến và kiểu của biểu thức
GV : Minh họa một vài lệnh gán bằng một
ví dụ trực quan trên bảng hoặc trên màn
Ví dụ:
- Ba số dương a, b, c là độ dài ba cạnhtam giác nếu biểu thức sau cho giá trịđúng
(a+ b > c) and (b+ c >a) and (c+ a >b)
- Biểu thức điều kiện 0 d” X d’ 5 đượcviết như sau:
<tên biến> := <biểu thức>;
- Trong đó biểu thức phải phù hợp vớitên biến Có nghĩa là kiểu của tên biếnphải cùng kiểu với kiểu của biểu thứchoặc phải bao hàm kiểu của biểu thức
- Hoạt động của lệnh gán : Tính giá trịcủa biểu thức sau đó ghi giá trị đó vàotên biến
Ví dụ:
X1 := (-b –sqrt(b*b – 4*a*c))/(2*a);
X2 := (-b +sqrt(b*b – 4*a*c))/(2*a);
I := I + 1; J := J – 2;
Trong đó : lệnh thứ 3 tăng giá trị của I một
đơn vị, lệnh thứ 4 giảm giá trị biến J haiđơn vị
V CỦNG CỐ , DẶN DÒ:
Nhắc lại một số khái niệm mới
Cho bài tập về nhà, ngoài bài tập có trong sách có thể cho thêm nhiều biểu thức logic để học sinh về nhà tính toán tìm giá trị của nó, cho học sinh một số biểu thức trong toán học và yêu cầu viết nó trong tin học (NNLT); có thể cho thêm bài theo cột, một cột là biểu thức toán học, một cột là biểu thức trong tin học tương ứng và tìm chỗ sai của biểu thức so với trong toán
Trang 14§ 7: CÁC THỦ TỤC CHUẨN VÀO/RA ĐƠN GIẢN
I. MỤC ĐÍCH YÊU CẦU
Biết lệnh vào ra đơn giản để nhập thông tin từ bàn ph1im và đưa thông tin ramàn hình
Viết được một số lệnh vào ra đơn giản
II. PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
Phương pháp: Thuyết trình, vấn đáp
Phương tiện: Máy chiếu, máy tính, phòng chiếu hoặc bảng
III. LƯU Ý SƯ PHẠM :
Cần chú ý cho học sinh phân biệt giữa 2 lệnh nhập dữ liệu liệu Read vàReadln, khi nhập dữ liệu nên dùng Readln vì nếu không có thể làm trôi lệnhreadln; (không tham số) tiếp theo
Cần hướng dẫn cụ thể cho học sinh việc sử dụng lệnh Write và Writeln, cáccách để hiển thị dữ liệu, các kiểu dữ liệu trong nó
Cần hướng dẫn học sinh cách kết hợp hai lệnh vào ra dữ liệu khi viết chươngtrình cho hợp lý, sáng sủa (tốt nhất là viết chương trình cụ thể, đơn giản)
IV. NỘI DUNG BÀI GIẢNG:
Hoạt động của Giáo viên và Học sinh Nội dung
GV: Khi sử dụng các ứng dụng ta thường
nhập thông tin vào, như vậy bằng cách nào
ta nhập được thông tin nào khi lập trình?
Làm cách nào để nhập giá trị từ bàn phím
vào cho biến
GV: Diễn giải hoạt động của
READ/READLN, nêu sự khác nhau khi
dùng Read/Readln
GV: Mỗi ngôn ngữ có cach nhập thông tin
vào khác nhau
GV: Đưa ra hai ví dụ về chương trình có
nhập thông tin vào từ bàn phím
Trang 15Có thể thay đổi lệnh Readln(a, b, c) trong
ví dụ 2 thánh Read(a, b, c), chạy chương
trình để học sinh thấy sự khác nhau khi sử
dụng hai lệnh này
GV : Ta thấy ở ví dụ 2 của phần 1 việc ghi
ra dữ liệu thì 3 giá trị a, b, c dính liền vào
nhau và người sử dụng không thể phân biệt
được giá trị của từng biến Vậy làm thế
nào và có những cách nào để hiển thị dữ
liệu theo ý muốn của người lập trình
GV : Mỗi ngôn ngữ có cách đưa thông tin
ra màn hình khác nhau
Lấy thêm ví dụ về các thủ tục đưa thông
tin ra màn hình của ngôn ngữ khác
Có thể lấy dữ liệu của phần nhập dữ dữ
liệu sửa để học sinh thấy việc khác nhau
giữa 2 lệnh Write và Writeln
Minh họa quy cách đưa thông tin ra bằng
chương trình
Sửa lại ví dụ 2 của phần 1 để dữ liệu của 3
số phân cách nhau – người dùng có thể
phân biệt được
Trong đó: {1} Đưa ra thông báo:
Write(‘Moi ban nhap 3 so:’);
2 Đưa dữ liệu ra màn hình
- Để đưa dữ liệu ra màn hình tại vị trícon trỏ, ta dùng thủ tục WRITE hoặcWRITELN với cấu trúc :
Write/Writeln(<Giá trị 1>, <Giá trị 2>,
…,<Giá trị n>);
- Trong đó các Giá trị có thể là tên biến,tên hằng, giá trị cụ thể, biểu thức hoặctên hàm
Ví dụ:
Write(a, b, c);
Writeln(‘Gia tri cua N la : ’,N);
-Thủ tục Writeln sau khi đưa kết quả ra sẽchuyển con trỏ màn hình xuống đầu dòngtiếp theo
Ngoài ra trong TP còn có qui cách đưathông tin ra như sau :
Trang 16Nhap gia tri cua M:
Biết các bước soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình
Biết một số công cụ của môi trường Turbo pascal
Bước đầu sử dụng được chương trình dịch để phát hiện lỗi
Bước đầu chỉnh sửa được chương trình dựa vào thông báo lỗi của chương trìnhdịch và tính hợp lý của kết quả thu được
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC :
Phương pháp : Thuyết trình, vấn đáp
Phương tiện : Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM:
Ta có thể gõ một chương trình từ đầu, tạo ra các lỗi điển hình, sửa lỗi, làm mịnchương trình để học sinh có thể hình dung ra quá trình lập trình, sử dụng chươngtrình dịch để giúp tìm lỗi, lập trình nhanh hơn
IV NỘI DUNG BÀI GIẢNG :
Hoạt động của Giáo viên và Học sinh Nội dung
GV : Giới thiệu một số tập tin vần thiết để
Turbo Pascal có thể chạy được, hướng dẫn
các em cách khởi động Pascal trên máy
tính
Turbo.exe (file chạy)
Turbo.tpl (file thư viện)
Turbo.tph (file hướng dẫn)
GV : Giới thiệu một số thao tác thường
dùng khi soạn thảo chương trình trong môi
trường soạn thảo Turbo Pascal
GV : Thực hiện một vài lần các thao tác
này để các em nhận thấy mức độ tệin lợi
của nó khi soạn thảo cũng như chạy chương
-Chạy chương trình: Ctrl + F9-Đóng cửa sổ chương trình: Alt + F3-Chuyển qua lại giữa các cửa sổ: F6-Xem lại màn hình kết qủa: Alt + F5
Trang 17hiện các thao tác sửa lỗi…
Có thể lấy ví dụ yêu cầu người dùng nhập
vào năm sinh, trả ra kết quả là tuổi của
Hiểu nhu cầu cấu trúc rẽ nhánh trong biểu diễn thuật toán
Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ)
Hiểu câu lệnh ghép
Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản
Viết được các lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng để thể hiệnđược thuật toán của một số bài tóan đơn giản
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
Phương pháp: Thuyết trình, vấn đáp
Phương tiện: Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM :
Nên sử dụng các thuật toán các em đã học ở lớp 10
Cần xây dựng các bài thực hành và tổ chức thực hiện tại phòng máy để họcsinh đạt được những kỹ năng theo yêu cầu
IV NỘI DUNG BÀI GIẢNG :
Hoạt động của Giáo viên và Học sinh Nội dung
GV : Đưa ra ví dụ rồi cùng học sinh
thảo luận phương pháp giải quyết bài
Ví dụ : Để viết chương trình giải phương trình
- Nếu <0 thì phương trình vô nghiệm
- Nếu >=0 thì phương trình có nghiệm
- Như vậy tùy thuộc vào giá trị của mà tađưa ra vô nghiệm hay có nghiệm
Trang 18Đưa ra khái niệm rẽ nhánh trong lập
trình
Mỗi NNLT có cách thể hiện rẽ nhánh
khác nhau
GV : Đưa ra cấu trúc lệnh rẽ nhánh
trong Pascal Nhắc nhở học sinh đây là
cấu trúc quan trọng, nó sẽ được sử dụng
rất nhiều trong các chương trình sau
này
GV : Lưu ý các em sau Then và sau
Else chỉ có một lệnh chương trình
GV : Với hai dạng này, dạng nào dùng
thuận tiện hơn ?
HS : Tìm câu trả lời, giáo viên gợi ý để
học sinh đưa ra được tùy trường hợp cụ
thể mà dùng dạng thiếu hay dạng đủ
Đưa ra các ví dụ có sử dụng lệnh rẽ
nhánh, nếu không có lệnh rẽ nhánh thì
không thể thực hiện được
GV : ở VD3: Cách nào nhanh hơn, tiện
hơn?
=> Cách 2 tiện hơn
GV : Phân tích sự tiện lợi trong cách 2
và số lệnh mà máy phải thực hiện
- Hoặc có thể nói : Nếu < 0 thì phươngtrình vô nghiệm, ngược lại thì phươngtrình có nghiệm
=>Như vậy ta thấy một số mệnh đề có dạng+ Nếu … thì…
+ Nếu … thì… ngược lại thì Cấu trúc này được gọi là cấu trúc rẽ nhánh Các NNLT thường cung cấp các câu lệnh để
mô tả các cấu trúc rẽ nhánh như trên
2 Câu lệnh If – Then
Pascal dùng câu lệnh If – then để mô tả việc
rẽ nhánh tương ứng với hai loại mệnh đề rẽnhánh như nhau
- Điều kiện : Là biểu thức quan hệ Logic.
- Câu lệnh, câu lệnh 1, câu lệnh 2 là 1 câu lệnh
của Pascal
Ý nghĩa của các câu lệnh :
- Dạng thiếu : Nếu điều kiện đúng thì câu lệnh
được thực hiện, nếu điều kiện sai thì khôngthực hiện gì
- Dạng đủ : Nếu điều kiện đúng thì thực hiện
câu lệnh 1, nếu điều kệin sai thì thực hiện câulệnh 2
VD 1 : If (X Mod 2 = 0) Then
WRITE(x,’La so chan’);
VD 2: If DELTA <0 Then
WRITE(‘PT Vo Nghiem’)
Else WRITE(‘PT co nghiem’);
VD 3: Tìm giá trị lớn nhất (max) của 2 số a và
Trang 19GV : Trong câu lệnh If – Then muốn
thực hiện nhiều lệnh sau Then hay nhiều
lệnh sau Else làm thế nào ?
HS : Phát biểu ý kiến của mình.
GV nên soạn sẵn hai chương trình này
và cho các em quan sát cách viết
chương trình để các em hình thành dần
cách viết một chương trình
Chạy thử chương trình và chỉ rõ các
lệnh trong chương trình dùng để làm gì
Nếu có nhiều thời gian, GV có thể gõ
từng lệnh chương trình, gõ đến đâu giải
thích cho học sinh đến đó
Nếu còn thời gian, gọi học sinh lên
bảng viết câu lệnh If – Then cho một
số bài toán đơn giản
Có thể viết chương trình mẫu cho học
sinh xong, yêu cầu các em gõ lại
chương trình vừa được theo dõi mà
không cần nhìn vào bài mẫu
BEGIN X1 :=(-B-SQRT(DELTA))/(2*A);
X2 := - B/A – X1;
WRITELN(‘X1=’,X1:6:3,’X2=’,X2:6:3); END;
Trang 20V CỦNG CỐ , DẶN DÒ:
Nhắc lại một số khái niệm mới
Nhắc lại cấu trúc câu lệnh IF – THEN, IF – THEN – ELSE thông qua các ví dụ
Cho bài tập về nhà
§10 CẤU TRÚC LẶP
I MỤC ĐÍCH YÊU CẦU
Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán
Hiểu cấu trúc lặp kiểm tra điều kiện trước, cấu trúc lặp với số lần định trước
Biết cách vận dụng đúng đắn cấu trúc lặp vào tình huống cụ thể
Mô tả thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp
Viết đúng các lệnh lặp kiểm tra điều kiện trước, lệnh lặp với số lần lặp trước
Viết được thuật toán của một số bài toán đơn giản
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC :
Phương pháp : Thuyết trình, vấn đáp
Phương tiện : Máy chiếu, máy tính, phòng chiếu hoặc bảng
III LƯU Ý SƯ PHẠM :
Cần tổng kết 3 loại cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp
Bước đầu hình thành khái niệm lập trình có cấu trúc cho học sinh
Cần xây dựng các bài thực hành và tổ chức thực hiện tại phòng máy để học sinhđạt được những kỹ năng theo yêu cầu
Khi dạy lệnh lặp, với mỗi một dạng lệnh lặp, tốt nhất viết một ví dụ cụ thể, với
số lần lặp nhỏ rồi viết mô tả việc hoạt động của vòng lặp bằng cấu trúc tuần tự(thể hiện sự tương đương trong công việc nhưng lệnh lặp diễn tả ngắn hơnnhiều) điều đó cũng giúp học sinh hiểu hơn về vòng lặp)
IV NỘI DUNG BÀI GIẢNG :
Hoạt động của Giáo viên và Học sinh Nội dung
GV : Đưa ra bài toán, yêu cầu học sinh
tìm cách để lập trình giải các bài toán này
HS : Đưa ra cách giải của mình, học sinh
có thể đưa ra những cách giải khác nhau
GV : Đưa ra cách giải cho bài toán
Giải theo các lệnh tuần tự
2
11
11
++++
++
+
a a
a a Bài toán 2 : Tính Tổng
2
11
11
+++++
++
+
N a a
a a
Trang 21HS : Nhận xét với việc giải bài toán theo
cách đó ?
Với N = 100 thì lặp 100 lần như thế
nhưng theo việc kiểm tra điều kiện thì
không biết phải làm theo cách nào? Theo
cả hai trường hợp thì đều quá dài
Để học sinh hiểu được khái niệm lặp,
giáo viên đưa ra một số ví dụ trong thực
tế được tính toán lặp đi lặp lại nhiều lần
VD1 : Bài toán gửi tiền vào ngân hàng.
Hằng tháng phải tính lãi và cộng thêm
vào gốc đang gửi hay nói cách khác gốc
của tháng sau = gốc + lãi tháng trước
VD 2: Tính tổng của một đoạn số nguyên
mà không được dùng công thức
N:=101;
B2: N := N -1;
B3: Nếu N < 1 thìchuyển sang bước5;
B4: S:= S+ 1/
(a+N) rồi quay lạiB2;
B5: Đưa ra S rồikết thúc
GV : Gọi một số học sinh nhận xét về 2
thuật toán trên về một số vấn đề :
Thuật toán có lặp không?
Sau khi so sánh hai thuật toán trên, giáo
Với điều kệin 1 <0.0001
+N a
Cách giải :
- Bắt đầu S được gán giá trị 1/a
- Tiếp theo mỗi lần cộng thêm vào S là 1/(a+N) với N = 1, 2, 3, …
- Với bài toán 1, việc cộng thêm dừng khi1/(a+N) < 0.0001, => số lần lặp chưabiết
- Với bài toán 2, việc cộng thêm dừng khi
N = 100, => số lần lặp đã biết trước
Trong lập trình, có những thao tác phải lặp lại nhiều lần, khi đó ta gọi là cấu trúc lặp.
Lặp thường có 2 loại :
Lặp với số lần biết trước
Lặp với số lần không biết trước NNLT nào cũng cung cấp một số câu lệnh để
mô tả các cấu trúc lặp như trên
Sau đây chúng ta sẽ tìm hiểu các câu lệnhtrong ngôn ngữ Pascal
2 Lặp có số lần biết trước và câu lệnh for – do
Trong Pascal, có 2 lọai câu lệnh lặp có số lầnbiết trước :
- Lặp dạng tiến:
For <biến đếm> := <giá trị đầu> to <giá trị
cuối> do <câu lệnh>;
- Lặp dạng lùi
For <biến đếm> := <giá trị cuối> downto
<giá trị đầui> do <câu lệnh>;
Trong đó:
Biến đếm thường là biến kiểu số
nguyên
Giá trị đầu, giá trị cuối là các biểu
thức cùng kiểu với biến đếm Giá trị
Trang 22viên đưa ra hai cách lặp trong ngôn ngữ
Pascal, giải thích ý nghĩa của các thành
phần trong câu lệnh
GV : Lấy ví dụ minh họa trong Pascal để
các em thấy được sự thay đổi giá trị của
biến đếm trong một chương trình thực sự
của Pascal
Với 2 ví dụ này, giáo viên nên gõ sẵn
chương trình và cho học sinh quan sát
việc chạy chương trình, giáo viên vừa cho
chạy chương trình vừa giải thích ý nghĩa
các lệnh trong chương trình (chú ý nhiều
đến lệnh lặp)
GV : Đưa ra thuật toán hoặc có thể yêu
cầu học sinh tự xây dựng thuật toán giải
bài toán 2, nếu tự xây dựng được thuật
toán thì các em sẽ hiểu hơn về lặp không
biết trước số lần
Đưa thêm ví dụ : Nhắc lại bài toán gửi
tiền vào ngân hàng: Nếu có số tiền là A,
muốn gửi vào ngân hàng để được số tiền
là B > A thì cần gửi trong bao lâu với lãi
suất là k%
Yêu cầu học sinh đưa ra cách giải cho
bài toán này
GV : Phân tích phương án trả lời của học
sinh sau đó đưa ra lời giải cho bài toán
GV : Đưa ra cấu trúc câu lệnh While –
Do Trong Pascal, giải thích ý nghĩa các
thành phần
HS : Lắng nghe và ghi chép.
GV: Nên gõ sãn những ví dụ này để học
sinh có thể quan sát chương trình, giáo
viên chạy thử chương trình trong Pascal
Riêng với VD 2, trước khi đưa ra thuật
toán, GV nên cho học sinh xây dựng thuật
toán tìm ước chung lớn nhất (đã học ở lớp
10)
đầu phải nhỏ hơn hay bằng giá trị
cuối.
Ở dạng lặp tiến: Biến đếm tự tăng dần
từ giá trị đầu đến giá trị cuối
Ở dạng lặp lùi: Biến đếm tự giảm dần
từ giá trị cuối đến giá trị đầu
Tương ứng với mỗi giá trị của biếnđếm, câu lệnh sau do thực hiện 1 lần
Ví dụ 1 : Hai chương trình cài đặt thuật toán
- Từ bước 2 đến bước 4 được lặp lại nhiềulần nếu điều kiện 1/(a+N) < 0.0001 chưađược thỏa mãn
_ Pascal sử dụng câu lệnh lặp While
- Do để tổ chức lặp với số lần chưa viết nhưsau
While <Điều kiện> Do <Câu lệnh>;
Trong đó
- Điều kiện là biểu thức quan hệ hoặc logic.
- Câu lệnh là một câu lệnh trong Pascal.
Ý nghĩa : Khi điều kiện còn đúng thì còn
thực hiện câu lệnh sau Do sau đó lại quay lại
kiểm tra điều kiện.
Ví dụ 1 : Chương trình của bài toán 1.
Ví dụ 2 : Tìm ước chung lớn nhất của M và
Trang 23Chạy chương trình với nhiều cặp M, N
khác nhau
Tốt nhất chạy từng bước, cho học sinh
thấy sự thay đổi của các biến
N
Thuật toán :B1: Nếu M = N thì ƯCLN := M;
Kết thúc
B2: Nếu M > N thì M := M – N rồi quay lạiB1, ngược lại N := N – M rồi quay lại B1Sau đây là chương trình tìm UCLN
V CỦNG CỐ , DẶN DÒ:
Nhắc lại một số khái niệm mới
Nhắc lại cấu trúc câu lệnh
Cho bài tập về nhà
Chương IV : KIỂU DỮ LIỆU CÓ CẤU TRÚC
Bài 11 : KIỂU MẢNG
I MỤC ĐÍCH, YÊU CẦU :
Hiểu khái niệm mảng một chiều và hai chiều
Hiểu cách khai báo và truy cập đến các phần tử của mảng
Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng mộtchiều
Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng
II PHƯƠNG PHÁP, PHƯƠNG TIỆN :
Phương pháp : Thuyết trình, vấn đáp
Phương tiện : Máy chiếu, máy tính, phông chiếu hoặc bảng
III LƯU Ý SƯ PHẠM :
Cần cho học sinh thấy cần phải có một kiểu dữ liệu mới, ích lợi của kiểu dữ liệu
đó, có thể minh họa bằng hình ảnh
Khi làm việc với mảng, học sinh khó hiểu nhất vẫn là cách truy xuất tới các phần
tử của mảng Cần làm rõ các khái niệm như : đánh số các phần tử của mảng, chỉ
số, kiểu chỉ số
IV. NỘI DUNG BÀI GIẢNG :
Trước khi vào bài, giáo viên đưa ra một số vấn đề
cần giải quyết như sau :
Với những kiểu dữ liệu như đã biết, làm thế nào để
- Lưu trữ và xử lý một dãy số ?
- Lưu trữ và xử lý Họ và tên của một người ?
- Lưu trữ và xử lý bảng kết quả thi tốt nghiệp
HS : Đưa ra các phương án để trả lời cho 3 câu hỏi
trên
GV : Các ngôn ngữ lập trình thường cung cấp một
số kiểu dữ liệu được xây dựng từ những kiểu dữ
liệu chuẩn gọi là kiểu dữ liệu có cấu trúc
Có thể sử dụng ví dụ trong SGK đểhọc sinh dễ theo dõi, gõ trước chươngtrình để có thể sử dụng cho các phầntiếp theo
Trang 24Chương này chúng ta sẽ tìm hiểu một số kiểu dữ
liệu trong ngôn ngữ Pascal để trả lời 3 câu hỏi trên
GV : Đánh giá ý kiến của học sinh, sau đó đưa ra
mục đích của việc sử dụng cấu trúc mảng trong
chương trình
GV : Đưa ra khái niệm mảng một chiều và một số
yếu tố liên quan trong lập trình nói chung
GV : Đi sâu phân tích hai chương trình để cho học
sinh nhận thấy sự tiện lợi khi sử dụng mảng
HS : Trong khi giáo viên phân tích hai chương
trình, học sinh sẽ đưa ra ý kiến nhận xét về 2
chương trình
GV : Đưa ra cách khai báo mảng một chiều trong
ngôn ngữ Pascal, giải thích ý nghĩa của các từ khóa
mới
GV : Khai báo bằng cách nào tiện lợi hơn ?
HS : Thường thì học sinh trả lời cách 1 tiện lợi hơn
số Để mô tả mảng một chiều ta cầnxác định kiểu của các phần tử và cáchđánh chỉ số các phần tử
Với mảng một chiều ta quan tâm đến :
- Tên mảng một chiều
- Số lượng phần tử trong mảng
- Kiểu dữ liệu của phần tử
- Cách khai báo biến mảng mộtchiều
- Cách truy cập vào từng phần tửcủa mảng
Xét ví dụ : Nhập vào nhiệt độ trung
bình mỗi ngày trong tuần Tính và đưa
ra màn hình nhiệt độ trung bình của cảtuần và đếm số ngày có nhiệt độ lớnhơn nhiệt độ trung bình này
Quan sát hai chương trình viết bằngngôn ngữ Pascal cùng để giải bài toántrên
- Chương trình 1 : Không sửdụng kiểu mảng
- Chương trình 2 : Sử dụng kiểumảng một chiều
a> Khai báo mảng một chiều
Trong ngôn ngữ Pascal, mảng mộtchiều được khai báo bằng hai cách như
Trang 25GV : Tùy trường hợp cụ thể mà ta dùng cách 1 hay
cách 2 nhưng thông thường ta sử dụng cách 1
GV : Sử dụng một sồ hình ảnh trực quan minh họa
cho học sinh cấu trúc mảng và chỉ số của phần tử
Nếu có nhiều thời gian, giáo viên sẽ tiến hành soạn
chương trình từ đầu để học sinh có thể dễ dàng
nhận ra các thao tác cần phải thực hiện khi viết
TypeArrayInteger=Array[1 100] of Integer;ArrayReal=Array[1.50] of Real;
Var A : Array[1 50];
B : Array[1 50] of Real;
Khai báo mảng trực tiếp :
Var A : Array[1 100] of Integer ;
Trang 26chương trình
GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật toán
HS : Xây dựng thuật toán để giải bài toán (thuật
toán đã học ở lớp 10)
GV soạn sẵn chương trình và cho học sinh quan
sát chương trình
Nếu có thời gian, giáo viên sẽ tiến hành soạn
chương trình từ đầu để học sinh có thể dễ dàng
nhận ra việc chuyển đổi ngôn ngữ từ ngôn ngữ
thuật toán sang ngôn ngữ lập trình
- Ý tưởng :
+ Đặt số A1 là số lớn nhất (max)+ Cho i lặp từ 2 đến N, nếu A[i]>thì đổi max = A[i] vả lưu lại vịtrí i
Chương trình như sau :
Program timmax ;Uses crt ;
var a : array[1 250] of integer ; n,i,max,csmax : Integer ;Begin
clrscr ; Write('Nhap n = ') ; Readln(n) ;
For i := 1 to n do Begin
Write('a[',i,'] = ') ; readln(a[i]) ; End ;
max := a[i] ; csmax := 1 ; For i := 2 to n do
If a[i] > max then Begin
max := a[i] ; csmax :=i ; End ;
Writeln('Gia tri lon nhat : ',max) ; Writeln('chi so ptu lon nhat : ',csmax) ;
Readln ; End
Ví dụ 2 : Sắp xếp dãy số nguyên theo
bằng thuật toán tráo đổi
- Input : Số nguyên dương N và dãy
+ Làm tương tự đối với những sốcòn lại
Trang 27GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật toán
HS : Xây dựng thuật toán để giải bài toán (thuật
toán đã học ở lớp 10)
GV soạn sẵn chương trình và cho học sinh quan sát
chương trình
Nếu có thời gian, giáo viên sẽ tiến hành soạn
chương trình từ đầu để học sinh có thể dễ dàng
nhận ra việc chuyển đổi ngôn ngữ từ ngôn ngữ
thuật toán sang ngôn ngữ lập trình
Chương trình như sau :
Program sapxep ;Uses crt ;
var A : Array[1 250] of integer ; n,i,j,tg : Integer ;
Begin clrscr ; Write('Nhap so phan tu mang n = ') ; Readln(n) ;
For i := 1 to n do Begin
Write('A[',i,'] = ') ; readln(A[i]) ; End ;
For j := n downto 2 do Begin
For i := 1 to j-1 do
If A[i] > A[i+1] then Begin
tg := A[i] ; A[i] := A[i+1] ; A[i+1] := tg ; End ;
End ; Writeln('day sau khi sap xep : ') ; For i := 1 to n do
write(a[i]:8) ; readln ;End Writeln('chi so ptu lon nhat : ',csmax); readln ;
End
Ví dụ 3 : Tìm kiếm nhị phân
- Input : Dãy số A1, A2,………,
AN đã được sắp xếp tăng dần
- Output : Có hay không chỉ số i
mà A[i] = k hoặc thông báokhông tìm thấy
- Ý tưởng :
Xem lại thuật toán tìm kiếm nhị phân trong SGK lớp 10
Trang 28GV : Quay lại ví dụ về lưu trữ dữ liệu dạng bảng
để các em nhận ra nhu cầu phải sử dụng mảng 2
var A : Array[1 250] of integer ; n,i,k : Integer ;
dau,cuoi,giua : Integer ;
TK : boolean ;
Begin clrscr ; Write('Nhap so ptu mang n = ') ; Readln(n) ;
For i := 1 to n do Begin
Write('A[',i,'] = ') ; readln(A[i]) ; End ;
Write('nhap so can tim k : ') ; Readln(k);
dau := 1 ; cuoi := n ;
TK := false ; while (dau <= cuoi) and Not TK Do Begin
giua := (dau+cuoi) div 2 ;
If A[giua] = k then TK := true Else
If a[giua]>k then cuoi := giua - 1 Else dau := giua + 1 ;
End ;
If TK then write('Chi so la : ',giua) else write(' Khong tim thay ');
readln ;End
- Tên kiểu mảng hai chiều
- Số lượng phần tử của mỗi chiều trong mảng