--- Bài mới hơn ---
Câu Hỏi Bài 9 Trang 33 Sgk Sinh 8
Giải Bài Tập Sgk Sinh Học Lớp 8 Bài 11: Tiến Hóa Của Hệ Vận Động. Vệ Sinh Hệ Vận Động
Giải Bài Tập Sgk Sinh Học Lớp 12 Bài 8: Quy Luật Menđen
Giải Vbt Sinh Học 8 Bài 56: Tuyến Yên, Tuyến Giáp
Sinh Học 8 Bài 33: Thân Nhiệt
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
- 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?
- 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 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
- Sao chép cụm từ cần tìm vào bộ nhớ (ta gọi đây là cụm từ 1).
- Sao chép cụm từ sẽ thay thế cụm từ tìm được vào bộ nhớ (cụm từ 2).
- Tìm cụm từ 1 trong văn bản.
- Xóa cụm từ 1 tìm được trong văn bản.
- Sao chép cụm từ 2 vào vị trí con trỏ trong văn bản.
- Sao chép dãy kí tự cần tìm vào bộ nhớ (dãy 1).
- Sao chép dãy kí tự sẽ thay thế dãy kí tự tìm được vào bộ nhớ (dãy 2).
- Đặt con trỏ trước kí tự đầu tiên trong văn bản.
- 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).
- 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.
- Xóa dãy 3 trong văn bản.
- Sao chép dãy 2 vào vị trí con trỏ soạn thảo trong văn bản.
- 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), nhưng nói chung việc thay đổi thứ tự các lệnh sẽ không cho kết quả mong muốn.
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, nhưng 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 bước” hoặc “Quay phải, tiến 2 bước”, “Quay trái, tiến 2 bước” và “Quay trái, tiến 4 bướ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”.
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.
Bài 2. Làm quen với Ngôn ngữ lập trình
Câu hỏi và bài tập
- 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 .
- 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?
- 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.
- 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?
- Hãy cho biết chương trình Pascal sau đây có hợp lệ không, tại sao?
program CT_thu;
writeln(‘Chao cac ban’);
Hướng dẫn trả lời
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.
Lưu ý 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ệ:
program CT_thu;
Người lập trình có thể đặt tên một cách tùy ý nhưng 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á.
Câu hỏi và bài tập
- 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!
- 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.
- Cho dãy chữ số 2010. Dãy chữ số đó có thể thuộc kiểu dữ liệu nào?
- Hãy phân biệt ý nghĩa của các câu lệnh Pascal sau đây:
Hai lệnh sau có tương đương với nhau không? Tại sao?
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+b)*(a+b)-x/y
- b/(a*a+c)
- a*a/(2*b+c)*(2*b+c)
- 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:
(20 15) 2 ≠ 25
Hướng dẫn trả lời
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;
writeln(‘123’);
writeln(123);
Các biểu thức trong Pascal:
- a/b+c/d
- a*x*x+b*x+c
- 1/x-a/5*(b+2)
- (a*a+b)*(1+c)*(1+c)*(1+c)
Các biểu thức toán tương ứng:
Kết quả của các phép so sánh:
- Đúng.
- Sai.
- Đúng.
Bài 4. SỬ DỤNG BIẾN TRONG CHƯƠNG TRìNH
Câu hỏi và bài tập
- 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.
- 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.
- 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.
- Trong Pascal, khai báo nào sau đây là đúng?
var a,b:= integer;
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?
Hướng dẫn trả lời
Gán giá trị cho một biến về thực chất là lưu 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ớ đó lưu 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.
Lưu ý . Khi một vùng nhớ được khai báo để lưu 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ế. 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.
- 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.
- 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ách khai báo hợp lý:
Chương trình Pascal có thể như sau đây:
var r: integer; C,S: real;
write(‘Nhap ban kinh r = ‘); readln(r);
writeln(‘ Chu vi duong tron bang ‘,C:8:2);
writeln(‘Dien tich hinh tron bang ‘,S:8:2);
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:
Hướng dẫn trả lời
OUTPUT: Số học sinh có họ Trần.
OUTPUT: Tổng của các phần tử lớn hơn 0.
OUTPUT: Số các số có giá trị nhỏ nhất.
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 2. Không sử dụng biến phụ (Xem Bài tập 2 ở trên).
Câu hỏi và bài tập
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?
Đ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?
Hãy mô tả thuật toán và viết chương trình n hậ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
- Đ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í.
- 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.
Bước 3 . Kết thúc thuật toán.
var X,Y,Z: real;
write(‘Nhap so X = ‘); readln(Y);
write(‘Nhap so Y = ‘); readln(Y);
writeln(X,’ ‘,Y);
Chương trình Pascal:
write(‘Nhap so A: ‘); readln(A);
write(‘Nhap so B: ‘); readln(B);
write(‘Nhap so C: ‘); readln(C);
writeln(A,’ ‘,B,’ ‘,C);
Bước 5 . Kết thúc thuật toán.
Chương trình Pascal:
program Sap_xep;
write(‘Nhap so A: ‘); readln(A);
write(‘Nhap so B: ‘); readln(B);
write(‘Nhap so C: ‘); readln(C);
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’);
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ì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ì
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;
for i:=1 to 1000 do;
A =
Các câu lệnh Pascal có hợp lệ không, vì sao?
Hướng dẫn trả lời
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 3 . Vẽ nửa đường tròn theo hướng đã đặt.
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.
A =
Bước 2 . A .
Chương trình Pascal có thể như sau:
var n,i,x: integer; a: longint;
write(‘Nhap x=’); readln(x);
write(‘Nhap n=’); readln(n);
for i:=1 to n do A:=A*X;
writeln(x,’ mu ‘,n,’ bang ‘,A);
Chương trình Pascal có thể như sau:
var n,i,Max,A: integer;
write(‘Nhap N=’); readln(n);
for i:=1 to n do
begin write(‘Nhap so thu ‘,i,’:’); readln(A);
writeln(‘So lon nhat: ‘,Max);
Lời giải bài này tương tự như lời giải của Bài 9 ở trên. Xem thuật toán trong lời giải Bài tập 5a, Bài 5. Chương trình Pascal có thể như sau:
var n,i,SoDuong,A: integer;
write(‘Nhap N=’); readln(n);
for i:=1 to n do
begin write(‘Nhap so thu ‘,i,’:’); readln(A);
writeln(‘So cac so duong = ‘,SoDuong)
Câu hỏi và bài tập
- 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 mô tả thuật toán để có chương trình trên.
Cho nhận xét của em!
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!
while S<=10 do
begin n:=n+1; S:=S+n end;
while S<=10 do
Hãy chỉ ra lỗi trong các câu lệnh sau đây:
Người ta đã chứng minh rằng các tổng sau đây
Hướng dẫn trả lời
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 là ở các điểm sau đây:
Bước 4 . Kết thúc thuật toán.
a ) Thuật toán 1: 10 vòng lặp được thực hiện. Khi kết thúc thuật toán S = 5.0. Đoạn chương trình Pascal tương ứng:
while S<10 do
begin n:=n+3; S:=S-n end;
a ) Chương trình thực hiện 5 vòng lặp. b ) Vòng lặp trong chương trình được thực hiện vô tận vì sau câu lệnh n:=n+1; câu lệnh lặp kết thúc nên điều kiện S=0 luôn luôn được thỏa mãn.
Chương trình Pascal:
var n,k: integer;
write(‘Nhap so A= ‘); readln(A);
write(‘Nhap so n= ‘); readln(n);
while k<=n do begin LT:=LT*A, k:=k+1 end
Bước 5 . Kết thúc thuật toán.
Chương trình có thể như sau:
var n,i,S: integer;
write(‘Cho so tu nhien n= ‘); readln(n);
while i<=n-1 do
if (n mod i)=0 then S:=S+i;
write(‘Tong cac uoc so thuc su cua ‘,n,’ la: ‘,S);
Var A, sum: real;
Write(‘cho so A: ‘); readln(A);
While (sum<=A) do
Write(‘Gia tri N bang ‘, i:6);
Câu hỏi và bài tập
- “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?
- 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:
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; A; A of real;
write(‘Nhap so phan tu cua mang, n= ‘); readln(n);
for i:=1 to n do
write(‘Nhap gia tri ‘,i,’cua mang, a of integer;
for i:=1 to 5 do
begin write(‘Nhap so thu ‘,i,’:’); readln(A of real;
write(‘Nhap so phan tu cua mang, n= ‘); read(n);
for i:=1 to n do
write(‘Nhap gia tri ‘,i,’cua mang, a;
write(‘Trung binh bang ‘,TB);
var n,k,S: integer;
write(‘Nhap so tu nhien n: ‘); readln(n);
for k:=1 to n do
begin write(‘Nhap X) end;
for k:=1 to n do
writeln(‘Tong cac duong S=’,S);
Nội dung Bài 2 của Bài thực hành 6 là viết chương trình nhận biết một số tự nhiên có phải là số nguyên tố hay không. Nội dung của Bài tập 9, Bài 8, là viết chương trình tính tổng các ước số thực sự của một số nguyên, nhưng chưa liệt kê được các ước số đó. Để có thể liệt kê, chương trình cần phải ghi lại chúng. ý tưởng chính là sử dụng một biến mảng phục vụ cho điều này. Chương trình tương tự như trong Bài tập 9, Bài 8:
var n,i,k,S: integer;
X: array:=0; {Dat lai = 0}
while i<=(n-1) do {Ghi lai uoc so vao X:=i; S:=S+X
else writeln(n,’ la so nguyen to.’);
--- Bài cũ hơn ---
Giải Bài Tập Tin Học 5
Bài 1 Trang 86 Sgk Tin Học 7
Giáo Án Nghề Tin Lớp 8 (70 Tiết)
Giáo Án Tin Học Nghề Lớp 8
Giáo Án Tự Chọn Nghề Tin Học Lớp 8