Tài liệu

Một số bài tập Pascal lớp 8: Tận hưởng lập trình căn bản

Huy Erick

Trong thế giới lập trình, Pascal là một trong những ngôn ngữ căn bản nhất. Để giúp các bạn 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...

Trong thế giới lập trình , Pascal là một trong những ngôn ngữ căn bản nhất. Để giúp các bạn 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 một số bài tập Pascal lớp 8 sau đây. Tài liệu này tổng hợp một số bài tập từ cơ bản đến nâng cao, mời các bạn cùng tham khảo.

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

Hãy thử 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.

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

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

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.

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 và 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 và diện tích hình vuông có cạnh a (được nhập từ bàn phím).

Hướng dẫn:

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

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.

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 và 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).

Hướng dẫn:

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

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.

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

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.

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.

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

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.

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.

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.

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.

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.

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

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.

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, biến đó có giá trị ban đầu là 0. Để nhân dồn giá trị ban đầu vào biến, 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ố.

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 tạm 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 b (sau lệnh này, b có giá trị của tạm = a).

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ố đầu ở hai biến cho nhau, ta phải dùng thêm một biến 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:

    • 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 hoặc gán giá trị khác 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 hoặc gán giá trị khác 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 ;

    • Trong đó: If, then là từ khóa.
    • điều kiện> thường là phép so sá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 BeginEnd.
  • 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 else ;

    • Trong đó: If, then là từ khóa.
    • điều kiện> thường là phép so sá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 BeginEnd.
  • 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 := to do ;

    • Trong đó: For, to, do là từ khóa.
    • là một biến kiểu nguyên.
    • là các giá trị nguyên, giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
    • 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 BeginEnd.
  • Số lần lặp = (giá trị cuối) - (giá trị đầu) + 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: tam - x; x - y; y - tam.
  • 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 ', T);   Readln; End.

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

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 cho phép tính tổng 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);   readln; 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);   readln; End.

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

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.

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.

Đây là một số bài tập về Pascal được VnDoc chia sẻ. Hy vọng qua bài tập này các em sẽ nắm chắc kiến thức và 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 khác cùng tham khảo nhé.

1