Một số bài tập Pascal lớp 8

Một số bài tập Pascal lớp 8

Trong lập trình thì Pascal là ngôn ngữ căn bản. Để giúp các em học sinh làm quen với nhiều dạng bài tập Pascal lớp 8, VnDoc xin giới thiệu với các bạn Một số bài tập Pascal lớp 8 sau đây. Tài liệu tổng hợp một số bài tập từ cơ bản đến nâng cao, mời các em cùng tham khảo.

I. Bài tập thực hành ôn tập Pascal

Các em hãy gõ chương trình sau vào Turbo Pascal để chạy và tìm lỗi:

program Tinh_Chu_Vi_Dien_Tich_HV

var a,s,c:longint;

begin

write(‘Nhap vao do dai canh hinh vuong: ’)

read(a);

if a>0 then

begin

c:=4*a;

s:=a*a;

writeln(‘Chu vi hinh vuong co canh dai ’ ,a, ‘la: ’,c);

writeln(‘Dien tich hinh vuong co canh dai ’ ,a, ‘la: ’,s)

end

else

write(Du lieu sai, khong the thuc hien duoc! ’);

readln

end.

I. Làm quen với chương trình Pascal – Khai báo, sử dụng biến – Các thủ tục vào ra.

Bài tập 1.1: Viết chương trình tính chu vi và diện tích của hình chữ nhật có chiều dài hai cạnh là a, b (được nhập từ bàn phím).

a. Hướng dẫn:

  • Nhập hai cạnh vào hai biến a, b.
  • Chu vi hình chữ nhật bằng 2*(a+b); Diện tích hình chữ nhật bằng a*b.

b. Mã chương trình:

Program Chu_nhat;
uses crt;
Var a, b, S, CV: real;
Begin
Write('Nhap chieu dai:'); readln(a);
Write('Nhap chieu rong:'); readln(b);
S := a*b;
CV := (a+b)*2;
Writeln('Dien tich hinh chu nhat la:',S);
Writeln('Chu vi hinh chu nhat la:',CV:10:2);
readln
end.

c. Nhận xét: Lệnh write cho phép in ra màn hình một hoặc nhiều mục. Có thể định dạng được số in ra bằng cách qui định khoảng dành cho phần nguyên, khoảng dành cho phần thập phân.

Bài tập 1.2: Viết chương trình tính chu vi, diện tích hình vuông có cạnh a (được nhập từ bàn phím).

a. Hướng dẫn:

  • Nhập cạnh vào biến canh.
  • Chu vi hình vuông bằng 4*canh; Diện tích hình vuông bằng canh*canh.

b. Mã chương trình:

Program HINH_VUONG;
uses crt;
Var canh: real;
Begin
clrscr;
Write('Nhap do dai canh:');readln(canh);
Writeln('Chu vi hinh vuong la:',4*canh:10:2);
Writeln('Dien tich hinh vuong la:',canh*canh:10:2);
readln
end.

c. Nhận xét: Bài tập 1.2 tiết kiệm được hai biến là CV và S vì lệnh write cho phép in một biểu thức. Trong lập trình việc tiết kiệm biến là cần thiết nhưng đôi lúc gây khó hiểu khi đọc, kiểm tra chương trình.

Bài tập 1.3: Viết chương trình tính chu vi và diện tích hình tròn có bán kính r (được nhập từ bàn phím).

a. Hướng dẫn:

  • Nhập bán kính vào biến r.
  • Chu vi đường tròn bằng 2**r.
  • Diện tích hình tròn bằng *r*r.

b. Mã chương trình:

Program HINH_TRON;
uses crt;
Var r: real;
Begin
clrscr;
Write('Nhap ban kinh:'); readln(r);
Writeln('Chu vi duong tron la:',2*pi*r:10:2);
Writeln('Dien tich hinh tron la:',pi*r*r:10:2);
readln
end.

c. Nhận xét: pi là hằng số. Một hằng số có thể được người dùng khai báo hoặc do Pascal tự tạo. Pi là hằng do Pascal tự tạo nên người dùng không cần khai báo.

Bài tập 1.4: Viết chương trình tính diện tích của tam giác có ba cạnh là a, b, c (được nhập từ bàn phím)

a. Hướng dẫn:

  • Nhập ba cạnh của tam giác vào ba biến a, b, c.
  • Nửa chu vi của tam giác p = (a+b+c)/2.

Đề bài tập pascal

b. Mã chương trình:

