Giáo án Tin học 11 - Năm học 2009 - 2010

Giáo án Tin học 11 - Năm học 2009 - 2010

I. MỤC TIÊU:

- Biết được khái niệm lập trình và ngôn ngữ lập trình

- Biết được khía niệm chương trình dịch

- Phân biệt được 2 loại chương trình dịch là biên dịch và thông dịch

II. ĐỒ DÙNG DẠY HỌC

1. Chuẩn bị của giáo viên

 - Bảng viết, SGK, SGV, phiếu học tập

2. Chuẩn bị của học sinh

 - SGK

III. HOẠT ĐỘNG DẠY VÀ HỌC

 

doc 67 trang Người đăng quocviet Lượt xem 1311Lượt tải 0 Download
Bạn đang xem 20 trang mẫu của tài liệu "Giáo án Tin học 11 - Năm học 2009 - 2010", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Chương 1
Một số khái niệm về lập trình và ngôn ngữ lập trình
@1: Khái niêm lâp trình và ngôn ngữ lập trình
(Tiết dạy theo PPCT: 1: Tuần 1: từ ngày 17 – 23/08/2009)
I. Mục tiêu:
Biết được khái niệm lập trình và ngôn ngữ lập trình
Biết được khía niệm chương trình dịch
Phân biệt được 2 loại chương trình dịch là biên dịch và thông dịch
II. Đồ dùng dạy học
Chuẩn bị của giáo viên
	- Bảng viết, SGK, SGV, phiếu học tập
2. Chuẩn bị của học sinh
	- SGK
III. Hoạt động dạy và học
Hoạt dộng 1: tìm hiểu khái niệm lập trình và ngôn ngữ lập trình:
Mục tiêu: 
- Giúp học sinh biết được lập trình là gì. ý nghĩa của việc lập trình
- Biết được khái niệm của ngôn ngữ lập trình và biết một số loại ngôn ngữ lập trình.
b. Nội dung:
Mọi bài toán có thuật toán đều có thể giải trên máy tính điện tử và các bước để giải môt bài toán :
+ Xác định bài toán.
+ Xây dựng một thuật toán khả thi.
+ Lập trình.
Lập trình là việc sử dụng cấu trúc dữ liệu và các lệnh của một ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác qua thuật toán.
Ngôn ngữ lập trình là một phần mềm dùng để điễn đạt thuật toán thành một chương trình giúp cho máy tính có thể hiểu được thuật toán đó.
Một số loại ngôn ngữ lập trình: Ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao.
c. Các bước tiến hành:
Hoạt động của giáo viên
Hoạt động của học sinh
1. bài toán ĐV đề
Cho 2 số nguyên a,b.Tính tổng,tích của a,b?
- Hãy xác định các yếu tố Input và Output của bài toán?
- Hãy xác định các bước để tìm Output?
* Các bước trên ta gọi là gì?
- Nếu trình bày thuật toán này với một người nước ngoài, em dùng ngôn ngữ nào để diễn đạt?
- Nếu diễn đạt thuật toán này cho máy hiểu, em sẽ dùng loại ngôn ngữ nào ?
*Đúng vậy quá trình diễn đạt đó ta cần sử dụng ngôn ngữ mà máy tính có thể nhận biết và những ngôn ngữ như vậy ta gọi là “Ngôn ngữ lập trình”
- Diễn giải: Hoạt động để diễn đạt thuật toán thông qua một ngôn ngữ lập trình được gọi là lập trình.
- Yêu cầu HS đọc SGK và cho biết KN lập trình.
Hỏi: Kết quả của hoạt động lập trình.
2. Phát phiếu học tập. Yêu cầu các em ghi các loại ngôn ngữ lập trình mà em biết ( Sử dụng các kỹ thuật động não viết ).
- Đọc nội dung một số phiếu học tập cho cả lớp cùng nghe.
- Hỏi: Em hiểu như thế nào về ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao?
Hỏi: NNBC là ngôn ngữ gần với ngôn ngữ tự nhiên chứ không phải là ngôn ngữ máy.Vậy làm cách nào máy tính có thể xử lý được?
Hỏi: Vì sao người ta không lập trình trên ngôn ngữ máy để khỏi mất công chuyển đổi mà người ta phải lập trình bằng ngôn ngữ bậc cao?
1. Quan sát nội dung của bài toán và theo rõi yêu cầu của giáo viên:
- Input: a,b
- Output: Tổng:=a+b; Tích:=a*b.
Bước 1: Nhập a,b 
Bước 2: Gán: Tổng:=a+b; Tích:=a*b.
Bước 3: Đưa ra Tổng, Tích rồi kết thúc.
* Gọi là thuật toán của bài toán trên
- Sử dụng sơ đồ khối hoặc ngôn ngữ của người đó để diễn đạt.
- Ngôn ngữ máy.
- 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 toán.
- Ta được một chương trình
2. Tham khảo SGK và sử dụng vốn hiểu biết về tin học để điền phiếu học tập.
- Ngôn ngữ máy 
- Hợp ngữ
- Ngôn ngữ bậc cao
- Ngôn ngữ máy: các lệnh được mã hoá bằng ký hiệu 0 – 1 chương trình viết bằng ngôn ngữ máy có thể nạp vào bộ nhớ và thực hiện ngay.
- Ngôn ngữ bậc cao các lệnh được mã hoá bằng ngôn ngữ gần với ngôn ngữ tiếng Anh, chương trình viết bằng ngôn ngữ 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ực hiện được.
- Phải sử dụng một chương trình để chuyển đổi NNBC thành ngôn ngữ máy.
- Lập trình bằng NNBC dễ viết hơn vì các lệnh được mã hoá gần với ngôn ngữ tự nhiên. Lập trình trên ngôn ngữ máy rất khó, thường chuyên gia lập trình với lập trình được.
Hoạt động 2: Tìm hiểu 2 loại chương trình, thông dịch và biên dịch.
a. Mục tiêu:
- Học sinh biết được khái niệm của chương trình dịch và sự cần thiết của chương trình dịch. 
- Phân biệt được thông dịch với biên dịch.
b. Nội dung: 
- Chương trình dịch là một chương trình có chức năng chuyển đổi một chương trình được viết bằng một ngôn ngữ bậc cao thành một chương trình thực hiện trên máy tính.
- Cần phải có một chương trình dịch để chuyển chương trình viết bằng ngôn ngữ khác thành ngôn ngữ máy.
- Đầu vào của một chương trình dịch là một chương trình viết bằng ngôn ngữ bậc cao, đầu ra cũng là một chương trình nhưng được viết bằng ngôn ngữ máy 
- Biên dịch: kiểm tra phát hiện lỗi và dịch toàn bộ chương trình nguồn thành chương trình có thể thực hiện ở trên máy.
- Thông dịch là dịch từng câu lệnh một
c. Các bước tiến hành:
hoạt động của giáo viên
Hoạt động của học sinh
1. Nêu vấn đề: 
Em muốn giới thiệu về trường mình cho một người khách du lịch quốc tế biết tiếng anh có 2 cách thực hiện .
Cách 1: Cần môt người biết tiếng Anh dịch từng câu nói của em sang tiếng Anh cho người khách.
Cách 2: Em soạn nội dung cần giới thiệu ra giấy và người phiên dịch dịch toàn bộ nội dung đó ra tiếng Anh rồi đọc cho người khách.
- Hãy lấy một ví dụ tương tự trong thực tế biên dịch từ tiếng Anh ra tiếng Việt.
2. Yêu cầu học sinh nghiên cứu SGK và sử dụng các ví dụ trên để cho biết các tiến trình thông dịch và biên dịch.
 1. Chú ý lắng nghe ví dụ của giáo viên và thảo luận tìm ví dụ tương tự
