- Ngôn ngữ máy- Hợp ngữ - Ngôn ngữ lập trình bậc cao Lập trình: là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của
Trang 1Chương I MỘT SỐ KN VỀ LT VÀ NNLT
Tiết 1 Khái niệm lập trình và ngôn ngữ lập trình
Ngày soạn: / ; Ngày giảng: /
II Chuẩn bị của GV và HS:
1 Giáo viên: SGK, giáo án
Trang 2- Ngôn ngữ máy
- Hợp ngữ
- Ngôn ngữ lập trình bậc cao
Lập trình: là sử dụng cấu trúc dữ liệu và
các câu lệnh của ngôn ngữ lập trình cụ thể
để mô tả dữ liệu và diễn đạt các thao tác
của thuật toán.
Chương trình dịch: Là chương trình đặc
biệt có chức năng chuyển đổi chương trình
được viết bằng ngôn ngữ lập trình bậc cao
thành chương trình thực hiện được trên
máy tính
- Thông dịch (interpreter): được thực hiện
bằng cách lặp lại dãy các bước sau:
Kiểm tra tính đúng đắn của câu lệnh
tiếp theo trong chương trình nguồn
Chuyển đổi câu lệnh đó thành một hay
nhiều câu lệnh tương ứng trong ngôn ngữ
Duyệt, phát hiện lỗi, kiểm tra tính đúng
đắn của các câu lệnh trong chương trình
Bạn nào cho biết ở lớp 11 chúng ta đã nhắc tới những loại ngôn ngữ lập trình nào?
HS: Trả lời câu hỏi HS khác bổ xung
Chương trình viết bằng ngôn ngữ bậc cao nói chung không phụ thuộc vào loại máy (chương trình có thể chạy trên nhiều loại máy tính khác nhau)
Chương trình dịch được chia thành hai loại: Thông dịch và biên dịch
(Lấy ví dụ minh họa để HS phân biệt được hai loại ctd này)
HS: Nghe giảng, ghi chép
Trong thông dịch không có chương trình đích để lưu trữ, trong biên dịch cả chương trình nguồn và chương trình đích có thể lưu trữ lại để sử dụng về sau
IV Củng cố: Kể tên một số ngôn ngữ lập trình mà em biết?
(Một HS trả lời, HS khác bổ sung)
V Dặn dò: Đọc trước bài 2.
Trang 3Tiết 2 Các thành phần của ngôn ngữ lập trình
Ngày soạn: / ; Ngày giảng: /
- Ghi nhớ các quy định về tên, hằng, biến trong một ngôn ngữ lập trình
- Cách đặt tên đúng và nhận biết được tên sai quy định
II Chuẩn bị của GV và HS:
1 Giáo viên: SGK, giáo án, bảng phụ
• Các chữ cái thường và chữ cái in hoa
của bảng chữ cái tiếng Anh
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ào ngữ cảnh của
Bảng chữ cái của các ngôn ngữ lập trình nói chung không khác nhau nhiều
Dựa vào chúng, người lập trình và chương trình dịch biết được tổ hợp nào của các kí tự trong bảng chữ cái là hợp lệ và tổ hợp nào là không hợp lệ
Trang 4Tóm lại: Cú pháp cho biết cách viết một
Trong TP, tên là một dãy liên tiếp không
quá 127 kí tự bao gồm chữ cái, chữ số
hoặc dấu gạch dưới
Vd:
Tên đúng: (lấy 3 vd)
Tên sai: (lấy 3 vd)
Ngôn ngữ Pascal không phân biệt chữ hoa,
chữ thường trong tên
Trong Pascal phân biệt 3 loại tên:
Tên do người lập trình đặt: được dùng
với ý nghĩa riêng, xác định bằng cách khai
báo trước khi sử dụng Các tên này không
được trùng với tên dành riêng
b) Hằng và biến
* Hằng
là đại lượng có giá trị không thay đổi trong
quá trình thực hiện chương trình
là đại lượng được đặt tên, dùng để lưu
trữ giá trị và giá trị có thể được thay đổi
trong quá trình thực hiện chương trình
c) Chú thích: Được đặt trong chương
trình, giúp cho người đọc chương trình
nhận biết ý nghĩa của chương trình hay của
từng câu lệnh trong chương trình
Mọi đối tượng trong chương trình đều phải được đặt tên theo quy tắc của ngôn ngữ lập trình và từng chương trình dịch cụ thể
HS: Lấy ví dụ về tên đúng và sai
Người lập trình không được dùng với ý nghĩa khác
Có thể khai báo và dùng chúng với ý nghĩa và mục đích khác
Trong ngôn ngữ lập trình thường có các hằng số học, hằng logic, hằng xâu
HS: Nghe giảng, ghi chép
IV Củng cố: Lấy ví dụ về tên đúng, tên sai trong TP?
V Dặn dò: Trả lời các câu hỏi cuối bài Làm bài tập trong SBT.
Trang 5- Phân biệt được trình thông dịch và biên dịch.
- Đặt được tên đúng và nhận biệt tên sai quy định
II Chuẩn bị của GV và HS:
1 Giáo viên: SBT, giáo án
Kiểm tra bài cũ: Hãy cho biết các điểm khác nhau giữa tên dành riêng và tên chuẩn? Lấy
ví dụ về 3 tên đúng theo quy tắc của Pascal?
Bài giảng:
Chữa một số bài tập trong SBT
Chữa bài tập theo yêu cầu của HS
Kiểm tra lại kiến thức đã học
Gọi một số HS đứng tại chỗ chữa các bài từ 1 8
HS khác nhận xét và bổ sung
GV củng cố lại các câu trả lời
Gọi 3 HS lên bảng chữa các bài 9, 10, 11
Trong sách bài tập số lượng bài tập nhiều, có một số bài khó Để mở rộng kiến thức đã học thì nên hoàn thành những bài tập này
Cho HS làm bài kiểm tra 15’ Có thể sử dụng các câu 13, 14 làm đề kiểm tra
IV Củng cố:
V Dặn dò: Về nhà đọc trước bài 3 - Cấu trúc chương trình.
Trang 6Tiết 4 Cấu trúc chương trình
Ngày soạn: / ; Ngày giảng: /
I Mục tiêu
1 Kiến thức:
- 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 đơn giản: cấu trúc chung và các thành phần
2 Kỹ năng:
- Nhận biết được các thành phần của một chương trình đơn giản
II Chuẩn bị của GV và HS:
1 Giáo viên: SGK, giáo án, bảng phụ
Các diễn giải bằng ngôn ngữ tự nhiên
được đặt trong cặp dấu < và > Các thành
phần của chương trình có thể có hoặc
không được đặt trong cặp dấu [ và ]
Cấu trúc của một chương trình có thể mô
tả như sau:
[<phần khai báo>]
<phần thân>
2 Các thành phần của chương trình
a)Phần khai báo
* Khai báo tên chương trình
Program <tên chương trình>
tên chương trình là tên do người lập trình
đặt theo đúng quy định về tên
* Khai báo thư viện
Uses <tên thư viện>
vd: Uses crt, graph;
* Khai báo hằng
Chương trình được viết bằng ngôn ngữ
lập trình bậc cao thường gồm phần khai
HS: nghe giảng, ghi bài
Có thể khai báo cho: tên chương trình, thư viện, hằng, biến và chương trình con Phần này có thể có hoặc không
Mỗi ngôn ngữ lập trình thường có sẵn một số thư viện cung cấp một số chương trình thông dụng đã được lập sẵn
Trang 7const <tên hằng> = <giá trị>
* Khai báo biến
(Trình bày chi tiết ở bài 5)
Dãy lệnh trong phạm vi được xác định bởi cặp dấu hiệu mở đầu và kết thúc tạo thành thân chương trình
Viết ví dụ, phân tích để HS hiểu rõ cấu trúc của một chương trình Pascal đơn giản
IV Củng cố:
V Dặn dò:
Trang 8Tiết 5 Một số kiểu dữ liệu chuẩn Khai báo biến
Ngày soạn: / ; Ngày giảng: /
I Mục tiêu
1 Kiến thức:
- Biết một số kiểu dữ liệu chuẩn: nguyên, thực, kí tự, logic;
- Hiểu cách khai báo biến;
2 Kỹ năng:
- Xác định được kiểu cần khai báo của dữ liệu đơn giản;
- Biết khái báo biến đúng
II Chuẩn bị của GV và HS:
1 Giáo viên: SGK, giáo án, bảng phụ
MỘT SỐ KIỂU DỮ LIỆU CHUẨN
Một số kiểu dữ liệu chuẩn thường dùng
cho các biến đơn trong Pascal
Các số nguyên được lưu trữ và kết quả tính toán là số đúng, nhưng có hạn chế về miền giá trị
Các kiểu thực được lưu trữ và kết quả tính toán chỉ là gần đúng với sai số không đáng kể (so với yêu cầu tính toán trong các bài toán thông thường), nhưng miền giá trị được mở rộng hơn so với kiểu nguyên Phép toán chứa các toán hạng gồm cả kiểu nguyên và kiểu thực sẽ cho kết quả kiểu thực
Trang 93 Kiểu kí tự
Char: 256 kí tự trong bộ mã ASCII
4 Kiểu logic
Boolean: True hoặc False
KHAI BÁO BIẾN
Trong Pascal, khai báo biến bắt đầu bằng
từ khóa Var có dạng:
Var <danh sách biến>:<kiểu dữ liệu>;
trong đó:
- danh sách biến là một hoặc nhiều
tên biến, tên biến được viết cách
nhau bởi dấu phẩy;
- kiểu dữ liệu thường là trong các kiểu
dữ liệu chuẩn hoặc kiểu dữ liệu do
người lập trình định nghĩa
Cấu trúc <danh sách biến>:<kiểu
dữ liệu> có thể xuất hiện nhiều lần.
Kiểu kí tự có tập giá trị là các kí tự trong
bộ mã ASCII, được dùng khi thông tin là các kí tự, xâu Vì vậy hầu hết các ngôn ngữ lập trình đều có kiểu kí tự để làm việc với văn bản Việc so sánh các kí tự được thực hiện bằng cách so sánh các mã ASCII của chúng
Kiểu logic được dùng khi kiểm tra một điều kiện hoặc tìm giá trị của một biểu thức logic
Trong Pascal, mọi biến trong chương trình đều phải khai báo tên và kiểu dữ liệu của nó (một số ngôn ngữ coi đó là định nghĩa biến) Khai báo để cấp phát bộ nhớ cho biến
Cấn đặt tên biến sao cho gợi nhớ đến ý nghĩa của biến đó Điều này rất có lợi cho việc học, hiểu và sửa đổi chương trình khi cần thiết
Không nên đặt tên biến quá ngắn hay quá dài, dễ mắc lỗi khi viết nhiều lần tên biến
Khi khai báo biến cần đặc biệt lưu ý đến phạm vi của nó
IV Củng cố:
Đưa ra câu hỏi: Trong Pascal, nếu một biến chỉ nhận giá trị nguyên trong phạm vi
từ 10 đến 25532 thì biến đó có thể được khai báo bằng các kiểu dữ liệu nào?
Gọi một HS đứng tại chỗ trả lời HS khác nhận xét, bổ xung
V Dặn dò: Đọc trước bài 6 Làm bài tập trong sách bài tập.
Trang 10Tiết 6 Phép toán, biểu thức, câu lênh gán
Ngày soạn: / ; Ngày giảng: /
- Viết được các biểu thức số học và logic với các phép toán thông dụng
II Chuẩn bị của GV và HS:
1 Giáo viên: SGK, giáo án
- Kết quả của các phép toán quan hệ
cho giá trị logic;
- Một trong những ứng dụng của phép
toán logic là để tạo ra các biểu thức
phức tạp từ các quan hệ đơn giản
- Viết lần lượt từ trái sang phải;
- Không được bỏ qua dấu nhân trong
số học, các dấu ngoặc tròn tạo thành một biểu thức có dạng tương tự như cách viết trong toán học
Trang 11Các phép toán được thực hiện theo thứ tự:
- Thực hiện các phép toán trong
ngoặc trước;
- Trong dãy các phép toán không
chứa ngoặc thì thực hiện từ trái qua
phải, theo thứ tự các phép toán
nhân, chia, chia nguyên, lấy phần dư
thực hiện trước và các phép toán
Kết quả của hàm có thể là nguyên hay
hoặc thực hay phụ thuộc vào kiểu của đối
trong đó, biểu thức 1 và biểu thức 2 cùng
là xâu hoặc cùng là biểu thức số học
Biểu thức quan hệ được thực hiện theo
trình tự:
- Tính giá trị các biểu thức
- Thực hiện phép toán quan hệ
Kết quả của phép toán quan hệ là biểu thức
logic
5 Biểu thức logic
Biểu thức logic đơn giản là biến logic
hoặc hằng logic
Các biểu thức quan hệ thường được đặt
trong trong cặp dấu ngoặc ( và )
Phép toán not được viết trước biểu thức
cần phủ định
Các phép toán and và or dùng để kết
hợp nhiều biểu thức logic hoặc quan hệ
thành một biểu thức, thường được dùng để
diễn tả các điều kiện phức tạp
ví dụ: SGK
6 Câu lệnh gán
Trong Pascal câu lệnh gán có dạng:
GV: Lấy ví dụ trong SGK để giải thích cho
HS Có thể đưa ra một biểu thức trong toán học, HS viết lại biểu thức đó trong Pascal
GV: Để lập trình được dễ dàng, thuận tiện, các ngôn ngữ lập trình đều có thư viện chứa một số chương trình tính giá trị những hàm toán học thường dùng Các chương trình như vậy được gọi là hàm số học chuẩn
GV: Hai biểu thức cùng liên kết với nhau bởi phép toán quan hệ cho ta một biểu thức quan hệ
GV: Biểu thức logic là các biểu thức logic đơn giản, các biểu thức quan hệ liên kết nhau bởi phép toán logic
GV: Lệnh gán là một trong những lệnh cơ bản nhất của các ngôn ngữ lập trình
Trang 12<tên biến> := <biểu thức>;
Chức năng của lệnh gán là đặt cho biến
có tên ở vế trái dấu “:=” giá trị bằng giá trị
của biểu thức ở vế phải
y x x x
z x
+ +
+ +
V Dặn dò: Làm bài tập trong SBT Đọc trước bài 7 và 8.
Trang 13Tiết 7 Các thủ tục chuẩn vào/ra đơn giản Soạn thảo, dịch,
thực hiện và hiệu chỉnh chương trình
Ngày soạn: / ; Ngày giảng: /
I Mục tiêu
1 Kiến thức:
- Biết các lệnh vào/ra đơn giản để nhập thông tin từ bàn phím và đưa thông tin ra màn hình;
- 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 TP
2 Kỹ năng:
- Viết được một số lệnh vào/ra đơn giản;
- 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ình dịch và tính hợp lý của kết quả thu được
II Chuẩn bị của GV và HS:
1 Giáo viên: SGK, giáo án
1
y x x
A Các thủ tục chuẩn vào/ra đơn giản
Trong ngôn ngữ Pascal các thủ tục vào/ra
chuẩn viết như sau:
1 Nhập dữ liệu vào từ bàn phím
Ta dùng thủ tục chuẩn READ hoặc
READLN có cấu trúc như sau:
READ/READLN(<danh sách biến vào>);
Làm thế 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: Đưa ra hai ví dụ về chương trình có nhập thông tin vào từ bàn phím
Trang 14
Việc nhập dữ liệu cho nhiều biến thì giá trị
mỗi biến phải cách nhau ít nhất một dấu
cách hoặc dâu Enter, máy sẽ gán giá trị
cho biến theo thứ tự như trong lệnh nhập
tương ứng
3 Đư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ặc WRITE
với cấu trúc:
Write/Writeln(<Giá trị 1>, <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ặc tên
hàm
Ví dụ: Write(a, b, c);
Writeln(‘ Giá trị của N là:’,N);
Thủ tục Writeln sau khi đưa kết quả ra
sẽ chuyển con trỏ màn hình xuống dòng
tiếp theo
Ngoài ra TP còn có quy cách đưa thông
tin ra như sau:
{2} dùng để đọc giá trị và gán cho biến N
Cấu trúc {1}, {2} được gọi là giao tiếp
người – máy
B Soạn thảo, dịch, thực hiện và hiệu
chỉnh chương trình
Để thực hiện được các ví dụ và bài thực
hành trong máy tính bằng Turbo Pascal
cần có các tệp: turbo.exe, turbo.tpl,
Ví dụ 1: Chương trình nhập tuổi
Ví dụ 2: Nhập ba số nguyên
GV: Nhận xét về chương trình Giải thích việc nhập giá trị cho nhiều biến đồng thời Giải thích sự khác biệt giữa READ và READLN
GV: Trong ví dụ 2, ta thấy 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
GV: Viết nhanh ví dụHS: Nhận xét từng câu lệnh trong đoạn chương trình
GV: Giới thiệu một số tập tin cần thiết để
TP có thể chạy được, hướng dẫn HS cách khởi động Pascal trên máy tính
Trang 15- Biên dịch chương trình: Alt + F9
- Soát lỗi chương trình: F9
- 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 quả: Alt + F5
- Thoát khỏi TP: Alt + X
HS: Quan sát hình vẽ trong SGK
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 TP
GV: Viết một chương trình ví dụ, thực hiện các thao tác sửa lỗi
IV Củng cố: Giải thích từng dòng lệnh của đoạn chương trình sau:
Trang 16- Biết sử dụng các thủ tục chuẩn vào/ra;
- Biết xác định input và output
II Chuẩn bị của GV và HS:
2a) bt:= (y>abs(x)) and (y<=1)
2b) bt:= (abs(x) <= 1) and (abs(y) <=1)
Câu 9 (SGK)
Nhận xét: Diện tích phần gạch bằng ½
diện tích hình tròn tâm O(0,0) bán kính
R= a Lưu ý số π là hằng trong Pascal và
được kí hiệu là Pi
GV: Yêu cầu HS phân tích tìm ra input và output của bài toán
GV: Hướng dẫn HS phân biệt cách viết công thức trong toán học với trong Pascal (chú ý chỉ dùng một loại dấu ngoặc tròn)HS: Lên bảng viết các biểu thức
GV: Hướng dẫn HS phát hiện những đặc điểm của tọa độ (x,y) của điểm thuộc vùng gạch trong các hình 2a và 2b
GV: Gợi ý đề HS nhận xét bài toánGV: Hướng dẫn HS viết chương trình đầy đủ
Trang 17Chương trình:
var a: read;
Begin
write(‘ Nhap gia tri a (a>0):’);readln(a);
write(‘ Dien tich phan gach la:
IV Củng cố: Hoàn thiện bài tập số 10 vào vở.
V Dặn dò: Làm các bài tập trong sách bài tập Chuẩn bị bài để giờ sau thực hành tại
phòng máy
Trang 18Tiết 9 + 10 Bài tập và thực hành 1
Ngày soạn: / ; Ngày giảng: /
I Mục tiêu
1 Kiến thức:
- Giới thiệu một chương trình Pascal hoàn chỉnh đơn giản;
- Làm quen với một số dịch vụ cơ bản của TP trong việc soạn thảo, lưu trữ, dịch và thực hiện chương trình
2 Kỹ năng:
- Biết viết một chương trình Pascal đơn giản;
- Biết sử dụng một số dịch vụ chủ yếu của Pascal trong soạn thảo, lưu, dịch
và thực hiện chương trình
II Chuẩn bị của GV và HS:
1 Giáo viên: Phòng máy, các máy cài Turbo Pascal, giáo án, SGK
2 Học sinh: Bài tập (viết một chương trình hoàn chỉnh), SGK
III Nội dung:
b) Nhấn phím F2 và lưu chương trình với
GV: Hướng dẫn lại cho HS biết cách khởi động máy, kích hoạt phần mềm Pascal, làm quen với một chương trình đơn giản (giải phương trình bậc hai một ẩn) theo từng bước
GV: Thực hiện theo hướng dẫn như trong SGK
Trang 19tên là PTB2.PAS lên đĩa.
f) Sửa lại chương trình trên sao cho không
dùng biến trung gian D Thực hiện chương
trình đã sửa với bộ dữ liệu trên
g) Sửa lại chương trình nhận được ở câu c)
bằng cách thay đổi công thức tính x2
h) Thực hiện chương trình đã sửa với bộ
dữ liệu 1; -5; 6
g) Thực hiện chương trình với bộ dữ liệu
1; 1; 1 và quan sát kết quả trên màn hình
GV: Sửa những lỗi chung lên bảng
GV: Giúp HS dịch và sửa lỗi chương trình trực tiếp trên máy tính với từng HS (vì đây
là bài thực hành đầu tiên)
HS: Nhập các giá trị: 1, -3, 2 Quan sát kết quả trên màn hình
HS: Quan sát kết quả hiển thị trên màn hình
GV: Gợi ý để HS thực hiện việc sửa đổi chương trình
HS: Thực hiện theo yêu cầu Quan sát kết quả trên màn hình
GV: Sau khi học sinh hoàn thành bài thực hành 1, có thể hướng dẫn HS làm các bài tập 9 và 10 trong SGK
HS: Làm bài tập dưới sự hướng dẫn của GV
IV Củng cố:
V Dặn dò: Làm bài tập 9, 10 (t36 – SGK) Giờ thực hành sau cho chạy thử trên máy.
Trang 20Tiết 11 Cấu trỳc rẽ nhỏnh
Ngày soạn: / ; Ngày giảng: /
I Mục tiờu
1 Kiến thức:
- 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
2 Kỹ năng:
- 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 dạng thiếu, rẽ nhỏnh dạng đầy đủ và ỏp dụng
để thể hiện được thuật toỏn của một số bài toỏn đơn giản
II Chuẩn bị của GV và HS:
1 Giỏo viờn: Giỏo ỏn, SGK, bảng phụ, phiếu học tập
- Hớng dẫn HS sử dụng phiếu: điền đầy đủ các thông tin ngày tháng, họ tên, lớp, đọc kỹ các yêu cầu và trả lời vào phần đã
quy định
- HS có 15 phút tự nghiên cứu SGK và trả lời các yêu cầu trong phiếu
- Quan sát HS, giải đáp các thắc mắc trong quá trình
HS thực hiện các yêu cầu trong phiếu
- Nhận phiếu học tập
- Điền các thông tin cá nhân
- Xem và nghe GV hớng dẫn cách thức để trả lời các yêu cầu trong phiếu học tập
- Hỏi luôn GV những ý mà mình cha hiểu
- Trong 15 phút tự nghiên cứu SGK và hoàn thành phiếu HS phải đọc thật kỹ các yêu cầu trong Phiếu học tập Sử dụng hiệu quả SGK nh tài liệu nghiên
Trang 21- Sau 15 phút bắt đầu hoàn thiện các nội dung trong phiếu.
- Khi đề cập đến phần nào trong bài thì yêu cầu 1 HS hãy trình bày nội dung phần đó
- Viết nội dung lên bảng và yêu cầu các HS khác nhận xét
- Sau khi hoàn thành các ý trong phiếu thì yêu cầu HS hoàn thiện phiếu của mình
cứu
- HS có thể trao đổi và thảo luận với các thành viên xung quanh để có đợc câu trả lời đúng ý, ngắn gọn
- Trình bày nội dung trong phiếu học tập theo yêu cầu của GV
- Theo dõi GV trình bày và nhận xét phần trả lời của bạn
- Hoàn thiện phiếu học tập
IV Củng cố:
V Dặn dũ: Đọc trước bài 10 – Cấu trỳc lặp.
Ngày tháng năm 2007
Trang 22Tùy thuộc vào ∆ để đa ra kết luận nghiệm.
Quan sát sơ đồ Điền vào chỗ trống? Từ
đó suy ra một số mệnh đề?
Nếu ∆ < 0 thì Nếu ∆ ≥ 0 thì hoặc
Nếu ∆ < 0 thì ngợc lại thì .
⇒ mệnh đề:
2 Câu lệnh if then–
Quan sát cấu trúc câu lệnh và sơ đồ
khối Chỉ ra ý nghĩa các câu lệnh?
C1: max := a; if then .
C2: if then else
Cách: .
3 Câu lệnh ghép
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 ta làm thế nào?
Trả lời:
Trang 23Ngày soạn: / ; Ngày giảng: /
I Mục tiêu
1 Kiến thức:
- 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 với số lần biết trước, cấu trúc lặp kiểm tra điều kiện trước;
- Biết cách vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể
2 Kỹ năng:
- Mô tả được 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 với số lần biết trước, lệnh lặp kiểm tra điều kiện trước;
- Viết được thuật toán của một số bài toán đơn giản
II Chuẩn bị của GV và HS:
1 Giáo viên: Giáo án, SGK, bảng phụ
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ự
S1:=0;
If (1/a>0.0001) then S1:=S1+ 1/a;
If (1/(a+1)>0.0001) then S1:=S1+ 1 /(a+1);
If (1/(a+2)>0.0001) then S1:=S1+ 1 /(a+2);
If (1/(a+3)>0.0001) then S1:=S1+ 1 /(a+3);
…
HS : 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
2
1 1
1 1
+ + + +
+ +
+
a a
a a
Bài toán 2 : Tính Tổng
2
1 1
1
+ + + +
+ +
+
N a a
a a
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à
Trang 24hợ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ước 5;
B4: S:= S+ 1/
(a+N) rồi quay lại B2;
B5: Đưa ra S rồi kế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?
Lặp bao nhiêu lần?
Hai thuật toán giống và khác nhau
như thế nào?
Cái gì thay đổi trong thuật toán này?
Sau khi so sánh hai thuật toán trên, giáo
1/(a+N) với N = 1, 2, 3, …
- Với bài toán 1, việc cộng thêm dừng khi 1/(a+N) < 0.0001, => số lần lặp chưa biế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ệnh trong 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ần biế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ị đầ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
Trang 25viê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
Ở 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
_ 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>;
Trang 26sinh 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)
Chạ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
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à
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ại B1, ngược lại N := N – M rồi quay lại B1Sau đây là chương trình tìm UCLN;
IV Củng cố:
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
V Dặn dò:
Cho bài tập về nhà
Trang 27Ngày soạn: / ; Ngày giảng: /
I Mục tiêu
1 Kiến thức:
2 Kỹ năng:
- Xây dựng chương trình có sử dụng cấu trúc rẽ nhánh;
- Làm quen với việc hiệu chỉnh chương trình
II Chuẩn bị của GV và HS:
1 Giáo viên: Phòng máy, các máy cài Turbo Pascal, giáo án, SGK
2 Học sinh: Bài tập (viết một chương trình hoàn chỉnh), SGK
III Nội dung:
Bài toán Bộ số Pi-ta-go.
Biết rằng bộ ba số nguyên dương a, b, c
được gọi là bộ số Pi-ta-go nếu tổng các
bình phương của hai số bằng bình phương
của số còn lại Viết chương trình nhập từ
GV: giải thích bài toán
HS: Đưa phương án có thể xảy ra của bài toán
Kiểm tra xem có đẳng thức nào trong ba đẳng thức sau đây xảy ra hay không:
Trang 28d) Vào bảng chọn Debug mở cửa sổ hiệu
chỉnh để xem giá trị a2, b2, c2
HS: Thực hiện thao tác lưu chương trình
GV: Theo dõi và hướng dẫn HS thực hiện các phần của bài thực hành
GV: Hướng dẫn cụ thể ở từng máy một
HS: Nếu thực hiện xong các yêu cầu trong bài thực hành thì có thể làm một số bài tập trong SGK (t.51)
GV: Gợi ý cho HS thực hiện các bài tập này
IV Củng cố:
V Dặn dò:
Tiết 16 Kiểm tra 1 tiết
Ngày soạn: / ; Ngày giảng: /
Trang 29II Chuẩn bị của GV và HS:
III Nội dung:
Kiểm tra bằng bài viết trên lớp
Bài kiểm tra gồm 20 câu trắc nghiệm
GV: Phát đề cho HS, quan sát HS làm bài HS: Làm bài nghiêm túc, không sử dụng
tài liệu
IV Củng cố:
V Dặn dò: Ôn tâp toàn bộ chương 2 và bài “Cấu trúc rẽ nhánh”
Giờ sau kiểm tra học kì
Tiết 18 Kiểm tra học kì I
Ngày soạn: / ; Ngày giảng: /
Trang 30II Chuẩn bị của GV và HS:
III Nội dung:
Kiểm tra bằng bài viết trên lớp
Bài kiểm tra gồm 30 câu trắc nghiệm
GV: Phát đề cho HS, quan sát HS làm bài HS: Làm bài nghiêm túc, không sử dụng
tài liệu
IV Củng cố:
V Dặn dò:
Trang 31II Chuẩn bị của GV và HS:
1 Giáo viên: Giáo án, SGK, bảng phụ
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)
Chạ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
3 Lặp với số lần chưa biết trước và câu lệnh while – do
Để giải bài toán 2 ta dùng thuật toán như sau :
_ 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
Trang 32thự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à
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ại B1, ngược lại N := N – M rồi quay lại B1Sau đây là chương trình tìm UCLN;
IV Củng cố:
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
V Dặn dò:
Cho bài tập về nhà
Trang 33- Luyện cấu trúc lặp, chú ý bài tìm tổng của dãy số;
- Tiếp tục làm quen với các công cụ hiệu chỉnh chương trình
II Chuẩn bị của GV và HS:
GV: Yêu cầu HS chữa bài tập 4 trên bảng.
HS: Lên bảng chữa bài.
GV: Sửa lỗi và hoàn chỉnh bài 4.
GV: Rèn luyệ, uốn nắn HS về cách viết các
câu lệnh sao cho chính xác và gọn gàng,
mỗi câu lệnh nên viết trên một dòng để
thuận tiện cho quá trình theo dõi thực hiện
từng lệnh
HS: Rèn luyện tính cẩn thận, chu đáo khi
lập trình, rèn luyện cách hiệu chỉnh chương
trình khi gặp lỗi và cách kiểm thử lại
chương trình thông qua một số test
GV: Yêu cầu cả lớp cùng giải bài tập 5.b.
Bài 4
a)
if (sqr(x)+sqr(y)<=1) then z:= sqr(x) + sqr(y) else if y>=x then z:=x + y else
Trang 34Tiết 21 Kiểu mảng
Ngày soạn: / ; Ngày giảng: /
I Mục tiêu
1 Kiến thức:
- 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
2 Kỹ nă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ột chiề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 Chuẩn bị của GV và HS:
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ế
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
Chươ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
Có thể sử dụng ví dụ trong SGK để học sinh
dễ theo dõi, gõ trước chương trình để có thể
sử dụng cho các phần tiếp theo
Trong lập trình thường có 2 loại mảng :
- Mảng một chiều
- Mảng hai chiều
Trang 35GV : Đưa ra ví dụ, cần lập lập trình xử lý
một dãy số nguyên, hãy tìm cách lưu trữ
một dãy số nguyên trong khi lập trình ?
Bằng cách nào để lưu trữ được thông tin
dưới dạng bảng khi lập trình ?
HS : Đưa ra ý kiế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
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 ?
1 Kiểu mảng một chiều
- Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu, mảng được đặt tên và mỗi phần tử mang một chỉ số Để mô tả mảng một chiều ta cần xá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ột chiề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ớn hơn nhiệt độ trung bình này
Quan sát hai chương trình viết bằng ngôn ngữ Pascal cùng để giải bài toán trên
- Chương trình 1 : Không sử dụng kiểu mảng
- Chương trình 2 : Sử dụng kiểu mảng một chiều
a> Khai báo mảng một chiều
Trong ngôn ngữ Pascal, mảng một chiều được khai báo bằng hai cách như sau :
- Type là từ khóa dùng để khai báo biến,
Array là từ khóa để khai báo mảng
Trang 36HS : Thường thì học sinh trả lời cách 1 tiện
Đưa ra một số khai báo mảng trong Pascal
- Kiểu chỉ số thường là đoạn số nguyên liên tục có n1 n2, với n1 là chỉ số đầu
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 ;
B : Arrat[1 50] of Real ;
IV Củng cố:
V Dặn dò:
Trang 37Nế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
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] ;
Trang 38GV : Đưa ra ví dụ, nhắc lại ý tưởng của
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
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 số
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
Trang 39If 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
IV Củng cố:
V Dặn dò:
Trang 40GV : Đưa ra ví dụ, nhắc lại ý tưởng của
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
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áo không tìm thấy
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]) ;