1. Trang chủ
  2. » Luận Văn - Báo Cáo

Giáo án Tin học 11 - Tiết 20 đến tiết 39

20 20 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 275,53 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Kỹ năng:  Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều  Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng 3.. Thái độ:  Có[r]

Trang 1

Ngày soạn : 25/01/2010

Ngày dạy : 04/01/2010

Tiết :20

§11 KIỂU MẢNG (TIẾT 1)

I MỤC TIÊU

1 Kiến thức

- Biết được một 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ố

- Biết cấu trúc tạo kiểu mảng một chiều và cách khai báo biến khiểu mảng một chiều

2 Kĩ năng

- Tạo được kiểu mảng một chiều và sử dụng biến mảng một 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 độ

- Góp phần rèn luyện tác phong, tư duy lập trình: Tự giác, tich 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

- Giáo án, SGK, SGV,

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

- Sách giáo khoa, vở ghi

3 Nội dung ghi bảng

1 Kiểu mảng một chiều

VD: SGK_53

Chương trình minh họa:

Program nhietdotuan;

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 t2>tb then dem:=dem+1;

if t3>tb then dem:=dem+1;

if t4>tb then dem:=dem+1;

if t5>tb then dem:=dem+1;

if t6>tb then dem:=dem+1;

if t7>tb then dem:=dem+1;

Trang 2

writeln(‘Nhiet do trung binh tuan ’,tb); writeln(‘So ngay nhiet do trung binh cao hon nhiet do trung binh tuan’,dem); readln; end.  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ử trong mảng có cùng chung một tên và phân biệt nhau bởi chỉ số  Để mô tả mảng một chiều cần xác định được kiểu của các phần tử và cách đánh số các phần tử của nó a Khai báo TYPE tên_km= Array[kiểu_cs] Of kiểu_thành_phần; + Kiểu chii số thường là kiểu số nguyên (hoặc đoạn kí tự) liên tục, có dạng n1 n2 với n1 và n2 là các biểu thức nguyên (hoặc kí tự) xác ddingj 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 1 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ố]; III HOẠT ĐỘNG DẠY-HỌC 1 Ổn định tổ chức Kiểm tra sĩ số: Lớp - Sĩ số Ngày dạy Vắng Tên HS vắng 11A1 – 39 / / 2010

11A2 – 41 / / 2010

11A3 – 44 / / 2010

11A4 – 49 / / 2010

11A5 – 50 / / 2010

11A6 – 47 / / 2010

11A7 – 44 / / 2010

11A8 – 46 / / 2010

11A9 – 47 / / 2010

11A10 – 51 / / 2010

11A11 – 41 / / 2010

2 Kiểm tra bài cũ

- Lồng vào bài

3 Bài mới.

Hoạt động 1: Tìm hiểu ý nghĩa của mảng một chiều.

HOẠT ĐỘNG CỦA GIÁO VIÊN HOẠT ĐỘNG CỦA HỌC SINH

1 Nêu đề bài và chương trình ví dụ lên bảng

- Hỏi: Khi N lớn thì chương trình trên có những

hạn chế như thế nào?

- Dẫn dắt: Để khắc phục những hạn chế trên,

1 Quan sát trên bảng, suy nghĩ và trả lời

- Phải khai báo quá nhiều biến Chương trình phải viết rất dài

Trang 3

người ta thường ghép chung 7 biến trên thành

một dãy và đặt cho nó chung một tên và đánh cho

một phần tử một chỉ số

2 Yêu cầu học sinh tham khảo sách giáo khoa và

hỏi: Em hiểu như thế nào về mảng một chiều?

- Hỏi: Để mô tả mảng một chiều, ta cần xác định

những yếu tố nào?

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ử trong mảng có cùng chung một tên và phân biệt nhau bởi chỉ số

- Để mô tả mảng một chiều cần xác định được kiểu của các phần tử và cách đánh

số các phần tử của nó

Hoạt động 2: Tạo kiểu mảng một chiều và khai báo biến mảng.

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 họa

- 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=array[-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ột biến 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 là 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ử

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;

Arrayb=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

Trang 4

của mảng một chiều Yêu cầu học sinh lấy một ví

dụ

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

4 Củng cố và dặn dò

- Cách tạo kiểu mảng một chiều và cách khai báo biến

TYPE tên_kiểu_mảng = Array[kiểu_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ố]

- Trả lời các câu hỏi 1-4 trang 79

- Đọc trước nội dung về kiểu mảng một chiều phần b

IV RÚT KINH NGHIỆM TIẾT DẠY

Tổ trưởng duyệt

Ngày tháng 1 năm 2010

Phạm Anh Quý

Giáo viên soạn

( Chữ ký, Họ tên)

Giáp Văn Khiêm

Trang 5

Ngày soạn : 25/01/2010 Ngày dạy : 06/01/2010 Tiết :21 §11 KIỂU MẢNG ( TIẾT 2 ) I MỤC TIÊU: 1 Kiến thức: Học sinh sau tiết học sẽ: Nắm được khái niệm mảng 1 chiều Hiểu cách khai báo và truy cập đến các phần tử của mảng 2 Kỹ năng:  Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều  Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng 3 Thái độ:  Có tư duy đúng đắn trong việc áp dụng mảng 1 chiều để giải các bài toán đơn giản  Tạo lòng ham muốn giải được một số bài tập tính toán đơn giản bằng ngôn ngữ Pascal II ĐỒ DÙNG DẠY HỌC 1 Giáo viên: − Sách giáo viên, giáo án, SGK,

2 Học sinh: − Vở ghi, SGK III PHƯƠNG PHÁP: Phương pháp thuyết trình, vấn đáp, kết hợp tạo tình huống có vấn đề IV HOẠT ĐỘNG DẠY HỌC 1 Ổn định tổ chức Kiểm tra sĩ số: Lớp - Sĩ số Ngày dạy Vắng Tên HS vắng 11A1 – 39 / / 2010

11A2 – 41 / / 2010

11A3 – 44 / / 2010

11A4 – 49 / / 2010

11A5 – 50 / / 2010

11A6 – 47 / / 2010

11A7 – 44 / / 2010

11A8 – 46 / / 2010

11A9 – 47 / / 2010

11A10 – 51 / / 2010

11A11 – 41 / / 2010

Trang 6

2 Kiểm tra bài cũ

− Mảng một chiều là gì?

− Khai báo cho bài toán sau: Cho dãy A gồm n phần tử có giá trị nguyên dương Sau

đó đếm và đưa ra có bao nhiêu số chẵn, bao nhiêu số lẻ trong dãy

3 Bài mới.

Hoạt động 1: Trình bày ví dụ 1 SGK trang 56

HOẠT ĐỘNG CỦA GIÁO VIÊN HOẠT ĐỘNG CỦA HỌC SINH Nêu nội dung bài toán ví dụ 1

Trình bày Input và Output của bài toán

* Ý tưởng của thuật toán

+ Đặt số A1 là số lớn nhất (max)

+ Cho i lặp từ 2 đến N, nếu A[i]> A[1] thì

đổi max = A[i] và lưu lại vị trí i

* Thuật toán:

B1: Nhập N và dãy A1, A2,…, AN;

B2: Max←A1; i←2;

B3: Nếu i>N thì đưa ra Max rồi kết thúc;

B4:

B4.1: Nếu Ai>Max thì Max← Ai;

B4.2: i←i+1 rồi quay lại bước 3

− Biến i dùng để làm gì?

− Ý nghĩa của bước 3

− Có sử dụng vòng lặp không?

− Khi nào thì vòng lặp dừng lại?

* Chương trình như sau :

Program timmax ;

Uses crt ;

var a : array[1 250] of integer ;

n,i,max,csmax : Integer ;

Begin

clrscr ;

Write('Nhap n = ') ;

Readln(n) ;

For i := 1 to n do

Begin

Write('a[',i,'] = ') ;

readln(a[i]) ;

End ;

- Input : Số nguyên dương N và dãy

số A1, A2, … , AN

- Output : Chỉ số và giá trị của số lớn

nhất trong dãy

− Để thực hiện lần lượt từng phần tử từ

vị trí thứ 2 đến vị trí thứ n

− Để kết thúc thuật toán sau khi đã duyệt xong (Tính dừng của thuật toán)

− Có

− Khi i=N+1 thì vòng lặp sẽ dừng lại

Trang 7

max := a[i] ;

csmax := 1 ;

For i := 2 to n do

If a[i] > max then

Begin

max := a[i] ;

csmax :=i ;

End ;

Writeln('Gia tri lon nhat : ',max) ;

Writeln('chi so ptu lon nhat : ',csmax) ;

Readln ;

End

Cho HS chạy thử thuật toán với bộ dữ liệu: 5 1

7 6 3 15 8 4

Hoạt động 2: trình bày ví dụ 3 trong SGK trang 58.

HOẠT ĐỘNG CỦA GIÁO VIÊN HOẠT ĐỘNG CỦA HỌC SINH

Ví dụ 3 : Tìm kiếm nhị phân

Gọi HS xác định Input và Output của bài toán?

* Thuật toán:

Bước 1: Nhập N, các số hạng A1, A2, …, AN,

và khóa k;

Bước 2: Dau  1; Cuoi  N;

2

Dau Cuoi Giua   

  

Bước 4: Nếu A Giua = k thì thông báo chỉ số

Giua, rồi kết thúc;

Bước 5: Nếu A Giua > 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.

Gọi HS lên bảng viết phần khai báo và nhập dữ

liệu cho bài toán?

Chương trình như sau :

dau := 1 ; cuoi := n ;

TK := false ;

while (dau <= cuoi) and Not TK Do

Begin

Input: Dãy A là dãy tăng gồm N số

nguyên dương A1, A2, …, AN, số

nguyên k.

Output: Chỉ số i mà A i = k hoặc thông

báo “Khong tim thay” nếu không có

số hạng nào của dãy A có giá trị bằng

k.

Program sapxep ; Uses crt ;

var A : Array[1 250] of integer ; n,i,k : Integer ;

dau,cuoi,giua : Integer ;

TK : boolean ; Begin

clrscr ;

Trang 8

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 ;

Sau khi đã tìm ra được số cần tìm kết quả đã

được hiện thị trên màn hình chưa?

Cho một bộ dữ liệu cụ thể và yêu cầu HS chạy

chương trình với bộ dữ liệu đó

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);