- Khi nói truyện trực tiếp với bạn người nước ngoài.Cần dịch ngay từng câu.
- Khi Viết thư cho bạn sau khi viết xong thì dịch toàn bộ bức thư đó.
2. HS nghiên cứu SGK suy nghĩ và trả lời
- Biên dịch: 
Bước 1: Duyệt và phát hiện lỗi, kiểm tra tính đúng đắn của lệnh trong 1 chương trình nguồn.
Bước 2: Dịch toàn bộ chương trình nguồn thành một chương trình trên ngôn ngữ máy 
- Thông dịch:
Bước 1: Kiểm tra tính đúng đắn của lệnh tiếp theo chương trình nguồn .
Bước 2: Chuyển lệnh đó thành ngôn ngữ máy.
Bước 3: Thực hiện các câu lệnh vừa chuyển đổi (phù hợp với môi trường đối thoại giữa người và máy)
IV. Đánh giá cuối bài:
1. Những nội dung đã học: 
	- Khái niệm lập trình và ngôn ngữ lập trình.
	- Có ba loại ngôn ngữ lập trình: Ngôn ngữ máy, hợp ngữ, và ngôn ngữ bậc cao
	- Khái niệm chương trình dịch.
	- Có hai loại chương trình dịch là thông dịch và biên dịch
2. Câu hỏi và bài tập về nhà: SGK
@2: các thầnh phần của ngôn ngữ lập trình
(Tiết dạy theo PPCT: 2. Tuần 1: từ ngày 17 – 23/08/2009)
I. Mục tiêu
1. kiến thức:
	- Nắm được các thành phần của một ngôn ngữ lập trình nói chung.
- Một ngôn ngữ có 3 thành phần: Bảng chữ cái, cú pháp và ngữ nghĩa.
	- Biết được một số khái niệm như: tên, tên chuẩn, tên dành riêng, tên do người lập trình đặt, hằng biến và chú thích.
2. Kỹ năng: 
	- Phân biệt được tên chuẩn, tên dành riêng, tên tự đặt
	- Nhớ được các quy định về tên hằng và biến.
	- Biết được đặt tên đúng và các tên sai quy định
	- Sử dụng đúng chú thích .
II. Đồ dùng dạy học
1. Chuẩn bị của giáo viên:
	- Tranh chứa bảng chữ cái, tranh chứa các tên sai - đúng để học sinh chọn, phiếu học tập.
2. Chuẩn bị của học sinh:
	- SGK, Đọc bài mới trước khi đến lớp.
III. Hoạt động dạy và học
1. Hoạt động 1: Tìm hiểu các thành phần của ngôn ngữ lập trình.
a. Mục tiêu: 
Biết được một ngôn ngữ lập trình gồm 3 thành phần: Bảng chữ cái cú pháp và ngữ nghĩa.
b. Nội dung: 
+ Bảng chữ cái: là tập hợp các ký tự được dùng để viết chương trình, không được dùng bất kỳ ký tự nào ngoài các ký tự quy định trong bảng chữ cái.
+ Cú pháp: là bộ quy tắc để viết chương trình .
+ Ngữ nghĩa xác định ý nghĩa thao tác cần phải thực hiện, ứng với mỗi tổ hợp dựa vào ngữ cảnh của nó
c. Các bước tiến hành:
Hoạt động của giáo viên
Hoạt động của học sinh
1. Đặt vấn đề: có những yếu tố nào để xây dựng tiếng Việt?
2. Giảng: trong một ngôn ngữ lập trình cũng vậy nó gồm các thành phần: Bảng chữ cái, cú pháp và ngữ nghĩa.
3. Lớp chia làm 3 nhóm. Thảo luận và thống nhất cho 1 bạn trả lời các câu hỏi sau:
- Hãy nêu các chữ cái của bảng chữ cái tiếng Anh.
- Nêu các ký tự số trong hệ đếm thập phân
- Nêu một số các ký tự đặc biệt khác
- Gọi đại diện của nhóm lên trình bày. Sau đó gọi đại diện nhóm khác lên nhận xét, bổ xung.
- Treo tranh của giáo viên đã chuẩn bị để tiểu kết cho hoạt động này
1. HS độc lập suy nghĩ và trả lời
 - Bảng chữ cái tiếng Việt, số, dấu.
 - Quy tắc ghép các ký tự thành từ và quy tắc ghép từ thành câu.
 - Ngữ nghĩa của từ và câu.
