Tiết 21:  KIỂU MẢNG (Tiết 1)

 

I. Mục đích, yêu cầ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 mảng một chiều, cách khai báo biến kiểu mảng một chiều.

2. Kĩ năng

-       Biết được các thành phần trong khai báo kiểu mảng một chiều;

-       Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình.

-       Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên.

-       Biết cách tham chiếu đến các phần tử của mảng một chiều.

     3.  Thái độ:

-       Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.

     4. Phát triển năng lực                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

-       Hình thành và phát triển cho học sinh năng lực tự học, năng lực công nghệ thông tin, năng lực giải quyết vấn đề.

-       Mô hình hoá các tình huống trong thực tiễn bằng cấu trúc mảng một chiều qua việc khai báo mảng.

II. PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC

  1. Phương pháp: Thuyết trình, vấn đáp.

  2. Phương tiện: Máy chiếu, máy tính, phòng máy, bảng.

III. LƯU Ý SƯ PHẠM.

-         Bước đầu hình thành khái niệm về cấu trúc mảng .

-         Cần xây dựng các bài thực hành và tổ chức thực hiện tại phòng máy để học sinh đạt được những kĩ năng theo yêu cầu.

IV. TIẾN TRÌNH BÀI DẠY.

  1. Ổn định lớp: (Thời lượng:........)

 2. Kiểm tra bài cũ, gợi động cơ (Thời lượng...........)

          3. Nội dung bài giảng

Hoạt động 1:  Tìm hiểu bài toán mở đầu

 

Hoạt động của Giáo viên và Học sinh

Nội Dung

GV: Nội dung bài toán: Viết chương trình nhập từ bàn phím nhiệt độ trung bình của 7 ngày trong tuần. Đưa ra màn hình nhiệt độ trung bình của cả tuần.

 


Gv: trong chương trình cần khai báo những biến nào?

Hs: T1,t2,....t7: lưu nhiệt độ tb của 7 ngày trong tuần

tb: lưu nhiệt độ tb của cả tuần.

- kiểu dl: số thực

Gv: yêu cầu học sinh lên viết phần khai báo của ct.

Hs: lên bảng làm bài.

 

 

Gv: gọi 1 hs lên bảng viết lệnh nhập nhiệt độ và tính nhiệt độ tb

 

 

 

 

Gv: Đây là một bài toán khá đơn giản. Nhưng nếu thay đổi bài toán yêu cầu tính nhiệt độ tb của cả năm ( 365 ngày)?

Hs: phải khai báo 366 biến do đó: ct dài, dễ nhầm lẫn,

 

Cần dùng mảng 1 chiều để lưu trữ

nhiệt độ

20

16.8

.......

23.2

ngày

1

2

 

365

 

-> Khái niệm mảng 1 chiều

 

 

 

 

 

 

 

 

 

 

1. Bài toán đặt vấn đề

Chương trình:

Program nhietdo;

var t1,t1,t3,t4,t5,t6,t7,tb: real;

begin

write(‘nhap nhiet do cac ngay trong tuan:’);

readln(t1,t2,t3,t4,t5,t6,t7);

tb:=(t1+t2+t3+t4+t5+t6+t7)/7;

write(tb);

readln;

end.

 

 

 

 

 

 

 

1. K/n mảng một chiều

    Mảng 1 chiều là dãy hữư hạn các phần tử cùng kiểu, mảng được đặt tên, mỗi phần tử của mảng có 1 chỉ số.


 

 

Hoạt động 2: Khai báo mảng một chiều và tham chiếu đến phần tử của  mảng

Hoạt động của Giáo viên và Học sinh

Nội Dung

 

 

 

 

 

GV:Diễn giải cú pháp

HS: Ghi bài

 

 

 

 

 

 

 

 

 

VD1: viết khai báo cho bài toán nhiệt độ tb của cả năm.

- tên biến mảng: nhietdo

- chỉ số đầu: 1

- chỉ số cuối: 365

- kiểu dl: real

- số lượng pt: 365

 

=> học sinh lên viết khai báo

 

2. Khai báo (Có hai cách)

Cách 1: Khai báo trực tiếp:

Var array[kiểu chỉ số] of

Cách 2: Khai báo gián tiếp

Type array[kiểu chỉ số] of

Var

