Xu Hướng 6/2023 # Giải Các Bài Tập Tin Học 8 # Top 14 View | Ictu-hanoi.edu.vn

Xu Hướng 6/2023 # Giải Các Bài Tập Tin Học 8 # Top 14 View

Bạn đang xem bài viết Giải Các Bài Tập Tin Học 8 được cập nhật mới nhất trên website Ictu-hanoi.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

1. Sao chép cụm từ cần tìm vào bộ nhớ (ta gọi đây là cụm từ 1).

2. Sao chép cụm từ sẽ thay thế cụm từ tìm được vào bộ nhớ (cụm từ 2).

3. Tìm cụm từ 1 trong văn bản.

4. Xóa cụm từ 1 tìm được trong văn bản.

5. Sao chép cụm từ 2 vào vị trí con trỏ trong văn bản.

1. Sao chép dãy kí tự cần tìm vào bộ nhớ (dãy 1).

2. Sao chép dãy kí tự sẽ thay thế dãy kí tự tìm được vào bộ nhớ (dãy 2).

3. Đặt con trỏ trước kí tự đầu tiên trong văn bản.

4. Sao chép dãy kí tự (tính từ vị trí con trỏ sang phải) có độ dài bằng dãy kí tự cần tìm vào bộ nhớ (dãy 3).

5. So sánh dãy 1 và dãy 3. Nếu dãy 3 không trùng với dãy 1, chuyển đến lệnh 8.

