Giáo án Tin học Khối 11 - Chương trình cả năm

I. Mục tiêu

1. Kiến thức:

 - Biết ngôn ngữ lập trình có ba thành phần cơ bản là: bảng chữ cái, cú pháp, ngữ nghĩa. Hiểu và phân biệt được ba thành phần này.

 - Biết một số khái niệm: tên, tên chuẩn, tên dành riêng (từ khóa), hằng và biến.

2. Kỹ năng:

 - Ghi nhớ các quy định về tên, hằng, biến trong một ngôn ngữ lập trình.

 - Cách đặt tên đúng và nhận biết được tên sai quy định.

II. Chuẩn bị của GV và HS:

1. Giáo viên: SGK, giáo án, bảng phụ.

2. Học sinh: SGK, vở ghi.

III. Nội dung:

. Ổn định lớp:

 Kiểm diện:

1. Các thành phần cơ bản.

a) Bảng chữ cái.

 Trong Pascal, bảng chữ cái bao gồm các kí tự sau:

• Các chữ cái thường và chữ cái in hoa của bảng chữ cái tiếng Anh.

‘A’.’Z’ có mã 65.90

‘a’.’z’ có mã 97.122

‘0’.’9’ có mã 48.57

• 10 Chữ số thập phân Ả rập.

• 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 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ó.

Vd: (SGK)

Tóm lại: Cú pháp cho biết cách viết một chương trình hợp lệ, còn ngữ nghĩa xác định ý nghĩa của các tổ hợp kí tự trong chương trình.

2. Một số khái niệm.

a) Tên

 Trong TP, tên là một dãy liên tiếp không quá 127 kí tự bao gồm chữ cái, chữ số hoặc dấu gạch dưới.

Vd:

Tên đúng: (lấy 3 vd)

Tên sai: (lấy 3 vd)

Ngôn ngữ Pascal không phân biệt chữ hoa, chữ thường trong tên.

Trong Pascal phân biệt 3 loại tên:

- Tên dành riêng;

- Tên chuẩn;

- Tên do người dùng đặt.

Tên dành riêng: là tên được dùng với ý nghĩa riêng xác định.

Tên chuẩn: là tên được dùng với ý nghĩa nhất định nào đó.

 Tên do người lập trình đặt: được dùng với ý nghĩa riêng, xác định bằng cách khai báo trước khi sử dụng. Các tên này không được trùng với tên dành riêng.

b) Hằng và biến

* Hằng

là đại lượng có giá trị không thay đổi trong quá trình thực hiện chương trình.

- Hằng số học: là các số nguyên hay số thực.

- Hằng logic: True hoặc False

- Hằng xâu:

* Biến:

 là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được thay đổi trong quá trình thực hiện chương trình.

c) Chú thích: Được đặt trong chương trình, giúp cho người đọc chương trình nhận biết ý nghĩa của chương trình hay của từng câu lệnh trong chương trình.

 

doc93 trang | Chia sẻ: lethuong715 | Lượt xem: 530 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Giáo án Tin học Khối 11 - Chương trình cả năm, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Readln ;
 End .
Ví dụ 2 : Sắp xếp dãy số nguyên theo bằng thuật toán tráo đổi .
Input : Số nguyên dương N và dãy số A1, A2, , AN
Output : Dãy A được sắp xếp theo thứ tự không giảm .
Ý tưởng :
Đổ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 .
Chương trình như sau :
Program sapxep ;
Uses crt ;
var A : Array[1..250] of integer ;
 n,i,j,tg : Integer ;
Begin
 clrscr ;
 Write('Nhap so phan tu mang n = ') ;
 Readln(n) ;
 For i := 1 to n do
 Begin
 Write('A[',i,'] = ') ;
 readln(A[i]) ;
 End ;
 For j := n downto 2 do
 Begin
 For i := 1 to j-1 do
 If A[i] > A[i+1] then
 Begin
 tg := A[i] ;
 A[i] := A[i+1] ;
 A[i+1] := tg ;
 End ;
 End ;
 Writeln('day sau khi sap xep : ') ;
 For i := 1 to n do
 write(a[i]:8) ;
 readln ;
End .
 Writeln('chi so ptu lon nhat : ',csmax);
 readln ;
 End .
IV. Củng cố: 
V. Dặn dò: 
Tiết 23 	Kiểu mảng (T)
Ngày soạn:...../......; Ngày giảng:..../......
I. Mục tiêu
 1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: 
2. Học sinh: 
III. Nội dung:
. Ổn định lớp: 
 Kiểm diện:
11C1:
11C2:
11C3: 
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ: 
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật toán .
HS : Xây dựng thuật toán để giải bài toán (thuật toán đã học ở lớp 10) .
GV soạn sẵn chương trình và cho học sinh quan sát chương trình .
 Nếu có thời gian, giáo viên sẽ tiến hành soạn chương trình từ đầu để học sinh có thể dễ dàng nhận ra việc chuyển đổi ngôn ngữ từ ngôn ngữ thuật toán sang ngôn ngữ lập trình .