Program TAM_GIAC;
uses crt;
Var a,b,c,p,S: real;
Begin
clrscr;
Write('Nhap canh a:');readln(a);
Write('Nhap canh b:');readln(b);
Write('Nhap canh c:');readln(c);
p:=(a+b+c)/2;
S:= sqrt(p*(p-a)*(p-b)*(p-c));
Write('Dien tich tam giac la:',s:10:2);
readln
end.

b. Nhận xét: Ở đây ta lại hai lần dùng biến trung gian p, s để chương trình sáng sủa, dễ theo dõi.

Bài tập 1.5: Viết chương trình cho phép tính trung bình cộng của bốn số.

a. Hướng dẫn:

  • Nhập bốn số vào bốn biến a, b, c, d
  • Trung bình cộng của a, b, c, d bằng (a + b + c + d)/4.

b. Mã chương trình:

Program TB_Cong_4_So;
uses crt;
Var a, b, c, d: real;
Begin
Clrscr;
Write('Nhap so thu nhat:');readln(a);
Write('Nhap so thu hai:');readln(b);
Write('Nhap so thu ba:');readln(c);
Write('Nhap so thu tu:');readln(d);
Writeln('Trung binh cong: ',(a+b+c+d)/4):10:2;
Readln
end.

Bài tập 1.6: Viết chương trình cho phép tính trung bình cộng của bốn số với điều kiện chỉ được sử dụng hai biến.

a. Hướng dẫn:

  • Dùng một biến S có giá trị ban đầu bằng 0.
  • Dùng một biến để nhập số.
  • Sau khi nhập một số cộng ngay vào biến S.

b. Mã chương trình:

Program TB_Cong_4_So;
uses crt;
Var s,a: real;
Begin
Clrscr;
S:=0;
Write('Nhap so thu nhat:');readln(a); S:=S+a;
Write('Nhap so thu hai:');readln(a); S:= S+a;
Write('Nhap so thu ba:');readln(a); S:=S+a;
Write('Nhap so thu tu:');readln(a); S:=S+a;
Writeln('Trung binh cong: ',S/4:10:2);
readln
end.

b. Nhận xét: Câu lệnh gán S:= S+a thực hiện việc cộng thêm a vào biến S. Thực chất là thực hiện các bước: lấy giá trị của S cộng với a rồi ghi đè vào lại biến S. Ở đây ta cũng đã sử dụng biến a như là một biến tạm để chứa tạm thời giá trị được nhập từ bàn phím.

Bài tập 1.7: Viết chương trình cho phép tính trung bình nhân của bốn số với điều kiện chỉ được sử dụng hai biến.

a. Hướng dẫn:

  • Dùng một biến S có giá trị ban đầu bằng 1.
  • Dùng một biến để nhập số.
  • Sau khi nhập một số nhân ngay vào biến S.
  • Trung bình nhân bốn số là căn bậc 4 tích của chúng (Dùng hai lần căn bậc hai).

b. Mã chương trình:

Program TB_nhan;
uses crt;
Var a, S: real;
Begin
clrscr;
S:=1;
Write('Nhap so thu nhat: '); readln(a); S:=S*a;
Write('Nhap so thu hai: '); readln(a); S:=S*a;
Write('Nhap so thu ba: '); readln(a); S:=S*a;
Write('Nhap so thu tu: '); readln(a); S:=S*a;
Write('Trung binh nhan cua bon so la:',sqrt(sqrt(s)));
readln
End.

b. Nhận xét: Ta đã dùng hai lần khai phương để lấy căn bậc 4 của một số. Để cộng dồn giá trị vào một biến thì biến đó có giá trị ban đầu là 0. Để nhân dồn giá trị ban đầu vào biến thì biến đó cần có giá trị ban đầu là 1.

Bài tập 1.8: Viết chương trình nhập hai số, đổi giá trị hai số rồi in ra hai số.

a. Hướng dẫn:

  • Dùng các biến a, b để lưu hai số được nhập từ bàn phím;
  • Gán cho biến tam giá trị của a.
  • Gán giá trị của b cho a. (Sau lệnh này a có giá trị của b).
  • Gán giá trị của tạm cho cho b (Sau lệnh này b có giá trị của tam = a).

b. Mã chương trình:

Program Doi_Gia_Tri;
uses crt;
var a, b, tam:real;
Begin
clrscr;
write('nhap a: '); readln(a);
write('nhap b: '); readln(b);
writeln('Truoc khi doi a =',a,' va b= ',b);
readln;
tam:=a;
a:=b;
b:=tam;
writeln('Sau khi doi a =',a,' va b= ',b);
readln
end.