Bài 1. Máy tính và chương trình máy tính Câu hỏi và bài tập Khi soạn thảo văn bản trên máy tính và yêu cầu chương trình tìm kiếm một cụm từ trong văn bản và thay thế bằng một cụm từ khác, thực chất ta đã yêu cầu máy tính thực hiện những lệnh gì? Có thể thay đổi thứ tự những lệnh đó mà vẫn không thay đổi kết quả được không? Trong ví dụ về rô-bốt, nếu thay đổi thứ tự của hai lệnh trong chương trình, rô-bốt có thực hiện được công việc nhặt rác không? Hãy xác định vị trí mới của rô-bốt sau khi thực hiện xong lệnh "Hãy quét nhà" và đưa ra các lệnh để rô-bốt trở lại vị trí ban đầu của mình. Hãy cho biết lí do cần phải viết chương trình để điều khiển máy tính. Tại sao người ta phải tạo ra các ngôn ngữ lập trình trong khi có thể điều khiển máy tính bằng ngôn ngữ máy? Chương trình dịch làm gì? Hãy cho biết các bước cần thực hiện để tạo ra các chương trình máy tính. Hướng dẫn trả lời Sao chép cụm từ cần tìm vào bộ nhớ (ta gọi đây là cụm từ 1). Sao chép cụm từ sẽ thay thế cụm từ tìm được vào bộ nhớ (cụm từ 2). Tìm cụm từ 1 trong văn bản. Xóa cụm từ 1 tìm được trong văn bản. Sao chép cụm từ 2 vào vị trí con trỏ trong văn bản. Sao chép dãy kí tự cần tìm vào bộ nhớ (dãy 1). Sao chép dãy kí tự sẽ thay thế dãy kí tự tìm được vào bộ nhớ (dãy 2). Đặt con trỏ trước kí tự đầu tiên trong văn bản. Sao chép dãy kí tự (tính từ vị trí con trỏ sang phải) có độ dài bằng dãy kí tự cần tìm vào bộ nhớ (dãy 3). So sánh dãy 1 và dãy 3. Nếu dãy 3 không trùng với dãy 1, chuyển đến lệnh 8. Xóa dãy 3 trong văn bản. Sao chép dãy 2 vào vị trí con trỏ soạn thảo trong văn bản. Di chuyển con trỏ sang phải một kí tự và quay lại lệnh 4. Qua các lệnh liệt kê theo thứ tự nói trên, dễ thấy rằng có thể thay đổi thứ tự thực hiện của một vài lệnh (1 và 2), nhưng nói chung việc thay đổi thứ tự các lệnh sẽ không cho kết quả mong muốn. Nếu thay đổi thứ tự của hai lệnh trong chương trình điều khiển rô-bốt, rô-bốt sẽ không thực hiện được công việc nhặt rác vì rô-bốt sẽ không đi đúng hướng và có thể không đi tới vị trí có rác, hoặc thực hiện việc nhặt rác tại vị trí không có rác,.... Ví dụ, nếu thay đổi thứ tự của lệnh 1 "Tiến 2 bước" và lệnh 2 "Quay trái, tiến 1 bước", tác dụng của cả hai lệnh này sẽ là "Quay trái và tiến 3 bước". Khi đó rô-bốt sẽ nhặt rác tại vị trí không có rác. Nói chung, các lệnh điều khiển rô-bốt hay chương trình cần được đưa ra theo một thứ tự xác định sao cho ta đạt kết quả mong muốn. Trong một số ít trường hợp, ta có thể đưa ra các lệnh khác nhau, nhưng vẫn đạt kết quả. Chẳng hạn, trong ví dụ về rô-bốt, thay cho hai câu lệnh đầu tiên, ta có thể điều khiển rô-bốt đến đúng vị trí có rác bằng các lệnh sau: "Quay trái, tiến 1 bước" và "Quay phải, tiến 2 bước" hoặc "Quay phải, tiến 2 bước", "Quay trái, tiến 2 bước" và "Quay trái, tiến 4 bước". Trong một số ít các trường hợp khác, việc thay đổi thứ tự của một vài câu lệnh vẫn cho kết quả đúng như yêu cầu. Tuy nhiên, như là một nguyên tắc chung, việc thay đổi thứ tự các câu lệnh sẽ không cho kết quả đúng. Có thể liên hệ với thứ tự các bước của thuật toán trong Bài 5. Vị trí mới của rô-bốt sau khi thực hiện xong lệnh "Hãy quét nhà" là vị trí có thùng rác (ở góc đối diện). Ta có nhiều cách khác nhau để đưa ra hai lệnh để rô-bốt trở lại vị trí ban đầu của mình, một trong các cách đó là hai lệnh "Quay trái, tiến 5 bước" và "Quay trái, tiến 3 bước". Lí do: Điều khiển máy tính tự động thực hiện các công việc đa dạng và phức tạp mà một lệnh đơn giản không đủ để chỉ dẫn. Tuy ngôn ngữ máy cũng là một loại ngôn ngữ lập trình, nhưng ở đây chúng ta hiểu ngôn ngữ lập trình là ngôn ngữ lập trình bậc cao. Trong ngôn ngữ máy mọi chỉ thị đều được biểu diễn bằng các con số nhị phân 0 và 1. Ngôn ngữ máy khó đọc và khó sử dụng, tuy vậy ngôn ngữ máy là ngôn ngữ duy nhất mà bộ vi xử lí có thể nhận biết và thực hiện một cách trực tiếp. Ngoài ra yếu điểm chính của các chương trình viết bằng ngôn ngữ máy là phụ thuộc vào phần cứng máy tính. Các ngôn ngữ lập trình bậc cao được phát triển để khắc phục các yếu điểm trân của ngôn ngữ máy. Ngôn ngữ lập trình sử dụng các cụm từ tự nhiên nên dễ nhớ, dễ học và không phụ thuộc vào phần cứng máy tính. Chương trình dịch là chương trình có chức năng chuyển đổi chương trình được viết bằng ngôn ngữ lập trình thành chương trình thực hiện được trên máy tính. Như vậy, chương trình dịch chuyển đổi tệp gồm các dòng lệnh được soạn thảo thành tệp có thể chạy trên máy tính. Hai bước cơ bản để tạo ra các chương trình máy tính là (1) viết chương trình theo ngôn ngữ lập trình và (2) dịch chương trình thành ngôn ngữ máy để máy tính hiểu được và kết quả là tệp tin có thể thực hiện được trên máy tính. Lưu ý rằng, đây chỉ là hai bước cơ bản trong lập trình và chỉ là một phần của công việc giải quyết bài toán bằng máy tính. Bài 2. Làm quen với Ngôn ngữ lập trình Câu hỏi và bài tập Hãy cho biết các thành phần cơ bản của một ngôn ngữ lập trình . Ta có thể viết các chương trình bằng các câu lệnh có các chữ cái của tiếng Việt, chẳng hạn "rẽ trái", được không? Tại sao? Tên trong chương trình là gì? Cho biết sự khác biệt từ khóa và tên, cách đặt tên trong chương trình. Trong số các tên sau đây do người viết chương trình đặt trong một chương trình Pascal, tên nào là hợp lệ và tên nào không hợp lệ: a, Tamgiac, 8a, Tam giac, beginprogram, end, b1, abc? Hãy cho biết các phần chính trong cấu trúc của mọi chương trình và vai trò của chúng. Trong các phần đó, phần nào là quan trọng nhất? Hãy cho biết chương trình Pascal sau đây có hợp lệ không, tại sao? a) Chương trình 1. begin end. b) Chương trình 2. begin program CT_thu; writeln('Chao cac ban'); end. Hướng dẫn trả lời Các thành phần cơ bản ngôn ngữ lập trình gồm bảng chữ cái và các quy tắc để viết các câu lệnh (cú pháp) có ý nghĩa xác định, cách bố trí các câu lệnh,... sao cho có thể tạo thành một chương trình hoàn chỉnh và chạy được trên máy tính. Lưu ý rằng các quy tắc nhắc đến ở đây bao gồm các thuật ngữ chuyên môn là cú pháp và ngữ nghĩa. Xem SGK, Mục 2, Bài 2. Không. Các cụm từ sử dụng trong chương trình (từ khóa, tên) phải được viết bằng các chữ cái trong bảng chữ cái của ngôn ngữ lập trình. Các ngôn ngữ lập trình phổ biến hiện nay đều có bảng chữ cái là bảng chữ cái tiếng Anh và các kí hiệu khác, trong đó không có các chữ cái có dấu của tiếng Việt. Lưu ý rằng câu hỏi trong bài là "viết chương trình bằng các câu lệnh...". Điều này không có nghĩa là trong chương trình không thể có các chữ cái có dấu của tiếng Việt (hay của một ngôn ngữ khác) như là dữ liệu dạng văn bản cần xử lí. Các chữ có dấu đó sẽ được ngôn ngữ lập trình xử lý mã kí tự tương ứng trong các bảng mã ASCII mở rộng. Ví dụ chương trình Pascal sau đây hoàn toàn hợp lệ: begin program CT_thu; writeln(' Chào các bạn'); end. Tên trong chương trình là dãy các chữ cái hợp lệ được lấy từ bảng chữ cái của ngôn ngữ lập trình. Từ khoá của một ngôn ngữ lập trình (hay còn được gọi là từ dành riêng) là tên chỉ được dùng cho các mục đích sử dụng do ngôn ngữ lập trình quy định, không được dùng cho bất kì mục đích nào khác. Người lập trình có thể đặt tên một cách tùy ý nhưng phải tuân thủ các quy tắc của ngôn ngữ lập trình cũng như của chương trình dịch, trong đó (1) Hai đại lượng khác nhau phải có tên khác nhau; (2) Tên không được trùng với các từ khoá. Các tên hợp lệ: a, Tamgiac, beginprogram, b1, abc, tên không hợp lệ: 8a (bắt đầu bằng số), Tam giac (có dấu cách), end (trùng với từ khóa). Xem SGK, Mục 4, Bài 2. a) Chương trình 1 là chương trình Pascal đầy đủ và hoàn toàn hợp lệ, mặc dù chương trình này chẳng thực hiện điều gì cả. Phần nhất thiết phải có trong chương trình là phần thân chương trình được đảm bảo bằng hai từ begin và end. (có dấu chấm). b) Chương trình 2 là chương trình Pascal không hợp lệ vì câu lệnh khai báo tên chương trình program CT_thu; nằm ở phần thân chương trình. Bài 3. Chương trình máy tính Và Dữ LIệU Câu hỏi và bài tập Hãy nêu ít nhất một lí do cho thấy sự cần thiết phải phân chia dữ liệu thành các kiểu! Hãy nêu ít nhất hai kiểu dữ liệu và một phép toán có thể thực hiện được trên một kiểu dữ liệu, nhưng phép toán đó không có nghĩa trên kiểu dữ liệu kia. Cho dãy chữ số 2010. Dãy chữ số đó có thể thuộc kiểu dữ liệu nào? Cho hai xâu kí tự "Lớp" và "8A". Hãy thử định nghĩa một "phép toán" có thể thực hiện được trên hai xâu kí tự đó. Hãy phân biệt ý nghĩa của các câu lệnh Pascal sau đây: Writeln('5+20=','20+5'); và Writeln('5+20=',20+5); Hai lệnh sau có tương đương với nhau không? Tại sao? Writeln('100'); và Writeln(100); Chuyển các biểu thức được viết trong Pascal sau đây thành các biểu thức toán: (a+b)*(a+b)-x/y b/(a*a+c) a*a/(2*b+c)*(2*b+c) 1+1/2+1/2*3+1/3*4+1/4*5 Hãy xác định kết quả của các phép so sánh sau đây: 15 - 8 ≥ 3 (20 - 15)2 ≠ 25 112 = 121 Viết các phép so sánh trong Bài tập 8 với các kí hiệu trong Pascal. Nêu một số ví dụ về tương tác giữa người và máy tính khi chương trình hoạt động. Hướng dẫn trả lời Vì dữ liệu và các thao tác xử lí dữ liệu rất đa dạng, lí do dễ nhận thấy nhất là việc phân chia dữ liệu thành các kiểu giúp xác định các phép xử lí (phép toán) có thể thực hiện trên mỗi kiểu dữ liệu. Ngoài ra việc phân chia kiểu dữ liệu còn cho biết các giá trị có thể (phạm vi) của dữ liệu, giúp cho việc quản lý tài nguyên của máy tính (đặc biệt là bộ nhớ trong) một cách hiệu quả. Có thể nêu các ví dụ sau đây: Dữ liệu kiểu số và dữ liệu kiểu xâu kí tự. Phép cộng được định nghĩa trên dữ liệu số, nhưng không có nghĩa trên dữ liệu kiểu xâu. Dữ liệu kiểu số nguyên và dữ liệu kiểu số thực. Phép chia lấy phần nguyên và phép chia lấy phần dư có nghĩa trên dữ liệu kiểu số nguyên, nhưng không có nghĩa trên dữ liệu kiểu số thực. Dãy chữ số 2010 có thể thuộc kiểu dữ liệu số nguyên, số thực hoặc kiểu xâu kí tự. Tuy nhiên, để chương trình dịch Turbo Pascal hiểu 2010 là dữ liệu kiểu xâu, chúng ta phải viết dãy số này trong cặp dấu nháy đơn ('). var a: real; b: integer; begin writeln('123'); writeln(123); a:=2010; b:=2010; end. Cho hai xâu kí tự "Lớp" và "8A". Có thể định nghĩa nhiều "phép toán" trên tập hợp các dữ liệu kiểu xâu. Chẳng hạn phép ghép: Lớp + 8A = Lớp8A. Hướng dẫn trả lời Tìm một từ nhất định bị gõ sai chính tả trong văn bản và sửa lại cho đúng. Số từ cần phải sửa chưa được biết trước. Khi chuẩn bị tô phở để phục vụ cho khách, cô bán hàng thường thực hiện các công việc sau đây: Cho một lượng bánh phở vào nồi nước phở để làm nóng bánh phở, cho bánh phở đã làm nóng vào bát, làm chín một ít thịt và cho vào bát bánh phở đã được làm nóng, cho thêm gia vị, thêm nước phở đang được đun sôi và bát phở,... Các thao tác đó được thực hiện lặp lại mỗi khi có khách ăn phở. Trong suốt ca bán hàng số lần thực hiện các thao tác lặp đó là không thể biết trước. Trong xưởng may, mỗi cô công nhân may cùng một chi tiết của chiếc áo, hay chiếc quần với các đường may đã được thiết kế trước. May xong một sản phẩm, cô công nhân sẽ may sản phẩm tiếp theo cho đến khi hết giờ làm việc. Sự khác biệt giữa câu lệnh lặp với số lần lặp cho trước và câu lệnh lặp với số lần lặp chưa biết trước là ở các điểm sau đây: Như tên gọi của nó, câu lệnh lặp với số lần lặp cho trước chỉ thị cho máy tính thực hiện một lệnh hoặc một nhóm lệnh với số lần đã được xác định từ trước, còn với câu lệnh lặp với số lần lặp chưa biết trước thì số lần lặp chưa được xác định trước. Trong câu lệnh lặp với số lần cho trước, điều kiện là giá trị của một biến đếm có giá trị nguyên đã đạt được giá trị lớn nhất hay chưa, còn trong câu lệnh lặp với số lần lặp chưa biết trước, điều kiện tổng quát hơn nhiều, có thể là kiểm tra một giá trị của một số thực, cũng có thể là một điều kiện tổng quát khác, ví dụ như một số có chia hết cho 3 hay không,... Trong câu lệnh lặp với số lần cho trước, câu lệnh được thực hiện ít nhất một lần, sau đó kiểm tra điều kiện. Trong câu lệnh lặp với số lần chưa xác định trước, trước hết điều kiện được kiểm tra. Nếu điều kiện được thỏa mãn, câu lệnh mới được thực hiện. Do đó có thể có trường hợp câu lệnh hoàn toàn không được thực hiện. Mô tả thuật toán: Bước 1. Đặt S ơ R (S là bán kính đường tròn sẽ vẽ), n ơ 0, x ơ 0.5. Bước 2. Nếu S < 1.2, chuyển tới bước 4. Bước 3. Vẽ đường tròn bán kính S, S ơ S - x và quay lại bước 2. Bước 4. Kết thúc thuật toán. a) Thuật toán 1: 10 vòng lặp được thực hiện. Khi kết thúc thuật toán S = 5.0. Đoạn chương trình Pascal tương ứng: S:=10; x:=0.5; writeln(S); b) Thuật toán 2: Không vòng lặp nào được thực hiện vì ngay từ đầu điều kiện đã không được thỏa mãn nên các bước 2 và 3 bị bỏ qua. S = 10 khi kết thúc thuật toán. Đoạn chương trình Pascal tương ứng: S:=10; n:=0; while S<10 do begin n:=n+3; S:=S-n end; writeln(S); Nhận xét: Trong các thuật toán và chương trình trên, điều kiện được kiểm tra trước khi các bước lặp được thực hiện. Do đó nếu điều kiện không được thỏa mãn ngay từ đầu, các bước lặp sẽ bị bỏ qua. Điều này đặc biệt đúng đối với câu lệnh lặp while..do. a) Chương trình thực hiện 5 vòng lặp. b) Vòng lặp trong chương trình được thực hiện vô tận vì sau câu lệnh n:=n+1; câu lệnh lặp kết thúc nên điều kiện S=0 luôn luôn được thỏa mãn. Nhận xét: Trong câu lệnh thực hiện, điều kiện cần phải được thay đổi để sớm hay muộn chuyển sang trạng thái không thỏa mãn. Khi đó vòng lặp mới được kết thúc sau hữu hạn bước. Để làm được điều này, câu lệnh trong câu lệnh lặp chúng tôi thường là câu lệnh ghép. a) Thừa dấu hai chấm trong điều kiện; b) Thiếu dấu hai chấm trong câu lệnh gán; c) Thiếu các từ khóa begin và end trước và sau các lệnh n:=n+1; S:=S+n, do đó vòng lặp trở thành vô tận. Viết thuật toán và chương trình Pascal có câu lệnh lặp với số lần không xác định để tính lũy thừa bậc n của x (tức xn), với n là số tự nhiên và x là số thực được nhập vào từ bàn phím. Hãy so sánh với thuật toán trong Bài tập 8, Bài 7. Thuật toán: Bước 1. Đọc các giá trị x và n. Bước 2. A ơ 1, k ơ 1. Bước 4. A = A.x, k ơ k + 1 và quay lại bước 3. Bước 5. Thông báo kết quả là A và kết thúc thuật toán. Chương trình Pascal: var n,k: integer; A, LT: real; begin write('Nhap so A= '); readln(A); write('Nhap so n= '); readln(n); LT:=1; k:=1; while k<=n do begin LT:=LT*A, k:=k+1 end end. Tính tích của N số tự nhiên đầu tiên với số lần lặp không xác định (với N là số tự nhiên được nhập vào từ bàn phím). Bước 1. Đọc giá trị N. Bước 2. T ơ 1, k ơ 1. Bước 3. Nếu k ≤ N, T = T.k; ngược lại, chuyển xuống bước 5. Bước 4. k ơ k + 1 và quay lại bước 3. Bước 5. Kết thúc thuật toán. Thuật toán: Bước 1. Đọc giá trị n. Bước 2. S ơ 0, i ơ 2. Bước 4. Nếu n chia hết cho i, S ơ S + i, i ơ i + 1 và quay lại bước 3. Bước 5. Ghi giá trị S và kết thúc thuật toán. Chương trình có thể như sau: var n,i,S: integer; begin write('Cho so tu nhien n= '); readln(n); i:=2; S:=0; while i<=n-1 do begin if (n mod i)=0 then S:=S+i; i:=i+1; end; write('Tong cac uoc so thuc su cua ',n,' la: ',S); readln; end. Chương trình có thể như sau: Uses CRT; Var A, sum: real; i: integer; Begin Write('cho so A: '); readln(A); i:=1; sum:= 0; While (sum<=A) do Begin sum:= sum+1/i; i:= i+1; end; Write('Gia tri N bang ', i:6); Readln; End. Bài 9. Làm việc với dãy số Câu hỏi và bài tập "Có thể xem biến mảng là một biến được tạo từ nhiều biến có cùng kiểu, nhưng chỉ dưới một tên duy nhất." Phát biểu đó đúng hay sai? Hãy nêu các lợi ích của việc sử dụng biến mảng trong chương trình. Các khai báo biến mảng sau đây trong Pascal đúng hay sai: var X: Array[10,13] Of Integer; var X: Array[5..10.5] Of Real; var X: Array[3.4..4.8] Of Integer; var X: Array[10..1] Of Integer; var X: Array[4..10] Of Real; Câu lệnh khai báo mảng sau đây có được máy tính thực hiện không? var N: integer; A: array[1..N] of real; Viết chương trình Pascal sử dụng mảng để nhập từ bàn phím các phần tử của một dãy số. Độ dài của dãy cũng được nhập từ bàn phím. Đoạn chương trình sau dùng để sắp xếp lại dãy số được ghi trong mảng A[i], i = 1,2,..., N, theo thứ tự tăng dần: For i:=1 to N do For j:=i to N do Begin Tg:=A[i]; A[i]:=A[j]; A[j]:=Tg; End; Hãy kiểm tra tính đúng đắn của đoạn chương trình trên. Hãy viết chương trình nhập 5 số ngyên từ bàn phím và ghi ra màn hình số lớn nhất trong 5 số đó theo hai cách: không sử dụng biến mảng và sử dụng biến mảng. Viết chương trình sử dụng biến mảng để tính giá trị trung bình của tổng N số nguyên được nhập vào từ bàn phím. Viết chương trình sử dụng biến mảng để nhập n số nguyên từ bàn phím và tính tổng các số dương trong số các số đó (xem lại Bài tập 7b, Bài 5). Trong Bài tập 9, em đã viết chương trình để tính tổng các ước số thực sự của một số nguyên, nhưng chưa liệt kê được các ước số đó. Hãy viết chương trình sử dụng biến mảng để in các ước số của số nguyên n (được nhập vào từ bàn phím). Hướng dẫn trả lời Đúng. Đáp án a) Sai. Phải thay dấu phảy bằng hai dấu chấm; b) và c) Sai, vì giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải là số nguyên; d) Sai, vì giá trị đâu của chỉ số mảng phải nhỏ hơn hoặc bằng chỉ số cuối; e) Đúng. Không. Giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải được xác định trong phần khai báo chương trình. Chương trình có thể như sau: uses crt; var N, i: integer; A: array[1..100] of real; begin clrscr; write('Nhap so phan tu cua mang, n= '); readln(n); for i:=1 to n do begin write('Nhap gia tri ',i,'cua mang, a[',i,']= '); read(a[i]) end; end. Đúng. a) Nếu không sử dụng biến mảng, chương trình có thể dài như sau: uses crt; var So_1, So_2, So_3, So_4, So_5, Max: integer; begin clrscr; write('Nhap so thu nhat: '); readln(So_1); write('Nhap so thu hai: '); readln(So_2); write('Nhap so thu ba: '); readln(So_3); write('Nhap so thu tu: '); readln(So_4); write('Nhap so thu nam: '); readln(So_5); Max:=So_1; If Max<So_2 then Max:=So_2; If Max<So_3 then Max:=So_3; If Max<So_4 then Max:=So_4; If Max<So_5 then Max:=So_5; writeln('So lon nhat: ',Max); end. b) Nếu sử dụng biến mảng, chương trình chỉ ngắn gọn như sau: uses crt; var i, Max: integer; A: array[1..5] of integer; begin clrscr; for i:=1 to 5 do begin write('Nhap so thu ',i,':'); readln(A[i]) end; Max:=a[1]; for i:=2 to 5 do If Max<a[i] then Max:=a[i]; writeln('So lon nhat: ',Max); end. Lưu ý. Xem cách viết chương trình ngắn gọn hơn và không sử dụng biến mảng trong Bài tập 9, Bài 7. Tuy nhiên, cách viết đó sẽ không cho kết quả mong muốn nếu sau khi nhập giá trị của các biến còn cần thực hiện các thao tác dữ liệu khác. Viết chương trình sử dụng biến mảng để tính giá trị trung bình của tổng N số nguyên được nhập vào từ bàn phím. uses crt; var N, i: integer; TB: real; A: array[1..100] of real; begin clrscr; write('Nhap so phan tu cua mang, n= '); read(n); for i:=1 to n do begin write('Nhap gia tri ',i,'cua mang, a[',i,']= '); readln(a[i]) end; TB:=0; for i:=1 to n do TB:=TB+a[i]; TB:=TB/n; write('Trung binh bang ',TB); end. Chương trình nhập n số nguyên từ bàn phím và tính tổng các số dương: uses crt; var n,k,S: integer; X: array[1..1000] of integer; begin clrscr; write('Nhap so tu nhien n: '); readln(n); for k:=1 to n do begin write('Nhap X[',k,']='); readln(X[k]) end; S:=0; for k:=1 to n do writeln('Tong cac duong S=',S); readln; end. Nội dung Bài 2 của Bài thực hành 6 là viết chương trình nhận biết một số tự nhiên có phải là số nguyên tố hay không. Nội dung của Bài tập 9, Bài 8, là viết chương trình tính tổng các ước số thực sự của một số nguyên, nhưng chưa liệt kê được các ước số đó. Để có thể liệt kê, chương trình cần phải ghi lại chúng. ý tưởng chính là sử dụng một biến mảng phục vụ cho điều này. Chương trình tương tự như trong Bài tập 9, Bài 8: uses crt; var n,i,k,S: integer; X: array[1..10000] of integer; begin clrscr; i:=2; S:=0; for k:=1 to (n-1) do X[k]:=0; {Dat lai = 0} while i<=(n-1) do {Ghi lai uoc so vao X[i]} begin if (n mod i)=0 then begin X[i]:= i; S:=S+X[i] end; i:=i+1; end; writeln('Tong cac uoc so thuc su cua ',n,' la: ',S); if S0 then begin write('Cac uoc so cua ',n,' la: '); for i:=1 to (n-1) do if X[i]0 then write(X[i],' ') end else writeln(n,' la so nguyen to.'); readln; end.

Giải Bài Tập Sgk Tin Học 8 Bài 5

Từ bài toán đến chương trình

Giải bài tập SGK Tin học 8 bài 5: Từ bài toán đến chương trình

Giải bài tập SGK Tin học 8 bài 5: Từ bài toán đến chương trình được VnDoc sưu tầm và đăng tải, tổng hợp các câu hỏi trong sách giáo khoa nằm trong chương trình giảng dạy môn Tin học lớp 8. Hi vọng rằng đây sẽ là những tài liệu hữu ích trong công tác giảng dạy và học tập của quý thầy cô và các bạn học sinh. Mời các quý thầy cô và các bạn cùng tham khảo

Bài 1 (trang 44 sgk Tin học lớp 8): Hãy chỉ ra INPUT và OUTPUT của các bài toán sau:

a) Xác định số học sinh trong lớp cùng mang họ Trần.

