Tải bản đầy đủ (.pdf) (8 trang)

Giáo án giảng dạy môn Tin học 11 - Bài 11: Kiểu mảng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (101.41 KB, 8 trang )

<span class='text_page_counter'>(1)</span>Trường THPT Vĩnh Bảo. Gi¸o ¸n Tin Häc líp 11. Chương IV: Kiểu dữ liệu có cấu trúc Ngµy so¹n: 26/12/2009 Ngµy d¹y: TiÕt 20, 21:. Bµi 11: KiÓu m¶ng. 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 1 chiÒu. BiÕt mét lo¹i biÕn cã chØ sè - HiÓu kh¸i niÖm m¶ng mét chiÒu, - BiÕt cÊu tróc t¹o kiÓu m¶ng mét 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. - 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ả quyết 1 số bài toán cụ thể.. 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 tính, máy chiếu, phông chiếu và bảng. III. Néi dung bµi gi¶ng: 1. ổn định lớp và kiểm tra sĩ số 2. KiÓm tra bµi cò: Viết chương trình tính: a. S= 12 + 22 + .....+ n2 víi n ®­îc nhËp vµo tõ bµn phÝm b. S= 13 + 33 + ...... + n3 víi n ®­îc nhËp vµo tõ bµn phÝm 3. Bµi míi: Hoạt động của giáo viên và học sinh Néi dung ghi b¶ng - GV: Cho häc sinh lµm vÝ dô trong sgk:. Nhập vào nhiệt độ trung bình của mỗi ngày trong tuần. tính và in ra màn hình nhiệt độ trung bình của 1 tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tÝnh ®­îc . Gi¸o Viªn: TrÇn ThÞ H»ng. 6 Lop11.com. Tæ: To¸n- Tin.

<span class='text_page_counter'>(2)</span> Trường THPT Vĩnh Bảo - GV: H·y cho biÕt input vµ output cña bµi to¸n. Gi¸o ¸n Tin Häc líp 11. -HS: Input: t2, t3, t4, t5, t6, t7, cn, Output: tb và giá trị đếm - GV: Gợi ý để học sinh viết chương trình Var t2, t3, t4, t5, t6, t7, cn,tb: real; Dem: byte; Begin Write(‘nhap vµo nhiet do cua 7 ngay’); Readln(t2, t3, t4, t5, t6, t7, cn); Tb:=( t2+t3+t4+t5+t6+ t7+ cn)/7; Dem:=0; If t2>tb then dem:=dem+1; If t3>tb then dem:=dem+2; If t4>tb then dem:=dem+3; If t5>tb then dem:=dem+4; If t6>tb then dem:=dem+5; If t7>tb then dem:=dem+6; If cn>tb then dem:=dem+7; Writeln (‘nhiet do trung binh cua tuan la’, tb:4:2); Writeln(‘so luong ngay co nhiet do cao hon nhiet do trung binh la’,dem:3); Readln; End. - GV: Trong bài toán trên, số lượng ngày tính là 7 ngày. Nếu ta cần tính số lượng ngày là N 1. Kiểu mảng một chiều ngày thì chương trình trên sẽ có hạn chế gì? - M¶ng mét chiÒu lµ mét d·y h÷u h¹n c¸c phÇn tö cã cïng kiÓu. C¸c phÇn tö trong - HS: Khai b¸o nhiÒu biÕn m¶ng cã cïng chung mét tªn vµ ph©n biÖt Chương trình viết rất dài víi nhau bëi chØ sè * DiÔn gi¶i: §Ó kh¾c phôc nh÷ng h¹n chÕ trên , người ta ghép 7 biến trên thành một dãy và đặt nó chung chung một tên và đánh cho Gi¸o Viªn: TrÇn ThÞ H»ng. 7 Lop11.com. Tæ: To¸n- Tin.

