1. Trang chủ
  2. » Giáo án - Bài giảng

kiến thức tin học 8

6 4K 44

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 58,19 KB

Nội dung

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ể

Trang 1

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

1. 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?

2. 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

3. 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

4. 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?

5. Chơng trình dịch làm gì?

6. 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

1. 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 rất nhiều lệnh Có thể mô tả các lệnh với các mức

độ chi tiết khác nhau Dới đây chỉ mô tả những lệnh cơ bản nhất theo trật tự thực hiện việc thay thế một cụm từ tìm

đợc:

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

Dới đây mô tả một cách chi tiết hơ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

6. Xóa dãy 3 trong văn bản

7. Sao chép dãy 2 vào vị trí con trỏ soạn thảo trong văn bản

8. 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), nhng nói chung việc thay đổi thứ tự các lệnh sẽ không cho kết quả mong muốn

2. 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, nhng 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 bb-ớc” hoặc “Quay phải, tiến 2 bb-ớc”, “Quay trái, tiến 2 bb-ớc” và “Quay trái, tiến 4 bb-ớ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”

3. 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

4. Tuy ngôn ngữ máy cũng là một loại ngôn ngữ lập trình, nhng ở đâ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

5. 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

6. 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 Lu ý 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

1. 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

2. 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?

3. 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

4. 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ệ: , , , , , , , ?

Trang 2

5. 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?

6. 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

1. 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 Lu ý 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

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

Lu ý 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.

3. 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 ý nhng 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á

4. 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)

5. Xem SGK, Mục 4, Bài 2

6. 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

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ínhVà Dữ LIệU

Câu hỏi và bài tập

1. 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!

2. 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, nhng phép toán

đó không có nghĩa trên kiểu dữ liệu kia

3. Cho dãy chữ số 2010 Dãy chữ số đó có thể thuộc kiểu dữ liệu nào?

4. 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ự

đó

5. Hãy phân biệt ý nghĩa của các câu lệnh Pascal sau đây:

Writeln('5+20=','20+5'); Writeln('5+20=',20+5);

Hai lệnh sau có tơng đơng với nhau không? Tại sao?

Writeln('100'); Writeln(100);

6. Viết các biểu thức toán dới đây với các kí hiệu trong Pascal:

a.

b+d

b.

2

ax + +bx c

c.

1

( 2)

5

a

b

d.

( a + b )(1 + c )

Trang 3

7. 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. (a+b)*(a+b)-x/y

b. b/(a*a+c)

c. a*a/(2*b+c)*(2*b+c)

d. 1+1/2+1/2*3+1/3*4+1/4*5

8. Hãy xác định kết quả của các phép so sánh sau đây:

a. 15 − 8 ≥ 3

b. (20 − 15)2 ≠ 25

c. 112 = 121

d. x > 10 − 3x

9. Viết các phép so sánh trong Bài tập 8 với các kí hiệu trong Pascal

10. 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

1. 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ả

2. Có thể nêu các ví dụ sau đây:

a. 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ố, nhng không có nghĩa trên dữ liệu kiểu xâu

b. 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, nhng không có nghĩa trên dữ liệu kiểu số thực

3. 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.

4. 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

5. Lệnh Writeln('5+20=','20+5'); in ra màn hình hai xâu ký tự '5+20' và '20+5' liền nhau: 5+20 = 20+5, còn lệnh Writeln('5+20=',20+5); in ra màn hình xâu ký tự '5+20' và tổng của 20+5 nh sau: 5+20=25 Hai lệnh Writeln('100'); Writeln(100); không tơng đơng với nhau vì một lệnh in ra màn hình xâu

ký tự biểu diễn số 100 còn lệnh kia in ra màn hình số 100

6. Các biểu thức trong Pascal:

a. a/b+c/d

b. a*x*x+b*x+c

c. 1/x-a/5*(b+2)

d. (a*a+b)*(1+c)*(1+c)*(1+c)

7. Các biểu thức toán tơng ứng:

a.

2

( a b ) x

y

b.

2

b

c.

2

2

a

b c +

d.

1

2 2.3 3.4 4.5

8. Kết quả của các phép so sánh:

a. Đúng

b. Sai

c. Đúng

d. Đúng khi x > 2.5; ngợc lại, phép so sánh có kết quả sai.

9. a) 15-8>=3; b) (20-15)*(20-15)<>25; c) 11*11=121; d) x>10-3*x

Trang 4

10. 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: thông báo kết quả tính toán hay trạng thái hoạt động của chơng trình, nhập dữ liệu, tạm ngừng chơng trình Xem SGK, Mục 4, Bài 2

Bài 4 Sử DụNG biến TRONG CHƯƠNG TRìNH

Câu hỏi và bài tập

1. Biến là gì? Hãy cho biết phép gán giá trị cho một biến là gì, cho ví dụ và giải thích

2. Khai báo biến gồm những gì? Hãy thử mô tả hoạt động của máy tính khi thực hiện lệnh khai báo một biến trong chơng trình

3. Giả sử A đợc khai báo là biến với kiểu dữ liệu số thực, X là biến với kiểu dữ liệu xâu Các phép gán sau đây

có hợp lệ không?

a) Gán số nguyên 4 cho biến A

b) Gán số 3242 cho biến X

c) Gán xâu ‘3242’ cho biến X

d) Gán xâu ‘Ha Noi’ cho biến A

4. Nêu sự khác nhau giữa biến và hằng và cho một vài ví dụ về biến và hằng

5. Giả sử ta đã khai báo một hằng Pi với giá trị 3.14 Có thể gán lại giá trị 3.1415 cho Pi trong phần thân

ch-ơng trình đợc không? Tại sao?

6. Trong Pascal, khai báo nào sau đây là đúng?

7. Hãy liệt kê các lỗi có thể trong chơng trình dới đây và sửa lại cho đúng:

var a,b:= integer;

const c:= 3;

begin

a:= 200

b:= a/c;

write(b);

readln

end

8. Hãy cho biết kiểu dữ liệu của các biến cần khai báo dùng để viết chơng trình để giải các bài toán dới đây:

a) Tính diện tích S của hình tam giác với độ dài một cạnh a và chiều cao tơng ứng h (a và h là các số

tự nhiên đợc nhập vào từ bàn phím)

b) Tính kết quả c của phép chia lấy phần nguyên và kết quả d của phép chia lấy phần d của hai số

nguyên a và b.

9. Giả sử cần lập danh sách các bạn trong lớp và ghi lại điểm thi môn Tin học của mỗi bạn (điểm chỉ là số nguyên) và tính điểm trung bình môn Tin học của toàn lớp Nếu cần viết chơng trình, em sẽ cần sử dụng những biến nào cho mỗi bạn?

10. Viết chơng trình tính diện tích và chu vi đờng tròn có bán kính r, trong đó r là một số nguyên dơng đợc nhập

từ bàn phím

H ớng dẫn trả lời

1. Xét về mặt lập trình, biến đại lợng đợc dùng để lu trữ dữ liệu và dữ liệu đợc biến lu trữ có thể thay đổi trong

khi thực hiện chơng trình Xét về mặt lu trữ dữ liệu, có thể xem biến là “tên” của một vùng nhớ đợc dành sẵn để lu dữ liệu trong suốt quá trình thực hiện chơng trình

Gán giá trị cho một biến về thực chất là lu dữ liệu tơng ứng vào vùng nhớ đợc đặt tên và dành riêng cho biến Việc thực hiện các tính toán và xử lí với biến có nghĩa là thực hiện tính toán và xử lí với dữ liệu đợc gán đó

Giả sử X đợc khai báo là biến với kiểu dữ liệu số nguyên và X đợc gán dữ liệu là số 5 Sau khi khai báo, chơng trình

sẽ dành riêng một vùng nhớ nào đó cho biến X, và khi gán 5 cho X thì vùng nhớ đó lu dữ liệu 5 Lệnh ghi X ra màn hình có nghĩa là ghi số 5 ra màn hình

Lu ý Khi một vùng nhớ đợc khai báo để lu dữ liệu làm giá trị của một biến, vùng nhớ đó sẽ không đợc phép sử dụng

vào mục đích khác Do vậy, một trong những kĩ năng lập trình là sử dụng càng ít biến càng tốt, nhất là trong những trờng hợp việc sử dụng bộ nhớ bị hạn chế Nhng với công nghệ hiện nay, bộ nhớ máy tính đã có dung lợng rất lớn nên vấn đề hạn chế sử dụng biến trong chơng trình đã không còn là vấn đề cấp thiết

2. Việc khai báo biến gồm: Khai báo tên biến và khai báo kiểu dữ liệu của biến

Khi khai báo biến, ngoài việc tên biến đợc đa vào danh sách các đối tợng quản lí, máy tính (thông qua chơng trình dịch) sẽ xác định kiểu của biến và dành một vùng nhớ có độ lớn thích hợp với phạm vi kiểu của biến để lu giá trị của biến Ví dụ, cũng để lu các giá trị là số nguyên, khi khai báo biến kiểu byte, máy tính chỉ dành vùng nhớ có độ lớn 1 byte, nhng khi khai báo biến kiểu nguyên, máy tính sẽ dành vùng nhớ có độ lớn 2 byte, hoặc vùng nhớ 6 byte đợc dành cho biến đợc khai báo với kiểu số thực, Nhờ thế việc sử dụng bộ nhớ sẽ hiệu quả hơn Ngoài ra máy tính sẽ biết áp dụng các phép toán thích hợp đối với giá trị của biến

3. Đáp án: a) Hợp lệ; b) Không hợp lệ; c) Hợp lệ; d) Không hợp lệ

4. Mặc dù đều cùng phải khai báo trớc khi có thể sử dụng trong chơng trình, sự khác nhau giữa biến và hằng là

ở chỗ giá trị của hằng không thay đổi trong suốt quá trình thực hiện chơng trình, còn giá trị của biến thì có thể thay

đổi đợc tại từng thời điểm thực hiện chơng trình

5. Không thể gán lại giá trị 3.1415 cho Pi trong phần thân chơng trình vì giá trị của hằng không thay đổi trong suốt quá trình thực hiện chơng trình

6. a) Hợp lệ; b) Không hợp lệ vì tên biến không hợp lệ; c) Không hợp lệ vì hằng phải đợc cho giá trị khi khai

báo; d) c) Không hợp lệ vì biến không đợc gán giá trị khi khai báo, cách gán giá trị cũng không đúng cú pháp.

Trang 5

7. Các lỗi trong chơng trình: (1) Thừa dấu bằng ở dòng 1 (chỉ cần dấu hai chấm); (2) Thừa dấu hai chấm ở dòng 2 (với hằng chỉ cần dấu bằng); (3) Thiếu dấu chấm phẩy ở dòng 4; (4) Khai báo kiểu dữ liệu của biến b không

phù hợp: Khi chia hai số nguyên, kết quả luôn luôn là số thực, cho dù có chia hết hay không Do đó cần phải khai báo biến b là biến có kiểu dữ liệu số thực.

8. Cách khai báo hợp lý:

a) Các biến a và h là kiểu số nguyên; biến S: kiểu số thực.

b) Cả bốn biến a, b, c và d là các kiểu số nguyên.

9. Cần sử dụng các biến sau đây với mỗi học sinh trong lớp: Ten là biến kiểu xâu, Diem là biến kiểu số nguyên

Trungbinh là biến kiểu số thực.

10. Chơng trình Pascal có thể nh sau đây:

uses crt;

var r: integer; C,S: real;

begin

clrscr;

write('Nhap ban kinh r = '); readln(r);

C:=2*Pi*r;

S:=Pi*r*r;

writeln(' Chu vi duong tron bang ',C:8:2);

writeln('Dien tich hinh tron bang ',S:8:2);

end.

Bài 5 Từ BàI TOáN ĐếN CHƯƠNG TRìNH

Câu hỏi và bài tập

1. 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.

2. 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

3. Cho trớc ba số dơng a, b và c Hãy mô tả thuật toán giải ghi kết quả ba số đó có thể là ba cạnh của một

tam giác hay không

4. 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 để x và y có giá trị tăng dần

5. Cho ba biến x, y và z Hãy mô tả thuật toán đổi giá trị của các biến nói trên để x, y và z có giá trị tăng

dần Hãy xem lại Ví dụ 5 để tham khảo

6. Hãy mô tả thuật toán tính tổng các phần tử của dãy số a1, a2, , a n cho trớc

7. Hãy mô tả thuật toán nhập n số a1, a2, , a n từ bàn phím và ghi ra màn hình số nhỏ nhất các số đó Số n

cũng đợc nhập từ bàn phím

8. Hãy mô tả thuật toán giải các bài toán sau:

a) Đếm số các số dơng trong dãy số A = {a1, a2, , a n} cho trớc

b) Hãy mô tả thuật toán tính tổng các số dơng trong dãy số A = {a1, a2, , a n} cho trớc.

H ớng dẫn trả lời

1. Đáp án:

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

OUTPUT: Số học sinh có họ Trần

b) INPUT: Dãy n số.

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

c) INPUT: Dãy n số.

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

2. Sau ba bớc, x có giá trị ban đầu của y và y có giá trị ban đầu của x, tức giá trị của hai biến x và y đợc hoán

đổi cho nhau

3. Mô tả thuật toán:

INPUT: Ba số dơng a >0, b >0 và c >0.

OUTPUT: Thông báo “a, b và c có thể là ba cạnh của một tam giác” hoặc thông báo “a, b và c không thể là ba cạnh

của một tam giác”

Bớc 1: Tính a + b Nếu a + b ≤ c, chuyển tới bớc 5.

Bớc 2: Tính b + c Nếu b + c ≤ c, chuyển tới bớc 5.

Bớc 3: Tính a + c Nếu a + c ≤ b, chuyển tới bớc 5.

Bớc 4: Thông báo “a, b và c có thể là ba cạnh của một tam giác” và kết thúc thuật toán.

Bớc 5: Thông báo “a, b và c không thể là ba cạnh của một tam giác” và kết thúc thuật toán.

4. Có thể giải bài toán này bằng cách sử dụng một biến phụ hoặc không dùng biến phụ

Thuật toán 1 Sử dụng biến phụ z.

INPUT: Hai biến x và y.

OUTPUT: Hai biến x và y có giá trị tăng dần.

Bớc 1: Nếu x ≤ y, chuyển tới bớc 5.

Bớc 2: z x

Trang 6

Bớc 3: x y.

Bớc 4: y z.

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

Thuật toán 2 Không sử dụng biến phụ (Xem Bài tập 2 ở trên).

INPUT: Hai biến x và y.

OUTPUT: Hai biến x và y có giá trị tăng dần.

Bớc 1: Nếu x ≤ y, chuyển tới bớc 5.

Bớc 2: x x + y

Bớc 3: y x y.

Bớc 4: x x y.

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

5. Trớc hết, nếu cần, ta hoán đổi giá trị hai biến x và y để chúng có giá trị tăng dần Sau đó lần lợt so sánh z với

x và z với y, sau đó thực hiện các bớc hoán đổi giá trị cần thiết (xem lại Ví dụ 5 trong Bài 5, SGK).

INPUT: Ba biến x, y và z.

OUTPUT: Ba biến x, y và z có giá trị tăng dần.

Bớc 1: Nếu x ≤ y, chuyển tới bớc 3.

Bớc 2: z x, x y, y z (Sau bớc này x và y có giá trị tăng dần.)

Bớc 3: Nếu y ≤ z , chuyển tới bớc 6.

Bớc 4: Nếu z < x, t x , x z và z t, (với t là biến trung gian) và chuyển đến bớc 6.

Bớc 5: t y , y z và z t.

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

6. Thuật toán tính tổng các phần tử của dãy số A = {a1, a2, , a n} cho trớc.

INPUT: n và dãy n số a1, a2, , a n.

OUTPUT: Tổng S = a1 + a2 + + a n.

Bớc 1: S ← 0; i ← 0

Bớc 2: i i + 1.

Bớc 3: Nếu i ≤ n, S S + a i và quay lại bớc 2

Bớc 4: Thông báo S và kết thúc thuật toán.

7. Thuật toán tìm số nhỏ nhất trong dãy n số a1, a2, , a n cho trớc Thuật toán này tơng tự nh thuật toán tìm giá

trị lớn nhất trong dãy n số đã cho (xem Ví dụ 6, Bài 5) Điều khác biệt là thêm các bớc nhập số n và dãy n số a1,

a2, , a n.

INPUT: n và dãy n số a1, a2, , a n.

OUTPUT: Min = Min{ a1, a2, , a n}

Bớc 1: Nhập n và dãy n số a1, a2, , a n.

Bớc 2: Gán Min a1; i ← 1

Bớc 3: i i + 1.

Bớc 4: Nếu i > n, chuyển đến bớc 5.

Bớc 5: Nếu a i < Min, gán Min a i rồi quay lại bớc 3 Trong trờng hợp ngợc lại, quay lại bớc 3

Bớc 6: Ghi giá trị Min ra màn hình và kết thúc thuật toán.

8. a) Đếm số các số dơng trong dãy số A = {a1, a2, , a n} cho trớc.

INPUT: n và dãy n số a1, a2, , a n.

OUTPUT: Soduong = Số các số a i > 0.

Bớc 1: Gán Soduong ← 0

Bớc 2: i i + 1.

Bớc 3: Nếu i > n, chuyển đến bớc 5.

Bớc 4: Nếu a i > 0, gán Soduong Soduong +1 rồi quay lại bớc 2 Trong trờng hợp ngợc lại, quay lại bớc 2

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

b) Tính tổng các số dơng trong dãy số A = {a1, a2, , a n} cho trớc.

INPUT: n và dãy n số a1, a2, , a n.

OUTPUT: S = Tổng các số a i > 0 trong dãy a1, a2, , a n.

Bớc 1: S ← 0; i ← 0

Bớc 2: i i + 1.

Bớc 3: Nếu a i > 0, S S + a i; ngợc lại, giữ nguyên S

Bớc 4: Nếu i ≤ n, và quay lại bớc 2.

Bớc 5: Thông báo S và kết thúc thuật toán.

Ngày đăng: 17/02/2015, 09:00

TỪ KHÓA LIÊN QUAN

w