b) Tính tổng của các phần tử lớn hơn 0 trong dãy n số cho trước.

c) Tìm số các số có giá trị nhỏ nhất trong n số đã cho.

Trả lời:

a) INPUT: Danh sách số học sinh trong lớp.

OUTPUT: Số học sinh trong lớp mang họ Trần.

b) INPUT: Dãy gồm n số.

OUTPUT: Tổng các phần tử lớn hơn 0.

c) INPUT: Cho n số.

OUTPUT: Số các số có giá trị nhỏ nhất trong n số.

Bài 2 (trang 44 sgk Tin học lớp 8): Giả sử x và y là các biến số. Hãy cho biết kết quả của việc thực hiện thuật toán sau:

Bước 1. x ← x + y

Bước 2. y ← x – y

Bước 3. x ← x – y

Trả lời:

– Bước 1: Ở bước này giá trị của x sẽ bằng x cộng với y: x= x+y.

– Bước 2: Tiếp đến giá trị của y bằng giá trị của x – y: y= x (bước 1)-y= x+y-y= x.

– Bước 3: Cuối cùng giá trị của x bằng x-y: x=x(bước1)-y(bước 2)= x+y-x=y.

Vậy kết quả của thuật toán là x=y và y=x;

Bài 3 (trang 44 sgk Tin học lớp 8): Cho trước ba số dương a, b và c. Hãy mô tả thuật toán cho biết ba số đó có thể là độ dài ba cạnh của một tam giác hay không.

