Giáo án Tin học Lớp 8 - Chương trình cả năm - Lưu Thị Bích Hạnh

doc 48 trang thungat 01/11/2022 1500
Bạn đang xem 20 trang mẫu của tài liệu "Giáo án Tin học Lớp 8 - Chương trình cả năm - Lưu Thị Bích Hạnh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • docgiao_an_tin_hoc_lop_8_chuong_trinh_ca_nam_luu_thi_bich_hanh.doc

Nội dung text: Giáo án Tin học Lớp 8 - Chương trình cả năm - Lưu Thị Bích Hạnh

  1. Giáo án Tin học 8 Tuần: 1 Ngày soạn: 30/08/2006 Tiết: 1, 2 Ngày dạy: ÔN TẬP I. MỤC TIÊU *Thống kê lại và nắm được tất cả các các kiến thức đã học từ việc viết một chương trình đơn giản đến chương trình có chứa vòng lặp xác định For. *Rèn luyện cách ứng phó một bài tập lớn. II. CHUẨN BỊ GV: *Thống kê lại tất cả các kiến thức lớp 7. HS: *Ôn trước ở nhà lại tất cả kiến thức đã học. *Nắm lại cách viết chương trình trên máy. III. BÀI ÔN TẬP 1. Thủ tục nhập xuất -Nhập: READ, READLN. Ví dụ: Nhập dữ liệu vào biến a thì ta viết: READLN(a); -Xuất: WRITE, WRITELN. Ví dụ: Xuất dữ liệu từ biến a thì ta viết: WRITELN(a); 2. Các kiểu dữ liệu -Số nguyên: INTEGER, LONGINT Ví dụ: var: integer; -Số thực: REAL Ví dụ: var: Real; 3. IF THEN ELSE -Cú pháp: IF THEN ELSE -Đây là câu lệnh điều kiện -ĐK đúng thì thực hiện CV1, nếu ĐK sai thì thực hiện CV2. VD: IF a>0 THEN b:=3 ELSE b:=5; Nếu a nhận giá trị là 6 thì b=5 Nếu a nhận giá trị –4 thì b=3 4. FOR TO DO -Cú pháp: FOR := TO := DO -Đây là vòng lặp xác định. VD: For i:=1 to 3 do writeln(i); -i nhận giá trị là 1, 2, 3 và thực hiện công việc xuất i tương ứng. 5. BÀI TẬP Bài 1: Viết chương trình nhập vào 2 số nguyên a, b. Tính a+b và xuất kết quả ra màn hình. Bài 2: Viết chương trình nhập vào 2 số nguyên a, b. Tính a+b, a-b, a*b và xuất kết quả ra màn hình. Bài 3: Viết chương trình nhập vào 2 số nguyên a, b. Tính a2 và xuất kết quả ra màn hình. Bài 4: Viết chương trình nhập vào 2 số nguyên a, b. Tính a2 + b2 và xuất kết quả ra màn hình. Bài 5: Viết chương trình nhập vào 2 số nguyên a, b. Tính a2 + b2 ,a2 - b2 và xuất kết quả ra màn hình. GV: Lưu Thị Bích Hạnh
  2. Giáo án Tin học 8 Tuần: 2 Ngày soạn: Tiết: 3, 4 Ngày dạy: VÒNG LẶP WHILE DO I. MỤC TIÊU *Nắm được cú pháp và cách sử dụng vòng lặp WHILE DO *Biết được sự khác nhau của REPEAT, WHILE và FOR. *Nhận biết được khi nào sử dụng lệnh lặp nào II. CHUẨN BỊ 1. GV: * Dùng bảng phụ ghi tóm tắt lại nôi dung bài học. HS: *Học thuộc bài cũ. *Đọc trước bài mới. III. BÀI MỚI 1. Lưu đồ lệnh WHILE DO * Lưu đồ * Ý nghĩa lưu đồ: Trong khi mà điều kiện còn đúng thì cứ thực hiện Công việc, rồi quay trở về kiểm tra điều kiện lại. Vòng lặp được tiếp tục, đến khi điều kiện đặt ra không còn đúng nữa thì đi tới thực hiện lệnh tiếp theo 2. Cú pháp lệnh WHILE DO WHILE DO Ghi chú: · Ðiều kiện trong cấu trúc lặp WHILE DO là một biểu thức logic kiểu Boolean chỉ có 2 giá trị là Ðúng (True) hoặc Sai (False) · Nếu điều kiện Ðúng thì chương trình sẽ chạy trong cấu trúc WHILE DO. · Sau mỗi lần lặp, chương trình trở lại kiểm tra điều kiện. Tùy theo biểu thức logic của điều kiện là Ðúng hay Sai thì chương trình sẽ thực hiện Công việc tương ứng. · Nếu Sai thì chuyển xuống dưới cấu trúc WHILE DO 3. Ví dụ: GV: Lưu Thị Bích Hạnh  Trang 3
  3. Giáo án Tin học 8 Tuần: 3 Ngày soạn: Tiết: 5, 6 Ngày dạy: THỰC HÀNH I. MỤC TIÊU *Viết được chương trình có chứa vòng lặp WHILE DO *Thay thế một chương trình có chứa FOR thành WHILE DO và ngược lại. *Sửa một số lỗi thường gặp. II. CHUẨN BỊ 1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành. 2. HS: *Ôn lại lý thuyết đã học. * Giải trước bài tập về nhà vào tập để thực hành. III. BÀI THỰC HÀNH Bài 1: Viết chương trình nhập vào 1 số a. Nếu a không phải là số dương thì nhập lại, đến khi nào là số dương thì dừng. Program bai1; Var a:Real; Begin Readln(a); While a 0 do Readln(a); Readln; End. IV. HƯỚNG DẪN VỀ NHÀ Lài bài tập và xem trước bài mới. Người soạn Việt Trì, ngày . tháng . năm . Duyệt của tổ trưởng Lưu Thị Bích Hạnh GV: Lưu Thị Bích Hạnh  Trang 5
  4. Giáo án Tin học 8 Repeat Readln(a); Until a>0; Readln; End. 3. Sự khác biệt giữa While và Repeat: So sánh 2 cách viết WHILE DO và REPEAT UNTIL ta thấy có sự khác biệt: -Vòng lặp While luôn luôn đi với cặp từ khoá Begin và End còn trong vòng lặp Repeat không cần sử dụng cặp Begin và End. - Trong cấu trúc WHILE DO thì được kiểm tra trước, nếu thỏa thì mới thực hiện . - Ngược lại, trong cấu trúc REPEAT UNTIL thì sẽ được thực thi trước sau đó mới kiểm tra , nếu không thỏa thì tiếp tục thi hành cho đến khi là đúng. Lệnh REPEAT UNTIL thường được sử dụng trong lập trình, nhất là lúc người sử dụng muốn tiếp tục bài toán ở trường hợp thay đổi biến mà không phải trở về chương trình và nhấn tổ hợp phím Ctrl + F9 lại. Ví dụ 6.18: Nhân 2 số a và b PROGRAM Tich; VAR a, b : integer ; CK : char ; BEGIN REPEAT Write (' Nhập số a = '); Readln (a) ; Write (' Nhập số b = '); Readln (b) ; Writeln (' Tích số của a x b là :' , a*b : 10 ) ; Writeln (' Tiếp tục tính nữa không (CK) ? '); Readln (CK) ; UNTIL upcase(CK) = K; {hàm chuyển đổi ký tự trong biến} {CK thành ký tự in hoa} END. Việt trì, ngày . tháng . năm . Người soạn Duyệt của tổ trưởng Lưu Thị Bích Hạnh GV: Lưu Thị Bích Hạnh  Trang 7
  5. Giáo án Tin học 8 Tuần: 6 Ngày soạn: Tiết: 11, 12 Ngày dạy: CẤU TRÚC DỮ LIỆU MẢNG I. MỤC TIÊU * Biết được thế nào là mảng,cách khai báo, nhập liệu, và các thao tác căn bản trên máy. * Biết được khi nào sử dụng mảng, hiệu quả của việc sử dụng mảng. II. CHUẨN BỊ 1. GV: * Một số ví dụ thực tế về mảng. HS: * Ôn lại vòng lặp FOR. III. BÀI MỚI 1. Khai báo dữ liệu kiểu mảng Một mảng dữ liệu gồm một số hữu hạn phần tử có cùng kiểu gọi là kiểu cơ bản. Số phần tử của mảng được xác định ngay từ khi định nghĩa ra mảng. Mỗi phần tử của mảng đựoc truy nhập trực tiếp thông qua tên mảng cùng với chỉ dẫn truy nhập được để giữa hai ngoặc vuông [ ]. Định nghĩa biến A có kiểu mảng : gồm có các phần tử từ n đến m và có kiểu dữ liệu là KDL thì được khai báo như sau: VAR A : Array[ n m ] Of KDL ; Ví dụ: Khai báo mảng BB có các phần tử từ 1 đến 10 và kiểu dữ liệu chứa là số nguyên (INTEGER) nhạp vào từ bàn phím: VAR BB : Array[ 1 10] Of INTEGER ; 2. Đưa dữ liệu vào mảng Ta có thể đưa dữ liệu từ ngoài (bàn phím) vào mảng bằng lệnh READ hoặc READLN như sau: READ( BB(i) ) ; hoặc READLN( BB(i) ) ; Ví dụ: Cho mảng 10 phần tử và nhập vào mảng các số nguyên từ bàn phím VAR A: ARRAY [1 10] OF INTEGER; I: INTEGER; BEGIN For i:=1 to 10 do Readln(A(i)); Readln; END. Hoặc để sáng suốt hơn thì ta có thể viết như sau: VAR A: ARRAY [1 10] OF INTEGER; I: INTEGER; BEGIN For i:=1 to 10 do Begin Write(‘ Nhap phan tu thu ‘,i,’ =’); Readln(A(i)); GV: Lưu Thị Bích Hạnh  Trang 9
  6. Giáo án Tin học 8 Tuần: 7 Ngày soạn: Tiết: 13, 14 Ngày dạy: THỰC HÀNH I. MỤC TIÊU *Hiểu rỏ hơn về cách viết chương trình có sử dụng mảng. *Hiểu rỏ hơn về cách chạy chương trình có sử dụng mảng. *Sửa một số lỗi thường gặp. II. CHUẨN BỊ 1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành. 2. HS: *Ôn lại lý thuyết đã học. * Giải trước bài tập về nhà vào tập để thực hành. III. BÀI THỰC HÀNH Bài 1: Viết chương trình nhập vào 10 số nguyên. Xuất các số dương ra màng hình Bài giải Program bai1; Var a:Array[1 10] of Integer; i:integer; Begin For i:=1 to 10 do Readln(a[i]); For i:=1 to 10 do if a[i] > 0 then Writeln(a[i]); Readln; End. Bài 2: Viết chương trình nhập vào 10 số nguyên dương. Xuất các số chẵn ra màn hình. Bài giải Program bai2; Var a:Array[1 10] of Integer; i:integer; Begin For i:=1 to 10 do Readln(a[i]); For i:=1 to 10 do if a[i] mod 2= 0 then Writeln(a[i]); Readln; End. Người soạn Việt Trì, ngày . tháng . năm . Duyệt của tổ trưởng Lưu Thị Bích Hạnh GV: Lưu Thị Bích Hạnh  Trang 11
  7. Giáo án Tin học 8 Begin k := i ; For j := i +1 To n Do If m[k] > m[j] Then k := j ; If k > i Then Begin tg := m[ i ] ; m[i] := m[k] ; m[k] := tg ; End; End; Writeln(' Cac phan tu da duoc sap xep la ') ; For i := 1 To n Do Write (m [ i ] : 9 : 2) ; Readln END . IV. CỦNG CỐ Sắp xếp bằng cách chọn trực tiếp Có nhiều thuật giải sắp xếp một mảng. Trong chương trình trên ta dùng thuật giải chọn trực tiếp. Giả sử mảng có N phần tử, ta thực hiện như sau: Với mỗi vòng lặp theo i từ 1 đến N - 1 ta cho K := i ; rồi dùng vòng lặp theo j (lồng vào bên trong vòng lặp theo i) j duyệt từ i + 1 đến N để tìm chỉ số K của phần tử nhỏ nhất trong các phần tử từ phần tử thứ i đến phần tử thứ N, bằng cách nếu gặp phần tử thứ j nhỏ hơn phần tử có chỉ số đang lưu giữ ở K thì gán K := j ; Hết vòng lặp theo j thì tráo đổi phần tử thứ K với phần tử thứ i (nếu K > i). V. BÀI TẬP VỀ NHÀ 1: Viết chương trình nhập vào 10 số nguyên. Xuất các số dương ra màng hình 2: Viết chương trình nhập vào 10 số nguyên dương. Xuất các số chẵn ra màn hình. 3. Viết chương trình nhận vào chiều cao của các bạn Mai, Lan, Cúc, Thu, Bích Thuỷ, Hồng Nhung, Anh. Sắp xếp và in ra màn hình chiều cao của các bạn theo thứ tự tăng dần. Yêu cầu khai báo kiểu liệt kê tương ứng với tên các bạn để làm chỉ số cho mảng lưu trữ chiều cao của họ. 4. Viết chương trình cho máy nhận vào mảng A có n phần tử là những số thực (n > 9). Xây dựng mảng B các phần tử là những số nguyên được tạo thành từ các phần tử của mảng A theo cách B[i] là trị tuyệt đối của phần nguyên của A[i]. Sắp xếp và in ra mảng A, mảng B theo thứ tự tăng dần. Việt Trì, ngày . tháng . năm . Người soạn Duyệt của tổ trưởng Lưu Thị Bích Hạnh GV: Lưu Thị Bích Hạnh  Trang 13
  8. Giáo án Tin học 8 Tuần: 10 Ngày soạn: Tiết: 19, 20 Ngày dạy: THỰC HÀNH I. MỤC TIÊU *Củng cố lại kiến thức đã học II. ĐỀ ĐỀ KIỂM TRA 1 TIẾT MÔN TIN HỌC 8 Đề: Viết chương trình nhập vào mảng có 6 số. Sắp xếp theo thứ tự tăng dần. VD: Nhập 1 5 -6 0 2 4 Xuất: -6 0 1 2 4 5 * Lưu ý Học sinh lưu bài với tên và kết hợp với lớp của mình. VD: học sinh là trần Quốc Cường lớp 8A1 thì lưu với tên là: D:\cuong8a1.pas Việt Trì, ngày . tháng . năm . Người soạn Duyệt của tổ trưởng Lưu Thị Bích Hạnh GV: Lưu Thị Bích Hạnh  Trang 15
  9. Giáo án Tin học 8 Tuần: 12 Ngày soạn: Tiết: 23, 24 Ngày dạy: THUẬT TOÁN MAX, MIN I. MỤC TIÊU * Biết được một số ứng dụng của mảng vào việc giải một số bài tập. * Biết được khi nào sử dụng mảng, hiệu quả của việc sử dụng mảng. II. CHUẨN BỊ 1. GV: * Một số ví dụ thực tế về mảng. * Dùng bảng phụ ghi trước giải thuật sắp xếp mảng. HS: * Ôn lại vòng lặp FOR. III. BÀI MỚI 1. Tìm giá trị nhỏ nhất của dãy đã cho. PROGRAM Tim_Min; CONST a:array[1 10] of shortint=(0, 1, 2, 3, 4, -1, -2, -3, -4, 5); VAR amin: shortint; {chứa giá trị nhỏ nhất của dãy} i: byte; {chỉ số của dãy} BEGIN amin:= a[1]; {cho amin bằng phần tử đầu tiên} For i:=2 to 10 do {so amin với các phần tử khác của dãy} If amin>a[i] Then amin:=a[i]; {nếu còn phần tử nào nhỏ hơn amin thì thay amin bằng phần tử đó} Writeln('amin=', amin); Readln; END. Mở rộng: Tìm giá trị lớn nhất của dãy đã cho. *Học sinh tự giải. 2. Tìm giá trị nhỏ thứ hai của dãy và đổi nó về vị trí thứ hai. Hướng dẫn: Tìm phần tử nhỏ nhất của dãy, đổi nó về vị trí đầu tiên. Sau đó tìm phần tử nhỏ nhất của dãy con còn lại. PROGRAM Tim_Min_Thu2; CONST a:array[1 10] of shortint=(0, 1, 2, 3, 4, -1, -2, -3, -4, 5); VAR i: byte; {chứa chỉ số các phầnt tử của dãy} imin: byte; {đánh dấu vị trí amin} atg: shortint; {chứa giá trị trung gian khi đổi chỗ các phần tử} BEGIN imin:=1; {a[1] coi là nhỏ nhất} For i:=2 To 10 Do {so với các phần tử còn lại} If a[imin]> a[i] Then imin:=i; {nếu còn phần tử nhỏ nhất thì đánh dấu phần tử đó} atg:=a[1]; GV: Lưu Thị Bích Hạnh  Trang 17
  10. Giáo án Tin học 8 Tuần: 13 Ngày soạn: Tiết: 25, 26 Ngày dạy: THỰC HÀNH V. MỤC TIÊU *Hiểu rỏ hơn về cách viết chương trình có sử dụng thuật toán Max - Min. *Hiểu rỏ hơn về cách chạy chương trình có sử dụng thuật toán Max – min. *Sửa một số lỗi thường gặp. VI. CHUẨN BỊ 1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành. 2. HS: *Ôn lại lý thuyết đã học. * Giải trước bài tập về nhà vào tập để thực hành. VII. BÀI THỰC HÀNH Bài 1: Viết chương trình nhập vào 2 số nguyên a, b. Xuất số lớn nhất ra màng hình Bài giải Program bai1; Var a, b:integer; Begin Write(‘ nhap vao so nguyen a = ‘); Readln(a); Write(‘ nhap vao so nguyen b = ‘); Readln(b); Max:=a; If b> max then Max:=b; Write(‘ so lan nhat la ‘,max); Readln; End. Bài 2: Viết chương trình nhập vào 4 số nguyên a,b, c, d. Xuất số lớn nhất, nhỏ nhất ra màn hình. Bài giải Program bai2; Var a, b, c, d:integer; Begin Write(‘ nhap vao so nguyen a = ‘); Readln(a); Write(‘ nhap vao so nguyen b = ‘); Readln(b); Write(‘ nhap vao so nguyen c = ‘); Readln(c); Write(‘ nhap vao so nguyen d = ‘); Readln(d); Max:=a; If b> max then Max:=b; If c> max then Max:=c; If d> max then Max:=d; Write(‘ so lon nhat la ‘,max); GV: Lưu Thị Bích Hạnh  Trang 19
  11. Giáo án Tin học 8 Tuần: 14 Ngày soạn: Tiết: 27, 28 Ngày dạy: THỰC HÀNH I. MỤC TIÊU *Hiểu rỏ hơn về cách viết chương trình có sử dụng thuật toán tìm kiếm. *Hiểu rỏ hơn về cách chạy chương trình có sử dụng thuật toán tìm kiếm. *Sửa một số lỗi thường gặp. II. CHUẨN BỊ 1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành. 2. HS: *Ôn lại lý thuyết đã học. * Giải trước bài tập về nhà vào tập để thực hành. III. BÀI THỰC HÀNH Bài 1: Viết chương trình nhập vào 4 số nguyên a,b, c, d. Tìm xem có bao nhiêu số dương (>0). Bài giải Program bai2; Var a, b, c, d:integer; Begin Write(‘ nhap vao so nguyen a = ‘); Readln(a); Write(‘ nhap vao so nguyen b = ‘); Readln(b); Write(‘ nhap vao so nguyen c = ‘); Readln(c); Write(‘ nhap vao so nguyen d = ‘); Readln(d); D:=0; If a>0 thend:=d+1; If b>0 thend:=d+1; If c>0 thend:=d+1; If d>0 thend:=d+1; Write(‘ Tong so cac so duong la :’,d); Readln; End. Bài 2: Viết chương trình nhập vào mảng a có 10 phần tử. Tìm xem có bao nhiêu số là số chẵn. Bài giải Program bai2; Var a: Array [1 10] of integer; I: integer; Begin For i:=1 to 10 do GV: Lưu Thị Bích Hạnh  Trang 21
  12. Giáo án Tin học 8 Tuần: 15 Ngày soạn: Tiết: 29, 30 Ngày dạy: ĐỀ KIỂM TRA LÍ THUYẾT Hãy khoanh tròn chữ cái đứng trước câu trả lời em cho là đúng nhất Câu 1. Để tìm giá trị lớn nhất của 2 số a, b thì ta viết: a) Max:=a;If b>Max then Max:=b; b) If (a>b) then Max:=a;If (b>a) then Max:=b; c) Max:=b;If a>Max then Max:=a; d) Cả 3 câu đều đúng. Câu 2. For i:=5 to 10 do writeln(i); Ta khai báo i thuộc kiểu dữ liệu nào? a. Số thực b. Số nguyên c. Kiểu kí tự (CHAR) d. Số thực và số nguyên. Câu 3. Tong:=0;For i:=1 to 3 do Tong :=Tong+i; Biến Tong có giá trị là: a. 1 b. 5 c. 6 d. 3 Câu 4. Cú pháp của vòng lặp Repeat Until là: a. Repeat Until b. Repeat Until c. Repeat Until d. Tất cả đều đúng. Câu 5. Biến a được nhận các giá trị là 0 ; -1 ; 1 ; 2,3 . Ta có thể khai báo a thuộc kiểu dữ liệu nào? a. Integer b. Char c. Real d. Integer và Longint Câu 6. Cú pháp của vòng lặp While do là: a. While do b. While do c. While do d. Tất cả đều đúng. Câu 7. If Then Else là: a. Vòng lặp xác định b. Vòng lặp không xác định c. Câu lệnh điều kiện d. Một khai báo Câu 8. Repeat Until là: a. Vòng lặp xác định b. Vòng lặp không xác định c. Câu lệnh điều kiện d. Một khai báo Câu 9. Kiểu dữ liệu Integer có giá trị lớn nhất là a. 32768 b. 32767 c. 2 tỉ d. -32768 +32767 Câu 10. Giải thuật tìm và xuất các ước của một số nguyên a là: a. for i:=1 to a do if a mod i = 0 then writeln (i); b. for i:=1 to a do if a mod i = 0 then writeln (a); c. Một đáp án khác. Câu 11. a là biến dữ liệu kiểu số nguyên. Muốn xuất giá trị của a2 thì ta viết a. Writeln('a*a') b. Readln(' a*a ') GV: Lưu Thị Bích Hạnh  Trang 23
  13. Giáo án Tin học 8 c) Max:=b;If a>Max then Max:=a; d) Cả 3 câu đều đúng. GV: Lưu Thị Bích Hạnh  Trang 25
  14. Giáo án Tin học 8 4. Tìm bội chung của 2 số nguyên a, b. -Bội chung của 2 số nguyên a và b là tập hợp những số m sao cho m đồng thời chia hết cho a và b. VD: số 8 và 6 có các bội chung là 24, 48, - Cách tìm tập hợp các bội chung của 2 số nguyên a, b là lần lượt nhân tích của a*b với lần lượt 1, 2, 3, - Giải thuật: (k là một số nguyên) For i:= 1 to k do writeln(a*b*i); Người soạn Việt Trì, ngày . tháng . năm . Duyệt của tổ trưởng Lưu Thị Bích Hạnh GV: Lưu Thị Bích Hạnh  Trang 27
  15. Giáo án Tin học 8 Tuần: 18 Ngày soạn: Tiết: 35, 36 Ngày dạy: THI LÍ THUYẾT Hãy khoanh tròn chữ cái đứng trước câu trả lời em cho là đúng nhất Câu 1. Để tìm giá trị nhỏ nhất của 2 số a, b thì ta viết: a) Min:=a;If b Until b. Repeat Until c. Repeat Until d. Tất cả đều đúng. Câu 5. Các cách đặt tên sau, cách nào đúng: a. bai thi b. baithi c. Bàithi d. Bài thi Câu 6. Cú pháp của vòng lặp While do là: a. While do b. While do c. While do d. Tất cả đều đúng. Câu 7. If Then Else là: a. Vòng lặp xác định b. Vòng lặp không xác định c. Câu lệnh điều kiện d. Một khai báo Câu 8. Repeat Until là: a. Vòng lặp xác định b. Vòng lặp không xác định c. Câu lệnh điều kiện d. Một khai báo Câu 9. Kiểu dữ liệu Integer và Longint a. Bằng nhau b. Đều là kiểu số nguyên c. Khác nhau hoàn toàn d. Có thể thay thế cho nhau mọi lúc Câu 10. Giải thuật tìm và xuất các ước chung của số nguyên a và b là: a. for i:=1 to a do if (a mod i = 0) and (b mod i = 0) then writeln (i); b. for i:=1 to b do if (a mod i = 0) and (b mod i = 0) then writeln (i); c. Tất cả đúng. d. Tất cả sai. Câu 11. Để khai báo biến i kiểu số nguyên; a, b kiểu số thực thì ta khai báo: GV: Lưu Thị Bích Hạnh  Trang 29
  16. Giáo án Tin học 8 GV: Lưu Thị Bích Hạnh  Trang 31
  17. Giáo án Tin học 8 Để đơn giản ta quy ước văn bản chỉ viết chữ thường. * Thuật giải Bài toán được giải bằng cách nhận vào xâu cần mã. Sau đó lần lượt duyệt xâu bắt đầu từ kí tự thứ nhất cho đến kí tự cuối cùng của xâu. Ứng với mỗi kí tự là nguyên âm thì thay nó bằng nguyên âm tương ứng theo qui tắc đã cho ở đề bài toán. IV. CỦNG CỐ 1. Khai báo xâu kí tự Để khai báo biến xâu kí tự ta dùng từ khóa STRING, tiếp đó đến số kí tự nhiều nhất mà xâu cần lưu trữ. Số này để trong dấu móc vuông. Nếu không chỉ ra số kí tự nhiều nhất của xâu thì máy hiểu xâu có độ dài khai báo là 255 kí tự. 2. Hằng xâu kí tự Hằng xâu kí tự được viết trong hai dấu nháy cao. Ví dụ ‘ Chao the ki ki 21’ 3. Những hàm trên xâu kí tự: a. LENGTH(st) Cho số kí tự của xâu st kể cả dấu cách. b. ST[i] Cho kí tự thứ i của xâu st (tính từ trái sang phải bắt đầu từ 1). c. Upcase(st[i]) Đổi kí tự thứ i của xâu st sang viết hoa (nếu nó là kí tự viết thường). V. BÀI TẬP VỀ NHÀ Bài toán 1: Viết chương trình nhập vào họ và tên của một học sinh. Xuất họ và tên đó ra màn hình. Bài toán 2: Viết chương trình nhập vào 3 biến: ho, tên, lot để nhập theo thứ tự họ, tên và chữ lót của một học sinh. Ghép 3biến lại thành họ lót tên và xuất kết quả ra màn hình. Bài toán 3: Viết chương trình nhập vào 3 biến: ngày, tháng, năm. Ghép chúng với dạng ngày/tháng/ năm (ví dụ 10/01/2008) và xuất kết quả ra màn hình. Việt Trì, ngày . tháng . năm . Duyệt của tổ trưởng GV: Lưu Thị Bích Hạnh  Trang 33
  18. Giáo án Tin học 8 Tuần: 21 Ngày soạn: Tiết: 39, 40 Ngày dạy: MỘT SỐ HÀM VÀ THỦ TỤC VỚI XÂU I. MỤC TIÊU * Biết được một số hàm và thủ tục để xử lý trên xâu kí tự. * Vận dụng hàm COPY, POS, DELETE, INSERT vàochương trình cụ thể. II. CHUẨN BỊ 1. GV: HS: III. BÀI MỚI 1. Những hàm chuẩn trên xâu a. COPY(st, p, n) Cho kết quả là một xâu con gồm n kí tự của xâu st kể từ kí tự thứ p tính từ trái sang phải. VD: Nếu st= ‘TRUONG THCS TAY DO’ Ta dùng hàm st1:=COPY(st,2,5) Cho kết quả là st1= ‘RUONG’ b. POS(st1, st) Cho vị trí xuất hiện lần đầu tiên của xâu st1 trong xâu st. VD: Nếu st= ‘TRUONG THCS TAY DO’ St1= ‘O’ Ta dùng hàm a:=COPY(st,st1) Cho kết quả là a=4 c. UPCASE(st[i]) Cho kết quả là đổi kí tự thứ st[i] thành kí tự in hoa. VD: Nếu st= ‘truong thcs tay do’ Ta dùng hàm st[5]:= UPCASE (st[5]) Cho kết quả là st= ‘truoNg thcs tay do’ 2. Hàm ghép xâu st1 + st2 cho xâu kết quả nhận được bằng cách viết xâu st2 sau xâu st1. VD: Nếu st1= ‘truong thcs tay do’ St2= ‘lop 8a’ Ta dùng hàm st:=st1+st2 Cho ta kết quả là st=‘truong thcs tay dolop 8a’ 3. Thủ tục xoá và chèn xâu con a. DELETE(st, p, n) ; Xoá khỏi xâu st một xâu con gồm n kí tự kể từ kí tự thứ p và kéo các kí tự còn lại ở phía cuối xâu về vị trí p. b. INSERT(st1, st, p) ; GV: Lưu Thị Bích Hạnh  Trang 35
  19. Giáo án Tin học 8 Tuần: 22 Ngày soạn: Tiết: 43, 44 Ngày dạy: THỰC HÀNH MỘT SỐ HÀM VÀ THỦ TỤC TRÊN XÂU KÍ TỰ I. MỤC TIÊU * Biết được cách chi xuất các phần tử của xâu. * Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu. II. CHUẨN BỊ GV: * Một số ví dụ thực tế. HS: * Ôn lại một số thủ tục và hàm trên xâu. III. BÀI MỚI Bài toán 1: Viết chương trình nhập vào họ và tên của một học sinh. Xuất họ và tên đó ra màn hình. Program bt1; Var t:string[29]; Begin Write(‘ nhap vao ho ten cua mot hoc sinh’);readln(t); Write(‘ho ten da nhap la’);writeln(t); Readln; End. Bài toán 2: Viết chương trình nhập vào 3 biến: ho, tên, lot để nhập theo thứ tự họ, tên và chữ lót của một học sinh. Ghép 3biến lại thành họ lót tên và xuất kết quả ra màn hình. Program bt2; Var ho,ten:string[8];lot:string[20]; T:string[36]; Begin Write(‘ nhap vao ho’);readln(ho); Write(‘ nhap vao ten’);readln(ten); Write(‘ nhap vao chu lot’);readln(lot); T:=ho+lot+ten; Write(‘ho ten da nhap la’);writeln(t); Readln; End. GV: Lưu Thị Bích Hạnh  Trang 37
  20. Giáo án Tin học 8 Tuần: 23 Ngày soạn: Tiết: 45, 46 Ngày dạy: CHUẨN HÓA XÂU I. MỤC TIÊU * Biết được một xâu kí tự viết đúng qui cách là gì, và cách biến đổi từ xâu không đúng qui cách về đúng qui cách. * Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu. II. CHUẨN BỊ GV: * Một số ví dụ thực tế. HS: * Ôn lại một số thủ tục và hàm trên xâu. III. BÀI MỚI Đặt vấn đề: Khi lập danh sách họ và tên của học sinh thì chúng ta viết theo qui cách là: mỗi chữ cách nhau chỉ 1 kí tự trắng, kí tự đầu của chữ phải in hoa. Một xâu thỏa mản các ván đề đó thì tạm gọ là xâu đã được chuẩn hóa. Như vậy, để chuẩn hóa xâu thì ta phải cắt bỏ các kí tự trắng thừa ở đầu, giữa xâu và in hoa kí tự đầu của chữ. Giã sử xâu St là xâu cần chuẩn hóa 1. Cắt bỏ kí tự trắng thừa ở đầu xâu. While St[1]= ‘ ‘ do Delete(St,1,1); 2. Cắt bỏ kí tự trắng thừa ở giữa xâu. While Pos(‘ ‘,St) 0 do Delete(St, Pos(‘ ‘,St),1); St[1]:= Upcase(St[1]); For i:=1to Length(St) do If St[i]= ‘ ‘ then St[i+1]:=Upcase(St[i+1]); Write(‘xau da chuan hoa la:’);Writeln(St); Readln; GV: Lưu Thị Bích Hạnh  Trang 39
  21. Giáo án Tin học 8 Tuần: 24 Ngày soạn: Tiết: 47, 48 Ngày dạy: THỰC HÀNH CHUẨN HÓA XÂU KÍ TỰ I. MỤC TIÊU * Biết được cách chi xuất các phần tử của xâu. * Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu. II. CHUẨN BỊ GV: * Một số ví dụ thực tế. HS: * Ôn lại một số thủ tục và hàm trên xâu. III. BÀI MỚI 1) Viết chương trình nhập vào một xâu là họ và tên của 1 học sinh.Chuẩn hóa xâu vừa nhập. Program bta; Var St: String;i:Integer; Begin Write(‘nhap va mot xau ki tu:’);Readln(St); While St[1]= ‘ ‘ do Delete(St,1,1); While Pos(‘ ‘,St) 0 do Delete(St, Pos(‘ ‘,St),1); St[1]:= Upcase(St[1]); For i:=1to Length(St) do If St[i]= ‘ ‘ then St[i+1]:=Upcase(St[i+1]); Write(‘xau da chuan hoa la:’);Writeln(St); Readln; Người soạn End. Việt Trì, ngày . tháng . năm . Duyệt của tổ trưởng Lưu Thị Bích Hạnh GV: Lưu Thị Bích Hạnh  Trang 41
  22. Giáo án Tin học 8 4. Bài tập a) Viết chương trình nhập vào một xâu kí tự. Hỏi trong xâu vừa nhập có bao nhiêu kí tự a. Program bta; Var St: String;I,d:Integer; Begin Write(‘nhap va mot xau ki tu:’);Readln(St); d:=0; For i:=1 to length(St) do If St[i]= ‘a’ then d:=d+1; Write(‘so ki tu a xuat hien la:’);Writeln(d); Readln; End. b) Viết chương trình nhập vào 3 xâu. Thay thế trong xâu St các xâu kí tự st1 thành xâu kí tự st2. Program btb; Var St,st1,st2: String; i:Integer; Begin Write(‘nhap va xau st:’);Readln(St); Write(‘nhap va xau st1:’);Readln(St1); Write(‘nhap va xau st2:’);Readln(St2); For i:=1 to length(St) do If copy(St,I,length(st1))= st1 then Begin Delete(st,I,length(st1)); Insert(st2,st,length(st1)); End; Write(‘xau ket qua la:’);Writeln(St); Readln; End. Việt Trì, ngày . tháng . năm . Người soạn Duyệt của tổ trưởng Lưu Thị Bích Hạnh GV: Lưu Thị Bích Hạnh  Trang 43
  23. Giáo án Tin học 8 Tuần: 27 Ngày soạn: Tiết: 53, 54 Ngày dạy: CHUYỂN ĐỔI SỐ VÀ XÂU KÍ TỰ I. MỤC TIÊU * Biết được các thủ tục đổi số thành xâu kí tự và ngược lại. * Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu. II. CHUẨN BỊ GV: * Một số ví dụ thực tế. HS: * Ôn lại một số thủ tục và hàm trên xâu. III. BÀI MỚI Đặt vấn đề: Trong khi xử lí xâu kí tự thì người ta thường thực hiện các phép cộng số được nhập từ bàn phím. Nếu như số nào khai báo kiểu xâu thì cộng không ra kết quả như mong muốn. Do đó, ta cần chuyển đối xâu thành số. 1. Đổi xâu thành số Val(st, v, c) ; Thủ tục biến đổi biểu thức xâu kí tự st thành số và gán kết quả cho biến số v. Biến c là biến nguyên (không nhận kiểu BYTE) dùng để ghi vị trí kí tự đầu tiên gây ra lỗi khi chuyển đổi từ st sang v. Nếu đổi không được thì c=0,đổi được (Không có lỗi) thì c = 0. Việc có đổi được hay không là phụ thuộc vào biểu thức xâu và khai báo kiểu của biến số v. VD1 st=’12345’;val(st,v,c); Kết quả: v=12345, c=0; VD2 st=’12st’;val(st,v,c); Kết quả: v=0, c<>0; 2. Đổi số thành xâu Str(v, st) ; Thủ tục biến đổi giá trị bỉểu thức số v thành xâu kí tự và gửi kết quả vào biến xâu st. VD v=123;Str(v,st); Kết quả: st= ‘123’; 4. Bài tập a) Viết chương trình nhập vào một xâu kí tự bất kì có cả kí tự số. Hỏi trong xâu vừa nhập có bao nhiêu kí tự số. Program bta; Var St: String;I,d,v:Integer; Begin Write(‘nhap va mot xau ki tu:’);Readln(St); d:=0; For i:=1 to length(St) do Begin GV: Lưu Thị Bích Hạnh  Trang 45
  24. Giáo án Tin học 8 Tuần: 28 Ngày soạn: Tiết: 55, 56 Ngày dạy: THỰC HÀNH CHUYỂN ĐỔI SỐ VÀ XÂU KÍ TỰ I. MỤC TIÊU * Biết được cách chi xuất các phần tử của xâu. * Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu. II. CHUẨN BỊ GV: * Một số ví dụ thực tế. HS: * Ôn lại một số thủ tục và hàm trên xâu. III. BÀI MỚI 1) Viết chương trình nhập vào một xâu kí tự bất kì có cả kí tự số. Hỏi trong xâu vừa nhập có bao nhiêu kí tự số. Program bta; Var St: String;I,d,v:Integer; Begin Write(‘nhap va mot xau ki tu:’);Readln(St); d:=0; For i:=1 to length(St) do Begin Val(st[i],v,c); If c= 0 then d:=d+1; End; Write(‘so ki tu so trong xau la:’);Writeln(d); Readln; End. 2) Viết chương trình nhập vào một xâu kí tự bất kì có cả kí tự số. Tính tổng tất cả các kí tự số trong xâu. Program btb; Var St: String;I,d,v:Integer; Begin Write(‘nhap va mot xau ki tu:’);Readln(St); d:=0; For i:=1 to length(St) do Begin Val(st[i],v,c); If c= 0 then d:=d+v; End; Write(‘so ki tu so trong xau la:’);Writeln(d); Readln; End. GV: Lưu Thị Bích Hạnh  Trang 47