Kết quả chưa hiển thị được trên màn hình, ta phải dùng thủ tục để đưa dữ liệu

đó ra màn hình

If TK then write('Chi so la : ',giua) else write(' Khong tim thay ');

readln ; End

4 Củng cố và dặn dò

- Thuật toán tráo đổi giá trị của hai phần tử, sử dụng biến trung gian để lưu giá trị tạm thời.

- Đối với thuật toán tìm kiếm nhị phân, mảng phải được sắp xếp có thứ tự (dãy tăng hoặc

dãy giảm)

- Về nhà làm các bài tập 5,6 SGK_79 và chuẩn bị ví dụ 2 SGK_57.

V RÚT KINH NGHIỆM TIẾT DẠY

Tổ trưởng duyệt

Ngày tháng 1 năm 2010

Phạm Anh Quý

Giáo viên soạn

( Chữ ký, Họ tên)

Giáp Văn Khiêm

Trang 9

Ngày soạn : 30/01/2010 Ngày dạy : 11/01/2010 Tiết :22 §11 KIỂU MẢNG (TIẾT 3) I MỤC TIÊU: 1 Kiến thức: Học sinh sau tiết học sẽ: Nắm được khái niệm mảng 1 chiều Hiểu cách khai báo và truy cập đến các phần tử của mảng 2 Kỹ năng:  Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều  Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng 3 Thái độ:  Có tư duy đúng đắn trong việc áp dụng mảng 1 chiều để giải các bài toán đơn giản  Tạo lòng ham muốn giải được một số bài tập tính toán đơn giản bằng ngôn ngữ Pascal II ĐỒ DÙNG DẠY HỌC 1 Giáo viên: − Sách giáo viên, giáo án, SGK,

2 Học sinh: − Vở ghi, SGK III PHƯƠNG PHÁP: Phương pháp thuyết trình, vấn đáp, kết hợp tạo tình huống có vấn đề IV HOẠT ĐỘNG DẠY HỌC 2 Ổn định tổ chức Kiểm tra sĩ số: Lớp - Sĩ số Ngày dạy Vắng Tên HS vắng 11A1 – 39 / / 2010

11A2 – 41 / / 2010

11A3 – 44 / / 2010

11A4 – 49 / / 2010

11A5 – 50 / / 2010

11A6 – 47 / / 2010

11A7 – 44 / / 2010

