Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (506.57 KB, 63 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<b>CHƯƠNG I: MỘT SỐ KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH</b>
<b>BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH </b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>-Biết được khái niệm lập trình và ngơn ngữ lập trình.</i>
<i>-Biết được khái niệm chương trình dịch.</i>
<i>-Phân biệt 2 loại chương trình dịch: thơng dịch và biên dịch.</i>
2. Kỹ năng:
<i>-Chưa cần kó năng cụ thể.</i>
3. Trọng tâm:
<i>-Chương trình dịch.</i>
4. Tư duy – Thái độ:
<i>-Học tập nghiêm túc về lập trình.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo vieân:
<i>-Phương pháp: Vấn đáp, gợi mở.</i>
<i>-Phương tiện: Phấn màu, thước kẻ, SGK tin11, SGV.</i>
Hoïc sinh:
<i>-Sách giáo khoa, đọc trước SGK, thực tiễn.</i>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:không
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu khái niệm lập trình và ngơn ngữ lập trình.</i>
<b>GV:</b> Đặt vấn đề: mọi bài tốn có thuật tốn
đều có thể giải được trên máy tính. Các bước
để giải một bài toán: +Xác định bài toán.
+Xây dựng thuật toán khả thi.
+Lập trình.
<b>HS: </b>Chú ý laéng nghe.
<b>GV: </b>Yêu cầu học sinh: Xác định các yếu tố
input và output của bài tốn giải phương trình
bậc nhất ax+b=0:
B1: Nhập a,b
B2: Nếu a<>0, kết luận: x=-b/a
B3: Nếu a=0 và b<>0, kết luận: vô nghiệm
B4: Nếu a=0 và b=0, kết luận: vô số nghiệm
<b>HS: </b>Xác định:
Input: a,b
Output: nghiệm duy nhất: x=-b/a, voâ nghiệm, voâ
số nghiệm.
<b>GV: </b>Diễn giảng: hệ thống các bước này gọi là
thuật toán.
Hỏi: nếu diễn đạt thuật toán cho máy hiểu em
dùng ngôn ngữ gì?
<b>HS: </b>Dùng ngôn ngữ lập trình.
<b>GV: </b>Diễn giảng: Hoạt động để diễn đạt 1 thuật
tốn thơng qua 1 ngơn ngữ lập trình gọi là lập
trình.
Yêu cầu: đọc SGK và cho biết khái niệm lập
trình.
<b>HS: </b> Lập trình là việc sử dụng cấu trúc dữ liệu
và các 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 tốn.
<b>HS: </b>Được một chương trình.
<b>GV: </b>Yêu cầu: Ghi các loại ngơn ngữ lập trình
đã biết.
<b>HS: </b>Có 3 loại ngôn ngữ lập trình:
+Ngôn ngữ máy
+Hợp ngữ.
+Ngôn ngữ bậc cao.
<b>GV: </b>Hỏi: em hiểu như thế nào là ngôn ngữ
máy và ngơn ngữ bậc cao?
<b>HS: </b>Ngôn ngữ máy: các lệnh được mô tả thành
các bit 0,1. Chương trình viết trên ngôn ngữ
máy được nạp vô bộ nhớ và thực hiện ngay.
Ngôn ngữ bậc cao:lệnh được mô tả gần
ngôn ngữ con người.
Chương trình phải được chuyển đổi thành chương
trình trên ngôn ngữ máy.
<b>GV: </b>Hỏi: Để chuyển đổi chương trình viết
bằng ngôn ngữ bậc cao sang ngôn ngữ máy
phải làm sao?
<b>HS: </b>Sử dụng chương trình dịch để chuyển đổi.
<b>GV: </b>Hỏi: Tại sao khơng lập trình trên ngơn
ngữ máy mà phải làm trên ngơn ngữ bậc cao?
<b>HS: </b>Lập trình trên ngôn ngữ bậc cao dễ viết
hơn.
<b>Khái niệm lập trình:</b> 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ủa một ngơn ngữ lập
trình cụ thể để mô tả dữ liệu và diễn đạt thuật tốn .
-Có 3 loại ngơn ngữ lập trì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 cao nói chung
khơng phụ thuộc loại máy, muốn thi hành được thì nó
phải được chuyển sang ngơn ngữ máy.
=>Cần phải có chương trình dịch để chuyển chương
<i> Hoạt động 2: Tìm hiểu chương trình dịch: thơng dịch và biên dịch. </i>
<b>GV: </b>Đặt vấn đề: Giới thiệu đất nước mình cho
một du khách nước ngoài:
C1: cần một người biết tiếng Anh dịch từng câu
nói của em cho người khách.
C2: Soạn nội dung cần giới thiệu ra giấy rồi
dịch toàn bộ nội dung đó sang tiếng Anh cho
người khách.
<b>HS: </b>Chú ý lắng nghe ví dụ đưa ra và thảo luận
để tìm ví dụ tương tự.
<b>GV: </b>u cầu học sinh nghiên cứu SGK và cho
biết các bước trong tiến trình thơng dịch và
biên dịch.
<b>Chương trình dịch có 2 loại:</b> Biên dịch và thông dịch
+ <b>Biên dịch</b> (Compiler): Thực hiện các bước sau:
-Duyệt, kiểm tra, phát hiện lỗi và kiểm tra tính đúng
đắn của các câu lệnh trong chương trình nguồn .
-Dịch tồn bộ chương trình nguồn thành một chương
<b>HS: </b>Tìm hiểu và trả lời:
Biên dịch: ( cần thực hiện nhiều lần)
Thông dịch: (Phù hợp với môi trường
đối thoại giữa người và máy)
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ặ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ác câu lệnh đó thành một hay 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 .
<i>.Củng cố:</i>
-Lập trình và ngôn ngữ lập trình.
-Hai loại chương trình dịch: thông dịch và biên dịch.
<i>.Dặn dò bài tập về nhà:</i>
-Mỗi loại ngôn ngữ lập trình phù hợp với những lập trình có trình độ như thế nào?
-Kể tên một số ngôn ngữ lập trình bậc cao có sử dụng biên dịch và một số sử dụng kĩ thuật thông dịch.
-Xem trước bài mới.
<i>.Rút kinh nghiệm bổ sung:</i>
………
<b>---</b><b></b>
<b>---CHƯƠNG I: MỘT SỐ KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH</b>
<b>BÀI 2: CÁC THÀNH PHẦN CỦA NGƠN NGỮ LẬP TRÌNH</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>-Biết được các thành phần của một ngơn ngữ lập trình. Một ngơn ngữ lập trình có 3 thành phần: Bảng </i>
<i>chữ cái, cú pháp, ngữ nghĩa.</i>
<i>-Biết được một số khái niệm như: tên, tên dành riêng, tên chuẩn, tên do người lập trình đặt, hằng, biến và</i>
<i>chú thích.</i>
2. Kỹ năng:
<i>-Phân biệt được các thành phần cơ bản trong một ngơn ngữ lập trình.</i>
<i>-Biết được cách đặt tên và phân biệt được tên chuẩn, tên dành riêng và tên do người lập trình đặt. </i>
<i>-Phân biệt được hằng và biến.</i>
<i>-Biết sử dụng chú thích.</i>
3. Trọng tâm:
<i>-Một số khái niệm: tên dành riêng, tên chuẩn, tên do người lập trình đặt, hằng, biến.</i>
4. Tư duy – Thái độ:
<i>- Rèn luyện tư duy logic.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: thuyết trình kết hợp với vấn đáp gợi mở, hoạt đơng nhóm.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11 ,SGV.</i>
Hoïc sinh:
<i>-Sách giáo khoa, đọc trước SGK, thực tiễn.</i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Tại sao phải xây dựng ngơn ngữ lập trình bậc cao?
-Chương trình dịch là gì? Tại sao cần có chương trình dịch?
<i><b>Tiết :2</b></i>
-Phân biệt thông dịch và biên dịch.
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu các thành phần của ngơn ngữ lập trình.</i>
<b>GV:</b>
trình bậc cao và một số ngơn ngữ lập trình bậc
cao.
<b>GV:</b>
ngữ gần với ngơn ngữ tiếng anh .Chương trình
viết trên ngơn ngữ lập trình bậc cao phải được
chuyển đổi thành chương trình trên ngơn ngữ
máy mới có thể thựa hiện được.
Một số ngơn ngữ lập trình bậc cao: Pascal, C+
+,C#, Java,…
Một ngơn ngữ lập trình thường có 3 thành
phần: bảng chữ cái, cú pháp và ngữ nghĩa.
<b>GV:</b>
lập trình là gì?
<b>HS:</b>
trong ngơn ngữ lập trình gồm: chữ cái thường
và hoa trong bảng chữ tiếng anh, các số từ 0,…,
9; các kí tự khác.
<b>GV:</b>
<b>1.Các thành phần cơ bản:</b>
- Mỗi ngơn ngữ lập trình thường có 3 thành phần cơ bản
là : bảng chữ cái, cú pháp và ngữ nghĩa.
<b>a.Bảng chữ cái:</b> 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>b.Cú pháp:</b> Là bộ quy tắc dùng để viết chương trình.
<b>c. Ngữ nghĩa:</b> 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 nó.
-Cú pháp cho biết cách viết chương trình hợp lệ, ngữ
nghĩa xác định ý nghĩa của các tổ hợp ký tự trong
chương trình.
-Lỗi cú pháp được chương trình dịch phát hiện và
thông báo cho người lập trình. Chương trình khơng cịn
lỗi cú pháp thì mới có thể dịch sang ngơn ngữ máy.
Lỗi ngữ nghĩa được phát hiện khi chạy chương trình.
<i> Hoạt động 2: Tìm hiểu tên trong ngơn ngữ lập trình.</i>
<b>GV:</b>
trình đều phải được đặt tên.
<b>HS:</b> Trình bày: trong turbo pascal: tên tối đa
127 kí tự, dùng các chữ, số , dấu gạch dưới
nhưng không thể bắt đầu bằng số.
<b>GV:</b>
và thường ngơn ngữ lập trình có phân biệt hay
khơng?
<b>HS:</b> Tìm hiểu và trả lời: ngơn ngữ lập trình C+
+ thì phân biệt chữ thường và chữ hoa cịn ngơn
ngữ pascal thì khơng.
<b>GV:</b>
và không hợp lệ trong turbo pascal?
<b>2. Một số khái niệm</b>
<b>a. Tên</b>
-Mọi đối tượng trong chương trình đều phải được đặt
tên.
<b>HS:</b> Trả lời: một số tên hợp lệ: CBA,_405
Một số tên không hợp lệ:9AB,VE
C,AW@#K….
<b>GV:</b>
nghiên cứu và trình bày về tên dành riêng , tên
chuẩn, tên do người lập trình đặt.
<b>HS:</b> Nghiên cứu và trình bày:
Tên dành riêng ( từ khóa) :là tên dùng với ý
nghĩa xác định , không dùng với ý nghĩa khác.
Tên chuẩn:là tên trong ngơn ngữ lập trình có
một ý nghĩa nào đó, có thể định nghĩa lại để
dùng với ý nghĩa khác.
Tên do người lập trình đặt là tên dùng ý nghĩa
riêng của người lập trình và khai báo trước khi
sử dụng không được trùng với tên dành riêng.
<b>GV:</b>
tên do người lập trình đặt: program, type,
var,abs vidu,xyz, abc,byte, div,char.
<b>HS:</b> Trả lời:
Tên dành riêng:Program, type.
Tên chuẩn:integer, byte, abs,div,char.
Tên do người lập trình đặt:vidu,xyz,abc.
<b>GV:</b>
-Ngơn ngữ lập trình thường có 3 loại tên cơ bản: Tên
dành riêng, tên chuẩn và tên do người lập trình tự đặt.
<i><b>Tên dành riêng:</b></i>
-Là những tên được ngơn ngữ lập trình quy định với ý
nghĩa xác định mà người lập trình khơng thể dùng với
ý nghĩa khác.
-Tên dành riêng cịn được gọi là từ khóa
<b>Ví dụ:</b> Một số từ khóa
Trong ngôn ngữ Pascal: Program, Var, Uses, Begin,
End, …
Trong ngôn ngữ C++<sub>: main, include, while, void,…</sub>
-Là những tên được ngơn ngữ lập trình (NNLT) dùng
với ý nghĩa nào đó trong các thư viện của NNLT,
người lập trình có thể sử dụng với ý nghĩa khác.
<b>Ví dụ: </b> Một số tên chuẩn
Trong ngơn ngữ Pascal: Real, Integer, Sin, Cos,
Trong ngôn ngữ C==<sub>: cin,cout. Getchar…</sub>
<i><b>Tên do người lập trình tự đặt</b></i>
-Được xác định bằng cách khai báo trước khi sử dụng
và không được trùng với tên dành riêng.
-Các tên trong chương trình khơng được trùng nhau
<i> Hoạt động 3: Tìm hiểu về hằng , biến và chú thích.</i>
<b>GV:</b>
và hằng logic?
Trình bày các khái niệm này?
<b>HS:</b> Trả lời:Hằng số như là:31,4; +3.1419,
1.0E-6
Haèng logic: true,false.
Hằng xâu: “ học bài di”
Hằng số:là các số ngun, số thực, có dấu
hoặc khơng dấu.
Hằng logic là giá trị đúng hoặc sai.
<b>b. Hằng và biến</b>
<b>Hằng: </b>
- 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 trong d6áu nháy “
hoặc ””
+ Hằng Logic : là các giá trị đúng hoặc sai
Là các đại lượng có giá trị khơng đổi trong q trình
thực hiện chương trình.
<b>Biến:</b>
Hằng xâu là chuỗi kí tự trong bộ mã Ascii, đặc
trong cặp dấu nháy.
<b>GV:</b>
trong ví dụ: ‘ abc’; 3,14; ’14,3’ ;1.5E+3
Để xác định hằng xâu dấu nháy đơn trong
pascal:’ ‘
<b>HS:</b> Trả lời: hằng số là 3,14;1.5E+3
Hằng xâu là ‘abc’, ’14,3’
<b>GV:</b>
nghóa biến?
<b>HS:</b> Nghiên cứu SGK và trả lời:
Hằng giá trị khơng đổi trong khi thực hiện
chương trình.
Biến phải được khai báo trước khi sử dụng,lưu
giá trị và có thể thay đổi trong khi thưc hiện
chương trình.
<b>GV:</b>
thích trong chương trình ?
<b>HS:</b> Chú thích được đặt giữa cặp dấu {} hoặc
(* *)để giải thích cho chương trình dễ hiểu.
<b>GV:</b>
turbo pascal dịch không?
Tên biến và tên hằng thuộc kiểu tên gì
trong ba loại đã học?
<b>HS:</b> Trả lời: khơng vì là dịng chú thích.
Trả lời: là tên do người lập trình đặt.
-Là đại lượng được đặt tên, giá trị có thể thay đổi
được trong chương trình.
-Các NNLT có nhiều loại biến khác nhau.
-Biến phải khai báo trước khi sử dụng.
<b>c. Chú thích</b>
- Chú thích khơng làm ảnh hưởng đến chương trình.
Trong Pascal chú thích được đặt trong { và } hoặc (* và
*)
Trong C++<sub> Chú thích đặt trong /* và */</sub>
.Củng cố:
-Nhắc lại các khái niệm: tên , tên dành riêng ,tên chuẩn, tên do người lập trình đặt.
-Phân biệt tên dành riêng ,tên chuẩn đồng thời hằng và biến.
.Dặn dò bài tập về nhà:
-Làm bài 4,5,6 SGK.
-Xem trước bài cấu trúc chương trình.
-Đọc bài đọc thêm ngơn ngữ pascal.
.Rút kinh nghiệm bổ sung:
………
<b>---</b><b></b>
<b>---CHƯƠNG I: MỘT SỐ KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH</b>
<b>BÀI TẬP</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>-Củng cố kiến thức đã học ban đầu về lập trình, ngơn ngữ lập trình: chương trình dịch, thơng dịch và </i>
<i>biên dịch,các thành phần của ngôn ngữ lập trình, tên chuẩn, tên dành riêng,hằng và biến.</i>
2. Kỹ năng:
<i>-Hiểu được tại sao phải xây dựng ngôn ngữ lập trình bậc cao.</i>
<i>-Biết cách phân biệt thơng dịch và biên dịch,phân biệt tên dành riêng và tên chuẩn.</i>
3. Tư duy – Thái độ:
<i><b>Tiết :3</b></i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: thuyết trình kết hợp với vấn đáp gợi mở.</i>
Hoïc sinh:
<i>-Sách giáo khoa, đọc trước SGK, thực tiễn.</i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Hãy nêu các thành phần của ngơn ngữ lập trình?
-Mọi đối tượng trong chương trình đều phải được đặt tên, vậy tên được qui định trong ngơn ngữ lập trình
như thế nào?
-Hãy viết một số tên hợp lệ trong ngơn ngữ lập trình Pascal,viết một số tên dành riêng và tên chuẩn?
-Nêu hiểu biết về hằng và biến trong ngơn ngữ lập trình?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i><b> Hoạt động 1: Củng cố kiến thức ban đầu về lập trình, ngơn ngữ lập trình.</b></i>
<b>GV: </b>Nêu vấn đề: các em đã học về lập trình
và ngơn ngữ lập trình,bây giờ chúng ta trả lời
một số câu hỏi.
<b>GV: </b>Yêu cầu: Học sinh trả lời xong từng câu,
hỏi các học sinh khác cần bổ sung gì về câu trả
lời của bạn khơng, rồi từ đó đúc kết thành câu
trả lời hoàn chỉnh.
<b>GV: </b>Đặt câu hỏi số 1: Tại sao người ta phải
<i>xây dựng các ngơn ngữ lập trình bậc cao?</i>
-Nhận xét, đánh giá và bổ sung hướng dẫn cho
học sinh trả lời câu hỏi số 1:
<b>HS: </b>Đọc suy nghĩ và trả lời câu hỏi.
<b>GV: </b>Đặt câu hỏi 2: Chương trình dịch là gì?
<i>Tại sao cần phải có chương trình dịch?</i>
<b>GV: </b>Đặt câu hỏi 3: Biên dịch và thông dịch
khác nhau như thế nào?
-Phân tích câu trả lời của học sinh.
<b>HS:</b>Suy nghĩ, trả lời câu hỏi, cho ví dụ
<b>GV: </b>Đặt câu hỏi 4: 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?
<b>HS: </b>Suy nghĩ để đưa ra phương án trả lời.
<b>GV: </b>Phân tích câu trả lời của học sinh.
Câu 1: vì ngơn ngữ lập trình bậc cao gần với ngơn ngữ
tự nhiên hơn nên nó dễ hiểu, dễ nâng cấp.Chương trình
viết bằng ngơn ngữ lập trình bậc cao khơng phụ thuộc
vào phần cứng máy tính nên có thể thực trên nhiều loại
máy.
Cho phép làm việc với nhiều kiểu dữ liệu.
Câu 2:Chương trình dịch là chương trình chuyển đổi
chương trình viết trên ngơn ngữ lập trình bậc cao thành
ngơn ngữ máy.
Chương trình viế bằng ngơn ngữ máy có thể được nạp
vào bộ nhớ và htực hiện ngay.
Câu 3:
Trình thơng dịch:dịch từng câu lệnh ra ngôn ngữ máy
rồi thực hiện ngay câu lệnh, hoặc báo lỗi.
Trình biên dịch:duyệt, phát hiện lỗi, kiểm tra tính
đúng đắn, dịch tồn bộ chương trình nguồn thành
Tên dành riêng:khôn gđược dùng khác với ý nghĩa đã
xác định.
Tên chuẩn:có thể dùng với ý nghĩa khác nhưng phải
được khai báo.
<b>GV: </b>Đặt câu hỏi 5: Hãy tự viết ra ba tên đúng
<i>theo quy tắc của Pascal </i>
-Gọi 3 học sinh lên bảng cho ví dụ về tên do
người lập trình đặt.
-Nhận xét, sửa chữa, góp ý.
<b>HS: </b>Suy nghĩ, trả lời, giải thích từng câu hỏi,
<b>GV: </b>Đặt câu hỏi 6: Hãy cho biết những biểu
diễn nào dưới đây không phải là biểu diễn
hằng trong Pascal và chỉ rõ trong từng trường
hợp:
a) 150.0
b) –22
c) 6,23
d) ‘43’
e) A20
<b>HS: </b>Suy nghĩ, trả lời câu hỏi.
<b>GV:N</b>hận xét, giải thích
Câu 5:
Ba tên đúng trong ngơn ngữ lập trình Pascal:
Tinhoc, lap_trinh11,_92hugo.
Ba tên dành riêng:program, const, var.
Ba tên chuẩn:char, exp,sin.
Câu 6:
Những biểu diễn không phải là hằng trong pascal:
6,23 ( thay bằng dấu chấm)
A20 ( là tên không rõ giá trị khôn gphải hằng)
‘C ( sai qui định về hằng xâu)
Cịn: 4+6 là biểu thức hằng trong Pascal chuẩn cũng
được coi là hằng trong Turbo Pascal.
<i><b> Hoạt động 2: Tìm hiểu một số bài tập.</b></i>
<b>GV: </b>Nêu một số câu hỏi:
<b>HS: </b>Học sinh suy nghĩ và trả lời:
Câu 1: trong chế độ biên dịch, một chương
trình đã được dịch thơng suốt, hệ thống khơng
báo lỗi.Có thể khẳng định rằng ta đã có một
chương trình đúng hay chưa?Tại sao?
Câu 2:Trong chế độ thông dịch, giả sử 2/3 số
câu lệnh trong chương trình đã được thực
hiện .Có thể khẳng định rằng như vậy chương
trình khơng cịn chứa lỗi cú pháp nữa hay
không ? Tại sao?
Câu 3:Sau khi chương trình đã được dịch
thơng suốt, khơng cịn lỗi cú pháp có cần tiếp
tục tìm và sửa lỗi trong chương trình nguồn nữa
hay khơng?
Câu 4:Tại sao phải kiểm tra tính đúng đắn
của chương trình bằng nhiều bộ dữ liệu thử
nghiệm khác nhau?
Câu1:Chưa thể khẳng định rằng ta đã có một chương
trình đúng được. Vì có cịn lỗi nhữ nghĩa.
Ví dụ:Câu lệnh Z:=a+b trong trình dịch Turbo Pascal là
câu lệnh đúng về cú pháp nếu các biến đã được khai
báo trước .Nếu a và b khai báo kiểu integer ( giá trị từ
-32768 đến 32767)
Nếu cho a=20000, b=15000 thì Z thuộc kiểu longint thì
câu lệnh vẫn sai về ngữ nghĩa trong TP vì nó qui định
cộng hai số integer thì phải trả về cùng kiểu. Nhưng
với Free Pascal thì khơng lỗi.
Nếu khai báo a,b thuộc longint thì mới đúng.
Lỗi ngữ nghĩa sinh ra khi không đáp ứng yêu cầu ngữ
nghĩa của ngôn ngữ hoặc chương trình dịch cụ thể.
Câu 2:Khơng thể khẳng định rằng chương trình khơng
cịn chứa lỗi cú pháp.Vì theo thơng dịch thì các câu
lệnh 1/3 cịn lại chưa được kiểm tra tính đúng đắn ,nên
có thể có lỗi xảy ra.
Câu 3:Cịn cần tiếp tục tìm và sửa lỗi trong chương
trình nguồn vì có thể trong chương trình nguồn cịn có
lỗi về ngữ nghĩa nữa.
Câu 4:Bởi vì chương trình có thể chạy sai ở một số bộ
dữ liệu đặc biệt nào đó.Ví dụ : chương trình sắp xếp
dãy số tăng thì có thể có dữ liệu có hai phần tử trùng
nhau.
Câu 5: Trong chương trình cịn có lỗi cú pháp
thơng thường chương trình biên dịch hay thơng
Câu 6: người ta có thể dùng trình soạn thảo
của một ngơn ngữ bậc cao để soạn thảo
chương trình nguồn cho ngôn ngữ bậc cao khác
nhưng không thể dùng trình soạn thảo này cho
ngơn ngữ máy được? Vì sao?
Câu 7:Hãy giải thích tại sao hợp ngữ chưa
thích hợp lắm với đa số người lập trình ứng
dụng?
Câu 8:có thể nói so với hợp ngữ ngơn ngữ lập
trình bậc cao ít phụ thuộc vào các loại máy cụ
thể được không?Hãy giải thích vì sao?
vì nó kiểm tra tính đúng đắn duyệt và sửa lỗi tồn bộ
chương trình rồi mới thực hiện lệnh.
Câu 6:Vì ngơn ngữ máy câu lệnh được biểu diễn bằng
một dãy bit, mỗi loại máy tính có ngơn ngữ riêng.Ngơn
ngữ máy cho phép tối ưu khả năng của máy tính.
Mặt khác ngơn ngữ bậc cao cần phải có chương trình
dịch nên không thể thực hiện ngay được.
Câu 7:Vì chương trình viết bằng hợp ngữ vẫn cịn phụ
thuộc vào máy, chương trình cịn cồng kềnh.
Câu 8:Ngơn ngữ lập trình bậc cao ít phụ thuộc vào các
loại máy cụ thể, vì cùng một chương trình có thể thực
hiện được ở nhiều loại máy khác nhau và gần với ngôn
ngữ tự nhiện hơn.
Chương trình trở nên ngắn gọn, dễ chỉnh sửa , cho
phép làm việc nhiều kiểu dữ liệu.
.Củng cố:
-Giáo viên nhắc lại một số kiến thức trong chương đặc biệt là chương trình dịch, cú pháp và ngữ nghĩa,
tên trong ngơn ngữ lập trình.
.Dặn dò bài tập về nhà:
-Học sinh về nhà xem lại các bài tập và chuẩn bị bài mới.
.Rút kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---CHƯƠNG II: ---CHƯƠNG TRÌNH ĐƠN GIẢN</b>
<b>BÀI 3: CẤU TRÚC CHƯƠNG TRÌNH</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>-Biết được cấu trúc chung và các thành phần của một chương trình viết trên ngơn ngữ bậc cao.</i>
<i>-Hiểu chương trình là sự mơ tả của thuật tốn bằng một ngơn ngữ lập trình .</i>
<i>-Biết cấu trúc của một chương trình đơn giản gồm cấu trúc chung và các thành phần.</i>
<i>-Nhận biết được các phần của một chương trình đơn giản.</i>
2. Kỹ năng:
<i>-Nhận thức chương trình viết trên mỗi ngơn ngữ lập trình bậc cao cần phải viết đúng cú pháp của ngơn </i>
<i>ngữ đó.</i>
<i>-Biết viết đúng các biểu thức đơn giản trong chương trình.</i>
3. Trọng tâm:
<i>-Các thành phần của chương trình.</i>
4. Tư duy – Thái độ:
<i>-Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều quy định nghiêm ngặt trong lập trình.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: thuyết trình kết hợp với vấn đáp gợi mở.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11 ,SGV.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà.</i>
<i>-Đọc trước SGK,thực tiễn.</i>
<i><b>Tiết :4</b></i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: khơng
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu cấu trúc chung của một chương trình.</i>
<b>GV: </b> Câu hỏi gợi ý: để viết một cái đơn hoặc
một bài tập làm văn thì phải viết những phần
nào?Vì sao chúng ta phải chia ra?
Yêu cầu học sinh nghiên cứu SGK và trả lời.
<b>HS: </b>Suy nghĩ trả lời:có 3 phần: mở đầu, phần
thân và phần kết luận.
Bởi vì : chia ra thì chúng ta dễ viết, dễ hiểu
được nội dung và kiểm tra.
<b>GV: </b>Hỏi:chương trình viết bằng ngơn ngữ lập
trình bậc cao có mấy phần?
<b>HS: </b>Trả lời: cấu trúc chương trình được diễn tả
gồm: [<phần khai báo>]
<phần thân>
Phần khai báo có thể có hoặc khơng , phần
thân chương trình nhất thiết phải có.
<b>1. Cấu trúc chung</b>
- Mỗi chương trình nói chung gồm 2 phần: phần khai
báo và phần thân chương trình.
<i>[<Phần khai báo>]</i>
<i><Phần thân></i>
<i> Hoạt động 2: Tìm hiểu các thành phần của chương trình.</i>
<b>GV: </b>Yêu cầu học sinh nghiên cứu SGK và trả
lời:
Hỏi:trong phần khai báo có những khai báo
nào?
<b>HS: </b>Tên chương trình , thư viện , hằng, biến
và chương trình con.
<b>GV: </b> Giúp học sinh hiểu phần này có thể có
hoặc khơng.u cầu học sinh lấy ví dụ khai
<b>HS: </b> Program chongiadung;
tên chương trình nên đặt xác với mục đích của
chương trình.
<b>GV: </b> Trình bày:mỗi ngơn ngữ lập trình có thư
viện cung cấp chương trình mẫu, để sử dụng
phải khai báo.Yêu cầu học sinh lấy ví dụ khai
báo thư viện trong ngơn ngữ Pascal.
<b>HS: </b> Uses tênthưviện;
Uses crt; cung cấp chương trình làm việc với
màn hình văn bản và bàn phím.
Và lệnh clrscr; xóa màn hình và đưa dấu
trỏ về đầu màn hình.
<b>GV: </b>Trình bày: khai báo hằng tạo thuận lợi để
chỉnh sửa giá trị chỉ một lần cho toàn chương
trình.u cầu lấy ví dụ khai báo hằng trong
<b>2. Các thành phần của chương trình</b>
<b>a.Phần khai báo</b>
- Có thể khai báo tên chương trình, hằng được đặt
tên, biến, thư viện, chương trình con,…
<b>Khai báo tên chương trình</b>
- 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.
<b>Ví duï :</b> Program Bai_1;
Program phuongtrinh;
<b>Khai báo thư viện:</b>
- Trong ngơn ngữ Pascal :
Uses <tên thư viện>;
- Trong ngôn ngữ C++ <sub>: </sub>
#include <Tên tệp thư viện>
<b>Ví dụ:</b> Trong Turbo Pascal : Uses CRT, GRAPH;
<b>Khai báo hằng :</b>
ngôn ngữ Pascal.
<b>HS: </b> Const kq = ‘thua’;
Const giadung =5.500;
Const no =60;
<b>GV: </b>Trình bày:biến phải đặt tên và khai báo
để chương trình dịch biết và lưu trữ xử lý.Yêu
cầu học sinh lấy ví dụ.
<b>HS: </b> Var tenbien :kieugiatri;
Để giải phương trình bậc nhất:ax+b=0 đối với
giá trị a,b cụ thể ta khai báo biến a,b:
Var a,b:integer;
<b>GV: </b>Yêu cầu học sinh cho biết cấu trúc chung
của phần thân chương trình trong ngơn ngữ
Pascal?( khai báo chương trình con tìm hiểu
sau)
<b>HS: </b> Begin
Dãy các lệnh;
End.
thường được đặt tên cho tiện khi sử dụng.
<b>Ví dụ: </b>Trong Pascal :
Const N = 100;
e = 2.7;
Trong C++ <sub>:</sub>
Const int N = 100;
Const float e = 2.7
<b>Khai báo biến :</b>
- Mọi biến sử dụng trong chương trình đều phải
khai báo để chưoyng trình dị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)
<b>Phần thân chương trình :</b>
- Thân chương trình thường là nơi chứa tồn bộ các
câu lệnh của chương trình hoặc lời gọi chương
trình con.
- Thân chương trình thường có cặp dấu hiệu bắt
đầu và kết thúc chương trình
<b>Ví dụ: </b> Trong ngơn gnữ Pascal
Begin
[<Các câu lệnh>]
End.
<i> Hoạt động 3: Tìm hiểu ví dụ chương trình đơn giản.</i>
giản.
Program giadung;
Uses crt;
Const giadung = 5.500;
Begin
Clrscr;
Writeln(‘ xin chao cac ban toi la computer
so:’,giadung);
Readln;
End.
<b>GV: </b>Hỏi:chỉ ra phần khai báo chương trình và
thân chương trình?
<b>HS: </b> Khai báo tên chương trình.
Khai báo thư viện.
Khai báo hằng.
Phần thân chương trình có lệnh xố màn hình
, lệnh đưa thơng tin ra màn hình.
<b>GV: </b> Đưa ra bảng có chương trình c++ đơn
#include < stdio.h>
Void main()
<b>3. Ví dụ chương trình đơn giản</b>
Xét hai chương trình đơn giản trong 2 ngơn ngữ khác
nhau sau đây :
<b>Chương trình 1 </b>: Trong ngơn ngữ Turbo Pascal
<b>Chương trình 2 :</b> Trong ngơn ngữ C++
{ printf(“ xin chao toi la computer”);
}
<b>GV: </b>Hỏi:phần khai báo chương trình và thân
chương trình lệnh Printf có ý nghóa gì?
<b>HS: </b> Lệnh Printf dùng để đưa thông tin ra
màn hình.
<b>GV: </b>Yêu cầu học sinh lấy ví dụ chương trình
khác?
<b>HS: </b> Begin writeln(‘ con thieu no’);
End.
.Cuûng cố:
-Giáo viên nhắc lại về các thành phần của chương trình.
.Dặn dò bài tập về nhà:
- Học sinh chuẩn bị bài mới.
.Ruùt kinh nghiệm bổ sung<b>:</b>
...
<b>---</b><b></b>
<b>---CHƯƠNG II: ---CHƯƠNG TRÌNH ĐƠN GIẢN</b>
<b>BÀI 4-5: MỘT SỐ KIỂU DỮ LIỆU CHUẨN-KHAI BÁO BIẾN </b>
I. MỤC TIÊU BAØI HỌC:
1. Kiến thức:
<i>- Biết được tên của một số kiểu dữ liễu chuẩn: nguyên, thực, kí tự, logic biết được giới hạn biểu diễn của </i>
<i>mỗi loại kiểu dữ liệu đó.</i>
<i>-Biết mọi biến dùng trong chương trình đều phải được khai báo tên và kiểu dữ liệu trước khi sử dụng.</i>
<i>-Biết cấu trúc chung của khai báo biến trong ngơn ngữ Pascal.</i>
2. Kỹ năng:
<i>-Phải xác định được kiểu cần khai báo của dữ liệu đơn giản.</i>
<i>-Biết cách để khai báo biến đúng.</i>
<i>-Sử dụng các kiểu dữ liệu và khai báo biến đúng để có thể viết được một chương trình.</i>
3. Trọng tâm:
<i>-Khai báo biến.</i>
4. Tư duy – Thái độ:
<i>-Thái độ nghiêm túc trong học tập. </i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: thuyết trình kết hợp với vấn đáp gợi mở.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11,giáo án.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà.</i>
<i>-Đọc trước SGK,thực tiễn.</i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Hãy viết một chương trình Pascal đơn giản có sử dụng thư viện làm việc với màn hình văn bản và bàn
phím, có khai báo hằng và câu lệnh đưa thơng báo ra màn hình?
<i><b>Tiết :5</b></i>
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu một số kiểu dữ liệu chuẩn.</i>
<b>GV: </b>Đặt vấn đề: toán học sử dụng những tập
hợp các số để thể hiện các phép tính tốn đó là
tập các số tự nhiên, tập số nguyên, tập số hữu
tỉ, tập số thực.
Trình bày: trong tin học , ngơn ngữ lập trình
Pascal để viết chương trình giải quyết bài tốn
cũng cần các tập có một giới hạn nhất định.
<b>HS: </b> Học sinh suy nghĩ để thấy các tập số trong
tốn có thể tương ứng với một kiểu dữ liệu
trong Pascal.
Các em có thể hiểu như sau:Vậy dữ liệu là
thơng tin mã hố trong máy tính, mỗi ngơn ngữ
lập trình thường cung cấp một số kiểu dữ liệu
chuẩn. Mỗi kiểu đặc trưng bởi tên kiểu, miền
giá trị, kích thước trong bộ nhớ, các phép toán,
các hàm thủ tục sử dụng chúng.
<b>GV: </b>Yêu cầu học sinh nghiên cứu SGK và trả
-Trong ngơn ngữ lập trình Pascal người ta sử
dụng bao nhiêu kiểu dữ liệu chuẩn?
-Có những kiểu nguyên nào thường dùng,
phạm vi biểu diễn của mỗi loại?
- Có những kiểu thực nào thường dùng phạm
vi biểu diễn của mỗi loại?
-Trình bày về kiểu logic và kiểu kí tự trong
ngơn ngữ lập trình Pascal?
<b>HS: </b>Trả lời.
- Sử dụng 4 kiểu chuẩn.
- Có các kiểu nguyên: Kiểu byte, Kiểu integer,
Kiểu word, Kiểu longint.
-Có kiểu thực: Kiểu real, Kiểu extended.
-Đặc điểm kiểu logic, kiểu kí tự.
<b>GV: </b>Lấy ví dụ để thấy kiểu kí tự sử dụng kí tự
trong bộ mã Ascii.
VD: @ có mã là 64, $ có mã là 36, & có mã
là 38, % có mã là 37.
<b>GV: </b>Giải thích tại sao phạm vi biểu diễn các
loại kiểu số khác nhau:
- kiểu nguyên có hạn chế về miền giá trị,
trong máy tính kiểu nguyên là hữu hạn, có thứ
tự nhưng tập số ngun là vơ hạn và có thứ tự
đếm được.
-kiểu thực miền giá trị mở rộng hơn so với
<b> Bài 4: Kiểu dữ liệu chuẩn.</b>
Kiểu nguyên, kiểu thực, kiểu kí tự, kiểu logic.
- Kiểu byte: 1byte, phạm vi: 0-255
Kieåu integer: 2byte, phaïm vi:-215<sub> – 2</sub>15<sub>-1</sub>
-32768…32767
Kiểu word: 2 byte, phạm vi:0 - 216<sub> -1</sub>
0…65535
Kiểu longint: 4 byte, phạm vi:-231<sub> – 2</sub>31<sub>-1</sub>
-2148473648…2148473647
-Kiểu real: 6 byte, phạm vi: 0 hoặc có giá trị tuyệt đối
nằm trong phạm vi từ : 10-38<sub> đến 10 </sub>38
Khoảng từ 2.9* 10-39<sub> đến 1.7 *10</sub>38<sub> đối với số +</sub>
Khoảng từ -1.7* 1038<sub> đến -2.9 * 10</sub>-39 <sub>số âm.</sub>
Một số thực được viết dưới dạng một số thập phân:
-1.5E3 = -1.5*103
Kiểu extended: 10 byte, phạm vi: 0 hoặc có giá trị
tuyệt đối nằm trong phạm vi từ : 10-4932<sub> đến 10</sub>4932
Khoảng từ: 3.4 * 10-4932<sub> đến 1.1 * 10</sub>4932<sub> </sub>
-Kiểu logic: chỉ có hai giá trị True ( đúng)hoặc False
( sai) đượ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.
kiểu nguyên, kiểu thực được lưu trữ và kết quả
tính tốn chỉ là gần đúng,cũng như số ngun
số thực trong máy tính là rời rạc và hữu
hạn.Phép toán chứa các toán hạn gồm kiểu
nguyên và thực thì cho kết quả kiểu thực.
<b>GV: </b>Hỏi: muốn tính tốn trên các giá trị: 2, -5,
9.04 ta dùng kiểu dữ liệu nào?
<b>HS: </b> Trả lời: kiểu số thực.
phân từ 0 đến 255.
<i> Hoạt động 2: Tìm hiểu khai báo biến đơn trong ngơn ngữ lập trình Pascal.</i>
<b>GV: </b>Nêu vấn đề:mọi biến dùng trong chương
trình đều cần khai báo tên và kiểu dữ liệu, tên
biến dùng để xác lập quan hệ giữa biến với địa
chỉ bộ nhớ nơi lưu trữ giá trị biến vì sự quan
<b>GV: </b>Hỏi: cấu trúc chung của việc khai báo
biến trong ngôn ngữ Pascal?
<b>HS: </b> Nghiên cứu SGK đồng thời nhớ về bài
trước.
<b>GV: </b>Yêu cầu học sinh lấy ví dụ về khai báo
biến.
<b>HS: </b> Lấy ví dụ.
<b>GV: </b>Trình bày: khai báo thường đặt sau khai
báo hằng: cấu trúc chương trình phần khai báo
như sau: Program <tênchươngtrình>;
Uses <têncácthưviên>;
Const <tênhằng> = <giátrịcủahằng>;
Var <danhsáchbiến> : <kiểudữliệu>;
<b>GV: </b>Chú ý khi khai báo biến.
<b>GV: </b>Hỏi:các em hãy đưa ra ví dụ biến sai với
qui định đặt tên, các biến trong danh sách biến
không phân cách bởi dấu phẩy, tên biến trùng
nhau, sử dụng biến chưa khai báo, các biến
<b>HS: </b> Suy nghó và đưa ra ví dụ:
Var x y z:real;
A,a:integer;
N,l:long int;
Trphu:integer,tphu:real;
<b>Baøi 5: Khai báo biến.</b>
Var < danh sách biến> :<kiểu dữ liệu>;
Trong danh sách biến các biến cách nhau bởi dấu
phẩy.
Kiểu dữ liệu biến có thể là kiểu dữ liệu chuẩn.
Sau từ khoá có thể khai báo nhiều danh sách biến.
*Ví dụ: var x,y: real; biến kiểu thực
a,b,c:char; biến kiểu kí tự
*Chú ý :
-Đặt tên biến gợi nhớ đến ý nghĩa của biến
VD: đặt tên biến biểu diễn điểm rớt và điểm đậu
Không nên đặt: dr,dd mà đặt là drot, ddau.
-Khơng đặt q ngắn hoặc dài vì dễ lỗi khi viết
nhiều lần tên biến.
VD: không nên đặt: latrieuphu, latiphu mà đặt là
trphu,tphu.
<b>GV: </b>Khai báo biến để cấp phát bộ nhớ cho
biến , đưa tên biến vào danh sách các đối
tượng cần quản lý, kiểu của biến giúp chương
trình dịch biết cách tổ chức dữ liệu, truy cập
giá trị của biến.Sau khai báo biến sẽ có vùng
nhớ dành cho biến đúng bằng kiểu của nó để
lưu trữ giá trị của biến.
<b>GV: </b>Nêu ví dụ: xét khai báo bieán:
Var a,b,c:word;
X:longint;
tno:integer;
thua:byte;
Cho biết bộ nhớ phải cấp phát bao nhiêu?
<b>HS: </b> Suy nghĩ trả lời:
Tổng bộ nhớ cần cấp phát:
a( 2byte),b( 2byte),c ( 2byte)
X( 4byte)
tno( 2byte)
<b>GV: </b>Trình bày: sau khi khai báo nếu vùng nhớ
dành cho biến chưa được xoá hết dẫn đến việc
ban đầu biến nhận một giá trị nào đó nên cần
gán giá trị đầu cho biến.Các biến đơn thì tại
một thời điểm chỉ chứa một giá trị.
*Ví dụ: xét khai báo biến:
Var a,b,c:word;
X:longint;
tno:integer;
thua:byte;
Cho biết bộ nhớ phải cấp phát bao nhiêu?
.Cuûng coá:
-Các kiểu dữ liệu chuẩn: kiểu số nguyên, kiểu số thực, kiểu kí tự, kiểu logic.
-Mọi biến trong chương trình đều phải được khai báo để cấp phát bộ nhớ cho biến.Cấu trúc chung của
khai báo biến: var <danh sách biến>: <tên kiểu dữ liệu>;
.Dặn dò bài tập về nhà:
-Làm bài tập 1,2,3,4,5 SGK trang 35.
-xem trước nội dung bài: phép tốn, biểu thức, lệnh gán.
.Rút kinh nghiệm bổ sung<b>:</b>
...
<b>---</b><b></b>
<b>---CHƯƠNG II: ---CHƯƠNG TRÌNH ĐƠN GIẢN</b>
<b>BÀI 6: PHÉP TỐN, BIỂU THỨC, CÂU LỆNH GÁN</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>- Biết được những khái niệm về phép toán,biểu thức số học, hàm số học chuẩn, biểu thức quan hệ.</i>
<i>-Nắm được các phép tốn thơng dụng trong ngơn ngữ lập trình.</i>
<i>-Học sinh phải hiểu được lệnh gán, hiểu được chức năng của lệnh gán, hiểu được cấu trúc của lệnh gán.</i>
2. Kỹ năng:
<i>- Viết được các biểu thức số học, biểu thức quan hệ và biểu thức logic với các phép tốn thơng dụng.</i>
<i><b>Tieát :6</b></i>
<i>-Sử dụng được các phép toán để xây dựng biểu thức.</i>
<i>-Viết được lệnh gán, sử dụng lệnh gán để viết chương trình. </i>
3. Trọng tâm:
<i>-Biểu thức, lệnh gán.</i>
4. Tư duy – Thái độ:
<i>- Giáo dục thái độ đúng trong cách nhìn nhận biểu thức số học và câu lệnh gán.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: thuyết trình kết hợp với vấn đáp gợi mở.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11,bảng con,SGV.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà.</i>
<i>-Đọc trước SGK,thực tiễn.</i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
- Câu hỏi: Trình bày một số kiểu dữ liệu chuẩn thường dùng cho các biến đơn trong pascal?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu một số phép tốn trong ngơn ngữ lập trình pascal.</i>
<b>GV: </b>Nêu vấn đề:bất kì ngơn ngữ lập trình nào
để mơ tả các thao tác trong một thuật tốn đều
cần phải xây dựng các phép toán.Các phép
toán trong ngơn ngữ lập trình thường thì có
những nét diễn đạt riêng nhưng thường sẽ ứng
với các phép toán ta thường thấy trong toán
học.
<b>HS: </b> Chú ý lắng nghe.
<b>GV: </b>Hỏi:em nào hãy kể một số phép toán đã
học trong toán học?
<b>HS: </b> Trả lời:cộng , trừ , nhân , chia, chia lấy
nguyên, lấy phần dư, so sánh, phủ định.
<b>GV: </b>Diễn giảng: đối với ngơn ngữ lập trình
pascal cũng xây dựng các phép toán nhưng
được diễn đạt bằng một cách riêng.
<b>GV: </b>Yêu cầu: học sinh đọc SGK và cho biết
các nhóm phép tốn trong ngơn ngữ Pascal.
<b>HS: </b> Ghi bài:
-Các phép tốn số học:+, -, *, div, mod.
i mod j= i- i div j *j
-Các phép toán quan hệ:<, <=, >,>=, <>
-Các phép toán logic:not, and, or.
<b>GV: </b>Hỏi:sau khi ta sử dụng một biểu thức có
sử dụng phép tốn quan hệ thì kiểu trả về là
kiểu gì?
<b>HS: </b> Trả lời: đó là kiểu logic.
* NNLT nào cũng sử dụng đến phép toán, câu lệnh
gán và biểu thức, các khái niệm này chỉ được xét
trong NNLT Pascal.
<b>1. Phép toán:</b>
NNLT Pascal sử dụng một số phép toán như sau:
+ Số nguyên: +,- , *, / , DIV, MOD.
+ Số thực: +,- , *, / ,
<b>GV: </b>Diễn giảng:đối với phép toán div và mod
ta chỉ sử dụng được cho kiểu dữ liệu số nguyên.
<i> Hoạt động 2: Tìm hiểu về biểu thức, hàm số học chuẩn trong ngơn ngữ Pascal.</i>
<b>GV: </b>Đặt vấn đề: trong tốn học chúng ta đã
gặp khái niệm về biểu thức.Vậy yếu tố cơ bản
xây dựng nên biểu thức toán học là gì?
<b>HS: </b> Trả lời: bao gồm hai phần tốn hạng và
tốn tử.
<b>GV: </b>Trong lập trình biểu thức số học là một
biểu thức có dạng tương tự như cách viết trong
toán học nhưng toán tử là phép tốn số học cịn
tốn hạng là gì?
<b>HS: </b> Nghiên cứu SGK và trả lời: toán hạng là
biến số, hằng số, các biến số, các hằng số liên
kết bởi tốn tử và dấu ngoặc trịn ( ).
<b>GV: </b>Hãy biểu diễn các biểu thức toán học sau
thành biểu thức trong ngơn ngữ lập trình:
9x3<sub>+2x</sub>2<sub>-x+3</sub>
<i>x</i>
<i>uv</i>
<i>v</i>
<i>v</i>
<i>u</i>
<i>uv</i>
1
<i>a</i><sub>3</sub><i>b</i><i>c</i>
<i>x<sub>x</sub></i><sub></sub>2<i><sub>y</sub>y</i>
<b>HS: </b> Lên bảng viết các biểu thức trong ngơn
ngữ lập trình:
9*x*x*x+2*x*x-x+3
u*v*(u+v)/(v-1)+u*v/x
(a+b+c)/3
(x+2*y)/(x-y)
<b>GV: </b>Hỏi:hãy nêu thứ tự thực hiện các phép
toán?
<b>HS: </b> Trả lời và ghi bài:
-Thực hiện các phép toán trong ngoặc trước.
-Dãy phép tốn khơng chứa ngoặc thì thực
hiện từ trái sang phải:nhân, chia, chia nguyên,
lấy phần dư thực hiện trước, cộng trừ thực hiện
sau.
<b>GV: </b>Nêu vấn đề:
Ngơn ngữ lập trình cung cấp thư viện chứa
chương trình tính giá trị hàm tốn học thường
dùng gọi là hàm số học chuẩn.
Ta đã biết một số hàm số học các em hãy
kể tên một số hàm đó?
<b>HS: </b> Trả lời:căn bậc hai, logarit, sin, cos.
<b>GV: </b>Hỏi:em nào có thể trình bày được cách
trình bày hàm số học chuẩn trong ngơn ngữ lập
trình?
<b>2. Biểu thức số học:</b>
- Là một dãy các phép toán +,- , *, / , DIV, MOD từ
hằng biến kiểu số và các hàm.
- Dùng dấu ( ) để qui định trình tự tính tốn.
VD: ( SGK- 25)
* Chú ý:
Thứ tự thực hiện các phép tốn:
+ Trong ngoặc trước, ngồi ngoặc sau.
+ Nhân, chia, chia nguyên, chia lấy dư trước, cộng, trừ
sau.
<b>3. Hàm số học chuẩn:</b>
Cách viết cho một số hàm số học chuẩn:
Tên hàm (đố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.
VD: (SGK- 26).
<b>HS: </b> Suy nghĩ và trả lời: đối số được đặt trong
cặp ngoặc tròn sau tên hàm, hàm chuẩn được
xem như biểu thức số học giống như một toán
hạng.
<b>GV: </b>Treo bảng chứa các hàm số học chuẩn
,yêu cầu học sinh lên bảng điền đầy đủ kiểu
của đối số và kiểu của kết quả.
<b>HS: </b> Nghiên cứu SGK và trả lời một số hàm
chuẩn, ghi bài: bình phương, căn bậc hai, giá trị
tuyệt đối, logarit tự nhiên, luỹ thừa số e, sin,
cos. Tương ứng trong ngơn ngữ lập trình:
sqr(x), sqrt(x), abs(x), ln(x), exp(x), sin(x),
cos(x).
<b>GV: </b>Hỏi:viết biểu thức sau sang biểu thức
trong ngơn ngữ lập trình?
<i>p</i>(<i>p</i> <i>a</i>)(<i>p</i> <i>b</i>)(<i>p</i> <i>c</i>) ,
( P=
2
<i>c</i>
<i>b</i>
<i>a</i>
)
<b>HS: </b> Sqrt(p*(p-a)*(p-b)*(p-c))
<b>GV: </b>Hỏi: khi hai biểu thức số học cùng kiểu
liên kết với nhau bởi phép toán quan hệ ta
được biểu thức mới biểu thức này gọi là gì?
<b>HS: </b> Trả lời: biểu thức này gọi là biểu thức
quan hệ.
<b>GV: </b>Hỏi: hãy lấy ví dụ về biểu thức quan hệ?
<b>HS: </b> Suy nghĩ trả lời:
no+6*laixuat*no>100
<b>GV: </b>Trình bày: nếu “no” có giá trị 90 và
“laixuat” có giá trị :1.5% thì biểu thức có giá
trị true.
<b>GV: </b>Hỏi:em nào cho biết cấu trúc chung của
biểu thức quan hệ, biểu thức quan hệ được thực
hiện theo trình tự nào?
<b>HS: </b> Trả lời và ghi bài: cấu trúc chung của
biểu thức quan hệ:
< biểu thức1> phép toán quan hệ <biểu thức2>.
Biểu thức quan hệ thực hiện theo trình tự:
- tính giá trị biểu thức.
- thực hiện phép tốn quan hệ.
<b>GV: </b>Trình bày:các biểu thức quan hệ liên kết
với nhau bởi phép toán logic.( and, or, not)
x y not x x and y x or y
true true false true true
true false false false true
false true true false true
false false true false false
<b>GV: </b>Hỏi:cho ví dụ về biểu thức logic và biểu
diễn trong ngôn ngữ lập trình.
<b>4. Biểu thức quan hệ:</b>
Cấu trúc chung:
<BT1> < phép tốn quan hệ > <BT2>
+ trong đó BT1 và BT2 phải cùng kiểu.
+ Kết quả của biểu thức quan hệ là TRUE hoặc
FALSE.
<b>VD:- 5 > 2</b>
<b>5. Biểu thức logic.</b>
- Biểu thức logic đơn gian là hằng hoặc biến logic.
<b>HS: </b> Cho ví dụ:
Xeáp :6.5<= kha<= 7.9
Hàng đổi hàng: 3<= bo hoặc 9<= trau
Biểu diễn trong ngôn ngữ lập trình:
(6.5<=kha) and (kha<=7.9)
(3<= bo) or (9<= trau)
<b>GV: </b>Hỏi:kết quả của biểu thức logic có kiểu
dữ liệu gì?
<b>HS: </b> Nhận thấy giá trị biểu thức logic là true
hoặc false( kiểu logic).
<i> Hoạt động 3: Tìm hiểu câu lệnh gán trong ngơn ngữ lập trình pascal.</i>
<b>GV: </b> Trình bày: chức năng của lệnh là đặt cho
biến có tên bên trái dấu “:=” có giá trị bằng
với giá trị biểu thức bên phải .
Cấu trúc lệnh gán: <tên biến>:=<biểu
thức>;
<b>GV: </b>Hỏi:vậy kiểu của biến và giá trị biểu thức
sẽ như thế nào?
<b>HS: </b> Trả lời:Kiểu của giá trị biểu thức phù hợp
với kiểu của biến.
<b>GV: </b> Giới thiệu ví dụ lệnh gán trong Pascal:
No:=4+6;
<b>GV: </b>Giải thích:lấy 4+6 đem kết quả đưa vào
no nên “no” sẽ bằng 10;
<b>GV: </b>Hỏi:vậy các em hãy nêu chức năng của
lệnh gán?
<b>HS: </b> Nghe ví dụ và suy nghĩ để trả lời.
Tính giá trị biểu thức rồi gán giá trị tính
được vào tên biến.
<b>GV: </b>Giới thiệu chương trình:nhập số giây bất
kì in ra giờ, phút, giây tương ứng.
Program doigiay;
Var h,m,s:integer;
Begin
Writeln(‘ giay can doi la:’);
S:=5000;
h:= s div 3600;
m:= (s mod 3600) div 60;
s:= s mod 60;
writeln(‘doi ta duoc:’,h,’:’, m,’:’,s);
end.
<b>HS: </b> Quan sát và tìm hiểu cơng việc của từng
câu lệnh đồng thời kết quả của chương trình.
<b>HS: </b> Lên bảng viết kết quả chương trình và
giải thích từng câu lệnh.
<b>6. Câu lệnh gán.</b>
- Lệnh gán là cấu trúc cơ bản của mọi NNLT, thường
dùng để gán gái trị cho biến.
Cấu trúc:
< tên- biến>:= <biểu thức>;
VD:
x:= (b*b-4* a*c);
i:= i+1;
j:= j-1;
.Cuûng coá:
- Nhắc lại cho học sinh : các phép tốn, biểu thức, lệnh gán trong ngơn ngữ lập trình pascal (về số học,
quan hệvà logic).
.Dặn dò bài tập về nhà:
- Học sinh chuẩn bị bài mới.
.Rút kinh nghiệm bổ sung<b>:</b>
...
<b>---</b><b></b>
<b>---CHƯƠNG II: ---CHƯƠNG TRÌNH ĐƠN GIẢN</b>
<b>BÀI 7: CÁC THỦ TỤC CHUẨN VÀO/RA ĐƠN GIẢN</b>
<b>BÀI 8: SOẠN THẢO, DỊCH, THỰC HIỆN VÀ HIỆU CHỈNH CHƯƠNG TRÌNH</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>- Biết được ý nghĩa các thủ tục vào/ra đơn giản với việc lập trình để nhập dữ liệu từ bàn phím hoặc đưa </i>
<i>dữ liệu ra màn hình.</i>
<i>-Biết cấu trúc chung của thủ tục vào ra trong ngôn ngữ Pascal.</i>
2. Kỹ năng:
<i>- Viết đúng lệnh vào/ra dữ liệu.</i>
<i>-Rèn luyện việc nhập đúng dữ liệu khi thực hiện chương trình.</i>
3. Trọng tâm:
<i>-Các thủ tục chuan vào/ra.</i>
4. Tư duy – Thái độ:
<i>-Nâng cao sự nhận thức cần phải thật cẩn thận trong việc nhập dữ liệu và cho ra dữ liệu trong vịêc học </i>
<i>lập trình pascal.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: thuyết trình kết hợp với vấn đáp gợi mở, hoạt động nhóm.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11, SGV.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà.</i>
<i>-Đọc trước SGK,thực tiễn.</i>
III. TIEÁN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Câu hỏi: Viết một số hàm số học chuẩn trong Pascal?
Cho biết chức năng lệnh gán, cấu trúc chung và lấy ví dụ?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu các thủ tục chuẩn vào/ra đơn giản.</i>
<b>GV: </b>Đặt vấn đề: khi cần giải một bài tốn ta
phải đưa dữ liệu vào để máy tính xử lý,ta có
thể sử dụng lệnh gán nhưng chỉ có thể sử dụng
với một dữ liệu cố định muốn chỉnh sửa lại
<b>1. Nhập dữ liệu vào từ bàn phím:</b>
<i><b>Tiết :7</b></i>
phải vơ chương trình để chỉnh.Để khắc phục
điều này người ta sử dụng thủ tục nhập dữ liệu.
<b>GV: </b>Yêu cầu học sinh nghiên cứu SGK và tìm
hiểu cấu trúc chung của thủ tục nhập dữ liệu
trong ngơn ngữ lập trình pascal.
<b>HS: </b> Suy nghĩ và trả lời, ghi bài:nhập dữ liệu từ
bàn phím được thực hiện bằng thủ tục chuẩn:
Read(<tên biến1>,…,<tên biến k>);
Readln(<tên biến 1>,…<tên biến k>);
( trừ biến kiểu boolean)
Câu lệnh readln; khơng có biến và dấu “ ()”
thì có tác dụng dừng chương trình và cho xem
<b>GV: </b>Nêu ví dụ:a,b,c là 3 biến số thực.Ta nhập
dữ liệu cho 3 biến trên như sau:
Readln(a,b,c); thì nhập: 1 2 -3.5
Trình bày:khi thực hiện câu lệnh
read/readln thì chương trình tạm dừng sau đó ta
gõ các giá trị cho các biến từ bàn phím từ trái
qua phải cách nhau bởi khoảng trắng sau khi
nhập đủ ta kết thúc bằng phím enter.
<b>GV: </b>Nêu vấn đề:sau khi xử lý xong kết quả
tìm được đang được lưu trong bộ nhớ. Để thấy
được kết quả trên màn hình ta phải sử dụng thủ
tục xuất dữ liệu.
<b>GV: </b>Yêu cầu học sinh nghiên cứu SGK và cho
biết cấu trúc chung của thủ tục xuất dữ liệu
trong ngơn ngữ lập trình pascal.
<b>HS: </b> Nghiên cứu và trả lơiø, ghi bài:
Cú pháp:write/writeln( <danh sách biểu
thức>);
Danh sách biểu thức cách nhau bởi dấu
phẩy.
Biểu thức:hằng ,biến,các biểu thức số học.
Câu lệnh Writeln thì sau khi xuất kết quả ra
màn hình con trỏ màn hình xuống đầu dịng kế
tiếp.
Lệnh writeln(); có thể khơng có tham số:viết
ra màn hình dịng chữ và dịch chuyển con trỏ
màn hình xuống đầu dòng kế tiếp ( chừa ra một
chỗ trống).
<b>GV: </b>Diễn giảng: Các biểu thức trong câu lệnh
writeln có thể in qui cách như sau:
Đối với kết quả thực:
<biểu thức>:<độ rộng>:<số chữ số thập phân>
Đối với các kết quả khác:
- Trong pascal ta dùng thủ tục chuẩn sau:
Read(danh sách biến vào);hoặc
Readln(danh sách biến vào);
- Ví dụ: Read(N); Readln(a,b,c);
- Chú ý:+ Khi nhập dữ liệu từ bàn phím READ,
READLN, có ý nghĩa như nhau, thường hay dùng
READLN hơn.
+ Khi nhập giá trị cho các biến thủ tục, những giá trị
này được gõ cách nhau một dấu cách hoặc phím
Enter.
<b>2. Đưa dữ liệu ra màn hình</b>
Trong pascal cung cấp thủ tục chuẩn:
<i>write(<Danh sách kết quả ra>); hoặc writeln(<Danh </i>
<i>sách kết quả ra>); </i>
trong đó <Danh sách kết quả ra>có thể tên biến
đơn, biểu thức, hằng.
Ví dụ: write(‘Nap so N:’); Readln(N);
<i>*Chú ý:</i>
- writeln sau khi đưa kết quả ra con trỏ xuống
dịng mới.
- Ngồi ra trong TPcó quy cách đưa thơng tin ra
nàm hình sau:
+ Kết quả thực:
: <Độ rộng>:<số chữ số thập phân>
+ Kết quả khác:
:<Độ rộng>
ví dụ: Write(N:3); Writeln(‘X=’,x:8:2);
<biểu thức>:<độ rộng>
<b>GV: </b>Nêu ví dụ: write(a:8);
Write(no:8:2);
8 vị trí kể từ vị trí con trỏ hiện thời được dành
để đưa ra giá trị a nên nếu a có giá trị nguyên
dương dưới 8 chữ số hoặc giá trị số âm dưới 7
chữ số thì những vị trí đầu sẽ được điền dấu
cách.8 vị trí được dành để đưa ra giá trị biến
“no” trong đó 2 vị trí để đưa ra phần thập
phân.Do phần nguyên và thập phân cách nhau
bởi dấu chấm nên còn lại 3 vị trí cho phần
ngun.
<b>HS: </b> Theo dõi giáo viên trình bày ví dụ.
<b>GV: </b>Hỏi: vậy khi các tham số trong lệnh
write() thuộc kiểu char và real thì quy định vị
trí như thế nào?
<b>HS: </b> Khi các tham số có kiểu kí tự việc qui
định vị trí giống kiểu nguyên.
Khi các tham số có kiểu thực thì phải quy
định hai loại vị trí :vị trí cho tồn bộ số thực và
vị trí cho phần thập phân.
<b>GV: </b>Đưa ra bảng con có chứa
<b>HS: </b> Theo dõi chương trình và cho biết thủ tục
nhập và xuất dữ liệu ra. Kết quả của việc chạy
chương trình đồng thời giải thích từng câu lệnh.
<b>3. Chương trình ví dụ:</b> chương trình tính diện tích của
một hình chữ nhật:
Program dtich;
Uses crt;
Var a,b,s:real;
Begin
Clrscr;
Write(‘nhap chieu rong cua hcn’);
Readln(a);
Write(‘nhap chieu dai cua hcn’);
Readln(b);
S:=a*b;
Writeln(‘dieân tich la:’,s);
Readln;
End.
<i> Hoạt động 2: Tìm hiểu việc soạn thảo , dịch, thực hiện và hiệu chỉnh chương trình.</i>
bằng ngơn ngữ lập trình pascal cần sử dụng
chương trình dịch, dịch chương trình soạn thảo
sang ngơn ngữ máy. Vì vậy hệ thống lập trình
cung cấp phần mềm phục vụ cho việc soạn
thảo, dịch, hiệu chỉnh chương trình.
-Để sử dụng được chương trình trên
turbopascal trên máy phải có các file chương
trình.Cụ thể:turbo.exe, turbo.tpl,
graph.tpu,egavga.bgi
<b>GV: </b> Yêu cầu học sinh theo dõi hình ảnh minh
<b> Một số thao tác thường dùng trong pascal:</b>
- Khi soạn thảo muốn xuống dòng nhấn Enter.
- Ghi file vào đĩa: F2
- Mở file đã có: F3
- Biên dịch chương trình: Alt +F9
- Chạy chương trình: Ctrl + F9
- Đóng cửa sổ chương trình: Alt + F3
hoạ màn hình pascal trong SGK.
<b>HS: </b> Tìm hiểu:dịng thứ hai của màn hình được
gọi là thanh bảng chọn, mỗi mục là một nhóm
cơng việc ta có thể lựa chọn. Dấu “ :” ở cuối
màn hình cho biết con trỏ đang ở dòng nào và
cột nào của màn hình soạn thảo.
<b>HS: </b> Tập soạn chương trình và dịch lỗi cú
pháp:
<b>GV: </b> Hỏi: hãy tìm các lỗi cú pháp trong chương
trình sau:
Program giadung
Var gia:integer;
Begin
Write(‘ ban hay nhap gia cho san
pham:’); readln( gia);
Gdung:= sqr(gia);
Write(‘ gia dung cua san
pham:’,gdung);
End.
Nhấn F2 lưu chương trình , sau đó dịch
chương trình:alt +F9, chạy chương trình: clr + F9
,đóng cửa số: alt+F3, thốt:alt+X.
<b>HS: </b> Theo dõi chương trình của giáo viên đưa
Thứ nhất: sai cú pháp cuối tên chương trình
phải có dấu chấm phẩy.
Thứ hai: trước khi sử dụng thì phải khai báo
biến gdung.
.Củng cố:
- Thủ tục, nhập dữ liệu: Read/readln(<tên biến1>,…,<tên biến k>);
-Thủ tục, xuất dữ liệu: Write/writeln(<danh sách dữ liệu>);
.Daën dò bài tập về nhà:
-Viết chương trình nhập vào bán kính hình tròn và tính chu vi , diện tích.
.Rút kinh nghiệm bổ sung<b>:</b>
...
<b>---</b><b></b>
<b>---CHƯƠNG II: ---CHƯƠNG TRÌNH ĐƠN GIẢN</b>
<b>BÀI TẬP VÀ THỰC HÀNH 1</b>
I. MỤC TIÊU BAØI HỌC:
1. Kiến thức:
<i>- Biết viết chương trình trên ngơn ngữ lập trình Pascal đơn giản.</i>
<i>-Làm quen và sử dụng dịch vụ chủ yếu của Pascal trong việc soạn thảo, lưu, dịch và thực hiện chương </i>
<i>trình. </i>
2. Kỹ năng:
<i>- Phải biết cách soạn chương trình, lưu vào máy, dịch lỗi cú pháp,thấy được lỗi thuật tốn và chạy được </i>
<i>chương trình. </i>
<i>-Biết cách phân tích và nhập dữ liệu khi chạy chương trình trong màn hình nhập liệu.</i>
3. Tư duy – Thái độ:
<i>-Xác định thái độ nghiêm túc,tự giác, tích cực trong q trình thực hành.</i>
<i>-Có thái độ tn thủ các giai đoạn xây dựng chương trình và chạy chương trình.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương tiện: SGK tin11,sách bài tập,phịng máy, chương trình soạn và kiểm tra trên máy. </i>
Hoïc sinh:
<i>-Phương tiện: SGK 11, đọc trước SGK , xem lại khái niệm,xem trước các chương trình đơn giản để soạn </i>
<i>thảo trên máy và chạy thử.</i>
III. TIẾN TRÌNH THỰC HAØNH:
<b>TIẾT 1</b>
.Kiểm tra bài cũ:khơng
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu chương trình đơn giản.</i>
<b>GV: </b> Diễn giảng: một chương trình có thể có
phần khai báo và phần thân.
Yêu cầu học sinh viết chương trình xuất ra
ngồi màn hình câu thông báo: chúng tôi là
học sinh lớp 11CB.
<b>HS: </b> Chú ý lắng nghe và viết chương trình.
1. Tìm hiểu và viết chương trình đưa ra màn hình câu
thông báo.
Program vd;
Ues crt;
Begin
Clrscr;
Writeln(' chung toi la hoc sinh lop 11CB.');
Readln
End.
<i> Hoạt động 2: Tìm hiểu một chương trình hồn chỉnh.</i>
<b>GV: </b> u cầu học sinh thực hiện các nhiệm
vuï:
-Soạn chương trình vào máy.
-Lưu chương trình.
-Dịch chương trình
-Chạy chương trình
-Sửa lại chương trình khơng dùng biến
delta.
<b>HS: </b> Mở chương trình soạn thảo của pascal và
gõ chương trình giải phương trình bậc hai.
Nhấn F2 tên pt.pas.
Nhaán alt+F9.
2. Tìm hiểu ,viết, chạy chương trình giải phương trình
bậc 2:
Program giaipt;
Uses crt;
Var a, b, c, delta:real;
Begin
Clrscr;
Write('nhap he so cua phuong trinh:');
Readln(a,b,c);
Delta:=b*b-4*a*c;
X1:=(-b –sqrt(delta))/(2*a);
X2:=-b/a-x1;
Write('x1=',x1:8:2,'x2=',x2:8:2);
<i><b>Tieát :8</b></i>
Nhaán clt+F9.
Nhập dữ liệu 1 -3 2 và quan sát kết
quả hiện thị trên màn hình x1=1.00 x2=2.00
Nhập dữ liệu 1 0 2 Chạy chương
trình thì thơng báo lỗi do căn bậc hai của một
số thì khơng âm tức là delta âm phương trình
vơ nghiệm.
X1:= (-b-sqrt(b*b-4*a*c))/(2*a);
X1:= (-b+sqrt(b*b-4*a*c))/(2*a);
Readln;
End.
.Củng cố:
-Dịch chương trình: Alt+F9
-Chạy chương trình: Ctr+F9
.Dặn dò bài tập về nhà:
-Xem lại bài thực hành, chuẩn bị bài thực hành tiếp.
.Rút kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---TIẾT 2</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: khơng
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động: Rèn luyện tư duy và cách thiết lập chương trình, soạn thảo dịch và chạy chương trình.</i>
<b>GV: </b> Nêu bài tập.
<b>GV: </b> Định hướng cho học sinh:
Dữ liệu vào: a
Dữ liệu ra:s
Caùch tính :cạnh của hình vuông là a căn hai.
<b>HS: </b> Chú ý lắng nghe.
<b>GV: </b> Yêu cầu học sinh viết chương trình.
<b>HS: </b> Thực hiện theo u cầu:
-Soạn chương trình trong ngơn ngữ pascal.
<b>GV: </b> Yêu cầu học sinh nhập dữ liệu và thông
báo kết quả.
<b>HS: </b> Chạy chương trình với các bộ dữ liệu
a=2,10.
Bài thực hành:
Chương trình tính diện tích hình được tơ đậm sau đây:
Program tinhdientich;
Uses crt;
Var a,s:real;
Begin
Clrscr;
Writeln('gia tri :');
Readln(a);
S:=(a* )2<sub>/2;</sub>
Write('dien tich la:',s);
Readln;
End.
<i><b>Tieát :9</b></i>
.Củng cố:
- Hồn thành chương trình cần phải:xác định dữ liệu vào ra, xác định thuật tốn,soạn chương trình,lưu
chương trình, dịch chương trình,thực hiện và hiệu chỉnh.
.Dặn dò bài tập về nhà:
- Viết chương trình nhập 3 cạnh của hình tam giác và tính diện tích của nó.
-Chuẩn bị bài tập trong SGK và sách bài tập.
.Rút kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---CHƯƠNG II: ---CHƯƠNG TRÌNH ĐƠN GIẢN</b>
<b>BÀI TẬP </b>
I. MỤC TIÊU BAØI HỌC:
1. Kiến thức:
<i>- Củng cố những nội dung đã được thực hành tại phịng máy.</i>
<i>-Ơn lại cách sử dụng biến, tại sao phải khai báo biến.</i>
2. Kỹ năng:
<i>-Xây dựng cách giải và biết viết chương trình từ một bài tốn.</i>
3. Tư duy – Thái độ:
<i>-Có thái độ học tốt trong việc xác định đúng phạm vi của biến để khai báo biến cũng như viết chương </i>
<i>trình từ bài tốn.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: thuyết trình kết hợp với vấn đáp gợi mở.</i>
<i>-Phương tiện: SGK tin11,sách bài tập, chương trình soạn trên bảng con. </i>
Hoïc sinh:
<i>-Phương tiện: SGK tin11, sách bài tập,đọc trước SGK , xem trước các bài tập.</i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Câu hỏi: em hãy viết một chương trình Pascal đơn giản nhập vào cạnh của hình vuông rồi xuất ra diện
tích của nó.
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu một số bài tập về khai báo biến.</i>
<b>GV: </b> Hỏi: giá trị của hằng có đặt tên và biến
như thế nào?
<b>HS: </b> Trả lời: Giá trị của ơ nhớ chứa hằng có
đặt tên là khơng đổi trong q trình chạy
chương trình cịn giá trị ô nhớ của biến thì thay
đổi trong từng thời điểm chạy chương trình.
<b>GV: </b> Hướng dẫn: biến trong chương trình là
cân thiết nhưng sử dụng ta phải khai báo.
Trong khai báo biến ta phải khai báo kiểu
của biến.
Câu 1:Hãy cho biết sự khác nhau giữa hằng có đặt tên
và biến?
Câu 2:Tại sao phải khai báo biến?
<i><b>Tiết :10</b></i>
<b>HS: </b> Khai báo biến nhằm mục đích:
-Xác định kiểu của biến, để tổ chức ô nhớ
tương ứng chứa giá trị của biến.
-Đưa tên biến vào danh sách đượ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.
<b>GV: </b> Yêu cầu học sinh lên bảng giải bài tập
3,4
<b>HS: </b> Giải bài tập.
<b>GV: </b> Khai báo b,d là đúng nhưng khai báo d tốt
hơn.
Biểu thức logic: (y<=1) and (y>=abs(x))
Câu 3:Biến p có thể nhận các giá trị
5,10,15,20,30,60,90 và biến x có thể nhận các giá trị
a) var x,p:byte; b)var p,x:real;
c)var p:real; d)var x:real;
x:byte; p:byte;
Câu 4:Hãy viết biểu thức logic cho kết quả True khi
toạ độ (x,y) trong vùng gạch chéo kể cả biên của hình
sau:
<i> Hoạt động 2: Xây dựng chương trình từ bài tốn.</i>
<b>GV: </b> Yêu cầu học sinh viết chương trình giải
bài tốn.
<b>HS: </b> Lên bảng xây dựng chương trình:
Xác định bài tốn:
Dữ liệu vào: h,g=9.8
Dữ liệu ra: v
Cách tính: v=
<b>HS: </b> Soạn chương trình.
<b>HS: </b> Soạn chương trình.
Lưu chương trình, dịch và chạy chương
1) Tính và đưa ra màn hình vận tốc v khi chạm đất của
một vật từ độ cao h, biết v= trong đó
g= 9,8 m/s2<sub>, h nhập vào từ bàn phím.</sub>
Program vantoc;
Const g=9.8;
Var v,h:real;
Begin
Write('nhap do cao cua vat h=');
Readln(h);
V:=sqrt(2*g*h);
Write('van toc khi cham dat la:v=',v:10:2);
Readln;
End.
2) Viết chương trình nhập vào độ dài 3 cạnh tam giác
tính chu vi và diện tích tam giác đó.
Program tamgiac;
Uses crt;
Var a,b,c,p,s:real;
Begin
Clrscr;
Writeln('nhap cac canh cua tam giac:');
Readln(a,b,c);
P:=a+b+c;
S:=sqrt(p/2*(p/2-a)*(p/2-b)*(p/2-c));
Write('chu vi hinh tam giac:',p);
Write('dien tich tam giac:',s);
Readln;
End.
.Củng cố:
-Khai báo biến.
.Dặn dò bài tập về nhà:
-Làm bài tập 5,6,9 SGK và bài sau:cho biết chương trình sau làm gì:
Program vd;
Var x,y:real;
Begin
realn(x); y:=(((x-1)*x+4)*x-3)*x+6; writeln('y=',y);
end.
-Đọc trước bài: cấu trúc rẽ nhánh.
.Rút kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---CHƯƠNG III: CẤU TRÚC RẼ NHÁNH VÀ LẶP</b>
<b>BÀI 10: CẤU TRÚC RẼ NHÁNH</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i> -Học sinh hiểu khái niệm rẽ nhánh, biết được cấu trúc chung của cấu trúc rẽ nhánh.</i>
<i>-Biết sử dụng các câu lệnh rẽ nhánh, sử dụng đúng hai dạng cấu trúc rẽ nhánh dạng thiếu và đủ. </i>
2. Kỹ năng:
<i>-Biết thể hiện đúng câu lệnh,viết chương trình giải một số bài tốn đơn giản áp dụng cấu trúc rẽ nhánh.</i>
<i>-Biết sử dụng câu lệnh ghép khi cần thiết. </i>
3. Trọng tâm:
<i>-Câu lệnh rẽ nhánh: If- Then.</i>
4. Tư duy – Thái độ:
<i>-Nhận thức được niềm ham thích lập trình trên máy tính để giải tốn.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: Nêu vấn đề, diễn giảng, học sinh giải quyết vấn đề.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11, SGV.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà.</i>
<i>-Đọc trước SGK,thực tiễn.</i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Câu hỏi: Viết một số hàm số học chuẩn trong Pascal?
Cho biết chức năng lệnh gán, cấu trúc chung và lấy ví dụ?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i><b>Tiết :11</b></i>
<i> Hoạt động 1: Tìm hiểu ý nghĩa của cấu trúc rẽ nhánh.</i>
<b>GV: </b> Giao nhiệm vụ cho học sinh.
<b>HS: </b> Thực hiện lần lượt các yêu cầu.
<b>GV: </b> Hỏi: làm thế nào để tìm số lớn nhất trong
2 số a,b.
<b>HS: </b> Trả lời: thực hiện so sánh:
Nếu a>b thì max=a.
Nếu a<b thì max=b.
<b>GV: </b> Hỏi: để thực hiện thuật toán trên trong
pascal em làm như thế nào?
<b>HS: </b> Trả lời: chưa thể làm được.
<b>GV: </b> Nêu ví dụ thực tiễn minh họa cho cấu
trúc rẽ nhánh: nếu chiều mai trời không mưa
thì T sẽ rủ N đi xem phim.
<b>HS: </b> Chú ý theo dõi ví dụ của giáo viên để tìm
ví dụ khác.
<b>GV: </b> Yêu cầu học sinh tìm thêm ví dụ.
<b>HS: </b> Nếu đội bóng Việt Nam thắng đội Thái
Lan thì sẽ đoạt cúp nếu khơng thì Việt Nam
giành huy chương bạc.
<b>GV: </b> Yêu cầu học sinh đưa ra cấu trúc chung
của cách diễn đạt đó.
<b>HS: </b> Ví dụ 1:Cấu trúc chung là:Nếu… thì
Ví dụ 2:Cấu trúc chung là:Nếu …thì…nếu
không…thì….
<b>GV: </b> Hỏi:hãy nêu các bước kết luận nghiệm
phương trình bậc nhất:ax+b=0.
<b>HS: </b> Theo dõi và thực hiện u cầu:
Nếu a<>0 thì phương trình có nghiệm x=-b/a.
Nếu a=0 và b<>0 thì phương trình vô nghiệm.
Nếu a=0 và b=0 thì kết luận phương trình vô số
nghiệm.
<b>GV: </b> Diễn giảng: 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
dạng thiếu và đủ. Mọi ngơn ngữ lập trình đều
có câu lệnh để mơ tả cấu trúc rẽ nhánh.
Cấu trúc tìm số lớn nhất trong 2 số
<b>1. Rẽ nhánh:</b>
* 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
* 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.
<i> Hoạt động 2: Tìm hiểu câu lệnh rẽ nhánh trong ngơn ngữ lập trình Pascal.</i>
<b>GV: </b> Diễn giảng: để mô tả cấu trúc rẽ nhánh
Pascal dùng câu lệnh.
<b>HS: </b> Quan sát và ghi chép.
<b>GV: </b> Giải thích q trình thực hiện câu lệnh.
<b>GV: </b> Yêu cầu học sinh viết câu lệnh so sánh
để tìm Max(a,b) bằng 2 cách.
<b>HS: </b>Lên bảng viết:
If a > b then max:= a;
If a < b then max:= b;
1)Caáu trúc IF dạng thiếu:
+ Cú pháp: If <điều kiện> then <lệnh>;
<điều kiện> là biểu thức logic.
+Chức năng: (thực hiện) pascal tính và kiểm tra
<điều kiện> , nếu <điều kiện> đúng thì thực hiện lệnh,
nếu <điều kiện> sai thì bỏ qua lệnh.
2)Cấu trúc IF dạng đủ:
+Cú pháp: If <điều kiện> then <lệnh 1> else <lệnh
2>;
<điều kiện> là biểu thức logic.
+Chức năng:Tính và kiểm tra <điều kiện>
Hoặc: If a > b then max:=a
Else max:=b;
<b>GV: </b> Với 2 dạng này dạng nào thuận tiện
hơn?
<b>HS: </b>Tùy trường hợp cụ thể.
<b>GV: </b> Yêu cầu:Hãy vẽ sơ đồ khối thể hiện câu
lệnh rẽ nhánh dạng thiếu và đủ?
<b>HS: </b>Lên bảng vẽ sơ đồ khối:
<b>GV: </b>Trình bày ví dụ: viết chương trình kiểm
tra số nguyên nhập vào có chia hết cho 3
không?
*Giải thuật:
+ Xác định bài tốn:
Đại lượng vào:số nguyên
Đại lượng ra: thông báo a chia hết cho 3 hoặc
khơng chia hết.
+ Trình bày thuật tốn:
Nhập một số nguyên a.-->Kiểm tra a có chia
hết cho 3 không.-->Thông báo.-->Kết thúc.
<b>HS: </b>Quan sát và ghi bài.
<b>GV: </b>Đối với cấu trúc IF dạng đủ thì câu lệnh
được thể hiện như thế nào với lệnh trên?
<b>HS: </b>Trả lời:If a mod 3 =0 then write(a,' chia
het cho 3')
else write(a,' khong chia het cho 3');
<b>GV: </b>Diễn giảng: Sau then, else ở cấu trúc trên
chỉ một lệnh, trên thực tế là nhiều lệnh.Để
ghép các lệnh thành một lệnh ta sử dụng câu
lệnh ghép.
<b>HS: </b>Ghi bài: Câu lệnh ghép:
Begin
Leänh 1;…
Leänh n;
end.
Thực hiện tuần tự lệnh 1 đến lệnh n.Khi lệnh
n kết thúc thì lệnh ghép kết thúc.
Nếu <điều kiện> đúng thì thực hiện <lệnh 1>,
nếu <điều kiện> sai thì thực hiện <lệnh 2>.
*Chương trình ví dụ:
kiểm tra số nguyên nhập vào có chia hết cho 3
Program kiemtra;
Var a:integer;
Begin
Write(' nhap so nguyen:');
Readln(a);
If a mod 3 =0 then write(a,' chia het cho 3');
Readln
End.
<b>* Câu lệnh ghép :</b>
<b>* </b>Trong ngơn ngữ Pascal câu lệnh ghép có dạng:
Begin
<các câu lệnh>;
End;
<b>GV: </b>Yêu cầu học sinh xác định bài toán.
<b>HS: </b>Xác định bài toán:
Input: 3 số a,b,c nhập từ bàn phím.
Output: diện tích tam giác hoặc thơng báo
khơng là 3 cạnh tam giác.
<b>GV: </b>Phân nhóm, yêu cầu học sinh thảo luận
nhóm viết chương trình. Ghi lời giải vào bảng
<b>3. Ví dụ:</b>
<b>VD1: </b>viết chương trình tính diện tích tam giác theo
cơng thức herong có a,b,c nhập vào từ bàn phím.
Program tamgiac;
Uses crt; Var a,b,c,p,s:real;
Begin
Write(' nhap so do 3 canh tam giac:');
Readln(a,b,c);
Điề
lệnh
Đi
ều
kie
än
phụ.
<b>HS: </b>Thảo luận nhóm và trình bày lời giải vào
bảng phụ, đại diện nhóm lên treo bảng và trình
bày, các nhóm khác nhận xét.
<b>GV: </b>Trình bày hướng giải bài tốn: vì độ dài 3
cạnh tam giác là dương nên phải sử dụng lệnh
rẽ nhánh để kiểm tra giá trị độ dài nhập vào,
đồng thời tổng hai cạnh tam giác phải lớn hơn
cạnh thứ ba. Tổng quát lời giải của học sinh và
cho điểm.
<b>GV: </b>Yêu cầu học sinh làm ví dụ 2: viết
chương trình giải phương trình bậc hai:
ax2<sub>+bx+c=0 (a<>0).</sub>
<b>HS: </b>Xác định bài tốn:
Input:hệ số a,b,c nhập từ bàn phím.
Output:đưa ra màn hình nghiệm hoặc thơng
bào phương trình vơ nghiệm.
<b>GV: </b>Trình bày:các bước chính để tìm nghiệm
phương trình bậc hai.
Tính delta
Nếu delta <0 thì kết luận phương trình vô
nghiệm.
Nếu delta>=0 thì kết luận phương trình có
nghiệm: x:=(-b+sqrt(delta))/2a);
x:=(-b-sqrt(delta))/2a);
Trong bài toán này cần hai lệnh rẽ nhánh
dạng thiếu, cũng có thể sử dụng một lệnh dạng
đủ.
<b>HS: </b>Viết chương trình.
If (a+b>c) and (b+c>a) and (a+c>b) then
Begin
P:=(a+b+c)/2; S:=sqrt(p*(p-a)*(p-b)*(p-c));
End;
Else write(' 3 so khong la 3 canh tam giac');
Readln
End.
<b>VD2: </b>viết chương trình giải phương trình bậc hai:
ax2<sub>+bx+c=0 (a<>0).</sub>
Program pt;
Uses crt;
Var a,b,c,d,x1,x2:real;
Begin
Clrscr;
Write('nhap he so phuong trinh:');
Readln(a,b,c);
D:=b*b-4*a*c;
If d<0 then writeln('phuong trinh vo nghiem');
Else begin
X1:=(-b-sqrt(d))/(2*a);
Readln;
End.
.Cuûng coá:
-Câu lệnh rẽ nhánh dạng đủ và thiếu trong Pascal.
-Sơ đồ thực hiện và chức năng của câu lệnh if.
.Daën dò bài tập về nhà:
-Viết chương trình nhập vào ba số và đưa ra giá trị lớn nhất.
.Rút kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---CHƯƠNG III: CẤU TRÚC RẼ NHÁNH VÀ LẶP</b>
<b>BÀI 11: CẤU TRÚC LẶP (3 TIẾT)</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>-Học sinh hiểu ý nghóa và tác dụng của cấu trúc lặp.</i>
<i>-Học sinh hiểu được cấu trúc lặp với số lần biết trước,cấu trúc chung của lệnh for trong ngơn ngữ lập </i>
<i>-Hiểu được cấu trúc lặp kiểm tra điều kiện trước, cấu trúc chung của lệnh while trong ngôn ngữ pascal, </i>
<i>sự thực hiện khi chương trình dịch gặp lệnh while. </i>
2. Kỹ năng:
<i>-Sử dụng lệnh for để lập trình giải quyết được một số bài toán đơn giản.</i>
<i>-Sử dụng đúng lệnh while.</i>
<i>-Phân biệt hai cấu trúc lặp for và while, sử dụng đúng lệnh lặp để lập trình giải quyết bài tốn.</i>
<i>-Mơ tả được thuật tốn của một số bài tốn đơn giản có sử dụng lệnh lặp. </i>
3. Trọng tâm:
<i>-Câu lệnh lặp: For và while.</i>
4. Tư duy – Thái độ:
<i>-Tìm hiểu cấu trúc lặp để viết chương trình được rút ngắn hơn cho thuật tốn .</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: Nêu vấn đề, diễn giảng, học sinh giải quyết vấn đề, hoạt động nhóm.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11, SGV.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà.</i>
<i>-Đọc trước SGK, thực tiễn.</i>
III. TIẾN TRÌNH BÀI HỌC:
<b>TIẾT 1</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
Kiểm tra 15 phuùt
Câu 1: Hãy nêu cú pháp và cách thực hiện của lệnh if dạng thiếu và đủ? (4đ)
Câu 2: Viết chương trình kiểm tra 3 số nhập từ bàn phím có phải là 3 cạnh tam giác khơng, tính diện
tích theo cơng thức hêrơng? (6đ)
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu ý nghĩa của cấu trúc lặp.</i>
<b>GV: </b>Đặt vấn đề bằng cách đưa ra bài toán:
Bài tốn 1: Tính tổng
s=1/a+1/(a+1)+...+1/(a+1000)
<b>HS: </b>Chú ý quan sát bài tốn.
<b>GV: </b>Hỏi: Có thể xác định cơng thức tốn để
tính tổng được khơng?
<b>HS: </b>Trả lời: rất khó xác định.
<b>GV: </b>Gợi ý: xem tổng s như là không gian chứa,
các số hạng như là vật chứa nước có dung tích
khác nhau, việc tính tổng giống như lần lượt đổ
nước vào không gian chứa.
<b> 1. Lặp:</b>
- Cấu trúc lặp mơ tả thao tác lặp.
- Có 2 loại thao tác lặp:
+ Lặp với số lần biết trước.
+ Lặp với số lần chưa biết trước.
Bài tốn 1: Tính tổng
s=1/a+1/(a+1)+...+1/(a+1000)
<i><b>Tieát :12</b></i>
<b>GV: </b>Hỏi: có bao nhiêu lần đổ nước?
Mỗi lần đổ bao nhiêu?
Thực hiện tất cả bao nhiêu lệnh?
<b>HS: </b>Có tất cả một ngàn lần.
Mỗi lần đổ:1/(a+i)
Thực hiện 1000 lệnh rất lâu.
<b>GV: </b>Bài tốn 2: Giả sử có số tiền X, gửi tiết
kiệm ngân hàng lãi 2% tháng. Hỏi sau một năm
không rút tiền lãi được số tiền là bao nhiêu?
<b>HS: </b>Chú ý quan sát bài toán.
<b>GV: </b>Hỏi: cách tính tiền gửi tiết kiệm sau motä
năm như thế nào?
<b>HS: </b>Sau một tháng có tiền lãi: 0,02*X,cộng
vào tiền gốc và tính lãi cho tháng tiếp theo đến
khi đủ 12 tháng thì thơi.
<b>GV: </b>Phải thực hiện bao nhiêu lần?
<b>HS: </b>Mười hai lần.
<b>GV: </b>Bài toán 3: Viết chương trình xuất 10 câu.
Diễn giảng: Đối với ba bài tốn trên
chương trình viết rất dài,dễ sai.Cần phải có một
cấu trúc để thực hiện cơng việc lặp trên.
<b>HS: </b>Tập trung theo dõi.
Bài tốn 2: Giả sử có số tiền X, gửi tiết kiệm ngân
hàng lãi 2% tháng. Hỏi sau một năm không rút tiền
lãi được số tiền là bao nhiêu?
Bài toán 3: Viết chương trình xuất 10 câu.
<i> Hoạt động 2: Tìm hiểu lệnh lặp for trong ngôn ngữ pascal.</i>
<b>GV: </b>Yêu cầu học sinh nhắc lại bài toán 1 đã
nghiên cứu tiết trước.Chia lớp làm hai nhóm,
yêu cầu nhóm 1 viết thuật tốn; nếu bắt đầu
tính tổng là số hạng cuối, nhóm 2 viết thuật
tốn.
<b>HS: </b>Viết thuật tốn:
Nhóm 1:B1:s 1/a, n 0;
B2: n n+1;
B3:nếu n>1000 thì xuất s và dừng.
B4: s s+1/ (a+n) và quay lại B2;
Nhóm 2: B1:s 1/a, n 1001;
B2: n n-1;
B3:nếu n<1 thì xuất s và dừng.
B4: s s+1/ (a+n) và quay lại B2;
<b>GV: </b>Hỏi: vậy cấu trúc chung của lệnh for là
gì?
<b>HS: </b>Nghiên cứu SGK và trả lời.
<b>GV: </b>Diễn giảng cách thực hiện lệnh For.
<b>GV: </b>Khi dùng lệnh FOR cần chú ý.
<b>2. Lệnh lặp biết trứơc số lần lặp: (lệnh FOR)</b>
<b>a. Cú pháp:</b> C1(dạng tiến):
FOR <biến đếm> := <giatrị 1> TO <giatrị 2> DO
<lệnh>;
<giatrò 1> <= <giatrò 2>
C2(dạng lùi):
FOR <biến đếm> := <giatrị 1> DOWNTO <giatrị
2> DO <lệnh>;
<giatrò 1> >= <giatrò 2>
<b>b. Chức năng:</b>
Biến đếm lần lượt nhận giá trị từ giátrị 1 đến giátrị
2.Sau mỗi lần sẽ thực hiện lệnh sau DO.
<b>c. Chú ý:</b> Dạng tiến sau mỗi lần biến đếm tăng một.
Dạng lùi thì giảm một.
Giátrị 1 = giatrị 2 thì câu lệnh sau DO thực
hiện một lần.
Số lần thực hiện lệnh: trị tuyệt đối của
<giatrị 1> - <giatrị 2> + 1
<b>GV: </b> GV treo bảng phụ 1 về sơ đồ thuật tốn
lặp
Cấu trúc lệnh For
Sơ đồ khối của câu lệnh: dạng tiến
S
Đ
Dạng lùi:
S
Đ
.Củng cố:
-Cú pháp lệnh For.
.Dặn dò bài tập về nhà:
-Chuẩn bị bài mới.
.Rút kinh nghiệm boå sung:
...
<b>---</b><b></b>
<b>---TIẾT 2</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Câu hỏi: cú pháp câu lệnh For và cách thực hiện lệnh?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động: Rèn luyện vận dụng lệnh FOR qua một số bài tập.</i>
<b>GV: </b>Treo bảng chương trình tính tổng số từ 1
1000.
<b>HS: </b>Quan sát bảng phụ.
*Bài tập 1: viết chương trình in ra 1000 số nguyên từ 1
đến 1000.
Program bt1;
Biếnđếm:=giatrị 1
Lệnh, Biếnđếm:=biếnđếm+1
Biếnđế
m<=gia
tri 2
Biếnđếm:=giatrị 2
Lệnh, Biếnđếm:=biếnđếm-1
Biếnđế
m>=gia
tri 1
<i><b>Tieát :13</b></i>
<b>GV: </b>Yêu cầu học sinh thực hiện.
Mục tiêu: xác định việc chính cần làm:
Xác định giá trị đầu, giá trị cuối.
Xác định lệnh cần lặp.
<b>HS: </b>trả lời:
-Giá trị đầu là 1, giá trị cuối là 1000
Lệnh xuất ra màn hình: write(i, ‘ ‘);
<b>GV: </b>Yêu cầu viết chương trình.
<b>HS: </b>Thực hiện viết chương trình.
<b>GV: </b>Sửa bài của học sinh và đúc kết chương
trình.
<b>GV: </b>Bài tập 2: Viết chương trình tính toång:
S=1/a+1/(a+1)+…+1/(a+n)
<b>GV: </b>Yêu cầu học sinh định hướng vấn đề
chính.
<b>HS: </b>Giá trị đầu là 1, giá trị cuối là 1000
Lệnh xuất ra màn hình: s:=s+1/(a+n);
<b>GV: </b>Chia lớp làm 2 nhóm u cầu viết chương
trình.
<b>HS: </b> Thực hiện viết chương trình.
<b>GV: </b>Hỏi: Qua 2 ví dụ trên ta nhận xét gì về
biến đếm?
<b>HS: </b> Được điều chỉnh tự động.
Var i: integer;
Begin
Write(‘ chuong trinh in 1000 so nguyen’);
FOR i:=1 TO 1000 DO write(i, ‘ ‘);
Readln
End.
*Bài tập 2: Viết chương trình tính tổng:
S=1/a+1/(a+1)+…+1/(a+n)
Program bt2;
Var s: real;
a,n: integer;
Begin
Write(‘ nhap gia tri a:’); readln(a);
FOR n:=1 TO 1000 DO s:=s+1/(a+n);
Writeln(‘tong s la:’,s:8:4);
Readln
End.
.Củng cố:
-Cấu trúc lệnh For.
.Dặn dò bài tập về nhà:
-Giải bài tập 5a,6 SGK trang 51.
-Viết chương trình tạo bảng cửu chương.
.Rút kinh nghiệm bổ sung<b>:</b>
...
<b>BẢNG PHỤ:</b>
<i>Chương trình tính tổng số ngun từ 1 đến 1000.</i>
*Dùng lệnh For tiến:Program tong;
Var i,S: integer;
Begin
Write (‘ Tong cac so nguyen tu 1 den 1000 la:’);
For i:= 1 to 1000 do S: = S + i;
Writeln(S);
Readln;
End.
*Dùng lệnh For lùi:Program tong;
Var i,S: integer;
Begin
Write (‘ Tong cac so nguyen tu 1 den 1000 la:’);
S:=0;
For i:= 1000 downto 1 do S: = S + i;
Writeln(S);
Readln;
End.
<b>---</b><b></b>
<b>---TIẾT 3</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: -Câu hỏi:Viết chương trình in ra màn hình 50 số nguyên, từ 1 đến 50?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu lệnh lặp While (chưa biết trước số lần lặp) trong ngôn ngữ pascal.</i>
<b>GV: </b>Yêu cầu học sinh nghiên cứu SGK và cho
biết cấu trúc chung của lệnh lặp While.
<b>HS: </b> Chú ý theo dõi làm theo yêu cầu giáo
viên.
<b>GV: </b>Cú pháp, chức năng lệnh while.
<b>GV: </b>Nêu chú ý.
<b>GV: </b>Hỏi: sự khác nhau trong lệnh cần lặp của
For vaø While là gì?
<b>HS: </b> Suy nghĩ và trả lời: trong câu lệnh while
phải có tăng biến chỉ số.
<b>GV: </b>Hỏi: Dựa vào sơ đồ khối hãy xác định máy
sẽ thực hiện tính <điều kiện> trước hay thực
hiện <lệnh cần lặp> trước?
<b>HS: </b> Tính biểu thức điều kiện trước, thực hiện
lệnh cần lặp sau.
<b>3. Lệnh lặp với số lần lặp biết trứơc: (lệnh </b>
<b>WHILE)</b>
a) Cú pháp: while <điều kiện> do <lệnh>;
<điều kiện> là biểu thức quan hệ hoặc biểu thức
logic.
<lệnh> là lệnh đơn hoặc lệnh ghép.
b) Chức năng:Bước 1:tính và kiểm tra điều kiện.
Bước 2:Nếu điều kiện sai thì kết thúc
câu lệnh.
Nếu điều kiện đúng thì thực hiện
lệnh và quay lại bước 1.
c)Chú ý: Nếu ngay từ đầu điều kiện sai thì câu lệnh
sau Do không thực hiện, điều kiện đúng thì
câu lệnh sau Do thực hiện vô hạn.
<i> Hoạt động 2: Rèn luyện vận dụng lệnh While qua một số bài tập. </i>
<b>GV: </b>Chia học sinh làm hai nhóm, yêu cầu
nhóm 1 viết thuật tốn, tiếp theo nhóm 2 viết
chương trình.
<b>HS: </b> Theo dõi .
<b>HS: </b> Làm theo yêu cầu giáo viên:
*Viết thuật toán:
Bước 1:gán i:=1,s:=0;
Bước 2:nếu s>10 thì xuất giá trị của s;
*Bài tập 1: viết chương trình tính s=1+1/2+…+1/n, đến
khi s>10 thì dừng.
Điều
kiện
Câu lệnh
<i><b>Tiết :14</b></i>
Bước 3: gán s:=s+1/i; i:=i+1; và quay lại bước 2.
*Viết chương trình:
Program bt;
Var s:real; I:integer;
Begin
I:=1; s;=0;
While s<=10 do begin
S:=s+1/I; I:=I+1;
End;
Writeln('tong s la:',s:8:4);
End.
<b>GV: </b>Diễn giảng: Muốn biết số lần lặp của lệnh
ta in kết quả của i.
Muốn cộng vào biến s là 1 đại
lượng là x ta dùng s:=s+x;
<b>HS: </b> Chú ý lắng nghe.
<b>GV: </b>Yêu cầu học sinh.
-Định hướng vấn đề chính:
+Xác định điều kiện để lặp.
+Xác định các lệnh cần lặp.
-Nhận xét chương trình.
<b>HS: </b> Định hướng:
Điều kiện:s<s1
s:=s+0.005 *s; để tính tiền.
I:=i+1; để tính số tháng.
<b>HS: </b> Làm việc nhóm để viết chương trình hồn
chỉnh.
Program bt2;
Const ls=0.005;
Var s,s1:real;
i:integer;
Begin
Writeln('nhap so tien da gui:');readln(s);
Writeln('nhap so tien muon nhan:');
readln(s1);
while s>= s1 do begin
s:=s+0.005*s; i:=i+1;
end;
readln
end.
<b>GV: </b>Chia nhóm học sinh viết chương trình.
<b>HS: </b> Làm việc nhóm để viết chương trình hồn
chỉnh.
Program uocchung;
Var a,b,m,n,ucln:integer;
Writeln('nhap hai so a va b:'); readln(a,b);
if a=0 then ucln:=b
*Bài tập 2: một người có số tiền là s, gửi tiết kiệm
0.5% tháng. Hỏi sau bao nhiêu tháng thì có số tiền lớn
hơn s1?
*Bài tập 3:viết chương trình nhập vào hai số nguyên
dương a và b. Tìm ước số chung lớn nhất của hai số
đó?
else begin
m:=a;
n:=b;
r:=n mod m;
while r<>0 do begin
n:=m;
m:=r;
r:=n mod m;
end;
writeln('ucln cua', a,' va',b,' la:',ucln);
readln
end.
.Củng cố:
-Củng cố nội dung đã học:cấu trúc lệnh lặp while và cách thực hiện.
.Dặn dò bài tập về nhà:
-Giải bài tập SGK .
.Rút kinh nghiệm bổ sung<b>:</b>
...
<b>---</b><b></b>
<b>---CHƯƠNG III: CẤU TRÚC RẼ NHÁNH VAØ LẶP</b>
<b>BAØI TẬP VAØ THỰC HAØNH 2 (2 TIẾT)</b>
I. MỤC TIÊU BAØI HỌC:
1. Kiến thức:
<i> -Học sinh củng cố cấu trúc và thực hiện của cấu trúc rẽ nhánh, lặp.</i>
2. Kỹ năng:
<i>-Sử dụng lệnh if,while,for để rèn luyện kĩ năng lập trình giải quyết được một số bài tốn đơn giản liên </i>
<i>quan.</i>
3. Tư duy – Thái độ:
<i>-Tích cực, chủ động trong thực hành .</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương tiện: SGK tin11, phịng máy, chương trình soạn và kiểm tra trên máy, máy chiếu. </i>
Hoïc sinh:
<i>-Phương tiện: SGK 11, đọc trước SGK , xem lại khái niệm,xem trước các chương trình đơn giản để soạn </i>
<i>thảo trên máy và chạy thử.</i>
III. TIẾN TRÌNH THỰC HÀNH:
<b>TIẾT 1</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:<i>không</i>
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i><b>Tiết :15</b></i>
<i> Hoạt động 1: Làm quen với chương trình sử dụng cấu trúc rẽ nhánh và các công cụ hiệu chỉnh chương</i>
trình.
<b>GV: </b>Yêu cầu học sinh tìm hiểu.
<b>HS: </b> Theo dõi SGK.
<b>GV: </b>Yêu cầu học sinh nêu khái niệm về bộ
số pitago.
<b>HS: </b> Theo dõi và nêu khái niệm bộ số pitago:
tổng bình phương của hai số bằng bình phương
của số còn lại.
<b>GV: </b>Hỏi: Để kiểm tra 3 số nhập có là bộ số
pitago không ta kiểm tra như thế nào?
<b>HS: </b> Ta kiểm tra: a2<sub>=b</sub>2<sub>+c</sub>2<sub>, b</sub>2<sub>=a</sub>2<sub>+c</sub>2<sub>, c</sub>2<sub>=a</sub>2<sub>+b</sub>2
Ví dụ bộ số pitago: a=3, b=4, c=5.
<b>GV: </b>Yêu cầu học sinh soạn chương trình vào
máy.
<b>HS: </b> Gõ chương trình và chạy máy:
<b>GV: </b>u cầu học sinh lưu chương trình với
tên pytago.pas ( F2 và gõ tên).
<b>GV: </b>u cầu học sinh thực hiện từng lệnh
của chương trình. (F7 và nhập giá trị
a=3,b=4,c=5).
<b>GV: </b>u cầu học sinh tự tìm thêm bộ dữ liệu
là bộ số pitago và so sánh.
<b>HS: </b> Làm theo yêu cầu giáo viên.
Tập viết và chạy chương trình bài tốn: nhập từ bàn
phím 3 số nguyên dương a,b,c và kiểm tra xem chúng
có là bộ số Pitago hay khơng?
Program ct;
Uses crt;
Var a,b,c:integer;
a2,b2,c2:longint;
begin
clrscr;
write('a,b,c:');
readln(a,b,c);
If (a2=b2+c2) or (b2=a2+c2) or (c2=a2+b2) then
writeln(' 3 so da nhap la bo so pitago')
else writeln(' 3 so khong la bo so pitago');
readln
end.
.Củng cố:
-Dịch chương trình: Alt+F9
-Chạy chương trình: Ctr+F9
.Dặn dò bài tập về nhà:
-Xem lại bài thực hành, chuẩn bị bài thực hành tiếp.
.Ruùt kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---TIẾT 2</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: Thông qua thực hành kiểm tra 1 số học sinh.
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VAØ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động: Làm quen với chương trình sử dụng cấu trúc lặp và các công cụ hiệu chỉnh chương trình.</i>
<b>GV: </b>Chiếu đề bài lên.
<b>HS: </b> Theo dõi.
<b>GV: </b>u cầu học sinh tìm hiểu và soạn chương
1. Tập viết chương trình, luyện tập với chương trình có
cấu trúc lặp: nhập vào một số ngun dương n>1 .Cho
biết từ 1 đến n có bao nhiêu số chia hết cho 7.
<i><b>Tiết :16</b></i>
trình rồi chạy trên máy.
<b>HS: </b> Soạn chương trình trên máy.
<b>GV: </b>u cầu học sinh lưu chương trình với tên
dem.pas ( F2 và gõ tên).
<b>GV: </b>Chiếu đề bài.
<b>GV: </b>Hỏi: hãy xác định input và output.
<b>HS: </b> Viết ra nháp:
Input: giá trị a,b nguyên
Output: ước chung của a và b.
<b>GV: </b>Yêu cầu học sinh xem lại thuật toán đã
học
<b>GV: </b>Yêu cầu học sinh viết chương trình.
<b>HS: </b> Soạn chương trình.
Program bai1;
Var n,I,dem:integer;
Begin
I:=1;
Readln(n);
Dem:=0;
While(n>=i) do begin
If I mod 7 =0 then dem:=dem+1;
I:=i+1;
End;
Writeln(dem);
End.
2. Tìm hiểu chương trình tìm và in UCLN của hai số
nguyên a,b(>=0).
Program ucln;
Var a,b,m,n,r,uc:integer;
Begin
Readln(a,b);
If a=0 then uc:=b Else begin
M:=a;
N:=b;
R:=n mod m;
While r<>0 do begin
N:=m;
M:=r;
R:= n mod m;
End;
End;
End.
.Củng cố:
- Các bước hồn chỉnh chương trình.
+Phân tích bài tốn. +Soạn chương trình. +Lưu chương trình.
+Biên dịch. +Thực hiện và hiệu chỉnh chương trình.
.Dặn dò bài tập về nhà:
- Làm bài tập trong SGK.
.Rút kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---CHƯƠNG III: CẤU TRÚC RẼ NHÁNH VÀ LẶP</b>
<b>BÀI TẬP</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>- Củng cố những nội dung đã được thực hành tại phòng máy.</i>
<i>-Ôn lại các câu lệnh rẽ nhánh, lặp biết trước số lần lặp FOR và chưa biết trước số lần lặp</i>
<i><b>Tiết :17</b></i>
2. Kỹ năng:
<i>-Xây dựng cách giải và biết viết chương trình liên quan đến câu lậnh rẽ nhánh và lặp.</i>
3. Tư duy – Thái độ:
<i>-Có thái độ học tốt trong việc xác định đúng kiểu lệnh cũng như viết chương trình từ bài tốn.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: thuyết trình kết hợp với vấn đáp gợi mở.</i>
<i>-Phương tiện: SGK tin11,sách bài tập, chương trình soạn trên bảng con. </i>
Học sinh:
<i>-Phương tiện: SGK tin11, sách bài tập,đọc trước SGK , xem trước các bài tập.</i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: Không
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động: Tìm hiểu một số bài tốn liên quan đến câu lệnh lặp.</i>
<b>GV: </b>Ghi bảng: chương trình bài tập.
Xây dựng chương trình giải bài tốn giáo viên
đưa ra:
<b>GV: </b>Định hướng các vấn đề chính:
Xác định giá trị đầu, giá trị cuối: giá trị đầu
là 1, giá trị cuối là 35.
Xaùc định các lệnh cần lặp: câu lệnh IF , xuất
ra màn hình số gà và số chó.
<b>GV: </b>Treo bảng. u cầu học sinh xây dựng
chương trình.
<b>HS: </b> Xây dựng chương trình:
Định hướng vấn đề chính:
Xác định điều kiện để tiếp tục lặp:
n>=I;
Xác định các lệnh cần lặp: câu leänh IF,
I:=i+1;
<b>GV: </b>Treo bảng có chứa chương trình ví dụ để
sửa lỗi cho học sinh.
*Bài 1 : Viết chương trình vừa gà, vừa chó, bó lại cho
trịn 36 con, 100 chân chẵn.Hỏi mấy gà, chó.
Program ga,cho;
Var x,y:integer;
Begin
For x:=1 to 35 do
For y:=1 to 35 do
If (x+y=35) and (2*x+4*y=100)
Then write('so ga:',x,' so cho',y);
End.
*Bài 2 : Viết chương trình tính tổng số lẻ từ m đến n
được nhập:
Program tong;
Var m,n,s,i:integer;
Begin
Readln(m,n);
S:=0;
I:=m;
While n>=I do begin
If (I mod 2<>0) then s:=s+I;
I:=i+1;
End;
End.
.Củng cố:
-Cấu trúc lệnh lặp while, for và cách thực hiện.
.Dặn dò bài tập về nhà:
- Dặn dò giải thêm bài tập SGK .
.Rút kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---CHƯƠNG III: CẤU TRÚC RẼ NHÁNH VÀ LẶP</b>
<b>A) </b><i><b>M</b><b> </b><b>Ụ</b><b> C ĐÍCH CẦN ĐÁNH GIÁ:</b></i>
-Giúp học sinh hệ thống hoá kiến thức đã học.
-Rèn luyện kĩ năng viết chương trình trong ngơn ngữ lập trình Pascal để giải quyết bài tốn.
<b>B</b><i><b>) M</b><b> </b><b> C </b><b>Ụ</b><b> </b><b>Đ</b><b> ÍCH YÊU CẦU C</b><b> A </b><b>Ủ</b><b> </b><b>ĐỀ</b><b> : </b></i>
-Bám sát kiến thức SGK những kiến thức mà học sinh đã được học.
-Phù hợp với học sinh , học sinh trung bình có thể làm bằng hoặc trên điểm trung bình.
C) MA TR<i><b> N </b><b>Ậ</b><b> </b><b>ĐỀ</b><b> : </b></i>
Mức độ
Chủ đề
NHẬN BIẾT THÔNG
HIỂU
VẬN
DỤNG
T ỔNG
câu Điểm
Tự
luận
Trắc
nghiệm
Tự
luận
Trắc
nghiệm
Tự
luận
Trắc
nghiệm
Tự
luận
Trắc
nghiệm
Tên,Biến,hằng, kiểu
dữ liệu chuẩn,cấu
trúc chương trình.
Câu
6,2,17 Câu 16,<sub>20</sub> Câu 1,19 7 1.75
Phép tốn, biểu thức,
câu lệnh gán.Thủ tục
chuẩn vào/ra.
Câu
3,8,18
Câu
4,9,10,
15
Câu
5,12,13 10 2.5
Cấu trúc rẽ nhánh và
lặp. Câu 7 Câu 2 Câu 11 Câu 1 Caâu 14 2 3 5.75
caâu 7 1 7 1 6 2 20
<b>ĐỀ KIỂM TRA 1 TIẾT- TIN 11(HKI,2008-2009)- THỜI GIAN 45 PHÚT</b>
<b>I) </b><i><b>TRẮC NGHIỆM:</b></i><b> (5Đ)</b>
1). Biến X có thể nhận các giá trị: 0;1;3;5;7;9 và biến Y có thể nhận các giá trị: 0.5; 1.5; 2.5; 3.5; 4.5. Khai báo biến nào sau đây là
đúng?
A). Var X:Real; Y:Byte; B). Var X,Y:Byte; C). Var X,Y:Real; D). Var X:Byte; Y:Real;
2). Tên nào đặt sai quy định của Pascal:
A). Giai_PT_Bac_2 B). Noi Sinh C). PN1992 D). NgayThangNamSinh
3). Cho câu lệnh Writeln(x:7:3) thì độ rộng của biểu diễn là:
A). 4 B). 7 C). 3 D). 10
4). Cho biến x là kiểu thực và gán x:=12.41; Lệnh nào để in lên màn hình như sau: x=12.41
A). Writeln(x); B). Writeln('x=,x:5:2'); C). Writeln('x=',x:5:2); D). Writeln(x:5);
5). Biểu thức 25 div 3+5/2*3 có giá trị là:
A). 8.0 B). 15.5 C). 15.0 D). 9.5
6). Khai báo nào đúng:
A). Var x,y:integer; B). Var x,y = integer; C). Var x,y of integer; D). Var x,y:=integer;
7). Lệnh nào sau đây in ra màn hình số lớn nhất giữa x và y:
A). If x>y then write(x) else write(y); B). If x=<y then write(x) else write(y);
C). If x>y then readln(x); D). If x>y then write(x);
8). Để biên dịch chương trình trong Pascal ta dùng tổ hợp phím:
A). ALT+F9 B). CTR+F7 C). ALT+F7 D). CTR+F9
9). Lệnh nào sau đây dùng để nhập dữ liệu cho biến x:
A). Readln('x'); B). Writeln(x); C). Readln(x); D). Write('x');
10). Để tính giá trị 2
<i>b</i>
<i>x</i>
<i>a</i>
, chọn cách viết nào:
A). x:=-b/2a; B). 2
<i>b</i>
<i>x</i>
<i>a</i>
C). x:=-b/2*a; D). x:=-b/2/a;
11). Cho đoạn chương trình sau:
Begin x:=a;
If a<b then x:=b;
End.
Cho a=20; b=15. Kết quả x bằng bao nhiêu?
A). 25. B). 20. C). 10. D). 15.
12). Biểu thức viết trong Pascal: 1 - a/c/sqrt(b - 1) thì trong toán học được viết như thế nào?
A).
ac
1 .
b 1
<sub>B). </sub>
(1 a) b 1
.
c
C).
a
1 .
c b 1
<sub>D). </sub>
1 a
.
c b 1
13). Với biến a, b nguyên, để nhập dữ liệu vào máy lệnh nào sau đây là đúng:
A). Real(a,b); B). Read(a,b) C). Readln(a;b); D). Write(a,b);
14). Cho đoạn chương trình sau:
i:=1; s:=0;
While i<10 do begin s:=s+2;
i:=i+1;
end;
Đoạn chương trình trên cho kết quả của S là:
A). 10 B). 14 C). 18 D). 20
15). Biểu thức tính cạnh huyền a của tam giác ABC:
A). a:=Sqrt(Sqr(c)+Sqr(b)); B). Sqrt(a):= Sqrt(b)+Sqrt(c);
C). a:=Sqr(Sqrt(b)+Sqrt(c); D). Sqr(a):=Sqr(b)+Sqr(c);
16). Giá trị x=105.32 nhận kiểu dữ liệu nào trong các kiểu dữ liệu sau:
A). Word B). Integer C). Real D). Longint
17). Mục nào có các tên đặt đúng quy định của Pascal:
A). x1,X-2; B). CONST, X_123; C). X1,X2; D). X[1],x2;
18). Trong Pascal, để chạy chương trình, ta dùng tổ hợp phím:
A). ALT+F9 B). ALT+F8 C). CRTL+F8 D). CRTL+F9
19). Chọn câu sai: trong một chương trình Pascal có thể không có:
A). Phần đầu chương trình. B). Phần khai báo hằng. C). Phần khai báo biến. D). Phần thân chương trình.
20). Trong Pascal, lệnh nào có tác dụng xóa màn hình:
A). Clrslr; B). Clrscr; C). Clrscl; D). Crlscr;
<b>II) PHẦN TỰ LUẬN: ĐỀ 1(5Đ)</b>
<b>CAÂU 1: (3đ) Viết chương trình giải phương trình bậc nhất ax+b=0?</b>
<b>CÂU 2: (2đ) </b>Viết câu lệnh rẽ nhánh tính:
<b> </b>x+y, nếu x>1 và y>1
V= x-y, nếu x>1 và y<=1
<b> </b> -x+y, neáu x<=1
<b> ĐỀ 2(5Đ)</b>
<b>CÂU 1: (3đ) Viết chương trình nhập vào 1 số kiểm tra số đó có chia hết cho 3 không?</b>
<b>CÂU 2: (2đ) </b>Viết câu lệnh rẽ nhánh tính:
<b> </b> <i>x y</i> , neáu x+y >=0
Z= <i>x y</i> , nếu x+y<0 và x2+y2=1
<b> </b> x , nếu x+y<0 và x2<sub>+y</sub>2<sub><>1</sub>
<b></b>
<b>--HẾT---</b><b></b>
<b>---ĐÁP ÁN (MÔN TIN HỌC LỚP 11)</b>
<b>ĐỀ1</b>
<b>II</b><i>.T Ự LU Ậ N </i>:( 5Điểm)
<i><b>Câu 1: (3 điểm)</b></i>
Program cau1;
Uses crt;
Var a,b: real;
Write('nhap he so a,b:'); readln(a,b);
If a<>0 then write('pt co duy nhat nghiem:',-a/b:8:2)
Else If b=0 then write('pt co vo so nghiem.')
Else write('pt vo nghiem.');
Readln
End.
Câu 2: (2 điểm)
<b>If (x>1) then If (y>1) then v:=x+y </b>
<b> Else v:= x-y</b>
<b>Else x:=y-x;</b>
<b>ĐỀ2</b>
<b>II</b><i>.T Ự LU Ậ N </i>:( 5Điểm)
<i><b>Câu 1: (3 điểm)</b></i>
Program VD2;
Uses crt;
Var x: integer;
Begin Clrscr;
Write('nhap mot so:');
Readln(x);
If x mod 3=0 then write(' chia het cho 3.')
Else write(' khong chia het cho 3.');
<i><b>Caâu 2: (2 điểm) </b></i>
<b>If (x+y)>=0 then z:= sqrt(x-y)</b>
<b>Else If (sqr(x) +sqr(y))=1 then z:= abs(x+y)</b>
<b> Else z:=x;</b>
<b>ĐỀ1</b>
1.D
2.B
3.B
4.C
5.B
6.A
7.A
8.A
9.C
10.D
11.B
12.C
13.B
14.C
15.A
16.C
17.C
18.D
<b>ĐỀ2</b>
1.C
2.D
3.D
4.C
5.C
6.D
7.A
8.C
9.B
10.C
11.C
12.A
13.A
14.D
15.B
16.A
17.C
18.B
19.A
20.D
<b>ĐỀ12</b>
<b>3</b>
1.D
12.C
13.B
14.B
15. D
16.C
17.D
18.A
19.A
20.A
<b>ĐỀ32</b>
<b>1</b>
1.C
2.D
3.C
4.B
5.A
6.C
<i>Vũ Bảo Tuyên</i>
<b>CHƯƠNG IV: KIỂU DỮ LIỆU CĨ CẤU TRÚC</b>
<b>BÀI 11: KIỂU MẢNG (4 TIẾT)</b>
I. MỤC TIÊU BAØI HỌC:
1. Kiến thức:
<i>- Hiểu được kiểu dữ liệu mới là kiểu mảng một chiều. Biết được một loại biến có chỉ số.</i>
<i>- Cách khai báo biến mảng một chiều. Tham chiếu đến phần tử của mảng bằng tên của mảng và </i>
<i>chỉ số tương ứng của phần tử này.</i>
2. Kỹ năng:
<i>-Khai báo và sử dụng biến mảng một chiều trong ngôn ngữ Pascal .</i>
<i>-Nhận biết được các thành phần trong khai báo kiểu mảng một chiều.</i>
<i>-Biết cách định danh một phần tử kiểu mảng một chiều trong chương trình.</i>
3. Trọng tâm:
<i>-Mảng 1 chiều.</i>
4. Tư duy – Thái độ:
<i>-Ý thức rèn luyện kĩ năng các thao tác trên kiểu mảng.</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: Nêu vấn đề, diễn giảng, học sinh giải quyết vấn đề.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà, đọc trước SGK,thực tiễn.</i>
III. TIẾN TRÌNH BAØI HỌC:
<b>TIẾT 1</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: khơng
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NOÄI DUNG</b></i>
<i><b>Tiết : 19</b></i>
<i><b>Ngày soạn : </b></i>
11/10
<b>GV: </b>Đưa ra đề bài và chương trình ví dụ để
dẫn dắt vào vấn đề:
<b>HS:</b> Theo dõi chương trình ví dụ, ghi bài.
<b>GV: </b>u cầu học sinh tìm hiểu chương trình
và trả lời: khi số tuần lớn thì chương trình có
hạn chế gì?
<b>HS:</b> Trả lời câu hỏi giáo viên:
Khai báo nhiều biến nên số câu lệnh xử lý sẽ
rất nhiều.
<b>GV: </b>Dẫn dắt vào bài: để khắc phục ta ghép 7
biến thành 1 dãy, đặt chung 1 tên, đánh mỗi
phần tử 1 chỉ số.
<b>HS:</b> So s ánh 2 ch/tr trên
<b>1. Kiểu mảng 1 chiều:</b>
<i><b>a) Xét ví dụ:</b></i>
Nhập vào nhiệt độ trung bình của mỗi ngày trong
- Giải: Chương trình được viết như sau:
Program ndtuan;
Var t1,t2,t3,t4,t5,t6,t7,tb:real;
Dem:integer;
Begin
Write('nhap vao nhiet do 7 ngay:');
Readln(t1,t2,t3,t4,t5,t6,t7);
Tb:=(t1+t2+t3+t4+t5+t6+t7)/7;
Dem:=0;
If t1>tb then dem:=dem+1;
If t1>tb then dem:=dem+1;
If t1>tb then dem:=dem+1;
If t1>tb then dem:=dem+1;
If t1>tb then dem:=dem+1;
If t1>tb then dem:=dem+1;
If t1>tb then dem:=dem+1;
If t1>tb then dem:=dem+1;
Writeln('nhiet do tb tuan:',tb);
Writeln('so ngay nd cao hon nd tb tuan:',dem);
End.
<i> Dùng mảng 1 chiều:</i>
Program nhdo;
Const max = 20;
Type a = array[1..max] of real;
Var ndo:a; d,i,n: byte; t,tb: real;
Begin
Writeln('Nhap so ngay: ');
Readln(n);
T:=0; d:=0;
For i:=1 to n do
Begin
Writeln('Nhap vao nhiet do cua ngay thu
',i,':'); Readln(ndo[i]);
T:=t+ndo[i];
End;
Tb:=t/n;
For i:=1 to n do
If ndo[i]>tb then d:=d+1;
Writeln('Nhiet do tr/binh tuan: ',tb:5:2);
Writeln('So ngay nh/do cao hon nh/do t/binh la:
',d);
.Củng cố:
-Cách tạo mảng 1chiều.
-Tham chiếu đến phần tử mảng.
.Dặn dò bài tập về nhà:
-Làm bài 1-7 SGK/79.
.Rút kinh nghiệm bổ sung:
...
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>---</b><b></b>
<b>---TIẾT 2</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Câu hỏi: Khai báo và tham chiếu mảng 1 chiều?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i> Hoạt động: Viết chương trình sử dụng mảng 1 chiều.</i>
<b>GV:</b> Treo bảng phụ: viết chương trình cho ví dụ
1: Tìm phần tử lớn nhất của dãy số nguyên.
<b>GV:</b> Yêu cầu học sinh xác định bài tốn.
<b>HS:</b>
Input : số nguyên dương n, dãy số nguyên: a1,a2,
…, an.
Output: giá trị lớn nhất của dãy số.
<b>GV:</b> Lấy ví dụ cụ thể:
có dãy 5 soá: 2 5 4 -6 10
5
5
5 10
<b>GV:</b> Yêu cầu học sinh viết chương trình qua
<b>HS:</b>
Nhập số phần tử.
Nhập giá trị mỗi phần tử bằng câu lệnh for.
Viết lệnh theo thuật toán: cho giá trị lớn
nhất là phần tử ban đầu, xét từ phần tử thứ 2 đến
hết nếu có phần tử lớn hơn thì cho giá trị lớn
nhất là phần tử lớn hơn đó.
<b>Ví dụ 1</b> : Tìm phần tử lớn nhất của một dãy số
nguyên .
- <b>Input</b> : Số nguyên dương N và dãy số A1, A2,
….., AN
- <b>Output </b>: Chỉ số và giá trị của số lớn nhất trong
daõy
- <b>Ý tưởng</b> :
+ Đặ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:
Const nmax=250;
Type mang=array[1..nmax] of integer;
Var n,I,max:integer;
A:mang;
Begin
Write('nhap so phan tu:'); readln(n);
For i:=1 to n do begin
Write('phan tu thu',I,'la:');
Readln(A[i]);
End;
Max:=A[1];
For i:=2 to n do if A[i]>max then Max:=A[i];
<i><b>Tieát : 20</b></i>
<i><b>Ngày soạn : </b></i>
11/10
<b>HS:</b>
<b>GV:</b> u cầu học sinh xác định bài tốn.
<b>HS:</b>
Input: số nguyên dương n, dãy số nguyên: a1,a2,
…, an.
Output: dãy A là dãy không giảm.
<b>GV:</b> Lấy ví dụ dãy số: -3 0 -7 7 9 3
Có 2 đĩa A,B trên hai giá tráo đổi vị trí thơng
qua giá thứ 3:
A B
1 2 3
<b>GV:</b> Tóm lại ta có ý tưởng thuật tốn. Diễn
giảng ý tưởng.
<b>GV:</b> Yêu cầu học sinh dự vào ý tưởng viết
chương trình.
<b>HS:</b>
Nhập số phần tử.
Nhập giá trị mỗi phần tử bằng câu lệnh for.
Viết lệnh theo thuật toán: nếu phần tử đứng
trước lớn hơn phần tử đứng sau thì ta đổi chổ
chúng bằng một biến trung gian.
Chương trình hồn chỉnh.
Writeln('phan tu lon nhat:',max);
Readln
End.
<b>Ví dụ 2 :</b> Sắp xếp dãy số nguyên bằng thuật toán
tráo đổi .
- <b>Input :</b> Soá nguyên dương N và dãy số A1, A2,
…, AN
- <b>Output </b>: Dãy A được sắp xếp theo thứ tự
không giảm .
- <b>Ý tưởng :</b>
+ Đổi để đưa số lớn nhất về vị trí cuối cùng .
+ Làm tương tự đối với những số cịn lại .
<b>Chương trình như sau :</b>
Const amax=250;
Type mang=array[1.nmax] of integer;
Var n,I,j,t:integer;
A:mang;
Begin
Write('nhap so phan tu:'); readln(n);
For i:=1 to n do begin
Write('phan tu thu:',I,'la:');
readln(A[i]);
end;
for j:=n downto 2 do
for i:=1 to j-1 do
if A[i]>A[i+1] then begin
t:=A[i];
A[i]:=A[i+1];
A[i+1]:=t;
End;
Writeln('day da sap:');
For i:=1 to n do write(A[i]:4);
Readln
End.
.Cuûng cố:
-Ý tưởng tìm giá trị lớn nhất dãy và sắp xếp dãy.
.Dặn dò bài tập về nhà:
-Đọc trước nội dung bài tốn mảng 1 chiều SGK/58.
.Rút kinh nghiệm bổ sung:
...
<b>---</b><b></b>
<b>---TIẾT 3</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Câu hỏi: Hãy nêu ý tưởng của bài tốn tìm GTLN?
.Bài mới:
<i><b>Tiết : 21</b></i>
<i><b>Ngày soạn : </b></i>
11/10
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động: Viết chương trình sử dụng mảng 1 chiều.</i>
<b>GV:</b> Trình bày phương pháp tìm kiếm nhị phân.
Cho dãy số nguyên: k= {5,7,10,17,21, 29} với
khóa X=21.
<b>HS:</b> Trả lời câu hỏi của giáo viên: Input,
Output.
<b>GV:</b> Hãy xác định khóa X có nằm trong dãy K
hay không? Xác định Input và Output?
<b>HS:</b> Chia đôi 1 mảng đã sắp xếp rồi so sánh
phần tử giữa lớn hơn hay nhỏ hơn giá trị X cần
tìm ở bên phải hay bên trái của mảng.
<b>GV:</b> Hướng dẫn học sinh hiểu những đoạn câu
lệnh trong thuật toán tìm kiếm nhị phân ở ví dụ
3 SGK trang 58.
<b>HS:</b>
<b>Ví dụ 3</b> : <b>Tìm kiếm nhị phân .</b>
- <b>Input :</b> Dãy số A1, A2,………, AN đã được sắp
xếp tăng dần .
- <b>Output :</b> Có hay không chỉ số i mà A[i] = k
hoặc thơng báo khơng tìm thấy .
- <b>Ý tưởng</b> :
<i><b>Thuật tốn tìm kiếm nhị phân trong SGK lớp 10 .</b></i>
<b>Chương trình nhö sau : </b>
Program sapxep ;
Uses crt ;
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 .
.Củng cố:
-Ý tưởng giải bài tốn tìm kiếm nhị phân.
.Dặn dò bài tập về nhà:
-Chuẩn bị bài mới: mảng hai chiều.
...
<b>---</b><b></b>
<b>---TIẾT 22</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>-Biết được kiểu dữ liệu mới là kiểu mảng hai chiều. </i>
<i>-Cách khai báo biến mảng hai chiều. Tham chiếu đến phần tử của mảng bằng tên của mảng và </i>
<i>chỉ số tương ứng của phần tử này. </i>
2. Kỹ năng:
<i>-Khai báo và sử dụng biến mảng hai chiều trong ngôn ngữ Pascal .</i>
<i>-Nhận biết được các thành phần trong khai báo kiểu mảng một chiều: hình dung mảng 2 chiều </i>
<i>như một bảng có các dịng và các cột.</i>
<i>-Biết cách định danh một phần tử kiểu mảng hai chiều trong chương trình.Phân biệt với mảng một</i>
<i>chiều.</i>
3. Trọng tâm:
<i>-Kiểu mảng 2 chiều.</i>
4. Tư duy – Thái độ:
<i>-Xác định thái độ nghiêm túc trong học tập. </i>
Giáo viên:
<i>-Phương pháp: Nêu vấn đề, diễn giảng.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin10,bài soạn.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà, đọc trước SGK, thực tiễn.</i>
III. TIẾN TRÌNH BÀI HỌC:
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ:
-Câu hỏi: Hãy nêu ý tưởng bài toán sắp xếp thành dãy khơng giảm?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu ý nghĩa kiểu mảng 2 chiều.</i>
<b>GV:</b> Dẫn dắt bằng ví dụ.
<b>HS:</b>
<b>GV:</b> Hỏi: Nếu dùng mảng 1 chiều có hạn chế
gì?
<b>HS:</b>
Bài tốn tính và đưa ra màn hình bảng cửu
chương: sgk.
<i> Hoạt động 2: Khai báo biến mảng 2 chiều, tham chiếu đến phần tử mảng.</i>
<b>GV:</b> Diễn giảng: đặc điểm mảng 2 chiều. Mảng hai chiều là một bảng các phần tử cùng kiểu
<b>Với mảng hai chiều ta quan tâm đến:</b>
- Tên kiểu mảng hai chiều .
- Số lượng phần tử của mỗi chiều trong
mảng .
<i><b>Tiết : 22</b></i>
<i><b>Ngày soạn : </b></i>
11/10
<b>GV:</b> Hoûi: em nào có thể nêu cách khai báo 1
biến mảng 2 chiều?
<b>HS:</b>
cách khai báo.
<b>GV:</b> Yêu cầu học sinh lấy ví dụ cụ thể.
<b>HS:</b> Lên bảng lấy ví dụ cho cả lớp cùng theo
dõi.
<b>GV:</b> Hỏi: muốn biết giá trị trong mỗi phần tử
mảng ta phải làm sao?
<b>HS:</b> Phải tham chiếu đến phần tử mảng.
<b>GV:</b> Lấy ví dụ đánh số phịng và chia các
phòng con trong phòng lớn để minh họa cách
tham chiếu đến phần tử mảng.
<b>GV:</b> Yêu cầu học sinh viết chương trình nhập
bảng điểm tin có 3 cột : 15', 45', dtb bảng có 46
dịng tương ứng số học sinh. Tính dtb=(điểm
15'+2*điểm 45')/3. Xuất dtb lớn nhất.
<b>HS:</b> Khai báo mảng 2 chiều: có 3 cột mỗi cột là
1 loại điểm, mỗi dòng của mảng là điểm của
từng học sinh.
Nhập điểm bằng câu lệnh FOR. Tính điểm
trung bình đưa vào cột thứ 3.
Dùng thuật tốn tìm giá trị lớn nhất tính dtb
lớn nhất.
Đưa giá trị lớn nhất ra màn hình.
- Kiểu dữ liệu của phần tử .
- Cách khai báo biến mảng hai chiều .
- Cách truy cập vào từng phần tử của mảng .
1.Khai báo:
Cách trực tiếp:
Var <tên biến mảng>:array[kiểu chỉ số dòng, kiểu
chỉ số cột] of <kiểu phần tử>;
Cách gián tiếp:
Type <tên kiểu mảng>=array[kiểu chỉ số dòng,
kiểu chỉ số cột] of <kiểu phần tử>;
Var <tên biến mảng>:<tên kiểu mảng>;
Kiểu chỉ số: đoạn số nguyên.
Kiểu phần tử: các phần tử mảng: integer, real,
boolean.
Ví dụ:
Type tiencuatoi=array[1..7,1..3] of real;
2.Tham chiếu đến phần tử mảng:
Tênbiếnmảng[chỉ số dịng,chỉ số cột]
3.Ví dụ:
Var A:array[1..46,1..3] of real;
I,j:byte;
Begin
Writeln('nhap diem va tinh dtb:');
For i:=1 to 46 do begin
writeln('hoc sinh thu:',i);
write('diem 15:'); readln(A[I,1]);
write('diem 45:'); readln(A[I,2];
write('diem tb:');
A[I,3]:=(A[I,1]+2*A[I,2])/3;
Writeln(A[I,3]:4:1);
End;
Max:=A[I,3];
For i:=2 to 46 do
If max<A[I,3] then max:=A[I,3];
End.
.Củng cố:
-Tạo kiểu mảng 2 chiều.Tham chiếu đến từng phần tử. Phân biệt mảng 2 chiều và 1 chiều.
.Dặn dò bài tập về nhà:
-Làm bài 8,9SGK/79,80
-Xem trước bài TH SGK/63.
.Rút kinh nghiệm bổ sung:
...
<b>---CHƯƠNG IV: KIỂU DỮ LIỆU CĨ CẤU TRÚC</b>
<b>BAØI TẬP VAØ THỰC HAØNH 3 ( 2 TIẾT)</b>
I. MỤC TIÊU BAØI HỌC:
1. Kiến thức:
<i>- Củng cố về kiến thức mảng 1 chiều và 2 chiều.</i>
2. Kỹ năng:
<i>-Biết giải một số bài toán đơn giản qua việc xây dựng ý tưởng và viết chương trình.</i>
<i>+Tính tổng khi các phần tử thoả điều kiện.</i>
<i>+Đếm số phần tử.</i>
<i>+Tìm phần tử thoả điều kiện: lớn nhất hoặc nhỏ nhất.</i>
3. Tư duy – Thái độ:
<i>-Tích cực, chủ động trong thực hành .</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
Hoïc sinh:
<i>-Phương tiện: SGK 11, đọc trước SGK , xem lại khái niệm, xem trước các chương trình đơn giản</i>
.III. TIẾN TRÌNH BÀI HỌC:
<b>TIẾT 1</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: <b>-</b>Thông qua thực hành kiểm tra lấy điểm miệng một số em.
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu sử dụng mảng 1 chiều qua chương trình ví dụ.</i>
Tìm hiểu chương trình ở câu a SGK/63
Cho học sinh chạy thử.
<b>GV: </b> Treo bảng phụ có nội dung bài số 1a/
sgk/63 ( có thể sử dụng máy chiếu ). Sau đó
đặt câu hỏi cho học sinh trả lời.
<b>GV: </b> Khai báo uses CRT; có ý nghóa gì?
<b>HS:</b> Trả lời.
<b>GV: </b>Hỏi: tên myarray là kiểu dữ liệu hay tên
bieán?
<b>HS:</b> Tên kiểu dữ liệu.
<b>GV: </b>Hỏi: những dòng lệnh tạo biến mảng A?
Lệnh khai báo kiểu và khai báo biến.
<b>HS:</b> Chỉ ra từng vị trí trong chương trình.
<b>GV: </b>Hỏi: lệnh gán:
A[i]:=random(300)-random(300) có ý nghóa gì?
<b>HS:</b> Sinh ngẫu nhiên giá trị cho mảng A từ
-299 đến 299.
<b>GV: </b> Leänh for i:=1 to n do write(A[i]:5); có
ý nghóa gì?
<b>HS:</b> Xuất ra màn hình từng phần tử trong A.
<b>GV: </b>Lệnh s:=s+A[i]; thực hiện bao nhiêu lần?
<b>HS:</b> Trả lời:
+Số lần thực hiện lệnh gán đúng bằng số phần
tử của mảng chia hết cho k. (Bằng số phần tử
A[i] chia hết cho k.)
<b>HS:</b> Soạn chương trình trong Pascal và chạy
thử.
<b>GV: </b> Sửa câu a để được chương trình giải
quyết câu b.
<b>GV: </b> Hỏi: ý nghóa của biến Posi và neg?
Chức năng của lệnh:
If A[i]>0 then posi:=posi+1
Else if A[i]<0 then neg:=neg+1;
<b>HS:</b> Lưu số lượng đếm được.
Đếm số dương hoặc số âm.
-Khai báo thư viện chương trình con CRT để sử
- Myarray: tên kiểu dữ liệu
- nmax: số phần tử tối đa có thể chứa của biến
mảng a,
n: số phần tử thực tế của a.
-Random(n): cho số ngẫu nhiên từ 0 đến n-1
+posi: đếm số dương trong mảng.
+neg: đếm các số âm trong mảng.
<b>GV: </b>Yêu cầu học sinh thêm vào chương trình
câu a để đếm được số và lưu lại với tên khác.
Thực hiện chương trình và báo cáo kết quả.
<b>HS:</b> Thêm câu lệnh vào đúng vị trí.
Lưu lại chương trình và chạy.
.Củng cố:
-Khai báo và câu lệnh nhập mảng 1 chiều.
.Dặn dò bài tập về nhà:
-Chuẩn bị bài tiếp bài thực hành.
.Rút kinh nghiệm bổ sung:
...
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>---</b><b></b>
<b>---TIẾT 2</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: <b>-</b>Thông qua thực hành kiểm tra lấy điểm miệng một số em.
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động: Rèn luyện kĩ năng viết chương trình.</i>
Tìm hiểu chương trình tìm chỉ số và giá trị lớn
nhất.
<b>GV: </b>Cho học sinh đọc đoạn chương trình trong
bài 2/64sgk.
<b>GV: </b>Lấy ví dụ minh học: giống như người mù
tìm sỏi kích thước lớn nhất trong dãy các viên
sỏi kích thước khác nhau, gợi ý cho học sinh ý
tưởng của bài toán.
<b>HS:</b> Từ gợi ý của giáo viên xây dựng ý tưởng
của bài toán.
<b>GV: </b>Hỏi: biến j có tác dụng gì?
<b>HS:</b> Cho biết chỉ số của phần tử có giá trị lớn
nhất.
<b>GV: </b>Nếu muốn tìm phần tử nhỏ nhất thì cần
sửa ở chỗ nào?
<b>HS:</b> Thay đổi phép so sánh của hai phần tử.
Sửa a[i] > a[j] ; thành a[i] < a[j] ;
<b>GV: </b>Nếu muốn tìm phần tử lớn nhất với chỉ
số lớn nhất của nó thì ta sửa ở chỗ nào?
<b>HS:</b> Chỉnh sửa chương trình để đưa ra chỉ số
Ví dụ: Cho mảng gồm 5 phần tử: 1 5 7 5 2 .
Tìm phần tử có giá trị lớn nhất và vị trí của nó
trong mảng ( số thứ tự )
j:=1;
For i:=2 to n do
If a[i] > a[j] then
j:=i;
(Sau khi kết thúc:
+ Giá trị lớn nhất là a[j]
+ vị trí cần tìm j.)
<i><b>Tiết : 24 </b></i>
<i><b>Ngày soạn : </b></i>
25/10
của các phần tử có cùng giá trị lớn nhất.
Sửa a[i] > a[j]; thành a[i] >= a[j];
<b>GV: </b>Lệnh xuất các chỉ số có giá trị bằng giá
trị lớn nhất tìm được. Nằm sau khi tìm được
giá trị lớn nhất.
Nhận xét dữ liệu xuất ra màn hình có thoả
mãn u cầu bài tốn chưa.
<b>GV: </b>Hỏi: cần thêm lệnh nào và vị trí cần
thêm?
<b>HS:</b> Trả lời.
<b>GV: </b>Chạy thử chưong trình cho học sinh theo
dõi.
Yêu cầu học sinh thực hiện chạy chương trình,
nhập bộ dữ liệu và đánh giá kết quả.
<b>HS:</b> thực hiện chạy chương trình
<b>GV: </b>Theo dõi học sinh thực hiện chương trình
và xem kết quả.
.Củng cố:
-Ý tưởng của bài tốn tìm giá trị lớn nhất.
.Dặn dò bài tập về nhà:
-Viết chương trình nhập giá trị cho 1 mảng 1 chiều và nhập x , đếm số các số có giá trị bằng x.
-Xem nội dung bài TH 4 SGK/65.
.Rút kinh nghiệm bổ sung:
...
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>---</b><b></b>
<b>---CHƯƠNG IV: KIỂU DỮ LIỆU CĨ CẤU TRÚC</b>
<b>BÀI TẬP VÀ THỰC HAØNH 4 ( 2 TIẾT)</b>
I. MỤC TIÊU BAØI HỌC:
1. Kiến thức:
<i>-Học cách lập trình với thuật tốn sắp xếp đơn giản.</i>
<i>-Nâng cao khả năng lập trình với kiểu dữ liệu mảng.</i>
2. Kỹ năng:
<i>-Rèn cách sử dụng kiểu dữ liệu có cấu trúc.</i>
<i>-Khả năng nhận xét, phân tích, đề xuất ý tưởng giải bài toán sao cho chương trình chạy nhanh </i>
<i>hơn.</i>
3. Tư duy – Thái độ:
<i>-Tích cực, chủ động trong thực hành .</i>
II. PHƯƠNG TIỆN CHUẨN BỊ :
<i>-Phương tiện: Bút dạ, thước kẻ,SGK tin11,bài soanï, phịng máy vi tính đầy đủ.</i>
Học sinh:
<i>-Phương tiện: SGK 11, đọc trước SGK , xem lại khái niệm, xem trước các chương trình đơn giản .</i>
III. TIẾN TRÌNH BAØI HỌC:
<b>TIẾT 1</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: không
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu cách xây dựng chương trình bài tốn sắp xếp..</i>
<b>GV: </b>Yêu cầu học sinh trình bày các bước sắp
xếp các phần tử thành không giảm.
<b>HS:</b> Lấy các cặp phần tử kề nhau từ trái qua
phải, so sánh với nhau, nếu số trước nhỏ hơn
số sau thì đổi chỗ.
<b>GV:</b> Yêu cầu học sinh soạn chương trình vào
Pascal và chạy.
<b>HS:</b> Sau khi soạn xong, nhập bộ dữ liệu cho
bài tốn, kiểm tra kết quả.
<b>GV:</b> Hỏi: Biến I,j có tác dụng gì?
Ba lệnh để đổi giá trị 2 phần tử A[i],
A[i+1] là gì?
<b>HS:</b> Làm biến đếm cho chương trình.
T:=A[i];
A[i]:=A[i+1];
A[i+1]:=t;
<b>Đề:</b> Sắp xếp dãy số nguyên bằng thuật toán tráo
đổi với các giá trị khác nhau của n số.
CT( SGK/65)
<i> Hoạt động 1: Sửa CT câu a để giải bài tốn câu b.</i>
<b>GV:</b> Trình bày: hãy khai báo thêm biến dem
để chương trình xuất ra số lần thực hiện tráo
đổi. Yêu cầu hs sửa lại CT theo gợi ý đã nêu.
<b>HS:</b> Viết lệnh tăng biến dem lân một đơn vị
mỗi lần thực hiện tráo đổi tức là sau 3 lệnh
thực hiện tráo đổi 2 phần tử.
Thêm các CL như đã hướng dẫn vào CT.
<b>GV:</b> Hướng dẫn hs chỉnh sửa và chạy CT.
<b>GV:</b> Đưa ra bộ dữ liệu khác tổng quát trong
trường hợp đặc biệt ví dụ cả số âm số dương,
nhiều số trùng nhau. Yêu cầu học sinh nhập
bộ dữ liệu này và kiểm tra xem chương trình
<b>HS:</b> Nhập vào từ bàn phím bộ dữ liệu mà
giáo viên đưa ra. Thơng báo kết quả cho giáo
viên. Sau đó nhận xét về kết quả.
<b>GV:</b> Đánh giá kết quả của hs.
<b>Đề:</b> Khai báo biến đếm nguyên Dem và bổ sung
vào chương trình những câu lệnh cần thiết để
biến Dem tính số lần tráo đổi trong chương trình.
.Củng cố:
-Thuật tốn sắp xếp bằng tráo đổi.
- Đếm số lần tráo đổi.
-Ý tưởng bài toán sắp xếp bằng thuật tốn tráo đổi đơn giản.
.Dặn dò bài tập về nhà:
- Tìm thêm các thuật tốn sắp xếp khác tối ưu hơn.
- Cho mảng A và mảng B (là mảng A đã được sắp xếp). Hãy in ra chỉ số của các phần tử mảng
A theo mảng B.
- Xem trước bài thực hành.
.Rút kinh nghiệm bổ sung:
...
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>---</b><b></b>
<b>---TIẾT 2</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: Thông qua thực hành kiểm tra 1 số học sinh.
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Ôn lại kiến thức chuẩn bị thực hành</i>
<b>GV: Hỏi 1:</b> cách khai báo kiểu mảng 1 chiều.
<b> Hỏi 2: </b>(tuỳ từng lớp)
<b>HS:</b> <b>Tl: </b>có 2 cách
+ gián tiếp:
+ trực tiếp:
<i>Mảng 1 chiều.</i>
<i> Hoạt động 2: Rèn luyện kĩ năng nhận xét, phân tích, đề xuất cách giải bài tốn để chương trình</i>
chạy nhanh hơn.
<b>GV: </b>Cho mảng A gồm n phần tử. Viết chương
trình tạo mảng B mà B[i] là tổng giá trị I phần
tử đầu tiên của mảng A.
<b>HS:</b> Đọc đề và suy nghĩ ý nghĩa các lệnh
trong chương trình.
<b>GV: </b>Yêu cầu học sinh xác định dữ liệu vào,
dữ liệu ra.
<b>HS:</b> Vào: mảng A gồm n phần tử.
Ra: mảng B có tính chất phần tử thứ I là tổng
giá trị các phần tử từ 1 đến I trong mảng A.
<b>GV: </b>Thực hiện chương trình để học sinh biết
thời gian chạy chương trình và kết quả của
chương trình.
<b>GV: </b>Hỏi: trong chương trình phải thực hiện
bao nhiêu phép cộng?
<b>HS:</b> Thực hiện n(n+1)/2 phép.
Đề: Cho mảng A gồm n phần tử. Viết CT tạo ra
mảng B[1..n].
Khai baùo:
+ k/báo mảng
+ biến đơn
Phần thân:
B1: tạo mảng A.
B2: xd maûng B theo A.
B3: In maûng B.
<b>GV: </b>Thực hiện thay đổi chương trình sao cho
xử lý ít phép cộng hơn.
<b>HS:</b> Cải tiến: để tính bước thứ I ta sử dụng
kết quả đã tính ở bước thứ i-1.
Thay B[i]:=B[i-1]+A[i] bằng lệnh
For j:=1 to I do B[i]:=B[i]+A[j];
<i> Hoạt động 3: Hs thực hành trên máy theo nhóm</i>
<b>GV: </b>Yêu cầu học sinh viết chương trình hồn
chỉnh.
<b>HS:</b> Chạy chương trình mới và nhận xét thời
gian thực hiện so với chương trình trước.
1. Hs nhập chtrình vào máy
2<b>.</b> Tự biên dịch và chạy CT với ví dụ trên.
3. Tự lấy Input để chạy lại CT
<b>GV: </b>Nhận xét: cùng một bài tốn có nhiều
cách giải quyết khác nhau, người lập trình nên
chọn cách sao cho máy thực hiện nhanh nhất
và đỡ tốn bộ nhớ.
Đề: Cho mảng A gồm n phần tử. Viết CT tạo ra
mảng B[1..n].
Đoạn CT cải tiến: Sgk
.Củng cố:
-Một bài tốn có nhiều cách viết, chọn cách thích hợp .
.Dặn dò bài tập về nhà:
-Xem lại lý thuyết về kiểu mảng, một số chương trình kèm thuật tốn.
.Rút kinh nghiệm bổ sung:
...
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>---</b><b></b>
<b>---CHƯƠNG IV: KIỂU DỮ LIỆU CĨ CẤU TRÚC</b>
<b>BÀI 11: KIỂU XÂU (2 TIẾT)</b>
I. MỤC TIÊU BÀI HỌC:
1. Kiến thức:
<i>-Biết xâu là 1 dãy kí tự , có thể xem là mảng 1 chiều.</i>
<i>-Biết cách khai báo biến xâu, tham chiếu đến phần tử xâu, các phép toán và thủ tục, hàm liên </i>
<i>quan đến xâu.</i>
<i>-Phân biệt được kiểu mảng kí tự và xâu kí tự.</i>
2. Kỹ năng:
<i>-Sử dụng biến kiểu xâu và các phép toán trên xâu để giải được một số ví dụ bài tốn đơn giản.</i>
3. Trọng tâm:
<i>-Kiểu dữ liệu xâu.</i>
4. Tư duy – Thái độ:
II. PHƯƠNG TIỆN CHUẨN BỊ :
Giáo viên:
<i>-Phương pháp: Nêu vấn đề, diễn giảng, học sinh giải quyết vấn đề.</i>
<i>-Phương tiện: Phấn màu, thước kẻ,SGK tin11.</i>
Hoïc sinh:
<i>-Sách giáo khoa, vở soạn bài ở nhà, đọc trước SGK.</i>
III. TIẾN TRÌNH BÀI HỌC:
<b>TIẾT 1</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: khơng
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i>
<i><b>NỘI DUNG</b></i>
<i> Hoạt động 1: Tìm hiểu xâu kí tự và cách sử dụng trong chương trình.</i>
<b>GV: </b>Dẫn dắt: Viết chương trình nhập họ tên
của học sinh trong lớp.
u cầu học sinh sử dụng kiểu mảng 1 chiều
và đưa ra nhận xét.
<b>HS:</b> Khai báo biến mảng A gồm 45 phần tử
kiểu kí tự.
Lệnh nhập và xuất dữ liệu cho từng phần tử:
Readln(A[1]);…readln(A[45]);
<b>GV: </b>Diễn giảng: Chương trình viết sẽ rất dài,
có thể gộp lại thành câu lệnh ngắn để yêu
cầu nhập giá trị cho từng phần tử. : Cần có
một kiểu dữ liệu cho phép nhập, xuất dữ liệu
cho xâu bằng 1 lệnh.
<b>GV: </b>Yêu cầu học sinh đưa ra cách khai báo
kiểu dữ liệu xâu. Hỏi: Ý nghĩa của từ String?
Độ dài lớn nhất của xâu là bao nhiêu
<b>HS:</b> Đưa ra khai báo và trả lời.
<b>GV: </b>Hỏi: Khi khai báo khơng có n thì số lượng
phần tử tối đa là bao nhiêu?
<b>HS:</b> Số lượng phần tử tối đa là 255.
<b>GV: </b>Trình bày: mỗi kí tự được xem là một
phần tử của xâu. Số lượng kí tự trong xâu được
gọi là độ dài của xâu.
<b>GV: </b>Hỏi: Xâu chỉ gồm kí tự rỗng, viết như thế
nào?
<b>HS: </b>Đặt trong cặp nháy đơn khoảng trắng.
<b>GV: </b>Một xâu có nhiều kí tự là các thành phần
tử của xâu. Hỏi: để biết các phần tử trong xâu
ta làm cách nào?
<b>HS:</b> Dùng tham chiếu đến xâu.
<b>GV: </b>Yêu cầu học sinh nêu ví dụ về một xâu
và tham chiếu đến phần tử thứ 4.
1) Khai baùo:
Cú pháp: var <tênbiến>:string[độ dài lớn nhất
của xâu];
Độ dài lớn nhất của xâu không quá 255.
VD: var doan:string[30];
Khai báo biến doan kiểu xâu dài 30 kí tự.
Chú ý: trong khai báo biến xâu khơng có độ dài
thì ngầm định độ dài là 255.
VD: var douong:string;
2) Tham chiếu đến phần tử xâu:
VD: biến Hoten lưu giá trị hằng xâu:
'AnSongJong'
Hoten[4]'s'
Kí hiệu: ' ', độ dài 1.
VD: readln(hoten);
Writeln('ten ban:',hoten);
<b>GV: </b>Nhập, xuất dữ liệu xâu giống như một
biến đơn.
Có thể sử dụng lệnh gán để nhập dữ liệu cho
biến xâu.
<b>GV:</b> Yêu cầu học sinh đưa ra cách nhập xuất
một xâu.
<b>HS</b>: Nhớ lại và đứng tại chỗ trình bày.
VD: doan:=' cacom';
<i> Hoạt động 2: Tìm hiểu các thao tác xử lý xâu.</i>
<b>GV: </b>Yêu cầu học sinh nhắc lại các phép toán
đã học trên kiểu dữ liệu chuẩn.
<b>HS:</b> Suy nghĩ trả lời: Phép toán số học, phép
<b>GV: </b>Diễn giảng: Kết quả của chương trình sau
là ta được 1 xâu hồn chỉnh.
<b>GV: </b>Chiếu chương trình VD
Var s:string;
Begin
S:='ran la loai bo'+'sat khong chan';
Write(s);
Readln
End.
Hỏi: Kết quả của chương trình in ra màn hình?
Thực hiện chương trình cho HS thấy kết quả
<b>GV: </b> Y/c HS tìm một số VD khác
<b>GV: </b>Hỏi: Chức năng của phép cộng
<b>GV: </b>Chiếu chương trình VD về phép so sánh
và y/c HS cho biết kết quả
<b>HS</b>: Kết quả chương trình sau laø: true
Var ga:boolean;
Begin
Ga:='AB' < 'AC';
Write(ga);
Readln
End.
<b>GV: </b>Lưu ý cho HS
Chú ý: một xâu có độ dài nhỏ hơn có thể lớn
hơn xâu có độ dài lớn hơn.
<b>GV: </b>Đối với xâu ta cần thao tác xử lý gì?
<b>HS</b>: Tính chiếu dài, trích một xâu, xóa số kí tự
trong xâu, chèn xâu…
<b>GV: </b>Tương ứng với các thao tác xâu ta có các
hàm và thủ tục: Nêu các hàm và cho ví dụ.
<b>HS</b>: Đưa ra cấu trúc chung.
3) Các thao tác xử lý xâu:
a. Phép ghép xâu: kí hiệu: +
VD: 'ran la loai bo'+'sat khong chan'.
b. Phép so sánh: =,<>, <,>,<=,>=
độ ưu tiên thấp hơn phép ghép xâu.
*Quy tắc so sánh hai xâu: A và B
-Xâu A lớn hơn xâu B nếu kí tự khác nhau đầu
tiên giữa chúng từ trái sang phải của A có mã
Ascii lớn hơn.
VD: 'A'<'a' giá trị true.
-Xâu A và B có độ dài KN và A là đoạn đầu của
B thì A<B.
VD:'Hoa' <'Hoa Hong'
-A và B bằng nhau nếu giống nhau hoàn tồn.
VD: 'Nam' <> 'Nu'
c. Các hàm và thủ tục:
+Hàm length(s): cho giá trị độ dài xâu s.
VD: length('Hoa Hong') 8
+Hàm copy(s,p,n): tạo xâu dài n kí tự từ vị trí p
trong xâu s.
VD: trích từ 'hoa' , copy(s,1,3)
+Hàm pos(s1,s2): cho vị trí xuất hiện đầu tiên
của s1 trong s2.
VD: pos('o',s) 2
+Hàm upcase(ch): cho chữ cái viết hoa từ chữ
+Thủ tục delete(s,p,n): xố n kí tự từ vị trí p
trong xâu s.
+Thủ tục insert(s1,s2,p): chèn s1 vào s2 bắt đầu
từ p.
VD: chèn xâu 'do' vào đề có xâu 'Hoa Hong Do'.
Insert('do',s, 9)
.Củng cố:
-Khai báo và sử dụng kiểu dữ liệu xâu, tham chiếu, nhập/xuất .
.Dặn dò bài tập về nhà:
-Xem kĩ các hàm và thủ tục xử lý xâu.
...
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>---</b><b></b>
<b>---TIẾT 2</b>
.Ổn định lớp và kiểm tra sĩ số.
.Kiểm tra bài cũ: -Câu hỏi: Hãy viết cú pháp khai báo 1 biến xâu và cho ví dụ. Cách tham
chiếu?
.Bài mới:
<i><b>HOẠT ĐỘNG CỦA GIÁO VIÊN VÀ HỌC</b></i>
<i><b>SINH</b></i> <i><b>NỘI DUNG</b></i>
<b>GV: </b>Treobảng phụ chứa ví dụ 1.
yêu cầu học sinh đọc và phân tích.
<b>HS</b>: Theo dõi, tìm hiểu.
<b>GV: </b>Yêu cầu học sinh xác định input, output,
nhiệm vụ chính khi giải bài tốn, cần sử dụng
những hàm nào?
<b>HS</b>: Làm theo yêu cầâu:
Input: 2 giá trị họ tên.
Output: tên dài hơn.
So sánh độ dài 2 xâu họ tên, dùng hàm
"length".
<b>GV: </b>Ý nghiã của hàm Length(b)?
<b>HS</b>: Cho ra số lượng kí tự có trong xâu b.
<b>GV: </b>Em nào có thể giải thích câu lệnh
For i:=k downto 1 do write([i]);
<b>HS</b>: Sử dụng vòng lặp For giá trị cuối downto
giá trị đầu để sau đó in ra các kí tự của chuỗi
theo chiều ngược lại.
<b>GV: </b>Bảng phụ chứa ví dụ 2.
<b>HS</b>: Yêu cầu học sinh giải thích lệnh trong
chương trình.
VD1: viết chương trình nhập họ tên của hai người
vào 2 biến xâu và đưa ra màn hình xâu dài hơn.
Nếu bằng nhau thì đưa ra xâu nhập sau.
Var a,b:string[20];
Begin
Writeln('nhap ho ten thu 1:'); readln(a);
Writeln('nhap ho ten thu 2:'); readln(b);
If length(a)> length(b) then write(a)
Else write(b);
End.
VD2: Nhập một sau vào từ bàn phím và đưa ra
màn hình xâu theo thứ tự ngược.
Var I,d:byte;
A:string;
Begin
Write('nhap xau:'); readln(a);
D:=length(a);
For i:=d downto 1 do write(a[i]);
End.
<b>GV: </b>Bảng phụ chứa ví dụ 3
<b>HS</b>: Yêu cầu học sinh giải thích lệnh trong
chương trình.
<b>GV: </b>Bảng phụ chứa ví dụ 4.
<b>HS</b>: Yêu cầu học sinh giải thích lệnh trong
chương trình.
<b>GV: </b>Qua các ví dụ trên ta thấy điêù gì?
<b>HS</b>: cho thấy hàm length() có thể tham chiếu
đến từng kí tự của một xâu thơng qua vị trí của
nó.
<b>GV: </b>Em có nhận xét gì về xâu b được tạo
thành.
<b>HS</b>: Xâu b được tạo thành từ một xâu rỗng
qua phép ghép xâu.
VD3:Viết chương trình nhập vào tên một bạn
trong lớp. Nếu nhập đúng thì xuất ra thơng báo:
đúng roi. Ngược lại xuất : sai rồi.
Var a,b:string[30];
Begin
A:='LVTi';
Writeln('nhap xau:'); readln(b);
If b=a then writeln('dung roi.')
Else writeln('sai roi.');
End.
VD4: viết chương trình nhập từ bàn phím một
xâu. Sau đó đổi các chữ thường xâu sang chữ
hoa.
Var s:string;
I:byte;
Begin
Writeln('nhap xau:'); readln(s);
If(s[i]>='a') and (s[i]<='z') then
s[i]:=upcase(s[i]);
Writeln('xau hoa la:',s);
End.
.Củng cố:
-Một số hàm xử lý trên xâu .
.Dặn dò bài tập về nhà:
-Bài 10/80.
-Viết chương trình nhập 1 xâu, xuất ra số từ trong xâu.
-Chuẩn bị TH.
.Rút kinh nghiệm bổ sung:
...
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>
<b>...</b>