Học sinh củng cố lại được các kiến thức cơ bản khi lập trình với kiểu dữ liệu mảng . Học sinh biết nhận xét , phân tích , đề xuất các cách giải bài toán để cho chương trình chạy nhanh hơn . Làm quen với dữ liệu có cấu trúc và bài toán sắp xếp . Yêu cầu học sinh có thái độ chủ động , tự giác trong khi thực hành
trường đhsp hà nội K56A_Khoa CNTT Giỏo ỏn s 2:Bi thực hành số A Mục đích , yêu cầu : Học sinh củng cố lại kiến thức lập trình với kiểu liệu mảng Học sinh biết nhận xét , phân tích , đề xuất cách giải tốn chương trình chạy nhanh Làm quen với liệu có cấu trúc tốn xếp Yêu cầu học sinh có thái độ chủ động , tự giác thực hành B Phương pháp , phương tiện : Phương pháp : Kết hợp nhiều phương pháp dạy học thuyết trình , vấn đáp , hình ảnh với thực tế Phương tiện : Đối với thầy : Phòng máy vi tính , giáo án Đối với trò : Sách giáo khoa , ghi lý thuyết , thực hành , máy tính (nếu có ) , chương trình viết sẵn C Tiến trình lên lớp nội dung giảng : I_ổn định lớp :(1') ổn định trật tự lớp Yêu cầu lớp trưởng báo cáo sĩ số II_Kiểm tra cũ: (3') Câu hỏi kiểm tra cũ :Em cho biết cách khai báo mảng ? Câu trả lời mong muốn : Khai báo tên gọi có kiểu liệu mảng chiều có dạng : Var tên mảng :ARRAY[kiểu số] of kiểu thành phần; Trong : - Var , ARRAY, of từ khóa - Tên biến mảng tên gọi tự đặt - Kiểu thành phần tên kiểu phần tử mảng - Kiểu số: + Chỉ số có kiểu liệu miền : Cận_đầu Cận_cuối , Cận_đầu , Cận_cuối xác định giá trị số đầu số cuối trường đhsp hà nội K56A_Khoa CNTT + Ch s cú kiểu liệu liệt kê III_Nội dung giảng : Nội dung STT Đặt vấn đề gợi động Hoạt động thầy trò T.gian - Thuyết trình :Như trước nói , 1’ hôm thực hành phần mảng Trong q trình thực hành kết hợp kiểm tra việc học lý thuyết em cho điểm Nội dung giảng : 15’ I_Bài 1: a) Hãy tìm hiểu chạy thử chương - Thuyết trình : Đối với em trình thực thuật tốn xếp dãy cần phải liệt kê bước số nguyên thuật toán tráo đổi với toán giá trị khác n - Đặt câu hỏi : Bài tốn thực đây.Qua nhận xét thời gian chạy chương trình ? Nội dung bao chương trình ? gồm bước bản? Nêu giới hạn nội dung bước ? Uses Crt ; Câu trả lời : Bài tốn viết chương trình Const Nmax=250 ; xếp phần tử mảng theo thứ tự Type ArrInt = array[1 Nmax] of khơng giảm , gồm bước Đó : integer ; +b1: Khai báo Var n , i , j , t : integer ; Từ đầu chương trình đến “ A:ArrInt “ A : ArrInt ; Begin +b2: Thực chương trình Từ “Begin“đến “writeln (‘Day so duoc sap ClrScr; xep : ‘); “ Randomize ; +b3: In kết hình Write (‘Nhap n = ‘) ; Tiếp theo đến “Readln“ Readln(n); +b4: kết thúc chương trình (end) For i :=1 to n - Đi vào bước đặt câu hỏi cho A[i] :=random(300)- random(300); nhằm diễn giải cho học sinh hiểu Từ trêng ®hsp hµ néi K56A_Khoa CNTT For i:=1 to n write (A[i] :5) ; biết chỗ học sinh khơng Writeln ; hiểu cần giải thích cụ thể For j := N downto For i :=1 to j -1 If A[i] > A[i+1] then -Đặt câu hỏi : Sau từ khóa bắt đầu chương trình thực cơng việc ? Begin Câu trả lời : t :=A[i]; + Nhập vào n gán n vào phần tử A[i] := A[i+1]; mảng A A[i+1] := t ; + Thực thuật toán xếp End ; Writeln (‘ Day so duoc sap xep : ‘) ; For i := to n Write (A[i] :7 ); Writeln ; - Đặt câu hỏi : Hãy nêu cách thực thuật toán chương trình ? Câu trả lời : Cách thực thuật toán Readln End : + Dùng biến i , j làm số - b1: Khai báo + Dùng vòng For để đưa mảng vào , + Khai báo đơn vị chuẩn : Uses Crt ; vòng lặp For ứng với phép duyệt lần Uses từ khóa ding để khai báo có lượt dùng đơn vị chuẩn + Lấy phần tử mảng kiểm tra : Crt đơn vị chuẩn cung cấp phương A[i] >A[i+1] thực tráo đổi vị tiện xử lý hình , bàn phím trí phần tử Cứ + Khai báo Nmax =250 ( xác phần tử cuối mảng Nếu sai định số phần tử tối đa kiểu mảng ) dừng vòng lặp + Khai báo kiểu mảng tên ArrInt : - Đặt câu hỏi :Như lệnh t := A[i] ; Type ArrInt = array[1 Nmax] of A[i] := A[i+1] ; A[i+1] := t có ý nghĩa integer; ? + Khai báo biến : Câu trả lời :3 lệnh dùng để đổi giá trị Var n , i , j , t : integer; phần tử A[i] A[i+1] A : ArrInt ; - Đặt câu hỏi : Nhận xét thời gian trêng ®hsp hµ néi K56A_Khoa CNTT - b2: Thực chương trình + Nhập vào n gán n vào phần tử chạy chương trình ? Câu trả lời : Thời gian thực mảng A chương trình nhanh chương trình lấy Xóa hình : ClrScr ; phần tử mảng kiểm tra Khởi hàm tạo sinh số ngẫu nhiên không so sánh phần tử mảng với Randomize ; tất phần tử lại (rất thời gian Các phần tử mảng A lấy từ -299 ) đến 299 : - Đặt câu hỏi : Ta phải giải phần A[i] := Random(300) - Random(300) ; ? Biến Dem nằm + Thực thuật tốn xếp : Đưa vị trí chương trình ? mảng vào vịng For Lấy Câu trả lời : phần tử mảng kiểm tra thực + Khai báo : n , i , j ,t , d :integer ; tráo đổi thông qua biến t + Bổ sung chương trình : t :=A[i]; Dem :=0 ; A[i] := A[i+1]; For j:= N downto A[i+1] := t ; For i:=1 to j - If A[i] > A[i+1] then - b3: In kết In mảng chiều : Begin For i:=1 to n t := A[i] ; Write (A[i] :7); A[i] := A[i+1] ; Writeln ; A[i+1] := t ; Dem:=Dem+1 ; - b4: Kết thúc chương trình End ; - Thuyết trình : Các em soạn chương b) Khai báo thêm biến nguyên Dem trình vào máy nhập liệu đánh giá bổ sung vào chương trình câu kết lệnh cần thiết để biến Dem tính số lần thực tráo đổi thuật tốn Đưa kết tìm hình II_Bài : 20’ trêng ®hsp hµ néi K56A_Khoa CNTT Hãy đọc tìm hiểu phân tích để viết chương trình giải tốn : Cho mảng A gồm n phần tử Hãy viết chương trình tạo mảng B[1 n], B[i] tổng i phần tử A Program SubSum1; - Đặt câu hỏi : Trước tiên em cần xác Const max=100; định liệu đầu vào , liệu đầu Type MyArray=array[1 max] of thuật toán để giải ? integer; Câu trả lời : Var A , B : MyArray; + Vào : Mảng A gồm n phần tử n , i , j : integer ; Begin Radomize; + Ra : Mảng B gồm n phần tử + Thuật toán : vị trí i ta tính tổng giá trị phần tử từ đến i Write (‘ Nhap n =‘); Readln(n) ; For i :=1 to n -Đặt câu hỏi : Với đoạn chương trình A[i] := random(300) - random(300) máy phải thực phép cộng ? Câu trả lời : Máy phải thực ; For i :=1 to n write(A[i] :5); n(n+1)/2 phép cộng Writeln ; - Đặt câu hỏi : Ta nhận thấy việc thực For i :=1 to n hiên phép cộng để tạo phần tử cho Begin mang B phải lặp lặp lại nhiều lần B[i]:=0; Vậy có cách khắc phục điều For j :=1 to i B[i]:=B[i]+A[j]; khơng ? End ; Câu trả lời : Để tính bước i ta sử dụng kết For i :=1 to n write (B[i] :6); tính bước i-1 Readln Do có đoạn chương trình khác : End B[1]:=A[1] ; For i :=2 to n B[i]:=B[i-1]+A[i] ; trường đhsp hà nội K56A_Khoa CNTT Vi lệnh máy phải thực n1 phép cộng D Củng cố giảng : (3’) - Ta thấy tốn có nhiều cách giải khác nhờ việc phân tích thuật giải mà ta tiết kiệm lượng tính tốn đáng kể - Tuy tốc độ tính tốn máy tính có giới hạn Do , viết chương trình ta nên tìm cách viết cho chương trình thực phép tốn tốt Nói cách khác cần tìm cách giải tối ưu cho toán E Hướng dẫn qua tập nhà cho học sinh :(2’) - Bài tập nhà : Viết chương trình tìm phần tử có giá trị lớn mảng đưa hình số giá trị phần tử tìm Nếu có nhiều phần tử có giá trị lớn đưa phần tử có số nhỏ ? - Hướng dẫn qua : + Xác định liệu vào , liệu ? + Sử dụng biến j để lưu giá trị max - Các em xem lại tất kiến thức học , bao gồm : lệnh , lệnh điều khiển , kiểu liệu , kiểu liệu có cấu trúc để sau kiểm tra tiết ... thực hành phần mảng Trong q trình thực hành kết hợp kiểm tra việc học lý thuyết em cho điểm Nội dung giảng : 15’ I_Bài 1: a) Hãy tìm hiểu chạy thử chương - Thuyết trình : Đối với em trình thực. .. :7 ); Writeln ; - Đặt câu hỏi : Hãy nêu cách thực thuật toán chương trình ? Câu trả lời : Cách thực thuật toán Readln End : + Dùng biến i , j làm số - b1: Khai báo + Dùng vòng For để đưa mảng... Sau từ khóa bắt đầu chương trình thực cơng việc ? Begin Câu trả lời : t :=A[i]; + Nhập vào n gán n vào phần tử A[i] := A[i+1]; mảng A A[i+1] := t ; + Thực thuật toán xếp End ; Writeln (‘ Day so