11A8 – 46 / / 2010

11A9 – 47 / / 2010

11A10 – 51 / / 2010

11A11 – 41 / / 2010

Trang 10

2 Kiểm tra bài cũ

Trình bày cách khai báo gián tiếp kiểu dữ liệu mảng một chiều trong Turbo Pascal Có khai báo sau, cho biết tên của kiểu dữ liệu mới, kiểu mảng đó có bao nhiêu phần tử, mỗi phần tử của mảng thuộc kiểu gì, và tên của các mảng sẽ dùng trong chương trình là gì?

Type diem = array[1 15] of byte; Var A, mang: diem;

3 Bài mới.

Hoạt động 1: Trình bày ví dụ 2 trong SGK trang 57

HOẠT ĐỘNG CỦA GIÁO VIÊN HOẠT ĐỘNG CỦA HỌC SINH

Ví dụ 2 : Sắp xếp dãy số nguyên bằng thuật toán

tráo đổi

Trình Input và Output của bài toán?

Việc sắp xếp dãy số là việc hoán vị các số đó sao

cho chúng tạo thành một dãy tăng dần hoặc giảm

dần Chúng ta có thể liên tưởng tới công việc xếp

hàng ở mỗi buổi chào cờ

* Ý 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

* Thuật toán:

Gọi HS lên bảng viết phần khai báo và phần nhập

dữ liệu cho chương trình?

GV: Hoàn thiện chương trình

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

- 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

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 ;

Trang 11

write(a[i]:8) ;

readln ;

End

Writeln('chi so ptu lon nhat : ',csmax);

readln ;

End

- Trong thuật toán cần duyệt qua bao nhiêu lần?

- Mỗi lượt thực hiện trên đoạn nào của dãy số?

- Câu lệnh nào trong chương trình thể hiện hai

yêu cầu trên?

- Mỗi lượt duyệt thực hiện các thao tác gì?

- Câu lệnh nào thực hiện việc tráo đổi?

Thuật toán cần duyệt n! lần

Trên đoạn n-1 phần tử

Câu lệnh: For j := n downto 2 do Begin

For i := 1 to j-1 do Đưa giá trị lớn nhất về cuối dãy

Câu lệnh: If A[i] > A[i+1] then Begin

tg := A[i] ; A[i] := A[i+1] ; A[i+1] := tg ; End ;

Hoạt động 2: thực hiện với các bộ số cụ thể

- Mô phỏng thuật toán với bộ dữ liệu:

6 1 5 3 7 8 10 7 12 4

Thực hiện theo yêu cầu.

Củng cố và dặn dò

- Thuật toán tráo đổi giá trị của hai phần tử, sử dụng biến trung gian để lưu giá trị tạm thời.

- Về nhà làm các bài tập 7 SGK_79 và chuẩn bị bài tập thực hành 3.

V RÚT KINH NGHIỆM TIẾT DẠY

Tổ trưởng duyệt

Ngày tháng 1 năm 2010 ( Chữ ký, Họ tên)Giáo viên soạn

Trang 12

Ngày soạn: 05/01/2010 Ngày giảng:13/01/2010 Tiết PPCT: 23 BÀI THỰC HÀNH SỐ 3 (tiết 1) I MỤC TIÊU 1 Kiến thức - Giới thiệu cho học sinh cách lưu trữ mảng một chiều trên máy tính và các thao tác với mảng một chiều 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ử 3 Thái độ - Góp phần rèn luyện tác phong, tư duy lập trình: Tự giác, tich 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, giáo án, SGK 2 Chuẩn bị của học sinh - Sách giáo khoa 3 Nội dung ghi bảng – Nhắc lại cách mô tả mảng một chiều, cách khai báo, cách tham chiếu III HOẠT ĐỘNG DẠY-HỌC 1 Ổn định tổ chức Kiểm tra sĩ số: Lớp - Sĩ số Ngày dạy Vắng Tên HS vắng 11A1 – 38 / / 2010

11A2 – 41 / / 2010

11A3 – 44 / / 2010

11A4 – 49 / / 2010

11A5 – 50 / / 2010

11A6 – 47 / / 2010

11A7 – 44 / / 2010

11A8 – 46 / / 2010

11A – 47 / / 2010

Ngày đăng: 01/04/2021, 22:36

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w