Nhận xét: Nếu thực hiện hai lệnh a:= b; b:=a để đổi giá trị hai biến thì sau hai lệnh này hai biến có giá trị bằng nhau và bằng b. Thực chất sau lệnh thứ nhất hai biến đã có giá trị bằng nhau và bằng b rồi! Trong thực tế để đổi chỗ số dầu ở hai bình cho nhau ta phải dùng thêm một bình phụ.

II. Bài tập luyện Pascal

Câu 1: Cấu trúc chung của chương trình gồm mấy phần, đó là những phần nào? Phần nào là phần quan trọng nhất không thể thiếu được?

- Cấu trúc chung của chương trình gồm 2 phần:

+ Phần khai báo: nằm đầu mỗi chương trình, là phần có thể có hoặc không, chứa các khai báo như: khai báo tên chương trình, tên thư viện, hằng,..

+ Phần thân chương trình: nằm sau phần khai báo, trong cặp từ khóa begin và end, là phần bắt buộc phải có, chứa các lệnh để giải quyết bài toán.

- Phần quan trọng nhất không thể thiếu được là phần thân chương trình.

Câu 2: Em hiểu như thế nào về viết chương trình cho máy tính? Tại sao người ta cần viết chương trình cho máy tính?

- Viết chương trình là viết dãy câu lệnh hướng dẫn cho máy tính thực hiện công việc hay giải quyết một bài toán cụ thể nào đó.

- Viết chương trình giúp điều khiển máy tính dễ dàng và hiệu quả hơn.

Câu 3: Điểm giống và khác nhau giữa hằng và biến?

- Giống nhau:

+ Biến và hằng đều là đại lượng để lưu trữ dữ liệu.

+ Biến và hằng đều phải được khai báo trước khi sử dụng.

- Khác nhau:

Biến

Hằng

- Giá trị của biến có thể thay đổi trong suốt quá trình thực hiện chương trình.

- Có thể nhập hay gán giá trị khác vào cho biến.

- Giá trị của hằng không thể thay đổi trong suốt quá trình thực hiện chương trình.

- Không thể nhập hay gán giá trị khác vào cho hằng.

Câu 4: Bài toán là gì? Để giải quyết được một bài toán cụ thể ta cần làm gì? Thuật toán là gì? Trình bày các bước để giải một bài toán trên máy tính?

- Bài toán là một công việc hay một nhiệm vụ cần phải giải quyết.

- Để giải quyết bài toán, ta cần xác định điều kiện cho trước và kết quả cần thu được.

- 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 để thu được kết quả cần thiết từ những điều kiện cho trước.

- Các bước để giải một bài toán trên máy tính:

+ Bước 1: Xác định bài toán: là xác định điều kiện đã cho (INPUT) và kết quả cần thu được (OUTPUT).

+ Bước 2: Mô tả thuật toán: diễn tả cách giải bài toán bằng dãy các thao tác cần phải thực hiện.

+ Bước 3: Viết chương trình: Dựa vào thuật toán ở trên, viết chương trình bằng một ngôn ngữ lập trình thích hợp.

Câu 5: Viết cú pháp, giải thích cú pháp và hoạt động của câu lệnh điều kiện dạng thiếu trong ngôn ngữ lập trình Pascal?

- Cú pháp: If <điều kiện> then <câu lệnh>;

- Trong đó: If, then: là từ khóa.

<điều kiện> thường là phép so sánh.

<câu lệnh> có thể là câu lệnh đơn, cũng có thể là nhóm câu lệnh. Nếu là nhóm câu lệnh thì đặt trong cặp từ khóa Begin và End.

- Cách thực hiện câu lệnh: Khi thực hiện câu lệnh điều kiện dạng thiếu, chương trình sẽ kiểm tra điều kiện. Nếu điều kiện thỏa mãn thì thực hiện câu lệnh sau từ khóa then, ngược lại, câu lệnh bị bỏ qua.

Câu 6: Viết cú pháp, giải thích cú pháp và hoạt động của câu lệnh điều kiện dạng đủ trong ngôn ngữ lập trình Pascal?

- Cú pháp: If <điều kiện> then

<câu lệnh 1>

else

<câu lệnh 2>;

- Trong đó: If, then: là từ khóa.

<điều kiện> thường là phép so sánh.