2. HS lắng nghe và ghi nhớ
3. Học sinh thực hiện với sự hỗ trợ của SGK
- Theo rõi kết quả của các nhóm khác và bổ xung những thiếu sót.
- Tập trung xem tranh và ghi nhớ
2. Hoạt động 2: Tìm hiểu khái niệm tên trong thành phần của ngôn ngữ lập trình.
a. Mục tiêu:
- Học sinh biết và phân biệt một số loại tên: tên dành riêng tên chuẩn, tên do người lập trình đặt.
b. Nội dung: 
	Mọi đối tượng trong chương trình phải được đặt tên theo một quy tắc của ngôn ngữ lập trình và từng chương trình dịch cụ thể. 
- Tên dành riêng: là những tên được ngôn ngữ lập trình quy định dùng với ý nghĩa xác định (còn gọi là từ khoá), người lập trình không được dùng với ý nghĩa khác.
- Tên do người lập trình đặt: là tên được dùng theo ý nghĩa riêng của từng người lập trình, tên này được khai báo trước khi sử dụng. Các tên không được trùng với tên dành riêng.
c. Các bước tiến hành
Hoạt động của giáo viên
Hoạt động của học sinh
1.Đặt vấn đề: Mọi đối tượng trong chương trình phải được đặt tên.
- Hãy nghiên cứu SGK trang 10, để nêu quy cách đặt tên trong Turbo Pascal?
2.Treo tranh chứa các tên đúng, sai, yêu cầu HS chọn tên đúng.
A A BC 6Pq 
R12 X#y _45
- Tiểu kết cho các vấn đề này bằng việc khẳng định lại tên đúng.
3.Yêu cầu HS nghiên cứu SGK(trang 10 -11) để biết các khái niệm về tên dành riêng, tên chuẩn và tên do người lập trình đặt.
- Chia lớp thàn 4 nhóm. Nhóm 1,2,3 trình bày hiểu biết của mình về một loại tên và cho ví dụ. Nhóm 4 cho nhận xét chung.
- Treo tranh chứa một số tên trong ngôn ngữ lập trình Pascal đã được chuẩn bị sẵn:
Program Asb Integer Type Xyx Byte tong
- yêu cầu học sinh mỗi nhóm thực hiện:
+ Xác định tên dành riêng.
+ Xác định tên chuẩn
+ Xác định tên tự đặt.
- Gọi đại diện các nhóm lên trình bày. gọi học sinh nhóm khác để bổ xung.
- Tiểu kết cho các vấn đề này bằng cách bổ xung thêm cho mỗi nhóm để đưa ra trả lời đúng.
1. Nghiên cứu SGK và trả lời
- Gồm các chữ cái, chữ số và dấu gạch dưới.
- Bắt đầu bằng chữ cái hoặc dấu gạch dưói.
- Độ dài không quá 127
2. Quan sát và trả lời.
A
R12
_45
3. HS nghiên cứu SGK để trả lời 
- Thảo luận theo nhóm và điền phiếu học tập.
+ Tên dành riêng: Là những tên do ngôn ngữ lập trình quy định dùng với ý nghĩa xác định, người lập trình không được dùng với ý nghĩa khác.
+ Tên chuẩn là những tên được ngôn ngữ lập trình quy định dùng với một ý nghĩa nào đó, người lập trình có thể định nghĩa lại để dùng nó với ý nghĩa khác.
+ Tên do người lập trình đặt: là tên được dùng theo ý nghĩa riêng của từng người lập trình, tên này được khai báo trước khi sử dụng. Các tên không được trùng với tên dành riêng.
- HS quan sát và điền phiếu học tập.
Tên dành riêng: Program type
Tên chuẩn: Asb Interger Byte
Tên tự đặt ... - Phải khai báo quá nhiều biến. Chương trình phải viết rất dài.
2. Nghiên cứu Sách giáo khoa để trả lời.
- Mảng một chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu.
Các phần tử có cùng kiểu dữ liệu.Các phần tử trong mảng có cùng chung một tên và phân biệt nhau bằng chỉ số.
- Để mô tả mảng một chiều cần xác định đuợc các phần tử và cách đánh số các phần tử cuả nó.
2.Hoạt động 2: Tạo kiểu mảng một chiều và khai báo biến mảng.
Mục tiêu:
Học sinh biết được cách tạo kiểu dữ liệu mảng một chiều tronng ngôn ngữ lập trình Pascal, biết cách khai báo biến và tham chiếu đến từng phần tử của mảng.
Nội dung:
Tạo kiểu dữ liệu mảng một chiều:
	TYPE tên_kiểu _mảng=Array[kiểu_chỉ_số] Of kiểu thành phần;
	+ Kiểu_ chỉ_ số: thưòng là một đoạn số nguyên( hoặc đoạn kí tự) xác định chỉ số đầu và chỉ số cuối của mảng.
	+ Kiểu_ thành_ phần: Là kiểu dữ liệu chung của mọi phần tử trong mảng
Khai báo biến mảng một chiều: VAR tên_biến: tên_ kiểu_ mảng,
Tham chiếu đến từng phần tử: Tên_biến[chỉ_ số_ dòng, chỉ_ số_ cột]
Các bước tiến hành:
Hoạt động của giáo viên
Hoạt động của học sinh
1. Yêu cầu học sinh nghiên cứu sách giáo khoa và cho biết cách tạo kiểu dữ liệu mảng một chiều trong ngôn ngữ lập trình Pascal.
- Tìm một ví dụ để minh hoạ.
- Gọi học sinh khác hỏi ý nghĩa của lệnh bạn vừa viết.
- Chiếu lên bảng một số khai báo kiểu mảng một chiều
Type
Arrayr=array[1..200] of real;
Arrayr=array[byte] of real;
Arrayb=aray[-100..0] of boolean;
- Hỏi những khai báo nào đúng?
2. Yêu cầu học sinh cho biết cách khai báo biến và một ví dụ khai báo mảng ứng với kiểu dữ liệu vừa tạo.
- Gọi học sinh khác,hỏi: ý nghĩa của lệnh bạn vừa viết?
- Dung lượng bộ nhớ của biến a đã chiếm bao nhiêu?
- Chú ý cho học sinh về cách đặt tên kiểu dữ liệu và tên biến, tránh nhầm lẫn.
3. Giới thiệu cách tham chiếu đến từng phần tử của mảng một chiều. Yêu cầu học sinh lấy một ví dụ.
1. Tham khảo sách giáo khoa và trả lời
- TYPE tên_km= Array[kiểu_cs] Of kiểu thành phần;
-Ví dụ: Type mmc= array[1..100] of integer;
- Tạo một kiểu dữ liệu mới có tên mmc, gồm 100 phần tử, có kiểu nguyên.
- Quan sát bảng và chọn khai báo đúng.
Arrayr=array[1..200] of real;
Array=array[-100..0] of boolean;
2. Tham khảo Sách giáo khoa và trả lời
- VAR tên_biến: tên_km;
- Ví dụ: Var a:mmc;
- Khai báo một biến mảng một chiều
- a đã chiếm 200 byte trong bộ nhớ.
3. Theo dõi hướng dẫn của giáo viên và độc lập suy nghĩ để trả lời.
a[1] là phần tử ở vị trí 1 của mảng a.
a[i] là phần tử ở vị trí i của mảng a.
3. Hoạt động 3: Rèn luyện kĩ năng sử dụng kiểu mảng một chiều.
a. Mục tiêu:
- Học sinh sử dụng được kiểu biến một chiều để giải quyết được bài toán đơn giản.
b. Nội dung:
Bài toán: Giải quyết bài toán ở phần đặt vấn đề trong hoạt động1, trong đó có sử dụng biến mảng một chiều.
c. các bước tiến hành:
Hoạt động của giáo viên
Hoạt động của học sinh
1. Giới thiệu đề bài.
- Chiếu đề bài lên bảng.
- Yêu cầu học sinh xác định dữ liệu vào ,dữ liệu ra.
- Hỏi: Nếu không sử dụng biến mảng một chiều, ta có thể giải quyết được bài toán không? Khó khăn gì không?
2. Định hướng: Sử dụng kiểu mảng một chiều để sử dụng bài toán.
- Yêu cầu học sinh để khai báo kiểu mảng.
- Yêu cầu học sinh khai báo biến mảng.
- Yêu cầu học sinh tìm ra các nhiệm vụ chính cần giải quyết.
3. Chia lớp thành 3 nhóm. Yêu cầu viết chương trình lên giấy bìa trong.
- Thu phiếu trả lời, chiếu lên bảng. Gọi học sinh nhóm khác nhận xét đánh giá.
4. Chuẩn hoá chương trình cho học sinh.
1. Quan sát đề bài, theo dõi những yêu cầu cần thiết của đề bài.
- Vào: 7 số là giá trị nhiệt độ của 7 ngày trong tuần.
- Ra: Số ntb là nhiệt độ trung bình trong tuần và số nch là số ngày có nhiệt độ cao hơn nhiệt độ trung bình
- Được.
- Chương trình dài khó sửa đổi...
2. Theo dõi sự hướng dẫn của giáo viên.
Type tuan=array[1..7] of real;
Var ndtuan: tuan
Nhập gía trị cho mảng a.
Tính trung bình cộng giá trị của mảng
Đếm số phần tử có giá trị lớn hơn trung bình cộng tính được.
3. Thảo luận theo nhóm để viết chương trình.
- Báo cáo kết quả viết được. 
- Nhận xét đánh giá bổ sung những kết quả thiếu sót của nhóm khác.
4. Quan sát và ghi nhớ 
IV. Đánh giá cuối bài:
1. Những nội dung đã học:
- Cách tạo mảng một chiều và cách khai báo biến.
TYPE tên_kiểu mảng= Array[kieeur_chỉ_số] of kiểu_thành_phần; 
VAR tên_biến: tên _kiểu_mảng;
Tham chiếu đến từng phần tử: Tên_biến[chỉ số]
2. Câu hỏi và bài tập về nhà
- Viết chương trình nhập vào một mảng gồm n số nguyên(1<=n<=100), mỗi số có giá trị tuyệt đối không quá 300. Tính tổng giá trị các phần tử có giá trị chia hết cho k.
- Trả lời câu hỏi 1- 4, làm bài tập 5, 6, 7, sách giáo khoa, trang 79.
- Đọc trước nội dung về kiểu mảng hai chiều, sách giáo khoa trang 59.
Thực hành số 3
I. Mục tiêu
1. Kiến thức
- Củng cố lại các kiến thức cơ bản về kiểu dữ liệu mảng.
2. Kĩ năng
- Nâng cao kĩ năng sử dụng một số lệnh kiểu dữ liệu mảng một chiều trong lập trình, cụ thể: 
+ Khai báo kiểu dữ liệu mảng một chiều. 
+ Nhập/xuất dữ liệu cho mảng. 
+ Duyệt qua tất cả các phần tử của mảng để xử lí từng phần tử. 
- Biết giải một số bài toán cơ bản thường gặp: 
+ Tính tổng các phần tử thoả mãn điều kiện nào đó. 
+ Đếm số các phần tử thoả mãn điều kiện nào đó. 
+ Tìm phần tử lớn nhất, nhỏ nhất. 
3. Thái độ
- Góp phần rèn luyện tác phong, tư duy lập trình: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm kiến thức. 
II. Đồ dùng dạy học
1. Chuẩn bị của giáo viên
- Phòng máy vi tính, máy chiếu Projector để minh hoạ. 
2. Chuẩn bị của học sinh
- Sách giáo khoa.
III. Hoạt động dạy – học
1. Hoạt động 1: Tìm hiểu cách sử dụng lênh và kiểu dữ liệu mảng một chiều qua chương trình có sẵn. 
a. Mục tiêu: 
- HS hiểu được chương trình có sẵn ở câu a, biết được kết quả chạy chương trình này, từ đó tìm ra cách giải quyết câu b. 
b. Nội dung: 
a- Tìm hiểu, gõ chương trình vào máy và chạy thử: 
Program Sum1;
Uses Crt;
Const nmax:=100;
Type Myarray=Array[1..nmax]of integer;
Var A:myarray;
 s,n,i,k:integer;