Trả lời:

– Thuật toán ba số có là một cạnh của tam giác:

Bước 1: Nếu a – b < c và c < a – b thì ba số a,b và c là độ dài ba cạnh của một tam giác. Nếu không thỏa mãn 1 trong 2 điều kiện thì ngược lại.

Bước 2: Kết thúc thuật toán.

Bài 4 (trang 45 sgk Tin học lớp 8): Cho hai biến x và y. Hãy mô tả thuật toán đổi giá trị của các biến nói trên (nếu cần) để x và y theo thứ tự có giá trị không giảm.

Trả lời:

– Thuật toán đổi giá trị theo thứ tự có giá trị không giảm:

Bước 1: Nhập giá trị của x, y.

Bước 3: Tráo đổi giá trị của x và y.

Thuật toán tráo đổi giá trị:

Bước 1: Khai báo một biến cùng kiểu dữ liệu với x,y là tg.

Bước 2: Gán giá trị tg:=a;

Bước 3: Gán giá trị a:=b;

Bước 4: Gán giá trị b:=tg;

Bước 4: Kết thúc thuật toán.

Bài 5 (trang 45 sgk Tin học lớp 8): Hãy cho biết kết quả của thuật toán sau:

Bước 1. SUM ← 0;i ← 0.

Bước 3. i ← i + 1; SUM ← SUM + i. Quay lại bước 2.

Bước 4. Thông báo giá trị SUM và kết thúc thuật toán.

Trả lời:

– Bước 1: Gán giá trị cho 2 biến SUM = 0 và i = 0.

– Bước 3: Tăng giá trị i thêm 1. Giá trị của SUM bằng SUM + i.

– Bước 4: Thông báo giá trị SUM. Thuật toán kết thúc.

Kết quả thực hiện thuật toán SUM = 5050.

Bài 6 (trang 45 sgk Tin học lớp 8): Hãy mô tả thuật toán tính tổng các số dương trong dãy số A = {a 1, a 2…, a n) cho trước.

Trả lời:

Bước 2: SUM ← 0; i ← 0.

Bước 4: i ← i + 1;

Bước 5: Nếu i <= n thì quay lại bước 3.

Bước 6: Thông báo giá trị SUM. Kết thúc thuật toán.

Tìm hiểu mở rộng (trang 45 sgk Tin học lớp 8): 1. Một trong những yêu cầu quan trọng của thuật toán và mô tả thuật toán là tính dừng, tức thuật toán phải được kết thúc sau một số hữu hạn bước¬. Việc mô tả thuật toán có bước nhảy (ví dụ, chuyển đến bước 5, trở lại bước 2) có thể gây khó khăn nhất định cho việc theo dõi tính dừng của thuật toán. Hãy tìm hiểu và cho ít nhất một ví dụ về thuất toán không dừng.

