Đề cương ôn tập cuối kì I - 11

 Phần trắc nghiệm

CHƯƠNG I. MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH

Bài 1. Khái niệm về lập trình và ngôn ngữ lập trình

Câu 1. Phát biểu nào dưới đây là sai khi nói về biên dịch và thông dịch ?

A. Chương trình dịch của ngôn ngữ lập trình bậc cao gọi là biên dịch còn thông dịch là chương trình dịch dùng với hợp ngữ;

B. Một ngôn ngữ lập trình có thể có cả chương trình thông dịch và chương trình biên dịch;

C. Thông dịch lần lượt dịch và thực hiện từng câu lệnh còn biên dịch phải dịch trước toàn bộ chương trình sang mã nhị phân thì mới có thể thực hiện được;

D. Biên dịch và thông dịch đều kiểm tra tính đúng đắn của câu lệnh;

Câu 2. Chương trình dịch là chương trình có chức năng

A. Chuyển đổi chương trình được viết bằng ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy         

B. Chuyển đổi chương trình được viết bằng ngôn ngữ lập trình Pascal thành chương trình thực hiện được trên máy

C. Chuyển đổi chương trình được viết bằng ngôn ngữ máy thành chương trình thực hiện được trên máy

D. Chuyển đổi chương trình được viết bằng ngôn ngữ lập trình bậc cao thành chương trình hợp ngữ

Bài 2. Các thành phần của ngôn ngữ lập trình

Câu 1. Phát biểu nào dưới đây là hợp lí nhất ?

A. Biến dùng trong chương trình phải khai báo .     

B. Biến được chương trình dịch bỏ qua .

C. Biến có thể lưu trữ nhiều loại giá trị khác nhau .

D. Biến là đại lượng nhận giá trị trước khi chương trình thực hiện .

Câu 2. Các thành phần của ngôn ngữ lập trình là

A. Chương trình thông dịch và chương trình biên dịch

B. Chương trình dịch, bảng chữ cái, cú pháp, ngữ nghĩa

C. Bảng chữ cái, cú pháp, ngữ nghĩa 

D. Tên dành riêng, tên chuẩn và tên do người lập trình định nghĩa

Câu 3. Trong các cách khai báo Hằng sau đây, cách khai báo nào là đúng ?

A. Const Pi = 3,14;     B. Const = Pi;             C. Const Pi = 3.1;                   D. Pi = 3.14

Câu 4. Hãy chọn phát biểu sai ?        

A. Các biến đều phải được khai báo và mỗi biến chỉ khai báo một lần

B. Một chương trình luôn luôn có hai phần : phần khai báo và phần thân    

C. Sau từ khóa var có thể khai báo nhiều danh sách biến khác nhau

D. Chương trình dịch có hai loại : thông dịch và biên dịch

Câu 5. Trong ngôn ngữ Pascal, từ khóa CONST dùng để khai báo

A. Tên chương trình               B. Hằng           C. Biến            D. Thư viện

Câu 6. Trong ngôn ngữ Pascal, từ khóa USES  dùng để khai báo

A. Tên chương trình               B. Hằng           C. Biến            D. Thư viện

Câu 7. Tên nào không đúng trong ngôn ngữ Pascal

A. abc_123                  B. _123abc      C. 123_abc      D. abc123

Câu 8. Trong những biểu diễn dưới đây, biểu diễn nào là từ khóa trong Pascal ?

A. End            B. Sqrt             C. Crt              D. LongInt

Câu 9. Khái niệm nào sau đây là đúng về tên dành riêng ?

A. Tên dành riêng là tên do người lập trình đặt

B. Tên dành riêng là tên đã được NNLT qui định dùng với ý nghĩa riêng xác định, không được sử dụng với ý nghĩa khác

C. Tên dành riêng là tên đã được NNLT qui định đúng với ý nghĩa riêng xác định, có thể được định nghĩa lại

D. Tên dành riêng là các hằng hay biến

 CHƯƠNG II. CHƯƠNG TRÌNH ĐƠN GIẢN

