Tìm kiếm Blog này

Hiển thị các bài đăng có nhãn Phần 1: LẬP TRÌNH ĐƠN GIẢN (L8). Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Phần 1: LẬP TRÌNH ĐƠN GIẢN (L8). Hiển thị tất cả bài đăng

Thứ Ba, 3 tháng 2, 2015

Bài 9: Làm Việc Với Dãy Số (Tin học 8)

TÓM TẮT LÝ THUYẾT
  • Khai báo mảng:
    var Ten_Bien_Mang : array[<chỉ số đầu>..<chỉ số cuối>] of <kiểu dữ liệu>
    ví dụ: var A: array[1..100] of real;
  • Tham chiếu tới phần tử của mảng được xác định bằng cách:
    <tên biến mảng>[chỉ số]
  • Nhập dữ liệu từ bàn phím cho mảng A:
    for i:= 1 to 50 do readln( A[i] );
GHI NHỚ:
  1. Dữ liệu kiểu mảng là tập hợp hữu hạn các phần tử có thứ tự và mọi phần tử của mảng đều có cùng một kiểu dữ liệu.
  2. Việc gán giá trị, nhập giá trị và tính toán với các giá trị của một phần tử trong biến mảng được thực hiện thông qua chỉ số tương ứng của phần tử đó.
  3. Sử dụng các biến mảng và câu lệnh lặp giúp cho việc viết chương trình được ngắn gọn và dễ dàng hơn.
CÂU HỎI VÀ BÀI TẬP:
  1. 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?
  2. 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;
  3. Phát biểu "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" đúng hay sai?
  4. Câu lệnh khai báo biến mảng sau đây máy tính có thể thực hiện được không?
    var N: integer;
    A: array[1..N] of real;
  5. Viết chương trình sử dụng biến 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.
  6. Viết chương trình sử dụng biến mảng để giải quyết bài toán nêu trong ví dụ 1.
  7. Độ lệch chuẩn là một khái niệm rất quan trọng trong đánh giá dữ liệu thống kê. Giả sử ta có bộ dữ liệu thống kê gồm n phần tử có giá trị tương ứng là x1, x2 ,..., xn. Kí hiệu XTB là giá trị trung bình của x1, x2, ..., xn. Khi đó độ lệch chuẩn của bộ dữ liệu trên được tinh 1theo công thức sau:
    ...
    (Căn bậc hai của tổng các bình phương độ lệch từng phần tử so với giá trị trung bình chia cho số phần tử).
    Hãy viết chương trình tính độ lệch chuẩn của dữ liệu thống kê về mức thu nhập của các hộ gia đình nêu trong ví dụ 1.
    Lưu ý: Giá trị của độ lệch chuẩn phản ánh mức độ phân tán của dữ liệu thống kê về mức thu nhập của các hộ gia đình trong một địa phương nêu trong ví dụ 1, nếu giá trị độ lệch chuẩn lớn thì mức độ phân hoá giàu nghèo của địa phương càng rõ rệt (độ chênh lệch về mức thu nhập của người giàu và người nghèo lớn).

Bài 8: Lặp Với Số Lần Chưa Biết Trước (Tin học 8)

TÓM TẮT LÝ THUYẾT

GHI NHỚ:
  • Ngoài cấu trúc lặp với số lần lặp biết trước, các ngôn ngữ lập trình còn có các câu lệnh lặp với số lần chưa biết trước.
  • While...Do là câu lệnh lặp với số lần chưa biết trước trong Pascal. 
CÂU HỎI VÀ BÀI TẬP:
  1. 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?
  2. Hãy phát biểu sự khác biệt giữa câu lệnh lặp với số lần biết trước và câu lệnh lặp với số lần chưa biết trước.
  3. 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ẽ thực hiện 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 <-- 10, x <-- 0.5.
    Bước 2. Nếu S <= 5.2 , chuyển tới bước 4.
    Bước 3. S <-- 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 <-- 10, n <-- 0.
    Bước 2. Nếu S >= 10, chuyển tới bước 4.
    Bước 3. n <-- n + 3, S <-- 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.
  4. Hãy tìm hiểu mỗi đoạn lệnh sau đây và cho biết với đoạn 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;
  5. 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; 
