intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo án số 2:Bài thực hành số 4

Chia sẻ: Paradise3 Paradise3 | Ngày: | Loại File: PDF | Số trang:6

57
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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

Chủ đề:
Lưu

Nội dung Text: Giáo án số 2:Bài thực hành số 4

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

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2