Giải các bài tập Tin học 8

HƯỚNG DẪN TRẢ LỜI

1. Có thể nêu rất nhiều vài ví dụ về các hoạt động lặp. Dưới đây là một số ví dụ:

a) Hàng ngày em đặt đồng hồ báo thức lúc 6 giờ để dậy sớm tập thể dục.

b) Hàng ngày (hoặc hàng tuần) bác lái xe khách lái xe để chuyên chở hành khách xuất phát từ một thời gian và địa điểm nhất định và đi theo một tuyến đường đã được xác định trước.

c) Mỗi lần được khởi động, máy tính của em sẽ thực hiện cùng các hoạt động tự kiểm tra các thành phần máy tính, sau đó khởi động hệ điều hành theo một trình tự đã được quy định trước.

 

doc30 trang | Chia sẻ: dung89st | Lượt xem: 27783 | Lượt tải: 5download
Bạn đang xem trước 20 trang mẫu tài liệu Giải các bài tập Tin học 8, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trê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ế. Nhưng 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.
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 để lưu giá trị của biến. Ví dụ, cũng để lưu 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, nhưng 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.
Đáp án: a) Hợp lệ; b) Không hợp lệ; c) Hợp lệ; d) Không hợp lệ. 
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.
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. 
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.
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.
Cách khai báo hợp lý:
Các biến a và h là kiểu số nguyên; biến S: kiểu số thực.
Cả bốn biến a, b, c và d là các kiểu số nguyên.
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 và Trungbinh là biến kiểu số thực.
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
Hãy chỉ ra INPUT và OUTPUT của các bài toán sau:
Xác định số học sinh trong lớp cùng mang họ Trần.
Tính tổng của các phần tử lớn hơn 0 trong dãy n số cho trước.
Tìm số các số có giá trị nhỏ nhất trong n số đã cho.
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
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.
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. 
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.
Hãy mô tả thuật toán tính tổng các phần tử của dãy số a1, a2,..., an cho trước. 
Hãy mô tả thuật toán nhập n số a1, a2, ..., an 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.
Hãy mô tả thuật toán giải các bài toán sau:
Đếm số các số dương trong dãy số A = {a1, a2,.., an} cho trước. 
Hãy mô tả thuật toán tính tổng các số dương trong dãy số A = {a1, a2,..., an} cho trước.
Hướng dẫn trả lời
Đáp án:
INPUT: Danh sách họ của các học sinh trong lớp.
OUTPUT: Số học sinh có họ Trần.
INPUT: Dãy n số.
OUTPUT: Tổng của các phần tử lớn hơn 0.
INPUT: Dãy n số.
OUTPUT: Số các số có giá trị nhỏ nhất.
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.
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.
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. 
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.
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.
Thuật toán tính tổng các phần tử của dãy số A = {a1, a2,..., an} cho trước.
INPUT: n và dãy n số a1, a2,..., an.
OUTPUT: Tổng S = a1 + a2 +... + an.
Bước 1: S ơ 0; i ơ 0.
Bước 2: i ơ i + 1.
Bước 3: Nếu i ≤ n, S ơ S + ai và quay lại bước 2. 
Bước 4: Thông báo S và kết thúc thuật toán.
Thuật toán tìm số nhỏ nhất trong dãy n số a1, a2, ..., an 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, ..., an.
INPUT: n và dãy n số a1, a2,..., an.
OUTPUT: Min = Min{ a1, a2, ..., an}
Bước 1: Nhập n và dãy n số a1, a2,..., an.
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 ai < Min, gán Min ơ ai 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.
a) Đếm số các số dương trong dãy số A = {a1, a2,.., an} cho trước.
INPUT: n và dãy n số a1, a2,..., an.
OUTPUT: Soduong = Số các số ai > 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 ai > 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,..., an} cho trước.
INPUT: n và dãy n số a1, a2,..., an.
OUTPUT: S = Tổng các số ai > 0 trong dãy a1, a2,..., an.
Bước 1: S ơ 0; i ơ 0.
Bước 2: i ơ i + 1.
Bước 3: Nếu ai > 0, S ơ S + ai; 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.
Bài 6. CÂU LệNH ĐIềU KIệN
Câu hỏi và bài tập
Em hãy nêu 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.
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:
123 là số chia hết cho 3.
Nếu ba cạnh a, b và c của một tam giác thỏa mãn c2 > a2 + b2 thì tam giác đó có một góc tù (> 90o).
152 > 200.
n! ≤ n2 với mọi số tự nhiên n.
x2 < 1.
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 các điều kiện ở trò chơi là gì? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó thoả mãn? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó không thoả mãn?
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 đ hoặc ơ để đ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 là gì? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó thoả mãn? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó không thoả mãn?
Các câu lệnh Pascal sau đây được viết đúng hay sai?
if x:=7 then a=b;
if x>5; then a:=b; 
if x>5 then; a:=b; 
if x>5 then a:=b; m:=n; 
if x>5 then a:=b; else m:=n; 
if n>0 then begin a:=0; m:=-1 end else c:=a; 
Sau mỗi câu lệnh sau đây
if (45 mod 3)=0 then X:=X+1;
if X>10 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?
Giả sử cần viết chương trình nhập một số tự nhiên vào máy tính và ghi ra màn hình kết quả số đã nhập là số chẵn hay lẻ, chẳng hạn “5 là số lẻ”, “8 là số chẵn”. Hãy mô tả các bước của thuật toán để giải quyết bài toán trên và viết chương trình Pascal để thực hiện thuật toán đó.
Viết chương trình nhập sử dụng hai biến X và Y để lưu hai số nhập từ bàn phím, sau đó đổi giá trị của các biến đó để X và Y có giá trị tăng dần (xem Bài tập 3, Bài 5).
Hãy mô tả thuật toán và viết chương trình nhập ba số thực a, b và c từ bàn phím vào máy tính, sau đó sắp xếp và ghi các số đó ra màn hình theo thứ tự tăng dần (xem Bài tập 8 và thuật toán trong Ví dụ 5, Bài 5).
Hãy mô tả thuật toán và viết chương trình nhập ba số thực a, b và c từ bàn phím vào máy tính, sau đó kiểm tra ba số đó có thể là các cạnh của tam giác đều, tam giác cân hoặc tam giác vuông hay không và ghi kết quả ra màn hình (xem Bài 3, Bài thực hành 4).
Hướng dẫn trả lời
Có thể nêu rất nhiều vài ví dụ về các hoạt động hằng ngày phụ thuộc vào điều kiện. Dưới đây là một số ví dụ:
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.
Đáp án: a) Đúng; b) Đúng; c) Sai; d) Sai; e) Sai, nếu x ≥ 1.
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 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. 
Điều kiện ở trò chơi là sau 10 lần, nếu Điểm_1 > Điểm_2 thì người thứ nhất được tuyên bố thắng cuộc; ngược lại, người thứ hai thắng. Trường hợp Điểm_1 = Điểm_2 thì không có người thắng và người thua.
Đ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 đ hoặc ơ. Nếu người chơi nhấn phím đ, 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 ơ đượ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í. 
Đáp án: 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); d) Đúng, nếu phép gán m:=n không phụ thuộc điều kiện x>5; ngược lại, sai và cần đưa hai câu lệnh a:=b; m:=n; vào giữa cặp từ khóa begin và end; e) Sai (thừa dấu chấm phảy thứ nhất); f) Đúng.
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.
Thuật toán:
Bước 1. Nhập số n. 
Bước 2. Nếu n chia hết cho 2, ghi ra màn hình “n là số chẵn”; ngược lại, ghi ra màn hình “n là số lẻ”. 
Bước 3. Kết thúc thuật toán.
Chương trình Pascal:
uses crt;
var X,Y,Z: real;
begin
clrscr;
write('Nhap so X = '); readln(Y);
write('Nhap so Y = '); readln(Y);
if X>Y then begin Z:=X; X:=Y; Y:=Z;
writeln(X,’ ’,Y);
readln
end.
Thuật toán:
Bước 1. Nhập ba số A, B và C. 
Bước 2. Nếu A > B, X ơ A, A ơ B, B ơ X. 
Bước 3. Nếu C > A, X ơ A, A ơ C, C ơ X. 
Bước 4. Nếu C < B, X ơ B, B ơ C, C ơ X. 
Bước 5. Ghi giá trị các biến theo thứ tự A, B và C và kết thúc thuật toán.
Chương trình Pascal:
uses crt;
var 	A, B, C, X: integer; 
begin
clrscr;
write('Nhap so A: '); readln(A);
write('Nhap so B: '); readln(B);
write('Nhap so C: '); readln(C);
if A>B then begin X:=A; A:=B; B:=X end;
if C<A then begin X:=A; A:=C; C:=X end;
if C<B then begin X:=B; B:=C; C:=X end;
writeln(A,' ',B,' ',C);
readln;
end.
 Thuật toán:
Bước 1. Nhập ba số A, B và C. 
Bước 2. Nếu A + B < C hoặc B + C < A hoặc C + A < B, thông báo A, B và C không phải là ba cạnh của một tam giác và chuyển tới bước 5. 
Bước 3. Nếu A2 + B2 = C hoặc B2 + C2 = A2 hoặc C2 + A2 = B, thông báo A, B và C là ba cạnh của một tam giác vuông và chuyển tới bước 5. 
Bước 4. Nếu A = B và B = C, thông báo A, B và C là ba cạnh của một tam giác đều; ngược lại, nếu A = B hoặc B = C hoặc A = C, thông báo A, B và C là ba cạnh của một tam giác cân.
Bước 5. Kết thúc thuật toán. 
Chương trình Pascal:
program Sap_xep;
uses crt;
var 	A, B, C, X: integer;
begin
clrscr;
write('Nhap so A: '); readln(A);
write('Nhap so B: '); readln(B);
write('Nhap so C: '); readln(C);
if (A+B<C) or (B+C<A) or (A+C<B)
 then writeln('Day khong la ba canh cua mot tam giac') else
 if (A*A=B*B+C*C) or (B*B=A*A+C*C) or (C*C=A*A+B*B)
 then writeln('Day la ba canh cua tam giac vuong') else
 if (A=B) and(B=C) and (A=C)
 then writeln('Day la ba canh cua tam giac deu') else
 if (A=B) or (B=C) or (C=A)
 then writeln('Day la ba canh cua tam giac can') else
 writeln('Day chi la ba canh cua tam giac thuong');
readln;
end.
Bài 7. CÂU LệNH lặp
Câu hỏi và bài tập
Cho một vài ví dụ về hoạt động được thực hiện lặp lại trong cuộc sống hàng ngày!
Hãy mô tả các bước của thuật toán để vẽ hình ... a) và ... b) sau đây:
Hình ...a)
Hình ... b)
Thao tác lặp cần thực hiện để có các hình trên và điều kiện để kết thúc thao tác đó là gì
Hãy cho biết tác dụng của câu lệnh lặp!
Chúng ta nói rằng khi thực hiện các hoạt động lặp, chương trình kiểm tra một điều kiện. Với lệnh lặp 
for := to do ;
của Pascal, điều kiện cần phải kiểm tra là gì?
Chương trình Pascal sau đây thực hiện hoạt động nào?
var i: integer;
begin
for i:=1 to 1000 do;
end.
Hãy mô tả thuật toán để tính tổng sau đây (n là số tự nhiên được nhập vào từ bàn phím):
A = 
Các câu lệnh Pascal có hợp lệ không, vì sao?
a) for i:=100 to 1 do writeln(’A’);
b) for i:=1.5 to 10.5 do writeln(’A’);
c) for i=1 to 10 do writeln(’A’);
d) for i:=1 to 10 do; writeln(’A’);
e) var x: real; for x:=1 to 10 do writeln(’A’);
Một số ngôn ngữ lập trình, ví dụ Pascal, không có sẵn hàm tính lũy thừa. Hãy mô tả thuật toán và sử dụng câu lệnh lặp với số lần xác định trước để viết chương trình Pascal tính lũy thừa bậc n của số nguyên X.
Viết chương trình Pascal nhập n số nguyên từ bàn phím và ghi ra màn hình số lớn nhất trong các số đó. Số n cũng được nhập vào từ bàn phím. (Xem mô tả thuật toán trong Ví dụ 6, Bài 5.) 
Viết chương trình Pascal nhập n số nguyên từ bàn phím và ghi ra màn hình số các số dương trong các số đó. Số n cũng được nhập vào từ bàn phím. (Xem Bài tập 5a, Bài 5.) 
Hướng dẫn trả lời
Có thể nêu rất nhiều vài ví dụ về các hoạt động lặp. Dưới đây là một số ví dụ:
Hàng ngày em đặt đồng hồ báo thức lúc 6 giờ để dậy sớm tập thể dục.
Hàng ngày (hoặc hàng tuần) bác lái xe khách lái xe để chuyên chở hành khách xuất phát từ một thời gian và địa điểm nhất định và đi theo một tuyến đường đã được xác định trước.
Mỗi lần được khởi động, máy tính của em sẽ thực hiện cùng các hoạt động tự kiểm tra các thành phần máy tính, sau đó khởi động hệ điều hành theo một trình tự đã được quy định trước. 
a) Có thể thấy, để vẽ được hình ...a), thao tác chính cần thực hiện là vẽ nửa đường tròn theo hướng nhất định. Ta gọi thao tác vẽ nửa đường tròn theo hướng A là vẽ nửa đường tròn có bán kính 1 đơn vị bắt đầu từ một điểm xác định, đường kính nối điểm đầu và điểm cuối của nửa đường tròn vuông góc với hướng A và nửa đường tròn “cong về hướng A” (hình...). Ta chỉ xét A là các hướng lên trên, xuống dưới, sang trái, sang phải. 
Với các hướng, ta định nghĩa phép toán sau: lên trên + 1 = sang trái, sang trái +1 = xuống dưới, xuống dưới +1 = sang phải, sang phải +1 = lên trên. Khi đó có thể mô tả các bước của thuật toán để vẽ hình ... a) như sau:
Hình ...
Hình ...
Có thể mô tả các bước của thuật toán để vẽ hình ... a) như sau:
Bước 1. Xác định điểm bắt đầu vẽ là X. 
Bước 2. Đặt i = 0 và đặt hướng = lên trên.
Bước 3. Vẽ nửa đường tròn theo hướng đã đặt. 
Bước 4. i = i + 1. 
Bước 5. Nếu i > 4, chuyển bước 6; ngược lại, đặt hướng = hướng + 1 và quay lại bước 3.
Bước 6. Kết thúc thuật toán. 
Lưu ý. Khi trình bày thuật toán lần đầu tiên cho học sinh không nên định nghĩa các phép toán với các hướng mà chỉ nên liệt kê đủ bốn hướng trong thuật toán.
b) Thuật toán tương tự như trên. Thao tác chính cần lặp lại là vẽ hình vuông. Tại mỗi bước, giữ nguyên tâm hình vuông và thay đổi hướng vẽ một góc 30o.
Câu lệnh lặp có tác dụng làm đơn giản và giảm nhẹ công sức của người viết chương trình!
Chúng ta nói rằng khi thực hiện các hoạt động lặp, chương trình kiểm tra một điều kiện. Với lệnh lặp 
for := to do ;
của Pascal, điều kiện cần phải kiểm tra chính là giá trị của biến đếm lớn hơn giá trị cuối. Nếu điều kiện không được thỏa mãn, câu lệnh được tiếp tục thực hiện; ngược lại, chuyển sang câu lệnh tiếp theo trong chương trình.
Tuy có vòng lặp 1000 lần, nhưng chương trình Pascal nói trên không thực hiện bất kì một hoạt động nào. Tuy nhiên đây vẫn là câu lệnh hợp lệ.
Thuật toán tính tổng
A = 
Bước 1. Gán A ơ 0, i ơ 1. 
Bước 2. A ơ .
Bước 3. i ơ i + 1. 
Bước 4. Nếu i ≤ n, quay lại bước 2. 
Bước 5. Ghi kết quả A và kết thúc thuật toán.
Trừ d), tất cả các câu lệnh đều không hợp lệ: a) Giá trị đầu phải nhỏ hơn giá trị cuối; b) Các giá trị đầu và giá trị cuối phải là số nguyên; c) Thiếu dấu hai chấm khi gán giá trị đầu; d) Thừa dấu chấm phảy thứ nhất, nếu như ta muốn lặp lại câu lệnh writeln(’A’)mười lần, ngược lại câu lệnh là hợp lệ; e) Biến x đã được khai báo như là biến có dữ liệu kiểu số thực và vì thế không thể dùng để xác định giá trị đầu và giá trị cuối trong câu lệnh lặp.
Thuật toán:
Bước 1. Nhập các số n và x. 
Bước 2. A ơ 1, i ơ 0 (A là biến lưu lũy thừa bậc n của x). 
Bước 3. iơi + 1, A ơ A.x. 
Bước 4. Nếu i < n, quay lại bước 3.
Bước 5. Thông báo kết quả A là lũy thừa bậc n của x và kết thúc thuật toán.
Chương trình Pascal có thể như sau:
var n,i,x: integer; a: longint;
begin
write('Nhap x='); readln(x);
write('Nhap n='); readln(n);
A:=1;
for i:=1 to n do A:=A*X;
writeln(x,' mu ',n,' bang ',A);
end.
Thuật toán:
Bước 1. Nhập số n. 
Bước 2. Aơ -32768 (gán số nhỏ nhất có thể trong các số kiểu nguyên cho A), iơ1. 
Bước 3. Nhập số thứ i và gán giá trị đó vào biến A.
Bước 4. Nếu Max < A, Max ơ A. 
Bước 5. iơi + 1.
Bước 6. Nếu i ≤ n, quay lại bước 3.
Bước 7. Thông báo kết quả Max là số lớn nhất và kết thúc thuật toán.
Chương trình Pascal có thể như sau:
uses crt;
var n,i,Max,A: 

File đính kèm:

  • docGiai cac bai tap tin 8.doc