2. Để biểu diễn thuật toán cho sơ đồ khối, người ta thường phân biệt hai loại thao tác chính trong thuật toán: 1) Thao tác chọn lựa theo một điều kiện nào đó (được biểu diễn bằng khối hình thoi); 2) Các thao tác không thuộc loại chọn lựa được xếp vào loại hành động (được biểu diễn bằng khối hình chữ nhật). Ngoài ra, người ta còn thường dùng các khối hình bình hành để biểu diễn thao tác nhập/ xuất dữ liệu và khối elip để biểu diễn khối bắt đầu và kết thúc thuật toán (h.1.32).

Em có thể vẽ sơ đồ khối biểu diễn các thuật toán nêu trong bài học không?

Trả lời:

Giải Tin Học 12 Bài Tập Và Thực Hành 8

Giải Tin học 12 Bài tập và thực hành 8 – Tạo báo cáo

1. Mục đích, yêu cầu

– Củng cố những kiến thức đã học về cách tạo báo cáo.

– Biết thực hiện các kĩ năng cơ bản để tạo báo cáo đơn giản bằng thuật sĩ.

2. Nội dung

Câu 1: (sgk trang 75 Tin 12): Từ bảng HOC_SINH trong CSDL QuanLi_HS, tạo một báo cáo để in ra danh sách các học sinh gồm họ tên, ngày sinh, địa chỉ. Hãy nhóm theo giới tính (nam, nữ) và tính số học sinh nam, số học sinh nữ (có sử dụng hàm Count).

