lập trình pascal lớp 8

Tìm hiểu mở rộng (trang 14 sgk Tin học lớp 8): Pascal là một trong những ngôn ngữ lập trình hướng cấu trúc được dùng rộng rãi trong các nhà trường. Em hãy tìm hiểu để biết: 1. Các ưu điểm của ngôn ngữ lập trình Pascal. 2. lập trình( t2) tin học lớp 8 VD: Program CT_dau_tien; Uses crt; Begin Writeln('chao cac ban'); End. phần khai báo phần thân 4. Cấu trúc chung của chương trình: Chạy chương trình Turbo Pascal trên môi trường WINDOWS Trên màn hình desktop, chọn My Computer, chọn ổ đĩa C:, chọn thư mục TP Thời lượng khóa học : 103h ~ 35 buổi. Khóa học tập trung đào tạo kỹ năng lập trình cho học viên, giúp học viên hiểu sâu bài học. Các bài labguide chi tiết giúp học viên dễ dàng tổng hợp kiến thức trên lớp. Môi trường chuyên nghiệp, trao đổi thân thiện, cởi mở với Pascal là một trong những ngôn ngữ lập trình đơn giản, dễ học và giúp các bạn làm quen với cách thuật ngữ lập trình cơ bản như hàm, câu lệnh, biên dịch, thông dịch…Và để viết và chạy đoạn mã ngôn ngữ Pascal chúng ta phải sử dụng một IDE chuyên dụng. Hướng dẫn cài đặt Vì là ứng dụng trọn vẹn không tính tiền nên việc thiết lập Free Pascal rất là đơn thuần. Bạn chỉ cần click lên file thiết lập vừa tải về. Bấm Next / Next / Next … liên tục cho tới khi Finish. Chờ một lát là hoàn toàn có thể mở ứng dụng qua hình tượng ở Desktop . Địa chỉ mặc định khi cài đặt phần mềm Pascal là C:\FPC\3.0.4. Le Premier Site De Rencontres Extra Conjugales. Tổng hợp các bài tập Pascal lớp 8 giúp các em học sinh lớp 8 làm quen với môn học lập trình Pascal trên máy tính cùng với các bài tập cơ bản, nâng cao kiếm thức, giúp học Pascal trở nên dễ dàng hơn. Hãy cùng tải bài tập Pascal lớp 8 về thực hành theo các em nhé. Nhằm giúp các em học sinh có thêm những tài liệu học tập được tốt nhất, bài viết này sẽ giới thiệu một số bài tập Pascal lớp 8 đơn giản để các em có thể thực hành. Để có thể giải quyết tốt được những bài tập Pascal này, đòi hỏi các em học sinh phải nắm chắc các kiến thức cơ bản liên quan đến pascal, có được khả năng tư duy, logic để có thể vận dụng những kiến thức đó vào quá trình làm bài tập, giúp cho ra kết quả lập trình chính xác nhất. Download Bài tập Pascal lớp 8 Pascal là một ngôn ngữ lập trình thông dụng, vì vậy, việc học tốt các kiến thức Pascal ban đầu sẽ giúp các bạn có được nền tảng kiến thức chắc chắn để vận dụng giải quyết những bài tập liên quan và phục vụ cho những công việc yêu cầu đến khả năng lập trình máy tính về sau. Bài tập Pascal lớp 8 chính là một tài liệu giúp các bạn có thể hiểu hơn về loại ngôn ngữ này, đồng thời, thông qua việc giải quyết các bài tập, các bạn sẽ có được những kỹ năng cần thiết để thực hành các thao tác lập trình trên máy tính một cách đơn giản, dễ dàng nhất. Đối với các em sinh viên và những người muốn nghiên cứu sâu hơn về ngôn ngữ Pascal, các em có thể sử dụng công cụ Free Pascal với tính năng biên dịch Pascal nâng cao, đồng thời Free Pascal cũng tích hợp các trình phân tích cú pháp, tối ưu mã.... Bài tập Pascal lớp 8 đều là những bài tập khá cơ bản và đơn giản, vì vậy, chỉ cần nắm chắc được những kiến thức cơ bản cần thiết, các bạn có thể dễ dàng hoàn thiện được những bài tập theo đúng yêu cầu. Ngoài ra, các bạn có thể tham khảo thêm 100 bài tập Turbo Pascal - Bài tập tin học lớp 8 để tăng khả năng học tập, giúp các bạn có thêm được những kiến thức tin học hữu ích để vận dụng giải quyết những công việc trong thực tiễn. 100 bài tập Turbo Pascal - Bài tập tin học lớp 8 đều là những bài tập được chọn lọc, có tính chính xác tuyệt đối, vì vậy, các bạn có thể hoàn toàn yên tâm lựa chọn tài liệu để học tập. 100 bài tập Turbo Pascal danh cho học sinh lớp 8 BÀI TẬP TURBO PASCAL 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 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 a*b. Mã chương trình Program Chu_nhat; uses crt; Var a, b, S, CV real; Begin WriteNhap chieu dai’; readlna; WriteNhap chieu rong’; readlnb; S = a*b; CV = a+b*2; WritelnDien tich hinh chu nhat la’,S; WritelnChu vi hinh chu nhat la’,CV102; 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, khoảng dành cho phần thập phân. Bài tập 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. 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. Mã chương trình Program HINH_VUONG; uses crt; Var canh real; Begin clrscr; WriteNhap do dai canh’;readlncanh; WritelnChu vi hinh vuong la’,4*canh102; WritelnDien tich hinh vuong la’,canh*canh102; readln end. Nhận xét Bài tập 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 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 2*p*r. – Diện tích hình tròn bằng p*r*r. Mã chương trình Program HINH_TRON; uses crt; Var r real; Begin clrscr; WriteNhap ban kinh’; readlnr; WritelnChu vi duong tron la’,2*pi*r102; WritelnDien tich hinh tron la’,pi*r*r102; 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 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. – Diện tích của tam giác s =. Mã chương trình Program TAM_GIAC; uses crt; Var a,b,c,p,S real; Begin clrscr; WriteNhap canh a’;readlna; WriteNhap canh b’;readlnb; WriteNhap canh c’;readlnc; p=a+b+c/2; S= sqrtp*p-a*p-b*p-c; WriteDien tich tam giac la’,s102; 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 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; WriteNhap so thu nhat’;readlna; WriteNhap so thu hai’;readlnb; WriteNhap so thu ba’;readlnc; WriteNhap so thu tu’;readlnd; WritelnTrung binh cong ,a+b+c+d/4102; Readln end. Bài tập 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; WriteNhap so thu nhat’;readlna; S=S+a; WriteNhap so thu hai’;readlna; S= S+a; WriteNhap so thu ba’;readlna; S=S+a; WriteNhap so thu tu’;readlna; S=S+a; WritelnTrung binh cong ,S/4102; 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 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; WriteNhap so thu nhat ; readlna; S=S*a; WriteNhap so thu hai ; readlna; S=S*a; WriteNhap so thu ba ; readlna; S=S*a; WriteNhap so thu tu ; readlna; S=S*a; WriteTrung binh nhan cua bon so la’,sqrtsqrts; 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 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 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 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. Mã chương trình Program Doi_Gia_Tri; uses crt; var a, b, tamreal; Begin clrscr; writenhap a ; readlna; writenhap b ; readlnb; writelnTruoc khi doi a =’,a,’ va b= ,b; readln; tam=a; a=b; b=tam; writelnSau khi doi a =’,a,’ va b= ,b; readln end. Nhận xétNế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 nhauvà 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ụ. Bài tập Giải bài tập mà chỉ được sử dụng hai biến Tức không được dùng thêm biến tạm. Hướng dẫn – Cộng thêm b vào a. Giá trị hai biến sau lệnh này là a+b, b – Gán b bằng tổng trừ đi b Sau lệnh này b có giá trị bằng a; – Gán giá trị a bằng tổng trừ đi b mới Sau lệnh này a có giá trị bằng b. Mã chương trình Program Doi_Gia_Tri; uses crt; var a, breal; Begin clrscr; writenhap a ; readlna; writenhap b ; readlnb; writelnTruoc khi doi a =’,a,’ va b= ,b; readln; a=a+b; b=a-b; a=a-b; writelnSau khi doi a =’,a,’ va b= ,b; readln end. Nhận xétGiống sang dầu giữa hai bình nhưng không giống hoàn toàn!!!Kỹ thuật đổi giá trị biến cho nhau sẽ được sử dụng nhiều trong phần sắp xếp. Bài tập Viết chương trình cho biết chữ số hàng trăm, hàng chục, hàng đơn vị của một số có ba chữ số. Ví dụ khi nhập số 357 thì máy in ra – Chữ số hàng trăm 3. – Chữ số hàng chục 5. – Chữ số hàng đơn vị 7. Hướng dẫn Sử dụng hàm mov để lấy số dư. Khi chia cho 10 để lấy số dư ta được chữ số hàng đơn vị. Sử dụng DIV để lấy phần nguyên. Khi chia cho 10 để lấy phần nguyên ta đã bỏ đi chữ số hàng đơn vị để số có ba chữ số còn số có hai chữ số. Mã chương trình Program CHU_SO; uses crt; var ninteger; begin clrscr; writeNhap so n ;readlnn; writelnChu so hang don vi ,n mod 10; n=n div 10; writelnChu so hang chuc ,n mod 10; n=n div 10; writelnChu so hang tram ,n mod 10; readln end. Nhận xét Hãy sửa chương trình để có kết quả là hàng trăm, hàng chục, hàng đơn vị. Mã chương trình Program CHU_SO; uses crt; var ninteger; begin clrscr; writeNhap so n ;readlnn; writelnChu so hang trm ,n div 100; n=n mov 100; writelnChu so hang chuc ,n div 10; n=n div 10; writelnChu so hang tram ,n; readln end. trúc lựa chọn if … then … else Case … of … Bài tập Viết chương trình in ra số lớn hơn trong hai số được nhập từ bàn phím. Hướng dẫn Nhập hai số vào hai biến a, b. Nếu a > b thì in a. Nếu a b thì in a. Ngược lại thì in b. Mã chương trình Program SO_SANH1; uses crt; var a,b real; begin clrscr; writenhap so thu nhat ; readlna; writenhap so thu hai ; readlnb; if a> b then writeln So lon la’,a; if a b then writeln So lon la’,a102 else writeln So lon la’,b102; readln end. Bài tập Viết chương trình in ra số lớn nhất trong bốn số nhập từ bàn phím. Hướng dẫn Nếu a³ b và a³ c và a³ d thì a là số lớn nhất. Tương tự như thế xét các trường hợp còn lại để tìm số lớn nhất. Mã chương trình Program So_Lon_Nhat_1; Uses crt; Var a,b,c,d real; Begin Clrscr; WriteNhap so thu nhat’;readlna; WriteNhap so thu hai’;readlnb; WriteNhap so thu ba’;readlnc; WriteNhap so thu tu’;readlnd; if a>=b and a>=c and a>= d then writelnSo lon nhat la’,a102; if b>=a and b>=c and b>= d then writelnSo lon nhat la’,b102; if c>=a and c>=b and c>= d then writelnSo lon nhat la’,c102; if d>=a and d>=b and d>= c then writelnSo lon nhat la’,d102; readln end. Bài tập Viết chương trình in ra số lớn nhất trong bốn số nhập từ bàn phím với điều kiện chỉ được dùng hai biến. Hướng dẫn Sử dụng một biến max và một biến a để chứa số vừa nhập. Cho max bằng số đầu tiên. Sau khi nhập một số thực hiện so sánh nếu số vừa nhập lớn hơn max thì lưu số vừa nhập vào max. Sau khi nhập xong ta có max là số lơn nhất Giải thuật này gọi là kỹ thuật lính canh. Mã chương trình Program So_Lon_Nhat_2; Uses crt; Var a,max real; Begin Clrscr; WriteNhap so thu nhat’;readlna;Max=a; WriteNhap so thu hai’;readlna;if a>=Max then Max=a; WriteNhap so thu ba’;readlna;if a>=Max then Max=a; WriteNhap so thu tu’;readlna;if a>=Max then Max=a; WriteSo lon nhat la’,Max102; readln end. Bài tập 2. 4 Viết chương trình xét xem một tam giác có là tam giác đều hay không khi biết ba cạnh của tam giác. Hướng dẫn Nhập ba cạnh của tam giác vào ba biến a,b,c. Nếu a = b và b = c thì tam giác là tam giác đều và ngược lại tam giác không là tam giác đều. Mã chương trình Program Tam_giac_deu; uses crt; var a,b,c real; begin clrscr; writeNhap a = ; readlna; writeNhap b = ; readlnb; writeNhap c = ; readlnc; if a = b and b = c then writelnLa tam giac deu’ else writelnKhong phai la tam giac deu’; readln end. Bài tập 2. 5 Viết chương trình xét xem một tam giác có là tam giác cân hay không khi biết ba cạnh của tam giác. dẫn Nhập ba cạnh của tam giác vào ba biến a,b,c. Nếu a = b hoặc b = c hoặc a = c thì tam giác là tam giác cân và ngược lại tam giác không là tam giác cân. chương trình Program Tam_giac_can; uses crt; var a,b,c real; begin clrscr; writeNhap a = ; readlna; writeNhap b = ; readlnb; writeNhap c = ; readlnc; if a = b or b = c or a = c then writelnLa tam giac can’ else writelnKhong phai la tam giac can’; readln end. Bài tập 2. 6 Viết chương trình xét xem một tam giác có là tam giác vuông hay không khi biết ba cạnh của tam giác. dẫn Nhập ba cạnh của tam giác vào ba biến a,b,c. Nếu a2 = b2 + c2 hoặc b2 = c2 + a2 hoặc c2 = a2+b2 thì tam giác là tam giác vuông và ngược lại tam giác không là tam giác vuông. chương trình Program Tam_giac_can; uses crt; var a,b,c real; begin clrscr; writeNhap a = ; readlna; writeNhap b = ; readlnb; writeNhap c = ; readlnc; if a*a = b*b+c*c or b*b = c*c+a*a or c*c= a*a+b*b then writelnLa tam giac vuong’ else writelnKhong phai la tam giac vuong’; readln end. Bài tập Viết chương trình giải phương trình ax + b = 0 Các hệ số a, b được nhập từ bàn phím. dẫn Nếu a ¹ 0 thì phương trình có nghiệm x = Nếu a = 0 và b = 0 thì phương trình có vô số nghiệm Nếu a = 0 và b ¹ 0 thì phương trình vô nghiệm Hoặc Nếu a = 0 thì xét b. Nếu b = 0 thì phương trình có vô số nghiệm ngược lại b ¹0 thì phương trình vô nghiệm ngược lại a ¹0 phương trình có nghiệm x = . Mã chương trình Program Phuong_trinh_2; uses crt; var a,breal; begin clrscr; Writeln CHUONG TRINH GIAI PT ax + b = 0’; WriteNhap he so a = ;readlna; WriteNhap he so b = ;readlnb; if a0 then writelnphuong trinh’,a102,’x + ,b102,’= 0′,’ co nghiem x =;’,-b/a102; if a=0 and b=0 then writelnPhuong trinh co vo so nghiem’; if a=0 and b0 then writelnPhuong trinh vo nghiem’; readln end. Hoặc Program Phuong_trinh_2; uses crt; var a,breal; begin clrscr; Writeln CHUONG TRINH GIAI PT ax + b = 0’; WriteNhap he so a = ;readlna; WriteNhap he so b = ;readlnb; if a0 then writelnphuong trinh’,a102,’x + ,b102,’= 0′,’ co nghiem x =;’,-b/a102 else if b=0 then writelnPhuong trinh co vo so nghiem’ else writelnPhuong trinh vo nghiem’; readln end. Bài tập Viết chương trình giải phương trình ax2 + bx + c = 0 Với các hệ số a,b,c được nhập từ bàn phím. Hướng dẫn – Nhập các số các hệ số vào các biến a,b,c. – Tính delta = b2 – 4ac. – Nếu delta > 0 thì phương trình có hai nghiệm x1 = -b + sqrtdelta/2a x2 = -b – sqrtdelta/2a – Nếu delta = 0 thì phương trình co nghiệm kép x = -b/2a – Nếu delta 0 then begin x1= -b+sqrtdelta/2*a; x2= -b-sqrtdelta/2*a; writelnPhuong trinh co hai nghiem phan biet’; writelnx1=’,x1102; writelnx2=’,x2102; end; if delta = 0 then begin x1= -b/2*a; writelnPhuong trinh co nghiem kep’; writelnx1=x2=’,x1102; end; if delta Monday’; 3 Write–> Tuesday’; 4 Write–> Wednesday’; 5 Write–> Thursday’; 6 Write–> Friday’; 7 Write–> Saturday’; 8 Write–> Sunday’; else Write Khong co thu nay’; end; readln end. Bài tập Viết chương trình cho phép tính diện tích các hình Hình vuông; Hình chữ nhật; Hình tròn; Tam giác; Hình thang. Người dùng chọn hình cần tính diện tích từ bảng chọn, sau đó khai báo các thông số liên quan và nhận được diện tích của hình MOI BAN CHON HINH CAN TINH DIEN TICH Hình vuông. Hình chữ nhật. Hình tròn Tam giác Hình thang. Muốn tình diện tích tam giác, người dùng gõ D và khai báo đường cao, đáy. Chương trình tính và thông diện tích đến người dùng. Hướng dẫn – Dùng cấu trúc chọn Case chon of với chon có kiểu Char để tạo bảng chọn. – Dùng 3 biến a,b,c để lưu các thông số của hình; Biến S để lưu diện tích của hình. – Thực hiện chung câu thông báo diện tích Nằm ngoài Case . . . of để gọn chưong trình. Mã chương trình Program Dien_Tich_cac_hinh; uses crt; var chon byte; a,b,c,S real; Begin clrscr; writelnCHUONG TRINH TINH DIEN TICH CAC HINH’; Writeln ————; writeln1. DIEN TICH HINH TAM GIAC’; writeln2. DIEN TICH HINH VUONG’; writeln3. DIEN TICH HINH CHU NHAT’; writeln4. DIEN TICH HINH THANG’; writeln5. DIEN TICH HINH TRON’; writeMoi ban chon hinh can tinh dien tich ;readlnchon; case upcase chon of 1 Begin WriteCho biet canh day ; readlna; WriteCho biet chieu cao ; readlnb; S=a*b/2; end; 2Begin WriteCho biet chieu dai canh ; readlna; S=a*a; end; 3Begin WriteCho biet chieu dai ; readlna; WriteCho biet chieu rong ; readlnb; S=a*b; end; 4Begin WriteCho biet day lon ; readlna; WriteCho biet day nho ; readlnb; WriteCho biet chieu cao ; readlnc; S=a+b*c/2; End; 5Begin WriteCho biet ban kinh ; readlna; S=a*a*pi; End; else WritelnChon sai roi!!!’; end; WritelnDien tich cua hinh la ,S82; readln end. III. Cấu trúc lặp với số lần lặp đã biết For … to … do Bài tập Viết chương trình in ra các số chẵn nhỏ hơn hoặc bằng n Với n được nhập. Hướng dẫn – Cho biến i chạy từ 1 đến n. – Nếu i chẵn i chia 2 dư 0 thì in ra số n. Mã chương trình Program In_So_Le; Uses crt; var i,n integer; Begin Clrscr; WriteNhap so n =’; readlnn; For i=1 to n do if i mod 2 =1 then Writei3,’,’; readln end. Bài tập Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng n Với n được nhập. Sao cho 15 số lẻ được in trên một dòng. Hướng dẫn – Cho j =0. – Cho biến I chạy từ 1 đến n. – Nếu I chẵn I chia 2 dư 0 thì in ra số n và tăng j lên 1 – Nếu j chia hết cho 15 thì thực hiện xuống dòng Dùng Writeln. Mã chương trình Program In_So_Le; Uses crt; var Dem,i,n integer; Begin Clrscr; WriteNhap so n =’; readlnn; Dem= 0; For i=1 to n do if i mod 2 =1 then Begin Writei3,’,’; Dem= Dem + 1; if Dem mod 15 = 0 then Writeln; end; readln end. Bài tập Viết chương trình in ra tổng các số lẻ nhỏ hơn hoặc bằng n Với n được nhập. Hướng dẫn – Cho S = 0. – Cho biến i chạy từ 1 đến n. – Nếu i chẵn I chia 2 dư 0 thì cộng thêm I vào S. – In ra S. Mã chương trình Program In_So_Le; Uses crt; var S,i,n integer; Begin Clrscr; WriteNhap so n =’; readlnn; For i=1 to n do if i mod 2 =1 then S= S+i; WritelnTong cac so le nho hon ,n,’ la ,S; readln end. Bài tập Viết chương trình in ra tất cả các ước của một số n Với n được nhập từ bàn phím Hướng dẫn – Cho biến i chạy từ 1 đến n chia hết cho i thì in ra i. Mã chương trình Program Tim_uoc; uses crt; Var n, i integer; Begin clrscr; WriteNhap so n =’; readlnn; For i=1 to n do if n mod i = 0 then writei3,’,’; readln end. Bài tập Một số có tổng các ước nhỏ hơn nó bằng chính nó được gọi là số hoàn chỉnh. Ví dụ 6 có các ước nhỏ hơn nó là 1, 2, 3. Tổng là 1 + 2 + 3 = 6. Viết chương trình xét xem một số n được nhập từ bàn phím có phải là số hoàn chỉnh không. Hướng dẫn – Dùng biến n lưu số cần xét. – Biến S có giá trị ban đầu bằng 0. – Cho i chạy từ 1 đến n-1. nếu i là ước của n thì cộng thêm i vào S. – Nếu S = n thì S là số hoàn chỉnh. Mã chương trình Program So_Hoan_Chinh; uses crt; var n, i, s integer; begin writenhap so n ;readlnn; s=0; for i= 1 to n -1 do if n mod i = 0 then s=s+i; if s = n then writen, la so hoan chinh’ else writelnn, khong phai la so hoan chinh’; readln end. Bài tập Viết chương trình tìm các số hoàn chỉnh nhỏ hơn n Với n được nhập từ bàn phím. Hướng dẫn Cho biến i chạy từ 1 đến n. Xét i. Nếu nó là số hoàn chỉnh thì in ra. Mã chương trình Program Tim_uoc_2; uses crt; Var S, n, i,j longint; Begin clrscr; WriteNhap so n =’; readlnn; For i=1 to n do Begin S=0; For j=1 to i do if i mod j = 0 then S=S+j; if S = 2*i then writei6,’,’; end; readln end. Bài tập In bảng cửu chương n Với n nhập từ bàn phím dẫn Mã chương trình Program Cuu_Chuong_1; uses crt; var n, i integer; begin clrscr; writeNhap n ; readlnn; for i= 1 to 9 do writelnn,’ x , i, = , n*i; readln end. Bài tập Lần lượt in các bảng cửu chương. dẫn – Cho biến i chạy từ 2 đến 9 – In bảng cửu chương i. Mã chương trình Program Cuu_Chuong_1; uses crt; var i,j integer; begin clrscr; for i= 2 to 9 do Begin WritelnBang cuu chuong ,i; For j = 1 to 9 do writelni,’ x , j, = , j*i; readln end; readln end. Bài tập Viết chương trình xét xem một số n có phải là số nguyên tố không? dẫn – Cho biến i chạy từ 2 đến n – 1 nếu n không chia hết mọi số i thì thì n là số nguyên tố. – Sử dụng biến ok có kiểu boolean và có giá trị ban đầu là true. Cứ mỗi lần xét phép chia n cho i thì chương trình Program Nguyen_to_1; uses crt; var n, i integer; ok boolean; begin ok=true; writeNhap n ;readlnn; for i= 2 to n – 1 do if n mod i = 0 then ok =ok and false; if ok then writen,’ la so nguyen to’ else writen, khong la so nguyen to’; readln end. Bài tập Viết chương trình in ra tất cả các số nguyên tố bé hơn hoặc bằng n? Hướng dẫn Mã chương trình Program Nguyen_to_1; uses crt; var n, i, j integer; ok boolean; begin clrscr; writeNhap n ; readlnn; for i = 2 to n do begin ok=true; for j= 2 to i – 1 do if i mod j = 0 then ok =ok and false; if ok then writei,’;’ end; readln end. Cấu trúc lặp với số lần lặp chưa biết Bài tập Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng n Với n được nhập. Hướng dẫn – Sử dụng kiến thức số lẻ đầu tiên bằng 1. Số lẻ sau bằng số trước cộng với 2. – Cho biến i có giá trị ban đầu bằng 1. – Dùng vòng lặp while do với điều kiện i 0. Mã chương trình Program Giai_Thua_while; uses crt; var n, gtlongint; begin clrscr; writeNhap n ;readlnn; gt=1; while n>0 do begin gt=gt*n; n=n-1; end; writelnGiai thua cua n la ,gt; readln end. Nhận xét Tiết kiệm được một biến i để chạy nhưng làm thay đổi n nên khi xuất ra chỉ có thể xuất một câu chung chung “Giai thua cua n la” Bài tập Viết chương trình tính n! với n! được định nghĩa như sau – n!! = 1 với n = 0 – n!! = với n lẻ. – n!! = với n chẵn. Yêu cầu Sử dụng vòng lặp với số lần chưa biết trước Hướng dẫn – Hai số chẵn liên tiếp hơn kém nhau 2. Hai số lẻ liên tiếp cũng vậy. – Thực hiện tính như giai thừa đơn nhưng với bước nhảy là 2. Mã chương trình Program Giai_thua_kep; uses crt; var n,gtlongint; begin writeNhap n ;readlnn; gt=1; while n>0 do begin gt=gt*n; n=n-2; end; writeGiai thua la ,gt; readln end. Nhận xét – Với thuật toán trên ta không cần xét n là chẵn hay lẻ. Bài tập Viết chương trình cho phép tính tổng của nhiều số Chưa biết bao nhiêu số. Nhập số 0 để kết thúc quá trình nhập. Hướng dẫn Mã chương trình Program Tong_Repeat; uses crt; var i byte; so, tong real; begin writeNHAP CAC SO – NHAP 0 DE NGUNG ; readln; repeat clrscr; writeNhap so thu ,i,’ ; readlnso; tong=tong+so; i=i+1; until so=0; writeTong la ,tong61; readln end. Bài tập Viết chương trình tìm ước chung lớn nhất UCLN của hai số với yêu cầu sử dụng thuật toán Euclid. Thuật toán Euclid Nếu a chia hết cho b a chia b dư 0 thì UCLNa,b bằng b Nếu a chia b dư r thì UCLNa,b = UCLNb,r dẫn – Nhập a, b và gán r = a mod b. – Lặp với điều kiện r 0 b = r, a = b, r = a mod b. chương trình Program UCLN; uses crt; var a,b,rbyte; begin clrscr; writelnCHUONG TRINH TIM UCLN CUA HAI SO’; writeNhap a ;readlna; writeNhap b ;readlnb; r=a mod b; while r 0 do begin b=r; a=b; r=a mod b; end; writeUCLN cua hai so la ,b; readln end. Bài tập Dãy Fibonacy có hai phần tử đầu là 1, 1. Các phần tử sau bằng tổng hai phần tử đứng ngay trước nó 1, 1, 2, 3, 5, 8, 13, 21, … Viết chương trình in ra dãy Fibonacy có phần tử lớn nhất nhỏ hơn n? dẫn chương trình LIỆU KIỂU MẢNG Bài tập Viết chương trình cho phép nhập n số và in ra theo thứ tự ngược lại. Ví dụ nhập 3, 5, 7 thì in ra 7, 5, 3. dẫn Dùng biến n để lưu lượng số cần nhập. Dùng mảng để lưu các số vừa nhập. Cho i chạy từ n về 1 để in các số vừa nhập. chương trình Program mang_1; uses crt; var n, i integer; M array[1..100] of real; Begin writeNhap so n ;readlnn; for i=1 to n do Begin writeM[,i,’]=’; readlnM[i]; end; for i= n downto 1 do writem[i],’ ,’; readln end. Bài tập Viết chương trình nhập dãy n số và in ra tổng các số lẻ trong dãy số vừa nhập. Hướng dẫn Mã chương trình Program Mang_Tong_Le; uses crt; var i,nbyte; Marray[1..100] of integer; tonglongint; begin writeNhap so phan tu cua day ;readlnn; for i=1 to n do begin writeM[,i,’]’; readlnM[i]; end; tong=0; for i=1 to n do if M[i] mod 2 =1 then tong=tong+M[i]; writeTong cac so le trong day la ,tong; readln end. Bài tập Viết chương trình nhập n số, xoá số thứ k trong n số vừa ra n-1 số còn lại. n= 10 Nhập 10 phần tử Ví dụ Nhập 2, 3, 4, 5, 6, 8, 7, 6, 5, 4. k= 8 Xoá phần tử thứ 8. In ra 2, 3, 4, 5, 6, 8, 7, 5, 4. Hướng dẫn Xoá phần tử k bằng cách ghi đè phần tử thứ k+1 lên nó. Mã chương trình Program Xoa_mang; uses crt; var marray[1..100] of integer; n,i,kbyte; begin WriteSo phan tu cua day ;readlnn; for i=1 to n do Begin writeM[,i,’]=’; readlnM[i]; end; writeNhap phan tu can xoa ;readlnk; for i=k to n-1 do m[i]=m[i+1]; for i=1 to n-1 do writem[i],’, ; readln end. Bài tập Viết chương trình cho phép nhập nhập một dãy gồm n số nguyên. Nhập thêm một số và chèn thêm vào dãy sau phần tử k. Hướng dẫn – Dời các phần tử từ vị trí k về sau một bước. – Nhập giá trị cần chèn vào vị trí k. Mã chương trình Program Mang_chen; uses crt; var M array[1..100] of integer; i,n,kinteger; begin clrscr; writeNhap ;readlnn; for i=1 to n do begin writeM[,i,’]=’; readlnM[i]; end; writeVi tri chen ;readlnk; for i=n+1 downto k+1 do M[i]=M[i-1]; writeNhap so can chen ; readlnM[k]; for i=1 to n+1 do writeM[i],’, ; readln end. Bài tập Viết chương trình cho phép nhập n số và cho biết số nhỏ nhất trong các số vừa nhập là số thứ mấy. dẫn Dùng biến n để lưu lượng số cần nhập. Dùng mảng để lưu các số vừa nhập. Cho Min = M[1], j = 1 Xem phần tử đầu tiên là bé nhất So sánh Min với n-1 số còn lại. Trong quá trình so sánh nếu Min > M[i] thì gán Min = M[i], j=i và tiếp tục so sánh . chương trình Program TIM_NHO_NHAT; uses crt; var n,i,nhonhatinteger; m array[1..100] of real; minreal; begin writeNhap n ; readlnn; for i=1 to n do begin writeM[,i,’]=’; readlnm[i]; end; min=m[1]; nhonhat=1; for i=2 to n do if m[i] 0 then delta_duong else if delta = 0 then delta_khong else delta_am; readln end. Nhận xét Chương trình con cho phép chia nhỏ công việc nhằm đơn giản hoá. Ngoài ra lập trình đòi hỏi kỹ năng lập trình theo người thực hiện một mô-đun riêng, sau đó thự hiện ghép nối để có chương trình hoàn chỉnh. Bài tập Viết chương trình cho phép nhập hai số vào hai biến, thực hiện đổi giá trị của hai biến cho nhau. Yêu cầu dùng chương trình con để thực hiện chức năng đổi giá trị. Hướng dẫn Mã chương trình Program CTC_1; uses crt; var a,b real; {—-CTC doi gia tri—-} Procedure swapvar x,yreal; var tamreal; begin tam=x; x=y; y=tam; end; {—–Ket thuc CTC—–} begin clrscr; writeNhap so a ;readlna; writeNhap so b ;readlnb; swapa,b; writeSau khi doi a =’,a31; writeSau khi doi b =’,b31; readln end. Nhận xét – Nếu bỏ từ var ở khai báo var x,yreal thì chương trình vẫn không báo lỗi nhưng chức năng đổi giá trị của hai biến không thực hiện được. Bài tập Viết chương trình tính giai thừa của số n Viết là n!. Với yêu cầu – Nếu người dùng nhập số n 0 do begin GT=GT*n; n=n-1; end; end; begin repeat clrscr; writeNhap so n ;readlnn; if n =0’;readln; end; until n>=0; Giai_Thuax,n; writelnGiai thua cua ,n,’la’,x; readln end. Bài tập Viết chương trình tính n! với yêu cầu sử dụng hàm để tính giai thừa. Hướng dẫn Mã chương trình Program Giai_thua_Ham; uses crt; var n longint; Function Giai_Thuanlongintlongint; Var GTLongint; begin GT=1; while n > 0 do begin GT=GT * n; n=n-1; end; Giai_thua=GT; end; begin clrscr; writeNhap n ; readlnn; writen,’!=’,Giai_thuan; readln end. Bài tập Viết chương trình cho phép thực hiện rút gọn phân số. Hướng dẫn – Tìm UCLN của tử số và mẫu số. – Chia tử và mẫu của phân số cho UCLN vừa tìm được. Mã chương trình Program Rut_gon_phan_so; uses crt; var tu,mauinteger; Function UCLNa,bintegerinteger; var r integer; begin r= a mod b; while r 0 do begin a= b; b= r; r=a mod b; end; UCLN=b; end; begin clrscr; writeNhap tu ; readlntu; writeNhap mau ; readlnmau; writeKet qua rut gon ,tu,’/’,mau,’=’,tu div UCLNtu,mau,’/’,mau div UCLNtu,mau; readln end. Bài tập Viết chương trình cho phép trộn hai dãy số A và B cùng có số phần tử là k để được dãy số C theo yêu cầu sau A = a1, a2 … ak B = b1, b2 … bk Được C = a1, b1, a2, b2 … ak, bk. Hướng dẫn Mã chương trình Program Tron_day; uses crt; type kieu_mang = array[1..100] of integer; var A, B, C Kieu_mang; n,i,j integer; Procedure Nhap_MangVar X Kieu_mang; nbyte; var iinteger; begin for i=1 to n do begin writeM[,i,’]=’;readlnX[i]; end; end; Procedure In_MangXkieu_mang; nbyte; var i byte; begin for i=1 to n do writex[i],’, ; end; {———–} begin clrscr; writeNhap so phan tu cua day ;readn; Nhap_mangA,n; Nhap_mangB,n; i=1; j=1; while iA[j] then swapA[i],A[j]; In_mangA,n; readln end. Bài tập Viết chương trình tính n! bằng kỹ thuật đệ qui. Hướng dẫn Nếu = 0 thì n! = 1 ngược lại n! = n*n-1! Mã chương trình Program Giai_thua_de_qui; uses crt; var n longint; function Giai_thuanlongintlongint; begin if n=0 then giai_thua=1 else Giai_thua=n*Giai_thuan-1; end; begin clrscr; writeNhap n ; readlnn; writen,’!=’,Giai_thuan; readln end. Nhận xét Dãy số fibonacy được định nghĩa F1 = 1; F2 = 1; Fn = Fn-1 + Fn-2. Dựa vào định nghĩa này ta có thể viết Fin để tính số hạng thứ n của dãy. Bài tập Viết chương trình cho phép tìm ước chung lớn nhất của hai số bằng kỹ thuật đệ qui. Hướng dẫn – Nếu a chia b dư 0 thì UCLNa,b=b ngược lại UCLNa,b=UCLNb, a mod b Mã chương trình Program UCLN_de_qui; uses crt; var a,b integer; Function UCLNa,bintegerinteger; begin if a mod b = 0 then UCLN=b else UCLN=UCLNb,a mod b; end; begin clrscr; writeNhap a ;readlna; writeNhap b ;readlnb; writeUCLN,a,’,’,b,’=’,UCLNa,b; readln end. VII. Dữ liệu kiểu xâu ký tự Bài Viết đoạn chương trình cho phép đọc một xâu ký tự và kiểm tra xâu này có đối xứng không. Ví dụ Xâu “abcddcba” là xâu đối xứng. Xâu “abcdabcd” không đối xứng. dẫn Mã chương trình Program xau_doi_xung; var ststring; doi_xung boolean; i,nbyte; begin writeNhap xau can kiem tra ; readlnst; doi_xung= true; n=lengthst; for i=1 to n div 2 do if st[i] st[n-i+1] then doi_xung=false; if doi_xung then writeXau doi xung’ else writeKhong doi xung’; readln end. Nhận xét – Dùng thêm biến n để chương trình rõ ràng, dễ theo dõi. Có thể thay n bằng lengthst; – Có thể thay for i=1 to n div 2 bằng for i=1 to n nhưng lúc đó chương trình phải xét n trường hợp thay vì chỉ cần xét n/2 trường hợp. – Thuật toán của bài này giống với thuật toán xét xem một số có phải là số nguyên tố không Thuật toán lính canh. Bài Viết chương trình cho phép viết hoa ký tự đầu từ trong một xâu. Ví dụ le nho duyet -> Le Nho Duyet Hướng dẫn Mã chương trình Program Doi_chu; uses crt; var st string; ibyte; begin clrscr; writeNhap xau can doi’; readlnst; for i= 1 to lengthst do if st[i]=’ then st[i+1]=upcasest[i+1]; st[1]=upcasest[1]; writest; readln end. Nhận xét Bài Viết chương trình xoá các dấu cách thừa trong một xâu ký tự Giữa hai từ chỉ có một dấu cách. Ví dụ Le nho Duyet -> Le Nho Duyet dẫn – Thực hiện lặp cho đến khi không tìm thấy hai ký tự trắng liên tiếp trong xâu Thay thế xâu hai ký tự trắng bằng xâu một ký tự trắng. Mã chương trình Program Xoa_trang; uses crt; var st string; nbyte; begin clrscr; writeNhap xau can chuan hoa ; readlnst; n= Pos ,st; while n0 do begin deletest,n,1; n=Pos ,st; end; writest; readln end. Nhận xét Không dùng biến n chương trình tuy khó theo dõi hơn nhưng đơn giản hơn nhiều Thay n= Pos ,st; while n0 do begin deletest,n,1; n=Pos ,st; end; Bằng while ,st 0 do deletest, Pos ,st,1 Bài Viết chương trình cho phép tách phần tên ra khỏi xâu gồm họ và tên. Theo qui ước cách ghi tên của Tiếng việt, tên là từ cuối cùng trong xâu. Ví dụ Le Nho Duyet -> Duyet. dẫn Mã chương trình Program Tach_Ten; uses crt; var st,ten string; vitri,dai,i byte; begin clrscr; writeNhap xau ; readlnst; for i=1 to lengthst do if st[i]=’ then vitri=i+1; writelnvitri; dai=lengthst – vitri + 1; ten=Copyst,vitri,dai; writeten; readln end. Nhận xét Chương trình trên sẽ chạy sau nếu xâu có ký tự trắng ở cuối xâu Lúc đó việc xác định vị trí của tên sẽ sai. Để khắc phục lỗi này ta cần thực hiện xoá ký tự trắng ở cuối xâu trước. Bài Viết chương trình cho phép dich xâu sang mã moocxo. dẫn Mã chương trình Program Mooc_xo; uses crt; var st,mooc string; i byte; begin writeNhap cau bach van ; readlnst; for i=1 to lengthst do case st[i] of a’ mooc=mooc + +’._’; b’ mooc=mooc + +’_.’; end; writemooc; readln end. Nhận xét – Đoạn chương trình chỉ mới mã hoá được hai ký tự a, b. Để có thể sử dụng cần khai báo cho các trường hợp còn lại. – Thực tế không cần phân biệt chữ hoa hay chữ thường nên ta qui về một kiểu. Để qui về kiểu chữ hoa ta dùng case upcasest[i] of thay cho case st[i] of… Bài Viết phần mềm cho phép mã hoá và giải mã một xâu ký tự theo ý riêng. Để mã hoá mỗi người dùng các khoá khác nhau. Ví dụ Khoá a = succa cho phép mã hoá xâu abc thành bcd. dẫn Mã chương trình Program Ma_hoa; uses crt; var st string; i byte; begin clrscr; writeNhap xau can ma hoa ;readlnst; for i= 1 to lengthst do st[i]=succst[i]; writeSau ma hoa ,st; readln; for i= 1 to lengthst do st[i]=predst[i]; writeSau giai ma ,st; readln; end. Nhận xét Để mã hoá theo khoá a ->b ta dùng hàm succ, và pred. Nếu khoá là a ->d lúc đó ta dùng đến các hàm cho biết mã ascii của ký tự ORD và ký tự có mã CHR . Bài Viết chương trình cho phép đổi một số hệ thập phân sang số nhị phân. dẫn Mã chương trình Program Doi_Ra_Nhi_Phan; uses crt; var st,st1 string; so longint;ibyte; begin clrscr; writeNhap so can doi ; readlnso; st=”; while so > 0 do begin strso mod 2,st1; st=st+st1; so=so div 2; end; for i=lengthst downto 1 do writest[i]; readln end. Nhận xétChúng ta hoàn toàn có thể thay strso mod 2,st1;bằng lệnh if so mod 2 = 1 then st=st+’1’ else st=st+’0’. Lúc này ta không phải dùng thêm biến phụ st1. Bài Viết chương trình rã chữ Khi cắt khẩu hiệu người ta thường có nhu cầu được biết mỗi ký tự xuất hiện bao nhiêu lần trong câu khẩu hiệu. Hãy viết chương trình thực hiện điều đó. Ví dụ nhập LE NHO DUYET Cho biết D 1; E 2… dẫn Mã chương trình Program Ra_chu; uses crt; var ststring; M array[A’..’Z’] of byte; chChar; ibyte; begin clrscr; writelnCHUONG TRINH RA CHU DE CAT KHAU HIEU’; writeNhap cau ;readlnst; for i=1 to lengthst do st[i]=upcasest[i]; for ch=’A’ to Z’ do M[ch]=0; for i=1 to lengthst do begin ch=st[i]; M[ch]= M[ch]+1; end; for ch=’A’ to Z’ do if M[ch]>0 then writech,’’,M[ch],’ ; readln end. Nhận xét Bài Khi cộng hai số có giá trị quá lớn ta không thể thực hiện được do gới hạn giá trị của biến. Bằng cách sử dụng xâu ký tự, ta có thể lập chương trình cộng hai số rất lớn 255 chữ số. Hãy viết chương trình này. dẫn Mã chương trình Program Cong_so_lon; uses crt; var so1, so2, tong, st1 string; nho, i, chuso1, chuso2, chusoc byte; minteger; Procedure Doi_chieuvar sostring; var ibyte; tam string; begin tam=”; for i=lengthso downto 1 do tam=tam+so[i]; so=tam; end; begin writeNhap so thu nhat ;readlnso1; writeNhap so thu hai ;readlnso2; doi_chieuso1; doi_chieuso2; {-Lam cho hai so co do dai giong nhau} if lengthso1>lengthso2 then for i=1 to lengthso1-lengthso2 do so2=so2 +’0′ else for i=1 to lengthso2-lengthso1 do so1=so1 +’0′; {–Bat dau cong———–} nho=0; for i=1 to lengthso1 do begin valso1[i],chuso1,m; valso2[i],chuso2,m; {Doi thanh so de cong} chusoc= chuso1+chuso2+nho mod 10; nho= chuso1+chuso2+nho div 10; strchusoc,st1; {Doi thanh ky tu de dua vao tong} tong=tong+st1 end; {Cong them nho cuoi cung} if nho>0 then begin strnho,st1; tong=tong+st1 end; {—————} doi_chieutong; writetong; readln end. Nhận xét Bài Viết chương trình cho phép ghi bằng chữ một số. Ví dụ đọc Một trăm hai mươi ba triệu, bốn trăm năm mươi sáu ngàn, bảy trăm tám mươi chín. Hướng dẫn Mã chương trình Program Doc_so; var nlongint; Function Dich_1sonbytestring; begin case n of 1 Dich_1so=’mot’; 2 Dich_1so=’hai’; 3 Dich_1so=’ba’; 4 Dich_1so=’bon’; 5 Dich_1so=’nam’; 6 Dich_1so=’sau’; 7 Dich_1so=’bay’; 8 Dich_1so=’tam’; 9 Dich_1so=’chin’; 0 Dich_1so=’khong’; end; end; Function Dich_3sonintegerstring; var Ket_qua string; begin Ket_qua=Dich_1son div 100 + tram ; n= n mod 100; Ket_qua=Ket_qua + Dich_1son div 10 +’ muoi ; n=n mod 10; Ket_qua=Ket_qua + Dich_1son; Dich_3so=Ket_qua; end; Function Dich_9sonlongintstring; var ket_qua string; begin ket_qua=”; if n div 1000000000 > 0 then ket_qua=dich_3son div 1000000000 +’ ty, ; n=n mod 1000000000; if n div 1000000 > 0 then ket_qua=ket_qua + dich_3son div 1000000+’ trieu, ; n=n mod 1000000; if n div 1000 > 0 then ket_qua=ket_qua + dich_3son div 1000+’ ngan, ; n=n mod 1000; ket_qua=ket_qua + dich_3son; Dich_9so=ket_qua; end; {———————-} begin writeNhap so n ; readlnn; writeDich_9son; readln end. Nhận xét Còn rất nhiều trường hợp riêng cần xử lý để đưa đoạn chương trình trên vào sử dụng trong thực tế. VIII. Dữ liệu kiểu record Bài tập Viết chương trình cho phép nhập và in ra một phân số với yêu cầu phân số được lưu trữ trong một biến record. Hướng dẫn – Khai báo biến Phan_so là một record. Phan_so = Record Tu Integer. MauInteger; End; Mã chương trình Program Phan_So_1; uses crt; var x record Tu Integer; Mau Integer; end; Begin clrscr; WriteNhap tu so ;readln WriteNhap mau so ; readln with x do begin WritePhan so vua nhap la’,Tu,’/’,Mau; end; readln end. Nhận xét Khi nhập và khi in phân số ta đã có hai cách truy cập thành phần của record Ở đây là tử và mầu khác nhau. Một truy cập trực tiếp, một thông qua lệnh with … do Bài tập Thực hiện với yêu cầu viết hai thủ tục nhập và in phân số. Hướng dẫn Mã chương trình Program Phan_So_2; uses crt; Type Phan_so = record Tu Integer; Mau Integer; end; var x Phan_so; Procedure Nhap_Phan_soVar aPhan_so; begin with a do begin WriteNhap tu so ;readlnTu; WriteNhap mau so ; readlnMau; end; end; {——————-} Procedure In_Phan_soaPhan_so; Begin with x do WritePhan so vua nhap la’,Tu,’/’,Mau; end; {——————-} begin clrscr; Nhap_Phan_sox; In_Phan_sox; Readln end. Nhận xét Ở ta khai báo một biến có kiểu record. Ở ta khai báo một kiểu Phan_so bằng lệnh Type rồi sau đó mới khai báo biến x có kiểu Phan_so. Bài tập Thực hiện với yêu cầu phân số được nhập dạng a/b. Hướng dẫn Mã chương trình Program Phan_So_2; uses crt; Type Phan_so = record Tu Integer; Mau Integer; end; var x Phan_so; Procedure Nhap_Phan_soVar aPhan_so; var st,st1string; n,minteger; begin writeNhap phan so a/b ;readlnst; n= Posst,’/’; with a do begin st1= copyst,1,n-1; valst1,tu,m; st1= copyst,n+1,lengthst-n; valst1,Mau,n; end; end; {——————-} Procedure In_Phan_soaPhan_so; Begin with x do WritePhan so vua nhap la’,Tu,’/’,Mau; end; {——————-} begin clrscr; Nhap_Phan_sox; In_Phan_sox; Readln end. Nhận xét Ở đây ta lại được một ứng dụng của kiểu string. Với việc dùng string làm bộ đệm việc nhập phân số dễ, gần với thực tế hơn. Tất nhiên, phải xủ lý nhiều mới được phân số cần nhập. Bài tập Thực hiện với yêu cầu sau khi nhập thực hiện rút gọn rối mới in phân số. Hướng dẫn Mã chương trình Program Phan_So_2; uses crt; Type Phan_so = record Tu Integer; Mau Integer; end; var x Phan_so; {———————-} Function UCLNa,bintegerinteger; begin if a mod b = 0 then UCLN=b else UCLN=UCLNb,a mod b; end; {———————-} Procedure Nhap_Phan_soVar aPhan_so; var st,st1string; n,minteger; begin repeat writeNhap phan so ;readlnst; n= Pos/’,st; until n>0; with a do begin st1= copyst,1,n-1; valst1,tu,m; st1= copyst,n+1,lengthst-n; valst1,Mau,n; end; end; {——————-} Procedure In_Phan_soaPhan_so; Begin if then write1 else with a do WriteTu,’/’,Mau; end; {——————-} Procedure Rut_Gon_Phan_sovar aPhan_so; var tam integer; begin tam=UCLN with a do begin Tu=Tu div tam; mau=Mau div tam; end; end; {——————–} begin clrscr; Nhap_Phan_sox; Rut_gon_phan_sox; writePhan so sau khi rut gon ; In_Phan_sox; Readln Nhận xét Bài tập Viết chương trình cho phép cộng hai phân số với yêu cầu Mỗi phân số được lưu trong một biến kiểu record. Hướng dẫn Mã chương trình Program Phan_So_2; uses crt; Type Phan_so = record Tu Integer; Mau Integer; end; var x,y,z Phan_so; {———————-} Function UCLNa,bintegerinteger; begin if a mod b = 0 then UCLN=b else UCLN=UCLNb,a mod b; end; {———————-} Procedure Nhap_Phan_soVar aPhan_so; var st,st1string; n,minteger; begin repeat writeNhap phan so ;readlnst; n= Pos/’,st; until n>0; with a do begin st1= copyst,1,n-1; valst1,tu,m; st1= copyst,n+1,lengthst-n; valst1,Mau,n; end; end; {——————-} Procedure In_Phan_soaPhan_so; Begin if then write1 else with a do WriteTu,’/’,Mau; end; {——————-} Procedure Rut_Gon_Phan_sovar aPhan_so; var tam integer; begin tam=UCLN with a do begin Tu=Tu div tam; mau=Mau div tam; end; end; {——————–} Procedure Cong_Phan_soa,bPhan_so; Var cPhan_so; begin with c do begin Tu= + Mau= * end; Rut_gon_phan_soc; end; {——————–} begin clrscr; Nhap_Phan_sox; Nhap_Phan_soy; Cong_phan_sox,y,z; In_Phan_soz; Readln end. Nhận xét Bài tập Viết chương trình cho phép nhập danh sách học viên. Sau khi nhập một học viên chương trình yêu cầu trả lời có nhập tiếp Y/N. Ấn Y để tiếp tục nhập, ấn N để thôi nhập. Hồ sơ mỗi học viên được quản lý như sau Hoso = record Holot string[20]; Ten string[10]; Gioitinhboolean; Ngaysinh string[10]; SDD longint; Donvi string[15]; end; 0 Hướng dẫn Mã chương trình Program Nhan_su; uses crt; type Hoso = record Holot string[20]; Ten string[10]; Gioitinhboolean; Ngaysinh string[10]; SDD longint; Donvi string[15]; end; var danhsach array[1..100] of Hoso; nhapChar; gt string; ibyte; Begin nhap=’Y’; i=0; while nhap=’Y’ do begin clrscr; window10,10,60,40; writeln—— NHAP HO SO NHAN SU——-; writeln; i=i+1; writelnNhap ho so nguoi thu ,i,’’; writeHo lot’;readlndanhsach[i].Holot; writeTen’;readlndanhsach[i].Ten; writeGioi tinh Nam/Nu’;readlngt; if gt = Nu’ then danhsach[i].Gioitinh= true; writeNgay sinh’;readlndanhsach[i].Ngaysinh; writeSo dien thoai’;readlndanhsach[i].SDD; writeDon vi’;readlndanhsach[i].Donvi; writeNhap tiep Y/N’;readlnnhap; nhap=upcasenhap; end; end. Nhận xét Bài tập Viết chương trình cho phép nhập và in danh sách danh sách nữ của lớp với yêu cầu Sử dụng chương trình con nhập danh sách và chương trình con in một hồ sơ. Hướng dẫn Mã chương trình Program Nhan_su; uses crt; type Hoso = record Holot string[20]; Ten string[10]; Gioitinhboolean; Ngaysinh string[10]; SDD longint; Donvi string[15]; end; Type danhsach = array[1..100] of Hoso; Var ds danhsach; iinteger; Procedure Nhap_ho_soVar dsdanhsach; var nhapChar; ibyte; gt string; begin nhap=’Y’; i=0; while nhap=’Y’ do begin clrscr; writeln—— NHAP HO SO NHAN SU——-; writeln; i=i+1; writelnNhap ho so nguoi thu ,i,’’; writeHo lot’;readlnds[i].Holot; writeTen’;readlnds[i].Ten; writeGioi tinh Nam/Nu’;readlngt; if gt = Nu’ then ds[i].gioitinh= true; writeNgay sinh’;readlnds[i].ngaysinh; writeSo dien thoai’;readlnds[i].SDD; writeDon vi’;readlnds[i].Donvi; writeNhap tiep Y/N ;readlnnhap; nhap=upcasenhap; end; end; Procedure In_ho_soHVienHoso; begin with Hvien do writeln’,Holot20,Ten10,’’,Ngaysinh10,’’,SDD10,’’,Donvi20,’’; end; begin nhap_ho_sods; writelnDANH SACH HOC VIEN NU’; writeln; i=1; while ds[i].holot” do begin if ds[i].gioitinh then in_ho_sods[i]; i=i+1; end; readln end. Nhận xét Bài tập Phát triển thêm chức năng sắp xếp Theo tên để chương trình cho phép nhập, sắp xếp, in danh sách. Hướng dẫn Mã chương trình Nhận xét Bài tập Hướng dẫn Mã chương trình Nhận xét Bài tập Hướng dẫn Mã chương trình Nhận xét Dữ liệu kiểu tệp Bài tập Viết chương trình cho phép ghi các số lẻ xuống đĩa với tên sau đó đọc và xuất ra màn hình nội dung file này. Hướng dẫn – Thủ tục chuẩn bị ghi file xuống đĩa assign, rewrite. – Kiểm tra nếu là số lẻ if i mod 2 = 1 thì ghi xuống đĩa. – Thủ tục chuẩn bị đọc file từ đĩa assign, reset. – Đọc và in nội dung. – Đóng file. Mã chương trình Program File_So_le; uses crt; var sole file of integer; i,n,sointeger; begin writeNhap n ;readlnn; { Thu tuc chuan bi ghi xuong dia} assignsole,’ rewriteSole; {Thuc hien ghi cac so le xuong file sole = } for i= 1 to n do if i mod 2 = 1 then writesole,i; closesole; writelnDa ghi xuong file readln; {Thu tuc chuan bi doc duw lieu tu file tren dia} assignsole,’ resetsole; {Thuc hien do va in ra man hinh} while not eofsole do begin readsole,so; writeso,’, ; end; closesole; readln end. Nhận xét Bài tập Viết chương trình tìm các số nguyên tố nhỏ hơn hoặc bằng n nhập từ bàn phím và ghi các số này xuống đĩa. Hướng dẫn – Hàm nguyen_to để kiểm tra một số a có phải là số nguyên tố không. – Thực hiện như thay if i mod 2 = 1 bằng nguyen_ton Mã chương trình Program File_Nguyen_to; uses crt; var nguyento file of integer; i,n,sointeger; {——————–} Function nguyen_toaintegerboolean; var i integer; begin nguyen_to=true; for i=2 to a-1 do if a mod i = 0 then nguyen_to=false; end; {——————–} begin writeNhap n ;readlnn; assignnguyento,’ rewritenguyento; for i= 2 to n do if nguyen_toi then writenguyento,i; closenguyento; writelnDa ghi xuong file readln; assignnguyento,’ resetnguyento; while not eofnguyento do begin readnguyento,so; writeso,’, ; end; readln end. Nhận xét Bài tập Viết chương trình thực hiện việc cấp số xe mô tô với yêu cầu – Cấp số ngẫu nhiên có 4 chữ số. – Số đã cấp được lưu lại trên đĩa để quản lý. Hướng dẫn – Dùng hàm random để tạo số ngẫu nhiên. – Lưu số vừa cấp thêm vào file Mã chương trình Nhận xét Bài tập – Đọc file để xét xem số vừa tạo có trong file này không. Nếu đã có thì quay lại tạo số ngẫu nhiên khác. Lặp cho đến khi tạo được số không có trong file này chưa cấp thì cấp số này. Hướng dẫn Mã chương trình Nhận xét Bài tập Hướng dẫn Mã chương trình Nhận xét Bài tập Hướng dẫn Mã chương trình Nhận xét Bài tập Hướng dẫn Mã chương trình Nhận xét Bài tập Hướng dẫn Mã chương trình Nhận xét Bài tập Hướng dẫn Mã chương trình Nhận xét Bài tập Hướng dẫn Mã chương trình Nhận xét Đồ hoạ và âm thanh Có 1 phần mềm liên quan tới "tài liệu học Pascal lớp 8" được tìm thấy. Trang1 Các phần mềm được tổng hợp dựa theo từ khoá "tài liệu học Pascal lớp 8". Nếu muốn tìm phần mềm khác bạn có thể sử dụng công cụ tìm kiếm phía trên để tìm thêm các phần mềm khác theo đúng ý của mình. Thủ thuật khácTổng hợp bài tập lớp 8 môn Toán, tiếng Anh, Văn mẫu, PascalTổng hợp bài tập lớp 8 môn Toán, tiếng Anh, Văn mẫu, Pascal là những tài liệu được tổng hợp nhằm giúp cho học sinh lớp 8 có thể ôn tập lại một sốGiải Hóa học 8Giải Hóa học 8 là một trong số những tài liệu hỗ trợ quá trình giải bài tập môn hóa học dành cho các bạn học sinh lớp 8. Tài liệu giải hóa học 8 này với đầy đủ những nội dung kiến thức, các bài giải ngắn gọn và bám sát với nội dung chương trình sách giáo khoa hóa học 8, đảm bải hỗ trợ các bạn học sinh ôn luyện và củng cố kiến thức hóa học 8 một cách dễ dàng và hiệu quả nhất. Mời các bạn cùng thầy cô hãy cùng tham khảo tài liệu giải bài tập hóa học 8 được chúng tôi cập nhật chi tiết dưới trong PascalVề cơ bản lớp trong Pascal được định nghĩa gần giống như đối tượng trong Pascal. Để tìm hiểu sâu hơn về lớp trong Pascal, bạn đọc cùng tham khảo bài viết dưới đây của Vật lý 8Giải Vật lý 8 là tài liệu hữu ích dành cho các em học sinh lớp 8 có thể tham khảo cũng như ứng dụng cho việc giải bài tập vật lý hiệu quả nhất nhất. Tài liệu Giải Vật lý 8 giúp các em học sinh ôn tập được những kiến thức cốt lõi trong chương trình Vật lí lớp 8 cùng với những hướng dẫn giải bài tập cụ thể trong sgk vật lí 8 một cách dễ hiểu và chi tiết nhất. Các bạn hãy cùng tham khảo chi tiết tài liệu giải vật lý 8 được chúng tôi cập nhật chi tiết dưới hợp soạn văn lớp 8, bài giảng môn văn 8 hay nhấtSoạn văn lớp 8 là một trong số những bộ tài liệu hữu ích môn ngữ văn dành cho các em học sinh lớp 8 có thể dễ dàng soạn bài cũng như ôn luyện và củngKiểu tập hợp trong PascalBài viết trước đã giới thiệu và cung cấp cho bạn các thông tin về kiểu dữ liệu Boolean trong Pascal. Để nối tiếp chuỗi chủ đề về Pascal, bài viết dưới đây sẽ giới thiệu tiếp cho bạn về kiểu tập hợp trong Pascal Top download Unikey Internet Download Manager Zalo Google Chrome Skype Minecraft SnapTik CCleaner Cốc Cốc Cheat Engine PUBG Mobile Mini World UltraView ProShow Producer BlueStacks Thủ thuật Gmail 10p là gì? cách tạo và sử dụngGmail 10p hay địa chỉ email 10p đang là giải pháp của nhiều người khi cần đến một địa chỉ email sử dụng một lần để đăng ký tài khoản mới, nhận mã, tin nhắn xác thực và nhiều tác vụ khác. Trong bài viết này, sẽ cùng bạn tìm hiểu Gmail 10p là gì cũng như cách tạo và sử dụng dịch vụ email một lần đầy tiện lợi bộ code Anime Racing Clicker nhận Shuriken tăng tốc và kinh nghiệm tướng miễn phíBạn đam mê tốc độ nhưng cũng cũng là tín đồ truyện tranh, Anime Racing Clicker trên nền tảng Roblox sẽ giúp bạn thỏa mãn cả hai niềm đam mê đó. Với bộ code Anime Racing Clicker mới nhất, các game thủ có thể tăng tốc độ cho nhân vật và cho những người chơi khác "hít khói" chỉ trong nháy nạp Kim Cương Free Fire, mua kim cương FF an toàn chiết khấu caoĐể sở hữu những bộ trang phục đắt tiền và skin súng cực ngầu thì bạn có thể nạp Kim Cương Free Fire mua chúng hoặc tham gia sự kiện nạp thẻ Free Fire nhận KC miễn phí được NPH Garena tổ chức vào những dịp đặc khắc phục Macbook bị lỗi Card màn hình VGA đơn giản nhấtLỗi card đồ họa tuy không phải là sự cố xảy ra phổ biến trên các dòng MacBook nhưng lại gây khá nhiều sự phiền toái khi người dùng gặp phải khiến màn hình bị lỗi kẻ sọc, mờ,... . Nếu bạn đang gặp phải sự cố tương tự, hãy đọc bài viết được chia sẻ dưới đây để tham khảo một số cách khắc phục Macbook bị lỗi card màn hình VGA nhanh chóng, hiệu quả nhất 5 mini game trong Minecraft hay, phổ biến nhất trong Minecraft MarketplaceMinecraft là tựa game thế giới mở cực kỳ nổi tiếng cùng lượng người chơi đông đảo trên toàn thế giới. Với khả năng sáng tạo không giới hạn, game thủ Minecraft đã sáng tạo ra các trò chơi, mini game cực kỳ hấp dẫn để mang đến trải nghiệm hoàn toàn mới trong Minecraft. Trong bài viết này, sẽ giới thiệu loạt trò chơi Minecraft hay và lôi cuốn nhất mà có thể bạn chưa Count là gì? các cách sử dụng Word CountNếu bạn phải viết một bài tiểu luận có giới hạn về số từ thì Word Count là một công cụ không thể thiếu. Vậy Word Count là gì? cách sử dụng Word Count để đếm số từ, đếm chữ trong Word thế nào? Cùng tìm hiểu câu trả lời trong bài viết dưới đây nhé!Cách sửa lỗi Bluetooth trên Macbook không kết nối được đơn giản nhấtHiện nay, có nhiều báo cáo từ người dùng Macbook phản ánh rằng thiết bị của họ gặp vấn đề về Bluetooth mà không rõ nguyên nhân. Nếu như thiết bị của bạn cũng đang gặp vấn đề này, hãy tham khảo cách sửa lỗi Bluetooth trên Macbook dưới đây cắt tóc tháng 8/2023, chọn ngày tốt tỉa tóc đón may mắn, tài lộcNhiều người cho rằng chọn ngày tốt, giờ đẹp khi cắt tóc sẽ thu hút vận may, kéo tài lộc về nhà. Để trả lời cho câu hỏi lịch cắt tóc tháng 8/2023 ngày nào tốt nhất, các bạn hãy cùng Taimienphi đi tìm câu trả lời ở bài viết dưới đây nhé!Cách tải video Capcut không logoCapcut là ứng dụng chỉnh sửa video cực ''hot'' hiện nay với hàng loạt video Capcut đặc sắc cùng những bài nhạc bắt tai, hấp dẫn. Tuy nhiên, ứng dụng này sẽ tự động thêm phần kết có chứa logo Capcut vào cuối mỗi video. Dưới đây là cách tải video Capcut không logo, giúp bạn loại bỏ watermark Capcut mỗi khi muốn lưu trữ video phục vụ mục đích cá cắt tóc tháng 6/2023, nên hớt, tỉa tóc vào ngày nào?Có thể bạn chưa biết, phong thủy chỉ ra rằng, việc chọn ngày tốt cắt tóc sẽ mang đến vận may, tài lộc. Vậy lịch cắt tóc tháng 6/2023 ngày nào là tốt nhất? Bài viết dưới đây sẽ giúp bạn giải đáp thắc mắc đó. Tài liệu tham khảo môn Tin học lớp 8Một số bài tập Pascal lớp 8Trong 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 bài tập Pascal cơ bảnMột số bài tập Pascal nâng caoI. Bài tập thực hành ôn tập PascalCác em hãy gõ chương trình sau vào Turbo Pascal để chạy và tìm lỗiprogram Tinh_Chu_Vi_Dien_Tich_HVvar a,s,clongint;beginwriteNhap vao do dai canh hinh vuong ’reada;if a>0 thenbeginc=4*a;s=a*a;writelnChu vi hinh vuong co canh dai ’ ,a, la ’,c;writelnDien tich hinh vuong co canh dai ’ ,a, la ’,sendelsewriteDu lieu sai, khong the thuc hien duoc! ’; 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 tập 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ẫnNhập hai cạnh vào hai biến a, vi hình chữ nhật bằng 2*a+b; Diện tích hình chữ nhật bằng a* Mã chương trìnhProgram Chu_nhat;uses crt;Var a, b, S, CV real;BeginWrite'Nhap chieu dai'; readlna;Write'Nhap chieu rong'; readlnb;S = a*b;CV = a+b*2;Writeln'Dien tich hinh chu nhat la',S;Writeln'Chu vi hinh chu nhat la',CV102; 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 tập 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ẫnNhập cạnh vào biến vi hình vuông bằng 4*canh; Diện tích hình vuông bằng canh* Mã chương trìnhProgram HINH_VUONG;uses crt;Var canh real;Beginclrscr;Write'Nhap do dai canh';readlncanh;Writeln'Chu vi hinh vuong la',4*canh102;Writeln'Dien tich hinh vuong la',canh*canh102; Nhận xét Bài tập 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 tập 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ẫnNhập bán kính vào biến vi đường tròn bằng 2** tích hình tròn bằng *r* Mã chương trìnhProgram HINH_TRON;uses crt;Var r real;Beginclrscr;Write'Nhap ban kinh'; readlnr;Writeln'Chu vi duong tron la',2*pi*r102;Writeln'Dien tich hinh tron la',pi*r*r102; 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 tập 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íma. Hướng dẫnNhập ba cạnh của tam giác vào ba biến a, b, chu vi của tam giác p = a+b+c/ Mã chương trìnhProgram TAM_GIAC;uses crt;Var a,b,c,p,S real;Beginclrscr;Write'Nhap canh a';readlna;Write'Nhap canh b';readlnb;Write'Nhap canh c';readlnc;p=a+b+c/2;S= sqrtp*p-a*p-b*p-c;Write'Dien tich tam giac la',s102; 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 tập Viết chương trình cho phép tính trung bình cộng của bốn Hướng dẫnNhập bốn số vào bốn biến a, b, c, dTrung bình cộng của a, b, c, d bằng a + b + c + d/ Mã chương trìnhProgram TB_Cong_4_So;uses crt;Var a, b, c, d real;BeginClrscr;Write'Nhap so thu nhat';readlna;Write'Nhap so thu hai';readlnb;Write'Nhap so thu ba';readlnc;Write'Nhap so thu tu';readlnd;Writeln'Trung binh cong ',a+b+c+d/4102; tập 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 Hướng dẫnDùng một biến S có giá trị ban đầu bằng một biến để nhập khi nhập một số cộng ngay vào biến Mã chương trìnhProgram TB_Cong_4_So;uses crt;Var s,a real;BeginClrscr;S=0;Write'Nhap so thu nhat';readlna; S=S+a;Write'Nhap so thu hai';readlna; S= S+a;Write'Nhap so thu ba';readlna; S=S+a;Write'Nhap so thu tu';readlna; S=S+a;Writeln'Trung binh cong ',S/4102; 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 tập 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 Hướng dẫnDùng một biến S có giá trị ban đầu bằng một biến để nhập khi nhập một số nhân ngay vào biến 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ìnhProgram TB_nhan;uses crt;Var a, S real;Beginclrscr;S=1;Write'Nhap so thu nhat '; readlna; S=S*a;Write'Nhap so thu hai '; readlna; S=S*a;Write'Nhap so thu ba '; readlna; S=S*a;Write'Nhap so thu tu '; readlna; S=S*a;Write'Trung binh nhan cua bon so la',sqrtsqrts; 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à tập Viết chương trình nhập hai số, đổi giá trị hai số rồi in ra hai Hướng dẫnDù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 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ìnhProgram Doi_Gia_Tri;uses crt;var a, b, tamreal;Beginclrscr;write'nhap a '; readlna;write'nhap b '; readlnb;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; 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 Bài tập luyện PascalCâ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 Phần quan trọng nhất không thể thiếu được là phần thân chương 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ả 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ử Khác nhauBiếnHằng- Giá trị của biến có thể thay đổi trong suốt quá trình thực hiện chương Có thể nhập hay gán giá trị khác vào cho Giá trị của hằng không thể thay đổi trong suốt quá trình thực hiện chương Không thể nhập hay gán giá trị khác vào cho 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 Để 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 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 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 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 then ;- Trong đó If, then là từ khóa. 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 Begin và 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ỏ 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 thenelse;- Trong đó If, then là từ khóa. 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 Begin và 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 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 Begin và 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ị 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à x và y có giá trị tăng tả thuật toán- Bước 1 Nhập x, Bước 2 Nếu xb 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; 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;BeginClrscr;Write Hay nhap N ’;Readln N;T= 0For i=1 to N do T=T+i;Writeln Tong cua N so tu nhin dau tien la ’, N;Readln; 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;BeginClrscr;Write Hay nhap N ’;Readln N;Giai thua =1For i=1 to N do Giai thua= Giai thua*I;Writeln Tich la ’, Giai thua;Readln; 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;BeginClrscr;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; 16 Viết chương trình tính tổng sau, biết n nhập từ bàn phímS= 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 }BeginClrscr;Write' Hay nhap N ';readlnN;S = 0;for i = 1 to n doS = S + 1/i;Writeln' Tong la ', S28; 17 Viết chương trình tính tổng sau, biết rằng n nhập từ bàn phímS= 1/2+2/3+3/4+..+n/n+1Program 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 }BeginClrscr;Write' Hay nhap N ';readlnN;S = 0;for i = 1 to n doS = S + i/i+1;Writeln' Tong la ', S28; 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;BeginClrscr;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 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. CÁC THUẬT TOÁN VỀ SỐ THUẬT TOÁN KIỂM TRA SỐ NGUYÊN TỐ Thuật toán của ta dựa trên ý tưởng nếu n >1 không chia hết cho số nguyên nào trong tất cả các số từ 2 đến thì n là số nguyên tố. Do đó ta sẽ kiểm tra tất cả các số nguyên từ 2 đến có roundsqrtn, nếu n không chia hết cho số nào trong đó thì n là số nguyên tố. Nếu thấy biểu thức roundsqrtn khó viết thì ta có thể kiểm tra từ 2 đến n div 2. Hàm kiểm tra nguyên tố nhận vào một số nguyên n và trả lại kết quả là true đúng nếu n là nguyên tố và trả lại false nếu n không là số nguyên tố. function ngtonintegerboolean; var iinteger; begin ngto=false; if n thoát luôn} ngto=true; end; Chú ý Dựa trên hàm kiểm tra nguyên tố, ta có thể tìm các số nguyên tố từ 1 đến n bằng cách cho i chạy từ 1 đến n và gọi hàm kiểm tra nguyên tố với từng giá trị i. THUẬT TOÁN TÍNH TỔNG CÁC CHỮ SỐ CỦA MỘT SỐ NGUYÊN Ý tưởng là ta chia số đó cho 10 lấy dư mod thì được chữ số hàng đơn vị, và lấy số đó div 10 thì sẽ được phần còn lại. Do đó sẽ chia liên tục cho đến khi không chia được nữa số đó bằng 0, mỗi lần chia thì được một chữ số và ta cộng dồn chữ số đó vào tổng. Hàm tính tổng chữ số nhận vào 1 số nguyên n và trả lại kết quả là tổng các chữ số của nó function tongcsninteger integer; var s integer; begin s = 0; while n 0 do begin s = s + n mod 10; n = n div 10; end; tongcs = s; end; Chú ý Tính tích các chữ số cũng tương tự, chỉ cần chú ý ban đầu gán s là 1 và thực hiện phép nhân s với n mod 10. THUẬT TOÁN EUCLIDE TÍNH UCLN Ý tưởng của thuật toán Euclide là UCLN của 2 số a,b cũng là UCLN của 2 số b và a mod b, vậy ta sẽ đổi a là b, b là a mod b cho đến khi b bằng 0. Khi đó UCLN là a. Hàm UCLN nhận vào 2 số nguyên a,b và trả lại kết quả là UCLN của 2 số đó. function UCLNa,b integer integer; var r integer; begin while b0 do begin r = a mod b; a = b; b = r; end; UCLN = a; end; Chú ý Dựa trên thuật toán tính UCLN ta có thể kiểm tra được 2 số nguyên tố cùng nhau hay không. Ngoài ra cũng có thể dùng để tối giản phân số bằng cách chia cả tử và mẫu cho UCLN. THUẬT TOÁN TÍNH TỔNG CÁC ƯỚC SỐ CỦA MỘT SỐ NGUYÊN Để tính tổng các ước số của số n, ta cho i chạy từ 1 đến n div 2, nếu n chia hết cho số nào thì ta cộng số đó vào tổng. Chú ý cách tính này chưa xét n cũng là ước số của n. function tongusn integer integer; var i,s integer; begin s = 0; for i = 1 to n div 2 do if n mod i = 0 then s = s + i; tongus = s; end; Chú ý Dựa trên thuật toán tính tổng ước số, ta có thể kiểm tra được 1 số nguyên có là số hoàn thiện không số nguyên gọi là số hoàn thiện nếu nó bằng tổng các ước số của nó. CÁC THUẬT TOÁN VỀ VÒNG LẶP THUẬT TOÁN TÍNH GIAI THỪA MỘT SỐ NGUYÊN Giai thừa n! là tích các số từ 1 đến n. Vậy hàm giai thừa viết như sau function giaithuan integer longint; var i integer; s longint; begin s = 1; for i = 2 to n do s = s * i; giaithua = s; end; THUẬT TOÁN TÍNH HÀM MŨ Trong Pascal ta có thể tính ab bằng công thức expb*lna. Tuy nhiên nếu a không phải là số dương thì không thể áp dụng được. Ta có thể tính hàm mũ an bằng công thức lặp như sau function hammua real; n integer real; var s real; i integer; begin s = 1; for i = 1 to n do s = s * a; hammu = s; end; THUẬT TOÁN TÍNH CÔNG THỨC CHUỖI Thuật toán tính hàm ex Đặt và , ta được công thức truy hồi Khi đó, ta có thể tính công thức chuỗi trên như sau function expnx real; n integer real; var s,r real; i integer; begin s = 1; r = 1; for i = 1 to n do begin r = r * x / i; s = s + r; end; expn = s; end; CÁC BÀI TẬP VỀ MẢNG 1 CHIỀU VÀ 2 CHIỀU BÀI TẬP 1 Nhập vào một số n 5 a[j] then begin tg = a[i]; a[i] = a[j]; a[j] = tg; end; writeln'DAY SAU KHI SAP XEP TANG DAN'; for i = 1 to n do writelna[i]; end; Chương trình chính lần lượt gọi từng thủ tục BEGIN nhap; inngto; tinhuc; tong; sxep; END. BÀI TẬP 2 Tìm phần tử nhỏ nhất, lớn nhất của một mảng cần chỉ ra cả vị trí của phần tử. HƯỚNG DẪN Giả sử phần tử min cần tìm là phần tử k. Ban đầu ta cho k=1. Sau đó cho i chạy từ 2 đến n, nếu a[k] > a[i] thì rõ ràng a[i] bé hơn, ta gán k bằng i. Sau khi duyệt toàn bộ dãy thì k sẽ là chỉ số của phần tử min. Cách tìm min này đơn giản vì từ vị trí ta cũng suy ra được giá trị. procedure timmin; var i, k integer; begin k = 1; for i = 2 to n do if a[k] > a[i] then k = i; writeln'Phan tu nho nhat la a[',k,']=',a[k]; end; Tìm max cũng tương tự, chỉ thay dấu so sánh. procedure timmax; var i, k integer; begin k = 1; for i = 2 to n do if a[k] a[i,j] then begin {so sánh tìm min} i1 = i; j1 = j; {ghi nhận vị trí min mới} end; if a[i2,j2] a[k,vt] then vt = i; {các phần tử dòng k có dạng a[k,i]} tg = a[k,1]; a[k,1] = a[k,vt]; a[k,vt] = tg; end; Ví dụ 3. Sắp xếp giảm dần cột thứ k. procedure sapxepk integer; var i,j,tg integer; begin for i = 1 to m-1 do {mỗi cột có m phần tử, vì bảng có m dòng} for j = i+1 to m do if a[i,k] > a[j,k] then begin {các phần tử cột k có dạng a[i,k]} tg = a[i,k]; a[i,k] = a[j,k]; a[j,k] = tg; end; end; BÀI TẬP 3 Tìm các phần tử thoả mãn 1 tính chất gì đó. HƯỚNG DẪN Nếu tính chất cần thoả mãn là cần kiểm tra phức tạp chẳng hạn nguyên tố, hoàn thiện, có tổng chữ số bằng 1 giá trị cho trước thì ta nên viết một hàm để kiểm tra 1 phần tử có tính chất đó không. Còn tính chất cần kiểm tra đơn giản chẵn / lẻ, dương / âm, chia hết, chính phương thì không cần. Sau đó ta duyệt qua các phần tử từ đầu đến cuối, phần tử nào thoả mãn tính chất đó thì in ra. Ví dụ 1. In ra các số chính phương của một mảng Để kiểm tra n có chính phương không, ta lấy căn n, làm tròn rồi bình phương và so sánh với n. Nếu biểu thức sqrroundsqrtn = n là true thì n là chính phương. Vậy để in các phần tử chính phương ta viết for i = 1 to n do begin if sqrroundsqrta[i] = a[i] then writelna[i]; Ví dụ 2. In ra các số hoàn thiện từ 1 đến n Để kiểm tra số có hoàn thiện ta dùng hàm tổng ước đã có ở phần đầu. for i = 1 to n do begin if tongusi = i then writelni; Ví dụ 3. In ra các phần tử của mảng chia 3 dư 1, chia 7 dư 2 for i = 1 to n do begin if a[i] mod 3=1 and a[i] mod 7=2 then writelna[i]; Ví dụ 4. In ra các số có 3 chữ số, tổng chữ số bằng 20, chia 7 dư 2. Ta dùng hàm tổng chữ số đã có ở trên for i = 100 to 999 do begin {duyệt qua mọi số có 3 chữ số} if tongcsi=20 and i mod 7=2 then writelni; Chú ý Nếu áp dụng với mảng 2 chiều thì cũng tương tự, chỉ khác là để duyệt qua mọi phần tử của mảng 2 chiều thì ta phải dùng 2 vòng for. Ví dụ, để in các phần tử nguyên tố của 1 mảng 2 chiều for i = 1 to m do begin for j = 1 to n do begin if ngtoa[i,j] then writelna[i,j]; BÀI TẬP 4 Nhập và in mảng 2 chiều dạng ma trận m dòng, n cột. HƯỚNG DẪN Để nhập các phần tử của mảng 2 chiều dạng ma trận, ta cần dùng các lệnh sau của unit CRT nhớ phải có khai báo user crt ở đầu chương trình. GotoXYa,b di chuyển con trỏ màn hình đến vị trí a,b trên màn hình cột a, dòng b. Màn hình có 80 cột và 25 dòng. whereX hàm cho giá trị là vị trí cột của con trỏ màn hình. whereY hàm cho giá trị là vị trí dòng của con trỏ màn hình. Khi nhập 1 phần tử ta dùng lệnh readln nên con trỏ màn hình sẽ xuống dòng, do đó cần quay lại dòng của bằng lệnh GotoXYj * 10, whereY -1 , nếu ta muốn mỗi phần tử của ma trận ứng với 10 cột màn hình. procedure nhap; var i,j integer; begin clrscr; write'Nhap m,n = '; readlnm,n; for i = 1 to m do begin for j = 1 to n do begin write'A[',i,',',j,']='; readlna[i,j]; {nhập xong thì xuống dòng} gotoXYj*10,whereY-1; {di chuyển về dòng trước, vị trí tiếp theo} end; writeln; {nhập xong 1 hàng thì xuống dòng} end; end; Để in bảng dạng ma trận thì đơn giản hơn, với mỗi dòng ta sẽ in các phần tử trên 1 hàng rồi xuống dòng procedure inbang; var i,j integer; begin for i = 1 to m do begin {viết các phần tử của hàng i } for j = 1 to n do writea[i,j]6; {mỗi phần tử chiếm 6 ô để căn phải cho thẳng cột và không sít nhau} writeln; {hết 1 hàng thì xuống dòng} end; end; CÁC BÀI TẬP VỀ XÂU KÍ TỰ BÀI TẬP 1 Nhập vào một xâu s khác rỗng và thực hiện chuẩn hoá xâu, tức là Xoá các dấu cách thừa Chuyển những kí tự đầu từ thành chữ hoa, những kí tự khác thành chữ thường. HƯỚNG DẪN Chương trình như sau var s string; procedure chuanhoavar s string; {s là tham biến để có thể thay đổi trong chương trình con} var i integer; begin while s[1]=' ' do deletes,1,1; {xoá các kí tự cách thừa ở đầu xâu} while s[lengths]=' ' do deletes,lengths,1; {xoá các kí tự cách thừa ở cuối xâu} {xoá các kí tự cách thừa ở giữa các từ nếu s[i-1] là cách thì s[i] là dấu cách là thừa. Phải dùng vòng lặp for downto vì nếu trong quá trình xoá ta làm giảm chiều dài của xâu, nếu for to sẽ không dừng được.} for i = lengths downto 2 do if s[i]=' ' and s[i-1]=' ' then deletes,i,1; {Chuyển kí tự đầu xâu thành chữ hoa} s[1] = Upcases[1]; for i = 2 to lengths do if s[i-1]=' ' then s[i] = Upcases[i] {Chuyển s[i] là kí tự đầu từ thành chữ hoa.} else if s[i] in ['A'..'Z'] then {s[i] là kí tự chữ hoa không ở đầu một từ} s[i] = chrords[i] + 32; {thì phải chuyển thành chữ thường} end; BEGIN write'Nhap vao 1 xau s'; readlns; chuanhoas; writeln'Xau s sau khi chuan hoa',s; readln; END. BÀI TẬP 2 Nhập vào một xâu x khác rỗng và thông báo xâu đó có phải là xâu đối xứng hay không? HƯỚNG DẪN Xâu đối xứng nếu nó bằng chính xâu đảo của nó. Vậy cách đơn giản nhất là ta sẽ xây dựng xâu đảo của x và kiểm tra xem nó có bằng x không. Để xây dựng xâu đảo của x, cách đơn giản nhất là cộng các kí tự của x theo thứ tự ngược từ cuối về đầu. Chương trình var x string; ************************************************ function doixungx string boolean; {hàm kiểm tra xâu đối xứng} var y string; i integer; begin y = ''; {xây dựng y là xâu đảo của x, bằng cách cộng dần các kí tự của x vào y theo thứ tự ngược} for i = lengthx downto 1 do y = y + x[i]; {so sánh x và xâu đảo của nó} if x=y then doixung = true else doixung = false; end; BEGIN write'Nhap vao 1 xau'; readlnx; if doixungx then writeln'Xau doi xung!' else writeln'Xau khong doi xung!'; readln; END. BÀI TẬP 3 Nhập vào một xâu s và đếm xem nó có bao nhiêu từ. Từ là một dãy các kí tự, cách nhau bởi dấu cách? HƯỚNG DẪN Cách đếm từ đơn giản nhất là đếm dấu cách nếu s[i] là kí tự khác cách và s[i-1] là kí tự cách thì chứng tỏ s[i] là vị trí bắt đầu của một từ. Chú ý là từ đầu tiên của xâu không có dấu cách đứng trước. Chương trình var s string; {Hàm đếm số từ của một xâu} function sotus string integer; var i, dem integer; begin {cộng thêm dấu cách phía trước xâu để đếm cả từ đầu tiên} s = ' ' + s; dem = 0; for i = 2 to lengths do {s[i] là vị trí bắt đầu 1 từ} if s[i-1]=' ' and s[i]' ' then dem = dem + 1; sotu = dem; end; BEGIN write'Nhap vao 1 xau'; readlns; writeln'So tu trong xau la',sotus; readln; END. BÀI TẬP 4 Nhập vào một xâu s và in ra các từ của nó Từ là một dãy các kí tự, cách nhau bởi dấu cách. Xâu có bao nhiêu từ là đối xứng? HƯỚNG DẪN Có nhiều cách để tách một xâu thành các từ. Cách đơn giản nhất tiến hành như sau Bỏ qua các dấu cách cho đến khi gặp một kí tự khác cách hoặc hết xâu. Ghi các kí tự tiếp theo vào xâu tạm cho đến khi gặp dấu cách hoặc hết xâu, khi đó ta được 1 từ. Nếu chưa hết xâu thì quay lại bước 1. Mỗi khi tìm được một từ, ta ghi luôn nó ra màn hình, nếu từ đó là đối xứng thì tăng biến đếm. Ta cũng có thể lưu các từ tách được vào một mảng nếu bài tập yêu cầu dùng đến những từ đó trong các câu sau. Chương trình var s string; dem integer; {Hàm kiểm tra từ đối xứng} function doixungx string boolean; var y string; i integer; begin y = ''; for i = lengthx downto 1 do y = y + x[i]; if x=y then doixung = true else doixung = false; end; {Thủ tục thực hiện tách từ} procedure tach; var i, len integer; t string; begin writeln'Cac tu trong xau'; i = 1; len = lengths; repeat {B1 bỏ qua các dấu cách cho đến khi hết xâu hoặc gặp 1 kí tự khác cách} while s[i]=' ' and i=len then break; {nếu hết xâu thì dừng} t = ''; {t là biến tạm lưu từ đang tách} {B2 lấy các kí tự khác cách đưa vào biến tạm cho đến khi hết xâu hoặc gặp 1 kí tự cách} while s[i]' ' and i= len; writeln'So tu doi xung trong xau',dem; end; ************************************************ BEGIN write'Nhap vao 1 xau'; readlns; tach; END. BÀI TẬP 5 Một số nguyên gọi là palindrom nếu nó đọc từ trái sang cũng bằng đọc từ phải sang. Ví dụ 121 là một số palindrom. Nhập một dãy n phần tử nguyên dương từ bàn phím, 5<= n<=20 và các phần tử có 2 đến 4 chữ số. In ra các số là palindrom trong dãy. HƯỚNG DẪN Một số là palindrom thì xâu tương ứng của nó là xâu đối xứng. Ta sẽ xây dựng một hàm kiểm tra một số có phải là palindrom không bằng cách chuyển số đó thành xâu và kiểm tra xâu đó có đối xứng không? Chương trình uses crt; var n integer; a array[1..20] of integer; {Thủ tục nhập dữ liệu} procedure nhap; var i integer; begin clrscr; repeat write'n= '; readlnn; if n=5 then break; {nếu đã thoả mãn thì thoát khỏi vòng lặp} writeln'Yeu cau 5<=n<=20. Nhap lai!'; until false; for i = 1 to n do repeat write'A[',i,']='; readlna[i]; if a[i]=10 then break; {a[i] có 2 đến 4 chữ số} writeln'Yeu cau cac phan tu co 2 den 4 chu so. Nhap lai!'; until false; end; {Hàm kiểm tra bằng các kiểm tra xâu đối xứng} function palindromk integer boolean; var x,y string; i integer; begin strk,x; {chuyển k thành xâu x} y = ''; for i = lengthx downto 1 do y = y + x[i]; {nếu x là đối xứng thì k là palindrom} if x=y then palindrom = true else palindrom = false; end; {In kết quả} procedure palin; var i integer; begin writeln'Cac so la palindrom trong day'; for i = 1 to n do if palindroma[i] then writelna[i]; readln; end; * Chương trình chính * BEGIN nhap; palin; END. CÁC BÀI TẬP VỀ TỆP BÀI TẬP 1 Nhập một mảng 2 chiều m dòng, n cột từ file Cấu trúc file như sau dòng đầu là 2 số m và n, cách nhau bằng dấu cách, m dòng sau, mỗi dòng n số nguyên. Hãy in ra những số là số nguyên tố của mảng. Tìm vị trí phần tử lớn nhất trong mảng. Sắp xếp mỗi dòng của mảng tăng dần và in ra mảng dạng ma trận. HƯỚNG DẪN Ta khai báo một mảng 2 chiều và nhập dữ liệu từ file vào mảng. Quá trình nhập từ file văn bản giống như nhập từ bàn phím, không cần thực hiện kiểm tra dữ liệu. Để sắp xếp mảng theo yêu cầu, ta thực hiện sắp xếp từng dòng của mảng bằng cách viết một thủ tục sắp xếp kiểu đổi chỗ cho đơn giản coi mỗi dòng của mảng như 1 mảng 1 chiều. Chương trình var m,n integer; a array[1..100,1..100] of integer; * Nhập dữ liệu * procedure nhap; var f text; i,j integer; begin assignf,' resetf; readlnf,m,n; for i = 1 to m do for j = 1 to n do readf,a[i,j]; closef; end; function ngtok integer boolean; var i integer; begin ngto = false; if k < 2 then exit; for i = 2 to roundsqrtk do if k mod i = 0 then exit; ngto = true; end; procedure inngto; var i,j integer; begin writeln'Cac phan tu nguyen to cua mang'; for i = 1 to m do for j = 1 to n do if ngtoa[i,j] then writea[i,j],' '; writeln; end; procedure timmax; var max,i,j,im,jm integer; begin max = a[1,1]; im = 1; jm = 1; {im, jm l

lập trình pascal lớp 8