Trả lời:
  1. Vài ví dụ về hoạt động lặp với số lần chưa biết trước:
    - Em giúp mẹ lặt rau, quá trình lặt rau được lặp lại cho đến khi lặt xong bó rau. 

Bài 7: Câu Lệnh Lặp (Tin học 8)

TÓM TẮT LÝ THUYẾT
GHI NHỚ:
  1. Cấu trúc lặp được sử dụng để chỉ thị cho máy tính thực hiện lặp lại một vài hoạt động nào đó cho đến khi một điều kiện nào đó được thỏa mãn.
  2. Mọi ngôn ngữ lập trình đều có các câu lệnh lặp để thể hiện cấu trúc lặp.
  3. Ngôn ngữ Pascal thể hiện cấu trúc lặp với số lần lặp cho trước bằng câu lệnh for...do.
CÂU HỎI VÀ BÀI TẬP:
  1. Cho một vài ví dụ về hoạt động được thực hiện lặp lại trong đời sống hằng ngày.
  2. 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.
  3. Khi thực hiện câu lệnh lặp, máy tí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ì?
  4. 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;
  5. Các câu lệnh Pascal sau 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;  begin  for  x:=  1  to  10  do  writeln ('A');  end.
  6. Hãy mô tả thuật toán để tính tổng sau đây:
  7. Hãy sửa lại chương trình ở ví dụ 5 để tính tổng của các số tự nhiên chia hết cho 3 không vượt quá N cho trước?
TRẢ LỜI CÂU HỎI VÀ BÀI TẬP:
  1. Cho một vài ví dụ về hoạt động được thực hiện lặp lại trong đời sống hằng ngày.
    Trả lời: hằng ngày chúng ta làm nhiều việc lặp đi lặp lại như: đánh răng, lau nhà, giặt đồ...
  2. 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.
    Trả lời: giúp người viết chương trình tiết kiệm thời gian và công sức khi phải thực hiện những câu lệnh lặp đi lặp lại nhiều lần.
  3. Khi thực hiện câu lệnh lặp, máy tí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ì?
    Trả lời: điều kiện cần kiểm tra sau mỗi lần lặp là <biến đếm> <= <giá trị cuối>
  4. 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;
    Trả lời: ta lặp bảng giá trị
    Lần lặp
    i
    j
    j:=j+2
    1
    0
    0
    2
    2
    1
    2
    4
    3
    2
    4
    6
    4
    3
    6
    8
    5
    4
    8
    10
    6
    5
    10
    12
  5. Các câu lệnh Pascal sau có hợp lệ không, vì sao?
    Trả lời:

    a) for  i:=  100  to  1  do  writeln ('A'); Sai: giá trị đầu phải nhỏ hơn giá trị cuối.
    b) for  i:=  1.5  to  10.5  do  writeln ('A'); Sai: giá trị đầu và giá trị cuối phải là những số nguyên.
    c) for  i=  1  to  10  do  writeln ('A'); Sai: i=1 sửa thành i:=1.
    d) for  i:=  1  to  10  do; writeln ('A'); Sai: ngay sau Do là câu lệnh lặp, không phải dấu ';'.   
    e) var  x  :real;  begin  for  x:=  1  to  10  do  writeln ('A');  end. Sai: biến đếm x phải được khai báo là kiểu số nguyên integer.
  6. Hãy mô tả thuật toán để tính tổng sau đây:
  7. Hãy sửa lại chương trình ở ví dụ 5 để tính tổng của các số tự nhiên chia hết cho 3 không vượt quá N cho trước?
    Trả lời: bổ sung lệnh If ... Then ngay sau Do như sau: If i mod 3 = 0 Then  S:=S+i;

Bài 6: Câu Lệnh Điều Kiện (Tin học 8)

TÓM TẮT LÝ THUYẾT
  1. Cấu trúc rẽ nhánh được sử dụng để chỉ thị cho máy tính thực hiện các hoạt động khác nhau tùy theo một điều kiện cụ thể có được thỏa mãn hay không. Cấu trúc rẽ nhánh có hai dạng: Dạng thiếu và dạng đầy đủ.
  2. Trong lập trình, điều kiện trong cấu trúc rẽ nhánh thường được biểu diễn bằng các phép so sánh.
  3. Mọi ngôn ngữ lập trình đều có câu lệnh điều kiện để thể hiện các cấu trúc rẽ nhánh.
CÂU HỎI VÀ BÀI TẬP:
  1. 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.
  2. Hãy cho biết các điều kiện hoặc biểu thức sau đây cho kết quả đúng hay sai:
    a) Nếu ba cạnh a, b, 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.
    c) 15^2 > 200.
    d) x^2 < 1.
  3. Hai người bạn ...
  4. Một trò chơi máy tính ...
  5. 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; m:= n;
    d) if x > 5 then a:= b; else m:= n;
  6. Với mỗi câu lệnh sau đây 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) if (45 mod 3) = 0 then X:= X + 1;
    b) if X > 10 then X:= X + 1; 

Bài 5: Từ Bài Toán Đến Chương Trình (Tin học 8)

Bài 5 này có lẽ gây cho các bạn nhiều khó khăn nhất? Tuy nhiên xin tóm gọn vài ý sau:
Bài toán thực tế => chuyển thành => Chương trình trong Pascal. Thực hiện điều này một cách trực tiếp thì rất khó khăn và khó cho việc chỉnh sửa chương trình sau này, để tránh nhầm lần và dễ dàng thực hiện ta thêm vào 2 bước trung gian theo sơ đồ sau:
Bài toán thực tế => Xác định bài toán => Mô tả thuật toán => Chương trình trong Pascal.

  TÓM TẮT LÝ THUYẾT

  1. Xác định bài toán là việc xác định các điều kiện ban đầu (thông tin vào - INPUT) và các kết quả cần thu được (thông tin ra - OUTPUT).
  2. Giải bài toán trên máy tính nghĩa là đưa ra dãy hữu hạn các thao tác đơn giản (thuật toán) để máy tính thực hiện và cho kết quả.
  3. Quá trình giải một bài toán trên máy tính gồm các bước: xác định bài toán; xây dựng thuật toán; lập chương trình.
  4. Thuật toán là dãy hữu hạn các thao tác cần thực hiện theo một trình tự xác định để nhận được kết quả cần tìm từ những điều kiện cho trước.

CÂU HỎI SGK:
  1. Hãy chỉ ra INPUT và OUTPUT trong 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 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 3 số dương a, b, 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.
  4. Cho hai biến x và y. Hãy mô tả thuật toán đổi giá trị của hai biến nói trên (nếu cần) để x và y theo thứ tự có giá trị không giảm.
  5. Hãy cho biết kết quả của thuật toán sau:
    Bước 1: SUM <-- 0; i <--0.
    Bước 2: Nếu i>100 thì chuyển tới bước 4.
    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.
  6. 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.
GIẢI BÀI TẬP:
Bài 3: Cho trước 3 số dương a, b, 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?
Input: 3 số dương a, b,c 
Ouput: a, b, c có là 3 cạnh của một tam giác hay không?
*Mô tả thuật toán:
Bước 1: Tính a+b, b+c, a+c. Nếu (a+b)>c và (b+c) >a và (a+c) > b, chuyển tới bước 3.
Bước 2: Thông báo a, b, c không phải là 3 cạnh của một tam giác. Kết thúc thuật toán.
Bước 3: Thông báo a, b, c là 3 cạnh của một tam giác. Kết thúc thuật toán.

