Chương trình quá dài, gây khó khăn cho người lập trình. Cần thiết phải có cách viết chương trình hiệu quả và tối ưu hơn.
Hs có nhu cầu tìm hiểu một kiểu dữ liệu mới để giải quyết bài toán.
Nội dung 2: Tìm hiểu khái niệm kiểu mảng một chiều
Hoạt động của GV
Hoạt động của HS
Nội dung
Từ ví dụ trên GV đặt vấn đề: Các em có nhận về số lượng các phần tử và kiểu dữ liệu của các phần tử đó ở các ví dụ đã nêu.
GV nhận xét câu trả lời HS. Chuẩn hóa kiến thức và kết luận.
Để có thể mô tả mảng 1 chiều cần xác định những yếu tố nào?
GV cho ví dụ: Mảng A gồm 4 phần tử có giá trị kiểu số thực và cách đánh chỉ số các phần bắt đầu từ 1 cho HS quan sát.
Chỉ số
1
2
3
4
A
7.8
9.1
9.0
8.5
Đặt câu hỏi: Với chương trình nhập vào điểm của 40 HS ở ví dụ trên thì chỉ số của phần tử được bắt đầu từ mấy?
HS sẽ nhận xét :
- Số lượng phần tử nhiều nhưng là số hữu hạn - Mỗi phần tử đều có kiểu dữ liệu giống nhau Dựa trên các vấn đáp HS rút ra được kết luận: “Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu”.
Cần xác định kiểu dữ liệu phần tử của mảng và cách đánh số các phần tử đó.
Chỉ số bắt đầu từ 1
Nội dung 2: Khai báo mảng một chiều:
Sách giáo khoa có khai báo cả hai cách. Trong đó cách trực tiếp giới thiệu trước và gián tiếp giới thiệu sau. Tuy nhiên nếu giới thiệu với HS theo trình tự này có thể làm cho HS bị thụ động vậy GV có thể sử dụng phương pháp được dẫn chứng sau đây nhằm giúp HS ghi nhớ sâu hơn việc khai báo biến mảng một chiều.
Hoạt động của GV
Hoạt động của HS
Nội dung
Bước 1: Tạo tình huống gợi vấn đề:
Gọi HS nhắc lại cú pháp khai báo 1 biến có kiểu dữ liệu chuẩn.
- GV giả sử ngoài những kiểu dữ liệu đã học bây giờ ta có một kiểu dữ liệu mới dạng kiểu mảng có tên là ‘MangA’. Cần khai báo một biến A có kiểu dữ liệu là ‘MangA’ thì sẽ được viết như thế nào?
Var A: MangA;
Vấn đề ở đây là kiểu dữ liệu có tên là ‘MangA’ là kiểu dữ liệu đã có chưa? có được sử dụng không?
Bước 2: Trình bày vấn đề và đặt mục tiêu giải quyết: GV: Ở đây ‘MangA’ là một tên kiểu dữ liệu mà người lập trình tự định nghĩa. NNLT Pascal hỗ trợ câu lệnh để chúng ta có thể định nghĩa một kiểu dữ liệu mới. Bước 3: Giải quyết vấn đề:
NNLT Pascal cho phép chúng ta định nghĩa một kiểu dữ liệu mới thuộc kiểu mảng bằng câu lệnh: Type <Tên kiểu mảng>= array [Kiểu chỉ số] of <Kiểu phần tử>; Do phải định nghĩa trước và khai báo sau nên các câu lệnh sẽ được viết là: 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ểumảng>;
Đây là cách thứ nhất để khai báo kiểu dữ liệu mảng một chiều.
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, n2 là các hằng hoặc biểu thức nguyên xác định chỉ số đầu và chỉ số nguyên(n1 ≤ n2); - Kiểu phần tử là kiểu dữ liệu của phần tử trong mảng.
Ví dụ:
Type MangA = array [1..50] of real; Var A: MangA;
GV: Cho học sinh quan sát kỹ và nhận xét về cú pháp ở khai báo trên để HS phát hiện được có một đặc điểm giống như tính chất bắc cầu của các biểu thức. Đây chính là cách thứ 2 để khai báo kiểu dữ liệu mảng một chiều:
Bước 4: Rút ra kết luận:
Như vậy PPDH PH & GQVĐ đề như trên thì HS đã biết cách vận dụng kiến thức đã biết để đi tìm những gì chưa biết, biết cách tự tìm hiểu nội dung được cung cấp trong SGK để tự tìm ra kiến thức cần ghi nhớ. HS sẽ cảm thấy hứng thú với kết quả mình tự thu nhận được và giúp HS nhớ bài ngay trên lớp.
HS nhắc lại cú pháp khai báo biến có kiểu dữ liệu chuẩn
Mong đợi sẽ nhận xét được như sau:
Var <Tên biến mảng>:<Tên kiểu mảng>;
Mà <Tên kiểu mảng>= array [Kiểu chỉ số] of <Kiểu phần tử>; Nên có thể thay thế câu lệnh trên bằng câu lệnh sau: Var <Tên biến mảng>: array[Kiểu chỉ số] of <Kiểu phần tử> ;
Nội dung 3: Tìm hiểu cách duyệt và tham chiếu các phần tử trong mảng một chiều
Hoạt động của GV
Hoạt động của HS
Nội dung
Bước 1: Tạo tình huống gợi vấn đề GV: Đặt tình huống là muốn in ra màn hình điểm môn Tin của 1 bạn học sinh trong lớp.
Bước 2: Trình bày vấn đề và đặt mục tiêu giải quyết:
GV: Từ suy nghĩ của HS GV có thể thực hiện ngay câu lệnh mà học sinh suy nghĩ là Write(A). GV chạy thử chương trình với câu lệnh trên. Tất nhiên trình biên dịch sẽ báo lỗi. Từ vấn đề đó GV sẽ dẫn dắt: Với khái niệm về mảng 1 chiều đã biết ở phần trước thì mỗi phần tử trong mảng đều có 1 chỉ số vì vậy muốn lấy giá trị của phần tử nào (tham chiếu đến phần tử trong mảng) thì phải ghi tên biến mảng kèm với chỉ số của phần tử đó theo cú pháp:
Tên biến mảng [Chỉ số]
Chú ý đối với học sinh là: chỉ sổ ở đây phụ thuộc vào việc chọn kiểu chỉ số trong khai báo.
Bước 3: Giải quyết vấn đề:
GV: Yêu cầu HS viết câu lệnh in ra ra hình điểm của HS có chỉ số 4 trong lớp.
Vậy thì muốn in ra màn hình điểm của 40 HS trong lớp thì phải viết như thế nào?
Bước 4: Rút ra kết luận:
GV: Nhấn mạnh việc thao tác trên mảng là phải thao tác với từng phần tử trong mảng, vì vậy duyệt và cách tham chiếu đến các phần tử trong mảng có yếu tố quan trọng khi viết các chương trình có sử dụng kiểu dữ liệu mảng một chiều.
HS suy nghĩ và thực hiện.
HS: Sẽ viết được:
Write(A[4]);
In ra màn hình điểm của 40 học sinh trong lớp:
For i := 1 to 40 do write(A[i]);
2.5.2 Bài 12 Kiểu Xâu
Bản chất của kiểu xâu là kiểu mảng một chiều mà mỗi phần tử là một kí tự dựa vào điều này giáo viên có thể sử dụng PPDH PH & GQVĐ mang tính gợi mở để học sinh có một cách tiếp cận tự nhiên từ kiến thức mới học đó là kiểu mảng một chiều.
Mục tiêu: Tạo động cơ cho HS có mong muốn tìm hiểu kiểu dữ liệu mới Kiểu xâu
Hoạt động GV
Hoạt động HS
Nội dung
Bước 1: Tạo tình huống gợi vấn đề:
Viết chương trình nhập vào họ tên của một HS và in ra màn hình họ tên đó.
GV đưa ra các câu hỏi gợi ý:
Để lưu trữ họ và tên HS thì có thể sử dụng kiểu dữ liệu nào?
Mỗi phần tử trong mảng có kiểu dữ liệu là gì?
Với kiến thức của bài kiểu mảng đã được học thì chúng ta có thể viết được chương trình như sau:
Program hoten;
Var A: array[1..30] of char;
Var i, n: byte;
Begin
Write (‘Nhap do dai cua ten HS’);
Readln(n);
For i:=1 to n do
Begin
Write(“nhap ki tu thu’,i);
Readln (A[i]);
End;
For i:=1 to n do
Write(A[i]);
Readln
End.
Bước 2: GV nêu vấn đề và đặt mục tiêu giải quyết vấn đề:
Giả sử cần viết chương trình để nhập và in ra màn hình họ tên của 40 HS trong lớp. Chúng ta sẽ gặp những khó khăn gì khi viết chương trình.
Bước 3: Giải quyết vấn đề:
Có thể thực hiện được chương trình nhưng chương trình dài, không tối ưu. Cần có cách giải bài toán khác phù hợp hơn.
HS có nhu cầu và mong muốn tìm hiểu một kiểu dữ liệu mới- kiểu xâu.
Có thể sử dụng kiểu mảng 1 chiều.
Mỗi phần tử trong mảng có kiểu kí tự
HS quan sát chương trình.
Cần phải khai báo 40 mảng 1 chiều để lưu trữ họ tên của 40 HS, Mỗi họ tên phải nhập độ dài và từng kí tự.
-Xuất ra màn hình cũng phải dùng 40 đoạn lệnh để xuất mảng 1 chiều.
Chương trình dài, không tối ưu. Cần có kiểu dữ liệu mới để giải quyết bài toán.
Nội dung 2: Tìm hiểu khái niệm kiểu dữ liệu mới- kiểu xâu.
Hoạt động GV
Hoạt động HS
Nội dung
- Bản chất của kiểu xâu là kiểm mảng một chiều mà mỗi phần tử là một kí tự - Hoàn toàn có thể thao tác với kiểu xâu như kiểu mảng, ví dụ như tham chiếu đến kí tự nào đó trong xâu.
Khai báo biến xâu:
- Var ht: String[30];
Theo định nghĩa về xâu thì có thể xem xâu là mảng 1 chiều vì số lượng các kí tự trong xâu là hữu hạn và mỗi phần tử đều có cùng một kiểu dữ liệu là kiểu kí tự.
Nội dung 3: Các thao tác xử lý xâu:
3.1 Đối với Giáo viên: