Giáo án Tin học Lớp 10 - Tiết 2 đến 49 - Năm học 2008-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ữ lập trình có ba 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 với tên dành riêng và tên tự đặt
- Nhớ các quy định về tên, hằng và biến
- Biết đặt tên đúng và nhận biết được tên sai quy định.
- Sử dụng đúng chú thích.
3. Thái độ: Bước đầu hình thành được tư duy về lập trình.
II. CHUẨN BỊ:
1. Chuẩn bị của giáo viên: Giáo án, sách giáo khoa, sách giáo viên & hình ảnh.
2. Chuẩn bị của học sinh: Sgk, vở ghi, đồ dùng học tập, xem trước bài ở nhà.
III. HOẠT ĐỘNG DẠY HỌC:
1. Ổn định tình hình lớp: (3’)
2. Kiểm tra bài cũ:
Câu hỏi:Em hãy nêu khái niệm Lập trình, hãy phân biệt Biên dịch và Thông dịch?
Dự kiến trả lời:
Lập trình là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán.
Biên dịch: Duyệt, phát hiện lỗi, kiểm tra tính đúng đắn của các cacau 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 trình đích có thể thực hiện trên máy và có thể lưu trữ để sử dụng lại.
Thông dịch: Kiểm tra tính đúng đắn của câu lệnh tiếp theo trong chương trình nguồn; Chuyển đổi câu lệnh đó thành một hay nhiều câu lệnh tương ứng trong ngôn ngữ máy; thực hiện các câu lệnh vừa chuyển đổi được.
3. Nội dung bài mới:
4. Củng cố: ( 3 phút)
a. Các thành phần của ngôn ngữ lập trình: bảng chữ cái, cú pháp và ngữ nghĩa.
b. Khái niệm 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.
5. Dặn dị học sinh chuẩn bị cho tiết học sau: (2 phút)
a. Làm bài tập 4, 5, 6, SGK trang 13
b. Xem bài đọc thêm: Ngôn ngữ Pascal, sách giáo khoa trang 14, 15, 16.
c. Xem trước bài: Cấu trúc chương trình, sách giáo khoa, trang 18.
d. Xem nội dung phụ lục B, sách giáo khoa trang 128: Một số tên dành riêng.
IV. RÚT KINH NGHIỆM, BỔ SUNG:
I. MỤC TIÊU:
1. Kiến thức:
- Ôn lại những kiến thức đã học về khái niệm lập trình và các thành phần cơ bản của ngôn
ngữ lập trình.
2. Kỹ năng:
- Sử dụng các kiến thức đã học để trả lời các câu hỏi trong sách giáo khoa và sách bài tập.
3. Thái độ:
- Rèn luyện tính tỉ mỉ, cận thận cho học sinh khi học lập trình để viết chương trình.
II. CHUẨN BỊ:
1. Chuẩn bị của giáo viên: Giáo án, sách giáo viên, sgk, đồ dùng hướng dẫn giảng dạy, hình ảnh minh họa và máy tính.
2. Chuẩn bị của học sinh: Sgk, vở ghi, đồ dùng học tập, học bài ở nhà.
III. HOẠT ĐỘNG DẠY HỌC:
1. Ổn định tình hình lớp: (3’)
2. Kiểm tra bài cũ: (7’)
Câu hỏi: Em hãy trình bày những thành phần cơ bản trong ngôn ngữ lập trình Pascal. Phân biệt giữa hằng và biến.
Trả lời: Những thành phần cơ bản trong ngôn ngữ lập trình Pascal là:
a) Bảng chữ cái:
Là tập hợp các kí tự được dùng để viết chương trình. Trong Pascal bảng chữ cái gồm các kí tự sau:
- Bảng chữ cái thường và bảng chữ cái hoa của bảng chữ cái tiếng Anh.
- Các chữ số trong hệ đếm thập phân.
- Các kí tự đặc biệt: +, -, *, /, =, <, >, {, }, [, ],
b) Cú pháp: Là bộ quy tắc để viết chương trình.
c) Ngữ nghĩa: Xác định ý nghĩa củ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 đó.
Phân biệt giữa hằng và biến:
Hằng: Là đại lượng có giá trị không đổi khi thực hiện chương trình.
Biến: Là đại lượng có thể thay đổi giá trị khi thực hiện chương trình.
n tu mang N=');Readln(N); For i:= 1 to N do Begin write(' A[',i,'] ='); Readln(A[i]); End; For i := 1 to N-1 do For j := i+1 to N do If A[i] > A[ j] Then Begin tg:=A[i]; A[i]:=A[ j]; A[ j]:=tg; End; End; Writeln('Day sau khi Sap xep:'); For i:= 1 to N do Write(A[i]:8); Readln End. 18’ * Hoạt động 2: Vì dãy A là dãy tăng, ta thực hiện thu hẹp nhanh phạm vi tìm kiếm bằng cách so sánh k với A[giua] và xét các trường hợp: - A[giua]=k ð tìm thấy chỉ số giữa và kết thúc; - A[giua]>k ð Thu hẹp về phía bên trái (Cuối = Giữa -1); - A[giua]<k ð Thu hẹp về phía bên phải (Đầu = Giữa +1); Quá trình trên được lặp lại chừng nào cịn chưa tìm thấy hoặc Dau <= Cuoi. Mô tả bài toán này bằng phương pháp liệt kê: Bước1:NhậpN,cácsố hạng a1, a2,..., aN và khố k; Bước 2:Dau ß1, Cuoi ß N; Bước 3: Giua ß ; Bước 4: Nếu aGiua = k thì thông báo chỉ số Giua, rồi kết thúc; Bước 5: Nếu aGiua > k thì đặt Cuoi = Giua – 1 rồi chuyển đến bước 7; Bước 6: Dau ß Giua+ 1; Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trị bằng k, rồi kết thúc; Bước 8: Quay lại bước 3. b. Tìm kiếm nhị phân: Nhập vào một dãy A tăng gồm N (N £ 250) số nguyên dương khác nhau và một số k. Cho biết vị trí của số hạng có giá trị bằng k trong dãy (nếu có) ? * Input: Nhập số nguyên dương n, dãy n số nguyên dương a1,a2,...,an và số nguyên k * Output: Chỉ số i mà ai = k hoặc thông báo “Không tìm thấy” nếu không có số hạng nào của dãy A có giá trị bằng k. Dau:=1; Cuoi:=n; tim_thay:=false; while ( Dau<= Cuoi) or NOT(tim_thay) do Begin Giua:= (Dau+Cuoi) div 2; IF A[giua] = k then Tim_thay :=true else IF (A[Giua]>k) then Cuoi := Giua – 1 else Dau := Giua +1; end; IF Tim_thay then Writeln(‘ Chi so tim duoc la : ’,Giua) Else Writeln(‘Khong tim thay’); Củng cố: (3’) - Cách tạo biến mảng một chiều và cách khai báo biến mảng. - Cách tham chiếu đến từng phần tử. Dặn dị học sinh chuẩn bị cho tiết học sau: (1’) BTVN: Trả lời các câu hỏi 1 – 4, làm bài tập 5, 6, 7 sách giáo khoa. Đọc trước nội dung về kiểu mảng hai chiều, sách giáo khoa. IV. RÚT KINH NGHIỆM, BỔ SUNG: . Tiết 20: KIỂU MẢNG (tt) Ngày soạn: Ngày dạy: I. MỤC TIÊU: 1. Kiến thức: - Biết được dữ liệu mới là kiểu mảng hai chiều. - Biết được cách tạo kiểu mảng hai chiều, cách khai báo biến, tham chiếu đến từng phần tử của mảng. 2. Kỹ năng: - Tạo được kiểu mảng hai chiều và sử dụng biến mảng hai chiều trong ngôn ngữ lập trình Pascal để giải quyết một số bài toán cụ thể. 3. Thái độ: Xây dựng lịng yêu thích giải toán bằng lập trình trên máy tính. II. CHUẨN BỊ: + Giáo viên: Giáo án, hình ảnh minh họa. + Học sinh: Đọc trước SGK. III. PHƯƠNG PHÁP: Thuyết trình và vấn đáp. IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tình hình lớp: (1’) 2. Kiểm tra bài cũ: (Không kiểm tra bài cũ) 3. Giảng bài mới: Tg HĐ của GV HĐ của HS Nội dung 15’ * Hoạt động 1: Tìm hiểu ý nghĩa của mảng hai chiều: Giới thiệu các ví dụ trong sách giáo khoa: Tính và đưa ra màn hình bảng cửu chương. Hỏi: Sử dụng kiến thức mảng một chiều, hãy đưa ra cách sử dụng kiểu mảng đó để lưu trữ bảng cửu chương - Với cách làm như thế thì ta phải khai báo bao nhiêu biến mảng? - Có những khĩ khăn gì? - Các yếu tố của mảng hai chiều: Để mô tả mảng hai chiều ta cần xác định những yếu tố nào? Mỗi phần tử của mảng hai chiều được xác định bởi tên mảng cùng với hai chỉ số, được viết trong cặp ngoặc [ và ]. Các chỉ số cách nhau bởi dấu phẩy. Chú ý theo dõi yêu cầu và dẫn dắt của giáo viên. - Sử dụng 9 mảng một chiều, một mảng lưu một hàng của bảng. - Khai báo 9 biến mảng một chiều. - Khai báo nhiều biến, viết chương trình nhập xuất dữ liệu dài. Các yếu tố để xây dựng mảng hai chiều: - Tên kiểu mảng - Số phần tử trên một dịng mà trên một cột. - Kiểu dữ liệu chung của mọi phần tử. 1. Khái niệm: Mảng hai chiều là bảng các phần tử cùng kiểu. Var a : array [1..10] of array [1.. 20] of real; Var a : array [1..10, 1..20] of real; Tổng quát, khai báo mảng hai chiều có dạng : VAR : ARRAY[Kiểu chỉ số] OF ARRAY[Kiểu chỉ số] OF ; Để cho gọn có thể viết : VAR : ARRAY[Kiểu chỉ số dịng, Kiểu chỉ số cột] OF ; 2. Ví dụ: Xây dựng mảng hai chiều B gồm 10 dịng, 10 cột với các phần tử là các số nguyên được tạo ngẫu nhiên trong phạm vi từ -20 đến 20. Đưa ra màn hình tất cả các phần tử của mảng có giá trị lớn hơn số k cho trước. Giá trị của k được nhập từ bàn phím. 25’ * Hoạt động 2: Rèn luyện kĩ năng sử dụng mảng hai chiều: Chiếu chương trình ví dụ, chạy thử chương trình. Hỏi: mảng hai chiều trong chương trình trên có tên là gì? Và nó có chức năng gì? - Mỗi phần tử trong mảng hai chiều này thuộc kiểu dữ liệu nào? Trong chương trình trên ta sử dụng hàm chuẩn Random(n)cho giá trị là số nguyên ngẫu nhiên trong khoảng từ 0 đến n - 1. - Yêu cầu học sinh theo dõi chương trình trong SGK - Để lần lượt có được giá trị các phần tử tạo nên mảng hai chiều B, thường dùng hai vịng lặp for – do lồng nhau. Yêu cầu học sinh hãy viết các lệnh để nhập từ bàn phím giá trị của phần tử này: - Giới thiệu hàm Random(N) Mảng hai chiều trong chương trình trên có tên là b, nó dùng để tạo ra mảng 2 chiều gồm 10 dịng và 10 cột. Mỗi phần tử trong mảng hai chiều này thuộc kiểu dữ liệu là integer. - Lệnh để nhập từ bàn phím giá trị của phần tử này: Write(‘B[‘, i,’,’j,’]= ’); Readln(B[i,j]); Program MangHaiChieu; Uses CRT; Var b : array[1..10, 1..10] of integer; i, j, k : integer; Begin Clrscr; Randomize; { Khởi động sinh số ngẫu nhiên } For i:= 1 to 10 do begin for j:= 1 to 10 do begin b[i,j]:= random(41)-20; write(b[i,j], ' '); end; writeln; end; write('Nhap vao gia tri k = '); readln(k); write('Danh sach cac phan tu mang co gia tri lon hon ',k,': '); For i:= 1 to 10 do For j:= 1 to 10 do If b[i, j]>k then write (b[i, j], ' '); Readln End. 4. Củng cố: (3’) - Cách tạo biến mảng hai chiều và cách khai báo biến mảng. - Cách tham chiếu đến từng phần tử. 5. Dặn dị học sinh chuẩn bị cho tiết học sau: (1’) BTVN: Trả lời các câu hỏi 1 – 4, làm bài tập 8, 9 sách giáo khoa. Chuẩn bị trước bài thực hành số 3. V. RÚT KINH NGHIỆM, BỔ SUNG: Tiết 22 & 23: BÀI TẬP VÀ THỰC HÀNH 3 Ngày soạn: Ngày dạy: I. MỤC TIÊU: 1. Kiến thức: - Thực hành những kĩ năng đã học về mảng một chiều - Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm hiểu, chạy thử các chương trình có sẵn 2. Kỹ năng: - Biết giải được một số bài toán tính toán, tìm kiếm đơn giản trên máy tính 3. Thái độ: Xây dựng lịng yêu thích giải toán bằng lập trình trên máy tính. II. CHUẨN BỊ: - Giáo viên: Giáo án, hình ảnh minh họa và máy tính. -Học sinh: Đọc trước SGK. III. PHƯƠNG PHÁP: Luyện tập IV. HOẠT ĐỘNG DẠY HỌC: 1. Ổn định tình hình lớp: (1’) Kiểm tra bài cũ: (Không kiểm tra bài cũ) Giảng bài mới: Tg HĐ của GV HĐ của HS Nội dung Tiết 1: 40’ Hoạt động 1: Tìm hiểu bài tập 1 - Yêu cầu học sinh đọc đề bài, tìm Input, Output của bài toán. - Trong chương trình mẫu có sẵn, hãy chỉ ra phần khai báo mảng, nhập số phần tử của mảng, nhập các phần tử thành phần trong mảng? - Thực hành gõ chương trình trên vào máy tính và cho thực hiện chương trình. - Kiểm tra kết quả thực hiện được. Chú ý theo dõi yêu cầu và dẫn dắt của giáo viên. Input: n là số nguyên, dãy A1, A2, An mỗi phần tử có trị tuyệt đối không vượt quá 300. Output: tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước Phần khai báo chương trình: Type MyArray=Array[1..nmax] Of Integer; Var A : MyArray; - Phần nhập số phần tử của mảng, nhập các phần tử thành phần trong mảng Write('Nhap n ='); ReadLn(n); {Tạo ngẫu nhiên mảng gồm n số nguyên} For i:= 1 to n do A[i]:= Random(301)- Random(301); Write('Nhap k = '); ReadLn(k); Bài 1. Cho mảng A gồm n (n ≤ 100) số nguyên, mỗi số theo trị tuyệt đối không vượt quá 300. Tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước. a) Hãy tìm hiểu, gõ và chạy thử chương trình sau đây : 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); {Tạo ngẫu nhiên mảng gồm n số nguyên} For i:= 1 to n do A[i]:= Random(301)- Random(301); Write('Nhap k = '); ReadLn(k); s:=0; For i:=1 To n Do if A[i] mod k = 0 then s:=s+A[i]; WriteLn('Tong can tinh la: ',s); ReadLn End. b) Hãy đưa các câu lệnh sau đây vào những vị trí cần thiết nhằm sửa đổi chương trình trong câu a để có được chương trình đưa ra số lượng số dương và số lượng số âm trong mảng. posi, neg : Integer; posi:= 0; neg:= 0; If A[i]>0 Then Inc(posi) Else If A[i]<0 Then Inc(neg); WriteLn(posi:4,neg:4); Tiết 2: 40’ Hoạt động 2: Tìm hiểu bài tập2 - Yêu cầu học sinh đọc đề bài, tìm Input, Output của bài toán. - Trong chương trình mẫu có sẵn, hãy chỉ ra phần khai báo mảng, nhập số phần tử của mảng, nhập các phần tử thành phần trong mảng? - Thực hành gõ chương trình trên vào máy tính và cho thực hiện chương trình. - Kiểm tra kết quả thực hiện được. Chú ý theo dõi yêu cầu và dẫn dắt của giáo viên. Input: n là số nguyên, dãy A1, A2, An mỗi phần tử có trị tuyệt đối không vượt quá 300. Output: chỉ số và giá trị của phần tử có giá trị lớn nhất của mảng. Nếu có nhiều phần tử có cùng giá trị lớn nhất thì đưa ra phần tử với chỉ số nhỏ nhất Phần khai báo chương trình: Type MyArray=Array[1..nmax] Of Integer; Var A : MyArray; - Phần nhập số phần tử của mảng, nhập các phần tử thành phần trong mảng Randomize; Write('Nhap n = '); ReadLn(n); {Tạo ngẫu nhiên mảng gồm n số nguyên} For i:= 1 to n do A[i]:= Random(300)- Random(300); Bài 2. Viết chương trình tìm phần tử có giá trị lớn nhất của mảng. Đưa 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 giá trị lớn nhất thì đưa ra phần tử với chỉ số nhỏ nhất. a) Hãy gõ, tìm hiểu chương trì
File đính kèm:
- Giao An tin hoc 11.doc