<span class='text_page_counter'>(3)</span> Trường THPT Vĩnh Bảo Gi¸o ¸n Tin Häc líp 11 mỗi phần tử trên một chỉ số. Đó là mảng một - Với mảng một chiều ta quan tâm đến: chiÒu + Tªn m¶ng mét chiÒu - GV: Tham khảo sgk và cho biết thế nào là + Số lượng phần tử trong mảng m¶ng mét chiÒu? + KiÓu d÷ liÖu phÇn tö - HS: §äc sgk vµ tr¶ lêi + C¸ch khai b¸o m¶ng mét chiÒu - Hái: §Ó m« t¶ m¶ng mét chiÒu ta cÇn x¸c + C¸ch truy cËp vµo tõng phÇn tö cña định yếu tố nào? m¶ng. a)Khai b¸o m¶ng mét chiÒu - Trong ng«n ng÷ Pascal,m¶ng mét chiÒu ®­îc khai b¸o b»ng hai c¸ch nh­ sau: C¸ch 1: Khai b¸o trùc tiÕp Var <tªn biÕn m¶ng>: Array [kiÓu chØ sè] of <kiÓu phÇn tö>; GV: §­a ra c¸ch khai b¸o m¶ng mét chiÒu * VÝ dô: trong NNLT Pascal, gi¶i thÝch ý nghÜa c¸c tõ Var M1:array [1..5] of integer; kho¸ míi. - Khai b¸o m¶ng cã tªn biÕn m¶ng lµ M1 GV: Khai b¸o b»ng c¸ch nµo tiÖn lîi h¬n? gåm 5 phÇn tö thuéc kiÓu nguyªn øng víi HS: Thường trả lời cách một c¸c chØ sè 1, 2, 3, 4, 5 nghÜa lµ M1[1], GV: Tuỳ từng trường hợp cụ thể mà ta dùng M1[2], M1[3], M1[4], M1[5] cách một hay cách hai, thường thì sử dụng C¸ch 2: Khai b¸o gi¸n tiÕp c¸ch mét nhiÒu h¬n. Type < tªn kiÓu m¶ng> = array [kiÓu chØ sè] of < kiÓu phÇn tö>; Var <tªn biÕn m¶ng> : <tªn kiÓu m¶ng>;. GV: §­a ra mét sè khai b¸o m¶ng trong * VÝ dô: Pascal, ®­a ra vÝ dô: Type M1= array [1..5] of integer; GV: Khai báo cách nào tiện lợi hơn?(tương Var a: M1; tù m¶ng mét chiÒu) * Gi¶i thÝch HS : Chän c¸ch 1 - Type là từ khoá dùng để khai báo biến GV: Tuỳ theo từng trường hợp cụ thể nhưng - Array là từ khoá để khai báo mảng. thương thì cách 1 hay được dùng hơn. GV: Gọi một số HS lên khai báo một số biến - Kiểu chỉ số thường là đoạn số nguyên liªn tôc cã n1..n2, víi n1 lµ chØ sè ®Çu vµ m¶ng mét chiÒu theo yªu cÇu cña GV. n2 lµ chØ sè cuèi (n1<= n2) Gi¸o Viªn: TrÇn ThÞ H»ng. 13 Lop11.com. Tæ: To¸n- Tin.