<Câu lệnh 1> <Câu lệnh 2>: có thể là câu lệnh đơn, cũng có thể là nhóm câu lệnh. Nếu là nhóm câu lệnh thì đặt trong cặp từ khóa Begin và End.

- Cách thực hiện câu lệnh: Với câu lệnh này, chương trình sẽ kiểm tra điều kiện. Nếu điều kiện được thỏa mãn, chương trình sẽ thực hiện câu lệnh 1 sau từ khóa then. Trong trường hợp ngược lại, câu lệnh 2 sẽ được thực hiện.

Câu 7: Viết cú pháp, giải thích cú pháp và hoạt động của câu lệnh lặp trong ngôn ngữ lập trình Pascal?

- Cú pháp: For <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;

- Trong đó: For, to, do : là từ khóa.

<biến đếm> là một biến kiểu nguyên.

<giá trị đầu> <giá trị cuối>: là các giá trị nguyên, giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.

<câu lệnh>: có thể là câu lệnh đơn, cũng có thể là một nhóm các câu lệnh. Nếu là nhóm các câu lệnh thì đặt trong từ khóa Begin và End.

- Số lần lặp = (giá trị cuối) - (giá trị cuối) +1 (lần)

- Cách thực hiện câu lệnh: Khi thực hiện, ban đầu biến đếm sẽ nhận giá trị bằng giá trị đầu, sau mỗi vòng lặp, biến đếm được tự động tăng thêm một đơn vị cho đến khi bằng giá trị cuối.

Câu 9: 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?

INPUT: hai biến x và y.

OUTPUT: x và y có giá trị tăng dần.

Mô tả thuật toán:

- Bước 1: Nhập x, y.

- Bước 2: Nếu x<y thì chuyển đến bước 4.

- Bước 3: tg <- x;

x <- y;

Y <- tg;

- Bước 4: In giá trị x,y và kết thúc thuật toán.

Câu 10: Nhập vào hai cạnh của một hình chữ nhật. In ra màn hình diện tích và chu vi của nó?

Program hinh_chu_nhat;

Uses crt;

Var a,b, CV, DT: Integer;

Begin

Clrscr;

Write (‘Hay nhap chieu dai: ’);

Redln (a);

Write (‘Hay nhap chieu rong: ’);

Readln (b);

CV:= (a+b)*2;

DT:= a*b;

Writeln (‘Chu vi hinh chu nhat la: ’, CV);

Writeln (‘Dien tich hinh chu nhat la: ’, DT);

Readln;

End.

Câu 11: Nhập vào bán kính của hình tròn. In ra màn hình diện tích và chu vi của nó?

Program hinh_tron;

Uses crt;

Var R, CV, DT: Real

Const pi=3.14;

Begin

Clrscr;

Write (‘Hay nhap ban kinh: ’);

Readln (R);

CV:= 2*R*pi;

DT:= R*R*pi;

Writeln (‘Chu vi la: ’, CV:8:2);

Writeln (‘Dien tich la: ’, DT:8:2);

Readln;

End.

Câu 12: Viết chương trình nhập ba số a,b,c từ bàn phím. Hiển thị kết quả ra màn hình giá trị lớn nhất của ba số đó?

Program so_lon_nhat;

Uses Crt;

Var a,b,c :Integer;

Begin

Clrscr;

Writeln (‘Hay nhap so a: ’);

Readln (a);

Writenln (‘Hay nhap so b: ’);

Readln (b);

Writeln (‘Hay nhap so c: ’);

Readln (c);

If a>b and a>c then writeln (‘ a la so lon nhat’);

If b>a and b>c then writeln (‘b la so lon nhat’);

If c>a and c>b then writeln (‘c la so lon nhat’);

Readln;

End.

Câu 13: Viết chương trình tính tổng N số tự nhiên đầu tiên?

Program Tong_N;

Uses crt;

Var N,T,I: Integer;

Begin

Clrscr;

Write (‘Hay nhap N: ’);

Readln (N);

T:= 0

For i:=1 to N do T:=T+i;

Writeln (‘Tong cua N so tu nhin dau tien la ’, N);

Readln;

End.

Câu 14: Viết chương trình tính N! (Với N! = 1*2*3*…*n)?

Program Tinh_tich;

Uses crt;

Var N,i :Integer;

Giai thua: Longint;

Begin

Clrscr;

Write (‘Hay nhap N: ’);

Readln (N);

Giai thua :=1

For i:=1 to N do Giai thua:= Giai thua*I;

