+ Hiểu được cấu trúc lặp với số lần biết trước và câu lệnh FOR - DO - Kĩ năng: Bước đầu sử dụng được lệnh lặp FOR để lập trình giải quyết được một số bài toán đơn giản - Thái độ: Khơi gợ[r]
Trang 1Ngày soạn : Ngày dạy:
I/ Mục tiêu:
1 Về kiến thức:
- Biết được một chương trình Pascal hoàn chỉnh
- 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
2 Về kỹ năng:
- Viết được chương trình đơn giản, lưu được chương trình trên đĩa, dịch lỗi cú pháp, thực hiện và tìm lỗi thuật toán, hiệu chỉnh
- Bước đầu biết phân tích và hoàn thành một chương trình đơn giản trên Pascal hoặc Free Pascal
3 Về tư duy và thái độ:
- Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc
- Tự giác, tích cực và chủ động hoàn thành,
II/ Chuẩn bị của giáo viên và học sinh:
+ Giáo viên: Phòng máy tính đã cài sẵn chương trình Turbo Pascal hoặc Free Pascal, các chương trình làm ví dụ
+ Học sinh:
- Sách giáo khoa, sách bài tập và bài viết sẵn ở nhà
- Đọc trước phần phụ lục B1 trang 122 - Môi trường Turbo Pascal
- Xem trước nội dung bài thực hành số 1
III/ Phương pháp: Gởi mở thông qua hoạt động tư duy.
IV/ Tiến trình bài dạy:
Hoạt động 1: Kiểm tra nội dung thực hành và khởi động máy.
Hoạt động của giáo viên Hoạt động của học sinh Ghi bảng
- GV kiểm tra sự chuẩn bị nội
dung thực hành của học sinh
- GV hướng dẫn học sinh khởi
động máy, và khởi động chương
trình Turbo Pascal hoặc Free
Pascal
- HS để nội dung thực hành trước mặt
- Chý ý hướng dẫn của GV
để khởi động máy và chương trình Turbo Pascal hoặc Free Pascal
Hoạt động 2: Tìm hiểu một chương trình Pascal hoàn chỉnh.
Hoạt động của giáo viên Hoạt động của học sinh Ghi bảng
- GV ghi chương trình
Giai_PTB2 lên bảng
- GV yêu cầu học sinh đọc và gõ
chương trình Giai_PTB2 như trên
bảng
- Học sinh quan sát trên bảng và độc lập gõ chương trình vào máy
Chương trình giải phương trình bậc hai:
program Giai_PTB2;
uses crt;
var a, b , c, D: real;
x1, x2: real;
begin
clrscr;
write(‘ a, b, c: ‘);
readln(a, b, c);
D:=b*b - 4a*b*c;
x1:= (-b - sqrt(D))/(2*a); x2:= -b/a - x1;
write(‘x1 = ‘, x1 : 6 : 2,
’x2: = ‘, x2 : 6 : 2);
Trang 2- GV yêu cầu học sinh thực hiện
các nhiệm vụ sau:
+ Lưu chương trình bằng cách
nhấn phím F2 với tên
PTB2.PAS.
+ Dịch và sửa lỗi cú pháp với tổ
hợp phím Alt+F9.
+ Thực hiện chương trình với tổ
hợp phím Ctrl+F9.
+ Nhập các giá trị 1; -3; và 2
Thông báo kết quả của máy đưa
ra
+ Trở về màn hình soạn thảo
bằng phím Enter.
+ Tiếp tục thực hiện chương trình
+ Nhập các giá trị 1 ; 0 ; -2
Thông báo kết quả của máy đưa
ra
HỎI: Vì sao lại có lỗi xuất hiện?
+ Sửa lại chương trình trên
không dùng đến biến D và thực
hiện chương trình đã sửa
+ Sửa lại chương trình bằng cách
thay đổi công thức tính của x2
+ Thực hiện chương trình đã sửa
với bộ dữ liệu 1 ; - 5 ; 6 Thông
báo kết quả
+ Thực hiện chương trình với bộ
dữ liệu 1 ; 1 ; 1 Thông báo kết
quả
- Nhấn phím F2 và gõ
PTB2.PAS
- Nhấn phím Alt+F9
- Nhấn phím Ctrl+F9
- x1 = 1.00 x2 = 2.00
- Nhấn phím Enter
- Nhấn phím Ctrl+F9
- Thông báo lỗi và cho biết
vì sao: Do căn bậc hai của một số âm
- Sửa lại:
- Tiếp tục sửa lại:
- x1 = 2.00 x2 = 3.00
- Thông báo lỗi với lý do delta của pt là số âm
readln
end
readln(a, b, c);
x1:= (b sqrt(b*b -4a*b*c))/(2*a);
x2:= -b - x1;
write(‘x1 = ‘, x1 : 6 : 2,
’x2: = ‘, x2 : 6 : 2);
readln(a, b, c);
x1:= (b sqrt(b*b -4a*b*c))/(2*a);
x2:= (b + sqrt(b*b -4a*b*c))/(2*a);
write(‘x1 = ‘, x1 : 6 : 2,
’x2: = ‘, x2 : 6 : 2);
- x1 = 2.00 x2 = 3.00
Hoạt động 3: Rèn luyện thêm về kỹ năng lập trình cho học sinh
Hoạt động của giáo viên Hoạt động của học sinh Ghi bảng
- GV yêu cầu học sinh hãy viết
một chương trình tính diện tích
một tam giác khi biết độ dài ba
cạnh của nó
- GV định hướng để học sinh
phân tich bài toán
+ Dữ liệu vào (Input)
+Diệu liệu ra (Output)
+ Cách tính:
- GV yêu cầu học sinh soạn và
chạy chương trình lên đĩa
- Nghe và nhận nhiệm vụ
- Phân tích theo yêu cầu của giáo viên:
+ Dữ liệu vào ba cạnh a; ;
b ; c + Dữ liệu ra S:
+ p:= (a+b+c)/2 S: = sqrt(sqr(p-a)*sqr(p-b)*sqr(p-c))
- Thực hiện theo yêu cầu của giáo viên:
+ Soạn chương trình
+ Bấm phím F2 để lưu
chương trình
+Bấm Alt+F9 để dịch lỗi
cú pháp
Trang 3- GV yêu cầu học sinh nhập dữ
liệu và thông báo kết quả ;
a = 3; b = 6; c = 5
a = 2; b = 5; c = 10;
+ Bấm Ctrl+F9 để chạy
chương trình
+ Thông báo kết quả cho giáo viên
- Học sinh thông báo kết quả
Hoạt động 4: Củng cố buổi thực hành và bài tập về nhà.
Hoạt động của giáo viên Hoạt động của học sinh Ghi bảng
Gv nhắc lại các bước khi hoàn
thành một chương trình
+ Phân tích bài toán để xác định
dữ liệu vào/ ra
+ Xác định thuật toán
+ Soạn chương trình
+ Lưu chương trình
+ Biên dịch chương trình
+ Thực hiện và hiệu chỉnh
chương trình
- Làm bài tập trang 35 và 36
- Chú ý và ghi nhớ
- Về nhà làm bài tập trang
35 và 36
Rút kinh nghiệm:
Trang 5
Ngày soạn: Ngày dạy:
I Mục Tiêu
Kiến thức:
- Củng cố những nội dung đã học ở chương 2
Kĩ năng:
- Biết sử dụng các thủ tục chuẩn vào/ra
- Biết xác định input và output của bài toán
Thái độ:
- Rèn luyện khả năng tu duy logic khi giải quyết một số bài toán cụ thể
II Chuẩn bị:
Giáo viên: Giáo án, sách giáo khoa;
Học sinh: vở ghi, sách giáo khoa
III Phương pháp:
- Kết hợp những phương pháp giảng dạy như thuyết trình, vấn đáp, mô phỏng
IV Tiến trình tiết dạy:
1 Ổn định lớp, kiểm tra sĩ số
2 Kiểm tra bài cũ: Lồng vào quá trình giải bài tập
3 Nội dung bài tập
Hoạt động của giáo viên Hoạt động của học sinh Nội dung
1 Cho biết sự khác nhau
giữa hằng có đặt tên và
biến?
Nhận xét, đánh giá và cho
điểm
2 Tại sao phải khai báo
biến?
Nhận xét, đánh giá và cho
điểm
3 Để tính diện tích S của
hình vuông có cạnh A với
giá trị nguyên nằm trong
phạm vi từ 100 đến 200,
cách khai báo S nào dưới
đây là đúng và tốn ít bộ
nhớ nhất?
a) Var S:integer;
b) Var S:real;
c) Var S:word;
d) Var S:longint;
e) Var S:boolean;
Nhận xét, đánh giá và cho
điểm
4 Viết chương trình nhập
vào số a (a>0) rồi tính và
đưa ra diện tích phần được
gạch chéo trong hình
3(SGK, trang 36)
Nhận xét diện tích phần
gạch bằng ½ diện tích hình
- Lắng nghe suy nghĩ và trả lời
- Suy nghĩ để đưa ra phương
án trả lời
- Suy nghĩ, dựa và các kiểu
dữ liệu đã học để trả lời câu hỏi
Câu 1:
- Xét về mặt lưu trữ giá trị của hằng và biến trong RAM thì giá trị trong ô nhớ của hằng
có đặt tên là không thay đổi, còn giá trị trong
ô nhớ của biến thì có thể thay đổi được tại từng thời điểm thực hiện chương trình
Câu 2:
- Khai báo biến nhằm các mục đích sau: + Xác định kiểu của biến Trình dịch sẽ biết cách tổ chức ô nhớ chứa giá trị của biến + Đưa tên biến vào danh sách các đối tượng được chương trình quản lí
+ Trình dịch biết cách truy cập giá trị của biến và áp dụng thao tác thích hợp cho biến
Câu 5:
- Vì cạnh A chỉ nhận giá trị nguyên trong phạm vi từ 100 đến 200 nên các khai báo b,
c, d đều đúng
Cách khai báo c là tốt nhất vì tiết kiệm được
bộ nhớ cần lưu trữ
Câu 9:
Var a:real;
Const pi=3.1415;
Begin
Write(‘nhap gia tri a (a>0):’);
readln(a);
Write(‘dien tich phan gach cheo la:’, a*a*pi/2:8:3);
Readln;
End
Trang 6tròn tâm O(0,0) bán kính
R=a lưu ý số là 1 hằng
trong Pascal và được kí
hiệu là pi Giá trị của Pi là
3,1415
6 Lập trình tính và đưa ra
màn hình vận tốc v khi
chạm đất của một vật rơi từ
độ cao h, biết rằng v=√2 gh
, trong đó g là gia tốc rơi tự
do và g=9.8m/s2 độ cao
h(m) được nhập vào từ bàn
phím
- Suy nghĩ, trả lời câu hỏi
- Suy nghĩ, trả lời câu hỏi, cho ví dụ
Câu 10:
Uses crt;
Const g=9.8;
Var v,h:real;
Begin Clrscr;
Write(‘nhap do cao cua vat h=’);
Readln(h);
V:=sqrt(2*g*h);
Writeln(‘van toc khi cham dat la:’,v:6:3,’m/s’);
Readln End
Một số bài tập luyện tập:
Bài 1: Viết chương trình tính diện tích hình tam giác có 3 cạnh a, b, c nhập từ bàn phím (công thức hê-rông: s=sqrt(p*(p-a)*(p-b)*(p-c)) với p=(a+b+c)/2)
Bài 2: thực hiện chương trình sau:
Var a,b:integer;
Begin
A:= 365;
b:= a div 12;
a:= a mod 52;
b:= a+ b div 12;
a:= b+ a div 10;
write(a:4:2);
End
Hỏi biến a nhận giá trị bao nhiêu?
Bài 3: Viết chương trình nhập vào hai số a và b sau đó in ra màn hình các kết quả sau:
a) Tổng và hiệu hai số a và b
b) Tổng, hiệu bình phương của a, b
c) Bình phương tổng, hiệu của a và b
Bài 4: Viết chương trình nhập vào một số nguyên có 3 chữ số, sau đó in ra tổng các chữ số Ví dụ: nhập N=123 tổng S=1+2+3 = 6
V CỦNG CỐ - DẶN DÒ
- Củng cố: cấu trúc chung của một chương trình Pascal đơn giản gồm:
+ Phần khai báo – khai báo tên chương trình (Program)
- khai báo thư viện (uses)
- khai báo hằng (Const)
- Khai báo biến (Var) + Phần thân chương trình (begin end.)
- Dặn dò: về nhà làm các bài tập đã cho
+Xem lại nội dung các bài đã học trong chương II
+ Hôm sau ôn tập kiểm tra 1 tiết
* RÚT KINH NGHIỆM
Trang 7
Ngày soạn: Ngày dạy:
Tiết PPCT: 10 Bài: BÀI TẬP ÔN TẬP
I Mục tiêu bài học:
Kiến thức:
- Nội dung chương I và chương II
- Một số khái niệm, thành phần của ngôn ngữ lập trình
- Cấu trúc của một chương trình Pascal đơn giản
Kĩ năng:
- Biết được một số thành phần cơ bản của ngôn ngữ lập trình
- Viết được một số chương trình Pascal đơn giản
Thái độ:
- Rèn luyện khả năng tư duy logic
II Chuẩn bị:
Giáo viên: Giáo án, chương trình minh họa.
Học sinh: Sách giáo khoa, vở ghi.
III Phương pháp:
- Thuyết trình, vấn đáp, minh họa
IV Hoạt động dạy và học:
1 Ổn định tổ chức: Kiểm tra sĩ số.
2 Kiểm tra bài cũ: Lồng vào bài tập.
3 Bài mới:
Để chuẩn bị cho tiết kiểm tra hôm sau, hôm nay chúng ta ôn lại một số nội dung cơ bản trong hai chương đầu, chương I và chương II
Hoạt động 1: Chương I: Một số khái niệm về lập trình và ngôn ngữ lập trình
- Hãy nêu các thành phần
cơ bản của ngôn ngữ lập
trình?
- Hãy nêu khái niệm từ
khóa, tên chuẩn và qui tắc
đặt tên
- Khái niệm hằng và biến?
+ Bảng chữ cái + Cú pháp + Ngữ nghĩa
- Tên dành riêng: dùng với ý nghĩa riêng xác định
- Tên chuẩn: tên được dùng với
ý nghĩa nhất định
- Hằng là đại lượng có giá trị không đổi trong quá trình thực hiện chương trình
- Biến là đại lượng đặ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ủa ngôn ngữ lập trình.
+ Bảng chữ cái + Cú pháp + Ngữ nghĩa
- Tên dành riêng
- Tên chuẩn
- Tên do người lập trình đặt
- Hằng (số học, logic, hằng xâu)
- Biến
Hoạt động 2: Chương II: Chương trình đơn giản
- Hãy nêu cấu trúc chung
của một chương trình
Pascal đơn giản?
- Nêu các khai báo trong
chương trình Pascal
- Phần thân chương trình?
- [<phần khai báo>]
<phần thân>
- Tên chương trình Program <tên chương trình>;
- Thư viện Uses <tên thư viện>;
- Khai báo hằng Const <tên hằng>=<giá trị>;
- Khai báo biến Var <ds biến>:<Kiểu dữ liệu>;
- Begin
trình.
- Cấu trúc chung
- Các thành phần + Khai báo + Thân chương trình
2 Một số kiểu dữ liệu
- Kiểu nguyên: Byte (1 byte), Integer (2 byte), Word (2 byte), LongInt (4 byte)…
- Kiểu thực: Real (6 byte), Extended (10 byte)
…
- Kiểu kí tự: Char (1 byte)
Trang 8Bài tập:
a b
c
d 2cosx + 3Sinx
e
- Nhận xét về phần trình bày
của học sinh, dánh giá và cho
điểm
- hương dẫn học sinh viết
chương trình?
-Input: a,b
-output: c
[<dãy lệnh>]
End
- Học sinh lên bảng trình bày
Học sinh viết chương trình Program ddduongcheo;
Var a,b,c:real;
Begin Write(‘nhap 2 canh: ‘);
readln(a,b);
C:=sqrt(sqr(a)+sqr(b));
Write(‘do dai duong cheo:
‘,c:8:2);
Readln End
- Logic: Boolean (1 byte)
3 Chuyển đổi biểu thức
4 Các thủ tục vào, ra
- Đưa dữ liệu ra mà hình Write/writeln(danh sách kết quả ra);
- Nhập dữ liệu từ bàn phím Read/Readln(danh sách biến vào);
5 Viết chương trình
Nhập độ dài hai cạnh a, b của hình chữ nhật, tính và đưa ra màn hình đọ dài đường chéo của hình chữ nhật
V Củng cố và dặn dò:
Củng cố: Xem lại nội dung đã học trong chương I,II
Dặn dò: Về nhà xem lại kiến thức đã học, hôm sau KT 1 tiết
Rút kinh nghiệm:
Trang 9
Ngày soạn: Ngày dạy:
Tiết PPCT 12 Bài 9: CẤU TRÚC RẼ NHÁNH.
I Mục tiêu bài dạy:
1 Kiến thức:
- Hiểu nhu cầu của cáu trúc rẽ nhánh trong biểu diễn thuật toán
- Học sinh nắm vững ý nghĩa và cú pháp của câu lệnh rẽ nhánh dạng khuyết và dạng đủ, hiểu được cách sử dụng 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 khuyết, rẽ nhánh đầy đủ và áp dụng được để thể hiện thuật toán của một số bài toán đơn giản
3 Thái độ:
Rèn luyện kĩ năng tư duy logic, tác phong làm việc nghiêm túc
II Chuẩn bị:
- Giáo viên: + Giáo án
+ Chuẩn bị sơ đồ:
- Học sinh: sách giáo khoa, vở ghi, học bài cũ, đọc và chuẩn bị bài mới
III.
Phương pháp truyền thụ:
Thuyết trình, vấn đáp, mô phỏng
IV Tiến trình bài dạy:
1 Ổn định lớp: Kiểm tra sĩ số.
2 Kiểm tra bài cũ:
Bài toán: cho 2 số nguyên a, b; tìm Max(a,b)
Yêu cầu: viết phần tên, phần khai báo, và câu lệnh nhập a, b
Nêu thuật toán tìm Max(a,b)
Hoạt động 1: Vào bài
- Giao nhiệm vụ cho HS
- Làm thế nào để tìm Max(a, b)?
- Để thể hiện thuật toán trên
trong TP các em làm như thế
nào?
- Thực hiện lần lượt các yêu cầu
- So sánh:
- Nếu a > b thì max = a
- Nếu a < b thì max = b
- Chưa thể làm.
Program baitap;
Var a, b, max : integer;
Begin readln(a,b);
end
3 Bài mới:
Hoạt động 2: Rẽ nhánh
Trang 10Hoạt động của giáo viên Hoạt động của học sinh Ghi bảng
- Cho ví dụ về 1 câu điều kiện?
- Chọn hai câu làm ví dụ Từ đó
phân tích cho học sinh thấy cấu
trúc rẽ nhánh thể hiện trong ví dụ
này
+ Nếu em thuộc bài thì 10
điểm…
+ Nếu tối nay trời mưa thì em nghỉ học ngược lại thì em đi học…
(Có thể có nhiều câu khác nhau)
1 Rẽ nhánh:
* Một số mệnh đề có dạng điều kiện: + Dạng thiếu: Nếu…thì…
+ Dạng đủ: Nếu … thì … nếu không thì …
* Cấu trúc dùng để mô tả các mệnh đề như trên được gọi là cấu trúc rẽ nhánh thiếu và đủ
* Mọi ngôn ngữ lập trình đều có các câu lệnh để mô tả cấu trúc rẽ nhánh
Hoạt động 3: câu lệnh IF - THEN
Hoạt động của giáo viên Hoạt động của học sinh Ghi bảng
- Nêu cú pháp câu lệnh rẽ nhánh
dạng đủ và dạng khuyết
- Vẽ sơ đồ và giải thích quá trình
thực hiện câu lệnh rẽ nhánh dạng
đủ và dạng khuyết
- Gọi học sinh viết câu lệnh so
sánh để tìm Max(a, b) bằng 2
cách
- Có thể chỉ dùng 1 câu lệnh
khuyết?
max:=a; if a < b then max:=b;
- lưu ý các em trước từ khoá Else
không có dấu ; và sau then, sau
else chỉ có 1 lệnh chương trình
- Với 2 dạng này, dạng nào thuận
tiện hơn?
- Quan sát và ghi chép.
- Lên bảng viết:
If a > b then max:= a;
If a < b then max:= b;
Hoặc: If a > b then max:=a Else max:=b;
- tìm câu trả lời
-> tuỳ trường hợp cụ thể
2 Câu lệnh IF – THEN:
* Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh:
a Dạng khuyết:
IF <điều kiện> THEN <câu lệnh>;
b Dạng đủ:
IF <điều kiện> THEN <câu lệnh 1> ELSE < câu lệnh 2>;
Trong đó:
- Điều kiện là biểu thức lôgic
- Câu lệnh, câu lệnh 1, câu lệnh 2 là 1 câu lệnh của Pascal
Hoạt động 4: Câu lệnh ghép
- Muốn thực hiện nhiều lệnh sau
if hoặc sau then thì làm thế nào?
→ Dẫn đến khái niệm và cách
dùng câu lệnh ghép: nếu trong
cấu trúc rẽ nhánh, sau THEN có
từ 2 lệnh trở lên thì gộp thành
câu lệnh ghép, đặt các lệnh đó
trong cặp từ khoá Begin…end;
với Pascal
- Gọi học sinh nêu thuật toán giải
PT bậc hai?
- Nhận xét, bổ sung.
- Phân nhóm và yêu cầu học sinh
thảo luận nhóm để viết chương
trình
-Yêu cầu đại diện nhóm lên treo
bảng lời giải và trình bày
- Phát biểu ý kiến của mình.
- B1: Nhập a, b, c.
B2: Tính d = b2 – 4ac;
B3: + Nếu d < 0 thì pt vô nghiệm
+ Ngược lại thì pt có 2 nghiệm x1,2 = −b ±√d
2a
- Thảo luận theo nhóm và trình
bày lời giải vào bảng phụ:
3 Câu lệnh ghép và ví dụ:
* Trong ngôn ngữ Pascal câu lệnh ghép
có dạng:
Begin <các câu lệnh>;
End;
* Ví dụ: Viết chương trình giải phương
trình bậc hai
Program ptb2;
Var a, b, c, d, x1, x2: real;
Begin Write(‘ Nhap a, b, c:’);
Readln(a,b,c);
d := b*b – 4*a*c;
If d < 0 then Write(‘ PT vo nghiem’) else
Begin Write(‘ PT co nghiem :’);
x1:= (- b – sqrt(d))/(2*a);