Trả lời:

– Chúng ta sẽ tạo báo cáo bằng thuật sĩ. Đầu tiên chọn Create sau đó nhấn Report Winzard .

– Ta sẽ lấy những trường như hình.

– Nhấn Next để tiếp tục. Ta sẽ chọn trường để gom nhóm.

– Vì đề bài yêu cầu gom nhóm theo giới tính nên ta sẽ chọn GT làm trường để gom nhóm.

– Nhấn Next

– Nhấn Next ở bước này ta có thể chọn sắp xếp theo một trường nào đó nhưng do đề bài không yêu câu.

– Nhấn Next

– Nhấn Next sau đó Finish.

– Ta được báo cáo như hình.

– Để hiển thị được tổng số học sinh nam và học sinh nữ ta làm như sau. Nhấn chuột phải vào báo cáo sau đó chọn Design View.

– Nhấn textbox để thêm trường lưu thông tin

– Đặt TextBox vào vị trí như hình:

– Điền thông tin như hình:

– Sau đó nhấn View chọn Report View.

– Kết quả được như yêu cầu của bài toán:

Câu 2: (sgk trang 75 Tin 12): Tạo báo cáo in danh sách học sinh khá (có điểm trung bình mỗi môn từ 6.5 trở lên).

– Lưu mẫu hỏi lại để tạo báo cáo. Giả sử ta lưu với tên là Query2.

– Nhấn Create. Chọn Report Wizard để tạo báo cáo.

– Ta chỉ cần chọn những trường cần thiết như mã số họ tên.

– Nhấn Finish để tạo ra báo cáo ngay.

– Đây là báo cáo cho những học sinh khá.

Các bài giải bài tập và trả lời câu hỏi Tin học 12 Chương 2 khác:

Ngân hàng trắc nghiệm miễn phí ôn thi THPT Quốc Gia tại chúng tôi

Gợi Ý Bài Tập Sgk Bài 6 Tin Học 8

Một vài ví dụ về các hoạt động hằng ngày phụ thuộc vào điều kiện:

Nếu đạt điểm tổng kết cả năm cao hơn 8.5, em sẽ đạt danh hiệu “Học sinh giỏi”

Nếu không được cắm điện, máy tính để bàn của em sẽ không hoạt động được

Nếu bị bệnh, em (cần phải) đi đến phòng khám để bác sĩ khám bệnh

Nếu không được tưới đủ nước đúng thời kì phát triển, lúa sẽ không cho thu hoạch cao

Bài tập 2 trang 50 SGK Tin học 8

Hãy cho biết các điều kiện hoặc phép so sánh sau đây cho kết quả đúng hay sai:

a) 123 là số chia hết cho 3.

b) Nếu ba cạnh a, b và c của một tam giác thỏa mãn c 2 = a 2 + b 2 thì tam giác đó có một góc vuông.

a) Đúng;

b) Đúng;

c) Đúng;

d) Sai

Bài tập 3 trang 51 SGK Tin học 8

Hai người bạn cùng chơi trò đoán số. Một người nghĩ trong đầu một số tự nhiên nhỏ hơn 10. Người kia đoán xem bạn đã nghĩ số gì. Nếu đoán đúng, người đoán sẽ được cộng thêm 1 điểm, nếu sai sẽ không được cộng điểm. Luân phiên nhau nghĩ và đoán. Sau 10 lần, ai được nhiều điểm hơn, người đó sẽ thắng.

Hãy phát biểu quy tắc thực hiện các điều kiện ở trò chơi. Hoạt động nào sẽ được thực hiện, nếu điều kiện của quy tắc đó thoả mãn? Hoạt động nào sẽ được thực hiện, nếu điều kiện của quy tắc đó không thoả mãn?

Giả sử Điểm_1 là số điểm của người thứ nhất và Điểm_2 là số điểm của người thứ hai, ngoài ra một người thứ nhất nghĩ trong đầu một số tự nhiên n < 10.

Điều kiện ở trò chơi là người thứ hai đoán đúng số n. Khi đó Điểm_2 được cộng thêm 1; ngược lại, Điểm_2 được giữ nguyên. Tương tự, nếu người thứ hai nghĩ số tự nhiên m, và điều kiện thứ hai là người thứ nhất đoán đúng số m đó. Khi đó Điểm_1 được cộng thêm 1; ngược lại, Điểm_1 được giữ nguyên.

Bài tập 4 trang 51 SGK Tin học 8

Một trò chơi máy tính rất hứng thú đối với các em nhỏ là hứng trứng. Một quả trứng rơi từ một vị trí ngẫu nhiên trên cao. Người chơi dùng các phím mũi tên (rightarrow) hoặc (leftarrow) để điều khiển một biểu tượng chiếc khay di chuyển theo chiều ngang để hứng quả trứng. Nếu hứng trượt, quả trứng bị rơi, vỡ và người chơi tiếp tục di chuyển khay để hứng quả trứng khác.

Điều kiện để điều khiển chiếc khay trong trò chơi người chơi nhấn phím mũi tên (rightarrow) hoặc (leftarrow). Nếu người chơi nhấn phím (rightarrow), biểu tượng chiếc khay sẽ di chuyển sang phải một đơn vị khoảng cách; nếu phím (leftarrow) được nhấn, biểu tượng chiếc khay sẽ di chuyển sang trái. Nếu một phím khác ngoài hai phím mũi tên trên được nhấn, chiếc khay vẫn giữ nguyên vị trí.

Bài tập 5 trang 51 SGK Tin học 8

Các câu lệnh Pascal sau đây được viết đúng hay sai?

a) if x:=7 then a=b;

a) Sai (thừa dấu hai chấm);

b) Sai (thừa dấu chấm phảy thứ nhất);

c) Sai (thừa dấu chấm phảy sau từ then);

e) Sai (thừa dấu chấm phảy thứ nhất);

f) Đúng.

Bài tập 6 trang 51 SGK Tin học 8

Sau mỗi câu lệnh sau đây:

a) if (45 mod 3)=0 then X:=X+1;

giá trị của biến X sẽ là bao nhiêu, nếu trước đó giá trị của X bằng 5?

a) Vì 45 chia hết cho 3, điều kiện được thỏa mãn nên giá trị của X được tăng lên 1, tức bằng 6;

b) Điều kiện không được thỏa mãn nên câu lệnh không được thực hiện, tức X giữ nguyên giá trị 5.

Cập nhật thông tin chi tiết về Giải Các Bài Tập Tin Học 8 trên website Ictu-hanoi.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!