Writeln (‘Tich la ’, Giai thua);

Readln;

End.

Câu 15: Viết chương trình nhập vào hai số a,b. Kiểm tra tổng của chúng có phải là số dương và chia hết cho 3 hay không?

Program hai_so_a_va_b;

Uses crt;

Var a,b :Integer;

Begin

Clrscr;

If (a+b)>0 and (a+b) mod 3 =0 then writeln (‘Tong cua a va b vua la so duong vua chia het cho 3’)

else writeln (‘Tong cua a va b khong vua la so duong vua chia het cho 3’);

Readln;

End.

Câu 16: Viết chương trình tính tổng sau, biết n nhập từ bàn phím:

S= 1+1/2+1/3+…+1/n?

Program Tinh_S;

Uses Crt;

Var S : real;

N : word;

i : integer; { có thể thay bằng ' longint ' nếu cần số to hơn }

Begin

Clrscr;

Write(' Hay nhap N : ');

readln(N);

S := 0;

for i := 1 to n do

S := S + 1/i;

Writeln(' Tong la ', S:2:8);

end.

Câu 17: Viết chương trình tính tổng sau, biết rằng n nhập từ bàn phím:

S= 1/2+2/3+3/4+..+n/n+1

Program Tinh_tong_S;

Uses Crt;

Var S : real;

N : word;

i : integer; { có thể thay bằng ' longint ' nếu cần số to hơn }

Begin

Clrscr;

Write(' Hay nhap N : ');

readln(N);

S := 0;

for i := 1 to n do

S := S + i/(i+1);

Writeln(' Tong la ', S:2:8);

end.

Câu 18: Viết chương trình nhập vào hai số nguyên dương a và b. Máy hỏi tổng hai số là bao nhiêu? Nếu ta nhập đúng thì máy thông báo “Chúc mừng! Bạn đã tính đúng!” Nếu ta nhập sai thì máy thông báo “Rất tiếc! Bạn đã tính sai” và máy hiện kết quả đúng ra màn hình?

Program tong_hai_so;

Uses crt;

Var a,b,tong :Integer;

Begin

Clrscr;

Write (‘Hay nhap so thu nhat: ’);

Readln (a);

Write (‘Hay nhap so thu hai: ’);

Readln (b);

Write (‘Tong ban tinh duoc la: ’);

Readln (tong);

If tong=a+b then writeln (‘Chuc mung! Ban da tinh dung!’)

else writeln (‘Rat tiec! Ban da tinh sai!’, Tong =a+b);

Readln;

End.

.................................

Một số bài tập về Pascal được VnDoc chia sẻ trên đây. Hy vọng qua bài tập này các em sẽ nắm chắc kiến thức, cũng như nâng cao kĩ năng lập trình của bản thân. Chúc các em học tốt, nếu thấy tài liệu hữu ích hãy chia sẻ cho các bạn cùng tham khảo nhé.

Ngoài tài liệu Một số bài tập Pascal lớp 8, mời các bạn học sinh tham khảo các đề thi học kì 1 lớp 8, đề thi học kì 2 lớp 8 các môn Toán 8, Soạn Văn 8 mà chúng tôi đã sưu tầm và chọn lọc.

Đánh giá bài viết
284 183.949
2 Bình luận
Sắp xếp theo
  • Minh Quân Hà
    Minh Quân Hà =)))
    Thích Phản hồi 13:19 23/12
  • Among us
    Among us

    Bạn ơi !

    Câu 16 và 17 đều sai r

    Mong bạn sửa lại.

    Bạn có thể tham khảo đáp án của tớ :


    Câu 16 :

    Program Tinh_S;

    Uses Crt;

    Var S : real;

    N : word;

    i : integer; { có thể thay bằng ' longint ' nếu cần số to hơn }

    Begin

          Clrscr;

          Write(' Hay nhap N : ');

          readln(N);

    S := 0;

    for i := 1 to n do

    S := S + 1/i;

    Writeln(' Tong la ', S:2:8);

    end.


    Câu 17

    Program Tinh_tong_S;

    Uses Crt;

    Var S : real;

    N : word;

    i : integer; { có thể thay bằng ' longint ' nếu cần số to hơn }

    Begin

          Clrscr;

          Write(' Hay nhap N : ');

          readln(N);

    S := 0;

    for i := 1 to n do

    S := S + i/(i+1);

    Writeln(' Tong la ', S:2:8);

    end.

    Thích Phản hồi 22/02/23

Lớp 8

Xem thêm