Bài 4: Sử Dụng Biến Trong Chương Trình (Tin học 8)

TÓM TẮT LÝ THUYẾT

GHI NHỚ:

  1. Biết và hằng là những đại lượng được đặt tên dùng để lưu trữ dữ liệu. Giá trị của biến có thể thay đổi, còn giá trị của hằng được giữ nguyên trong suốt quá trình thực hiện chương trình.
  2. Biến và hằng phải được khai báo trước khi sử dụng.
CÂU HỎI SGK:
  1. 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'.
  2. Nêu sự khác nhau giữa biến và hằng. Cho vài ví dụ về khai báo biến và hăng.
  3. Giả sửa 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?
  4. Trong Pascal, khai báo nào sau đây là đúng?
    A. var tb: real;
    B. 4hs: integer;
    C. const x : real;
    D. var R = 30;
  5. 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.
  6. 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.

Bài 3: Chương Trình Máy Tính Và Dữ Liệu (Tin học 8)

TÓM TẮT LÝ THUYẾT
  1. Các ngôn ngữ lập trình thường phân chia dữ liệu cần xử lí theo các kiểu khác nhau, với các phép toán có thể thự hiện trên từng kiểu dữ liệu đó.
  2. Quá trình trao đổi dữ liệu hai chiều giữa người và máy tính khi chương trình hoạt động thường được gọi là giao tiếp hoặc tương tác người - máy.
CÂU HỎI VÀ BÀI TẬP:
  1. 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.
  2. Dãy chữ số 2010 có thể thuộc những kiểu dữ liệu nào?
  3. Hãy phân biệt ý nghĩa của các câu lệnh Pascal sau đây:
  4. Viết các biểu thức toán dưới đây bằng các ký hiệu trong Pascal:
  5. 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:
  6. Hãy xác định kết quả của các biểu thức sau đây:
  7. Viết các biểu thức ở bài tập 6 bằng các ký hiệu trong Pascal.

Bài 2: Làm Quen Với Chương Trình Và Ngôn Ngữ Lập Trình (Tin học 8)

TÓM TẮT LÝ THUYẾT:

GHI NHỚ:
  1. Ngôn ngữ lập trình là tập hợp các kí hiệu và quy tắt viết các lệnh tạo thành một chương trình hoàn chỉnh và thực hiện được trên máy tính.
  2. Nhiều ngôn ngữ lập trình có tập hợp các từ khóa dành riêng cho những mục đích sử dụng nhất định.
  3. Một chương trình thường có hai phần: Phần khai báo và phần thân chương trình.
  4. Tên được dùng để phân biệt các đại lượng trong chương trình và do người lập trình đặt.
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. Cho biết sự khác nhau giữa từ khoá và tên. Cho biết cách đặt tên trong chương trình.
  3. 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;
  4. Hãy cho biết các thành phần chính trong cấu trúc của chương trình.
  5. 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.

Bài 1: Máy Tính Và Chương Trình Máy Tinh (Tin học 8)

1. TÓM TẮT LÝ THUYẾT:

GHI NHỚ:

  1. Con người chỉ dẫn cho máy tính thực hiện công việc thông qua các lệnh.
  2. Viết chương trình là hướng dẫn máy tính thực hiện các công việc hay giải một bài toán cụ thể.
  3. Ngôn ngữ dùng để viết các chương trình máy tính được gọi là ngôn ngữ lập trình.

CÂU HỎI VÀ BÀI TẬP:
  1. Trong ví dụ về rô-bốt, nếu thay đổi thứ tự của lệnh 1 và 2 trong chương trình, rô bốt có thực hoiệ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 chương trình. Em hãy bổ sung hai lệnh để rô-bốt trở lại vị trí ban đầu.
  2. 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.
  3. 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?
  4. Cương trình dịch là gì?