Bài 3. Cấu trúc chương trình

Câu 1.      Chọn phát biểu sai trong các phát biểu sau :

A. Nói chung, chương trình thường gồm hai phần : phần khai báo và phần thân;

B. Phần thân chương trình nhất thiết phải có;

C. Phần khai báo nhất thiết phải có;

D. Phần thân chương trình có thể không chứa một lệnh nào;

Câu 2.      Chọn câu đúng trong các câu sau:

A. Trong phần khai báo, nhất thiết phải khai báo tên chương trình để tiện ghi nhớ nội dung chương trình;

B. Dòng khai báo tên chương trình cũng là một dòng lệnh;

C. Để sử dụng các chương trình lập sẵn trong các thư viện do ngôn ngữ lập trình cung cấp, cần khai báo các thư viện này trong phần khai báo;

D. Ngôn ngữ lập trình nào có hệ thống thư viện càng lớn thì càng dễ viết chương trình;

Câu 3.      Chọn câu phát biểu hợp lí nhất ?

A. Khai báo hằng thường được sử dụng cho một giá trị tại mỗi thời điểm thực hiện chương trình;

B. Biến đơn là biến chỉ nhận những giá trị không đổi và xuất hiện nhiều lần trong chương trình;

C. Khai báo hằng thường được sử dụng cho những giá trị không đổi và xuất hiện nhiều lần trong chương trình;

D. Trong Pascal, tất cả các biến trong chương trình đều phải có giá trị không đổi và xuất hiện nhiều lần trong chương trình;

Câu 4.      Trường hợp nào dưới đây không phải là tên biến trong Pascal ?

A. Giai_Ptrinh_Bac_2;           B. Ngaysinh;               C. _Noisinh;                D. 2x;

Câu 5.      Trường hợp nào dưới đây là tên biến trong Pascal ?

A. Giai-Ptrinh-Bac 2;              B. Ngay_sinh;             C. _Noi sinh;               D. 2x;

Bài 4. Một số kiểu dữ liệu chuẩn

Câu 1.      Chọn phát biểu đúng trong các phát biểu sau :

A. Mọi ngôn ngữ lập trình đều có các kiểu dữ liệu chuẩn là : kiểu nguyên, kiểu thực, kiểu kí tự, kiểu lôgic;

B. Quy định về phạm vi giá trị và kích thước bộ nhớ lưu trữ một giá trị của các kiểu dữ liệu chuẩn trong mọi ngôn ngữ lập trình là như nhau;

C. Dữ liệu kiểu byte có 256 giá trị từ 0, 1, 2, …, 255;

D. Dữ liệu kiểu kí tự chỉ có 127 kí tự;

Câu 2.      Phát biểu nào dưới đây là sai ?

A. Cách khai báo biến trong ngôn ngữ lập trình khác nhau có thể khác nhau;

B. Trong Pascal các biến cùng kiểu có thể được khai báo trong cùng một danh sách biến, các biến cách nhau bởi dấu phẩy;

C. Kiểu dữ liệu của biến phải là kiểu dữ liệu chuẩn;

D. Hai biến cùng một phạm vi hoạt động (ví dụ như cùng trong một khai báo var)  không được trùng tên;

Câu 3.      Biến P có thể nhận các giá trị 5; 10; 15; 20; 30; 60; 90 và biến X có thể nhận các giá trị 0,1; 0,2; 0,3; 0,4; 0,5.  Khai báo nào trong các khai báo sau đây là đúng?

              A. var X,P: byte;                                                     B. var P,X: real;

              C. var P:real; X: byte;                                              D. var X: real; P:byte;

Câu 4.      Để tính diện tích S của hình vuông có cạnh A  với giá trị nguyên nằm trong phạm vi từ 100 đến 200, cách khai báo S nào dưới đây là đúng và ít tốn bộ nhớ nhất?

              A. var s:integer;                                                       B. var s:real;

              C. var s:word;                                                          D. var s:longint;

Bài 5. Khai báo biến