<span class='text_page_counter'>(4)</span> Trường THPT Vĩnh Bảo. Gi¸o ¸n Tin Häc líp 11 - KiÓu thµnh phÇn lµ kiÓu d÷ liÖu cña phÇn tö m¶ng. -§Ó truy cËp vµo phÇn tö m¶ng, ta viÕt: <Tªn biÕn m¶ng>[ChØ sè] VÝ dô - M1[3] lµ phÇn tö ë vÞ trÝ thø 3 cña m¶ng M1. - GV: Cho mét sè khai b¸o m¶ng sau. - A[i] lµ phÇn tö ë vÞ trÝ thø i cña m¶ng A. Type Manga= array [1..200] of real; Mangb = array [byte] of real; Mangc = array [-100..0] of real ; Mangd = array[ 1...100] of real;. - Hái: H·y cho biÕt khai b¸o m¶ng nµo B. Mét sè vÝ dô. đúng? Ví dụ 1: Viết chương trình nhập vào một - Hái: ë vÝ dô nµy, yªu cÇu ta ph¶i lµm nh÷ng d·y A gåm N sè nguyªn (N <100). H·y viÖc g×? hiÓn thÞ d·y A ra mµn h×nh. - HS: Cã 2 viÖc ph¶i lµm: NhËp d·y A gåm N phần tử, và in dãy đó ra màn hình - Hỏi: Xác định Input và output của bài toán? - HS: Input: Số nguyên dương N ( N<100) Output: HiÓn thÞ d·y ra mµn h×nh - Hái: Ta cÇn khai b¸o nh÷ng g×? - HS: Khai b¸o m¶ng 1 chiÒu vµ c¸c biªn liªn quan - GV: Yªu cÇu häc sinh viÕt khai b¸o m¶ng, vµ c¸c biÕn cã liªn quan? - HS: Var A: array [1..100] of integer ; i, n: Byte; - Hái: §Ó nhËp ®­îc mét d·y gåm N phÇn tö ta ph¶i sö dông lÖnh nµo? - HS: Ta sö dông lÖnh For- do - Hái: §Ó nhËp phÇn tö thø i cña m¶ng A tõ Gi¸o Viªn: TrÇn ThÞ H»ng. 13 Lop11.com. program vi_du1; Uses crt; var a:array[1..100] of integer; i, n:integer; begin Write(‘Nhap so phan tu cua mang n = ’); readln(n); For i:=1 to n do Begin Write(‘Nhap a[‘,i,’]= ’); readln(a[i]); End; {hoÆc write (‘ nhap ph©n tu thu’,i,’=’) ; readln(A[i]) ; Write(‘Cac phan tu cua mang A la: ‘); For i:=1 to n do Write(a[i],’ ‘); Readln; End. Tæ: To¸n- Tin.

<span class='text_page_counter'>(5)</span> Trường THPT Vĩnh Bảo bµn phÝm ta viÕt lÖnh thÕ nµo?. Gi¸o ¸n Tin Häc líp 11. - HS: Ta viÕt Readln (A[i]) ; - GV: Hướng dẫn học sinh viết tiếp đoạn nhËp c¸c phÇn tö cña m¶ng. - Hỏi: Để đọc tất cả các phần tử của mảng A ta thùc hiÖn lÖnh nµo? - HS: KÕt hîp gi÷a For- do vµ write(A[i]) ; - HS: Viết chương trình theo hướng dẫn của gi¸o viªn - GV: Cã thÓ dïng m¸y chiÕu minh ho¹ chương trình để học sinh thấy rõ. - Hỏi: Xác định input và output của bài toán - HS: Tr¶ lêi c©u hái. Ví dụ 2: Cho số nguyên dương N và dãy A gåm N sè nguyªn A1, A2, ..AN H·y hiÓn thÞ m¶ng A ra mµn h×nh vµ t×m gi¸ trÞ lín nhÊt cña d·y A vµ cho biÕt vÞ trÝ cña nã trong d·y A Gîi ý:. Input: sè nguyªn N vµ c¸c phÇn tö, - GV: Hướng dẫn học sinh dựa vào ví dụ 1 để A1, A2, ..AN gi¶i quyÕt vÝ dô 2: - HS: Viết chương trình theo sự hướng dẫn Output: - Hiển thi mảng A ra màn hình cña gi¸o viªn. - Gi¸ trÞ lín nh©t Max vµ vÞ trÝ cña - Hái: ë vÝ dô 2 cã yªu cÇu g× míi? số đó trong mảng A - HS: yªu cÇu míi: T×m gi¸ trÞ lín nhÊt Max vµ cho biÕt vÞ trÝ cña nã. - GV: Gîi nhí l¹i cho häc sinh nhí l¹i thuËt toán tìm giá trị lớn nhất của một dãy số đã học trong chương trình lớp 10 - Hái: Theo thuËt to¸n th× ®Çu tiªn ta ph¶i lµm g×? - HS: Ta cho gi¸ trÞ ®Çu tiªn cña d·y lµ sè lớn nhất, sau đó ta đi so sánh giá trị lớn nhất nµy víi c¸c sè h¹ng cßn l¹i trong d·y A - Hái: Ta dïng nh÷ng lÖnh nµo: - HS: LÖnh g¸n Max:= A[i] ; vµ dïng lÖnh Gi¸o Viªn: TrÇn ThÞ H»ng. program vi_du2; Uses crt; var a:array[1..100] of integer; i, n, max, vitri : integer; Begin Write(‘Nhap so phan tu cua mang n=’) ; readln(n); For i:=1 to n do Begin Write(‘Nhap a[‘,i,’]= ’); readln(a[i]); End; Write(‘Cac phan tu cua mang la ‘);. 13 Lop11.com. Tæ: To¸n- Tin.

<span class='text_page_counter'>(6)</span> Trường THPT Vĩnh Bảo For- do. Gi¸o ¸n Tin Häc líp 11. For i:=1 to n do Write(a[i],’ ‘); - Hái: VËy biÕn chØ sè i ch¹y tõ gi¸ trÞ nµo: writeln; - HS: Biến chỉ số i nhận giá trị từ 2 đến N. Max:=a[1] ; vitri :=1; - GV: Hướng dẫn học sinh viết chương trình, For i:=2 to n do kiÓm tra vµ gi¶i thÝch cho häc sinh hiÓu If a[i]> Max then nh÷ng lÖnh nµy. Begin Max:=a[i] ; - HS: Học sinh viết chương trình. vitri :=i End; Writeln(‘ gia tri lon nhat Max= ‘,Max); Writeln(‘Vi tri: ‘, vitri); Readln; End. Ví dụ 3: Viết chương trình nhập vào một d·y gåm N sè nguyªn ( N< 100).In d·y sè ra mµn h×nh. S¾p xÕp d·y theo thø tù không giảm bằng phương pháp tráo đổi.. - GV: Nh¾c l¹i thuËt to¸n cho häc sinh B1: NhËp N vµ d·y sè nguyªn. program vi_du3; Uses crt; B3: Nếu M< 2 thì đưa ra dãy đã được sắp var a:array[1..100] of integer; xÕp råi kÕt thóc i,j,n,tam:integer; B4: M  M-1; i 0 begin clrscr; B5: i i+1; Write(‘Nhap n : ’);readln(n); b6: NÕu i> M th× quay l¹i B3 For i:=1 to n do B7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho Begin nhau Write(‘Nhap a[‘,i,’]= ’); b8: Quay l¹i B5 readln(a[i]); End; Write(‘mang A vua nhap la: ‘); For i:=1 to n do Write(a[i],’ ‘);writeln; For j:=n downto 2 do For i:=1 to j-1 do If a[i]>a[i+1] then Begin Tam:=a[i]; a[i:=a[i+1]; B2: M  N. Gi¸o Viªn: TrÇn ThÞ H»ng. 13 Lop11.com. Tæ: To¸n- Tin.

<span class='text_page_counter'>(7)</span> Trường THPT Vĩnh Bảo. Gi¸o ¸n Tin Häc líp 11 a[i+1]:=tam; End; Writeln(‘Day sau khi sap xep: ); For i:=1 to n do Write(a[i],’ ‘); Readln; End.. Ví dụ 4: Viết chương trình nhập vào một d·y sè gåm N sè nguyªn (n<100).in d·y - Hái: ë vÝ dô n¸y ta cã thÓ ¸p dông thuËt số đó ra màn hình. Nhập vào một số to¸n nµo? nguyªn k bÊt kú. T×m xem trong d·y A cã - HS: ThuËt to¸n t×m kiÕm tuÇn tù sè h¹ng nµo cã gi¸ trÞ b»ng k hay kh«ng? - Hái: Cã thÓ ¸p dông thu¹t to¸n t×m kiÕm NÕu cã h·y cho biÕt vÞ trÝ cña nã. nhÞ ph©n ®­îc kh«ng? program vi_du4; - HS: áp dụng được nếu dãy A đã được sắp Uses crt; var a:array[1..100] of integer; xÕp theo thø tù t¨ng dÇn. i,j,n,tam,k, dau, cuoi:integer; - Hỏi: Vậy để áp dụng ví dụ 4 vào thuật toán begin timg kiÕm nhÞ ph©n ta ph¶i lµm g×? clrscr; - HS: Ph¶i s¾p xÕp d·y A theo thø tù t¨ng Write(‘Nhap n : ’);readln(n); dÇn. For i:=1 to n do - GV: Cho HS ¸p dông vÝ dô 2 h·y viÕt ®o¹n Begin Write(‘Nhap a[‘,i,’]= ’); chương trình nhập vào dãy A và sắp xếp dãy readln(a[i]); A theo thø tù t¨ng dÇn. End; - GV: Nh¾c l¹i thuËt to¸n t×m kiÕm nhÞ ph©n Write(‘Cac phan tu cua day vua nhap la: ‘); đã học trong chương trình lớp 10. For i:=1 to n do - Hái: Khi nµo thuËt to¸n dõng Write(a[i],’ ‘);writeln; For j:=n downto 2 do - HS: Khi Dau> Cuoi For i:=1 to j-1 do - Hái: §iÒu nµy cã nghÜa lµ g×? If a[i]>a[i+1] then - HS: NghÜa lµ khi Dau <= Cuoi th× thuËt to¸n Begin vÉn cßn tiÕp tôc Tam:=a[i]; a[i:=a[i+1]; - Hái: Trong vÝ dô nµy ta dïng cÊu tróc lÆp a[i+1]:=tam; nµo? End; - HS: Dïng cÊu tróc lÆp víi sè lÇn ch­a bݪt Writeln(‘Day sau khi sap xep: ); trước For i:=1 to n do - GV: H·y viÕt l¹i c©u lÖnh While- do Write(a[i],’ ‘); Write(‘Nhap so cam tim: ‘);readln(k); Gi¸o Viªn: TrÇn ThÞ H»ng. 13 Lop11.com. Tæ: To¸n- Tin.

<span class='text_page_counter'>(8)</span> Trường THPT Vĩnh Bảo - HS: tr¶ lêi c©u hái. Gi¸o ¸n Tin Häc líp 11 Dau := 1 ; Cuoi := n ;. - GV: Cho học sinh viết chương trình. Giua := (Dau + Cuoi) DIV 2 ; While (dau<=cuoi) and not(a[giua]=k]) do. -. begin Giua := (Dau + Cuoi) DIV 2 ; If a[giua] > k then Cuoi := Giua  1 ; If a[giua]< k then. Dau := Giua + 1 ;. End; If dau > cuoi then Write( ‘ day khong chua ‘,k) Else Write( k, ‘ Nam o vi tri : ‘, giua); Readln; End.. V. 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 bốn phần đồng thời gọi 4HS 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µ. * Mét sè bµi tËp vÒ nhµ Bài 1: Viết chương trình nhập vào mảng một chiều A gồm N phần tử nguyên. Đưa các giá trÞ cña m¶ng A ra mµn h×nh. a. TÝnh tæng c¸c phÇn tö cña m¶ng A. §­a kÕt qu¶ cña tæng ra mµn h×nh. b. Tính tổng các số âm, dương, chẵn, lẻ trong dãy A. Đưa kết quả ra màn hình. c. tÝnh tæng c¸c sè ch½n ë vÞ trÝ lÎ cã trong d·y A. §­a kÕt qu¶ ra mµn h×nh d. TÝnh tæng c¸c sè lÎ ë vÞ trÝ ch½n trong d·y A. §­a kÕt qu¶ ra mµn h×nh. Gi¸o Viªn: TrÇn ThÞ H»ng. 13 Lop11.com. Tæ: To¸n- Tin.

<span class='text_page_counter'>(9)</span>

×