Trong đó: +Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1...n2(n1

+ Kiểu phần tử là kiểu dl của các phần tử của mảng.

 

VD1:

c1/ var nhietdo:array[1..365] of real;

c2/ type A: array[1..365] of real;

       var nhietdo:A;

 

 

 

 

VD2:

Var Nhietdo: array [1..Max] Of real;

Ví dụ 2: Khai báo mảng tối đa  100 số nguyên (chỉ số đầu tiên là 1)


 

 

Ta có các cách sau:

Cách 1:

Var a: Array[1..100] Of Integer;

Cách 2:

Const Nmax = 100;

Var a: Array[1..Nmax] Of integer;

3. Tham chiếu tới phần tử cuả mảng

Tên_biến[chỉ số]

V. ĐÁNH GIÁ CUỐI BÀI, DẶN DÒ

-       Câu hỏi, bài tập về nhà:  

-       Đọc ví dụ 1 và ví dụ 2/ trang 56+57 SGK :

-       Xem lại thuật toán tìm phần tử lớn nhất của dãy số nguyên và thuật toán sắp xếp dãy số nguyên bằng thuật toán hoán đổi.

VI. RÚT KINH NGHIỆM, BỔ SUNG:

............................................................

............................................................

............................................................

............................................................

............................................................

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

Tiết 22:


KIỂU MẢNG (Tiết 2)

 I. Mục đích, yêu cầu

1. Kiến thức:

-       Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong mảng, các thao tác nhập, in ra các phần tử của mảng.

-       Củng cố và làm HS hiểu xâu sắc hơn về những thuật toán tìm kiếm, sắp xếp cơ bản mà học sinh đã học ở lớp 10.

2. Kĩ năng:

-       Hs sử dụng được biến kiểu mảng một chiều để giải quyết một  bài toán đơn giản.

3. Tư duy, thái độ:

-       Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức

     4. Phát triển năng lực                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

-       Hình thành và phát triển cho học sinh năng lực tự học, năng lực công nghệ thông tin, năng lực giải quyết vấn đề.

-       Mô hình hoá các tình huống trong thực tiễn bằng cấu trúc mảng một chiều qua việc xử lí một số thao tác nhập, hiển thị phần tử mảng, tìm GTLN cho phần tử của mảng.

II. PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC

  1. Phương pháp: Thuyết trình, vấn đáp.

  2. Phương tiện: Máy chiếu, máy tính, phòng máy, bảng.

III. TIẾN TRÌNH BÀI DẠY.

  1. Ổn định lớp: (Thời lượng:........)

  2. Kiểm tra bài cũ, gợi động cơ (Thời lượng:..........)

HS1. Trình bày các cách khai báo kiểu mảng trong NNLT Pascal?

HS2. Khai báo mảng gồm N số nguyên (N500). (theo 2 cách: trực tiếp và gián tiếp).

Const N = 500;

C1: Var M : array[1..N] of integer;

C2: Type Mnguyen = array[1..N] of integer;

        Var M : Mnguyen;


HOẠT ĐỘNG CỦA GV VÀ HS

NỘI DUNG

 

 

 

 

 

 

 

 

GV: Nêu ra chú ý: HS nên sử dụng For - do để nhập xuất dữ liệu cho phần tử của mảng như vậy câu lệnh sẽ ngắn gọn và dễ hiểu hơn.

 

 

 

 

 

 

 

 

 

GV: Hướng dẫn

HS: Lắng nghe, quan sát chương trình mẫu trong SGK

 

 

 

 

-        Input : Số nguyên dương N và dãy số A1, A2, ….., AN

4.Các thao tác xử lý mảng 1 chiều:

   a. Nhập dữ liệu cho các phần tử của mảng A:

C1.  Dùng vòng for

  For i:=0 to 10 do

      begin

        Write(‘Nhập phần tử thứ ‘ , i , ‘: ‘);

        Readln(A[i]);

      end;

C2.  Dùng While :

    i:=0;

    While i<= 10 do

      begin

        Write(‘Nhap phần tử thứ ‘, i, ‘: ‘);

        Readln(A[i]);

        i:=i+1;

     end;

b. Ðể in các gía trị của mảng A lên màn hình, ta viết :

            For i:=0 to 10 do Write(A[i]:6:2);

5. Một số ví dụ :

VD1: Viết chương trình cho bài toán tính nhiệt độ trung bình của năm

Ví dụ 2 : Tìm phần tử lớn nhất của một dãy số nguyên .

Chương trình như sau :

Program timmax ;

Uses crt ;

var   a : array[1..250] of integer ;

       n,i,max,csmax : Integer ;


-        Output : Chỉ số và giá trị của số lớn nhất trong dãy

-        Ý tưởng :

 

+       Đặ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 .

 

 

 

 

GV: Đưa ra ví dụ

 

Chỉ số:

1

2

3

4

5

dãy A:

5

10

4

7

9

 

Phần tử Max: A[2] = 10

Chỉ số phần tử Max là: 2

 

 

 

Begin

    clrscr ;

    Write('Nhap n = ') ;

    Readln(n) ;

    For i := 1 to n do

       Begin

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

            readln(a[i]) ;

       End ;

    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 .

 

V. ĐÁNH GIÁ CUỐI BÀI, DẶN DÒ

-       Các kiến thức đã học:  

-       Xem lại thuật toán tìm phần tử lớn nhất của dãy số nguyên

-       Xem trước thuật toán sắp xếp dãy số nguyên bằng thuật toán hoán đổi.

VI. RÚT KINH NGHIỆM, BỔ SUNG:

.....................................................................................

.....................................................................................

.....................................................................................

 


 

 

 

 

 

 

Tiết 23: KIỂU MẢNG (Tiết 3)

 I. Mục đích, yêu cầu

1. Kiến thức:

-       Củng cố và làm HS hiểu xâu sắc hơn về những thuật toán tìm kiếm, sắp xếp cơ bản mà học sinh đã học ở lớp 10.

2. Kĩ năng:

-       Hs sử dụng được biến kiểu mảng một chiều để giải quyết một  bài toán đơn giản.

3. Tư duy, thái độ:

-       Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức

4. Phát triển năng lực                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

-       Hình thành và phát triển cho học sinh năng lực tự học, năng lực công nghệ thông tin, năng lực giải quyết vấn đề.

-       Mô hình hoá các tình huống trong thực tiễn bằng cấu trúc mảng một chiều qua việc xử lí bài toán sắp xếp, đếm số lần xuất hiện.

II. PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC

  1. Phương pháp: Thuyết trình, vấn đáp.

  2. Phương tiện: Máy chiếu, máy tính, phòng máy, bảng.

III. LƯU Ý SƯ PHẠM.

-         HS cần hình dung được cơ bản về hoạt động của mảng 1 chiều.

-         Cần xây dựng các bài thực hành và tổ chức thực hiện tại phòng máy để học sinh đạt được những kĩ năng theo yêu cầu.

IV. TIẾN TRÌNH BÀI DẠY.

  1. Ổn định lớp: (Thời lượng:........)

  2. Kiểm tra bài cũ, gợi động cơ (Thời lượng:..........)

HOẠT ĐỘNG CỦA GV VÀ HS

NỘI DUNG


GV:Nêu bài toán, y/cầu hs xác định In/Output của bài toán.

 

HS: Đọc đề và xác định bài toán.

In: N (N250), dãy A (A[i]<500).

Out: dãy A không giảm

 

GV: Y/cầu hs trình bày lại thuật toán sắp xếp tráo đổi. (Đã học ở lớp 10)

 

HS:Thuật toán

B1: Nhập N, dãy A ;

B2: jN;

B3: nếu j<2 thì đưa ra dãy đã được sắp xếp, KT;

B1: jj-1; i1;

B2: Nếu i>j thì Qlại B3;

B6: Nếu A[i]>A[i+1] thì tráo đổi A[i] và A[i+1];

B7: Quay lại B2.

 

 

 

 

 

 

 

 

 

Ta dùng biến Dem kiểu nguyên để đếm số lần xuất hiện của x. Ðầu tiên ta gán

4. Một số ví dụ :

VD4: Số nguyên dương N (N250) và dãy A gồm N số nguyên dương, mỗi số đều không vượt quá 500. Hãy sắp xếp dãy A thành dãy không giảm

Var A: array[1..300] of integer;

        N, i, j :integer;

Begin

{tao mang}

Write(‘Nhap n = ’); readln(n);

For i:=1 To n Do

     begin

        write(‘phan tu thu ’,i,’ =’);                 

        readln(A[i]);

     end;

{sap xep mang}

For j := N Downto 1 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;

{dua ra mang da sap xep}

Writeln (‘Mang da duoc sap xep ’);

For i :=1 To N Do write (a[i]:4);

Readln

End.

VD4:

Ðếm số lần xuất hiện của gía trị x trong dãy A1, A2, ..., An .


Dem:=0, sau đó duyệt từng phần tử A1, A2, ..., An, mỗi khi có một phần tử bằng x thì tăng biến Dem lên một đơn vị. Kết qủa là biến Dem có gía trị đúng bằng số phần tử bằng x. Hai lệnh chính của thuật toán là:

 

VD:  Đếm trong dãy số A có bao nhiêu số 0, ta viết:

 

    Nhận xét: Ðẳng thức A[i]=x ( hay A[i]=0 ) là điều kiện để biến Dem được tăng thêm 1, vậy bài toán trên có thể mở rộng là: hãy đếm số phần tử của mảng A thỏa mãn một điều kiện cho trước. Trong lệnh For ở trên, khi thay đẳng thức A[i]=x bằng A[i] thỏa mãn điều kiện , ta được thuật toán tổng quát hơn :

       

    Dem:=0;

    For i:=1 to N do If A[i]=x then Dem:=Dem+1;

  

 

      Dem:=0;

    For i:=1 to N do if A[i]=0 then Dem:=Dem+1;

    Writeln(‘ Có ‘, Dem , ‘ số không ‘);

                

 

Dem:=0;

                For i:=1 to N do If A[i] thỏa mãn điều kiện then Dem:=Dem+1;

 

 

 

V. ĐÁNH GIÁ CUỐI BÀI, DẶN DÒ

-     Các kiến thức đã học.  

-     Xem lại thuật toán sắp xếp dãy số nguyên bằng thuật toán hoán đổi, thuật toán tìm kiếm.

VI. RÚT KINH NGHIỆM, BỔ SUNG:

.....................................................................................

.....................................................................................

.....................................................................................

.....................................................................................

.....................................................................................

 

nguon VI OLET