Begin
 Clrscr;
 Randomize;
 Write(‘Nhap n=’);
 Readln(n);
 For i:=1 to n do a[i]:=random(300)-random(300);
 For i:=1 to n do Write(A[i]:5);
 Writeln;
 Write(‘Nhap k=’);
 Readln(k);
 s:=0;
 For i:=1 to n do
 if a[i]mod k=0 then s:=s+a[i];
 Write(‘Tong can tinh la’,s);
 Readln;
End.
b- Thêm các lệnh mới vào chương trình nhằm sửa đổi chương trình trong câu a để chương trình thực hiện đếm số lượng số dương và số lượng số âm của mảng. 
	Posi, neg: integer;
	Posi:=0;neg:=0;
	If a[i]>0 then Posi:=posi+1
	Else if a[i]<0 then neg:=neg+1;
	Write(posi:4,neg:4);
c. Các bước tiến hành
Hoạt động của giáo viên
Hoạt động của học sinh
1. Tìm hiểu chương trình ở câu a, SGK, trang 63 và chạy thử chương trình. 
- Chiếu chương trình lên bảng. 
- Hỏi: Khai báo Uses CRT; có ý nghĩ gì?
- Hỏi: Myarray là tên kiểu dữ liệu hay tên biến?
- Hỏi: Vai trò của nmax và n có gì khác nhau?
- Hỏi: Những dòng lệnh nào dùng để tạo biến mảng a?
- Thực hiện chương trình để học sinh thấy kết quả. 
Hỏi: Lệnh gán a[i]:=random(300)-random(300) có ý nghĩa gì?
- Hỏi: Lệnh For i:=1 to n do Write (A[i]:5); có ý nghĩa gì?
- Lệnh For-Do cuối cùng thực hiện nhiệm vụ gì?
- Hỏi: Lệnh s:=s+a[i]; được thực hiện bao nhiêu lần?
- Thực hiện lại chương trình lần cuối để học sinh thấy kết quả. 
2. Sửa chương trình câu a để được chương trình giải quyết bài toán ở câu b.
- Chiếu lên màn hình các lệnh cần thêm vào chương trình ở câu a.
- Hỏi: ý nghĩa của biến Posi và neg?
- Hỏi: 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;
- Yêu cầu HS thêm vào vị trí cần thiết để chương trình đếm được số.
- Yêu cầu HS gõ nội dung và lưu lại với tên caub.pas. Thực hiện chương trình và báo cáo kết quả.
1. Quan sát, chú ý và trả lời. 
- Khai báo thư viện chương trình con Crt để sử dụng được thủ tục Clrscr;
- Tên kiểu dữ liệu.
- nmax là số phần tử tối đa có thể chứa của biến mảng a. n là số phần tử thực tế của a. 
- Lệnh khai báo kiểu và khai báo biến. 
- Quan sát chương trình thực hiện và kết qủa trên màn hình.
- Lệnh sinh ngẫu nhiên giá trị cho mảng a từ -299 đến 299.
- In ra màn hình giá trị của từng phần từ trong mảng a.
- Cộng các phần tử chia hết cho k.
- Có số lần đúng bằng số phần tử a[i] chia hết k.
- Quan sát giáo viên thực hiện chương trình và kết quả trên màn hình. 
2. Quan sát và chú ý theo dõi các câu hỏi của giáo viên:
- Quan sát các lệnh và suy nghĩ vị trí cần sửa trong chương trình câu a. 
- Dùng để lưu số lượng đếm được. 
- Đếm số dương hoặc đếm số âm. 
- Chỉ ra vị trí cần thêm vào trong chương trình. 
- Lưu chương trình. Thực hiện chương trình và thông báo kết quả.
2. Hoạt động 2: Rèn luyện kĩ năng lập trình.
a. Mục tiêu:
- Viết được chương trình hoàn thiện bằng cách sử dụng lệnh và kiểu dữ liệu mảng một chiều. 
b. Nội dung:
- Viết chương trình tìm phần tử có giá trị lớn nhất của mảng và in ra màn hình chỉ số và giá trị của phần tử tìm được. Nếu có nhiều phần tử có cùng gía trị lớn nhất thì chỉ đưa ra phần tử có chỉ số nhỏ nhất. 
c. Các bước tiến hành
Hoạt động của giáo viên
Hoạt động của học sinh
1. Lấy một ví dụ thực tiễn. Người mù tìm viên sỏi có kích thước lớn nhất trong một dãy các viên sỏi để gợi ý cho học sinh thuật toán tìm giá trị lớn nhất. 
- Yêu cầu: Nêu thuật toán tìm phần tử có giá trị lớn nhất. 
2. Tìm hiểu chương trình tìm chỉ số và giá trị lớn nhất. 
- Chiếu chương trình ví dụ, SGK trang 64.
- Hỏi: Vai trò của biến j trong chương trình?
- Hỏi: Nếu muốn tìm phần tử nhỏ nhất, cần sửa ở chỗ nào?
- Hỏi: Nếu muốn tìm phần tử lớn nhất với chỉ số lớn nhất ta sửa ở chỗ nào?
3. Đặt yêu cầu mới: Viết chương trình đưa ra các chỉ số của các phần tử có giá trị lớn nhất. 
- Hỏi: Cần giữ lại đoạn chương trình tìm giá trị lớn nhất không?
- Hỏi: Cần thêm lệnh nào nữa?
- Hỏi: Vị trí thêm các lệnh đó?
- Yêu cầu: Viết chương trình hoàn thiện. 
- Yêu cầu HS nhập dữ liệu vào của giáo viên và báo cáo kết quả. 
- Đánh giá kết quả của học sinh.
1. Theo dõi ví dụ của giáo viên.
- So sánh lần lượt từ trái sang phải, giữa lại chỉ số của phần tử lớn nhất. 
2. Quan sát chương trình, suy nghĩ và trả lời. 
- Giữ lại chỉ số của phần tử có gía trị lớn nhất. 
- Phép so sánh a[i]<a[j]
- Chuyển thứ tự duyết từ n-1 về 1.
3. Theo dõi yêu cầu, suy nghĩ các câu hỏi định hướng để viết chương trình. 
- Có
- Lệnh để in ra các chỉ số có giá trị bằng giá trị lớn nhất tìm được. 
- Sau khi tìm được giá trị lớn nhất. 
- Soạn chương trình vào máy. Thực hiện chương trình và thông báo kết quả. 
- Nhập dữ liệu vào và thông báo cho giáo viên dữ liệu ra.
IV. Đánh giá cuối bài
1. Những nội dung đã học
Một số thuật toán cơ bản: 
+ Tính tổng các phần tử thoả mãn điều kiện nào đó. 
+ Đếm số các phần tử thoả mãn điều kiện nào đó. 
+ Tìm phần tử lớn nhất, nhỏ nhất. 
2. Câu hỏi và bài tập về nhà
- Viết chương trình nhập một mảng một chiều A[1...20] và nhập một số x. Đếm số lượng số trong A có giá trị bằng x. 
- Xem nội dung của bài thực hành số 4, SGK trang 65.

Tài liệu đính kèm:

  • docGA Tin 11cac Thay Co tham khao.doc