SKKN Hướng dẫn học sinh tìm hiểu các kiểu dữ liệu đơn giản và các phép toán trên kiểu dữ liệu thông qua các ví dụ MỤC LỤC I Mở đầu SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA TRƯỜNG THPT LÊ HOÀN SÁNG KIẾN KINH NGHIỆM HƯỚNG DẪN HỌC SINH TÌM HIỂU CÁC KIỂU DỮ LIỆU ĐƠN GIẢN VÀ CÁC PHÉP TOÁN TRÊN KIỂU DỮ LIỆU THÔNG QUA CÁC VÍ DỤ Người thực hiện Lê Thị Hồng Chức vụ Giáo viên Đơn vị công tác Trường THPT Lê Hoàn SKKN thuộc lĩnh vực môn Tin học THANH HÓA NĂM 2016 SangKienKinhNghiem net Sáng kiến kinh nghiệm GV Lê T[.]
Trang 1MỤC LỤC
Mở đầu
SÁNG KIẾN KINH NGHIỆM
HƯỚNG DẪN HỌC SINH TÌM HIỂU CÁC KIỂU DỮ LIỆU ĐƠN GIẢN VÀ CÁC PHÉP TOÁN TRÊN KIỂU
DỮ LIỆU THÔNG QUA CÁC VÍ DỤ
Người thực hiện: Lê Thị Hồng Chức vụ: Giáo viên
Đơn vị công tác: Trường THPT Lê Hoàn SKKN thuộc lĩnh vực môn: Tin học
THANH HÓA NĂM 2016
Trang 2MỤC LỤC
Trang
A MỞ ĐẦU
3 Đối tượng nghiên cứu 4
4 Phương pháp nghiên cứu 4
B NỘI DUNG
C KẾT LUẬN VÀ KIẾN NGHỊ
1 Kết luận 13
2 Kiến nghị 13
Tài liệu tham khảo 14
Trang 3A MỞ ĐẦU
1 Lí do chọn đề tài:
Sự phát triển như vũ bảo của công nghệ thông tin và truyền thông đóng vai trò không nhỏ trong sự phát triển chung của nhân loại Đảng và nhà nước đã xác định rõ ý nghĩa và tầm quan trọng của tin học, công nghệ thông tin và truyền thông cũng như yêu cầu đẩy mạnh của ứng dụng công nghệ thông tin, đào tạo thế hệ trẻ năng động, sáng tạo, nắm vững tri thức khoa học công nghệ để làm chủ trong mọi hoàn cảnh công tác và hoạt động xã hội trong thời kỳ công nghiệp hóa và hiện đại hóa đất nước
Trong thời đại ngày nay, công nghệ thông tin đã thực sự bùng nổ và nó là một ngành khoa học đang phát triển rất mạnh mẽ Sự bùng nổ thông tin và tốc độ phát triển như vũ bảo của nó khiến cho người thầy không thể dạy hết tất cả các kiến thức cho học sinh
Do đó người thầy cần phải tìm ra phương pháp dạy học tích cực hơn để tăng hiệu quả dạy và học Dạy học sinh cách học chủ động, phương pháp học, cách học những điều mà thực tế đòi hỏi thay vì truyền tải một lượng kiến thức quá nhiều mà học sinh không thể nhớ hết để vận dụng
Là một giáo viên môn tin học tôi luôn trăn trở làm thế nào để học sinh hiểu
và yêu thích môn học, tích cực và hứng thú trong từng tiết học Điều trăn trở đó chỉ được thực hiện khi đổi mới cách thức tổ chức hoạt động học tập của học sinh Việc
tổ chức hoạt động dạy học nhằm phát huy tính tích cực của học sinh là một trong những nhiệm vụ của năm học Là giáo viên trực tiếp đứng lớp tôi không ngừng phấn đấu trau dồi kiến thức chuyên môn, nghiệp vụ, kiến thức các môn liên quan, thường xuyên học hỏi kinh nghiệm để hoàn thiện hơn trong quá trình giảng dạy
Vào bậc trung học phổ thông, học sinh mới bắt đầu làm quen với tin học và ở lớp 11 học sinh mới làm quen với viết chương trình (lập trình) nên các em còn rất lúng túng trong việc sử dụng các kiểu dữ liệu để viết câu lệnh Các bài toán trong thực tế thường có dữ liệu vào và kết quả ra thuộc những kiểu dữ liệu quen thuộc như: số nguyên, số thực, kí tự …Khi cần lập trình cho những bài toán như vậy, người lập trình sử dụng các kiểu dữ liệu đó thường gặp một số hạn chế nhất định, phụ thuộc vào các yếu tố như dung lượng bộ nhớ, khả năng xử lý bộ nhớ của CPU,…Vì vậy rất khó khăn cho việc dạy và học
Vậy để học sinh dễ dàng lĩnh hội được tất cả những kiến thức về những kiểu
dữ liệu cơ sở đơn giản và trên từng kiểu dữ liệu đó thì phép toán nào sẽ được sử dụng, tôi đã chọn đề tài: “Hướng dẫn học sinh tìm hiểu về các kiểu dữ liệu đơn giản
và các phép toán trên dữ liệu thông qua ví dụ”
Trang 42 Mục đích nghiên cứu:
Trong quá trình dạy học và dự giờ thăm lớp qua các môn học, tôi nhận thấy
để có thể tạo ra được những giờ học hứng thú, học sinh có thể tập trung và yêu thích môn học, phát huy được tính sáng tạo trong tư duy và suy nghĩ thì người giáo viên đóng vai trò vô cùng quan trọng ở trong mỗi tiết học đó, từ việc dẫn dắt vấn đề cho đến phần giới thiệu vào nội dung đòi hỏi mỗi người giáo viên luôn phải có sự chuẩn bị kỹ càng, ngoài ra còn phải chuẩn bị thêm các thiết bị, đồ dùng dạy học, các phương tiện, … sao cho phù hợp với kiến thức nhưng việc chuẩn bị quá nhiều thứ trong một giờ học thì mất rất nhiều thời gian Vì thế trong nội dung đề tài này tôi đã đưa ra một phương pháp giảng dạy cho học sinh lĩnh hội kiến thức mới thông qua những ví dụ minh họa
3 Đối tượng nghiên cứu:
- Nghiên cứu dạy học lập trình trong chương trình Tin học phổ thông, đặc biệt là phần một số kiểu dữ liệu chuẩn và các phép toán trên dữ liệu – SGK lớp 11
- Nghiên cứu các tài liệu liên quan đến các kiểu dữ liệu chuẩn và các phép toán trên dữ liệu
- Nghiên cứu một số tài liệu về đổi mới phương pháp giáo dục
- Nghiên cứu hoạt động dạy và học của giáo viên và học sinh khối 11 ở trường THPT
4 Phương pháp nghiên cứu:
- Phương pháp nghiên cứu xây dựng cơ sở lý thuyết;
- Phương pháp điều tra, xử lý số liệu
Trang 5B NỘI DUNG:
I Cơ sở lý luận:
Để bước vào học các kiểu dữ liệu ta cần phải biết hai khái niệm dữ liệu và kiểu dữ liệu
Dữ liệu: Máy tính được dùng để xử lý thông tin Các thông tin được nhập và lưu trữ trong bộ nhớ dưới nhiều dạng khác nhau: Có thể là số, là chữ, là hình ảnh,
âm thanh,…mà ta gọi chung là dữ liệu Dữ liệu rất đa dạng đòi hỏi phải tổ chức và phân phối bộ nhớ hợp lý để lưu trữ và xử lý tốt các dữ liệu
Kiểu dữ liệu: Một kiểu dữ liệu là sự qui định về hình dạng, cấu trúc và các gía trị cuả dữ liệu cũng như cách biểu diễn và xử lí dữ liệu
Đối với ngôn ngữ lập trình pascal, các kiểu dữ liệu chung được chia thành hai loại:
+ Dữ liệu có cấu trúc
+ Dữ liệu không có cấu trúc
Trong mục này chúng ta chỉ tìm hiểu những kiểu dữ liệu đơn giản không có cấu trúc
Kiểu dữ liệu đơn giản không cấu trúc của pascal bao gồm:
+ Kiểu số nguyên (Integer)
+ Kiểu số thực (Real)
+ Kiểu logic (Boolean)
+ Kiểu kí tự (Char)
II Thực trạng:
1 Thuận lợi:
Đều là giáo viên trẻ, đạt chuẩn, luôn có ý thức học hỏi để nâng cao chuyên môn của bản thân Luôn cố gắng vận dụng tối đa những gì sẵn có nhằm mang lại giờ dạy có chất lượng lôi cuốn học sinh
2 Khó khăn:
Qua thực tế giảng dạy ở trường THPT Lê Hoàn các năm học qua, tôi nhận thấy khi học đến chương trình Tin học lớp 11 đa số học sinh đều nhận xét bộ môn này rất khó, nên nhiều học sinh chưa thực sự yêu thích, luôn coi nhẹ và thờ ơ với việc học môn tin học
Đa số học sinh ở vùng nông thôn nên ít có điều kiện tiếp xúc với máy tính Trang thiết bị cho phòng học bộ môn Tin học còn nhiều hạn chế: Số máy tính trang bị cho học sinh thực hành đã xuống cấp, cũ kỹ, số lượng máy còn ít trung bình phải từ 3 – 4 em / một máy Trang thiết bị hỗ trợ cho phòng máy hầu như không có
Trang 6Với việc học lập trình mang tính trừu tượng làm cho các em bỡ ngỡ, lúng túng và thậm chí thấy khó hiểu dẫn đến không thích học Tuy nhiên cũng có một số
ít học sinh rất yêu thích Tin học và thích tìm hiểu một số bài toán, dạng toán ngoài sách giáo khoa
Đội ngũ giáo viên tin học còn đang rất trẻ về tuổi nghề nên ít kinh nghiệm về giảng dạy, vì vậy bài tập thực hành còn ít, hầu như chỉ bó gọn trong sách giáo khoa Vận dụng và sử dụng trang thiết bị về công nghệ thông tin còn ít
III Giải pháp:
Nhằm góp phần nâng cao chất lượng dạy và học môn Tin học ở trường THPT Lê Hoàn, tôi đã thử nghiệm và đưa ra giải pháp giúp học sinh hiểu và vận dụng được các kiểu dữ liệu đơn giản để khai báo biến cho đúng phạm vi lưu trữ và với từng kiểu dữ liệu thì phép toán nào sẽ được thực hiện thông qua một số ví dụ trong và ngoài sách giáo khoa để minh họa, giải pháp cụ thể như sau:
1 Kiểu số nguyên:
a Các kiểu số nguyên:
Kiểu số nguyên thông dụng nhất là Integer Ngoài ra còn có 4 kiểu khác: Longint, Shortint, Word, Byte
Sau đây là bảng liệt kê những kiểu số nguyên:
Tên kiểu Phạm vi giới hạn Số byte
Longint -2147483648…2147483647 4
Khi các biến nguyên nhận các giá trị là các số nguyên nằm ngoài phạm vi giới hạn thì máy sẽ báo lỗi “const out of range”
Ví dụ 1:
Khai báo một biến A có kiểu là Integr như sau:
Var A: Integer;
Trong thân chương trình chính ta có phép gán như sau:
A:= -7200; Câu lệnh này đúng vì số -7200 nằm trong phạm vi giới hạn của kiểu Integer ( - 32768 < 7200< 32768) Nếu ta có lệnh gán A: = 32769; thì chương trình
sẽ báo lỗi vì biến A nhận số 32769 và số 32769 vượt quá giới hạn kiểu Integer (-32768< 32768 < 32769)
Ví dụ 2:
PROGRAM VD2;
VAR
Trang 7C, D : Byte;
E, F : Shortint;
G, H: Word;
BEGIN
C: = -1; (1) D: = 200; (2)
E : = -30; (3)
F : = -130; (4)
G : = 56235; (5)
H := -1; (6) Writeln(‘C=’, C, ‘D=’, D, ‘E =’, E);
Writeln(‘F=’, F, ‘G=’, G, ‘H =’, H);
Writeln (‘ Nhấp Enter để kết thúc’);
Readln;
END
? Câu hỏi 1: 6 biến C, D, E, F, G, H thuộc những phạm vi nào?
? Câu hỏi 2: 6 phép gán trên, phép gán nào đúng, phép gán nào sai?
Trả lời câu hỏi 1:
Hai biến C, D có kiểu dữ liệu là Byte nên nó thuộc phạm vi từ 0 đến 255
E và F có kiểu dữ liệu là Shortint nên nó thuộc phạm vi từ - 128 đến 127
G và H có kiểu là Word thuộc phạm vi từ 0 đến 65535
Trả lời câu hỏi 2:
Phép gán (1) sai vì C thuộc phạm vi từ 0 đến 255 và ở đây ta gán số âm nên ngôn ngữ không chấp nhận
Phép gán (2) đúng vì 200 thuộc phạm vi của biến D
Tương tự các phép gán (3) đúng, (4) sai, (5) đúng, (6) sai
b Các phép toán được phép sử dụng trên kiểu số nguyên:
+ Các phép toán số học:
DIV Phép chia lấy phần thương (nguyên)
không lấy phần dư 7 div 3 cho kết quả là 2 MOD Phép chia lấy phần dư (nguyên)
không lấy phần thương 7 mod 3 cho kết quả là 1 + Phép cộng
- Phép trừ
Trang 8* Phép nhân
/ Phép chia kết quả là số thực
Độ ưu tiên của phép toán trên:
- Độ ưu tiên thứ nhất: *, / , DIV, MOD Các phép toán này cùng độ ưu tiên
- Độ ưu tiên thứ 2: +, - Các phép toán này cùng độ ưu tiên
- Nếu các phép toán cùng độ ưu tiên và có trong một biểu thức thì nó được thực hiện lần lượt theo thứ tự từ trái sang phải
Ví dụ 1:
Ta có biểu thức A: = 17 DIV 3 MOD 7; Kết quả A= 5
Vì hai phép toán cùng độ ưu tiên nên thao thứ tự thực hiện từ trái qua phải lấy 17 DIV 3=5 ( 17 chia 3 có thương là 5 và dư 2 nhưng DIV chỉ lấy số thương nên kết quả lá 5), sau đó lấy 5 MOD 7 = 5 ( 5 chia cho 7 có thương là 0 và dư 5 nên kết quả là 5 chỉ lấy số dư) Kết quả cuối cùng là 5
Ví dụ 2:
Ta có biểu thức B: = 12/5 + 3*2 – 4; Kết quả B = 4.4 (B là kiểu số thực (Real))
Vì hai phép toán nhân và chia cùng độ ưu tiên và độ ưu tiên cao hơn phép cộng, phép trừ nên được thực hiện trước và từ trái qua phải 12 / 5 = 2.4 (kết quả là
số thực vì chia như bình thường ở ngoài), tiếp theo đến phép nhân 3*2 = 6 thực hiện hai phép nhân và chia xong, tiếp tục thực hiện phép cộng 2.4 +6 = 8.4, đến phép trừ 8.4 – 4 = 4.4) Kết quả cuối cùng của B là 4.4
Lưu ý cần nhớ:
Công dụng từng phép toán;
Độ ưu tiên của từng phép toán;
Nếu các phép toán cùng cấp đợu tiên tồn tại trong một biểu thức thì thực hiện
từ trái qua phải
c Các phép toán so sánh dùng trong kiểu số nguyên
Với các ví dụ trong bảng a và b là số nguyên;
Kí hiệu Ý nghĩa Ví dụ
< Nhỏ hơn a<b
<= Nhỏ hơn hoặc bằng a<=b
<> Khác nhau a<>b
> Lớn hơn a>b
>= Lớn hơn hoặc bằng a>=b
Trang 9Đối với các phép toán này thì sau khi so sánh ta thu được kết quả là một giá trị logic đúng (TRUE) hoặc sai (FALSE)
Ví dụ :
Ta có một số biểu thức so sánh như sau:
3=4; Biểu thức này trả về kết quả là FALSE (sai);
5=5; Biểu thức này trả về kết quả là TRUE (đúng);
4<=7; Biểu thức này trả về kết quả là TRUE (đúng);
4>=3; Biểu thức này trả về kết quả là TRUE (đúng);
7<>9; Biểu thức này trả về kết quả là TRUE (đúng);
3<>3; Biểu thức này trả về kết quả là FALSE (sai);
3>3; Biểu thức này trả về kết quả là FALSE (sai);
3>=3; Biểu thức này trả về kết quả là TRUE (đúng);
d Các hàm và thủ tục có đối số nguyên thông dụng
- Hàm PRED(n): Hàm này trả về số nguyên đứng ngay trước n
Ví dụ:
A = PRED(3); Kết quả A = 2 vì số nguyên đứng trước số 3 là số 2;
B = PRED(-3); Kết quả B = - 4 Vì số nguyên đứng trước số - 3 là số - 4
- Hàm SUCC(n): Hàm này trả về số nguyên đứng ngay sau n
Ví dụ:
Ngược với hàm trên thì hàm này trả về số nguyên đứng sau số đã cho
A = SUCC(3); Kết quả A = 4 Vì số nguyên đứng sau số 3 là 4;
B = SUCC(-3); Kết quả B = - 2 Vì số nguyên đứng sau số - 3 là - 2;
- Hàm ODD(n): Hàm trả về giá trị logic là TRUE nếu n lẻ, là FALSE nếu n
là chẵn
Ví dụ:
ODD(1) = TRUE; Hàm này trả về (đúng) TRUE vì số 1 là lẻ
ODD(2) = FALSE; Hàm này trả về (sai) FALSE vì số 2 là số chẵn
- Thủ tục INC(n): Tăng giá trị của n lên 1 đơn vị
Ví dụ:
Với biến A là kiểu nguyên và được gán hay nhập vào trước khi gọi hàm (hàm này có sẵn nên không cần định nghĩa)
PROGRAM VD;
VAR A: integer;
BEGIN
Writeln(‘ Xin chao!’);
Write(‘ Chuong trinh vi du ham INC’);
A:= 4;
INC(A);
Trang 10Write(‘ Ket qua bien A sau khi dung ham INC la:’,A);
Write(‘ Nhan Enter de ket thuc’);
Readln;
END
Kết quả của chương trình trên A = 5;
- Thủ tục DEC(n): Giảm giá trị của n đi 1 đơn vị
2 Kiểu số thực:
a Các kiểu số thực:
- Tương tự như kiểu số nguyên, kiểu số thực là một tập hợp các số thực có thể biểu diễn trên máy tính được định nghĩa với từ khóa REAL
- Ngoài kiểu số thực REAL còn có kiểu EXTENDED Phạm vi giá trị và số byte dùng để lưu trữ trong bộ nhớ của hai kiểu số thực này được biểu diễn như sau:
Tên kiểu Phạm vi giá trị Số byte
Real 0 hoặc có giá trị tuyệt đối nằm trong phạm
vi từ 2,9 x 10-39đến 1,7 x 1038
6
Extended 0 hoặc có giá trị tuyệt đối nằm trong phạm
vi từ 10-4932 đến 104932
10
* Có thể biểu diễn số thực bằng hai cách:
- Cách thông thường, dấu phẩy thập phân được thay bằng dấu chấm thập phân
Ví dụ:
12.0 -123.67
- Viết số dưới dạng khoa học có phần mũ và phần định trị
Ví dụ:
9.213E+02 ( có giá trị = 921.3)
9213E-01 ( có giá trị = 921.3)
b Các phép toán đối với số thực:
Đối với các phép toán số học và logic trong kiểu số nguyên đều dùng được cho kiểu số thực, ngoại trừ hai phép toán DIV và MOD thì không dùng cho kiểu số thực
c Những hàm số học chuẩn dùng cho kiểu số thực và số nguyên.
Hàm ABS(x): Cho ta giá trị tuyệt đối của x tức là |x|;
Hàm EXP(x): Tính ex;
Hàm FRAC(x): Cho số thực bằng phần lẻ của x;
Hàm INT(x): Cho số thực bằng phần nguyên của x;
Hàm LN(x): Tính ln(x), x>0;
Hàm ODD(n): Trả lại giá trị TRUE nếu n lẻ, giá trị FALSE nếu n chẳn
Trang 11 Hàm PRED(n): Giảm giá trị n xuống 1;
Hàm ROUND(x): Làm tròn x
Hàm SQR(x): Tính giá trị bình phương của x;
Hàm SQRT(x): Tính căn bậc hai của x, x>0;
Các hàm SIN(x), COS(x) và ARCTAN(x): Tính sinx, cosx, arctgx;
Hàm SUCC(n): Tăng giá trị của n lên 1;
Hàm TRUNC(x): Lấy phần nguyên của x;
3 Kiểu ký tự:
a Định nghĩa:
Trong máy tính, ngoài khả năng xử lý các kiểu dữ liệu bằng số thực và số nguyên chúng ta còn có thể xử lý các dữ liệu là các chữ viết Các ký tự chữ viết mà
ta thường dùng là các chữ cái a, b, c … và các chữ số 0, 1, 2, 3… 8, 9, các dấu phân cách Kiểu dữ liệu này được định nghĩa với từ khóa CHAR
Để trao đổi thông tin được dễ dàng chúng ta cần phải sắp xếp, đánh số thứ tự các ký tự Cách sắp xếp như vậy tạo thành một bảng mã ASCII
b Các hàm chuẩn dùng cho kiểu kí tự.
* Hàm CHR(n): Với n là một số nguyên thì hàm này trả về ký tự tương ứng với số nguyên đó Số n nằm trong khoảng từ 0 đến 255
Ví dụ:
PROGRAM VD;
VAR a: integer; b: char;
BEGIN
Writeln(‘Xin chao! Chuc ban thanh cong’);
Writeln(‘ Hien thi bang ma ASCII’);
Writeln(‘ ’);
For a: = 1 to 255 do Begin
b:= CHR(a);
Write(‘ ’, a);
Write(‘ ’, b);
End;
Writeln(‘ ’);
Writeln (‘ Nhan mot phim bat ky de ket thuc ’);
Readln;
END
Chương trình trên là hiển thị bảng mã ASCII cùng với mã của chúng
Hàm ORD(ch): Cho biết mã của ký tự ch;
Hàm PRED(ch): Cho ký tự đứng ngay trước ký tự ch trong bảng mã
Hàm SUCC(ch): Cho ký tự đứng ngay sau kí tự ch trong bảng mã