Lập Trình Đơn Giản

Lập Trình Đơn Giản

Lý thuyết Bài tập

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 thành phần cơ bản của một ngôn ngữ lập trình.

Cho biết sự khác nhau giữa từ khóa và tên. Cho biết cách đặt tên trong chương trình.

Trong các tên sau đây, tên nào là hợp lệ trong ngôn ngữ Pascal?
A) a;                                B) Tamgiac;                C) 8a;                D) Tam giac;

E) beginprogram;              F) end;                        G) b1;                H) abc;

 

Hãy cho biết các thành phần chính trong cấu trúc của chương trình.

Các 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ã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.

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);

Dãy chữ số 2010 có thể thuộc những kiểu dữ liệu nào?

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

a. \(\frac{a}{b}+\frac{c}{d}\)

b. \(ax^{2}+bx+c\)

c.\(\frac{1}{x}-\frac{a}{5}(b+2)\)

d.\((a^{2}+b)(1+c)^{3}\)

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

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

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

Viết các biểu thức ở bài tập 6 với các kí hiệu trong Pascal.

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) A:= 4;

b) X = 3242;

c) X:= '3242';

d) A:= 'Ha Noi';

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

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.1416 cho Pi trong phần thân chương trình được không? Tại sao?

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

a) Var  Tb:Real;

b) Var  4Hs:Integer;

c) Const  x:Real;

d) Var  R=30; 

Hãy liệt kê các lỗi nếu có 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.

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 bài toán dưới đây:

a) Tìm 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 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 2 số nguyên a và b

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.

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 \leftarrow x + y\)
  • Bước 2. \(y \leftarrow x - y\)
  • Bước 3. \(x \leftarrow x - y\)

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

Hãy mô tả thuật toán giải bài toán tính tổng các phần tử của 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.

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:

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 c2 = a2 + b2 thì tam giác đó có một góc vuông.

c) 152 > 200.

d) 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 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?

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 là gì? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó thỏa mãn? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó không thỏa mãn?

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

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

b) if x>5; then a:=b;

c) if x>5 then; a:=b;

d) if x>5 then a:=b; m:=n;

e) if x>5 then a:=b; else m:=n;

f) if n>0 then begin a:=0; m:=-1 end else c:=a;

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

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

b) 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?

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 cho biết tác dụng của câu lệnh lặp với số lần biết trước.

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 < biến đếm > := < giá trị đầu > to < giá trị cuối > do < câu lệnh >;

của Pascal, điều kiện cần phải kiểm tra là gì?

Sau khi thực hiện đoạn chương trình sau, giá trị của biến j bằng bao nhiêu?

j:=0;
for i:=0 to 5 do j:=j+2

 

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');

Hãy mô tả thuật toán để tính tổng sau đây:

\(A=\frac{1}{1.3}+\frac{1}{2.4}+\frac{1}{3.5}+...+\frac{1}{n.(n+2)}\)

Nêu một vài ví dụ về hoạt động lặp với số lần chưa biết trước.

Hãy phát biểu 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.

Hãy tìm hiểu các thuật toán sau đây và cho biết khi thực hiện thuật toán, máy tính sẽ bao nhiêu vòng lặp? Khi kết thúc, giá trị của S bằng bao nhiêu? Viết chương trình Pascal thể hiện các thuật toán đó:

a) Thuật toán 1

Bước 1. S  \(\leftarrow\) 10, x \(\leftarrow\) 0.5

Bước 2. Nếu S \(\leq\) 5.2, chuyển tới bước 4.

Bước 3. S \(\leftarrow\) S - x và quay lại bước 2.

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

b) Thuật toán 2

Bước 1. S \(\leftarrow\) 10, n \(\leftarrow\) 0.

Bước 2. Nếu S ≥ 10, chuyển tới bước 4.

Bước 3. n \(\leftarrow\) n + 3, S  \(\leftarrow\) S - n quay lại bước 2.

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

Hãy tìm hiểu các cụm câu lệnh sau đây và cho biết với các câu lệnh đó chương trình thực hiện bao nhiêu vòng lặp? Hãy rút ra nhận xét của em.

a)

S:=0; n:=0;

while S<=10 do

   begin n:=n+1; S:=S+n end;

b)

S:=0; n:=0;

while S<=10 do

   n:=n+1; S:=S+n;

Hãy chỉ ra lỗi trong các câu lệnh sau đây:

a) X:=10; while X:=10 do X:=X+5;

b) X:=10; while X=10 do X=X+5;

c) S:=0; n:=0; while S<=10 do n:=n+1; S:=S+n;

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:

a) var X: Array[10,13] Of Integer;

b) var X: Array[5..10.5] Of Real;

c) var X: Array[3.4..4.8] Of Integer;

d) var X: Array[10..1] Of Integer;

e) var X: Array[4..10] Of Real;

"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?

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.

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK