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 (115.59 KB, 4 trang )
<span class='text_page_counter'>(1)</span>Ngày soạn: 07/ 10/ 2011 Ngày dạy: 15/ 11/ 2011 Tiết: 18. BÀI: MẢNG MỘT CHIỀU (Tiết 1) I. MỤC TIÊU 1. Kiến thức: - Biết khái niệm mảng một chiều và cách lưu trữ mảng một chiều trong máy tính - Biết cú pháp khai báo mảng một chiều - Biết cú pháp truy xuất đến từng phần tử trong mảng một chiều - Lợi ích của việc sử dụng mảng một chiều trong lập trình. 2. Kỹ năng: - Sử dụng mảng một chiều để giải quyết các bài toán. - Biết giải thuật và lập trình các thao tác trên mảng một chiều. 3. Thái độ: - Hứng thú trong học tập, kích thích tính sáng tạo và tư duy logic trong lập tình. II. PHƯƠNG PHÁP: Đàm thoại, nêu vấn đề và giải quyết vấn đề. III. CHUẨN BỊ 1. Giáo viên: Bài giảng, máy chiếu, giáo án 2. Sinh viên: Tài liệu, giáo trình, vở, bút. IV. HOẠT ĐỘNG DẠY HỌC: 1. Ổn định lớp – Kiểm tra sĩ số (1’) 2. Giảng bài mới TG Hoạt động của GV Hoạt động 1: Xét ví dụ 7’ - Lấy ví dụ: - Yêu cầu SV xác định: + Input + Output + Viết giải thuật - Nhận xét giải thuật và viết chương trình.. Hoạt động của SV - theo dõi bài -Suy nghĩ và trả lời: + Input: t1, t2, t3, t4 ,t5, t6, t7 + Output: t o , songay + Giải thuật: B1: Nhập vào nhiệt độ 7 ngày ( t1, t2, …, t7). B2: tính nhiệt độ trung bình: tb B3: songay = 0 B4: nếu t1 > tb thì tăng songay lên 1 B5: nếu t2 > tb thì tăng songay lên 1 B6: nếu t3 > tb thì tăng songay lên 1 B7: nếu t4 > tb thì tăng songay lên 1 B8: nếu t5 > tb thì tăng songay lên 1 B9: nếu t6 > tb thì tăng songay lên 1 B10:nếu t7 > tb thì tăng songay lên 1 B11: thông báo t o : tb B12: thông báo số ngày có nhiệt độ. cao hơn t o : songay - Suy nghĩ và trả lời:. Nội dung 1. Ví dụ: Viết chương trình nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần. Tính và đưa ra màn hình nhiệt độ trung bình của tuần và số ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình của tuần? Giải: Program Nhiet_Do; Uses CRT; Var t1, t2, t3, t4, t5, t6, t7, tb : real; songay : byte; BEGIN Clrscr; write(‘ Nhap vao nhiet do 7 ngay : ’); readln(t1,t2,t3,t4,t5,t6,t7); tb : = (t1+t2+t3+t4+t5+t6+t7)/7; songay : = 0 ; if (t1>tb) then songay := songay + 1; if (t2>tb) then songay := songay + 1;.
<span class='text_page_counter'>(2)</span> - Yêu cầu SV nhận xét chương trình + Câu lệnh trong CT. +Câu lệnh if lặp lại 7 lần. - Suy nghĩ và trả lời. - Đưa ra giả thuyết: vận dụng CT trên để giải quyết bài toán tính t o của 1 năm và đếm số ngày có t0 cao hơn t o thì gặp khó khăn gì? Hoạt động 2: Mảng một chiều: 25’ - Dẫn dắt vấn đề: - Theo dõi - Nêu vấn đề: - Giải quyết vấn đề + Số lượng phần tử trong + tập hữu hạn mảng là hữu hạn hay vô hạn? + Kiểu dữ liệu của các + Cùng chung kiểu dữ liệu phần tử trong mảng có đặc điểm như thế nào? + Tên của các phần tử có + Các phần tử có một tên đặc điểm gì? chung + Các phần tử phân biệt nhau dựa vào đâu? + Các phần tử phân biệt nhau dựa vào chỉ số (vị trí trong mảng) - Giới thiệu cách khai báo => Khái niệm mảng một chiều. biến mảng - theo dõi và ghi bài. - Lấy ví dụ minh họa - Yều cầu SV lấy ví dụ - Yêu cầu SV viết định nghĩa tên kiểu mảng. - Quan sát - Lên bảng cho ví dụ - Viết định nghĩa tên kiểu mảng. if (t3>tb) then songay := songay + 1; if (t4>tb) then songay := songay + 1; if (t5>tb) then songay := songay + 1; if (t6>tb) then songay := songay + 1; if (t7>tb) then songay : = songay + 1; Writeln(‘Nhiet do trung binh trong tuan =‘,tb:5:2); Writeln(‘so ngay co nhiet do cao hon nhiet do tb=‘,songay:5); Readln; END. 2. Mảng một chiều: a. Khái niệm Mảng một chiều là tập hữu hạn các phần tử có cùng kiểu dữ liệu, được lưu trữ trên máy tính bằng dãy liên tiếp các ô nhớ. +Các phần tử có một tên chung là tên mảng +Các phần tử phân biệt nhau thông qua chỉ số (vị trí phần tử trong mảng). Ví dụ: Dãy số nguyên; Danh sách tên lớp CT10; Bảng điểm SV; … b. Khai báo biến mảng một chiều: Cách 1: Khai báo trực tiếp: VAR <DS ten_bien_mang> : array[kiểu chỉ số] of <kiểu phần tử>; Ví dụ: Var t : array[1..100] of real; Cách 2: Khai báo gián tiếp: TYPE <Ten_kieu_mang> = array[kiểu chỉ số] of <kiểu phần tử>; VAR <DS ten_bien_mang> : <Ten_kieu_mang>; Trong đó: + DS ten_bien_mang: dãy tên biến mảng ngăn cách nhau bằng dấu phẩy ‘,’ + Kiểu chỉ số: Là kiểu dữ liệu đếm được như: kiểu nguyên (byte, shortint), ký tự, đoạn con. Thông thường để đơn giản, dễ hiểu trong việc truy xuất đến các phần tử trong mảng ta nên sử dụng kiểu đoạn con (N1 .. N2) (N1<=N2) để khai báo kiểu chỉ số. Dùng để xác định số phần tử trong mảng, và chỉ số của từng phần tử trong mảng + Kiểu phần tử: Kiểu dữ liệu của các phần tử trong mảng. Chú ý:.
<span class='text_page_counter'>(3)</span> - Lấy ví dụ: - Yêu cầu SV xác định phạm vị của chỉ số phần tử.. - Xác định cách truy xuất đúng: Kytu: array[0..255] of char; a. Kytu[‘a’] b. Kytu 0 c. Kytu[256] d. Kytu[0] - Yêu cầu SV lên bảng viết lệnh nhập/xuất giá trị cho phần tử: a[i] - Nhận xét và kết luận. - Trả lời. - Khi khai báo thành công máy tính sẽ cấp phát một khối các ô nhớ liên tục cho tất cả các phần tử trong mảng. - Chỉ số phần tử được đánh số theo miền giá trị của kiểu chỉ số. Ví dụ: Var A : array[1..100] of real; Kytu: array[byte] of char; Songuyen : array[-100..100] of shortint; c. Truy xuất đến từng phần tử của mảng Cú pháp: <Ten_Bien_Mang>[Chi_So_Phan_Tu]; Trong đó: Chi_So_Phan_Tu: là chỉ số của phần tử trong mảng, có giá trị trong phạm vi miền giá trị của kiểu chỉ số. Chú ý: + Nếu Chi_So_Phan_Tu: nằm ngoài miền giá trị của kiểu chỉ số thì sẽ báo lỗi.. - Lên bảng viết câu lệnh nhập: read(a[i]) hoặc readln(a[i]) ; - Lên bảng viết câu lệnh xuất: write(a[i]) hoặc writeln(a[i]) ;. Các phần tử trong mảng được sử dụng như một biến.. - Quan sát và ghi bài - Trả lời. Hoạt động 3: Bài tập vận dụng 8’ - Nêu giả thuyết bài toán - Suy nghĩ và viết chương trình. - Yều cầu SV phân tích đề bài và viết chương trình vào vở nháp. - Hướng dẫn SV làm bài - Quan sát tập. Bài tập: Viết chương trình nhập vào nhiệt độ của n ngày. Tính và đưa ra màn hình nhiệt độ trung bình của n ngày đó và số ngày có nhiệt độ cao hơn nhiệt độ trung bình? Giải Program Nhiet_do_N_Ngay; USES CRT; Var T : array[1 .. 366] of real; TB, Tong:real; i, n, songay: integer; BEGIN clrscr; write('Nhap vao so ngay n='); readln(n); Tong :=0; songay:=0; for i:=1 to n do begin write('nhap vao nhiet do ngay thu ', i); readln(T[i]); Tong:=Tong + T[i]; end; TB := Tong/n; for i:= 1 to n do if T[i] > TB then INC(songay);.
<span class='text_page_counter'>(4)</span> writeln('Nhiet do trung binh ', n, ' ngay la: ',TB:5:2); write('So ngay co nhiet do cao hon nhiet do trung binh la:', songay:5); readln; END.. V. CỦNG CỐ VÀ HƯỚNG DẪN VỀ NHÀ:(4’) 1. Củng cố: Câu 1:. Câu 2:. Câu lệnh nào sau đây là đúng. Var Kytu : array[‘0’..’9’] of char;. A.Var mang : array[1…100] of char;. Câu lệnh nào sau đây là đúng. B. Var mang : array[1-100] of byte;. A. Kytu [0]:=‘a’;. C. Var 1mang : array[1..100] of char;. B. Kytu [‘1’]:=a;. D. Type mang= array[-100..100] of real;. C. Kytu [‘1’]:=‘1’; D. Kytu [‘a’]:=‘a’;. 2. Hướng dẫn về nhà: Bài tập: 1.Viết chương trình nhập vào dãy n số nguyên. In ra màn hình số chia hết cho cả 2 và 5. 2.Viết chương trình nhập vào dãy n số thực. a. In ra màn hình vị trí đầu tiên x xuất hiện trong mảng (x nhập từ bàn phím). b. Nhập vào số nguyên k, số thực y. chèn y vào vị trí thứ k trong mảng c. Sắp xếp mảng theo thứ tự không giảm. VI. RÚT KINH NGHIỆM: ........................................................................................................................................................... ........................................................................................................................................................... ........................................................................................................................................................... ........................................................................................................................................................... ........................................................................................................................................................... GIẢNG VIÊN GIẢNG DẠY. Nguyễn Dư Nghĩa.
<span class='text_page_counter'>(5)</span>