SKKN Kinh nghiệm định hướng giúp học sinh rèn luyện kĩ năng giải bài tập Tin học 11
Từ cuối thế kỷ XX cuộc cách mạng khoa học kỹ thuật Công nghệ thông tin đã diễn ra mạnh mẽ. Người ta thường ví sự bùng nổ Công nghệ thông tin như cuộc Cách mạng công nghiệp thế kỷ XVII. Công nghệ thông tin đã và đang mở ra một nền kinh tế tri thức, nền kinh tế đầy hứa hẹn và thách thức của kỷ nguyên phát triển mới của trí tuệ loài người. Sự phát triển của công nghệ thông tin đã và đang tạo ra những vận hội mới cũng như nhiều thách thức mới cho ngành Giáo dục Việt Nam.
Cùng với sự phát triển của khoa học kỹ thuật và bùng nổ thông tin trong giai đoạn hiện nay. Ngành Giáo dục - Đào tạo đòi hỏi phải đổi mới nội dung chương trình và phương pháp giảng dạy nhằm đáp ứng nhu cầu đào tạo nguồn lực cho sự nghiệp công nghiệp hoá, hiện đại hoá đất nước.
Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình tự hoạt động cho máy tính, máy gia dụng là rất cần thiết. Và để làm được việc đó cần có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó nhà lập trình có thể chọn một ngôn ngữ lập trình thích hợp.
1. Mở đầu 1.1. Lý do chọn đề tài Từ cuối thế kỷ XX cuộc cách mạng khoa học kỹ thuật Công nghệ thông tin đã diễn ra mạnh mẽ. Người ta thường ví sự bùng nổ Công nghệ thông tin như cuộc Cách mạng công nghiệp thế kỷ XVII. Công nghệ thông tin đã và đang mở ra một nền kinh tế tri thức, nền kinh tế đầy hứa hẹn và thách thức của kỷ nguyên phát triển mới của trí tuệ loài người. Sự phát triển của công nghệ thông tin đã và đang tạo ra những vận hội mới cũng như nhiều thách thức mới cho ngành Giáo dục Việt Nam. Cùng với sự phát triển của khoa học kỹ thuật và bùng nổ thông tin trong giai đoạn hiện nay. Ngành Giáo dục - Đào tạo đòi hỏi phải đổi mới nội dung chương trình và phương pháp giảng dạy nhằm đáp ứng nhu cầu đào tạo nguồn lực cho sự nghiệp công nghiệp hoá, hiện đại hoá đất nước. Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình tự hoạt động cho máy tính, máy gia dụng là rất cần thiết. Và để làm được việc đó cần có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó nhà lập trình có thể chọn một ngôn ngữ lập trình thích hợp. Trong các trường trung học phổ thông, Tin học là một môn học còn mới mẻ cho nên học sinh còn nhiều bỡ ngỡ khi tiếp cận với môn học này. Nội dung tin học lập trình lớp 11 là một nội dung mới lạ đối với đa số học sinh với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đầu. Chính vì vậy mà học sinh chưa tìm được cách giải quyết các bài toán khi lập trình. Nguyên nhân dẫn đến những khó khăn mà học sinh thường gặp là rất phong phú nhưng có thể thấy một số nguyên nhân chính sau đây: - Học sinh thường gặp khó khăn khi xác định bài toán. - Khó liên hệ phương pháp giải một bài toán trong toán học với thuật giải bài toán tin học. - Nắm không vững cú pháp của ngôn ngữ lập trình. - Điều kiện học tập chưa thật sự đầy đủ: thiếu máy tính, thiếu tài liệu. Khi nghiên cứa SGK Tin học 11 tôi nhận thấy tư tưởng được thể hiện nhằm phát triển tư duy sáng tạo và rèn luyện năng lực trí tuệ cho học sinh THPT, nhưng vấn đề giải bài toán Tin học với học sinh nói chung và học sinh trường THPT TrÇn ¢n Chiªm nói riêng còn gặp rất nhiều khó khăn vì: - Đây là lĩnh vực đòi hỏi HS phải có kiến thức cơ bản về bài toán Tin học - Cần có năng lực tư duy logic nhất định. - Cần có sự say mê với bộ môn Tin học Vì vậy, để giúp các em phát triển khả năng tư duy logic, có định hướng đúng, có niềm đam mê về tin học, về nghề nghiệp mà các em chọn sau này tôi đã chọn đề tài: “ Kinh nghiệm định hướng giúp học sinh rèn luyện kĩ năng giải bài tập Tin học 11” 1.2. Mục đích nghiên cứu Việc gặp phải những khó khăn trên nên khi lập trình giải các bài toán học sinh thường đi vào hướng bế tắc, thậm chí có những em không xác định rõ được yêu cầu mà bài toán chính vì thế học sinh không đưa ra được thuật toán chính xác dẫn đến kết quả sai hoặc không giải được bài toán. Mặt khác với học sinh môn Tin học bị coi là môn “phụ” nên các em học theo kiểu đối phó, lấy điểm, học vẹt vì thế độ lười về tư duy cho bài tập Tin học càng cao. Trong nội dung đề tài này tôi nêu ra sẽ giúp các em có được hướng giải quyết bài toán Tin học một cách đơn giản, dễ hiểu và tạo cho các các em được không khí học tập tích cực. 1.3. Đối tượng, kế hoạch và phạm vi nghiên cứu - Đối tượng nghiên cứu: Học sinh các lớp 11A3, 11A4, 11A5, 11A6, 11A7, 11A8 trường THPT TrÇn ¢n Chiªm năm học 2017-2018. - Kế hoạch nghiên cứu: Trực tiếp qua các tiết bài tập. - Phạm vi nghiên cứu: Toàn bộ chương trình tin học lớp 11 ( Một số dạng bài tập cơ bản khi học ngôn ngữ lập trình Pascal). 1.4. Phương pháp nghiên cứu Các dạng bài tập rất phong phú. Tuy nhiên trong phạm vi sáng kiến kinh nghiệm này tôi chỉ trình bày một số nội dung cụ thể sau: - Phương pháp phân tích và xác định bài toán Tin học theo hướng đặt câu hỏi gợi mở. - Phương pháp tổng hợp, đặt vấn đề, vấn đáp, thảo luận, xử lí thông tin, thực nghiệm về một số vấn đề có liên quan đến nội dung nghiên cứu. 1.5. Những điểm mới của sáng kiến kinh nghiệm - Giúp học sinh phát huy tính tích cực, chủ động vận dụng kiến thức toán học đã có vào giải các bài tập tin học. - Khai thác triệt để được khả năng tư duy logic của học sinh và định hướng cho học sinh giải đúng các bài tập. - Thông qua hướng dẫn của giáo viên giúp học sinh thấy được bài tập tin học không hề mới hay xa lạ với các em, việc giải các bài tập tin học giúp các em củng cố tri thức và tăng khả năng tư duy logic, tư duy sáng tạo trong quá trình học. 2. Nội dung sáng kiến kinh nghiệm 2.1.Cơ sở lí luận Cùng với sự phát triển của Khoa học kỹ thuật và bùng nổ thông tin trong giai đoạn hiện nay. Ngành Giáo dục - Đào tạo đòi hỏi phải đổi mới nội dung chương trình và phương pháp giảng dạy nhằm đáp ứng nhu cầu đào tạo nguồn lực cho sự nghiệp công nghiệp hoá, hiện đại hoá đất nước. Tính cấp thiết đó một lần nữa đã được khẳng định trong Nghị Quyết đại hội đảng toàn quốc lần thứ X: “Đổi mới phương pháp giảng dạy, phát huy tư duy sáng tạo và năng lực tự đào tạo của người học, coi trọng thực hành ngoại khoá, làm chủ kiến thức, tránh nhồi nhét học vẹt, học chay”. Đảng và Nhà nước ta đã nhận thấy được tầm quan trọng của ngành Tin học và đã đưa môn học này vào nhà trường phổ thông như những môn khoa học khác bắt đầu từ năm học 2006 - 2007. Chỉ thị số 55/2008/CT- BGTĐT ngày 30/9/2008 của Bộ trưởng Bộ GDĐT về tăng cường giảng dạy, đào tạo và ứng dụng công nghệ thông tin trong ngành giáo dục giai đoạn 2008 - 2011. . Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm Qua thực tế giảng dạy ở Trường THPT TrÇn ¢n Chiªm các năm qua, tôi nhận thấy khi học đến chương trình tin học lớp 11, học sinh luôn phản ánh với giáo viên rằng bộ môn này khó hiểu và trừu tượng. Khi kiểm tra với mức độ tương đương các ví dụ SGK, các em vẫn mơ hồ và đạt kết quả chưa cao. Tuy nhiên cũng có một số lượng không nhỏ học sinh rất yêu thích và hứng thú với môn Tin học. 2.3. Các giải pháp sử dụng để giải quyết vấn đề: a. Phương pháp tiếp cận và giải một bài toán Khi đưa ra một bài toán thì việc phát hiện cách giải quyết vấn đề là hết sức cần thiết. Bước 1: Tìm hiểu nội dung đề bài (giúp cho người đọc thấy được yêu cầu của bài toán): - Phát biểu lại bài toán để có thể hiểu rõ hơn (nếu cần) - Xác định các dữ kiện vào (Input), ra (Output) Bước 2: Xây dựng ý tưởng giải thuật - Tìm tòi, phát hiện cách giải nhờ khả năng tư duy kết hợp với hệ thống giải thuật được cung cấp. - Thể hiện ý tưởng thông qua việc liệt kê các bước giải hoặc dùng sơ đồ khối. Bước 3: Sự kết hợp giữa giải thuật và ý tưởng để đưa ra lời giải - Dùng ngôn ngữ lập trình - Sử dụng phương pháp lập trình Top – Down và tinh chế từng bước. Bước 4: Nghiên cứu lời giải để phát triển khả năng tư duy - Kiểm tra lời giải. - Tìm những cách giải khác, so sánh lựa chọn cách thích hợp. - Nghiên cứu khả năng ứng dụng. - Nghiên cứu để áp dụng cho những bài toán tương tự. b. Các biện pháp tổ chức thực hiện: * Xây dựng hệ thống câu hỏi gợi mở: Giải bài tập là củng cố lại tri thức cho học sinh, việc xây dựng câu hỏi gợi mở để giải quyết vấn đề là hết sức cần thiết. Đây là bước khởi đầu giúp học sinh đưa ra ý tưởng giải quyết vấn đề. Xây dựng câu hỏi gợi mở dựa vào căn cứ sau: - Căn cứ vào yêu cầu của bài toán - Căn cứ vào tiến trình thực hiện của giáo viên - Căn cứ vào năng lực học tập của học sinh - Căn cứ vào lượng kiến thức có liên quan và những vướng mắc có thể của học sinh trong quá trình giải quyết bài toán - Căn cứ vào phương tiện thiết bị hỗ trợ c. Ví dụ vận dụng: Ví dụ 1: Viết chương trình nhập vào số nguyên dương N, in lên màn hình tổng các chữ số của nó. - Định hướng khó khăn gặp phải khi giải bài tập trên: học sinh không nhớ 2 phép toán chia dùng cho số nguyên và không biết sử dụng vòng lặp nào là hợp lí. - Phân tích bài toán để đưa ra định hướng giải quyết: (1) Chữ số N sẽ được tách như thế nào? Bắt đầu tách từ chữ số nào? (GV cần lưu ý cho học sinh la ta chưa biết N có bao nhiêu chữ số nhưng chữ số dễ tách nhất là chữ số hàng đơn vị, vậy tách chữ số hàng đơn vị bằng cách nào? (2) Phép toán nào trong kiểu số nguyên cho phép ta tách được chữ số ở hàng đơn vị? (phép toán lấy số dư : MOD) (3) Để loại được chữ số tính tổng( chữ số hàng đơn vị) ra khỏi N ta dùng phép toán nào? ( phép toán lấy phần nguyên: Div) (4) Việc lặp lại 2 thao tác trên để tách chữ số hàng đơn vị ra tính tổng và loại nó ra khỏi N lặp lại bao nhiêu lần? Lặp đến khi nào và dùng vòng lặp nào hợp lí? (5) Điều kiện lặp là gì? (6) Cần có những biến nào trong chương trình? - Mô tả thuật toán sau khi xác định ý tưởng giải quyết vấn đề: Bước 1: Nhập vào số nguyên N Bước 2: tong:=0 Bước 3: Nếu N<=0 thì qua bước 5 Bước 4: DV:= N mod 10; tong:= tong+DV; N:=N div 10; quay lại bước 3 Bước 5: Đưa ra tong và kết thúc. - Tinh chế các bước trong thuật toán thành chương trình theo ngôn ngữ lập trình pascal: Program tinh_tong_ cac_chu_so; Var N,tong: integer; DV: byte; Begin Writeln(‘nhap vao N:’); Readln(n); Tong:=0; While N0 do Begin DV:= N mod 10; Tong:= tong+DV; N:= N div10; End; Writeln(‘ tong cac chu so cua N:’, tong); Readln; End. Ví dụ 2: Viết chương trình nhập vào từ bàn phím các số nguyên dương, kết thúc nhập khi nhập số 0. Cho biết có bao nhiêu số dương đã nhập vào và trung bình cộng của chúng là bao nhiêu? - Định hướng khó khăn: học sinh không biết sử dụng vòng lặp nào cho hợp lí, không biết cách tính trung bình cộng. - Xây dựng câu hỏi gợi mở để giải quyết bài toán: (1) Để lặp lại việc nhập một số nguyên cần dùng vòng lặp nào? (2) Điều kiện lặp là gì? (3) Làm thế nào để đếm được số lần nhập các số nguyên dương? (4) Trong bài toán cần có những biến nào? (5) Cần làm những phép toán nào để tính được trung bình cộng? - Từ câu trả lời của học sinh giáo viên cùng học sinh phân tích và đưa ra ý tưởng giải bài toán - Xây dựng thuật toán từ ý tưởng giải thuật: Bước 1: Gán giá trị cho 2 biến Tong:=0; Dem:=0; Bước 2: Nhập vào số nguyên X, nếu X>0 thì: + Đưa X vào tính Tong: Tong:= Tong+X; + Tăng số lần nhập lên 1: Dem:= Dem+1; + quyay lại bước 2 Bước 3: + Nếu Tong>0 thì thông báo “có Dem số nguyên dương và trung bình cộng là Tong/Dem” + Kết thúc. - Viết lại thuật toán bằng ngôn ngữ lập trình Pascal: Program Tinh_TBC; Var X, Dem,Tong:Integer; TBC: real; Begin Tong:=0; Dem:=0; Repeat Write(‘nhap vao so nguyen duong:’); Readln(X); If X>0 then Begin Dem:=Dem+1; Tong:= Tong+X; End; Until X:=0; Writeln(‘co’,Dem, ‘so nguyen duong da nhap’); TBC:= Tong/Dem; Writeln(‘Trung binh cong cua chung:’,TBC); Readln; End. Ví dụ 3: Viết chương trình nhập vào một số nguyên dương N, xác định xem N có phải là một số thuộc dãy Fibonaci hay không? Dãy Fibonaci được cho bởi công thức sau: F1=F2=1 Fn=F(n-1) + F(n-2) với mọi n>2. + Định hướng khó khăn: - Học sinh không biết là tạo bao nhiêu số fibonaci thì dừng và làm thế nào để kiểm tra số vừa tạo có phải là N không? - Dùng vòng lặp nào phù hợp? Điều kiện lặp là gì? + Xây dựng câu hỏi gợi mở để giải quyết bài toán: (1) Xác định biến để lưu giá trị dãy fibonaci vừa tạo? (2) Phải lưu dãy fibonaci như thế nào để có thể kiểm tra với N? (3) Kiểm tra xem N có trong dãy fibo vừa tạo hay không thực chất là ta làm công việc gì? (4) Số cuối cùng trong dẫy fibonaci vừa tạo phải như thế nào so với N? + Xây dựng thuật toán dựa trên ý tưởng gợi mở đã thực hiện: Bước 1: Nhập vào số nguyên dương N Bước 2: F1:=1; F2:=1; F:=0; Bước 3: Nếu N=F thì chuyển qua bước 5 Bước 4: Nếu N>F thì - F:= F1+F2 - F1:=F2; F2:=F quay lại bước 3 Bước 5: Đưa ra kết quả và kết thúc + Viết lại thuật toán bằng ngôn ngữ lập trình Pascal: Program so_fibo; Var F1,F2,F: Integer; N: Integer; Begin Writeln(‘nhap vao so nguyen N:’); Readln(N); F1:=1; F2:=1; F:=0; While F<N do Be gin F:=F1+F2; F1:=F2; F2:=F; End; If N=F then Writeln(‘N thuoc day fibonaci’) Else Writeln(‘N khong thuoc day fibonaci’); Readln; End. d. X©y dùng gi¸o ¸n tiÕt bµi tËp nh»m rÌn luyÖn kü n¨ng x©y dùng thuËt to¸n vµ ph¸t huy tÝnh tÝch cùc cña häc sinh. Hoạt động của thầy Hoạt động của HS Nội dung GV: Đưa ra bài toán - Yêu cầu HS xác định bài toán Hãy xác định Input và Output của bài toán? - Gợi ý – dẫn dắt HS giải bài toán: (1) Làm thế nào để ta xác định được N là số nguyên dương theo đúng yêu cầu của bài toán? (2) Bằng câu lệnh nào để xác định Ai<1000? (3) Em hãy nhắc lại thế nào là cấp số cộng? (4) Công sai của cấp số cộng xác định như thế nào? - Từ câu trả lời GV giúp học sinh xây dựng ý tưởng giải thuật và từ ý tưởng giải thuật để xây dựng thuật toán. GV hướng dẫn HS chuyển từ thuật toán sang ngôn ngữ lập trình pascal Sau khi viết xong chương trình GV đưa ra một số ví dụ để kiểm tra thử. Gv cùng với HS tìm cách giải khác, so sánh và lựa chọn cách thích giải thích hợp. Gv đưa ra bài tập tiếp theo: - Yêu cầu HS xác định các dữ kiện bài toán và phân tích hướng dẫn để HS giải bài toán. * Phân tích, gợi ý: (1) Chữ số được xác định như thế nào? (2) Số và kí tự là số khác nhau như thế nào? (3) Bằng cách nào ta có thể xác định được đó là kí tự số? (4) Sử dụng vòng lặp nào để có thể kiểm tra hết các kí tự trong xâu S? (5) Dùng những biến nào cho bài toán? - Qua hệ thống câu trả lời GV hỗ trợ để HS có định hướng giải thuật rõ ràng - GV hướng dẫn HS viết lời giải bằng NNLT và giúp các em hoàn thiện bài tập. - Đưa ra ví dụ để kiểm tra tính chính xác của bài toán và hướng dẫn để HS có tìm thêm cách giải khác. Theo dõi đề bài GV đưa ra và phân tích, xác định đề bài. + Input: N và dãy A + Output: dãy A có phải là cấp số cộng hay không? Dùng câu lệnh repeat..until để nhập N và dãy AN - Cấp số cộng là một dãy số mà kể từ số hạng thứ 2 mỗi số hạng trong dãy đều bằng số hạng đứng trước nó cộng với 1 số không đổi. Số không đổi đó gọi là công sai. - Công sai: d=A2-A1 - Xây dựng các bước giải bài toán: Bước 1: Nhập vào N và dãy AN với abs(Ai<1000) Bước 2: Nếu N và Ai chưa thoả mãn yêu cầu thì quay lại bước 1 Bước 3: Tính công sai D:= A[2]-A[1]; dem:=2; Bước 4: Nếu (dem<=N) và( A[dem]- A[dem-1] =d) thì dem:=dem+1; Quay lại bước 4. Bước 5: Nếu dem>N thì kết luận dãy AN là cấp số cộng. Ngược lại thì không phải là cấp số cộng. Kết thúc. Theo dõi và tiếp nhận kiến thức, ghi chép bài. Theo dõi đề bài và xác định bài toán: + Input: Xâu S, length(S)<100 + Output: Số chữ số có trong xâu S HS Trả lời các câu hỏi của GV và từ đó xác định hướng giải quyết bài toán, sau đó cụ thể hoá thành các bước: Bước 1: Nhập vào xâu S theo đúng yêu cầu Bước 2: khởi tạo biến dem:=0, chỉ số i:=1; Bước 3: Nếu i>N thì qua bước 5; Bước 4: nếu S[i] là chữ số thì tăng biến dem lên 1; + i tăng lên 1; quay lại bước 3; Bước 5: thông báo kết quả. HS xác định phương án duyệt xâu để đếm các chữ số có trong xâu Ghi chép bài và tìm tòi thêm cách giải khác sau đó so sánh lựa chọn cách giải phù hợp. Bài 1: Viết chương trình nhập từ bàn phím số nguyên dương N(0<N<100) và dãy A có N số hạng A1, A2,..., AN các số có giá trị tuyệt đối không lớn hơn 1000. Hãy cho biết dãy A có phải là cấp số cộng hay không? Thông báo kết quả ra màn hình. Xác định bài toán: + Input: N, dãy AN với 0<N<100, abs(Ai<1000) + Output: dãy AN có phải là cấp số cộng hay không. Viết chương trình bằng NNLT pascal: Program cap_so_cong; Var A: array[1..100] of integer; dem,N,d: integer; Begin Repeat Write(‘nhap vao so phan tu:’); Readln(N); Until (N>0) and (N<100); For i:=1 to N do Repeat Writln(‘nhap vao a[‘,i,’]=’); Readln(A[i]); Until (abs(A[i])<1000); D:=A[2]-A[1]; dem:=2; While (dem<=N) and (A[dem]-A[dem-1]) do Dem:=dem+1; If dem>N then Write(‘day A la cap so cong’) Else Write (‘khong phai la cap so cong’); Readln; End. Bài 2: Viết chương trình nhập từ bàn phím xâu kí tự S có độ dài không quá 100. Hãy cho biết có bao nhiêu chữ số xuất hiện trong xâu S? Thông báo kết quả ra màn hình. * Trình bày lời giải bằng ngôn ngữ lập trình pascal: Program dem_chu_so; Var S:string[100]; I,dem: byte; Begin Write(‘nhap vao xau’); Readln(s); Dem:=0; For i:=1 to length(s) do If S[i] >=’0’ and S[i]<=’9’ then dem:=dem+1; Writeln (‘so chu so thap phan trong S la:’,dem); Readln; End. ĐỀ VÀ ĐÁP ÁN KIỂM TRA SAU TÁC ĐỘNG ĐỀ KIỂM TRA I. Trắc nghiệm (3 điểm) Câu 1: Cho đoạn chương trình: i:= 1; while i< 10 do write (‘A’); Câu lệnh trên sẽ viết ra màn hình bao nhiêu chữ A A. Không viết ra chữ A nào cả. B. Sẽ viết ra vô số chữ A. C. 9 D. 10 Câu 2: Xác định giá trị của x, y sau khi thực hiện đoạn chương trình? Var x, y : Integer; Begin x:= 10; y:= 15; x:= x+y; y:= y-x; End; A. x= 25, y= 15. B. x= 10, y= -15. C. x= 15, y= -10. D. x= 25, y= -10. Câu 3: Cách tham chiếu đến phần tử trong mảng một chiều: A. Tên kiểu mảng, tiếp theo là chỉ số viết trong cặp ngoặc [ và ] B. Tên biến mảng, tiếp theo là chỉ số viết trong cặp ngoặc [ và ] C. Tên kiểu mảng, tiếp theo là chỉ số viết trong cặp ngoặc ( và )) D. Tên biến mảng, tiếp theo là chỉ số viết trong cặp ngoặc ( và ) Câu 4: Chọn phát biểu sai. Để nhập giá trị cho các biến, ta có thể dùng các cách sau: A. Input(danh sách biến vào); B. Dùng lệnh gán: tên biến := giá trị; C. Readln(danh sách biến vào); D. Read(danh sách biến vào); Câu 5: Trong Pascal, câu lệnh readln không có tham số có tác dụng: A. Nhập vào một giá trị bất kỳ B. Dừng màn hình, xem kết quả C. Không làm gì cả D. Xuống dòng. Câu 6: Phát biểu nào dưới đây là đúng ? A. Đại lượng có giá trị không đổi trong quá trình thực hiện chương trình gọi là biến. B. Khi cần thay đổi ý nghĩa của một từ khóa nào đó người lập trình cần khai báo theo ý nghĩa mới. C. Trong chương trình tên gọi cũng là một đối tượng không thay đổi nên cũng có thể xem là hằng. D. Tên do người lập trình tự đặt không được trùng với từ khóa nhưng có thể trùng với tên chuẩn Câu 7: Câu lệnh lặp tiến có dạng là: A. For := downto do ; B. For := to do ; C. For do ; D. For := to then ; Câu 8: Trong NNLT Pascal, hai xâu kí tự được so sánh dựa trên? A. Độ dài thực sự cảu hai xâu B. Số lượng các kí tự khác nhau trong xâu C. Độ dài tối đa của hai xâu D. Mã của từng kí tự trong các xâu lần lượt từ trái sang phải Câu 9: Chọn tên sai A. tam_giac B. hoa – hong C. dientich D. _123 Câu 10: Trong Pascal có các loại tên: A. Tên chuẩn, tên do người lập trình đặt. B. Tên chuẩn, tên dành riêng, tên do người lập trình đặt. C. Tên dành riêng, tên do người lập trình đặt. D. Tên dành riêng, tên chuẩn, từ khóa. II. Tự luận: (7 điểm) Câu 1: Viết chương trình: Tạo mảng A gồm n phần tử (n<=100), đếm và tính tổng các số lẻ trong mảng A. Câu 2: Điền khuyết Viết chương trình tìm phần tử có giá trị nhỏ 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ị nhỏ nhất thì đưa ra phần tử có chỉ số nhỏ nhất. Program btvn; Const nmax = 100; Type ............. = array [ 1 . . nmax] of integer; Var A : baitap; n, i, j : integer; begin write (..................); readln( n ); for i:= 1 to n do begin write ( ‘phan tu thu’, i, ‘=’); write (..................); end; j := 1; for i:= 2 to n do if ...............................then j := i; write ( ........................................); readln; end. ĐÁP ÁN: PHẦN TRẮC NGHIỆM: (3 điểm) (mỗi câu đúng đạt 0.3 điểm) 1. B 2. A 3. B 4. A 5. B 6. D 7. B 8. D 9. B 10. B PHẦN TỰ LUẬN: (5 điểm) (sửa đúng 1 lỗi đạt 0.5 điểm) Câu 1: Program Sum1; Uses crt; Const nmax = 100; Type baitap = array [ 1 . . nmax] of integer; Var A : baitap; Dem,s, n, i : integer; begin clrscr; randomize; write (‘ Nhap n =’); readln( n ); for i:= 1 to n do A[i]:= random (300) – random (300); for i:= 1 to n do write (A[i]); writeln; s:= 0; dem:=0; for i:= 1 to n do if A[i] mod 2 0 then begin dem:=dem+1; s := s + A[i]; end; writeln (s); readln; end. Câu 2: Program btvn; Const nmax = 100; Type baitap = array [ 1 . . nmax] of integer; Var A : baitap; n, i, j : integer; begin write (‘nhap n’); readln( n ); for i:= 1 to
Tài liệu đính kèm:
- skkn_kinh_nghiem_dinh_huong_giup_hoc_sinh_ren_luyen_ki_nang.doc