Câu 1.      Chọn phát biểu sai trong các phát biểu sau đây :

A. Hầu hết các ngôn ngữ lập trình đều có các phép toán số học và phép toán quan hệ;

B. Trong Pascal, phép chia số thực (kí hiệu là “/”) cũng áp dụng được cho chia hai số nguyên;

C. Trong máy tính, không thể chia một số cho số nhỏ tùy ý (tùy ý sát gần giá trị 0);

D. Trong Pascal, phép chia số nguyên (kí hiệu là div) cũng áp dụng được cho hai số thực;

Câu 2.      Cho một chương trình còn lỗi như sau :

Var a, b, c : real ;

A := 1; b := 1; c := 5 ;

d := b*b – 4*a*c ;

Writeln(‘d = ’,d);

END.

Tìm kết luận đúng nhất về lỗi của chương trình trong các kết luận sau :

A. Thiếu Begin.           B. Không khai báo biến d.     

C. Thiếu Begin và không khai biến d.            D. Không có END.

Bài 6. Phép toán, biểu thức, câu lệnh gán

Câu 1.      Cho khai báo biến sau đây (trong Pascal) : 

Var m, n : integer ;        x, y : real ;

Lệnh gán nào sau đây là sai ?

A. m := -4 ;                        B. n := 3.5 ;                        C. x := 6 ;                           D. y := +10.5 ;

Câu 2.      Trường hợp nào sau đây không phải là lệnh gán trong Pascal ?

A. a := 10 ;                         B. a + b := 1000 ;               C. cd := 50 ;                       D. a := a*2 ;

Câu 3.      Biểu thức : 25 div 3 + 5 / 2 * 3 có giá trị là :

A. 8.0;                                B. 15.5;                              C. 15.0;                              D. 8.5;

Câu 4.      Biểu thức : 25 mod 3 + 5 / 2 * 3 có giá trị là :

A. 8.0;                                B. 15.5;                              C. 15.0                               D. 8.5;

Câu 5.      Biểu thức nào sau đây có giá trị TRUE ?

A. ( 20 > 19 ) and ( ‘B’ < ‘A’ );                              B. ( 4 > 2 ) and not( 4 + 2 < 5 ) or ( 2 > 4 div 2 );

C. ( 3 < 5 ) or ( 4 + 2 < 5 ) and ( 2 < 4 div 2 );        D. 4 + 2 * ( 3 + 5 ) < 18 div 4 * 4 ;

Bài 7. Các thủ tục chuẩn vào/ra đơn giản

Câu 1.      Cho x và y là các biến đã khai báo kiểu thực, câu lệnh nào sau đây là đúng ?

A. Readln(x,5);                  B. Readln( ‘ x= ’ , x);        C. Readln(x:5:2);               D. Readln(x,y);

Câu 2.      Cho x là biến đã khai báo kiểu thực. Sau khi thực hiện hai câu lệnh sau :

x := 10 ; Writeln(x:7:2);

thì kết quả dạng nào sẽ xuất hiện trên màn hình trong những dạng kết quả sau ?

A. _ _ 10.00;                      B. 10.00                             C. 1.00000000000000E+001;            D. 10;

Bài 8. Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình

Câu 1.      Trong NNLT Pascal, để chạy chương trình ta dùng tổ hợp phím

A. Alt + F9                        B. Shift + F9.                    C. Ctrl + F9.                      D. Ctrl + Alt + F9

Câu 2.      Để biên dịch chương trình trong Pascal ta dùng tổ hợp phím :

A. Ctrl + F9                       B. Alt + F9                        C. Alt + F8                             D. Shift + F9

Câu 3.      Cho biết kết quả sau khi thực hiện lệnh :

Begin

                        a := 100; b := 30;

                        x := a div b ;

                        Write(x);

End.

A. 10                                  B. 33                                  C. 3                                    D. 1

Câu 4.      Xét biểu thức lôgic : (m mod 100 < 10 ) and (m div 100 > 0), với giá trị nào của m dưới đây biểu thức trên cho giá trị TRUE.

A. 66                                  B. 99                                  C. 2007                              D. 2011.

CHƯƠNG III. CẤU TRÚC RẼ NHÁNH VÀ LẶP

Bài 9. Cấu trúc rẽ nhánh

Câu 1. Để mô tả cấu trúc rẽ nhánh trong thuật toán, nhiều ngôn ngữ lập trình bậc cao dùng câu lệnh IF – THEN, sau IF là <điều kiện> . Điều kiện

A. biểu thức lôgic;      B. biểu thức số học;    C. biểu thức quan hệ;  D. một câu lệnh;

Câu 2. Với cấu trúc rẽ nhánh IF <điều kiện> THEN <câu lệnh>, câu lệnh đứng sau THEN được thực hiện khi

A. điều kiện được tính toán xong;                  B. điều kiện được tính toán và cho giá trị đúng;

C. điều kiện không tính được;                        D. điều kiện được tính toán và cho giá trị sai;

Câu 3. Với cấu trúc rẽ nhánh IF <điều kiện>  THEN <câu lệnh 1> ELSE <câu lệnh 2>, câu lệnh 2 được thực hiện khi

A. biểu thức điều kiện đúng và câu lệnh 1 thực hiện xong;                B. câu lệnh 1 được thực hiện;

C. biểu thức điều kiện sai;                                                                   D. biểu thức điều kiện đúng;

Câu 4. Phát biểu nào sau đây có thể lấy làm biểu thức điều kiện trong cấu trúc rẽ nhánh ?

A. 100 > 99                 B. “A > B”      C. “A nho hon B”       D. “false”

Bài 10. Cấu trúc lặp FOR

Câu 1. Cho hai dạng lặp FOR – DO trong PASCAL như sau :

Dạng lặp tiến :

                        FOR <biến đếm> := <giá trị đầu> TO <giá trị cuối> DO <câu lệnh> ;

Dạng lặp lùi :

                        FOR <biến đếm> := <giá trị cuối> DOWNTO <giá trị đầu> DO <câu lệnh> ;

Chọn phát biểu đúng trong các phát biểu sau đây :

A. Ở dạng lặp tiến câu lệnh sau DO luôn được thực hiện ít nhất một lần.

B. Ở dạng lặp lùi câu lệnh sau DO được thực hiện tuần tự, với biến đếm lần lượt nhận giá trị từ giá trị đầu đến giá trị cuối.

C. Ở dạng lặp lùi câu lệnh sau DO có thể không được thực hiện lần nào, đó là trường hợp giá trị cuối nhỏ hơn giá trị đầu.

D. Biểu thức giá trị đầu và biểu thức giá trị cuối có thể thuộc kiểu số thực.

Câu 2. Trong ngôn ngữ lập trình Pascal, phát biểu nào sau đây là đúng ?

A. Sau mỗi câu lệnh đều có dấu chấm phẩy “ ; ”

B. Trước lệnh else bắt buộc phải có dấu chấm phẩy “ ; ”

C. Có phân biệt chữ hoa và chữ thường

D. Câu lệnh trước câu lệnh End không nhất thiết phải có dấu chấm phẩy “ ; ”        

Câu 3. Trong ngôn ngữ lập trình Pascal, muốn kiểm tra đồng thời cả ba giá trị của A, B, C có cùng lớn hơn 0 hay không ta viết câu lệnh If thế nào cho đúng ?

A. If A, B, C > 0 then ……                           B. If (A > 0) and (B > 0) and (C > 0) then ……

C. If A>0 and B>0 and C>0 then ……         D. If (A>0) or (B>0) or (C>0) then……

Câu 4. Trong ngôn ngữ lập trình Pascal, về mặt cú pháp câu lệnh nào sau đây là đúng với cấu trúc lặp For có một lệnh con ?

A. For i := 1 to 100 do  a := a – 1 ;                 B. For i := 1 to 100 do;  a := a – 1 ;

C. For i := 1 to 100 do  a := a – 1                   D. For i := 1 ; to 100 do  a := a – 1 ;

Câu 5. Trong ngôn ngữ lập trình Pascal, về mặt cú pháp câu lệnh nào sau đây là đúng với cấu trúc lặp For có nhiều lệnh con ?

A. For i := 1 to 100 do 

                        a := a – 1 ;

                        b := a – c ;

            EndFor ;

B. For i := 1 to 100 do 

            Begin

                        a := a – 1 ;

                        b := a – c ;

            End;

C. For i := 1 to 100 do 

            Begin

                        a := a – 1 ;

                        b := a – c

End;               

D. For i := 1 to 100 do 

                        a := a – 1 ;

                        b := a – c ;




 Phần tự luận

Câu 1: 
Hình 1:   (y<=1) and (y>=abs(x))
Hình 2:   (abs(x)<=1) and (abs(y)<=1)

Câu 2: 
Program cau2;
  var   a, b, c, d, x1, x2: real;
Begin
    write('nhap cac he so a, b, c:');
    readln(a,b,c);
    d:=b*b-4*a*c;
    if d<0 then writeln('Phuong trinh vo nghiem')
         else
              begin
                      x1:= (-b-sqrt(d))/(2*a);
                      x2:= -b/a - x1;
                      write('nghiem x1=', x1:8:2, ' nghiem x2=', x2:8:2);
              end;
  readln;
End.

Câu 3:
Program cau3;
  var n: integer;
Begin
  write('Nhap nam n:');
  readln(n);
  if (n mod 400 = 0) or ((n mod 4 = 0) or (n mod 100 <> 0)) then write('So ngay cua nam ',n,' la 366')
     else write('So ngay cua nam ',n,' la 365');
  readln;
End.

Câu 4:
Program cau4;
  var a, b, c: byte;
Begin
  write('Nhap do dai 3 canh:');
  readln(a,b,c);
  if (a+b>c) and (a+c>b) and (b+c>a) then write('Co the tao thanh tam giac tu do dai 3 canh vua nhap')
      else write('Khong the tao tam giac tu do dai 3 canh vua nhap');
  readln;
End.

Câu 5:
Program cau5;
  var x, y:byte;
Begin
  writeln('Bai toan co ga - cho');
  for x:=1 to 35 do
     begin
        y:=36-x;
        if (x*2 + y*4 = 100) then write('So ga la ' ,x,' so cho la ',y);
     end;
  readln;
End.
Câu 6:
Program cau6;
var  i, n: integer;
Begin
  write('Nhap gia tri n:');
  readln(n);
  write('Cac uoc so cua ', n ,' la:');
   for i:=1 to n do
         if n mod i = 0 then write(i:3);
  readln;
End.
Câu 7a:
Program cau7a;
  var i, j, n: byte;
Begin
  write('Nhap chieu cao n:');
  readln(n);
  for i:=n downto 1 do
     begin
        for j:=1 to i do write('*');
        writeln;
     end;
  readln;
End.
Câu 7b:
Program cau7b;
  var i, j, k, n: byte;
Begin
  write('Nhap chieu cao n:');
  readln(n);
  k:=1;
  for i:=1 to n do
     begin
        for j:=1 to n-i+1 do write(' ');
        for j:=1 to k do write('*'); 
        writeln;
        k:=k+2;
     end;
  readln;
End.

Câu 7c:
Program cau7c;
  var i, j, k, n: byte;
Begin
  write('Nhap chieu cao n:');
  readln(n);
  k:=1;
  for i:=1 to n-2 do
     begin
        for j:=1 to n-i+1 do write(' ');
        for j:=1 to k do write('*'); 
        writeln;
        k:=k+2;
     end;
 for i:=1 to 2 do
     begin
        for j:=1 to n do write(' ');
        writeln('*');
     end;
  readln;
End.

1 nhận xét:

  1. Thầy ơi cho em hỏi về câu 2 (viết chương trình giải phương trinh bậc hai) có cần làm trường hợp d (delta) =0 không thầy?

    Trả lờiXóa