GV : Quay lại ví dụ về lưu trữ dữ liệu dạng bảng để các em nhận ra nhu cầu phải sử dụng mảng 2 chiều trong lập trình .
GV : Khai báo cách nào tiện lợi hơn (tương tự mảng 1 chiều) ?
HS : Thường thì học sinh vẫn chọn cách 1 .
GV : Tùy theo trường hợp cụ thể nhưng thường thì cách 1 hay được dùng hơn .
GV : Khi khai báo mảng 2 chiều cần chú ý điều gì ?
HS : Tìm câu trả lời, GV gợi ý để các em chỉ ra được chỉ số của mảng, số dòng, số cột và kiểu của mỗi phần tử trong mảng .
GV : Gọi một số học sinh lên khai báo một số biến mảng một chiều theo yêu cầu của giáo viên .
Minh họa bằng hình ảnh mảng 2 chiều và chỉ số các phần tử mảng hai chiều cũng như cách viết truy cập phần tử mảng .
Ví dụ 3 : Tìm kiếm nhị phân .
Input : Dãy số A1, A2,, AN đã được sắp xếp tăng dần .
Output : Có hay không chỉ số i mà A[i] = k hoặc thông báo không tìm thấy .
Ý tưởng : 
Xem lại thuật toán tìm kiếm nhị phân trong SGK lớp 10 .
Chương trình như sau : 
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 .
2. Kiểu mảng 2 chiều :
- Mảng hai chiều là một bảng các phần tử cùng kiểu .
Với mảng hai chiều ta quan tâm đến :
Tên kiểu mảng hai chiều .
Số lượng phần tử của mỗi chiều trong mảng .
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 .
a> Khai báo mảng hai chiều
- Trong ngôn ngữ Pascal, mảnh hai chiều được khai báo như sau :
Cách 1 : Khai báo trực tiếp
Var : : Array[kiểu chỉ số dòng, kiểu chỉ số cột] of ;
Cách 2 : Khai báo gián tiếp thông qua khai báo kiểu mảng 
Type = Array[kiểu chỉ số dòng, kiểu chỉ số cột] of ;
Var : ;
Ví dụ : 
Khai báo biến mảng thông qua kiểu mảng :
Type
ArrayInteger = Array[1..10,1..15] of Integer ;
ArrayReal=Array[1..50,1..100] of Real ;
Var A : ArrayInteger ;
B : ArrayReal ;
Khai báo mảng trực tiếp :
Var A : Array[1..10,1..15] og Integer ;
B : Aarray[1..50,1..100] og Real ;
Cách truy cập vào phần tử của mảng hai chiều :
[chỉ số dòng, chỉ số cột]
Ví dụ : A[1,3], B[23,66],
IV. Củng cố: 
V. Dặn dò: 
Tiết 24 	Kiểu mảng (T)
Ngày soạn:...../......; Ngày giảng:..../......
I. Mục tiêu
 1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: 
2. Học sinh: 
III. Nội dung:
. Ổn định lớp: 
 Kiểm diện:
11C1:
11C2:
11C3: 
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ: 
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV cho học sinh quan sát chương trình và giải thích các lệnh trong chương trình, chú ý đi sâu vào các lệnh lặp để các em nhận ra thường thì ta sử dụng vòng lặp for - do để duyệt qua các phần tử mảng .
GV nên soạn sẵn chương trình và cho các em quan sát chương trình, và chạy thử chương trình trên máy để các em tiện theo dõi .
Program Timkiem;
Uses crt;
var A : Array[1..100,1..100] of Integer;
 i,j,n,m : Byte ;
 k,d : integer ;
Begin
 Clrscr ;
 Write(' Nhap so dong, so cot cua mang : ') ;
 Readln(m,n);
 For i := 1 to m do
 For j := 1 to n do
 Begin
 Write(' A[',i,',',j,'] = ');
 Readln(A[i,j]);
 End ;
 Writeln(' Mang vua nhap vao la : ');
 Writeln;
 For i := 1 to m do
 Begin
 For j := 1 to n do
 Write(a[i,j]:4) ;
 Writeln;
 Writeln;
 End;
 Write(' Nhap gia tri k : ');
 Readln(k) ;
 d := 0 ;
 For i := 1 to m do
 For j := 1 to n do
 If a[i,j] < k then
 Begin
 write('So nho hon ',k,' la ');
 write(a[i,j]:8);
 d := d+1 ;
 End ;
 If d = 0 then
 Write('Khong co ptu nao nho hon ',k);
 readln;
 End .
b> Một số ví dụ :
Ví dụ 1 :
Chương trình sau đưa ra màn hình bảng cửu chương .
Program cuuchuong;
Uses crt ;
var A : Array[1..9,1..9] of Integer ;
 i, j : Byte ;
Begin
 Clrscr ;
 Writeln('Bang cuu chuong 1 -> 9 : ');
 Writeln ;
 For i := 1 to 9 do
 For j := 1 to 9 do
 A[i,j] := i*j ;
 For i := 1 to 9 do
 Begin
 For j := 1 to 9 do Write(a[i,j]:4);
 Writeln ;
 Writeln ;
 End ;
 Readln ;
End .
Ví dụ 2 :
Chương trình sau nhập vào một mảng 2 chiều và số nguyên k, sau đó in ra các phần tử có giá trị nhỏ hơn k của mảng .
IV. Củng cố: 
Nhắc lại một số khái niệm mới .
Nhắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 phần đồng thời gọi 4 học sinh lên bảng viết lại các cách khai báo, truy xuất, và hiển thị để nhập dữ liệu .
Ra bài tập về nhà .
V. Dặn dò: Đọc lại các kiến thức đã học trong bài 11. Chuẩn bị các chương trình để chạy trong giờ thực hành sau.
Tiết 25 	Bài tập và thực hành 3
Ngày soạn:...../......; Ngày giảng:..../......
I. Mục tiêu
 1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng;
2. Kỹ năng: 
+ 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;
+ Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính.
+ Tổ chức những hoạt động trong phòng máy để HS có được kĩ năng cơ bản trong làm việc với kiểu mảng (một chiều) trong lập trình, cụ thể là:
Khai báo kiểu dữ liệu mảng;
Nhập dữ liệu cho mảng, đưa ra màn hình chỉ số và giá trị các phần tử của mảng;
Duyệt qua tất cả các phần tử của mảng để sử lí từng phần tử.
+ Cung cấp cho HS 3 thuật toán cơ bản và đơn giản thường gặp với dữ liệu kiểu mảng:
Tính tổng các phần tử thỏa mãn điều kiện nào đó;
Đếm số phần tử thỏa mãn điều kiện nào đó;
Tìm phần tử lớn nhất (hay nhỏ nhất) của mảng cùng với vị trí của nó trong mảng.
+ Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình.
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh: 
III. Nội dung:
. Ổn định lớp: 
 Kiểm diện:
11C1:
11C2:
11C3: 
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ: 
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
HS: phải hiểu được chương trình đã viết sẵn ở câu a) và thấy được kết quả chạy chương trình này, trên cơ sở đó tìm ra cách giải quyết vấn đề đặt ra ở câu b.
GV: cần cho HS thấy được điểm khác nhau cơ bản của các chương trình ở câu a và câu b.
Thủ tục randomize khởi tạo bộ lấy số ngẫu nhiên trước khi dùng lệnh random(n) để lấy một số nguyên ngẫu nhiên trong phạm vi từ 0 đến n-1.
GV: đưa ra một số câu hỏi (phù hợp với trình độ HS ở mỗi lớp), hướng dẫn HS tìm hiểu chương trình:
MyArray là tên một kiểu dữ liệu hay tên một biến?
Vai trò của nmax và n khác nhau ntn?
Những dòng lệnh nào nhằm tạo ra mảng A?
Lệnh gán: A[i]:=random(300)-random(300); 
có ý nghĩa gì?
.
Bài 1: Tạo mảng A gồm n (n<=100) số nguyên, mỗi số có 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 và chạy thử chương trình sau đây:
Program Sum1;
(tr 63 SGK)
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ố các số dương và số các số âm trong 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;
writeln(posi:4,neg:4);
IV. Củng cố: 
V. Dặn dò:
Tiết 26 	Bài tập và thực hành 3(T)
Ngày soạn:...../......; Ngày giảng:..../......
I. Mục tiêu
 	1. Kiến thức: 
2. Kỹ năng: 
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh: 
III. Nội dung:
. Ổn định lớp: 
 Kiểm diện:
11C1:
11C2:
11C3: 
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ: 
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Nêu gợi ý cho HS thấy được chương trình 2a thể hiên thuật toán tìm phần tử lớn nhất.
GV: Hướng dẫn HS tìm hiểu vai trò của biến j qua các câu lệnh của bài toán.
GV: Có thể cho HS một ví dụ bộ dữ liệu input nhỏ và yêu cầu HS mô phỏng việc chạy chương trình thể hiện thuật toán trên giấy nháp.
HS: Tích cực tìm hiểu bài toán, thực hiện bài toán trên máy tính, sửa lỗi chạy chương trình.
Nếu còn thời gian thì HS hoàn thành phần b) dưới sự hướng dẫn của GV.
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 và đư

File đính kèm:

  • docgiao an tin 11.doc