TH11 - Bài tập Pascal - Có đáp án

 huongdan

zipBài tập 1: Viết chương trình Pascal in bài ca dao ra màn hình
Program Ca_dao;

Begin
   Writeln('Trong dam gi dep bang sen,');
   Writeln('La xanh bong trang lai chen nhi vang,');
   Writeln('Nhi vang bong trang la xanh.');
   Writeln('Gan bun ma chang hoi tanh mui bun');
   Readln
End.
zipBài tập 2: Viết chương trình Pascal in tam giác ra màn hình
Program Tam_giac;
Begin
   Writeln('*********');
   Writeln(' *******');
   Writeln('  *****');
   Writeln('   ***');
   Writeln('    *');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal thực hiện phép trừ số học
Program Phep_Tru;
Var
   so1,so2,hieu :Integer;

Begin
   Writeln(' CHUONG TRINH THUC HIEN PHEP TRU SO HOC');
   Writeln('         co toi da 4 ky so');
   Write('-Nhap so thu nhat = ');
   Readln(so1);
   Write('-Nhap so thu hai  = ');
   Readln(so2);
   hieu:= so1-so2;
   Writeln;
   Writeln;
   Writeln('-------------------------------');
   Writeln;
   Writeln('     ',so1:4);
   Writeln('  -  ',so2:4);
   Writeln('    -----');
   Writeln('  = ',hieu:5);
   Readln
End.
zipBài tập 4: Viết chương trình Pascal In bảng cửu chương ra màn hình (Không dùng lệnh For)
Program Cuu_chuong_1;
Var
   so :Integer;

Begin
   Write('-Bang cuu chuong so may ?: ');
   Readln(so);
   Writeln;
   Writeln;
   Writeln(' CHUONG TRINH BANG CUU CHUONG');
   Writeln('-------------------------------');
   Writeln;
   Writeln(so:2,' lan  1  = ',so*1:3);
   Writeln(so:2,' lan  2  = ',so*2:3);
   Writeln(so:2,' lan  3  = ',so*3:3);
   Writeln(so:2,' lan  4  = ',so*4:3);
   Writeln(so:2,' lan  5  = ',so*5:3);
   Writeln(so:2,' lan  6  = ',so*6:3);
   Writeln(so:2,' lan  7  = ',so*7:3);
   Writeln(so:2,' lan  8  = ',so*8:3);
   Writeln(so:2,' lan  9  = ',so*9:3);
   Writeln(so:2,' lan 10  = ',so*10:3);
   Readln
End.
zipBài tập 5: Viết chương trình Pascal In bảng cửu chương ra màn hình (Dùng lệnh For)
Program Cuu_chuong_2;
Var
   so,i :Integer;

Begin
   Write('-Bang cuu chuong so may ?: ');
   Readln(so);
   Writeln;
   Writeln;
   Writeln(' CHUONG TRINH BANG CUU CHUONG');
   Writeln('-------------------------------');
   Writeln;
   For i:=1 To 10 Do
      Writeln(so:2,' lan ',i:2,' = ',so*i:3);
   Readln
End.
zipBài tập 6: Viết chương trình Pascal tính diện tích hình thang khi biết độ dài 2 đáy và chiều cao
Program Hinh_thang;
Var
   a,b,h:Integer;
       S:Real;
Begin
   Writeln('CHUONG TRINH TINH DIEN TICH HINH THANG');
   Write('-Cho biet day ngan = ');
   Readln(a);
   Write('-Cho biet day dai = ');
   Readln(b);
   Write('-Cho biet chieu cao = ');
   Readln(h);
   S := 0.5 * (a + b) * h;
   Writeln('+Dien tich hinh thang = ',s:6:2,' met vuong');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal tính diện tích tam giác khi biết độ dài 3 cạnh
Program Tam_Giac;
Var
   a,b,c:Integer;
      p,s:Real;
Begin
   Writeln('CHUONG TRINH TINH DIEN TICH TAM GIAC');
   Write('-Cho biet canh thu nhat = ');
   Readln(a);
   Write('-Cho biet canh thu hai  = ');
   Readln(b);
   Write('-Cho biet canh thu ba   = ');
   Readln(c);
   p := 0.5 * (a + b + c);
   s := sqrt(p*(p-a)*(p-c)*(p-c));
   Writeln('+Dien tich hinh tam giac = ',s:6:2,' met vuong');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal tính thể tích hình cầu khi biết diện tích hình tròn
Program Hinh_cau;
Var
   s:integer;
   r,v:Real;
Begin
   Writeln('CHUONG TRINH TINH THE TICH HINH CAU');
   Writeln('---------------------------------');
   Write('Cho biet dien tich hinh tron = ');
   Readln(s);
   r:=Sqrt(s/4*3.1416);
   v:=4/3 * 3.1416 *r*r*r;
   Writeln('*The tich hinh cau la : ',V:6:2,' met khoi');
   Readln
End.
zipBài tập 9: Viết chương trình Pascal tính lực hút giữa 2 vật khi biết khối lượng của 2 vật
Program Luc_hut;
CONST
   g=6.672E-8;
Var
   m1,m2,d,f:Real;
Begin
   Writeln('CHUONG TRINH TINH LUC HUT GIUA 2 VAT');
   Write('-Khoi luong m1 (gam) = ');
   Readln(m1);
   Write('-Khoi luong m2  (gam) = ');
   Readln(m2);
   Write('-Khoang cac giua 2 vat (Cm) = ');
   Readln(d);
   f := g * m1 * m2 / sqr(d);
   Writeln('+Luc hut giua 2 vat = ',f:6:2);
   Readln
End.
zipBài tập 10: Viết chương trình Pascal tính Pignet
Program Pignet;
Var
   Ten:String;
   Tuoi:Integer;
   lon,nho,tb,tl,cao,pig:Real;
Begin
   Writeln('CHUONG TRINH TINH PIGNET');
   Writeln('------------------------');
   Write('-Cho biet ho ten : ');
   Readln(ten);
   Write('-Cho biet tuoi   : ');
   Readln(tuoi);
   Write('-Cho biet chieu cao : ');
   Readln(cao);
   Write('-Cho biet trong luong : ');
   Readln(tl);
   Write('-So do vong nguc luc hit vao = ');
   Readln(lon);
   Write('-So do vong nguc luc tho ra  = ');
   Readln(nho);
   tb := 0.5 * (lon-nho);
   pig := cao - (tb + tl);
   Writeln;
   Write('+Ong (Ba) : ',ten:24);
   Writeln(' , ',tuoi,' tuoi');
   Writeln('+Co so do Pignet = ',pig:6:2);
   Readln
End.
zipBài tập 11: Viết chương trình Pascal tính lương
Program Tinh_luong;
Var
   Ten:String;
   nc,pc,tam:Integer;
   bl,hs,tt,cl:Real;
Begin
   Writeln('CHUONG TRINH TINH LUONG');
   Writeln('------------------------');
   Write('-Cho biet ho ten : ');
   Readln(ten);
   Write('-Cho biet bac luong   : ');
   Readln(bl);
   Write('-Cho biet ngay cong : ');
   Readln(nc);
   Write('-Cho biet he so trach nhiem : ');
   Readln(hs);
   Write('-Cho biet phu cap khu vuc = ');
   Readln(pc);
   Write('-Cho biet so tien da tam ung ky 1 = ');
   Readln(tam);
   tt := ((bl/30 * nc * hs)+pc);
   cl := tt - tam;
   Writeln;
   Writeln('+Ong (Ba) : ',ten:24);
   Writeln('+Tien luong trong thang = ',tt:10:2,' dong');
   Writeln('+So tien con linh = ',cl:10:2,' dong');
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 12: Viết chương trình Pascal tính diện tích lớn nhất của hình chữ nhật
Program Tinh_dien_tich;
Var
   cv,canh,s:Real;
Begin
   Writeln('TINH DIEN TICH LON NHAT CUA HINH CHU NHAT');
   Writeln('-----------------------------------------');
   Write('-Cho biet chu vi chu nhat : ');
   Readln(cv);
   canh:=cv / 4;
   s:=canh * canh;
   Writeln('-Chu vi hinh chu nhat = ',cv:10:2,' met');
   Writeln('-Dien tich lon nhat se= ',s:10:2,' met vuong' );
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 13 Viết chương trình Pascal tính tam thức
Program Tam_thuc;
Var
   a,b,c,x,p:Integer;
Begin
   Writeln('TINH TAM THUC');
   Writeln('-------------');
   Write('-Nhap a= ');
   Readln(a);
   Write('-Nhap b= ');
   Readln(b);
   Write('-Nhap c= ');
   Readln(c);
   Write('-Nhap x= ');
   Readln(x);
   p:=((a*(x*x)) + (b*x) + c);
   Writeln('*Tri cua tam thuc = ',p);
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 14: Viết chương trình Pascal độ dài của vec tơ
Program Tinh_do_dai_vec_to;
Var
       x,y,z:Integer;
           l:Real;
Begin
   Writeln('TINH CHIEU DAI VECTO');
   Writeln('---------------------');
   Writeln;
   Write('-Cho biet toa do X : ');
   Readln(x);
   Write('-Cho biet toa do Y : ');
   Readln(y);
   Write('-Cho biet toa do Z : ');
   Readln(z);
   l:= Sqrt(Sqr(x) + Sqr(y) + Sqr(z));
   Writeln('+Chieu dai cua vecto = ',l:10:2);
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 15: Viết chương trình Pascal tính giá trị Z qua số thực X
Program Tinh_Z;
Var
   x,z:Real;
Begin
   Writeln('TINH GIA TRI Z QUA SO THUC X');
   Writeln('----------------------------');
   Write('-Nhap tri x = ');
   Readln(x);
   z:=ln(x + abs(sin(2 * x)));
   Writeln('*Gia tri cua Z = ',z:10:2);
   Writeln(' Bam phim <Enter> de ket thuc');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal cho biết qui tắc đặt tên biên
Program ten_bien;
Begin
   Writeln('Ky tu : Ten bien khong duoc co khoang trong');
   Writeln('$conso: Ten bien khong duoc co dau $ o dau');
   Writeln('5so   : Ten bien khong duoc co con so o dau');
   Writeln('Do,Repeat: Khong duoc dung cac tu khoa de dat ten bien');
   Writeln;
   Writeln('       Bam phim <Enter> de ve cua so soan thao');
   Readln
End.
zipBài tập 2: Viết chương trình Pascal  lương của công nhân
Program tinh_luong;
Var
   Ten:String[24];
   bl,nc,pc,thang:Integer;
      tl,hs:Real;
Begin
   Writeln('CHUONG TRINH TINH LUONG');
   Writeln('-----------------------');
   Writeln;
   Write('-Cho biet thang : ');
   Readln(thang);
   Write('-Cho biet ho ten : ');
   Readln(ten);
   Write('-Cho biet bac luong : ');
   Readln(bl);
   Write('-Cho biet ngay cong : ');
   Readln(nc);
   Write('-Cho biet he so : ');
   Readln(hs);
   Write('-Cho biet phu cap : ');
   Readln(pc);
   Writeln;
   tl:=((bl/30)*nc*hs+pc);
   Writeln('+Tien luong thang : ',thang:2,', cua Ong/Ba : ',ten,' la = ',tl:8:2);
   Writeln('       Bam phim <Enter> de ve cua so soan thao');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal tính chu vi, diện tích vòng tròn
Program Vong_tron;
Var
   Radius,s,cv :Real;
Begin
   Writeln('TINH CHU VI, DIEN TICH VONG TRON');
   Writeln('--------------------------------');
   Write('-Cho biet ban kinh : ');
   Readln(Radius);
   cv:=2*Pi*Radius;
   S:=Pi*Radius*Radius;
   Writeln;
   Writeln('+Chu vi vong tron    = ',cv:10:2);
   Writeln('+Dien tich vong tron = ',s:10:2);
   Writeln;
   Writeln('       Bam phim <Enter> de tro ve cua so soan thao');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal đổi số Fahrenheit sang Celcius
Program Doi_do_F_C;
Var
   f,c:Real;
Begin
   Writeln('DOI DO FAHRENHEIT SANG CELCIUS');
   Write('-Cho biet do Fahrenheit : ');
   Readln(f);
   c:=((f-32) * 5)/9;
   Writeln;
   Writeln(f:5:2,' do Fahrenheit doi sang do Celcius = ',c:5:2,#248);
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal đổi từ đơn vị Mile sang Km
Program Doi_do_Mile_Km;
Const
   Km_Mile=1.609344;
Var
   m,k:Real;
Begin
   Writeln('DOI MILE SANG Km');
   Write('-Cho biet so Mile can doi: ');
   Readln(m);
   k:=m * Km_Mile;
   Writeln;
   Writeln(m:5:2,' dam Anh doi thanh = ',k:5:2,' Km');
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 6: Viết chương trình Pascal in các chữ số của số nguyên dương N
Program Chu_so;
Var
   n:Integer;
Begin
   Writeln('XUAT CAC CHU SO CUA SO NGUYEN DUONG N');
   Write('-Cho biet so nguyen: ');
   Readln(n);
   Writeln('So nguyen: ',n:5,' Co cac chu so sau');
   Write(' ', n DIV 10000);
   n :=n MOD 10000;
   Write(' ', n DIV 1000);
   n :=n MOD 1000;
   Write(' ', n DIV 100);
   n :=n MOD 100;
   Write(' ', n DIV 10);
   n :=n MOD 10;
   Write(' ',n);
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal in các phép toán
Program Cac_phep_toan;
Var
   a,b,c,d,e,x,y,g,h,i:Integer;
Begin
   Writeln('CAC PHEP TOAN');
   Writeln('-------------');
   Writeln;
   a:=124;
   b:=12;
   Writeln(a:3,' DIV ',b:2,' = ',a DIV b);
   Writeln(a:3,' MOD ',b:2,' = ',a MOD b);
   c:=12;
   d:=22;
   Writeln(c:2,' AND ',d:2,' = ',c AND d);
   Writeln(c:2,' OR ',d:2,' = ',c OR d);
   Writeln(c:2,' XOR ',d:2,' = ',c XOR d);
   x:=2;
   g:=x Shl 7;
   Writeln('g = ',x:2,' Shl 7 = ',g);
   x:=256;
   h:=x Shr 7;
   Writeln('h = ',x:2,' Shr 7 = ',h);
   i:=g+h;
   Writeln('i = g + h = ',i);
   Writeln('Lo(i) = ',Lo(i));
   Writeln('Hi(i) = ',Hi(i));
   Writeln('Swap(i) = ',Swap(i));
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal  tính điểm trung bình
Program Diem_trung_binh;
Var
   Ten:String[24];
   Van,Toan,Ly,Sinh,NgoaiNgu,Tb:Real;
Begin
   Writeln('DIEM TRUNG BINH');
   Writeln('-------------');
   Write('-Cho biet ho ten: ');
   Readln(ten);
   Write('-Cho biet diem mon Van: ');
   Readln(Van);
   Write('-Cho biet diem mon Toan: ');
   Readln(Toan);
   Write('-Cho biet diem mon Ly: ');
   Readln(Ly);
   Write('-Cho biet diem mon Sinh vat: ');
   Readln(Sinh);
   Write('-Cho biet diem mon Ngoai ngu: ');
   Readln(NgoaiNgu);
   tb:=((Van * 3) + (Toan * 2) + (Ly * 2) + Sinh + NgoaiNgu) / 9;
   Writeln('+Hoc sinh: ',ten,' co diem trung binh = ',tb:6:2);
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 9: Viết chương trình Pascal tính giá trị hàng hoá
Program Tinh_gia_tri_hang_hoa;
Var
       n:Integer;
   a,c,l:Real;
Begin
   Writeln('TINH GIA TRI HANG HOA');
   Writeln('---------------------');
   Writeln;
   Write('-Cho biet gia goc tra ngay: ');
   Readln(a);
   Write('-Cho biet lai suat l%/nam: ');
   Readln(l);
   Write('-Cho biet so ngay tra cham: ');
   Readln(n);
   c:= a * (1 + n * l / 36000);
   Writeln('+Gia hang hoa tra cham = ',c:10:2,' dong');
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 10: Viết chương trình Pascal tính độ dài vectơ
Program Tinh_do_dai_vec_to;
Var
       x,y,z:Integer;
           l:Real;
Begin
   Writeln('TINH CHIEU DAI VECTO');
   Writeln('---------------------');
   Writeln;
   Write('-Cho biet toa do X : ');
   Readln(x);
   Write('-Cho biet toa do Y : ');
   Readln(y);
   Write('-Cho biet toa do Z : ');
   Readln(z);
   l:= Sqrt(Sqr(x) + Sqr(y) + Sqr(z));
   Writeln('+Chieu dai cua vecto = ',l:10:2);
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 11: Viết chương trình Pascal tính trung bình cộng, trung bình nhân
Program Trung_binh;
Var
   a,b,c:Integer;
   P,S:Real;
Begin
   Writeln('TINH TRUNG BINH CONG,TRUNG BINH NHAN');
   Writeln('------------------------------------');
   Writeln;
   Write('-Nhap so thu nhat: ');
   Readln(a);
   Write('-Nhap so thu hai : ');
   Readln(b);
   Write('-Nhap so thu ba  : ');
   Readln(c);
   S:=(a + b + c) / 3;
   P:=Exp((1 / 3) * Ln(a * b * c));
   Writeln('*Trung binh cong cua 3 so= ',s:6:2);
   Writeln('*Trung binh nhan cua 3 so= ',p:6:2);
   Writeln('  Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 12: Viết chương trình Pascal tính a mũ b (ab)
Program Tinh_a_mu_b;
Var
   a,b:Integer;
   p:Real;
Begin
   Writeln('TINH TRI CUA A MU B');
   Writeln('-------------------');
   Writeln;
   Write('-Nhap so nguyen A: ');
   Readln(a);
   Write('-Nhap so mu B    : ');
   Readln(b);
   P:=Exp(b * Ln(a));
   Writeln('*Tri A mu B    = ',p:10:2);
   Writeln('  Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 13: Viết chương trình Pascal tính tổng của N số nguyên
Program Tinh_tong;
Var
   n,tong:Integer;
Begin
   Writeln('TINH TONG CUA N SO NGUYEN');
   Writeln('-------------------');
   Writeln;
   Write('-Nhap so nguyen N: ');
   Readln(n);
   tong:=(n * (n + 1) DIV 2);
   Writeln('*Tong tu 1 den N   = ',tong);
   Writeln('  Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 14: Viết chương trình Pascal tính tiền gửi ngân hàng
Program Tinh_tien;
Var
   v:Integer;
   l,n:Real;
Begin
   Writeln('TINH TIEN GUI NGAN HANG');
   Writeln('-------------------');
   Writeln;
   Write('-So tien gui = ');
   Readln(v);
   Write('-Lai suat    = ');
   Readln(l);
   n:=(v * (1 + (l/100)));
   Writeln('*Neu gui: ',v,' dong, lai suat 1 nam= ',l:4:2,' %');
   Writeln('*So tien lai trong 1 nam = ',Round(v*l/100),' dong');
   Writeln('*Von + Lai trong 1 nam   = ',Round(n),' dong');
   Writeln('  Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 15: Viết chương trình Pascal tính giá hàng hoá
Program Gia_hang_hoa;
Var
   f,a,pe,pc,r:Real;
   n,y,t:Integer;
Begin
   Writeln('TINH GIA HANG HOA');
   Writeln('-----------------');
   Writeln;
   Write('-So tien vay = ');
   Readln(a);
   Write('-Lai suat vay Ngan hang = ');
   Readln(r);
   Write('-Thoi gian san xuat= ');
   Readln(y);
   Write('-So san pham thu duoc   = ');
   Readln(n);
   Write('-Thoi gian luu kho = ');
   Readln(t);
   Write('-Phi ton luu kho = ');
   Readln(f);
   pe:=a/n;
   pc:=pe * (1 + r * (t + y) / 1200) + f * t;
   Writeln('*Gia xuat xuong = ',pe:10:2,' dong');
   Writeln('*Gia ban de hoa von la : ',pc:10:2,' dong');
   Writeln('  Bam phim <Enter> de ket thuc');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal tính giờ phút giây
Program Tinh_Gio_Phut_Giay;
Var
   sogiay,gio,phut,giay:Integer;
Begin
   Writeln('TINH GIO:PHUT:GIAY');
   Writeln('------------------');
   Write('-Nhap so giay can tinh: ');
   Readln(sogiay);
   gio:=sogiay DIV 3600;
   sogiay:= sogiay MOD 3600;
   phut:=sogiay DIV 60;
   giay:=sogiay MOD 60;
   Writeln;
   Writeln('KET QUA CHUYEN DOI');
   Writeln('+Neu nhap vao: ',sogiay,' giay');
   Writeln('+Doi thanh: ',gio,' gio, ',phut,' phut, ',giay,' giay');
   Readln
End.
zipBài tập 2: Viết chương trình Pascal đổi chỗ 2 số nguyên
Program Doi_cho;
Var
   so1,so2:Integer;
Begin
   Writeln('DOI CHO 2 SO NGUYEN');
   Writeln('-------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   so1:=so1+so2;
   so2:=so1-so2;
   so1:=so1-so2;
   Writeln('SAU KHI CHUYEN CHO');
   Writeln('+So thu nhat bay gio la: ',so1);
   Writeln('+So thu hai bay gio la : ',so2);
   Readln
End.
zipBài tập 3: Viết chương trình Pascal trình bày phép nhân số học
Program Phep_nhan_so_hoc;
Var
   binhan,nhan:LongInt;
   donvi,chuc,tram:Integer;
Begin
   Writeln('TRINH BAY PHEP NHAN SO HOC');
   Writeln('-------------------------');
   Write('-Nhap so bi nhan : ');
   Readln(binhan);
   Write('-Nhap vao so nhan: ');
   Readln(nhan);
   donvi:=nhan MOD 10;
   chuc:=(nhan DIV 10) MOD 10;
   tram:=nhan DIV 100;
   Writeln(binhan:15);
   Writeln('x':9,nhan:6);
   Writeln('----':15);
   Writeln(donvi*binhan:15);
   Writeln(chuc*binhan:14);
   Writeln(tram*binhan:13);
   Writeln('-------':15);
   Writeln(binhan*nhan:15);
   Readln
End.
zipBài tập 4: Viết chương trình Pascal tính thể tích hình cầu khi biết diện tích
Program Tinh_the_tich_hinh_cau;
Var
   s,v,r:Real;
Begin
   Writeln('TINH THE TICH HINH CAU KHI BIET DIEN TICH');
   Writeln('-----------------------------------------');
   Write('-Cho biet dien tich hinh cau: ');
   Readln(s);
   r:= Sqrt(s/4*pi);
   v:=4/3*pi*r*r*r;
   Writeln('+The tich hinh cau la: ',v:10:4,' met khoi');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal tinh Sin(x)
Program Tinh_sin;
Var
   goc:Integer;
   rad,x:Real;
Begin
   Writeln('TINH SIN(X)');
   Writeln('-----------');
   Write('-Nhap vao mot goc: ');
   Readln(goc);
   rad:=(pi * goc) / 180;
   x:=sin(rad);
   Writeln('+Sin(',goc:2,') = ',x:10:8);
   Readln;
End.
zipBài tập 6: Viết chương trình Pascal tìm mã ASCCI của ký tự
Program Ma_ASCII;
Var
   kytu:Char;
Begin
   Writeln('TIM MA ASCII CUA KY TU');
   Writeln('----------------------');
   Write('-Nhap vao mot ky tu: ');
   Readln(kytu);
   Writeln('+Ma ASCII cua ky tu: ',kytu,' la: ',Ord(kytu));
   Readln
End.
zipBài tập 7: Viết chương trình Pascal tìm ký tự khi biết mã ASCII
Program Ky_tu;
Var
   ma:Byte;
Begin
   Writeln('TIM KY TU KHI BIET MA ASCII');
   Writeln('--------------------------');
   Write('-Cho biet ma ASCII: ');
   Readln(ma);
   Writeln('+Ky tu cua ma ASCII: ',ma:2,' la: ',Chr(ma));
   Readln
End.
zipBài tập 8: Viết chương trình Pascal đổi chữ thường ra chữ HOA
Program Doi_chu_thuong_ra_chu_HOA;
Var
   ch,c1,c2:Char;
Begin
   Writeln('DOI CHU THUONG RA CHU HOA');
   Writeln('-------------------------');
   Write('-Nhap mot ky tu bat ky: ');
   Readln(ch);
   c1:=upcase(ch);
   c2:=chr(ord(ch)-32);
   Writeln('+Cach thu nhat, dung ham Upcase: ',c1);
   Writeln('+Cach thu hai,khong dung ham Upcase: ',c2);
   Readln
End.
zipBài tập 9: Viết chương trình Pascal đổi chữ HOA ra chữ thường
Program Doi_chu_HOA_ra_chu_thuong;
Var
   ch,c:Char;
Begin
   Writeln('DOI CHU HOA RA CHU THUONG');
   Writeln('-------------------------');
   Write('-Nhap mot chu HOA bat ky: ');
   Readln(ch);
   c:=chr(ord(ch)+32);
   Writeln('+Doi ra chu thuong la: ',c);
   Readln
End.
zipBài tập 10: Viết chương trình Pascal xuất 5 lần chuỗi vừa nhập
Program Xuat_chuoi;
Var
   ch:String;
Begin
   Writeln('XUAT 5 LAN CHUOI VUA NHAP');
   Writeln('-------------------------');
   Write('-Nhap vao mot chuoi bat ky: ');
   Readln(ch);
   Write(ch,', ',ch,', ',ch,', ',ch,', ',ch);
   Readln
End.
zipBài tập 11: Viết chương trình Pascal tính chu kỳ dao động của con lắc
Program Chu_ky_con_lac;
Const
   g=918;
Var
   l,t:Real;
Begin
   Writeln('TINH CHU KY DAO DONG CON LAC DON');
   Writeln('-----------------------');
   Write('-Cho biet chieu dai con lac: ');
   Readln(l);
   t:=2*pi*sqrt(l/g);
   Writeln('+Chu ky dao dong dieu hoa cua con lac: ',t:10:3);
   Readln;
End.
zipBài tập 12: Viết chương trình Pascal tính lực hập dẫn giữa 2 vật
Program Luc_hap_dan;
Const
   gama=6.673E-8;
Var
   m1,m2,f,d:Real;
Begin
   Writeln('TINH LUC HAP DAN GIUA 2 VAT');
   Writeln('----------------------');
   Write('-Khoi luong vat thu nhat: ');
   Readln(m1);
   Write('-Khoi luong vat thu hai : ');
   Readln(m2);
   Write('-Khoang cach 2 vat: ');
   Readln(d);
   f:=gama*m1*m2/sqr(d);
   Writeln('+Luc hap dan giua 2 vat= ',f:10:3);
   Readln
End.
zipBài tập 13: Viết chương trình Pascal tính khoảng cách từ 1 điểm đến đường thẳng
Program Tinh_khoang_cach;
Var
   a,b,c,d,x,y:Real;
Begin
   Writeln('TINH KHOANG CACH TU 1 DIEM DEN DUONG THANG');
   Writeln('------------------------------------------');
   Write('-Nhap he so a= ');
   Readln(a);
   Write('-Nhap he so b= ');
   Readln(b);
   Write('-Nhap he so c= ');
   Readln(c);
   Write('-Nhap toa do x= ');
   Readln(x);
   Write('-Nhap toa do y= ');
   Readln(y);
   d:=((a*x) + (b*y) + c) / Sqrt(Sqr(a) + Sqr(b));
   Writeln('+Khoang cach tu diem I den duong thang la: ',d:10:2);
   Readln
End.
zipBài tập 14: Viết chương trình Pascal tách một số nguyên thành 2 số
Program Tach_so;
Var
   n:Integer;
   x,p:Real;
Begin
   Writeln('TACH MOT SO NGUYEN THANH 2 SO');
   Writeln('-----------------------------');
   Write('-Nhap mot so: ');
   Readln(n);
   x:=2*n/3;
   Write('+Con so: ',n,' tach thanh so: ',x:6:2);
   Writeln(' va so: ',(n-x):6:2);
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal sắp xếp 2 số nguyên
Program sap_xep;
Var
   so1,so2,tam:Integer;
Begin
   Writeln('SAP XEP 2 SO NGUYEN');
   Writeln('-------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   If so1 > so2 Then
      Begin
         tam:=so1;
         so1:=so2;
         so2:=tam;
      End;
   Writeln;
   Writeln('Ban vua nhap cac so sau');
   Writeln(so1:10);
   Writeln(so2:10);
   Readln
End.
zipBài tập 2: Viết chương trình Pascal tìm số lớn nhất trong 2 số nguyên (dùng If thiếu)
Program So_lon;
Var
   so1,so2:Integer;
Begin
   Writeln('TIM SO LON NHAT TRONG 2 SO NGUYEN');
   Writeln('---------------------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   If so1 > so2 Then
      Writeln('+So thu nhat la so lon nhat');
   If so2 > so1 Then
      Writeln('+So thu hai la so lon nhat');
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal tìm số lớn nhất trong 2 số nguyên (dùng If đủ)
Program So_lon;
Var
   so1,so2:Integer;
Begin
   Writeln('TIM SO LON NHAT TRONG 2 SO NGUYEN');
   Writeln('---------------------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   If so1 > so2 Then
      Writeln('+So thu nhat la so lon nhat')
   Else
      Writeln('+So thu hai la so lon nhat');
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal tìm số lớn nhất trong 3 số nguyên (dùng If thiếu)
Program So_lon;
Var
   so1,so2,so3,solon:Integer;
Begin
   Writeln('TIM SO LON NHAT TRONG 3 SO NGUYEN');
   Writeln('      Cau truc If thieu');
   Writeln('---------------------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   Write('-Nhap so thu ba  : ');
   Readln(so3);
   If so1 < so2 Then
      solon:=so2;
   If so2 < so3 Then
      solon:=so3;
   If so3 < so1 Then
      solon:=so1;
   Writeln;
   Writeln('+So lon nhat trong 3 so la: ',solon);
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal tìm số lớn nhất trong 3 số nguyên (dùng If đủ)
Program So_lon;
Var
   so1,so2,so3,solon:Integer;
Begin
   Writeln('TIM SO LON NHAT TRONG 3 SO NGUYEN');
   Writeln('      Cau truc If du');
   Writeln('---------------------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   Write('-Nhap so thu ba  : ');
   Readln(so3);
   If so1 < so2 Then
      solon:=so2
   Else
      solon:=so1;
   If solon < so3 Then
      solon:=so3;
   Writeln;
   Writeln('+So lon nhat trong 3 so la: ',solon);
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 6: Viết chương trình Pascal tìm số lớn nhất trong 4 số nguyên
Program So_lon;
Var
   so1,so2,so3,so4,solon1,solon2,solon:Integer;
Begin
   Writeln('TIM SO LON NHAT TRONG 4 SO NGUYEN');
   Writeln('Cau truc If...Then...Else');
   Writeln('-------------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   Write('-Nhap so thu ba  : ');
   Readln(so3);
   Write('-Nhap so thu tu  : ');
   Readln(so4);
   If so1 > so2 Then
      solon1:= so1
   Else
      Solon1:=so2;
   If so3 > so4 Then
      solon2:=so3
   Else
      solon2:=so4;
   If solon1 > solon2 Then
      solon:=solon1
   Else
      solon:=solon2;
   Writeln;
   Writeln('+So lon nhat trong 4 so la: ',solon);
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal cộng thêm giây vào giờ hiện hàng
Program Cong_giay;
Var
   gio,phut,giay,them:Integer;
Begin
   Writeln('CONG THEM GIAY VAO GIO HIEN HANH');
   Writeln('--------------------------------');
   Writeln('Nhap vao gio:phut:giay hien hanh');
   Write('-Gio   : ');
   Readln(gio);
   Write('-Phut: ');
   Readln(phut);
   Write('-Giay: ');
   Readln(giay);
   Write('-Cho biet so giay muon cong them: ');
   Readln(them);
   If (giay+them) < 60 Then
      giay:=giay+them
   Else
      Begin
         giay:=((giay+them)-60);
         phut:=phut+1;
         If phut >=60 Then
            Begin
               phut:=phut-60;
               gio:=gio+1;
            End;
      End;
   Writeln;
   Writeln('+Sau khi cong them so giay vao, gio moi la:');
   Writeln('        ',gio,' : ',phut,' : ',giay);
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal giải phương trình bậc 2
Program PTB2;
Var
   a,b,c:Integer;
   Delta,x,x1,x2:Real;
Begin
   Writeln('GIAI PHUONG TRINH BAC 2');
   Writeln('-----------------------');
   Write('-Nhap he so a= ');
   Readln(a);
   Write('-Nhap he so b= ');
   Readln(b);
   Write('-Nhap he so c= ');
   Readln(c);
   Delta:=sqr(b)-4*a*c;
   If Delta < 0 Then
      Writeln('+Phuong trinh vo nghiem')
   Else
      If Delta=0 Then
         Begin
            X:=-b/2*a;
            Writeln('+Phuong trinh co 2 nghiem bang nhau X1=X2= ',X:6:2);
         End
      Else
         Begin
            X1:=-b-Sqrt(Delta)/2*a;
            X2:=-b+Sqrt(Delta)/2*a;
            Writeln('+Nghiem thu nhat = ',X1:6:2);
            Writeln('+Nghiem thu hai  = ',X2:6:2);
         End;
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 9: Viết chương trình Pascal tính điểm trung bình và xếp hạng
Program Diem_Trung_binh;
Var
   Ten:String[24];
   Van,Toan,Ly,tb:Real;
Begin
   Writeln('TINH DIEM TRUNG BINH VA XEP HANG');
   Writeln('--------------------------------');
   Write('-Cho biet ho ten: ');
   Readln(Ten);
   Write('-Cho biet diem mon Van: ');
   Readln(Van);
   Write('-Cho biet diem mon Toan: ');
   Readln(Toan);
   Write('-Cho biet diem mon Ly: ');
   Readln(Ly);
   Tb:=((Van*2)+(Toan*2)+ly)/5;
   If tb < 5 Then
      Begin
         Writeln('+Hoc sinh: ',Ten);
         Writeln('+Diem trung binh = ',Tb:4:1);
         Writeln('+Xep hang: Hoc luc kem');
      End
   Else if Tb < 7 Then
      Begin
         Writeln('+Hoc sinh: ',Ten);
         Writeln('+Diem trung binh = ',Tb:4:1);
         Writeln('+Xep hang: Hoc luc trung binh');
      End
   Else if Tb < 9 Then
      Begin
         Writeln('+Hoc sinh: ',Ten);
         Writeln('+Diem trung binh = ',Tb:4:1);
         Writeln('+Xep hang: Hoc luc Kha');
      End
      Else
         Begin
            Writeln('+Hoc sinh: ',Ten);
            Writeln('+Diem trung binh = ',Tb:4:1);
            Writeln('+Xep hang: Hoc luc Gioi');
         End;
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 10: Viết chương trình Pascal tính điểm trung bình và nhận xét
Program Diem_Trung_binh;
Const
   MucDiem = 5;
   DiemDat     =20;
   DiemLoai    =2;
Var
   Ten:String[24];
   Van,Toan,Hoa,Ngoaingu,Tongdiem:Real;
   Dat,Loai,Hocdeu:Boolean;
Begin
   Writeln('TINH DIEM TRUNG BINH VA NHAN XET');
   Writeln('--------------------------------');
   Write('-Cho biet ho ten: ');
   Readln(Ten);
   Write('-Cho biet diem mon Van : ');
   Readln(Van);
   Write('-Cho biet diem mon Toan: ');
   Readln(Toan);
   Write('-Cho biet diem mon Hoa: ');
   Readln(Hoa);
   Write('-Cho biet diem mon Ngoai ngu: ');
   Readln(Ngoaingu);
   Tongdiem:=Van+Toan+Hoa+Ngoaingu;
   Dat:=(Tongdiem >=DiemDat);
   Loai:=(Van < DiemLoai) Or (Toan < DiemLoai)
      Or (Hoa < DiemLoai) Or (Ngoaingu < DiemLoai);
   Hocdeu:=(Van >MucDiem) And (Toan > Mucdiem)
      And (Hoa > Mucdiem) And (Toan > Mucdiem);
   Writeln('+Hoc sinh: ',ten);
   Write('+Tong so diem: ',Tongdiem:5:2);
   If Dat And (Not Loai) Then
      Begin
           Write('  Duoc len lop');
           If hocdeu Then
            Write('  Hoc deu cac mon')
         Else
            Write('  Hoc chua deu cac mon');
      End
    Else
       Write('  Khong duoc len lop');
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 11: Viết chương trình Pascal kiểm tra tính chẵn lẻ của 1 số nguyên
Program So_chan_le;
Var
   so,du:Integer;
Begin
   Writeln('SO CHAN HAY SO LE');
   Writeln('-----------------');
   Write('-Nhap mot so nguyen bat ky: ');
   Readln(so);
   du:=so Mod 2;
   Case du Of
      0:Begin
         Writeln('-So : ',so);
         Writeln('-La so chan');
        End;
      1:Begin
         Writeln('-So : ',so);
         Writeln('-La so le');
        End;
   End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 12: Viết chương trình Pascal cho biết ngày của tháng
Program Ngay_cua_thang;
Var
   thang,nam,luu,songay:Integer;
Begin
   Writeln('THANG. X . CO BAO NHIEU NGAY');
   Writeln('---------------------------');
   Write('-Ban muon hoi thang nao co bao nhieu ngay: ');
   Readln(thang);
   Write('-Cho biet nam : ');
   Readln(nam);
   luu:=nam;
   Case thang Of
      1,3,5,7,8,10,12: songay:=31;
      4,6,9,11         : songay:=30;
      2   :Case nam Mod 4 Of
               1,2,3 :songay:=28;
               0      :songay:=29;
          End;
   End;
   If songay >=30 Then
      Writeln('+Thang:',thang:3,', nam: ',luu:4,', co: ',songay:3,' ngay')
   Else
        Writeln('+Thang:',thang:3,', nam: ',luu:5,', co: ',songay:3,' ngay');
   Writeln;
   Writeln('   Bam phin <Enter> de ket thuc');
   Readln
End.
zipBài tập 13: Viết chương trình Pascal xếp loại học tập
Program Phan_loai;
Var
   ten:String;
   diem:Integer;
Begin
   Writeln('XEP LOAI HOC TAP');
   Writeln('----------------');
   Write('-Cho biet ten: ');
   Readln(ten);
   Write('-Cho biet diem: ');
   Readln(diem);
   Case diem Of
      0,1,2,3,4:   Begin
                     Writeln('+Hoc sinh: ',ten);
                     Writeln('+So diem : ',diem);
                     Writeln('+Xep loai KEM');
                  End;
      5,6:         Begin
                     Writeln('+Hoc sinh: ',ten);
                     Writeln('+So diem : ',diem);
                     Writeln('+Xep loai TRUNG BINH');
                  End;
      7,8:         Begin
                     Writeln('+Hoc sinh: ',ten);
                     Writeln('+So diem : ',diem);
                     Writeln('+Xep loai KHA');
                  End;
      9:            Begin
                     Writeln('+Hoc sinh: ',ten);
                     Writeln('+So diem : ',diem);
                     Writeln('+Xep loai GIOI');
                  End;
      10:         Begin
                     Writeln('+Hoc sinh: ',ten);
                     Writeln('+So diem : ',diem);
                     Writeln('+Xep loai XUAT SAC');
                  End;
      Else        Writeln('Khong co loai diem nay hoac ban go sai');
   End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 14: Viết chương trình Pascal nhập ngày, tháng, năm và cho biết là thứ mấy trong tuần
Program Thu_trong_tuan;
Var
   thu,ngay,thang:Byte;
   Nam,luu:Integer;
Begin
   Writeln('NGAY THU MAY TRONG TUAN');
   Writeln('-----------------------');
   Write('-Ngay: ');
   Readln(ngay);
   Write('-Thang: ');
   Readln(thang);
   Write('-Nam: ');
   Readln(nam);
   luu:=nam;
   nam:=1900 + (nam Mod 1900);
   If thang < 3 Then
      Begin
         thang:=thang + 12;
         nam:=nam - 1;
      End;
   thu:=ABS(ngay+2*thang+3*(thang+1) Div 5+nam+nam Div 4) Mod 7;
   Case thu Of
      0   :   Begin
               Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5);
               Writeln('        +La ngay Chu Nhat');
            End;
      1   :   Begin
               Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5);
               Writeln('+La ngay Thu Hai');
            End;
      2   :   Begin
               Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5);
               Writeln('        +La ngay Thu Ba');
            End;
      3   :   Begin
               Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5);
               Writeln('        +La ngay Thu Tu');
            End;
      4   :   Begin
               Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5);
               Writeln('        +La ngay Thu Nam');
            End;
      5   :   Begin
               Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5);
               Writeln('        +La ngay Thu Sau');
            End;
      6   :   Begin
               Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5);
               Writeln('        +La ngay Thu Bay');
            End;
   End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 15: Viết chương trình Pascal trò chơi One, two, three
Program One_Two_Three;
Var
   a,b:Char;
Begin
   Writeln('TRO CHOI ONE TWO THREE');
   Writeln(' Keo (k), Bua (b), Giay (g)');
   Writeln('---------------------------');
   Write('-Ban A chon: ');
   Readln(a);
   Write('-Ban B chon: ');
   Readln(b);
   Case Upcase(a) Of
      'K':   Case Upcase(b) Of
               'K'   :   Begin
                           Writeln('+Ban A chon Keo');
                           Writeln('+Ban B cung chon Keo');
                           Writeln('+Keo gap Kep, hoa nhau');
                        End;
               'B'   :   Begin
                           Writeln('+Ban A chon Keo');
                           Writeln('+Ban B chon Bua');
                           Writeln('+Bua dap Keo, B thang');
                        End;
               'G'   :   Begin
                           Writeln('+Ban A chon Keo');
                           Writeln('+Ban B chon Giay');
                           Writeln('+Keo cat Giay, A thang');
                        End;
            End;
      'B':   Case Upcase(b) Of
               'K'   :   Begin
                           Writeln('+Ban A chon Bua');
                           Writeln('+Ban B chon Keo');
                           Writeln('+Bua dap Keo, A thang');
                        End;
               'B'   :   Begin
                           Writeln('+Ban A chon Bua');
                           Writeln('+Ban B cung chon Bua');
                           Writeln('+Bua gap Bua, hoa nhau');
                        End;
               'G'   :   Begin
                           Writeln('+Ban A chon Bua');
                           Writeln('+Ban B chon Giay');
                           Writeln('+Giay boc Bua, B thang');
                        End;
            End;
      'G':   Case Upcase(b) Of
               'K'   :   Begin
                           Writeln('+Ban A chon Giay');
                           Writeln('+Ban B chon Keo');
                           Writeln('+Keo cat Giay, B thang');
                        End;
               'B'   :   Begin
                           Writeln('+Ban A chon Giay');
                           Writeln('+Ban B chon Bua');
                           Writeln('+Giay boc Bua, A thang');
                        End;
               'G'   :   Begin
                           Writeln('+Ban A chon Giay');
                           Writeln('+Ban B cung chon Giay');
                           Writeln('+Giay gap Giay, hoa nhau');
                        End;
            End;
   End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 16: Viết chương trình Pascal chọn loại giải trí thích hợp
Program Giai_Tri;
Var
   t:Byte;
Begin
   Writeln('CHON LOAI GIAI TRI THICH HOP');
   Writeln('----------------------------');
   Write('-Cho biet nhiet do ngay hom nay: ');
   Readln(t);
   If t < 20 Then
      Writeln('Troi lanh, ban nen o nha coi TV');
   If ((t > 20) And (t < 25)) Then
      Writeln('Troi mat me, ban nen di cam trai');
   If ((t > 25) And (t < 30)) Then
      Writeln('Troi hoi nong, ban nen di tam bien Vung Tau');
   If t > 30 Then
      Writeln('Troi nong, ban nen di nghi mat o Da Lat');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 17: Viết chương trình Pascal giải phương trình bậc nhất
Program PT_bac_nhat;
Var
   a,b:Integer;
   x:Real;
Begin
   Writeln('GIAI PHUONG TRINH BAC NHAT');
   Writeln('       aX + b = 0');
   Write('-Nhap he so a= ');
   Readln(a);
   Write('-Nhap he so b= ');
   Readln(b);
   If a=0 Then
      If b=0 Then
         Writeln('+Phuong trinh vo dinh')
      Else
         Writeln('+Phuong trinh vo nghiem')
   Else
      Begin
         x:=-b/a;
         Writeln('+Nghiem cua phuong trinh X= ',x:0:6);
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 18: Viết chương trình Pascal kiểm tra ước số của 2 số nguyên
Program Uoc_so;
Var
   so1,so2,tam:Integer;
Begin
   Writeln('KIEM TRA UOC SO CUA 2 SO NGUYEN');
   Writeln('-------------------------------');
   Write('-So thu nhat= ');
   Readln(so1);
   Write('-So thu hai = ');
   Readln(so2);
   If so1 < so2 Then
      Begin
         tam:=so1;
         so1:=so2;
         so2:=tam;
      End;
   If (so1 Mod so2) = 0 Then
      Writeln('+So: ',so2:4,' la uoc so cua so: ',so1:4)
   Else
      Begin
         Writeln('+Hai so: ',so1:4,' va so ',so2:4);
         Writeln('     Khong phai la uoc so cua nhau');
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 19: Viết chương trình Pascal sắp xếp thứ tự 3 số nguyên dương
Program Sap_xep;
Var
   so1,so2,so3,tam:Integer;
Begin
   Writeln('SAP XEP THU TU 3 SO NGUYEN DUONG');
   Writeln('-------------------------------');
   Write('-Nhap so thu nhat= ');
   Readln(so1);
   Write('-Nhap so thu hai = ');
   Readln(so2);
   Write('-Nhap so thu ba  = ');
   Readln(so3);
   If so1 > so2 Then
      Begin
         tam:=so1;
         so1:=so2;
         so2:=tam;
      End;
   If so2 > so3 Then
      Begin
         tam:=so2;
         so2:=so3;
         so3:=tam;
      End;
   If so1 > so2 Then
      Begin
         tam:=so1;
         so1:=so2;
         so2:=tam;
      End;
   Writeln;
   Writeln('KET QUA SAP XEP');
   Writeln;
   Writeln('    ',so1:5);
   Writeln('    ',so2:5);
   Writeln('    ',so3:5);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 20: Viết chương trình Pascal tìm số lớn nhất và số nhỏ nhất
Program So_lon_so_nho;
Var
   so1,so2,so3,so4,max,min:Integer;
Begin
   Writeln('TIM SO LON NHAT VA SO NHO NHAT');
   Writeln('-----------------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   Write('-Nhap so thu ba  : ');
   Readln(so3);
   Write('-Nhap so thu tu  : ');
   Readln(so4);
   max:=so1;
   min:=so1;
   If max < so2 Then
      max:=so2
   Else
      min:=so2;
   If max < so3 Then
      max:=so3
   Else
      min:=so3;
   If max < so4 Then
      max:=so4;
   Writeln;
   Writeln('+So lon nhat trong 4 so: ',so1,',',so2,',',so3,',',so4,' la: ',max);
   Writeln('+Va so nho nhat trong 4 so do la       : ',min);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 21: Viết chương trình Pascal kiểm tra đây là tam giác gì
Program Tam_giac;
Var
   a,b,c:Integer;
   tamgiac,deu,can:Boolean;
Begin
   Writeln('BA CANH CUA TAM GIAC ?');
   Writeln('----------------------');
   Write('-Nhap so thu nhat= ');
   Readln(a);
   Write('-Nhap so thu hai = ');
   Readln(b);
   Write('-Nhap so thu ba  = ');
   Readln(c);
   tamgiac:=False;
   deu:=False;
   can:=False;
   If (a+b>c) And (b+c>a) And (c+a>b) Then
      Begin
         tamgiac:=True;
         If (a=b) And (b=c) Then
            deu:=True;
         If (a=b) Or (b=c) Or (c=a) Then
            can:=True;
      End;
   Writeln;
   Writeln(' 3 so vua nhap la:');
   Writeln('+Tam giac: ',tamgiac);
   Writeln('+Tam giac deu: ',deu);
   Writeln('+Tam giac can: ',can);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 22: Viết chương trình Pascal tính diện tích tam giác
Program Dien_tich_tam_giac;
Var
   a,b,c:Integer;
   p,s:Real;
Begin
   Writeln('DIEN TICH TAM GIAC');
   Writeln('------------------');
   Write('-Nhap so thu nhat: ');
   Readln(a);
   Write('-Nhap so thu hai : ');
   Readln(b);
   Write('-Nhap so thu ba  : ');
   Readln(c);
   If (a+b>c) And (b+c>a) And (c+a>b) Then
      Begin
         Writeln('+Dung la Tam giac');
         p:=0.5*(a+b+c);
         s:=Sqrt(p*(p-a)*(p-b)*(p-c));
         Writeln('+Dien tich= ',s:10:2);
      End
   Else
      Writeln('+Khong phai la Tam giac');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 23: Viết chương trình Pascal tính Khối lập phương chui qua khung chữ nhật
Program Khoi_lap_phuong;
Var
   a,b,c,m,n,tam:Integer;
Begin
   Writeln('KHOI LAP PHUONG CHUI QUA KHUNG CHU NHAT');
   Writeln('---------------------------------------');
   Writeln('  *Nhap so lieu cho khoi lap phuong');
   Write('-Canh thu nhat: ');
   Readln(a);
   Write('-Canh thu hai : ');
   Readln(b);
   Write('-Canh thu ba  : ');
   Readln(c);
   Writeln('  *Nap so lieu cho khung chu nhat');
   Write('-Canh thu nhat: ');
   Readln(m);
   Write('-Canh thu hai : ');
   Readln(n);
   If (a>b) Then
      Begin
         tam:=a;
         a:=b;
         b:=tam;
      End;
   If (b>c) Then
      Begin
         tam:=b;
         b:=c;
         c:=tam;
      End;
   If (a>b) Then
      Begin
         tam:=a;
         a:=b;
         b:=tam;
      End;
   If (m>n) Then
      Begin
         tam:=m;
         m:=n;
         n:=tam;
      End;
   If (a<m) And (b<n) Then
      Writeln('+Khoi lap phuong chui qua duoc khung chu nhat')
   Else
      Writeln('+Khoi lap phuong khong chui qua duoc khung chu nhat');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.

zipBài tập 24: Viết chương trình Pascal giải hệ phương trình bậc nhất
Program He_phuong_trinh_bac_nhat;
Var
   a,b,c,d,p,q,r:Real;
Begin
   Writeln('GIAI HE PHUONG TRINH BAC NHAT');
   Writeln('        aX + bY = c');
   Writeln('        pX + qY = r');
   Writeln('-----------------------------');
   Write('Nhap a= ');
   Readln(a);
   Write('Nhap b= ');
   Readln(b);
   Write('Nhap c= ');
   Readln(c);
   Write('Nhap p= ');
   Readln(p);
   Write('Nhap q= ');
   Readln(q);
   Write('Nhap r= ');
   Readln(r);
   d:=a*a + b*b + p*p + q*q;
   If d=0 Then
      If (c*c + r*r = 0) Then
         Writeln('+He thoa man voi moi X, Y')
      Else
         Writeln('+He vo nghiem');
   If d <> 0 Then
      Begin
         d:=a*q - b*q;
         If d=0 Then
            If sqr(c*q-b*r)+sqr(a*r-p*c) = 0 then
               Writeln('+He thoa man voi moi X, Y')
            Else
               Writeln('+ He vo nghiem');
         If d <> 0 Then
            Begin
               Writeln('X = ',(c*q-b*r)/d:5:3);
               Writeln('Y = ',(a*r-p*c)/d:5:3);
            End;
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 25: Viết chương trình Pascal kiểm tra năm nhận
Program Nam_nhuan;
Var
   nam:Word;
   nhuan:boolean;
Begin
   Writeln('NAM NHUAN HAY NAM THUONG');
   Writeln('------------------------');
   Write('-Nhap vao nam can kiem tra: ');
   Readln(nam);
   If nam Mod 100 = 0 Then
      Nhuan:=(nam Mod 400)=0
   Else
      Nhuan:=(nam Mod 4)=0;
   Write('Nam: ',nam, ' la: ');
   If nhuan Then
      Writeln('nam nhuan')
   Else
      Writeln('nam thuong ( khong nhuan)');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 26: Viết chương trình Pascal kiểm tra bàn phím
Program KT_phim;
Var
   phim:Char;
Begin
   Writeln('KIEM TRA BAN PHIM');
   Writeln('-----------------');
   Write('-Bam mot phim: ');
   Readln(phim);
   Case phim Of
      'A'..'Z','a'..'z' :Writeln('+Ban vua bam mot phim ky tu');
      '0'..'9'            :Writeln('+Ban vua bam mot phim ky so');
      '+','-','*','/'   :Writeln('+Ban vua bam mot phim toan tu so hoc');
   Else                  Writeln('+Ban vua bam mot phim dac biet');
   End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 27: Viết chương trình Pascal tính diện tích các hình học sơ cấp
Program Hinh_hoc_so_cap;
Var
   a,b,c,h,r:Integer;
   s:Real;
   chon:Byte;
Begin
   Writeln('TINH DIEN TICH HINH HOC SO CAP');
   Writeln('------------------------------');
   Writeln('   1-Hinh vuong');
   Writeln('   2-Hinh chu nhat');
   Writeln('   3-Hinh tam gia1c');
   Writeln('   4-Hinh thang');
   Writeln('   5-Hinh tron');
   Writeln;
   Write('-Ban chon cac so tu 1 den 5 de tinh dien tich hinh tuong ung');
   Readln(chon);
   Case chon Of
      1   :Begin
            Write('-Nhap canh hinh vuong: ');
            Readln(a);
            s:=a*a;
            Writeln('+Dien tich hinh vuong = ',s:10:2,' met vuong');
          End;
      2   :Begin
            Write('-Nhap chieu rong : ');
            Readln(a);
            Write('-Nhap chieu dai  : ');
            Readln(b);
            s:=a*b;
            Writeln('+Dien tich hinh chu nhat = ',s:10:2,' met vuong');
          End;
       3   :Begin
            Write('-Nhap canh day : ');
            Readln(a);
            Write('-Nhap chieu cao  : ');
            Readln(h);
            s:=a*h/2;
            Writeln('+Dien tich hinh tam giac = ',s:10:2,' met vuong');
          End;
       4   :Begin
            Write('-Nhap day duoi : ');
            Readln(a);
            Write('-Nhap day tren : ');
            Readln(b);
            Write('-Nhap chieu cao: ');
            Readln(h);
            s:=0.5*(a+b)*h;
            Writeln('+Dien tich hinh thang = ',s:10:2,' met vuong');
          End;
       5   :Begin
            Write('-Nhap ban kinh : ');
            Readln(r);
            s:=r*r*pi;
            Writeln('+Dien tich hinh tron = ',s:10:2,' met vuong');
          End;
   End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 28: Viết chương trình Pascal hướng dẫn mua vé máy bay
Program Huong_dan;
Var
   chon:Byte;
Begin
   Writeln('HUONG DAN MUA VE MAY BAY');
   Writeln('------------------------');
   Writeln('   1-Tp Ho Chi Minh di Ha Noi');
   Writeln('   2-Tp Ho Chi Minh di Da Nang');
   Writeln('   3-Tp Ho Chi Minh di Nha Trang');
   Writeln('   4-Tp Ho Chi Minh di Phu Quoc');
   Writeln('   5-Tp Ho Chi Minh di Con Dao');
   Writeln('   6-Tp Ho Chi Minh di Paris');
   Writeln('   7-Tp Ho Chi Minh di London');
   Writeln('   8-Tp Ho Chi Minh di Moscow');
   Writeln('   9-Tp Ho Chi Minh di Bac Kinh');
   Writeln('  10-Tp Ho Chi Minh di Tokyo');
   Write('-Chon tuyen nao, go vao so tuong ung (1 - 10): ');
   Readln(chon);
   Case chon of
      1   :Writeln('     Xin moi den quay ve so 1');
      2   :Writeln('     Xin moi den quay ve so 2');
      3   :Writeln('     Xin moi den quay ve so 3');
      4   :Writeln('     Xin moi den quay ve so 4');
      5   :Writeln('     Xin moi den quay ve so 5');
      6   :Writeln('     Xin moi den quay ve so 6');
      7   :Writeln('     Xin moi den quay ve so 7');
      8   :Writeln('     Xin moi den quay ve so 8');
      9   :Writeln('     Xin moi den quay ve so 9');
      10   :Writeln('     Xin moi den quay ve so 10');
   Else   Writeln('-Khong co tuyen bay nay');
   End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 29: Viết chương trình Pascal cho biết thứ trong tuần
Program Thu_trong_tuan;
Var
   d:1..31; {Kieu mien con}
   m:1..12;
   y:1900..2001;
   a:Word;
Begin
   Writeln('NGAY DO LA THU MAY TRONG TUAN');
   Writeln('-----------------------------');
   Write('-Ngay: ');
   Readln(d);
   Write('-Thang: ');
   Readln(m);
   Write('-Nam: ');
   Readln(y);
   Write('+Ngay: ',d:2,' / ',m:2,' / ',y:4,' la ngay ');
   If m<3 Then
      Begin
         inc(m,12);
         Dec(y);
      End;
   a:=d+2*m+(3*(m+1) Div 5)+y+(y Div 4)+1;
   a:=a Mod 7;
   Case a Of
      0         :Writeln('Thu 7');
      1         :Writeln('Chu Nhat');
      2,3,4,5,6:Writeln('Thu ',a);
   End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 30: Viết chương trình Pascal in bài ca dao ra màn hình
Program So_ngay;
Var
   m,y,songay:Integer;
   nhuan:Boolean;
Begin
   Writeln('TINH SO NGAY CUA THANG');
   Writeln('----------------------');
   Write('-Nhap thang: ');
   Readln(m);
   Write('-Nhap nam  : ');
   Readln(y);
   Nhuan:=False;
   If (y Mod 4) = 0 Then
      Begin
         Nhuan:=True;
         If (y Mod 100 =0) And (y Mod 400 <> 0) Then
            Nhuan:=False;
      End;
   Case m Of
      1,3,5,7,8,10,12:songay:=31;
      4,6,9,11         :songay:=30;
      2               :If nhuan Then
                        songay:=29
                      Else
                         songay:=28;
   End;
   Writeln;
   Writeln('Thang ',m:2,' / ',y:4,' co : ',songay,' ngay');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal tính tổng bậc 3 của N số nguyên đầu tiên
Program Tong_bac_ba;
Var
   k,n:Byte;
   s:Longint;
Begin
   Writeln('TINH TONG BAC 3 CUA N SO NGUYEN DAU TIEN');
   Writeln('----------------------------------------');
   Write('-Nhap so N= ');
   Readln(n);
   S:=0;
   For k:=1 To N Do
      S:=S+(k*k*k);
   Writeln('+Tong bac 3 cua ',n,' so nguyen dau tien = ',s);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 2: Viết chương trình Pascal tìm các ước của số nguyên N
Program uoc_so;
Var
   i,n:Integer;
Begin
   Writeln('TIM CAC UOC SO CUA SO NGUYEN');
   Writeln('----------------------------');
   Write('-Nhap mot so nguyen: ');
   Readln(n);
   Writeln;
   Writeln('+Cac uoc so cua so ',n,' la: ');
   Writeln;
   For i:=1 To N Do
      If (n Mod i) = 0 Then
         Write(i:6);
   Writeln;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal vẽ tam giác cân bằng các dấu sao (*)
Program Tam_giac_can;
Var
   cao,i,j:Byte;
Begin
   Writeln('       TAM GIAC CAN DAC');
   Writeln('Chieu cao gioi han tu 1 den 22');
   Writeln('------------------------------');
   Write('-Nhap chieu cao: ');
   Readln(cao);
   For i:=1 To cao Do
      Begin
         Write(#32:cao-i+1);
         For J:=1 To (2*i-1) Do
            Write('*');
            Writeln;
      End;
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal tính tổng nghịch đảo N số nguyê đầu tiên
Program Tong_nghich_dao;
Var
   n,i:Integer;
   s:Real;
Begin
   Writeln('TINH TONG NGHICH DAO N SO NGUYEN DAU TIEN');
   Writeln('-----------------------------------------');
   Write('-Nhap so N= ');
   Readln(n);
   S:=0;
   For i:= 1 To N Do
      S:=S+(1/i);
   Writeln;
   Writeln('+Tong nghich dao cua ',n,' so nguyen dau tien= ',S:0:2);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal tính tổng bình phương các số lẻ
Program Tong_binh_phuong;
Var
   i,n,tong:Integer;
Begin
   Writeln('TINH TONG BINH PHUONG CAC SO LE');
   Writeln('          Tu 1 den N');
   Writeln('-------------------------------');
   Write('-Nhap N= ');
   Readln(n);
   tong:=0;
   For i:=1 To N Do
      If odd(i) Then
         tong:=tong+sqr(i);
   Writeln;
   Writeln('+Tong binh phuong cac so le cua ',n,' so nguyen= ',tong);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 6: Viết chương trình Pascal tìm số lớn nhất trong N số nguyên
Program Cuc_dai;
Var
   i,n:Byte;
   so,solon:Integer;
Begin
   Writeln('TIM SO LON NHAT TRONG N SO NGUYEN');
   Writeln('---------------------------------');
   Write('-Muon nhap bao nhieu so: ');
   Readln(n);
   i:=1;
   Write('-So thu ',i,' = ');
   Readln(so);
   solon:=so;
   For i:=2 To N Do
      Begin
         Write('-So thu ',i,' = ');
         Readln(so);
         If solon < so Then
            solon:=so;
      End;
   Writeln;
   Writeln('+So lon nhat trong ',n,' so vua nhap la so: ',solon);
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal tính giai thừa
Program Tinh_giai_thua;
Var
   n,i:Integer;
   gt:LongInt;
Begin
   Writeln('TINH N!');
   Writeln('-------');
   Write('-Nhap N= ');
   Readln(n);
   gt:=1;
   For i:=1 To n Do
      gt:=gt*i;
   Writeln;
   Writeln('+Giai thua cua ',n,' = ',gt);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal vẽ ra màn hình tam giác rỗng
Program Tam_giac_rong;
Var
   cao,i:Byte;
Begin
   Writeln('VE TAM GIAC RONG');
   Writeln('----------------');
   Write('-Nhap chieu cao cua tam giac: ');
   Readln(cao);
   Writeln('*':cao);
   For i:=2 To cao-1 Do
      Writeln('*':cao-i+1,'*':2*i-2);
   For i:=1 To 2*cao-1 Do
      Write('*');
   Writeln;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 9: Viết chương trình Pascal in xen kẽ các dấu sao (*)
Program In_xen_ke;
Var
   dai,rong,i,j:Byte;
Begin
   Writeln('IN XEN KE CAC DAU SAO');
   Writeln('--------------------');
   Write('-Nhap chieu dai: ');
   Readln(dai);
   Writeln('-Nhap chieu rong: ');
   Readln(rong);
   For i:=1 To rong Do
      Begin
         If i Mod 2 = 0 Then
            For j:=1 To dai Div 2 Do
               Write(' *') {dau trang va dau sao}
         Else
            For j:=1 To dai Div 2 +dai Mod 2 Do
               Write('* ');  {dau sao va dau trang}
         Writeln;
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 10: Viết chương trình Pascal đếm chữ trong chuỗi
Program Dem_chu;
Var
   chuoi:String;
   i,dem,dai:Byte;
Begin
   Writeln('DEM CHU ''ng'' TRONG CHUOI');
   Writeln('----------------------');
   Write('-Nhap mot chuoi bat ky: ');
   Readln(chuoi);
   dem:=0;
   dai:=length(chuoi);
     For i:=1 To dai Do
      If chuoi[i]+chuoi[i+1]='ng' Then
         inc(dem);
   Writeln;
   Writeln('Trong cau: ','" ',chuoi,' "');
   Writeln('Co ',dem,' lan xuat hien chu ''ng''');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 11: Viết chương trình Pascal phép chia chỉ là phép trừ
Program Phep_chia;
Var
   chia,bichia,luu,thuong,du:Integer;
Begin
   Writeln('PHEP CHIA CHI LA PHEP TRU');
   Writeln('-------------------------');
   Write('-Nhap so bi chia: ');
   Readln(bichia);
   Write('-Nhap so chia: ');
   Readln(chia);
   luu:=bichia;
   thuong:=0;
   While bichia >=chia Do
      Begin
         bichia:=bichia-chia;
         thuong:=thuong+1;
      End;
   du:=bichia;
   Writeln;
   Writeln('+Neu dem so ',luu,' chia cho so ',chia,' ket qua la: ');
   Writeln('  *So thuong = ',thuong:6);
   Writeln('  *So du     = ',du:6);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 12: Viết chương trình Pascal kiểm tra tính nguyên tố của 1 số nguyên
Program So_nguyen_to;
Var
   n,i:Integer;
Begin
   Writeln('SO VUA NHAP CO PHAI LA SO NGUYEN TO ?');
   Writeln('-------------------------------------');
   Write('-Nhap mot so : ');
   Readln(n);
   While n > 1 Do
      Begin
         i:=2;
         While (n Mod i <> 0) Do
            i:=i+1;
            if i=n Then
               Writeln('-So ',n,' la so nguyen to')
            Else
               Writeln('-So ',n,' khong phai la so nguyen to');
            Write('-Nhap mot so (so 0 de ngung): ');
            Readln(n);
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 13: Viết chương trình Pascal xử lỳ điểm thi
Program Nhap_diem;
Const
   Sentinel=-1;
Var
   ten:String;
   diem,cao,thap,dem:Integer;
Begin
   Writeln('XU LY DIEM THI');
   Writeln('--------------');
   cao:=0;
   thap:=10;
   dem:=0;
   Write('-Ho va ten sinh vien: ');
   Readln(ten);
   Write('-Nhap diem thi: ');
   Readln(diem);
   While diem <> Sentinel Do
      Begin
         If diem > cao Then
            cao:=diem;
         If diem < thap Then
            thap:=diem;
         dem:=dem+1;
         Write('-Nhap diem thi: ');
         Readln(diem)
      End;
   Writeln;
   Writeln('+Sinh vien: ',ten);
   Writeln('+Da co ',dem,' diem thi');
   Writeln('+Diem cao nhat la: ',cao);
   Writeln('+Diem thap nhat la: ',thap);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln;
End.

zipBài tập 14: Viết chương trình Pascal in dãy số Fibonaci
Program Day_so_Fibonaci;
Var
   n,j,pj,pj1,pj2:Integer;
Begin
   Writeln('IN DAY SO FIBONACI');
   Writeln('------------------');
   Write('-Nhap so N= ');
   Readln(n);
   j:=2;
   pj:=1;
   pj1:=1;
   While j <> n Do
      Begin
         pj2:=pj1;
         pj1:=pj;
         pj:=pj1+pj2;
         j:=j+1;
      End;
   Writeln;
   Writeln('+So hang thu ',n,' cua day Fibonaci = ',pj);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 15: Viết chương trình Pascal tính trị của đa thức Pn
Program Da_thuc;
Var
   n,i:Integer;
   x,a,dathuc: Real;
Begin
   Writeln('TINH TRI CUA DA THUC Pn');
   Writeln('-----------------------');
   Write('-Nhap so N= ');
   Readln(n);
   Write('-Nhap so X= ');
   Readln(x);
   i:=n;
   Write('-Nhap tri so A',i,' =');
   Readln(a);
   dathuc:=a;
   While i <> 0 Do
      Begin
         i:=i-1;
            Write('-Nhap tri so A',i,' =');
            Readln(a);
            dathuc:=dathuc * x + a
      End;
   Writeln;
   Writeln('+Tri cua da thuc = ',dathuc:12:10);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 16: Viết chương trình Pascal tính luỹ thừa xn
Program Luy_thua;
Var
   x,n,tich,luythua:Integer;
Begin
   Writeln('TINH TRI CUA X LUY THUA N');
   Writeln('-------------------------');
   Write('-Nhap vao so X= ');
   Readln(x);
   Write('-Nhap vao luy thua N= ');
   Readln(n);
   tich:=1;
   luythua:=1;
   While luythua <= n Do
      Begin
         tich:=tich * x;
         luythua:=luythua + 1;
      End;
   Writeln;
   Writeln(x,' luy thua ',n,' = ',tich);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.

zipBài tập 17: Viết chương trình Pascal cắt chuỗi thành từng từ
Program cat_chuoi;
Var
   chuoi,tam:String;
Begin
   Writeln('CAT CHUOI THANH TUNG TU');
   Writeln('------------------------');
   Write('-Nhap mot chuoi: ');
   Readln(chuoi);
   While chuoi <> '' Do
      Begin
         While chuoi[1] = #23 Do
            chuoi:=copy(chuoi,2,255);
            If pos(#32,chuoi) <> 0 Then
               tam:=copy(chuoi,1,pos(#32,chuoi))
            Else
               tam:=chuoi;
            Writeln(tam);
            Delete(chuoi,1,length(tam));
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 18: Viết chương trình Pascal phân tích N thành các thừa số nguyên tố
Program thuaso;
Var
   n,i:Integer;
Begin
   Writeln('PHAN TICH N THANH TICH CAC THUA SO NGUYEN TO');
   Writeln('--------------------------------------------');
   Write('-Nhap so N= ');
   Readln(n);
   Repeat
      i:=2;
      While (n Mod i <> 0) And (i < n ) Do
         i:=i + 1;
      Write(i:4);
      n:=n Div i;
   Until n=1;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 19: Viết chương trình Pascal giải phương trình bậc 2: ax2 + bx + c = 0
Program PTB2;
Var
   a,b,c,delta : Integer;
   x1,x2:Real;
Begin
   Writeln('GIAI PHUONG TRINH BAC 2');
   Writeln('Bat buoc he so a <> 0');
   Writeln('---------------------');
   Repeat
      Write('-Nhap he so a= ');
      Readln(a);
   Until a<>0;
   Write('-Nhap he so b= ');
   Readln(b);
   Write('-Nhap he so c= ');
   Readln(c);
   delta:=b*b - 4*a*c;
   If Delta < 0 Then
      Writeln('+Phuong trinh vo nghiem')
   Else
      If delta = 0 Then
         Writeln('+Phuong trinh co 2 nghiem bang nhau X= ',-b/(2*a):6:2)
      Else
         Begin
            Writeln('Phuong trinh co 2 nghiem phan biet');
            Writeln('+X1 = ',(-b+sqrt(delta))/(2*a):6:2);
            Writeln('+X2 = ',(-b-sqrt(delta))/(2*a):6:2);
         End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 20: Viết chương trình Pascal tìm mã ASCII của ký tự
Program ma_ASCII;
Var
   kytu:Char;
Begin
   Writeln('MA ASCII CUA KY TU');
   Writeln('------------------');
   Repeat
      Write('-Nhap mot ky tu (bam so 0 de ket thuc) ');
      Readln(kytu);
      Writeln('+Ky tu ',kytu,' co ma ASCII = ',ord(kytu));
      Writeln;
   Until kytu='0';
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 21: Viết chương trình Pascal máy tính tay
Program May_tinh_tay;
Var
   so1,so2,kq:Real;
   toantu,tiep:Char;
   thuchien:Boolean;
Begin
   Writeln('        MAY TINH TAY');
   Writeln('Thuc hien 4 phep tinh so hoc');
   Writeln('----------------------------');
   Repeat
      Write('-Bam so: ');
      Readln(so1);
      Write('-Phep toan(+,-,*,/): ');
      Readln(toantu);
      Write('-Bam so: ');
      Readln(so2);
      thuchien:=True;
      Case toantu Of
         '+'   :kq:=so1+so2;
         '-'   :kq:=so1-so2;
         '*'   :kq:=so1*so2;
         '/'   :If so2 <> 0 Then
                     kq:=so1/so2
                Else
                      thuchien:=False;
      Else      thuchien:=False;
      End;
      If thuchien Then
         Writeln('+Ket qua = ',kq:6:2)
      Else
         Writeln('+Khong lam duoc');
      Writeln;
      Write('-Thuc hien tiep khong ? (C/K) ');
      Readln(tiep);
   Until Upcase(tiep) = 'K';
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 22: Viết chương trình Pascal kiểm tra tinh nguyên tố
Program So_nguyen_to;
Var
   n,i:Integer;
Begin
   Writeln('SO NGUYEN TO');
   Writeln('------------');
   Repeat
      Write('-Nhap so N (bam so 0 de ngung)= ');
      Readln(n);
      Writeln;
      i:=1;
      If n > 1 Then
         Repeat
            i:= i +1;
         Until (n Mod i = 0);
      If i= n Then
         Writeln('     +So ',n,' la so nguyen to')
      Else
         Writeln('     +So ',n, ' khong phai la so nguyen to');
   Writeln;
   Until n=0;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln;
End.
zipBài tập 23: Viết chương trình Pascal đổi số hệ 10 sang hệ 2
Program Doi_so_he_2;
Var
   n,so:Integer;
   tiep:Char;
Begin
   Writeln('DOI SO HE 10 SANG HE 2');
   Writeln('----------------------');
   Repeat
      Write('-Nhap so nguyen he 10: ');
      Readln(so);
      n:=16384; {Gan n= 2 luy thua 14}
      Writeln;
      Write('+So he 2 la ');
      Repeat
         Write(so Div n);
         so:=so - n * (so Div n);
         n:= n Div 2;
      Until n=0;
      Writeln;
      Write('-Tiep tuc nua khong (C/K) ');
      Readln(tiep);
   Until Upcase(tiep)='K';
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 24: Viết chương trình Pascal đổi từ hệ 10 sang hệ 16
Program Doi_he_16;
Var
   n,so,chuso:Integer;
   tiep:Char;
Begin
   Writeln('DOI SO HE 10 SANG HE 16');
   Writeln('-----------------------');
   Repeat
      Write('-Nhap so he 10 = ');
      Readln(so);
      n:=4096; {16 luy thua 3}
      Write('+Ky so he 16= ');
      Repeat
         chuso:=so Div n;
         Case chuso Of
            0..9:Write(chuso);
            10 .. 15:Write(chr(chuso + 55));
         End;
         so:=so- n*(so Div n);
         n:=n Div 16;
      Until n=0;
      Writeln;
      Write('-Co thuc hien tiep khong ? (C/K) ');
      Readln(tiep);
   Until Upcase(tiep)='K';
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 25: Viết chương trình Pascal tìm USCLN và BSCNN cùa 2 số nguyên dương
Program Uoc_so_chung_Boi_so_chung;
Var
   so1,so2:Word;
   p:LongInt;
   tiep:Char;
Begin
   Writeln('TINH UOC SO CHUNG LON NHAT, BOI SO CHUNG NHO NHAT');
   Writeln('       Su dung vong lap Repeat... Until');
   Writeln('-------------------------------------------------');
   Repeat
      Writeln;
      Write('-Nhap so thu nhat: ');
      Readln(so1);
      Write('-Nhap so thu hai : ');
      Readln(so2);
      p:=so1 * so2;
      Write('+Uoc so chung lon nhat cua ',so1,' va ',so2,' la: ');
      Repeat
         if so1 > so2 Then
            so1:=so1 - so2
         Else
            so2:=so2 - so1;
      Until so1=so2;
      Writeln(so1);
      Writeln;
      Writeln('+Boi so chung nho nhat: ',P Div so1);
      Writeln;
      Write('-Co tiep tuc nua khong ? (C/K) ');
      Readln(tiep);
   Until Upcase(tiep)='K';
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 26: Viết chương trình Pascal in lá cờ nước Mỹ ra màn hình
Program Co_My;
Var
i,j,dai1,dai2,rong1,rong2:Byte;
Begin
   Writeln('IN LA CO NUOC MY RA MAN HINH');
   Writeln('-----------------------------');
   Write('-Nhap chieu rong_1: ');
   Readln(rong1);
   Write('-Nhap chieu rong_2: ');
   Readln(rong2);
   Write('-Nhap chieu dai_1: ');
   Readln(dai1);
   Write('-Nhap chieu dai_2: ');
   Readln(dai2);
   For i:=1 To rong1 Do
      Begin
         If odd(i) Then
            Begin
               For j:=1 To (dai1 Div 2) Do
                  Write('*',' ');
               If odd(dai1) Then
                  Write(' ','*');
            End
         Else
            Begin
               For j:=1 To (dai1 Div 2) Do
                  Write(' ','*');
               If odd(dai1) Then
                  Write(' ');
            End;
         For j:=1 to dai2 Do
            Write('=');
         Writeln;
      End;
      For i:=1 To rong2 Do
         Begin
            For j:=1 To dai1+dai2 Do
               Write('=');
            Writeln;
         End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 27: Viết chương trình Pascal tính dân số sau 5 năm
Program Dan_so;
Var
   i:Byte;
   sodan:LongInt;
Begin
   Writeln('TINH DAN SO SAU 5 NAM');
   Writeln('---------------------');
   sodan:=5000000;
   Writeln('-So dan hien nay = ',sodan);
   Writeln('-Ty le tang dan so hang nam = 1.5%');
   Writeln;
   Writeln('So dan tang tung nam trong 5 nam toi la:');
   For i:=1 To 5 Do
      Begin
         sodan:=round(sodan * 1.015);
         Writeln('-Nam thu ',i,' so dan la: ',sodan,' nguoi');
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 28: Viết chương trình Pascal tìm các số nguyên khác nhau
Program Tim_cac_so_nguyen;
Var
   a,b,c,d:Integer;
   khac:Boolean;
Begin
   Writeln('TIM CAC SO NGUYEN KHAC NHAU');
   Writeln('---------------------------');
   For a:=2 To 10 Do
      For b:=2 To 10 do
         For c:=2 To 10 Do
            For d:=2 To 10 Do
               Begin
                  khac:=(a<>b) And (a<>c) And (a<>d)
                    And (b<>c) And (b<>d) And (c<>d);
                  If khac And (a*d*d=b*c*c*c) Then
                  Writeln(a,'*',d,'*',d,' = ',b,'*',c,'*',c,'*',c);
               End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 29: Viết chương trình Pascal tính tổ hợp chập k của N
Program To_hop_chp_k_cua_N;
Var
   i,k,n:Integer;
   c:Real;
Begin
   Writeln('TINH TO HOP CHAP k CUA N');
   Writeln('     Voi k <= N');
   Writeln('------------------------');
   Write('-Nhap so N= ');
   Readln(n);
   Write('-Nhap so phan tu k= ');
   Readln(k);
   If k > N Then
      Writeln('+Vi k lon hon N nen khong tinh duoc')
   Else
      Begin
         c:=1;
         For i:=1 To k Do
            c:=c*(n-k+i)/i;
         Writeln('+To hop chap ',k,' cua ',n,' la: ',c:2:2);
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 30: Viết chương trình Pascal tính bài toán sau
Program Tram_trau;
Var
   dung,nam,gia,co,trau:Integer;
Begin
   Writeln('BAI TOAN CO DIEN');
   Writeln('Tram trau tram co');
   Writeln('Trau dung an 5');
   Writeln('Trau nam an 3');
   Writeln('Ba trau gia an 1');
   Writeln('----------------');
   Writeln('           Bai toan nay co cac loi giai sau');
   For dung:=0 To 20 Do
      For nam:=0 To 33-dung Do
         For gia:=0 To (100-(dung+nam)) Do
            Begin
               co:=5*dung+3*nam+(gia Div 3);
               trau:=dung+nam+gia;
               If (gia Mod 3 =0) And (trau=100) And ( co=100) Then
                  Writeln('-Trau dung ',dung,' con, -Trau nam ',nam,' con, -Trau gia ',gia,' con');
            End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 31: Viết chương trình Pascal giải bài toán
Program ga_cho;
Var
   x,y,n:Integer;
Begin
     n:=1;
   Writeln('* CAC LOI GIAI BAI TOAN CO DIEN GA,CHO');
   Writeln('----------------------------------');
   For x:=1 To 36 Do
      For y:=1 To (36-x) Do
         If ((x*2)+(y*4) =100) then {and ((x+y) =36) Then}
            Begin
                Writeln('      * Loi giai thu : ',n:3);
              Write('- Ga  = ',x:2,' con = ',(x*2):2,' chan   ');
              Write('- Cho = ',y:2,' con = ',(y*4):2,' chan ');
              If x+y<36 Then
                   Writeln('Ga+Cho= ',x+y:2,' con,khong dung')
              Else If x+y=36 Then
                    Writeln('Ga+Cho= ',x+y:2,' con,loi giai dung');
                  n:=n+1;
             End;
       Writeln('      * Tong cong co: ',(n-1):3,' loi giai');
       Writeln;
       Writeln('   Bam phim <Enter> de ket thuc');
       Readln
   End.
zipBài tập 32: Viết chương trình Pascal in bảng cửu chương
Program Bang_cuu_chuong;
Var
   i,j:Integer;
Begin
   Writeln('                          BANG CUU CHUONG');
   Writeln('                          ---------------');
   For i:=1 To 9 Do
      For j:=1 To 5 Do
         Write(j:2,' lan ',i:2,' = ',j*i:2,'  ');
   Writeln;
   Writeln('           ---------------------------------------------------');
   For i:=1 To 9 Do
      For j:=6 To 10 Do
         Write(j:2,' lan ',i:2,' = ',j*i:2,'  ');
   Writeln('           ---------------------------------------------------');
   Writeln;
   Write('                     Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 33: Viết chương trình Pascal giải bài toán gấp giấy
Program gap_giay;
Var
   day:Real;
   solan:Integer;
Begin
   Writeln('GAP GIAY CO DO DAY 1 MET');
   Writeln('------------------------');
   day:=0.1;
   solan:=0;
   While day < 1000 Do
      Begin
         day:=day * 2;
         solan:=solan+1;
      End;
   Writeln;
   Writeln('+Phai gap toi: ',solan,' lan');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 34: Viết chương trình Pascal tìm các số nguyên tố từ 2 đến N
Program Tim_so_nguyen_to;
Var
   n,i,j:Integer;
   nguyento:Boolean;
Begin
   Writeln('TIM CAC SO NGUYEN TO TU 2 DEN N');
   Writeln('-------------------------------');
   Write('-Nhap so N= ');
   Readln(n);
   For i:=2 To n Do
      Begin
         nguyento:=True;
         j:=2;
            While nguyento And (j <i) Do
                 Begin
                  If (i Mod j)=0 Then
                     nguyento:=False;
                     j:=j+1;
               End;
         If nguyento Then
            Write(i:4);
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 35: Viết chương trình Pascal tính thánh tích của đội bóng
Program Doi_bong;
Var
   thang,tong,cauthu,i:Integer;
   tb:Real;
   tiep:Char;
Begin
   Writeln('THANH TICH CUA DOI BONG');
   Writeln('-----------------------');
   i:=1;
   cauthu:=0;
   tong:=0;
   tiep:='c';
   While Upcase(tiep)='C' Do
      Begin
         Write('-Cau thu thu ',i,' co so ban thang: ');
         Readln(thang);
         i:=i+1;
         tong:=tong+thang;
         cauthu:=cauthu+1;
         Write('-Nhap tiep nua khong (c/k) ');
         Readln(tiep);
      End;
   tb:=tong/cauthu;
   Writeln;
   Writeln('+So cau thu cua Doi= ',cauthu);
   Writeln('+So ban thang trung binh cua Doi= ',tb:5:1);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 36: Viết chương trình Pascal in chữ HOA
Program In_Chu_hoa;
Var
   kytu:Char;
Begin
   Writeln('IN CHU HOA');
   Writeln('----------');
   Write('-Nhap ky tu: ');
   Readln(kytu);
   While ('A' <= kytu) And (kytu <='Z') Do
      Begin
         Writeln(kytu);
         Write('-Nhap ky tu: ');
         Readln(kytu);
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 37: Viết chương trình Pascal tìm USCLN, BSCNN
Program Uoc_so_Boi_so_chung;
Var
   a,b:Word;
   p:LongInt;
Begin
   Writeln('UOC SO CHUNG LON NHAT, BOI SO CHUNG NHO NHAT');
   Writeln('--------------------------------------------');
   Write('-Nhap so thu nhat a= ');
   Readln(a);
   Write('-Nhap so thu hai b= ');
   Readln(b);
   p:=a * b;
   Write('+Uoc so chung lon nhat cua ',a,' va ',b,' la: ');
   While a <> b Do
      Begin
         If a > b Then
            a:=a - b
         Else
            b:=b-a
      End;
   Writeln(a);
   Writeln;
   Writeln('+Boi so chung nho nhat cua chung la: ',p Div a);
   writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 38: Viết chương trình Pascal đoán số bàn thắng
Program Doan_so;
Var
   tren,duoi,giua:Integer;
   chon:Word;
Begin
   tren:=100;
   duoi:=1;
   While duoi < tren Do
      Begin
         Writeln('DOAN SO BAN DANG NGHI TRONG DAU');
         Writeln('-------------------------------');
         giua:=(tren+duoi) Div 2;
         Writeln('-So cua ban Ty: ',giua);
         Writeln('-Neu go so 0 se ngung');
         Writeln('-Neu ban Ty noi so ',giua,' nho hon thi ban Teo go 1 ');
         Write('-Neu ban Ty noi so ',giua,' lon hon thi ban Teo go 2 ');
         Readln(chon);
         If chon = 0 Then
            exit;
         If chon = 1 Then
            duoi:=giua
         Else
            tren:=giua
      End;
   Readln
End.
zipBài tập 39: Viết chương trình Pascal nhập và in ký tự, ký số ra màn hình
Program Nhap_ky_tu;
Var
   kytu:Char;
   thoat:Boolean;
Begin
   Writeln('NHAP VA IN KY TU, KY SO RA MAN HINH');
   Writeln('-----------------------------------');
   thoat:=False;
   Repeat
      Write('-Nhap ky tu (bam ky tu dieu khien) de ket thuc: ');
      Readln(kytu);
      Case kytu Of
         'A'..'Z':Writeln(kytu,' ,chu thuong tuong ung la: ',chr(ord(kytu)+32));
         'a'..'z':Writeln(kytu,' ,chu hoa tuong ung la: ',chr(ord(kytu)-32));
         '0'..'9':Writeln(kytu);
      Else    thoat:=True;
      End;
   Until thoat;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 40: Viết chương trình Pascal Gửi tiền tiết kiệm
Program Gui_tiet_kiem;
Var
   x,y:Real;
   thang:Word;
   tiep:Char;
Begin
   Writeln('GUI TIEN TIET KIEM');
   Writeln('------------------');
   Repeat
      Write('-So tien hien co: ');
      Readln(x);
      Write('-So tien muon co: ');
      Readln(y);
      thang:=0;
      Repeat
         inc(thang);
         x:= x *1.015;
      Until x >=y;
      Writeln('+Thoi gian can gui: ',thang,' thang');
      Writeln;
      Write('-Co tiep tuc nua khong (C/K) ');
      Readln(tiep);
   Until Upcase(tiep)='K';
End.
zipBài tập 41: Viết chương trình Pascal nhập và tính điểm trung bình lớp
Program Nhap_diem;
Var
   toan,tong,tb:Real;
   hs:Byte;
   tiep:Char;
Begin
   Writeln('NHAP DIEM MON TOAN VA TINH DIEM TRUNG BINH CUA LOP');
   Writeln('--------------------------------------------------');
   hs:=1;
   tong:=0;
   tiep:='C';
   Repeat
      Writeln('-Hoc sinh thu: ',hs);
      Write('-Diem mon Toan : ');
      Readln(toan);
      tong:=tong+toan;
      hs:=hs+1;
      Write('   -Nhap nua khong (C/K) ');
      Readln(tiep);
   Until Upcase(tiep)='K';
   hs:=hs-1;
   tb:=tong/hs;
   Writeln('+Tong so diem = ',tong:5:2,' diem');
   Writeln('+Tong so ca lop co = ',hs,' hoc sinh');
   Writeln('+Diem trung binh cua mon Toan= ',tb:5:2,' diem');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal tính diện tích, chu vi hình chữ nhật dưới dạng chương trình con
Program Chu_vi_Dien_tich;
Var
   d,r,p,s:Integer;
   tiep:Char;
   (*------------------*)
   Procedure Chuvi(x,y:Integer);
   Begin
      p:=(x+y)*2;
   End;
  (*------------------*)
   Procedure Dientich(x,y:Integer);
   Begin
      s:=x * y;
   End;
   (*------------------*)
Begin
   Repeat
      Writeln('TINH CHU VI, DIEN TICH HINH CHU NHAT');
      Writeln('           Su dung thu tuc');
      Writeln('------------------------------------');
      Write('-Nhap chieu rong: ');
      Readln(r);
      Write('-Nhap chieu dai : ');
      Readln(d);
      Chuvi(r,d);
      Dientich(r,d);
      Writeln;
      Writeln('+Chu vi hinh chu nhat= ',p);
      Writeln('+Dien tich hinh chu nhat= ',s);
      Writeln;
      Write('  Co thuc hien tiep khong ? (c/k) ');
      Readln(tiep);
   Until (tiep='k') Or (tiep='K');
End.
zipBài tập 2: Viết chương trình Pascal vẽ ra màn hình Hình CHữ Nhật
Program Ve_hinh_chu_nhat;
Const
   Hoathi='*';
Var
   r,d,i:Integer;
   tiep:Char;
(*---------------*)
   Procedure Ve(x,y:Integer);
   Var
      k:Integer;
   Begin
      For k:=1 To y Do
         Write(Hoathi);
      Writeln;
      For k:=1 To x-2 Do
         Writeln(Hoathi,Hoathi:y-1);
      For k:=1 To y Do
         Write(Hoathi);
      Writeln;
   End;
(*---------------*)
Begin
   Repeat
      Writeln('VE HINH CHU NHAT RONG');
      Writeln('   Dung thu tuc');
      Writeln('---------------------');
      Write('-Chieu rong = ');
      Readln(r);
      Write('-Chieu dai = ');
      Readln(d);
      Ve(r,d);
      Writeln;
      Write('  Co tiep tuc khong ? (c/k) ');
      Readln(tiep);
   Until Upcase(tiep)='K';
End.
zipBài tập 3: Viết chương trình Pascal Đổi chỗ 2 số nguyên
Program Doi_cho;
Var
   so1,so2:Integer;
(*-----------------*)
   Procedure Doi(Var n,m:Integer);
   Var
      tam:Integer;
   Begin
      tam:=n;
      n:=m;
      m:=tam;
   End;
(*-----------------*)
Begin
   Writeln('DOI CHO 2 SO');
   Writeln('Dung thu tuc');
   Writeln('------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai: ');
   Readln(so2);
   Writeln('=================');
   Writeln('    Truoc khi doi cho');
   Writeln('+So thu nhat = ',so1);
   Writeln('+So thu hai  = ',so2);
   Writeln('    Sau khi doi cho');
   Doi(so1,so2);
   Writeln('*So thu nhat    : ',so1);
   Writeln('*So thu hai     : ',so2);
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal Đảo ngược một số
Program Dao_so;
Var
   n:LongInt;
(*-------------------*)
   Procedure Daoso(x:LongInt);
   Begin
      Write(x Mod 10);
      If (x Div 10) <> 0 Then
         Daoso(x Div 10)
   End;
(*-------------------*)
Begin
   Writeln('DAO NGUOC MOT SO');
   Writeln(' Dung thu tuc');
   Writeln('--------------');
   Write('-Nhap mot so nguyen: ');
   Readln(n);
   Writeln;
   Writeln('+So nhap vao la = ',n);
   Write('+Bay gio la     = ');
   Daoso(n);
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal Đổi chữ thường ra chữ HOA
Program Doi_chu_hoa;
Var
   Chuoi:String;
(*-----------------*)
   Procedure Doi(Var St:String);
   Var
      i:Byte;
   Begin
      For i:=1 To Length(St) Do
         St[i]:=Upcase(St[i]);
   End;
(*-----------------*)
Begin
   Writeln('DOI CHU THUONG RA CHU HOA');
   Writeln('      Dung thu tuc');
   Writeln('-------------------------');
   Write('-Nhap mot chuoi ky tu : ');
   Readln(Chuoi);
   Writeln;
   Doi(Chuoi);
   Writeln('+Doi ra chu hoa = ',chuoi);
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 6: Viết chương trình Pascal Tính tổng nghịch đảo của N số nguyên
Program Tong_nghich_dao;
Var
   n,k :1..30; {Kieu mien con }
   s:Real;
(*-------------------*)
   Function So(i:Integer):Integer;
   Var
      j:1..30;
      tam:LongInt;
   Begin
      tam:=1;
      For j:=1 To i Do
         tam:=tam * j;
         So:=tam;
   End;
(*-------------------*)
Begin
   Writeln('TONG NGHICH DAO CUA N SO NGUYEN');
   Writeln('        Su dung ham');
   Writeln('-------------------------------');
   Write('-Nhap so N = ');
   Readln(n);
   s:=0;
   For k:=1 To n Do
      s:=s+1/so(k);
   Writeln;
   Writeln('+Tong nghich dao cua ',n,' so nguyen la: ',s:10:2);
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal Tính giai thừa n!
Program Giai_thua;
Var
   n:Integer;
(*---------------------*)
   Function Gt(x:Integer):Integer;
   Var
      k,s:Integer;
   Begin
      s:=1;
      For k:=1 To x Do
         s:=s*k;
      Gt:=s;
   End;
(*---------------------*)
Begin
   Writeln('TINH GIAI THUA CUA N');
   Writeln('    Su dung ham');
   Writeln('--------------------');
   Write('-Nhap N= ');
   Readln(n);
   Writeln;
   Writeln('+Giai thua cua ',n,' = ',Gt(n));
   Writeln;
   Write('  Bam <Enter> de ket thuc ');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal Đổi hệ cơ số 10 sang hệ cơ số 16
Program Doi_he_so;
Var
   n:Integer;
(*------------------*)
   Function Doi(so:Integer):String;
   Const
      ky_so:Array[0..15] Of Char =('0','1','2','3','4','5',
                  '6','7','8','9','A','B','C','D','E','F');
   Var
      tam1:Integer;
      tam2:String;
   Begin
      tam1:=Hi(so);
      tam2:=ky_so[tam1 Shr 4] + ky_so[tam1 And $0F];
      tam1:=Lo(so);
      Doi:=tam2+ky_so[tam1 Shr 4] +Ky_so[tam1 And $0F]
   End;
(*------------------*)
Begin
   Repeat
      Writeln('DOI SO HE 10 SANG HE 16');
      Writeln('     Su dung ham ');
      Writeln('-----------------------');
      Writeln('Nhap mot so nguyen tu -32768 den 32767');
      Write('neu nhap so 0 se ket thuc ');
      Readln(n);
      Writeln;
      Writeln('+So he 10 la = ',n);
      Writeln('+Doi sang he 16 la = ',Doi(n));
      Writeln;
   Until n=0;
End.
zipBài tập 9: Viết chương trình Pascal Đổi hệ cơ số 16 sang hệ cơ số 10
Program Doi_he_so;
Var
   Ky_so:String;
(*------------------*)
   Function Doiso(x:String):Integer;
   Var
      j,tong,nhan,so:Integer;
      tam:Char;
   Begin
      tong:=0;
      nhan:=1;
      For j:= length(x) Downto 1 Do
         Begin
            tam:=x[j];
            If Ord(tam)= 32 Then
               tam:='0';
            If tam in['0'..'9','A'..'F'] Then   {Toan tu in}
               Begin
                  so:=Ord(tam) - 48;
                  If so > 9 Then
                     so:=so-7;
                  tong:=tong + so*nhan;
               End
            Else
               Begin
                  Doiso:=0;
                  Exit;
               End;
            nhan:=nhan*16
         End;
      Doiso:=tong;
   End;
(*------------------*)
Begin
   Writeln('DOI SO HE 16 SANG HE 10');
   Writeln('      Su dung ham');
   Writeln('------------------------');
   Repeat
      Write('Nhap ky so he 16 (go kk de dung): ');
      Readln(ky_so);
      Writeln;
      Writeln('+Doi sang he 10 la = ',Doiso(ky_so));
      Writeln;
   Until ky_so='kk';
End.
zipBài tập 10: Viết chương trình Pascal Kiểm tra tính hợp lệ của Ngày Tháng Năm
Program Kiem_tra_ngay;
TYPE
   ngay=1..31;
   thang=1..12;
Var
   d:ngay;
   m:thang;
   y:Word;
(*--------------------*)
   Function Nhuan(Nam:Word):Boolean;
   Begin
      If nam Mod 100 = 0 Then
         Nhuan:=(Nam Mod 400)=0
      Else
         Nhuan:=(Nam Mod 4)=0;
   End;
(*--------------------*)
   Function So_ngay(d:Ngay; m:Thang; Y:Word): Boolean;
   Var
      t1,t2,t3:Boolean;
   Begin
      t1:=(d=30) And (m=2);
      t2:=(d=29) And (m=2) And (Not Nhuan(y));
      t3:=(d=31) And (m in [2,4,6,9,11]);
      If t1 Or t2 Or t3 Then
         so_ngay:=False
      Else
         so_ngay:=True;
   End;
(*--------------------*)
   Function Ket_thuc:Boolean;
   Var
      ch:Char;
   Begin
      Write('-Tiep tuc nua khong ? (c/k) ');
      Readln(ch);
      Ket_thuc:=Upcase(ch)='K';
   End;
(*--------------------*)
Begin
   Writeln('KIEM TRA NGAY HOP LE ?');
   Writeln('    Su dung ham');
   Writeln('----------------------');
   Repeat
      Write('-Ngay: ');
      Readln(d);
      Write('-Thang: ');
      Readln(m);
      Write('-Nam: ');
      Readln(y);
      If so_ngay(d,m,y) Then
         Writeln('*Ngay ',d:2,' Thang ',m:2,' Nam ',y:4,' la hop le')
      Else
           Writeln('*Ngay ',d:2,' Thang ',m:2,' Nam ',y:4,' khong hop le')
    Until Ket_thuc;
End.
zipBài tập 11: Viết chương trình Pascal Đổi sang nhiệt độ FARENHEIT
Program Doi_nhiet_do;
Var
   t:Real;
   tiep:Char;
(*---------------------*)
   Function Doi(x:Real):Real;
   Begin
      Doi:=((9*x/5) + 32);
   End;
(*---------------------*)
Begin
   Repeat
      Writeln('DOI DO BACH PHAN SANG DO FARENHEIT');
      Writeln('          Su dung ham');
      Writeln('----------------------------------');
      Write('-Nhap do bach phan: ');
      Readln(t);
      Writeln('*Doi sang do Farenheit = ',Doi(t):6:2);
      Writeln;
      Write('-Co tiep tuc khong ? (c/k) ');
      Readln(tiep);
   Until tiep='k' ;
End.
zipBài tập 12: Viết chương trình Pascal Tính tổng các số chẵn
Program Tong_cac_so_chan;
Var
   m,n:LongInt;
(*--------------------*)
   Function Tong(x,y:LongInt):LongInt;
   Var
      i,t:LongInt;
   Begin
      t:=0;
      For i:=x To y Do
         If (i Mod 2 = 0) Then
            Begin
               Write(i,' ');
               t:=t+i;
            End;
      Write(' = ');
      tong:=t;
   End;
(*--------------------*)
Begin
   Writeln('TINH TONG CAC SO CHAN TU M DEN N');
   Writeln('        Su dung ham');
   Writeln('--------------------------------');
   Write('-Nhap so dau (M) : ');
   Readln(m);
   Write('-Nhap so cuoi (N): ');
   Readln(n);
   Writeln('           *Tong cua cac so chan tu ',m,' den ',n,' la:');
   Writeln(Tong(m,n));
   Writeln;
   Write('   Bam phim <Enter> de ket thuc');
   Readln;
End.
zipBài tập 13: Viết chương trình Pascal Tìm số nhỏ nhất trong 3 số nguyên
Program So_nho;
Var
   so1,so2,so3:Integer;
(*---------------------*)
   Function nho(x,y:Integer):Integer;
   Begin
      If x < y Then
         nho:=x
      Else
         nho:=y;
   End;
(*---------------------*)
Begin
   Writeln('SO NHO NHAT TRONG 3 SO');
   Writeln('        dung ham ');
   Writeln('-----------------------------');
   Write('-So thu nhat = ');
   Readln(so1);
   Write('-So thu hai  = ');
   Readln(so2);
   Write('-So thu ba   = ');
   Readln(so3);
   Writeln;
   Writeln('*So nho nhat la: ',nho(nho(so1,so2),so3));
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 14: Viết chương trình Pascal Đổi tên tháng từ số sang chữ
Program In_ten_thang;
Var
   n:Byte;
(*-----------------*)
   Function thang(x:Byte):String;
   Const
      Ten_thang:Array[1..12] Of String=('Gieng','Hai','Ba',
      'Tu','Nam','Sau','Bay','Tam','Chin','Muoi','Mot','Chap');
   Begin
      thang:=' Thang '+Ten_thang[x];
   End;
(*-----------------*)
Begin
   Writeln('DOI TEN THANG TU SO RA CHU');
   Writeln('      Su dung ham');
   Writeln('--------------------------');
   Write('-Thang : ');
   Readln(n);
   If (n < 1) And (n > 12) Then
      Write('Khong hop le')
   Else
      Write(thang(n));
   Writeln;
   Write('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 15: Viết chương trình Pascal Làm tròn số thực
Program Lam_tron;
Var
   so:Real;
   le:Integer;
(*---------------*)
   Function Tron(so:Real;le:Integer):Real;
   Var
      i,n:LongInt;
   Begin
      For i:=1 To le+1 Do
         so:=so*10;
      n:=Trunc(so);
      If (n Mod 10) >= 5 Then
         n:=(n Div 10) +1
      Else
         n:=n Div 10;
      so:=n;
      For i:=1 To le Do
         so:=so/10;
      Tron:=so;
   End;
(*---------------*)
Begin
   Writeln('LAM TRON SO THUC');
   Writeln('  Su dung ham');
   Writeln('----------------');
   Write('-Nhap so: ');
   Readln(so);
   Write('-Can bao nhieu so le: ');
   Readln(le);
   Writeln;
   Writeln('       KET QUA');
   Writeln('*So nhap vao = ',so:12:10);
   Writeln('*So lam tron = ',Tron(so,le):12:le);
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 16: Viết chương trình Pascal Đổi tiền sao cho số tờ ít nhất
Program Doi_tien;
Var
   sotien:LongInt;
(*-----------------*)
   Procedure Doi(St:LongInt);
   Const
      Loai:Array[1..6] Of Integer =(50,20,10,5,2,1);
   Var
      i,soto:Integer;
   Begin
      i:=1;
      Repeat
         soto:=st Div loai[i];
         If soto <> 0 Then
            Writeln(soto,' to loai ',loai[i],' ngan dong');
         st:=st Mod loai[i];
         i:=i+1;
      Until st=0;
   End;
(*-----------------*)
Begin
   Writeln('DOI TIEN SAO CHO SO TO IT NHAT');
   Writeln('       Dung thu tuc');
   Writeln('------------------------------');
   Repeat
      Write('-So tien (ngan) co ( so 0 de ngung) : ');
      Readln(Sotien);
      Doi(Sotien);
      Writeln;
   Until sotien=0;
End.
zipBài tập 17: Viết chương trình Pascal Tính x mũ n (xn)
Program X_mu_n;
Var
   x:Integer;
   n:Word;
(*-----------------*)
   Function ham_mu(i:Integer;k:Word):LongInt;
   Var
      tam,j:Integer;
   Begin
      tam:=1;
      For j:=1 To k Do
         tam:=tam*i;
      Ham_mu:=tam;
   End;
(*-----------------*)
Begin
   Writeln('HAM X MU N');
   Writeln('----------');
   Write('-Nhap X = ');
   Readln(x);
   Write('-Nhap N = ');
   Readln(n);
   Writeln('*Ket qua = ',Ham_mu(x,n));
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 18: Viết chương trình Pascal Tính x mũ n (xn)
Program X_mu_n;
Var
   x:Integer;
   n:Word;
(*-----------------*)
   Function ham_mu(i:Integer;k:Word):LongInt;
   Begin
      If k = 0 Then
         ham_mu:=1
      Else
         ham_mu:=i*ham_mu(i,k-1);
   End;
(*-----------------*)
Begin
   Writeln('HAM X MU N');
   Writeln('----------');
   Write('-Nhap X = ');
   Readln(x);
   Write('-Nhap N = ');
   Readln(n);
   Writeln('*Ket qua = ',Ham_mu(x,n));
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 19: Viết chương trình Pascal Quay xổ số
Program Xo_so;
Uses Crt;
Var
   quacau,i:Byte;
   ch:Char;
Begin
   ClrScr;
   TextColor(Red);
   Writeln('                             QUAY XO SO');
   TextColor(Magenta);
   Writeln('                        Su dung ham Random');
   TextColor(Yellow);
   Writeln('                        -------------------');
   Writeln;
   TextColor(Green);
   Write('                      Cho so qua cau de quay: ');
   Readln(quacau);
   Writeln;
   TextColor(Cyan);
   Write('                Bam phim bat ky de bat dau quay xo so');
   Repeat
      i:= Random(9);
   Until KeyPressed;
   Writeln;
   TextColor(LightBlue);
   Write('                   Bam phim <Enter> de ngung quay');
   Readln;
   ch:=ReadKey;
   Writeln;
   TextColor(Yellow);
   Writeln('                     KET QUA TRUNG THUONG LA SO: ');
   Writeln;
   TextColor(Red);
   Write('                   ');
   For i:=1 To quacau Do
      Write(' ',Random(9):3);
   Writeln;
   Writeln;
   TextColor(Magenta);
   Write('                   Bam phim <Enter> de ket thuc');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal Cho biết ngày hôm nay sẽ tính được ngày mai
Program Ngay_mai_la_ngay_may;
Var
   Nam:1900..2000;
   Thang:1..12;
   Ngay:1..31;
Begin
   Writeln('CHO BIET NGAY HOM NAY SE TINH DUOC NGAY MAI');
   Writeln('-------------------------------------------');
   Repeat
      Write('-Cho biet ngay ( so 0 de ngung): ');
      Readln(Ngay);
      If Ngay = 0 Then
         Exit;
      Write('-Cho biet thang: ');
      Readln(Thang);
      Write('-Cho biet nam: ');
      Readln(Nam);
      Case Thang Of
         1,3,5,7,8,10,12 : If Ngay < 31 Then
                              Ngay:=Ngay+1
                           Else
                              If Thang = 12 Then
                                 Begin
                                    Nam:=Nam+1;
                                    Thang:=1;
                                 End
                               Else
                                 Begin
                                    Thang:=Thang+1;
                                    Ngay:=1;
                                 End;
         4,6,9,11   :If Ngay < 30 Then
                        Ngay:=Ngay+1
                     Else
                        Begin
                           Thang:=Thang+1;
                           Ngay:=1;
                        End;
         2: If (Ngay < 28) Or ((Ngay=28) And (Nam Mod 4 = 0)) then
               Ngay:=Ngay+1
            Else
               Begin
                  Thang:=Thang+1;
                  Ngay:=1;
               End;
      End;
   Writeln;
   Writeln('+Ngay mai la ngay: ',Ngay:2,' / ',Thang:2,' / ',Nam:4);
   Writeln;
   Until Ngay=0;
End.
zipBài tập 2: Viết chương trình Pascal  Giai phương trình trùng phương
Program Phuong_trinh_trung_phuong;
Var
   n,k:0..4;
   y:Array[1..2] Of Real;
   a,b,c,delta:Real;
Begin
   Writeln('GIAI PHUONG TRINH TRUNG PHUONG');
   Writeln('------------------------------');
   Repeat
      Write('-Nhap he so a: ');
      Readln(a);
   Until a <> 0;
   Write('-Nhap he so b: ');
   Readln(b);
   Write('-Nhap he so c: ');
   Readln(c);
   Delta:=b*b-4*a*c;
   If Delta < 0 Then
      Begin
         y[1]:=-1;
         y[2]:=-1;
      End;
   If Delta = 0 Then
      Begin
         y[1]:=-1;
         y[2]:=-b/(2*a);
      End;
   If Delta > 0 Then
      Begin
         y[1]:=(-b+sqrt(Delta))/(2*a);
         y[2]:=(-b-sqrt(Delta))/(2*a);
      End;
   n:=0;
   Writeln('            KET QUA');
   for k:=1 to 2 Do
      If y[k] > 0 Then
         Begin
            Writeln('    +X1= ',Sqrt(y[k]):5:3);
            Writeln('    +X2= ',-Sqrt(y[k]):5:3);
            Inc(n,2)
         End
      Else
         If y[k] = 0 Then
            Begin
               Writeln('X = 0');
               Inc(n);
            End;
   If n=0 Then
      Writeln('Phuong trinh vo nghiem')
   Else
      Writeln('Phuong trinh co ',n,' nghiem');
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal Đổi số ra chữ
Program Doi_So_ra_chu;
Type
   ChuSo='0'..'9';
   Donvi=(Muoi,Tram);
   Phamvi= 0..999;
Const
   KS:Array[ChuSo] Of String=('  ','mot ',' hai',' ba',
            ' bon',' nam',' sau',' bay',' tam',' chin');
   DV:Array[DonVi] Of String[6]=(' muoi ',' tram');
Var
   n:Phamvi;
   sn,s:String;
   Dodai:Byte;
Begin
   Writeln('DOI SO RA CHU');
   Writeln('-------------');
   Writeln;
   Write('-Nhap mot so tu 0 den 999: ');
   Readln(n);
   Str(n,sn);
   DoDai:=Length(sn);
   Case DoDai Of
      1: s:=KS[sn[1]];
      2: Begin
            If Sn[1] = '1' Then
               s:='muoi'
            Else
               s:=KS[sn[1]]+DV[Muoi];
            If sn[2] = '5' Then
               s:=s+'lam'
            Else
               s:=s+KS[sn[2]];
         End;
      3: Begin
            s:=KS[sn[1]]+DV[Tram];
            Case sn[2] Of
               '0' : If sn[3] <> '0' Then
                        s:=s+'le';
               '1' : s:=s+'muoi';
            Else
               s:=s+KS[sn[2]]+DV[Muoi];
            End;
            If (sn[3]='5') And (sn[2] <>'0') then
               s:=s+'lam'
            Else
               s:=s+KS[sn[3]];
         End;
      End;
      Writeln(s);
      Writeln;
      Write('   Bam phim <Enter> de ket thuc ');
      Readln
End.
zipBài tập 4: Viết chương trình Pascal Đổi ngày ra thứ trong năm
Program Thu_trong_tuan;
Var
   d:1..31;
   m:1..14;
   y:1900..2000;
   a:Integer;
Begin
   Writeln('DOI NGAY RA THU TRONG TUAN');
   Writeln('     Lich the ky 20');
   Writeln('--------------------------');
   Repeat
      Write('-Ngay ( so 0 de ngung): ');
      Readln(d);
      If d = 0 Then
         Exit;
      Write('-Thang: ');
      Readln(m);
      Write('-Nam: ');
      Readln(y);
      If m < 3 Then
         Begin
            m:=m+12;
            Dec(y);
         End;
      a:=d+2*m+(3*(m+1) Div 5)+y+(y Div 4) + 1;
      a:=a Mod 7;
      Case a Of
         0   :Begin
               Write('Ngay ',d:2,' / ',m:2,' / ',y:4);
                 Writeln(' la ngay Thu Bay');
             End;
         1   :Begin
                Write('Ngay ',d:2,' / ',m:2,' / ',y:4);
                Writeln(' la ngay Chu Nhat');
             End;
      Else
          Begin
              Write('Ngay ',d:2,' / ',m:2,' / ',y:4);
               Writeln(' la ngay ',a);
          End;
      End;
   Until d=0;
End.
zipBài tập 5: Viết chương trình Pascal Tính các hàm lượng giác
Program Cac_ham_luong_giac;
Const
   g='|';
   ke='--------------------------------------------------';
   Ten='               CAC HAM LUONG GIAC';
   Tde='|DO | RADIAN |   SIN  | COSIN  |  TANG  | COTANG |';
Var
   Doo:1..89;
   Rad,s,c,t,ct:Real;
Begin
   Repeat
      Write('-Nhap do (tu 1 den 89, so 0 de ngung): ');
      Readln(Doo);
      If Doo= 0 Then
         Exit;
      Writeln(Ten);
      Writeln(ke);
      Writeln(Tde);
      Writeln(ke);
      Rad:=Doo*Pi/180;
      s:=Sin(rad);
      c:=Cos(Rad);
      t:=s/c;
      ct:=c/s;
      Writeln(g,Doo:2,#248,g,Rad:8:6,g,s:8:6,g,
                     c:8:6,g,t:8:5,g,ct:8:5,g);
      Writeln(ke);
      Writeln;
   Until Doo=0;
End.
zipBài tập 6: Viết chương trình Pascal Phát ra bản nhạc
Program Am_thanh;
Uses Crt;
Const
   Notdon=8*58;
   Notdoi=Notdon Div 2;
Type
   Notnhac=(c,cf,d,df,e,f,ff,g,gf,a,af,b);
Var
   Kyam:Notnhac;
   (*----------------------*)
   Procedure Bannhac(Kyam:Notnhac;Caodo,Truongdo:Integer);
   Var
      Tanso:Real;
      i:Integer;
   Begin
      Tanso:=32.625;
      For i:=1 To Caodo Do
         Tanso:=Tanso * 2;
      For i:=1 To Ord(Kyam) Do
         Tanso:=Tanso * 1.05946;
      If Truongdo <> 0 Then
         Begin
            Sound(Round(Tanso));
            Delay(Truongdo);
            NoSound
         End
      Else
         Sound(Round(Tanso))
   End;
   (*----------------------*)
Begin
   Bannhac(c,4,Notdon);
   Bannhac(f,4,Notdon);
   Bannhac(g,4,Notdon);
   Bannhac(a,4,Notdon);
   Bannhac(a,4,Notdon);
End.
zipBài tập 7: Viết chương trình Pascal Phát ra bản nhạc
Program So_ngay;
Uses Crt;
Type
   Nam=1900..2000;
   Thang=1..12;
   Ngay=1..31;
Var
   Nam1,Nam2:Nam;
   Thang1,Thang2:Thang;
   Ngay1,Ngay2:Ngay;
   n:Real;
   kq:Boolean;
   (*--------------------*)
   FUNCTION KTngay(d:Ngay;m:Thang;y:Nam):Boolean;
   Begin
      KTngay:=True;
      Case m Of
         4,6,9,11: If d > 30 Then
         KTngay:=False;
         2 : If (d > 29) Or ((d =29) And (y Mod 4 <> 0)) Then
               KTngay:=True;
      End;
   End;
   (*--------------------*)
   FUNCTION Julian(d:Ngay;m:Thang;y:Nam):Real; {Lich Julieng}
   Var
      Tam:Real;
   Begin
      Tam:=Int((m-14.0)/12.0);
      Julian:=d-32075.0+
      Int(1461.0*(y+4800.0+Tam)/4.0+
      Int(367.0*(m-2.0-Tam*12.0)/12.0)-
      Int(3.0*Int(y+4900.00+Tam)/100.0)/4.0)
   End;
   (*--------------------*)
Begin
   {$R+}
   Repeat
      ClrScr;
      Writeln('    *Nhap moc thoi gian dau');
      Write('-Ngay: ');
      Readln(Ngay1);
      Write('-Thang: ');
      Readln(Thang1);
      Write('-Nam: ');
      Readln(Nam1);
      Kq:=KTngay(Ngay1,Thang1,Nam1);
      If not Kq Then
         Begin
            Sound(100);
            Delay(50);
            NoSound;
            Writeln('-Ngay khong hop le');
         End;
   Until Kq;
   Repeat
      ClrScr;
      Writeln('    *Nhap moc thoi gian cuoi');
      Write('-Ngay: ');
      Readln(Ngay2);
      Write('-Thang: ');
      Readln(Thang2);
      Write('-Nam: ');
      Readln(Nam2);
      Kq:=KTngay(Ngay2,Thang2,Nam2);
      If not Kq Then
         Begin
            Sound(100);
            Delay(50);
            NoSound;
            Writeln('-Ngay khong hop le');
         End;
   Until Kq;
   n:=Julian(Ngay2,Thang2,Nam2)-Julian(Ngay1,Thang1,Nam1);
   Writeln('Ket qua: ',n:8:0,' ngay');
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal Tìm số lớn nhất trong 2 số
Program So_lon;
Var
   so1,so2,solon:Integer;
Begin
   Writeln('TIM SO LON TRONG 2 SO');
   Writeln('  Su dung ham Ord()');
   Writeln('---------------------');
   Write('-Nhap so thu nhat: ');
   Readln(so1);
   Write('-Nhap so thu hai : ');
   Readln(so2);
   solon:=Ord(so1 >=so2) *so1 + Ord(so2 > so1) * so2;
   Writeln('-So lon la so: ',solon);
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal In các số nguyên tố từ 1 đến 100
Program So_nguyen_to;
Var
   NguyenTo,Sang:Set of 1..100;
   so:1..100;
   i:Integer;
Begin
   Writeln('             CAC SO NGUYEN TO TU 1 DEN 100');
   Writeln('             -----------------------------');
   Writeln;
   NguyenTo:=[];
   Sang:=[2..100];
   So:=2;
   Repeat
      While Not (So In Sang) Do
         So:=So+1;
      NguyenTo:=NguyenTo + [So];
      Write(So,' ');
      I:=So;
      While I <= 100 Do
         Begin
            Sang:=Sang -[I];
            I:=I + So;
         End;
   Until Sang=[];
   Writeln;
   Writeln;
   Write('             Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 2: Viết chương trình Pascal Tính số số hạng của một số nguyên
Program So_so_hang;
Var
   Thuong:Set of 0..9;
   Sodu:0..9;
   So,Soluu,Sohang:Integer;
Begin
   Writeln('SO SO HANG CUA MOT SO NGUYEN');
   Writeln('----------------------------');
   Write('-Nhap so nguyen bat ky: ');
   Readln(So);
   Soluu:=So;
   Thuong:=[];
   Sohang:=0;
   Repeat
      Sodu:=So Mod 10;
      If Not (Sodu In Thuong) Then
         Sohang:=Sohang + 1
      Else
         Begin
            Sohang:=Sohang + 1;
            Thuong:=Thuong + [Sodu]
         End;
      So:= So Div 10;
   Until So = 0;
   Writeln;
   Writeln('   *So ',Soluu,' co ',Sohang,' so hang');
   Writeln;
   Write('     Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal Tìm 10 số nguyên ngẫu nhiên nhỏ hơn 100, không được trùng nhau
Program So_ngau_nhien;
CONST
   N=100;
Type
   Nguyen= Set of 1..N;
Var
   a:Nguyen;
   So,i,spt:Integer;
Begin
   Writeln('TIM 10 S0 NGUYEN NGAU NHIEN KHONG AM');
   Writeln('  NHO HON 100, KHONG TRUNG NHAU');
   Writeln('------------------------------------');
   spt:=0;
   a:=[];
   Randomize;
   Repeat
      So:=Random(100);
      If Not (So In a) Then
         Begin
            a:=a+[So];
            Spt:=Spt +1;
         End;
   Until Spt = 10;
   Writeln;
   Writeln('10 so ngau nhien nho hon 100 la: ');
   Writeln;
   For i:= 0 To 100 Do
      If i In a Then
         Write(i,', ');
   Writeln;
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal Tìm ký tự không xuất hiện trong chuỗi
Program Tim_ky_tu;
Var
   Chuoi:String;
   Co,Khong:Set of Char;
   i:Integer;
   Ch:Char;
Begin
   Writeln('TIM KY TU KHONG XUAT HIEN TRONG CHUOI');
   Writeln('-------------------------------------');
   Write('-Nhap mot chuoi ky tu: ');
   Readln(Chuoi);
   Co:=[];
   For I:=1 To Length(Chuoi) Do
      Co:=Co+[Upcase(Chuoi[i])];
   Khong:=['A'..'Z'] - Co;
   Writeln;
   Writeln('     Nhung ky tu khong co trong chuoi nay la: ');
   Writeln;
   For Ch:='A' To 'Z' Do
      If Ch In Khong Then
         Write(Ch,', ');
   Writeln;
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal Tìm các nguyên âm, phụ âm trong một chuỗi
Program Nguyen_am_Phu_am;
Type
   Kytu=Set of Char;
Var
   a,b,Nguyen,Phu:Kytu;
   Chuoi:String;
   i:Integer;
   Ch:Char;
Begin
   Writeln('CAC NGUYEN AM, PHU AM TRONG MOT CHUOI');
   Writeln('-------------------------------------');
   Write('-Nhap mot chuoi ky tu: ');
   Readln(Chuoi);
   a:=['a','e','i','o','u','A','E','I','O','U'];
   b:=['a'..'z','A'..'Z'] - a;
   Nguyen:=[];
   Phu:=[];
   For I:=1 To Length(Chuoi) Do
      Begin
         If Chuoi[i] In a Then
            Nguyen:=Nguyen + [Chuoi[i]];
         If Chuoi[i] In b Then
            Phu:=Phu +[Chuoi[i]];
      End;
   Writeln;
   Writeln('*Chuoi nay co cac nguyen am sau day:');
   Write('     ');
   For Ch:='A' To 'z' Do
      If Ch In Nguyen Then
         Write(Upcase(ch),', ');
   Writeln;
   Writeln('*Chuoi nay co cac phu am sau day:');
   Write('     ');
   For Ch:='A' To 'z' Do
      If Ch In Phu Then
         Write(Upcase(Ch),', ');
   Writeln;
   Writeln;
   Write('    Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 6: Viết chương trình Pascal Chương trình Tham quan
Program Du_lich;
Uses Crt;
Type
   Diadiem=Set of 1..5;
Var
   ng1,ng2,ng3,Ba,Hai,Mot:DiaDiem;
   ch1,ch2,ch3,i:Byte;
(*----------------------------*)
   PROCEDURE Den(i:Byte);
   Begin
      Case i Of
         1:Write('Da Lat ');
         2:Write('Vung Tau ');
         3:Write('Nha Trang ');
         4:Write('Hue ');
         5:Write('Ha Noi ');
      End;
   End;
(*----------------------------*)
Begin
   ClrScr;
   Writeln('CHUONG TRINH THAM QUAN');
   Writeln('----------------------');
   Writeln('      1-Da Lat');
   Writeln('      2-Vung Tau');
   Writeln('      3-Nha Trang');
   Writeln('      4-Hue');
   Writeln('      5-Ha Noi');
   Writeln('Chon noi nao, go cac so tu 1 den 5');
   Writeln('1-Nguoi thu nhat chon 3 noi:');
   Write('      -Noi thu nhat: ');
   Readln(ch1);
   Write('      -Noi thu hai: ');
   Readln(ch2);
   Write('      -Noi thu ba: ');
   Readln(ch3);
   ng1:=[ch1,ch2,ch3];
   Writeln('2-Nguoi thu hai chon 3 noi:');
   Write('      -Noi thu nhat: ');
   Readln(ch1);
   Write('      -Noi thu hai: ');
   Readln(ch2);
   Write('      -Noi thu ba: ');
   Readln(ch3);
   ng2:=[ch1,ch2,ch3];
   Writeln('3-Nguoi thu ba chon 3 noi:');
   Write('      -Noi thu nhat: ');
   Readln(ch1);
   Write('      -Noi thu hai: ');
   Readln(ch2);
   Write('      -Noi thu ba: ');
   Readln(ch3);
   ng3:=[ch1,ch2,ch3];
   Ba:=ng1 * ng2 * ng3;
   Hai:=(ng1*ng2-ng3) + (ng2*ng3-ng1) + (ng3*ng1-ng2);
   Mot:=ng1 + ng2 +ng3;
   Writeln;
   Writeln('*Cac noi ma ca 3 nguoi deu chon: ');
   For i:=1 To 5 Do
      If i In Ba Then
         Den(i);
   Writeln;
   Writeln('*Noi chi co 2 nguoi chon: ');
   For i:=1 To 5 Do
      If i In Hai Then
         Den(i);
   Writeln;
   Writeln('*Noi chi co 1 nguoi chon: ');
   For i:=1 To 5 Do
      If i In Mot Then
         Den(i);
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal Tìm các số khác nhau của 2 dãy số
Program So_khac_nhau;
CONST
   M=100;
Type
   DaySo=Set of 0..255;
   DayNguyen=Array[1..M] Of Integer;
Var
   a:DayNguyen;
   i,n:Integer;
   x:DaySo;
Begin
   Writeln('IN CAC SO KHAC NHAU CUA DAY SO');
   Writeln('------------------------------');
   Repeat
      Write('Nhap bao nhieu so: ');
      Readln(n);
   Until N <= M;
   For i:=1 To N Do
      Begin
         Write('-Phan tu thu: ',i,' = ');
         Readln(a[i]);
      End;
   x:=[];
   For i:=1 To N Do
      If Not (a[i] In x) Then
         Begin
            Write(a[i],', ');
            x:=x+[a[i]];
         End;
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal Các phép toán trong tập hợp
Program Cac_phep_Toan;
Type
   KyTu=Set of Char;
Var
   a,b,Cong,Nhan,tru1,tru2:KyTu;
   p:Array[1..100] Of Char;
   m,n,i:Byte;
Begin
   Writeln('CAC PHEP TOAN TRONG TAP HOP');
   Writeln('---------------------------');
   a:=[];
   b:=[];
   Write('-So phan tu cua tap hop A= ');
   Readln(m);
   For i:=1 To M Do
      Begin
         Write('  -Phan tu A[',i,']= ');
         Readln(p[i]);
         a:=a + [p[i]];
      End;
   Write('-So phan tu cua tap hop B= ');
   Readln(n);
   For i:=1 To N Do
      Begin
         Write('  -Phan tu B[',i,']= ');
         Readln(p[i]);
         b:=b + [p[i]];
      End;
   Nhan:=a * b;
   Writeln('A * B gom cac phan tu: ');
   For i:=0 To 255 Do
      If Char(i) In Nhan Then
         Write(Char(i),#32);
   Writeln;
   Cong:=a + b;
   Writeln('A + B gom cac phan tu: ');
   For i:=0 To 255 Do
      If Char(i) In Cong Then
         Write(Char(i),#32);
   Writeln;
   Tru1:=a - b;
   Writeln('A - B gom cac phan tu: ');
   For i:=0 To 255 Do
      If Char(i) In Tru1 Then
         Write(Char(i),#32);
   Writeln;
   Tru2:=b - a;
   Writeln('B - A gom cac phan tu: ');
   For i:=0 To 255 Do
      If Char(i) In Tru2 Then
         Write(Char(i),#32);
   Writeln;
   If A <= B Then
      Writeln('-Tap hop A nho hon tap hop B');
   If B <= A Then
      Writeln('-Tap hop B nho hon tap hop A');
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 9: Viết chương trình Pascal Đếm số phần tử của tập hợp
Program Dem_phan_tu;
Var
   kytu:'A'..'z';
   taphop: Set of 'A'..'z';
   n,i,spt:Byte;
Begin
   Writeln('DEM SO PHAN TU CUA TAP HOP');
   Writeln('--------------------------');
   Write('-Nhap bao nhieu chu: ');
   Readln(n);
   taphop:=[];
   For i:=1 To N Do
      Begin
         Write('-Ky tu thu ',i,' la: ');
         Readln(kytu);
         taphop:=taphop + [Kytu];
      End;
   For Kytu:= 'A' To 'z' Do
      If Kytu In Taphop Then
         Inc(spt);
   Write('Tap hop gom co ',spt,' phan tu la: ');
   For Kytu:='A' To 'z' Do
      If Kytu In Taphop then
         Write(Kytu,#32);
   Writeln;
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 10: Viết chương trình Pascal Tính số phiếu bầu cử chi
Program Bau_cu;
CONST
   Max=100;
   ucv=5;
   tke:Array[1..5] Of Word =(0,0,0,0,0);
Type
   stt=1..ucv;
   phieubau=Set of stt;
Var
   Phieu:Array[1..Max] Of Phieubau;
   n,n1,i:1..Max;
   j:1..ucv;
   Ch:Char;
   Bau:0..5;
Begin
   Writeln('KIEM PHIEU BAU CU CHI DOAN TN');
   Writeln('-----------------------------');
   Write('-Cho biet so nguoi tham gia bau (1..100): ');
   Readln(n);
   {Gan tat ca cac tap hop bang rong}
   FillChar(Phieu, Sizeof(Phieu), #0);
   {Nhap phieu bau cua tat ca cac cu tri}
   For i:=1 To N Do
      Begin
         Write('-Cu tri thu ',i);
         For j:=1 To ucv Do
            Begin
               Write('  +Chon ung cu vien thu ',j,' (C/K) ? ');
               Readln(Ch);
               Ch:=Upcase(Ch);
               If Ch = 'C' Then
                  Phieu[i]:=Phieu[i] + [j];
            End;
      End;
   {Kiem tra phieu hop le }
   n1:=n;
   For i:=1 To n Do
      Begin
         Bau:=0;
         For j:=1 To ucv Do
            If j In Phieu[i] Then
               Inc(Bau);
            If Bau <> 3 then
               Begin
                  Phieu[i]:=[];
                  Dec(n1);
               End;
      End;
   {Kiem phieu}
   For i:= 1 To n Do
      For j:=1 To ucv Do
         If j IN Phieu[i] Then
            Inc(Tke[j]);
   Writeln;
   Writeln('   KET QUA KIEM PHIEU');
   Writeln('-So phieu hop le: ',n1,' phieu');
   For j:=1 To ucv Do
      Writeln('-So phieu chon ung cu vien thu: ',j,' la ',Tke[j]);
   Writeln;
   Write('   Bam phim <Enter> de ket thuc ');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal Đổi số thập phân ra nhị phân
Program Doi_thap_phan_ra_nhi_phan;
Var
   He10,N,Y:Word;
   He2,Tam:String;
Begin
   Writeln('DOI SO TU HE THAP PHAN SANG HE NHI PHAN');
   Writeln('         -----------------');
   Writeln;
   Write('-Nhap so nguyen he thap phan: ');
   Readln(He10);
   N:=He10;
   He2:=' ';
   Repeat
      Y:=He10 Mod 2;
      Str(Y, Tam);
      He2:=Tam + He2;
      He10:= He10 Div 2;
   Until He10 = 0;
   Writeln;
   Writeln('+So he 10 la     : ',N);
   Writeln('+Doi sang he 2 la: ',He2);
   Writeln;
   Writeln('      Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 2: Viết chương trình Pascal Đổi số thập phân ra bát phân
Program Doi_thap_phan_ra_bat_phan;
Var
   He10,N,Y:Word;
   He8,Tam:String;
Begin
   Writeln('DOI SO TU HE THAP PHAN SANG HE BAT PHAN');
   Writeln('         -----------------');
   Writeln;
   Write('-Nhap so nguyen he thap phan: ');
   Readln(He10);
   N:=He10;
   He8:=' ';
   Repeat
      Y:=He10 Mod 8;
      Str(Y, Tam);
      He8:=Tam + He8;
      He10:= He10 Div 8;
   Until He10 = 0;
   Writeln;
   Writeln('+So he 10 la     : ',N);
   Writeln('+Doi sang he 8 la: ',He8);
   Writeln;
   Writeln('      Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal Đổi số thập phân sang hệ thập lục - hệ 16
Program Doi_thap_phan_ra_thap_luc;
Var
   He10,N,Y:Word;
   He16,Tam:String;
Begin
   Writeln('DOI SO TU HE THAP PHAN SANG HE THAP LUC PHAN');
   Writeln('         -----------------');
   Writeln;
   Write('-Nhap so nguyen he thap phan: ');
   Readln(He10);
   N:=He10;
   He16:=' ';
   Repeat
      Y:=He10 Mod 16;
      If Y < 10 Then
         Str(Y, Tam)
      Else
         Tam:=Chr(Y+55);
      He16:=Tam + He16;
      He10:= He10 Div 16;
   Until He10 = 0;
   Writeln;
   Writeln('+So he 10 la      : ',N);
   Writeln('+Doi sang he 16 la: ',He16);
   Writeln;
   Writeln('      Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal Đổi số thập phân sang hệ bất kỳ
Program Doi_thap_phan_ra_he_bat_ky;
Var
   He10,N,Y,HeN:Word;
   He,Tam:String;
Begin
   Writeln('DOI SO TU HE THAP PHAN SANG HE BAT KY');
   Writeln('         -----------------');
   Writeln;
   Write('-Nhap so nguyen he thap phan: ');
   Readln(He10);
   N:=He10;
   Write('-Doi sang he nao: ');
   Readln(HeN);
   He:=' ';
   Repeat
      Y:=He10 Mod HeN;
      If Y < 10 Then
         Str(Y, Tam)
      Else
         Tam:=Chr(Y+55);
      He:=Tam + He;
      He10:= He10 Div HeN;
   Until He10 = 0;
   Writeln;
   Writeln('+So he 10 la      : ',N);
   Writeln('+Doi sang he: ',HeN:2,' la: ',He);
   Writeln;
   Writeln('      Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal Tìm số thứ tự mã ASCII của ký tự trong chuỗi
Program So_thu_Tu_ma_ASCII;
Var
   St:String;
   i:Byte;
Begin
   Writeln('SO THU TU MA ASCII CUA TUNG KY TU TRONG CHUOI');
   Writeln('          --------------------');
   Write('-Nhap chuoi: ');
   Readln(St);
   Writeln;
   For i:=1 To Length(St) Do
      Write(' ',Ord(St[i]));
   Writeln;
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 6: Viết chương trình Pascal Đảo ngược một chuỗi
Program Dao_Chuoi;
Var
   St:String;
   i:Byte;
Begin
   Writeln('DAO NGUOC MOT CHUOI');
   Writeln('   -----------');
   Write('-Nhap chuoi: ');
   Read(St);
   Writeln;
   Write('+Chuoi dao : ');
   For i:= Length(St) DownTo 1 Do
      Write(St[i]);
   Writeln;
   Writeln;
   Writeln('       Bam phim <Enter> de ket thuc');
   Readln;
   Readln
End.
zipBài tập 7: Viết chương trình Pascal Tách chuỗi con từ chuỗi mẹ
Program Tach_chuoi;
Var
   St:String;
   Pos,Num:Byte;
Begin
   Writeln('TACH CHUOI CON TU CHUOI ME');
   Writeln('         Ham Copy');
   Writeln('     ---------------');
   Write('-Nhap chuoi: ');
   Readln(St);
   Write('-Tach tu vi tri: ');
   Readln(Pos);
   Write('-Bao nhieu ky tu: ');
   Readln(Num);
   Writeln;
   Writeln('+Chuoi con la: ',Copy(St,Pos,Num));
   Writeln;
   Writeln('         Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal Tìm vị trí chuỗi con trong chuỗi mẹ
Program Vi_Tri_Chuoi;
Var
   St1,St2:String;
Begin
   Writeln('VI TRI CHUOI CON TRONG CHUOI ME');
   Writeln('         Ham Pos');
   Writeln('     --------------');
   Write('-Chuoi  me: ');
   Readln(St1);
   Write('-Chuoi con: ');
   Readln(St2);
   Writeln('+Chuoi con bat dau tu vi tri thu: ',Pos(St2,St1),
   ' trong chuoi me');
   Writeln;
   Writeln('       Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 9: Viết chương trình Pascal Kiểm tra chuỗi đối xứng
Program Chuoi_Doi_Xung;
Var
   St:String;
   i,l:Byte;
Begin
   Writeln('CHUOI DOI XUNG');
   Writeln('   --------');
   Write('-Nhap chuoi: ');
   Readln(St);
   l:=Length(St);
   i:=1;
   While (i < l Div 2) And (St[i] = St[l-i+1]) Do
      Begin
         i:=i+1;
         If i < (l Div 2) Then
            Writeln('+Chuoi nay doi xung')
      End;
   While (i < l Div 2) And (St[i] <> St[l-i+1]) Do
      Begin
         i:=i+1;
         If i < (l Div 2) Then
            Writeln('+Chuoi nay khong doi xung')
      End;
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 10: Viết chương trình Pascal Đếm số lần xuất hiện của ký tự trong chuỗi
Program Dem_chuoi;
Var
   St:String;
   dem:ARRAY['A'.. 'Z'] Of Integer;
   i:Integer;
   Ch:Char;
Begin
   Writeln('DEM SO LAN XUAT HIEN CUA KY TU TRONG CHUOI');
   Writeln('    -----------');
   Write('-Nhap chuoi: ');
   Readln(St);
   For i:=1 To Length(St) Do
      Dem[UpCase(St[i])]:= Dem[UpCase(St[i])]+1;
   Writeln;
   Writeln('+Cac ky tu trong chuoi la: ');
   For Ch:='A' To 'Z' Do
      If Dem[ch] > 0 Then
         Writeln('+Chu: ',Ch,' co: ',Dem[Ch],' ky tu' );
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 11: Viết chương trình Pascal Đếm số từ trong chuỗi
Program Dem_Tu;
{$V-}
Var
St:String;
Function Sochu(Dong:String):Integer;
Var
   dem,i:Integer;
Begin
   Dem:=0;
   i:=1;
   Repeat
      While ((UpCase(Dong[i]) < 'A') Or (UpCase(Dong[i]) > 'Z'))
         And (I <=Length(Dong)) Do
         i:=i+1;
      If i <= Length(Dong) Then
         Dem:=Dem + 1;
      While ((UpCase(Dong[i]) >= 'A') And (UpCase(Dong[i]) <= 'Z'))
         And (I <=Length(Dong)) Do
      i:=i+1;
   Until i > Length(Dong);
   Sochu:=Dem;
End;
{---------------------------}
Begin
   Write('-Nhap mot cau ca dao tuc ngu: ');
   Readln(St);
   Writeln('-Cau nay co: ',Sochu(St),' tu');
   Readln
End.
zipBài tập 12: Viết chương trình Pascal Đếm số từ trong chuỗi
Program Doi_So_Ra_Chu;
Var
   Tiep:Char;
   Chuoitk,Chuoikq:String;
   So:0..999;
   Tram,Chuc,Donvi:0..9;
Begin
   Tiep:='C';
   While UpCase(Tiep)='C' Do
      Begin
         {$R+}
         Chuoitk:='MOT HAI BA  BON NAM SAU BAY TAM CHIN';
         Write('-Nhap so can doi: ');
         Readln(so);
         If So = 0 Then
            Writeln('So khong')
         Else
            Begin
               Tram:=So Div 100;
               Chuc:=(So-Tram * 100) Div 10;
               Donvi:= So Mod 10;
               Chuoikq:=' ';
               If (Donvi > 0) And (Donvi <> 5) Then
                  Chuoikq :=Chuoikq + Copy(Chuoitk,4* Donvi -3,4);
               If (Donvi = 5) And (Chuc = 0) Then
                  Chuoikq :=Chuoikq + ' NAM';
               If (Donvi = 5) And (Chuc > 0) Then
                  Chuoikq := Copy(Chuoitk,4 * Chuc-3,4)+' LAM';
               If (Donvi = 5) And (Chuc = 1) Then
                    Chuoikq := ' LAM';
               If Chuc = 1 Then
                  Chuoikq:='MUOI'+chuoikq;
               If (Chuc > 1) And (Donvi = 0) Then
                  Chuoikq:=Copy(Chuoitk,4 * Chuc-3,4)+' MUOI ';
               If (Chuc > 1) And (Donvi = 1) Then
                  Chuoikq:=Copy(Chuoitk,4 * Chuc-3,4)+' MUOI '+Chuoikq;
               If (Chuc > 1) And (Donvi > 1) And (Donvi <>5) Then
                  Chuoikq:=Copy(Chuoitk,4 * Chuc-3,4)+' MUOI '+Chuoikq;
               If (Tram > 0) And (Chuc=0) And (Donvi=0) Then
                  Chuoikq:=Copy(Chuoitk,4*Tram-3,4)+' TRAM ';
               If (Tram > 0) And (Chuc = 0) And (Donvi > 0) Then
                  Chuoikq := Copy(Chuoitk,4*Tram-3,4)+' TRAM LINH '+ Copy(Chuoitk,4*Donvi-3,4);
               If (Tram > 0) And (Chuc = 1) And (Donvi = 0) Then
                  Chuoikq := Copy(Chuoitk,4*Tram-3,4)+ 'TRAM MUOI';
               If (Tram > 0) And (Chuc >= 2) And (Donvi = 0) Then
                  Chuoikq := Copy(Chuoitk,4*Tram-3,4)+' TRAM '+ Copy(Chuoitk,4*Chuc -3,4) +' MUOI';
               If (Tram > 0) And (Chuc <> 0) And (Donvi > 0) Then
                  Chuoikq := Copy(Chuoitk,4*Tram-3,4)+' TRAM '+ Copy(Chuoitk,4*Chuc -3,4) +' MUOI '+
                  Copy(Chuoitk,4*Donvi-3,4);
               If (Tram > 0) And (Chuc <> 0) And (Donvi = 5) Then
                  Chuoikq := Copy(Chuoitk,4*Tram-3,4)+' TRAM '+ Copy(Chuoitk,4*Chuc -3,4) +' MUOI LAM';
               Write('-Viet bang chu la: ',Chuoikq);
         End;
         Writeln;
         Write('+Tiep tuc nua khong (C/K) ');
         Readln(Tiep);
      End;
End.
zipBài tập 13: Viết chương trình Pascal Tạo chữ chạy tên màn hình
Program Chu_Chay;
Uses Crt;
Const
   a='Nha sach Minh Khai, 249 Nguyen Thi Minh Khai, Quan 1, Tp Ho Chi Minh ';
   b='Tel: 8 331 124, 9 250 590 ';
   c='Chuyen phat hanh cac giao trinh tin hoc phuc vu hoc sinh, sinh vien';
   d='Chan thanh cam on quy doc gia';
   Function Lap(Kt:Char; N:Integer): String;
      Var
         Tam:String;
         K:Integer;
   Begin
      Tam:=' ';
      For K:=1 To N Do
         Tam:=Tam+Kt;
      Lap:=Tam;
   End;
   {--------------}
   Procedure WriteXY(X,Y:Integer; St:String);
   Begin
      GotoXY(X,Y);
      Write(St);
   End;
   {--------------}
   Function Min(a,b:Integer):Integer;
   Begin
      If a < b Then
         Min:=a
      Else
         Min:=b;
   End;
   {--------------}
   Procedure Chuchay(St:String);
      Var
         k:Integer;
         Tin:String;
      Begin
         Tin:=Lap(' ',68)+'<<' +St+' ';
         For k:=1 To Length(Tin) Do
            Begin
               TextColor(k MOD 16);
               WriteXY(6,8,Copy(Tin,k,Min(68,Length(Tin)-k+1)));
               Delay(100);
            End;
      End;
      {--------------}
      Procedure Khung(x1,y1,x2,y2:Integer);
         Var
            k:Integer;
         Begin
            TextColor(14);
            WriteXY(x1,y1,#201);
            For k:=x1+1 To x2-1 Do
               Write(#205);
            Write(#187);
            WriteXY(x1,y2,#200);
            For k:=x1+1 To x2-1 Do
               Write(#205);
            Write(#188);
            For k:=y1+1 To y2-1 Do
               Begin
                  WriteXY(x1,k,#186);
                  WriteXY(x2,k,#186);
               End;
         End;
      {--------------}
      Begin
         TextBackGround(1);
         ClrScr;
         TextColor(3+Blink);
         GotoXY(30,4);
         Writeln('NAM HOC 1999 -2000');
         Khung(5,7,75,9);
         Repeat
            Chuchay(a);
            Chuchay(b);
            Chuchay(c);
            Chuchay(d);
         Until KeyPressed;
      End.
zipBài tập 14: Viết chương trình Pascal Tạo hiêu ứng cho chữ
Program Loang_mau;
   Uses Crt;
   Const
      St='       Chao mung ban da den voi Turbo Pascal       ';
   Var
      k:Integer;
   Procedure Mau(nen,chu:Integer);
      Begin
         TextBackGround(nen);
         TextColor(chu);
      End;
Begin
   TextMode(C80);
   TextBackGround(Black);
   ClrScr;
   For k:=2 To 23 Do
      Begin
         Mau(k Mod 8,(k+4) Mod 8 + 8);
         GotoXY(1,k);
         Write(St)
      End;
   Readln
End.
zipBài tập 15: Viết chương trình Pascal Tìm và xóa các ký tự trùng nhau trong chuỗi
Program Tim_Xoa;
   Var
      St,St1:String;
      Ch:Char;
      i,l,l1:Byte;

Begin
   Writeln('TIM VA XOA CAC KY TU TRUNG NHAU TRONG CHUOI');
   Writeln('         -----------------');
   Writeln;
   Write('-Nhap mot chuoi: ');
   Readln(St);
   St1:=St;
   i:=1;
   l:=Length(St);
   While i <= l Do
      Begin
         i:=i+1;
         If St[i]=St[i - 1] Then
            Begin
               Writeln('+Ky tu thu: ',i:2,' la: ',St[i],' bi trung lap');
               Write('Ban co muon xoa ky tu nay khong (c/k)');
               Readln(Ch);
               If UpCase(Ch)='C' Then
                  Begin
                     Delete(St,i,1);
                     i:= i - 1;
                  End;
            End;
      End;
   l1:=Length(St);
   Writeln;
   Writeln('+Chuoi ban dau : ',St1,' co: ',l:2,' ky tu');
   Writeln('       Sau khi xoa ky tu trung nhau');
   Writeln(' Chuoi con lai: ',St,' gom: ',l1:2,' ky tu');
   Writeln;
   Writeln('      Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 16: Viết chương trình Pascal Tìm chuỗi hai xuất hiên trong chuỗi một
Program Tim_chuoi;
   Var
      St1,St2:String;
      i,sl:Integer;
Begin
   Writeln('TIM CHUOI HAI XUAT HIEN TRONG CHUOI MOT');
   Writeln('           --------------');
   Writeln;
   Write('-Chuoi thu nhat: ');
   Readln(St1);
   Write('-Chuoi thu hai : ');
   Readln(St2);
   sl:=0;
   For i:=1 To Length(St1) Do
      If St2 = Copy(St1,i,Length(St2)) Then
         sl:=sl+1;
   Writeln;
   Writeln('+Chuoi thu 2 xuat hien: ',sl:2,' lan trong chuoi 1');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 17: Viết chương trình Pascal Đổi số la mã ra số thập phân
Program So_La_Ma;
   Label l1;
   Var
      St:String;
      tiep:Char;
      i,So:Integer;
Begin
   Writeln('DOI SO LA MA RA SO THAP PHAN');
   Writeln('       ------------');
   Writeln;
   L1:Write('-Nhap so La ma: ');
   Readln(St);
   So:=0;
   i:=Length(St);
   While i > 0 Do
      Case St[i] Of
         'I':Begin
               So:=So+1;
               i:=i-1;
             End;
         'V':If (i > 1) And (St[i-1] = 'I') Then
                Begin
                  So:=So+4;
                  i:=i-2;
                End
             Else
               Begin
                  So:=So+5;
                  i:=i-1;
                End;
         'X':If (i > 1) And (St[i-1] = 'I') Then
                Begin
                  So:=So+9;
                  i:=i-2;
                End
             Else
               Begin
                  So:=So+10;
                  i:=i-1;
                End;
         'L':If (i > 1) And (St[i-1] = 'X') Then
                Begin
                  So:=So+40;
                  i:=i-2;
                End
             Else
               Begin
                  So:=So+50;
                  i:=i-1;
                End;
         'C':If (i > 1) And (St[i-1] = 'X') Then
                Begin
                  So:=So+90;
                  i:=i-2;
                End
             Else
               Begin
                  So:=So+100;
                  i:=i-1;
                End;
         'D':If (i > 1) And (St[i-1] = 'C') Then
                Begin
                  So:=So+400;
                  i:=i-2;
                End
             Else
               Begin
                  So:=So+500;
                  i:=i-1;
                End;
         'M':If (i > 1) And (St[i-1] = 'C') Then
                Begin
                  So:=So+900;
                  i:=i-2;
                End
             Else
               Begin
                  So:=So+1000;
                  i:=i-1;
                End;
      End;
      Writeln('+So La ma        : ',St);
      Writeln('+Doi ra thap phan: ',So);
      Writeln;
      Write('-Tiep tuc nua khong (c/k) ');
      Readln(tiep);
      If UpCase(tiep)='C' Then
         Goto l1;
End.
zipBài tập 18: Viết chương trình Pascal Kiểm tra số nhập vào
Program Kiem_tra_so;
   Label tt;
   Var
      St:String;
      So:Real;
      Dung:Integer;
      tiep:Char;
Begin
   Repeat
      Writeln('KIEM TRA SO NHAP VAO');
      Writeln('    -----------');
      tt:Write('-Nhap mot so: ');
      Readln(St);
      Val(St,So,Dung);
      If Dung = 0 Then
         Writeln('  +Ban da nhap mot so: ',So:8:2)
      Else
         Writeln('  +Khong phai so, xin nhap lai:');
   Until Dung = 0;
   Writeln;
   Write('-Co tiep tuc khong (C/K) ');
   Readln(Tiep);
   If UpCase(Tiep)='C' Then
      Goto tt;
End.
zipBài tập 19: Viết chương trình Pascal Mã hóa ký tự
Program Ma_hoa;
   Var
      St:String;
      k:Integer;
      i,n:Integer;
Begin
   Writeln('CHUONG TRINH MA HOA');
   Writeln('   -----------');
   Write('-Nhap chuoi: ');
   Readln(St);
   Write('-Nhap ma so k: ');
   Readln(k);
   k:=k Mod 26;
   For i:= 1 To Length(St) Do
      Begin
         n:=Ord(St[i]);
         If (n >=97) And (n<=122) then
            Begin
               n:=n+k;
               If n > 122 Then
                  n:=(n Mod 122) + 96;
            End;
         St[i]:=Chr(n);
      End;
   Writeln;
   Writeln('+Sau khi ma hoa: ',St);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 20: Viết chương trình Pascal Ngắt từng từ trong câu
Program Ngat_tu;
   Var
      St:String;
Begin
   Writeln('NGAT TUNG TU TRONG CAU');
   Writeln('    --------------');
   Writeln;
   Write('-Nhap mot cau: ');
   Readln(St);
   Repeat
      While (St[1] =' ') And (Length(St) <> 0) Do
         Delete(St,1,1);
      While (St[1] <> ' ') And (Length(St) <>0) Do
         Begin
            Write(St[1]);
            Delete(St,1,1);
         End;
      Writeln;
   Until Length(St)=0;
   Readln
End.
zipBài tập 21: Viết chương trình Pascal Kiểm tra ký tự trùng của hai xâu
Program Cung_Ky_Tu;
   Var
      St1,St2:String;
      Dung:Boolean;
      i:Integer;
Begin
   Writeln('KIEM TRA KY TU TRUNG CUA 2 CHUOI');
   Writeln('        --------------');
   Writeln;
   Write('-Nhap chuoi 1: ');
   Readln(St1);
   Write('-Nhap chuoi 2: ');
   Readln(St2);
   Dung:=False;
   If Length(St1)=Length(St2) Then
      Begin
         Dung:=True;
         For i:= 1 To Length(St1) Do
            If Pos(St1[i],St2) = 0 Then
               Dung:=False
            Else
               Delete(St2,Pos(St1[i],St2),1);
      End;
   If Dung Then
      Writeln('+Hai chuoi co cung cac ky tu')
   Else
      Writeln('+Hai chuoi co cac ky tu khac nhau');
   Readln
End.
zipBài tập 22: Viết chương trình Pascal Kiểm tra chuỗi đối xứng
Program Chuoi_Doi_Xung;
   Var
      St:String;
      l,i:Integer;
      Dung:Boolean;
Begin
   Writeln('KIEM TRA CHUOI DOI XUNG');
   Writeln('    -------------');
   Writeln;
   Write('-Nhap chuoi: ');
   Readln(St);
   l:=Length(St);
   Dung:=True;
   For i:=1 To (l Div 2) Do
      If St[i] <> St[l-i+1] Then
         Dung:=False;
   If Dung Then
      Writeln('+Chuoi nay doi xung')
   Else
      Writeln('+Chuoi nay khong doi xung');
   Readln
End.
zipBài tập 23: Viết chương trình Pascal Đổi số tập phân sang số la mã
Program So_La_Ma;
   Var
      So,So1,i:Integer;
      St:String;
Begin
   Writeln('DOI SO THAP PHAN SANG SO LA MA');
   Writeln('        ------------');
   Writeln;
   Write('-Nhap so nguyen: ');
   Readln(So);
   So1:=So;
   St:=' ';
   For i:=1 To (so Div 1000) Do
      St:=St+'M';
   So:=So Mod 1000;
   If So >= 900 Then
      Begin
         St:=St+'CM';
         So:=So-900;
      End
   Else
      If So >=500 Then
           Begin
              St:=St+'I';
           So:=So-500;
           End
      Else
         If So >=400 Then
            Begin
               St:=St+'CD';
               So:=So-400;
            End;
   For i:=1 To (so Div 100) Do
      St:=St+'C';
   So:=So Mod 100;
   If So >= 90 Then
      Begin
         St:=St+'XC';
         So:=So-90;
      End
   Else
      If So >=50 Then
           Begin
              St:=St+'L';
           So:=So-50;
           End
      Else
         If So >=40 Then
            Begin
               St:=St+'XL';
               So:=So-40;
            End;
   For i:=1 To (so Div 10) Do
      St:=St+'X';
   So:=So Mod 10;
   If So >= 9 Then
      Begin
         St:=St+'IX';
         So:=So-9;
      End
   Else
      If So >=5 Then
           Begin
              St:=St+'V';
           So:=So-5;
           End
      Else
         If So >=4 Then
            Begin
               St:=St+'IV';
               So:=So-4;
            End;
   For i:=1 To So Do
      St:=St+'I';
   Writeln;
   Writeln('+So thap phan: ',So1);
   Writeln('+So La ma    : ',St);
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal in các đối số của các phần tử mảng
Program Mang_so_thuc;
   Const
      Max = 100;
   Type
      Mang=Array[1..Max] Of Real;
   Var
      i,n:Integer;
      A:mang;
Begin
   Writeln('MANG SO THUC');
   Writeln('------------');
   Repeat
      Write('-Cho biet so phan tu: ');
      Readln(N);
   Until N <= Max;
   For i:=1 To N Do
      Begin
         Write('+Phan tu thu: ',i,' = ');
         Readln(a[i]);
      End;
   Writeln;
   Writeln('IN THEO THU TU NGUOC');
   Writeln('--------------------');
   Writeln;
   For i:=N Downto 1 Do
      Write(a[i]:4:1,' ');
   Writeln;
   Writeln;
   Writeln('IN CAC DOI SO CUA CAC PHAN TU MANG');
   Writeln('----------------------------------');
   Writeln;
   For i:=1 To N Do
      Write(a[i]:4:1,' ');
   Writeln;
   Readln
End.
zipBài tập 2: Viết chương trình Pascal in mã ASCII của các ký tự
Program Mang_Ky_Tu;
   Var
      a:Array[Char] Of Integer;
      Ch:Char;
Begin
   Writeln('IN MA ASCII CUA CAC KY TU');
   Writeln('------------------------');
   For Ch:='A' To 'Z' Do
      Begin
         a[Ch]:=Ord(Ch);
         Writeln('-Ky tu: ',Ch,' ma ASCII = ',a[ch]);
      End;
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal tính trung bình cộng các số nguyên
Program Tb_cong;
   Var
      i,so,dem,tong:Integer;
      Tb:Real;
      A:Array[1..100] Of Integer;
Begin
   Writeln('TINH TRUNG BINH CONG CAC SO NGUYEN');
   Writeln('----------------------------------');
   Writeln;
   dem:=0;
   Tong:=0;
   Write('-Nhap so nguyn: ');
   Readln(so);
   While so > 0 Do
      Begin
         dem:=dem+1;
         a[dem]:=so;
         Write('-Nhap so nguyen (-1 de ngung): ');
         Readln(so);
      End;
   For i:=1 to dem Do
      Tong:=Tong+A[i];
   Tb:=Tong/dem;
   Writeln;
   Writeln('+Trung binh cong cua: ',dem:2,' so vua nhap = ',Tb:8:2);
   Writeln;
   Writeln('      Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal chèn thêm một phần tử vào mảng một chiều
Program Chen;
   Var
      i,spt:Integer;
      so,vitri:Integer;
      a:Array[1..100] Of Integer;
Begin
   Writeln('CHEN MOT SO VAO MANG');
   Writeln('--------------------');
   Write('-Co bao nhieu phan tu: ');
   Readln(spt);
   For i:=1 To spt Do
      Begin
         Write('-Phan tu A[',i,']= ');
         Readln(a[i]);
      End;
   Writeln;
   Writeln('MANG TRUOC KHI CHEN');
   For i:=1 To spt Do
   Write(a[i]:6);
   Writeln;
   Write('-Can che so: ');
   Readln(so);
   Write('-Vao vi tri: ');
   Readln(vitri);
   For i:=spt+1 Downto Vitri+1 Do
      a[i]:=a[i-1];
   a[vitri]:=so;
   spt:=spt+ 1;
   Writeln;
   Writeln('MANG SAU KHI CHEN');
   For i:=1 To spt Do
      Write(a[i]:6);
   Readln
End.
zipBài tập 5: Viết chương trình Pascal xóa một phần tử trong mảng
Program Xoa_Pt;
   Var
      i,spt,vitri:Integer;
      a:Array[1..100] Of Integer;
Begin
   Writeln('XOA PHAN TU TRONG MANG');
   Writeln('----------------------');
   Writeln;
   Write('-Mang co bo nhieu phan tu: ');
   Readln(spt);
   For i:=1 To spt Do
      Begin
         Write('-Phan tu A[',i:2,']= ');
         Readln(a[i]);
      End;
   Writeln;
   Writeln('             MANG TRUOC KHI XOA');
   Writeln('             -----------------');
   Writeln;
   For i:=1 To spt Do
      Write(a[i]:6);
   Writeln;
   Writeln;
   Write('-Vi tri muon xoa: ');
   Readln(vitri);
   For i:=vitri to spt - 1 Do
      a[i]:=a[i+1];
   spt:=spt - 1;
   Writeln;
   Writeln('             MANG SAU KHI XOA');
   Writeln('             ----------------');
   Writeln;
   For i:= 1 to spt Do
      Write(a[i]:6);
   Writeln;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 6: Viết chương trình Pascal thống kê các số lẻ
Program So_le;
   Var
      a:Array[1..255] Of Integer;
      i,spt,sole:Byte;
Begin
   Writeln('THONG KE CAC SO LE');
   Writeln('------------------');
   Write('-Can nhap bao nhieu so: ');
   Readln(spt);
   For i:=1 To spt Do
      Begin
         Write('-Phan tu A[',i:2,']= ');
         Readln(a[i]);
      End;
   sole:=0;
   For i:=1 To spt Do
   If Odd(A[i]) Then
      Inc(sole);
   Writeln;
   Writeln('-Tong so cac so da nhap: ',spt);
   For i:= 1 To spt Do
      Write(a[i]:6);
   Writeln;
   Writeln('-Tong so cac so le la: ',sole);
   Writeln;
   Writeln('     Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal tính giá trị của đa thức bậc N
Program Da_thuc;
   Var
      a:Array[1..255] Of Real;
      i,n:Byte;
      x,p:Real;
Begin
   Writeln('TINH GIA TRI CUA DA THUC BAC N');
   Writeln('------------------------------');
   Writeln;
   Write('-Cho biet bac cua da thuc: ');
   Readln(n);
   For i:= N Downto 0 Do
      Begin
         Write('-Cho biet he so A[',i:2,']= ');
         Readln(a[i]);
      End;
   Writeln;
   Write('-Cho biet X= ');
   Readln(x);
   P:=a[n];
   For i:= N Downto 1 Do
      P:=x * p + a[i-1];
   Writeln;
   Writeln('+Tri cua da thuc P(x)= ',P:0:6);
   Writeln;
   Writeln('    Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 8: Viết chương trình Pascal đổi số nguyên kiểu Word ra số hệ thập lục
Program Doi_he_16;
   Const
      KyTuHe16:array[0..$F] Of Char ='0123456789ABCDEF';
   Var
      SoWord:Word;
      SoHex:String[4];
Begin
   Writeln('DOI SO NGUYEN KIEU WORD RA HE THAP LUC');
   Writeln('--------------------------------------');
   Writeln;
   Write('-Nhap so kieu Word: ');
   Readln(SoWord);
   SoHex[0]:=#4;
   SoHex[1]:= KyTuHe16[Hi(SoWord) SHR 4];
   SoHex[2]:= KyTuHe16[Hi(SoWord) AND $F];
   SoHex[3]:= KyTuHe16[Lo(SoWord) SHR 4];
   SoHex[4]:= KyTuHe16[Lo(SoWord) AND $F];
   Writeln('+So nguyen kieu Word  = ',soWord);
   Writeln('+Doi ra so he thap luc = $',SoHex);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 9: Viết chương trình Pascal đổi số nguyên kiểu Word ra số hệ nhị phân
Program Doi_he_2;
   Const
      KyTuHe2:array[0..1] Of Char ='01';
   Var
      SoWord:Word;
      SoBinary:String[16];
      i:byte;
Begin
   Writeln('DOI SO NGUYEN KIEU WORD RA HE NHI PHAN');
   Writeln('--------------------------------------');
   Writeln;
   Write('-Nhap so kieu Word: ');
   Readln(SoWord);
   SoBinary[0]:=#16;
   For i:=15 DownTo 0 Do
      If (SoWord AND (1 SHL i)) = (1 SHL i) Then
         SoBinary[16-i]:= KyTuHe2[1]
      Else
         SoBinary[16-i]:= KyTuHe2[0];
   Writeln('+So nguyen kieu Word  = ',soWord);
   Writeln('+Doi ra so he nhi phan= B ',SoBinary);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 10: Viết chương trình Pascal cộng hai số nguyên
Program Cong_so;
   Uses Crt;
   Const
      spt=301;
   Type
      mang=Array[1..spt] Of Integer;
   Var
      a,b,kq:Mang;
      k,na,nb,nmax,tam:Integer;
Begin
   ClrScr;
   Writeln('CONG 2 SO NGUYEN');
   Writeln('----------------');
   Writeln;
   Writeln('+SO THU NHAT (-1 de ket thuc) ');
   na:=0;
   Repeat
      na:=na+1;
      Write('-Chu so thu: ',na,' = ');
      Readln(a[na]);
   Until a[na]=-1;
   na:=na-1;
   For k:=0 To na-1 Do
      a[spt-k]:=a[na-k];
   For k:=1 to spt-na Do
      a[k]:=0;
   ClrScr;
   Writeln('+SO THU HAI (-1 de ket thuc) ');
   nb:=0;
   Repeat
      nb:=nb+1;
      Write('-Chu so thu: ',nb,' = ');
      Readln(b[nb]);
   Until b[nb]=-1;
   nb:=nb-1;
   For k:=0 To nb-1 Do
      b[spt-k]:=b[nb-k];
   For k:=1 to spt-nb Do
      b[k]:=0;
   If na>nb Then
      nmax:=na
   Else
      nmax:=nb;
   tam:=0;
   For k:=spt Downto spt-nmax Do
   Begin
      kq[k]:=(a[k]+b[k]+tam) Mod 10;
      tam:=(a[k]+b[k]+tam) Div 10;
   End;
   ClrScr;
   Writeln('KET QUA CONG 2 SO NGUYEN');
   Writeln('------------------------');
   Write('*So thu nhat: ');
   For k:=spt-na+1 To spt Do
      Write(a[k],' ');
   Writeln;
   Write('*So thu hai : ');
   For k:=spt-nb+1 To spt Do
      Write(b[k],' ');
   Writeln;
   Write('*Tong = ');
   For k:=Spt-nmax To spt Do
      Write(kq[k],' ');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 11: Viết chương trình Pascal nhân hai số nguyên
Program Nhan_so;
   Uses Crt;
   Const
      spt=900;
   Type
      mang=Array[1..spt] Of Integer;
   Var
      a,b,c,kq:Mang;
      i,j,k,na,nb,tam:Integer;
   {---------------------------}
   Procedure Nhap(Var a:mang; Var na:Integer);
      Var
         k:Integer;
   Begin
      na:=0;
      Repeat
         na:=na+1;
         Write('-Chu so thu: ',na,' = ');
         Readln(a[na]);
      Until a[na]=-1;
      na:=na-1;
      For k:=0 To na-1 Do
         a[spt-k]:=a[na-k];
      For k:=1 to spt-na Do
         a[k]:=0;
   End;
   {---------------------------}
   Procedure Cong(a:mang; Var b:mang);
      Var
         tam1,tam2,k:Integer;
   Begin
      tam1:=0;
      For k:= spt Downto 1 Do
         Begin
            tam2:=(a[k]+b[k]+tam1) Div 10;
            b[k]:=(a[k]+b[k]+tam1) Mod 10;
            tam1:=tam2;
         End;
   End;
   {---------------------------}
BEGIN
   ClrScr;
   Writeln('NHAN 2 SO NGUYEN');
   Writeln('----------------');
   Writeln;
   Writeln('+SO THU NHAT (-1 de ket thuc) ');
   Nhap(a,na);
   ClrScr;
   Writeln('+SO THU HAI (-1 de ket thuc) ');
   Nhap(b,nb);
   For k:=1 To spt Do
      kq[k]:=0;
   For j:=spt Downto spt-nb Do
   Begin
      For k:=1 to spt Do
         c[k]:=0;
         tam:=0;
         For i:=spt Downto spt-na Do
         Begin
            c[j+i-spt]:=(b[j]*a[i]+tam) Mod 10;
            tam:=(b[j]*a[i]+tam) Div 10;
         End;
      Cong(c,kq)
   End;
   ClrScr;
   Writeln('KET QUA NHAN 2 SO NGUYEN');
   Writeln('-----------------------');
   Writeln;
   Write('*So thu nhat: ');
   For k:=spt-na+1 To spt Do
      Write(a[k],' ');
   Writeln;
   Write('*So thu hai : ');
   For k:=spt-nb+1 To spt Do
      Write(b[k],' ');
   Writeln;
   Write('*Tich = ');
   For k:=Spt-(na+nb)+1 To spt Do
      Write(kq[k],' ');
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 12: Viết chương trình Pascal nhập dữ liệu cho ma trận vuông 10x10
Program Ma_tran_vuong;
   Uses Crt;
   Var
      a:Array[1..10, 1..10] Of Integer;
      i,j:Integer;
Begin
   Writeln('MA TRAN VUONG 10 x 10 PHAN TU');
   Writeln('-----------------------------');
   ClrScr;
   Window(10,5,60,25);
   For i:= 1 To 10 Do
      Begin
         For j:=1 To 10 Do
            Begin
               If i=j Then
                  a[i,j]:=i
               Else
                  a[i,j]:=0;
               Write(a[i,j]:5);
            End;
         Writeln(#10)
      End;
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 13: Viết chương trình Pascal tìm một số trong mảng
Program Tim_so;
   Var
      a:Array[1..4,1..6] Of Integer;
      i,j,so,solan:Integer;
Begin
   Writeln('TIM MOT SO TRONG MANG');
   Writeln('---------------------');
   Writeln;
   For i:=1 To 4 Do
      For j:=1 to 6 Do
         Begin
            Write('-Phan tu A[',i,',',j,']= ');
            Readln(a[i,j]);
         End;
   Writeln;
   Write('-So muon tim: ');
   Readln(so);
   solan:=0;
   For i:=1 To 4 Do
      For j:=1 To 6 Do
         If so=a[i,j] Then
            Begin
               solan:=solan+1;
               Writeln('+Lan: ',solan,' tai hang: ',i,' cot: ',j);
            End;
   Writeln;
   Writeln('+Tong so lan xuat hien la: ',solan);
   For i:=1 To 4 Do
      Begin
         For j:=1 To 6 Do
            Write(a[i,j]:8);
            Writeln;
      End;
   Readln
End.
zipBài tập 14: Viết chương trình Pascal giải hệ phương trình hai ẩn
Program Giai_he_PT_tuyen_tinh;
   Var
      A:Array[1..2, 1..2] Of Real;
      C:Array[1..2] Of Real;
      x,y,dt,dtx,dty:Real;
      i,j:Integer;
Begin
   Writeln('GIAI HE PT TUYEN TINH 2 AN');
   Writeln('--------------------------');
   Writeln;
   Writeln('-Nhap cac he so A cua he phuong trinh: ');
   For i:=1 to 2 Do
      For j:=1 To 2 Do
         Begin
            Write('+Phan tu A[',i,',',j,']= ');
            Readln(a[i,j]);
         End;
   Writeln;
   Writeln('-Nhap cac he so C cua he phuong trinh: ');
   For i:=1 to 2 Do
        Begin
           Write('+Phan tu C[',i,']= ');
         Readln(c[i]);
       End;
   Writeln;
   {Giai he phuong trinh}
   Dt:= a[1,1]*a[2,2]-a[1,2]*a[2,1]; {Dt: Dinh thuc}
   Dtx:=c[1]*a[2,2]-c[2]*a[2,1];
   Dty:=a[1,1]*c[2]-a[1,2]*c[1];
   If Dt <> 0 Then
      Begin
         x:=Dtx / Dt;
         y:=Dty / Dt;
         Writeln('X= ',x);
         Writeln('Y= ',y);
      End
   Else
      Begin
         If (Dtx=0) And (Dty=0) Then
            Writeln(#7,#7,#7,' Co vo so nghiem')
         Else
            Writeln(#7,#7,#7,'Vo nghiem');
      End;
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 15: Viết chương trình Pascal nhân hai ma trận
Program Nhan_ma_tran;
   Const
      Max=10;
   Type
      Matran=Array[1..Max,1..Max] Of Integer;
   Var
      A,B,C:Matran;
      hang1,cot1,i,j,m,n,q:Integer;
Begin
   Writeln('NHAN MA TRAN');
   Writeln('------------');
   Writeln;
   Writeln('MA TRAN A:');
   Write('-So hang = ');
   Readln(m);
   Write('-So cot  = ');
   Readln(n);
   For i:=1 To m Do
      For j:=1 To n Do
         Begin
            Write('+Phan tu A[',i,',',j,' = ');
            Readln(a[i,j]);
         End;
   Cot1:=m;
   Hang1:=m;
   Writeln;
   Writeln('MA TRAN B:');
   Write('-So hang = ');
   Readln(m);
   Write('-So cot  = ');
   Readln(n);
   For i:=1 To m Do
      For j:=1 To n Do
         Begin
            Write('+Phan tu B[',i,',',j,' = ');
            Readln(b[i,j]);
         End;
   For i:=1 To Hang1 Do
      For j:=1 To n Do
         Begin
            c[i,j]:=0;
            For q:=1 To Cot1 Do
               c[i,j]:= c[i,j] + a[i,q] * b[q,j];
         End;
   For i:=1 to hang1 Do
      Begin
         For j:= 1 To n Do
            Write((c[i,j]):8);
         Writeln;
      End;
   Readln
End.
zipBài tập 16: Viết chương trình Pascal cộng hai ma trận
Program Tong_Tich_Ma_tran;
   Uses Crt;
   Type
      Matran=array[1..3,1..3] Of Integer;
   Var
      a,b,c,d:Matran;
      i,j,k:Byte;
      Ch:Char;
   {*****************************}
   Procedure Nhap(Var m:Matran; Ten:Char);
   Begin
      ClrScr;
      GotoXY(26,6);
      Write('-Nhap ma tran: ',Ten);
      For i:=1 To 3 Do
         For j:=1 to 3 Do
            Begin
               GotoXY(20*i-8,10+2*j);
               Write(Ten,'[',i,',',j,']= ');
               Readln(m[i,j]);
            End;
   End;
   {*****************************}
   Procedure Xuat(m:Matran; Ten:Char);
   Begin
      ClrScr;
      GotoXY(26,6);
      Write('CAC PHAN TU CUA MA TRAN: ',Ten);
      For i:=1 To 3 Do
         For j:=1 To 3 Do
            Begin
               GotoXY(20*i-8,10+2*j);
               Write(Ten,'[',i,',',']= ',m[i,j]);
            End;
   End;
   {*****************************}
BEGIN
   Nhap(a,'A');
   Nhap(b,'B');
   For i:=1 To 3 Do
      For j:=1 To 3 Do
         c[i,j]:=a[i,j]+b[i,j];
   Writeln;
   Writeln('MA TRAN TONG');
   Writeln;
   Xuat(c,'C');
   GotoXY(10,25);
   Write('Bam phim <Esc> de xem ma tran tich');
   For i:=1 to 3 Do
      For j:=1 To 3 Do
         Begin
            d[i,j]:=0;
            For k:=1 To 3 Do
               d[i,j]:=a[i,k]*b[k,j]+d[i,j];
         End;
   Repeat
      Ch:=Readkey;
      If Ch=#0 then
         Ch:=Readkey;
   Until Ch=#27;
   Writeln('MA TRAN TICH= ');
   Xuat(d,'D');
   Repeat
   Until KeyPressed;
End.
zipBài tập 17: Viết chương trình Pascal sắp xếp các phần tử trong mảng tăng dần
Program Mang_tang;
   Const
      Max=10;
   Var
      a:Array[1..Max] Of Integer;
      i,j,tam:Integer;
Begin
   Writeln('SAP XEP MANG TANG DAN');
   Writeln('---------------------');
   Writeln;
   For i:= 1 To Max Do
      Begin
         Write('-Phan tu A[',i,']= ');
         Readln(a[i]);
      End;
   For i:=1 to Max-1 Do
        For j:= i+1 To Max Do
         Begin
            If a[i] > a[j] Then
               Begin
                  tam:=a[i];
                  a[i]:=a[j];
                  a[j]:=tam;
               End;
      End;
   Writeln;
   Writeln('+Mang sau khi sap xep:');
   Writeln;
   For i:=1 To Max Do
      Write(a[i],' ');
   Writeln;
   Readln
End.
zipBài tập 18: Viết chương trình Pascal sắp xếp các phần tử mảng bằng giải thuật chèn
Program Gt_Chen;
   Const
      spt=10;
   Var
      a:array[1..spt] Of Integer;
      i,j,k,tam:Integer;
Begin
   Writeln('SAP XEP MANG BANG GIAI THUAT CHEN');
   Writeln('---------------------------------');
   Writeln;
   For i:=1 To spt Do
      Begin
         Write('-Phan tu A[',i,']= ');
         Readln(a[i]);
      End;
   For i:=2 To spt Do
      If a[i] < a[i-1] Then
         Begin
            j:=1;
            While a[j] < a[i] Do
               j:=j+1;
            tam:=a[i];
            For k:=i Downto j+1 Do
               a[k]:=a[k-1];
            a[j]:=tam;
         End;
   Writeln;
   Writeln('Mang sau khi sap xep:');
   For i:=1 To spt Do
      Write(a[i]:6);
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 19: Viết chương trình Pascal sắp xếp các phần tử mảng bằng giải thật chọn
Program Gt_Chon;
   Const
      spt=10;
   Var
      a:array[1..spt] Of Integer;
      min,vitri,i,j:Integer;
Begin
   Writeln('SAP XEP MANG BANG GIAI THUAT CHON');
   Writeln('---------------------------------');
   Writeln;
   For i:=1 To spt Do
      Begin
         Write('-Phan tu A[',i,']= ');
         Readln(a[i]);
      End;
   For i:=1 To spt Do
      Begin
         min:=a[spt];
         vitri:=spt;
         For j:=i To spt Do
            If a[j] < min Then
               Begin
                  min:=a[j];
                  vitri:=j;
               End;
         a[vitri]:=a[i];
         a[i]:=min;
      End;
   Writeln;
   Writeln('Mang sau khi sap xep:');
   For i:=1 To spt Do
      Write(a[i]:6);
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 20: Viết chương trình Pascal sắp xếp các phần tử mảng bằng giải thuật nổi bọt
Program Gt_Noi_bot;
   Const
      spt=10;
   Var
      a:array[1..spt] Of Integer;
      i,j,tam:Integer;
Begin
   Writeln('SAP XEP MANG BANG GIAI THUAT NOI BOT');
   Writeln('-----------------------------------');
   Writeln;
   For i:=1 To spt Do
      Begin
         Write('-Phan tu A[',i,']= ');
         Readln(a[i]);
      End;
   For i:=1 To spt-1 Do
      For j:= spt Downto i+1 Do
         If a[j] < a[j-1] Then
            Begin
               tam:=a[j];
               a[j]:=a[j-1];
               a[j-1]:=tam;
            End;
   Writeln;
   Writeln('Mang sau khi sap xep:');
   For i:=1 To spt Do
      Write(a[i]:6);
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 21: Viết chương trình Pascal tìm kiếm phần từ bằng giải thuật tìm kiếm tuyến tính
Program Tim_Tuyen_Tinh;
   Const
      N=10;
   Var
      a:array[1..N] Of Integer;
      so,i:Integer;
Begin
   Writeln('GIAI THUAT TIM KIEM TUYEN TINH');
   Writeln('------------------------------');
   Writeln;
   For i:=1 To N Do
      Begin
         Write('-Phan tu A[',i,']= ');
         Readln(a[i]);
      End;
   Writeln;
   Write('-So can tim: ');
   Readln(so);
   i:=1;
   While (i <=N) And (a[i] <> so) Do
      i:=i+1;
   If i <= N Then
      Writeln('+Tim thay o vi tri thu: ',i)
   Else
      Writeln('+Khong tim thay');
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 22: Viết chương trình Pascal  tìm kiếm phần từ bằng giải thuật tìm kiếm nhị phân
Program Tim_Nhi_Phan;
   Const
      N=10;
   Var
      a:array[1..N] Of Integer;
      so,vt1,vt2,i:Integer;
Begin
   Writeln('GIAI THUAT TIM KIEM NHI PHAN');
   Writeln('----------------------------');
   Writeln;
   For i:=1 To N Do
      Begin
         Write('-Phan tu A[',i,']= ');
         Readln(a[i]);
      End;
   Writeln;
   Write('-So can tim: ');
   Readln(so);
   vt1:=1;
   vt2:=n;
   While vt2 >= vt1 Do
      Begin
         i:=Trunc((vt1+vt2) Div 2);
         If so > a[i] Then
            vt1:=i+1
         Else
            If so < a[i] Then
               vt2:=i-1
            Else
               vt2:=-1;
      End;
   If vt2 = -1 Then
      Writeln('+Tim thay o vi tri thu: ',i)
   Else
      Writeln('+Khong tim thay');
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 23: Viết chương trình Pascal xóa các phần tử trùng nhau trong mảng
Program Bo_so_trung;
   Const
      Max=100;
   Var
   a:Array[1..Max] Of Integer;
   i,j,k,n:Integer;
Begin
   Writeln('XOA BO CAC SO TRUNG NHAU');
   Writeln('------------------------');
   Writeln;
   Write('-Nhap so phan tu mang: ');
   Readln(n);
   For i:=1 To N Do
      Begin
         Write('-Phan tu A[',i,']= ');
         Readln(a[i]);
      End;
   i:=2;
   While i <= N Do
      Begin
         j:=1;
         While a[j] <> a[i] Do
            j:=j+1;
         If j < i Then
            Begin
               For k:=i to n-1 Do
                  a[k]:= a[k+1];
               n:=n-1;
            End
         Else
            i:=i+1;
      End;
   Writeln;
   Write('-Mang con lai: ');
   For i:=1 to n Do
      Write(a[i]:8);
   Writeln;
   Writeln('   Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 24: Viết chương trình Pascal tìm dãy con trong mảng
Program Day_con;
   Const
      k=10;
      a:Array[1..k] Of Integer=(1,3,2,8,10,12,7,29,6,3);
   Var
      i:Integer;
      vt,max:Integer;
      n,tong:Integer;
Begin
   Vt:=1;
   max:=a[1];
   n:=1;
   tong:=a[1];
   For i:=2 To k Do
      Begin
         If (a[i] > a[i-1]) Then
            tong:=tong+a[i];
         If (a[i] < a[i-1]) Or (i=k) Then
            Begin
               If tong > max Then
                  Begin
                     max:=tong;
                     vt:=n;
                  End;
               n:=i;
               tong:=a[i];
            End;
      End;
   Writeln('-Day con la: ');
   i:=vt;
   Repeat
      Write(a[i]:6);
      max:=max-a[i];
      i:=i+1;
   Until max=0;
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 25: Viết chương trình Pascal đổi chữ thường sang chữ HOA
Program Chu_hoa;
   Uses Crt;
   Const
      a:Array[1..10] Of String[24]=('nguyen trung truc','dinh tien hoang',
         'nguyen cong tru','le thanh ton','le loi','le lai','tran hung dao',
         'nguyen hue','chu van an','mac dinh chi');
   Var
      k,j:Byte;
   {-------------------------}
   Procedure ChuHoa(x,y:Byte; a:String);
      Var
         k:Byte;
   Begin
      For k:=1 To length(a) Do
         If (k=1) Or ((a[k-1]=' ') And (a[k]<>' ')) Then
            Begin
               GotoXY(x+k-1,y);
               Write(UpCase(a[k]));
            End;
   End;
Begin
   ClrScr;
   For k:=1 To 10 Do
      Begin
         GotoXY(5,k);
         Write(a[k]:-24);
         ChuHoa(5,k,a[k])
      End;
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 26: Viết chương trình Pascal in tam giác Pascal
Program Tg_Pascal;
   Const
      n=10;
   Var
      a:Array[1..n, 1..n] Of Integer;
      i,j:Integer;
Begin
   Writeln('TAM GIAC PASCAL');
   Writeln('---------------');
   Writeln;
   For i:=1 To n Do
      a[i,1]:=1;
   For j:=1 To n Do
      a[1,j]:=0;
   For i:=2 To n Do
      For j:=2 To n Do
         a[i,j]:=a[i-1,j-1]+a[i-1,j];
   For i:=1 To n Do
      Begin
         For j:=1 To i Do
            Write(a[i,j]:4);
         Writeln;
      End;
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 27: Viết chương trình Pascal phân tích số nguyên dương nhỏ nhất
Program Phan_tich;
   Const
      n=15;
   Var
      a:Array[1..n, 1..n] Of Longint;
      i,j,i1,j1:Integer;
Begin
   Writeln('PHAN TICH SO NGUYEN DUONG NHO NHAT');
   Writeln('----------------------------------');
   Writeln;
   For i:=1 To n Do
      For j:=1 To n Do
         a[i,j]:=i*i*i + j*j*j;
   Writeln;
   Writeln('IN KET QUA');
   Writeln('----------');
   For i:=1 To n Do
      For j:=1 To i Do
         Begin
            For i1:= i+1 To n Do
               For j1:=1 To j-1 Do
                  If a[i,j]=a[i1,j1] Then
                     Writeln(a[i,j],' = ',i,' ^3 ',' + ',j,' ^3 ',' = ',
                     i1,' ^3 ',' + ',j1,' ^3');
         End;
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln
End.
zipBài tập 28: Viết chương trình Pascal in bảng cửu chương
Program Cuu_Chuong;
   Uses Crt;
   Type
      cc1=Array[1..5, 1..10] Of Byte;
      cc2=Array[6..10, 1..10] Of Byte;
    Var
      i,j:Byte;
   Procedure In1;
      Var
         a:cc1;
         cot,hang:Byte;
      Begin
         cot:=1;
         hang:=3;
         For i:=1 To 5 Do
              For j:=1 To 10 Do
                 Begin
                  GotoXY(cot,hang);
                  a[i,j]:=i * j;
                  TextColor(Yellow);
                  Writeln(i:2,' lan ',j:2,' =',a[i,j]:3,'|');
                  hang:=hang+1;
                  If hang > 12 Then
                     Begin
                        hang:=3;
                        cot:=cot+15;
                     End;
              End;
      End;
   Procedure In2;
      Var
         a:cc2;
         cot,hang:Byte;
      Begin
         cot:=1;
         hang:=14;
         For i:=6 To 10 Do
              For j:=1 To 10 Do
                 Begin
                  GotoXY(cot,hang);
                  a[i,j]:=i * j;
                  Textcolor(LightMagenta);
                  Writeln(i:2,' lan ',j:2,' =',a[i,j]:3,'|');
                  hang:=hang+1;
                  If hang > 23 Then
                     Begin
                        hang:=14;
                        cot:=cot+15;
                     End;
              End;
      End;

BEGIN
   ClrScr;
   Textcolor(Cyan);
   Writeln('                          BANG CUU CHUONG');
   Writeln('                          ---------------');
   In1;
   Textcolor(LightBlue);
   Writeln('               -------------------------------------------');
   In2;
   Textcolor(LightGreen);
   Writeln('                     Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 29: Viết chương trình Pascal tìm 2 phần tử liên tiếp bằng giá trị X
Program Tim_PT_Mang;
   Uses Crt;
   Var
      a:Array[1..1000] Of Integer;
   {----------------------------}
   Procedure Tao;
      Var
         k:Integer;
   Begin
      Randomize;
      For k:=1 To 100 Do
         a[k]:=Random(100);
   End;
   {----------------------------}
   Procedure Tim;
      Var
         k,x:Integer;
   Begin
      Write('-Nhap gia tri X= ');
      Readln(x);
      For k:=1 To 999 Do
         Begin
            If a[k] +a[k+1] = X Then
               Writeln('a[',K,'] + a[',K+1,']= ',X)
            Else
               Writeln('Khong co 2 phan tu nao bang: ',X);
           End;
   End;
BEGIN
   Writeln('TIM 2 PHAN TU LIEN TIEP BANG GIA TRI X');
   Writeln('-------------------------------------');
   Writeln;
   Tao;
   Tim;
   Writeln;
   Writeln('  Bam phim <Enter> de ket thuc ');
   Readln;
End.
zipBài tập 30: Viết chương trình Pascal sắp xếp nhị phân
Program SX_Nhi_Phan;
   Uses Crt;
   Const
      Pt=240;
   Type
      Mang=Array[1..Pt] Of Integer;
   Var
      a:Mang;
      n:Integer;
   {---------------------------------}
   Procedure Sort(Var a: Mang; n:Integer);
      Var
         k,j,dau,cuoi,giua,tam:Integer;
   Begin
      For k:=2 To n Do
         Begin
            tam:=a[k];
            cuoi:=1;
            dau:=k-1;
            While cuoi <= dau Do
               Begin
                  giua:=(dau+cuoi) Div 2;
                  If tam < a[giua] Then
                     dau:=giua-1
                  Else
                     cuoi:=giua+1;
               End;
            For j:=k-1 Downto cuoi Do
               a[j+1]:=a[j];
            a[cuoi]:=tam
         End
   End;
  {---------------------------------}
BEGIN
   ClrScr;
   Randomize;
   For n:=1 To Pt Do
      a[n]:=Random(1000);
   Sort(a,Pt);
   For n:=1 To Pt Do
      Write(' ',a[n]:6,' ');
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal nhập một ngày từ bàn phím, kiểm tra có ngày này hay không.
Program KT_ngay;
Const
   Ngay  = [1..31];
   Thang = [1..12];
   Th31ngay: Set of byte = [1,3,5,7,8,10,12];

   BaoLoi : Array[1..3] Of String[30] =('-Ban nhap sai ngay, thang',
            '-Thang nay khong co ngay 31','-thang 2 khong co ngay nay');

Type
     NgayThang = Record
        Ng, Th : Byte;
      Nam    : Word;
   End;

Var
      Nhatky : NgayThang;
      Loi    : Array[1..3] Of Boolean;
      i      : Byte;
      Nhuan  : Boolean;
Begin
   With Nhatky Do
      Begin
         Write('-Nhap ngay = ');
         Readln(Ng);
         Write('-Nhap thang= ');
         Readln(Th);
         Write('-Nhap nam  = ');
         Readln(Nam);
         Loi[1] := (NOT(Ng In Ngay)) OR (NOT (Th In Thang));
         Loi[2] := (Ng = 31) AND (NOT (Th In Th31Ngay));
         Nhuan  := ((Nam Mod 4) = 0) AND ((Nam Mod 100) <> 0)
                  OR ((Nam Mod 400) = 0);
         Loi[3] := ((Ng > 29) AND (Th = 2)) OR ((Ng = 29)
                  AND (th = 2) AND (NOT Nhuan));
      End;
   For i := 1 To 3 Do
      If Loi[i] Then
         Writeln(BaoLoi[i]);
   Readln
End.
zipBài tập 2: Viết chương trình Pascal nhập dữ liệu kiểu bản ghi
Program Van_Toan_Ly;
Const
   Max = 50;
   Td1='|------------------------|-----|-----|------|';
   Td2=#124 +'     HO VA TEN          ' + #124 + ' VAN ' + #124+
      'TOAN ' + #124 + '  LY  |';

Type
     HocSinh = Record
        HoTen       : String[24];
      Van,Toan,Ly : Real;
   End;

Var
   Hs  : Array[1..Max] Of HocSinh;
   i,n : 1..Max;
Begin
   Writeln('NHAP XUAT DU LIEU KIEU BAN GHI');
   Writeln('------------------------------');
   Writeln;
   Write('-Lop co bao nhieu hoc sinh: ');
   Readln(n);
   For i := 1 To N Do {Nhap du lieu}
      With Hs[i] Do
         Begin
            Write('-Ho ten hoc sinh thu: ',i:2,' = ');
            Readln(HoTen);
            Write('-Diem Van : ');
            Readln(Van);
            Write('-Diem Toan: ');
            Readln(Toan);
            Write('-Diem Ly  : ');
            Readln(Ly);
         End;
   Writeln;
   Writeln('                  BANG DIEM');
   Writeln;
   Writeln(Td1);
   Writeln(Td2);
   Writeln(Td1);
   For i := 1 To N Do    {Xuat du lieu }
      With Hs[i] Do
         Writeln(#124,HoTen,#32:24 - Length(HoTen),
                 #124,Van  :5:1,
                 #124,Toan :5:1,
                 #124,Ly   :5:1,' |');
   Writeln(Td1);
   Readln
End.
zipBài tập 3: Viết chương trình Pascal sắp xếp bản ghi theo giải thuật nổi bọt
Program Sap_Xep_Tuoi_Giam;
Const
   Max = 50;
   Td1 = '|========================|============|';
   Td2 = #124+'      HO VA TEN         '+#124 + '  NAM SINH  |';
   Td3 = '|------------------------|------------|';

Type
   HoSo = Record
      HoTen : String[24];
      Ngay  : 1..31;
      Thang : 1..12;
      Nam   : 1900..2000;
   End;
Var
   Nhanvien :Array[1..Max] Of HoSo;
   i,n  : 1..Max;
   Tam  : HoSo;
   Kthuc: Boolean;

Begin
   Writeln('SAP XEP BAN GHI THEO GIAI THUAT NOI BOT');
   Writeln('---------------------------------------');
   Writeln;
   Write('-Co bao nhieu nguoi: ');
   Readln(n);
   For i := 1 to N Do   { Nhap du lieu }
      With Nhanvien[i] Do
         Begin
            Write('-Ho va ten nguoi thu: ',i:2,' = ');
            Readln(HoTen);
            Write('-Ngay sinh: ');
            Readln(Ngay);
            Write('-Thang    : ');
            Readln(Thang);
            Write('-Nam      : ');
            Readln(Nam);
         End;
   Repeat          { Sap xep ban ghi}
      KThuc := True;
      For i := 1 To N - 1 Do
         If (Nhanvien[i].Nam > Nhanvien[i+1].Nam)
            OR ((Nhanvien[i].Nam = Nhanvien[i+1].Nam) AND
                (Nhanvien[i].Thang > Nhanvien[i+1].Thang))
            OR ((Nhanvien[i].Nam = Nhanvien[i+1].Nam) AND
                (Nhanvien[i].Thang = Nhanvien[i+1].Thang) AND
                (Nhanvien[i].Ngay > Nhanvien[i+1].Ngay)) Then
            Begin
               Tam:=Nhanvien[i];
               Nhanvien[i] := Nhanvien[i+1];
               Nhanvien[i+1] := Tam;
               KThuc :=False;
            End;
   Until KThuc;
   Writeln;
   Writeln('          SAP XEP THEO TUOI');
   Writeln;
   Writeln(Td1);
   Writeln(Td2);
   Writeln(Td3);
   For i := 1 to N Do
      With Nhanvien[i] Do
         Writeln(#124, HoTen, #32 :24 - Length(HoTen),
               #124,Ngay,' / ',Thang,' / ',nam, #124);
   Writeln(Td1);
   Readln
End.
zipBài tập 4: Viết chương trình Pascal tạo câu hỏi trắc nghiệm
Program Trac_Nghiem;
Type
   Tracnghiem = Record
      CauHoi     : String;
      A,B,C,D : String;
      DapAn   : Char;
   End;

Var
   a:Array[1..5] Of Tracnghiem;
   i,dung : Integer;
   Traloi : Char;

Begin
   Writeln('CAU HOI TRAC NGHIEM');
   Writeln('-------------------');
   Writeln;
   Writeln('-Nhap 5 cau hoi,y nghia va dap an');
   For i := 1 To 5 Do
      With a[i] Do
         Begin
            Write('-Cau hoi thu: ',i:2,' : ');
            Readln(CauHoi);
            Write('   +Nghia   A: ');
            Readln(A);
            Write('   +Nghia   B: ');
            Readln(B);
            Write('   +Nghia   C: ');
            Readln(C);
            Write('   +Nghia   D: ');
            Readln(D);
            Write('-Dap an: ');
            Readln(DapAn);
            DapAn := UpCase(DapAn);
         End;

   Dung := 0;
   Writeln('-Ban chon nghia cho tung cau hoi');
   For i := 1 To 5 Do
      Begin
         Writeln(i,'. ',a[i].CauHoi);
         Writeln(' A)',a[i].A);
         Writeln(' B)',a[i].B);
         Writeln(' C)',a[i].C);
         Writeln(' D)',a[i].D);
         Write('-Lua cau nao go vao nghia cua cau do: ');
         Readln(TraLoi);
         If UpCase(TraLoi) = a[i].DapAn Then
            Dung := Dung + 1;
      End;
   Writeln;
   Writeln('-So cau tra loi dung: ',Dung);
   Readln
End.
zipBài tập 5: Viết chương trình Pascal để tra từ điển Việt - Anh
Program Tu_dien;
Type
   Tudien = Record
      Anh,Viet : String;
   End;

Var
   a: Array[1..5] Of TuDien;
   St : String;
   i : Integer;
   TimDuoc : Boolean;

Begin
   For i := 1 To 5 Do
      Begin
         Writeln('-Tu thu: ',i);
         Write('   +Nghia tieng Anh  : ');
         Readln(a[i].Anh);
         Write('   +Nghia tieng Viet : ');
         Readln(a[i].Viet);
      End;
   Writeln;
   Write('*Tu tieng Anh can tim: ');
   Readln(St);
   TimDuoc :=False;
   i := 1;
   While (NOT TimDuoc) AND (i <= 5) Do
      Begin
         If St = a[i].Anh Then
            Begin
               Write('*Nghia tieng Viet    : ',a[i].Viet);
               TimDuoc := True;
            End;
         i := i + 1;
      End;
   If NOT TimDuoc then
      Writeln('Tu nay khong co trong tu dien');
   Readln
End.
zipBài tập 6: Viết chương trình Pascal quản lý thành tích đội bóng
Program TT_Doi_Bong;
   Const
      Max = 23;
   Type
      ThanhTich=Record
         HoTen:String[24];
         Tuoi,BanThang:Integer;
      End;
   DoiBong = Array[1..Max] Of ThanhTich;
   Var
      i,n,TuoiCao,TuoiThap,nam:Integer;
      Ten1,Ten2,TenDoi:String[20];
      CauThu:DoiBong;
      ThangNhieu,ThangIt:Integer;
      Tb:Real;
Begin
   Writeln('THANH TICH CUA DOI BONG DA');
   Writeln('--------------------------');
   Write('-Thanh tich nam nao: ');
   Readln(Nam);
   Write('-Ten doi bong: ');
   Readln(TenDoi);
   Write('-So cau thu: ');
   Readln(n);
   For i:=1 To n Do
      With Cauthu[i] Do
         Begin
            Write('-Ho va ten cau thu thu: ',i:2,' la: ');
            Readln(HoTen);
            Write('-Tuoi cua cau thu thu: ',i:2,' la: ');
            Readln(Tuoi);
            Write('-So ban thang cua cau thu thu: ',i:2,' la: ');
            Readln(BanThang);
         End;
   TuoiCao:=CauThu[1].Tuoi;
   Tuoithap:=CauThu[1].Tuoi;
   ThangNhieu:=Cauthu[1].Banthang;
   ThangIt:=CauThu[1].BanThang;
   Ten1:=CauThu[1].HoTen;
   Ten2:=CauThu[1].HoTen;
   Tb:=CauThu[1].BanThang;
   For i:=2 To n Do
      Begin
         If CauThu[i].Tuoi > TuoiCao Then
            TuoiCao:=CauThu[i].Tuoi
         Else
            If CauThu[i].Tuoi < TuoiThap Then
               Tuoithap :=CauThu[i].Tuoi;
         If CauThu[i].BanThang > ThangNhieu Then
            Begin
                 ThangNhieu:=Cauthu[i].BanThang;
                  Ten1:=CauThu[i].HoTen;
            End
         Else
              If CauThu[i].BanThang < ThangIt Then
                 Begin
                    ThangIt:= CauThu[i].BanThang;
                  Ten2:=CauThu[i].HoTen;
               End;
          Tb:=Tb+CauThu[i].BanThang;
      End;
   Writeln;
   Writeln('THANH TICH NAM: ',nam);
   Writeln('Cua doi bong: ',TenDoi);
   Writeln('-----------------------');
   Writeln;
   Writeln('-Cau thu: ',Ten1,' co tuoi lon nhat: ',TuoiCao);
   Writeln('-Cau thu: ',Ten2,' co tuoi nho nhat: ',TuoiThap);
   Writeln;
   Writeln('-Cau thu: ',Ten1,' Co ban thang nhieu nhat: ',ThangNhieu);
   Writeln('-Cau thu: ',Ten2,' Co ban thang it    nhat: ',ThangIt);
   Writeln;
   Writeln('-So ban thang trung binh cua toan doi: ',Round(Tb/n));
   Readln
End.
zipBài tập 7: Viết chương trình Pascal nhập xuất số hữu tỷ
Program So_Huu_Ty;
Type
   HuuTy = Record
      TuSo, MauSo : Integer;
   End;

Var
   So1, So2, Kq : HuuTy;
   St1, St2     : String;
   i,Result, n, m   : Integer;
   Ch             : Char;

Begin
   Writeln('NHAP, XUAT SO HUU TY');
   Writeln('--------------------');
   Writeln;
   Write('-So thu nhat: ');
   Readln(St1);
   Write('-So thu hai : ');
   Readln(St2);
   i := Pos('/', St1);
   With so1 Do
      If i = 0 Then
         Begin
            Val(St1, TuSo, Result);
            MauSo := 1;
         End
      Else
         Begin
            Val(Copy(St1, 1, i-1), TuSo, Result);
            Val(Copy(St1, i+1, Length(St1)-i), MauSo, Result);
         End;
   i := Pos('/', St2);
   With So2 Do
      If i = 0 Then
         Begin
            Val(St2, TuSo, Result);
            MauSo := 1;
         End
      Else
         Begin
            Val(Copy(St2, 1, i-1), TuSo, Result);
            Val(Copy(St2, i+1, Length(St2)-i), MauSo, Result);
         End;
   Write('Chon phep tinh (+, -, *, /): ');
   Readln(Ch);
   Case Ch Of
      '+' : Begin
               Kq.TuSo := So1.TuSo*So2.MauSo + So1.MauSo * So2.TuSo;
               Kq.MauSo := So1.MauSo * So2.MauSo;
            End;
        '-' : Begin
               Kq.TuSo := So1.TuSo*So2.MauSo - So1.MauSo * So2.TuSo;
               Kq.MauSo := So1.MauSo * So2.MauSo;
            End;
      '*' : Begin
               Kq.TuSo := So1.TuSo*So2.TuSo;
               Kq.MauSo := So1.MauSo * So2.MauSo;
            End;
      '/' : Begin
               Kq.TuSo := So1.TuSo*So2.MauSo;
               Kq.MauSo := So1.MauSo * So2.TuSo;
            End;
   End;
   If Kq.TuSo = 0 Then
      Write('Ket qua : 0')
   Else
      With Kq Do
         Begin
            n := ABS(TuSo);
            m := ABS(MauSo);
            While n <> m Do
               If n > m Then
                  n := n-m
               Else
                  m := m-n;
             TuSo :=TuSo Div n;
             MauSo := MauSo Div n;
             If MauSo = 1 Then
                Write('Ket qua : ',TuSo)
             Else
                Write('Ket qua : ',TuSo,'/',MauSo);
         End;
   Readln
End.
zipBài tập 8: Viết chương trình Pascal sắp xếp danh sách theo tên
Program Sap_Xep_Theo_Ten;
Type
   HoSo = Record
      HoLot : String[17];
      Ten   : String[7];
      Diem  : Real;
   End;

Var
   a            : Array[1..50] Of HoSo;
   Tam        : HoSo;
   i,j,PhanTu : Integer;

Begin
   PhanTu := 0;
   With Tam Do
   Repeat
      Write('-Nhap ho lot ( 0 de ket thu): ');
      Readln(HoLot);
      If HoLot <> '0' Then
         Begin
            Write('-Nhap ten  : ');
            Readln(Ten);
            Write('-Nhap diem : ');
            Readln(Diem);
            PhanTu := PhanTu + 1;
            a[PhanTu] := Tam;
         End;
   Until HoLot = '0';

   For i := 1 To PhanTu - 1 Do
      For j := PhanTu DownTo i+1 Do
         If a[j].Ten[1] < a[j-1].Ten[1] Then
            Begin
               Tam := a[j];
               a[j] := a[j-1];
               a[j-1] := Tam;
            End;
   Writeln;
   Writeln('------------------------------------');
   Writeln('|       HO VA TEN          |  DIEM |');
   Writeln('|--------------------------|-------|');
   For i := 1 To PhanTu Do
      With a[i] Do
         Writeln('|',HoLot:17,' ',Ten:7,' |',Diem:5:1,'  |');
   Writeln('------------------------------------');
   Readln
End.
zipBài tập 9: Viết chương trình Pascal in Hóa đơn bán hàng
Program Hoa_Don;
Const
   Max = 100;
Type
   HoaDon = Record
      NguoiMua : String[24];
      TenHang  : String[10];
      DonGia   : Real;
      SoLuong  : Integer;
   End;

Var
   a   : Array[1..Max] Of HoaDon;
   DsTenHang : Array[1..Max] Of String[10];
   Tam       : HoaDon;
   Spt, SoTenHang, i, j : Integer;
   Tong                 : Real;
   KiemTra              : Boolean;

Begin
   Writeln('HOA DON BAN HANG');
   Writeln('----------------');
   Writeln;
   Spt := 0;
   With Tam do
      Repeat
         Write('-Ten nguoi mua (go 0 de thoat): ');
         Readln(NguoiMua);
         If NguoiMua <> '0' Then
            Begin
               Write('-Ten hang: ');
               Readln(TenHang);
               Write('-Don gia : ');
               Readln(DonGia);
               Write('-So luong: ');
               Readln(SoLuong);
               Spt := Spt + 1;
               a[Spt] := Tam;
            End;
      Until NguoiMua = '0';
   SoTenHang := 0;
   For i := 1 To Spt Do
      Begin
         KiemTra :=False;
         For j := 1 To SoTenHang Do
            If DsTenHang[j] = a[i].TenHang Then
               KiemTra := True;
            If NOT KiemTra Then
               Begin
                  SoTenHang :=SoTenHang + 1;
                  DsTenHang[SoTenHang] := a[i].TenHang;
               End;
      End;
   Writeln;
   For i := 1 To SoTenHang Do
      Begin
         Tong := 0;
         For j := 1 To Spt Do
            With a[j] Do
               If TenHang = DsTenHang[i] Then
                  Tong := Tong + (DonGia * Soluong);
               Writeln('  +Tong so tien mua: ',DsTenHang[i]:10,' = ',tong:10:2);
      End;
   Readln
End.
zipBài tập 10: Viết chương trình Pascal tính thể tích lóng gỗ
Program The_Tich_Long_Go;
Type
   CachDo = (DuongKinh, ChuVi);
   LongGo = Record
      Cdai   : Real;
      Dscdai : Real;
      Case Cdo : CachDo Of
         DuongKinh : (Dk,Dsdk    : Real);
         ChuVi       : (Cvi, Dscvi : Real);
   End;

Var
   MaDo    :Char;
   Go      : LongGo;
   Ttich : Real;
   {------------------------}
   Function TheTich(A: LongGo): Real;
   Begin
      With A Do
         Case Cdo Of
            DuongKinh : TheTich := Pi*Sqr(Dk-Dsdk)*(Cdai-Dscdai)/40000;
            ChuVi     : TheTich := Sqr(Cvi-Dscvi)*(Cdai-Dscdai)/(Pi*40000);
         End;
   End;

Begin
   Writeln('TINH THE TICH LONG GO');
   Writeln('---------------------');
   Writeln;
   Repeat
      Writeln('*Chon phuong phap do ?');
      Write('+Duong kinh (go K), +Chu vi (go V): ');
      Readln(Mado);
   Until Pos(Mado,'kKvV') <> 0;
   With Go Do
      Begin
         Write('-Chieu dai (m) = ');
         Readln(Cdai);
         Write('-Dung sai (m)  = ');
         Readln(Dscdai);
         Case Mado Of
            'k','K' : Begin
                        Cdo := DuongKinh;
                        Write('+Duong kinh (Cm): ');
                        Readln(Dk);
                        Write('+Dung sai (Cm)  : ');
                        Readln(Dsdk);
                      End;
             'v','V' : Begin
                        Cdo := Chuvi;
                        Write('+Chu vi (Cm)    : ');
                        Readln(Cvi);
                        Write('+Dung sai (Cm)  : ');
                        Readln(Dscvi);
                      End;
         End;
      End;
   Ttich :=TheTich(Go);
   Writeln;
   Writeln('*The tich long go la: ',Ttich:10:4,' m3');
   Writeln;
   Writeln('Bam phim <Enter> de ket thuc');
   Readln
End.
zipBài tập 11: Viết chương trình Pascal quản lý gia cảnh
Program Gia_Canh;
Const
   Max = 100;
   Td1 ='|========================|========================|======|';
   Td2 =#124 +'         HO VA TEN      '+
        #124 +'      HO TEN VO CHONG   '+
        #124 +'SO CON'+#124;
   Td3 ='|------------------------|------------------------|------|';
Type
   GiaCanh = Record
      HoTen :String[24];
      Case GiaDinh  : Boolean Of
              True  : (VoChong : String[24];
              SoCon : Byte);
      End;

Var
   Hsgc :Array[1..Max] Of GiaCanh;
   n, i : 1..Max;
   Ch   : Char;
Begin
   Writeln('HO SO GIA CANH');
   Writeln('--------------');
   Writeln;
   Write('-So luong nhan vien: ');
   Readln(n);
   For i := 1 To N Do  {Nhap du lieu}
      With Hsgc[i] Do
         Begin
            Write('+Ho va ten nhan vien thu: ',i:2,' la= ');
            Readln(HoTen);
            Write('+Co gia dinh chua (C/K) ');
            Readln(Ch);
            Ch := UpCase(Ch);
            If Ch = 'C' Then
               Begin
                  GiaDinh := True;
                  Write('   +Ho ten vo/chong: ');
                  Readln(VoChong);
                  Write('   +So con         : ');
                  Readln(SoCon);
               End
            Else
               GiaDinh := False;
         End;
   Writeln;
   Writeln(#32:25,'HOAN CANH GIA DINH NHAN VIEN');
   Writeln(#32:12,Td1);
   Writeln(#32:12,Td2);
   Writeln(#32:12,Td3);
   For i := 1 To N Do     {Xuat du lieu }
      With Hsgc[i] Do
         Begin
            Write(#32:12);
            Write(#124,HoTen,#32:24-Length(HoTen));
            If GiaDinh Then
               Begin
                  Write(#124,VoChong,#32:24-Length(VoChong));
                  Writeln(#124,SoCon:6,#124);
               End
            Else
               Begin
                  Write(#124,#32:24);
                  Writeln(#124,#32:6,#124);
               End;
         End;
   Writeln(#32:12,Td1);
   Readln
End.
zipBài tập 12: Viết chương trình Pascal quản lý hồ sơ nhân viên
Program Ho_So;
Const
   Max = 100;
Type
   Str = String[24];
   HoSo = Record
      HoTen : Str;
      Tuoi  : Integer;
      Luong : Real;
   End;
   CongTy = Array[1..Max] Of HoSo;
Var
   Hoten1, Hoten2               : Str;
   i,n,TuoiMax,TuoiMin          : Integer;
   LuongMax, LuongMin,LuongTb : Real;
   Nv                           : CongTy;
Begin
   Writeln('HO SO NHAN VIEN');
   Writeln('---------------');
   Writeln;
   Write('-Co bao nhieu nguoi: ');
   Readln(n);
   For i := 1 To N Do
      With Nv[i] Do
         Begin
            Write('-Ho ten nhan vien thu: ',i:2,' la= ');
            Readln(HoTen);
            Write('-Tuoi      = ');
            Readln(Tuoi);
            Write('-Bac luong = ');
            Readln(Luong);
         End;
   TuoiMax  := Nv[1].Tuoi;
   TuoiMin  := Nv[1].Tuoi;
   LuongMax := Nv[1].Luong;
   LuongMin := Nv[1].Luong;
   HoTen1   := Nv[1].HoTen;
   HoTen2   := Nv[1].HoTen;
   LuongTb  := Nv[1].Luong;
   For i := 2 To N Do
      Begin
         If Nv[i].Tuoi > TuoiMax Then
            TuoiMax := Nv[i].Tuoi
         Else
            If Nv[i].Tuoi < TuoiMin Then
               TuoiMin := Nv[i].Tuoi;
         If Nv[i].Luong > LuongMax Then
            Begin
               LuongMax := Nv[i].Luong;
               HoTen1 := Nv[i].HoTen;
            End
         Else
            If Nv[i].Luong < LuongMin Then
               Begin
                  LuongMin := Nv[i].Luong;
                  HoTen2 := Nv[i].HoTen;
               End;
         LuongTb := LuongTb + Nv[i].Luong;
      End;
   Writeln;
   Writeln('+Nhan vien co tuoi lon nhat la: ',TuoiMax);
   Writeln('+Nhan vien co tuoi nho nhat la: ',TuoiMin);
   Writeln('+Nhan vien: ',HoTen1,' co bac luong lon nhat: ',LuongMax:10:2);
   Writeln('+Nhan vien: ',HoTen2,' co bac luong nho nhat: ',LuongMin:10:2);
   Writeln('+Bac luong trung binh cua toan Cong Ty      : ',LuongTb/n:10:2);
   Readln
End.
zipBài tập 13: Viết chương trình Pascal quản lý sách trong thư viện
Program Thu_vien;
Const
    Max = 100;
Type
   ThuVien = Record
      TenSach : String[30];
      TacGia  : String[24];
      NamXb   : 1900..1999;
      NguoiMuon : String[24];
   End;
Var
   Sach    : Array[1..Max] Of ThuVien;
   i, n, x : Integer;
Begin
   Writeln('QUAN LY SACH CUA THU VIEN');
   Writeln('-------------------------');
   Write('-So luong sach: ');
   Readln(n);
   For i := 1 To N Do
      With Sach[i] Do
         Begin
            Write('+Ten sach : ');
            Readln(TenSach);
            Write('+Tac gia : ');
            Readln(TacGia);
            Write('+Nam Xuat ban : ');
            Readln(NamXb);
            Write('+Nguoi muon (Neu khong co ai muon thi bam <Enter>: ');
            Readln(NguoiMuon);
         End;
   Writeln;
   x := 0;
   For i := 1 To N Do
      With Sach[i] Do
         Begin
            Writeln('-Ten sach: ',TenSach);
            Writeln(' +Tac gia      : ',TacGia);
            Writeln(' +Nam xuat ban   : ',NamXb);
            If NguoiMuon <> ' ' Then
               Begin
                  Writeln(' +Nguoi muon    : ',NguoiMuon);
                  x := x + 1;
               End;
         End;
   Writeln;
   Writeln('+So sach da cho muon: ',x,' quyen');
   Readln
End.
zipBài tập 14: Viết chương trình Pascal sắp xếp điểm học sinh tăng dần - dùng thuật giải nổi bọt
Program Sap_Xep_Diem_Tang;
Type
   Lop = Record
      HoTen    : String[24];
      NamSinh    : Integer;
      DiemTb     : Real;
   End;
Var
   Hs    : Array[1..50] Of lop;
   i,j,n : Integer;
   Tam   : Lop;
Begin
   Writeln('SAP XEP DIEM TANG DAN);');
   Writeln('Giai thuat noi Buble');
   Writeln('--------------------');
   Writeln;
   Write('-So hoc sinh: ');
   Readln(n);
   For i := 1 To N Do
      With Hs[i] Do
         Begin
            Write('+Ho ten hoc sinh thu: ',i:2,' la: ');
            Readln(Hoten);
            Write('+Nam sinh: ');
            Readln(NamSinh);
            Write('+Diem trung binh: ');
            Readln(DiemTb);
         End;
   For i := 1 To N-1 Do
      For j := 1 To N-i Do
         If Hs[j].DiemTb > Hs[j+1].DiemTb Then
            Begin
               Tam := Hs[j];
               Hs[j] := Hs[j+1];
               Hs[j+1] := Tam;
            End;
   Writeln;
   Writeln('        DANH SACH SAP XEP');
   Writeln;
   For i := 1 To N Do
      With Hs[i] Do
         Writeln('-',HoTen:24,' :',Namsinh:4,' , ',DiemTb:5:2);
   Readln
End.
zipBài tập 15: Viết chương trình Pascal tính điểm và xếp hạng - dùng giải thuật nổi bọt
Program Tinh_Diem_Xep_Hang;
Type
   Lop = Record
      HoTen       : String[24];
      NamSinh       : Integer;
      Tb1,Tb2,Tb    : Real;
   End;
Var
   Hs          : Array[1..50] Of lop;
   i,j,n,Hang: Integer;
   Tam         : Lop;
Begin
   Writeln('TINH DIEM VA XEP HANG);');
   Writeln('Giai thuat noi Buble');
   Writeln('--------------------');
   Writeln;
   Write('-So hoc sinh: ');
   Readln(n);
   For i := 1 To N Do
      With Hs[i] Do
         Begin
            Write(' +Ho ten hoc sinh thu: ',i:2,' la: ');
            Readln(Hoten);
            Write(' +Nam sinh: ');
            Readln(NamSinh);
            Write(' +Diem trung binh hoc ky 1: ');
            Readln(Tb1);
            Write(' +Diem trung binh hoc ky 2: ');
            Readln(Tb2);
            Tb :=(Tb1 + Tb2)/2;
            Writeln;
         End;
   For i := 1 To N-1 Do
      For j := 1 To N-i Do
         If Hs[j].Tb < Hs[j+1].Tb Then
            Begin
               Tam := Hs[j];
               Hs[j] := Hs[j+1];
               Hs[j+1] := Tam;
            End;
   Writeln;
   Writeln('        DANH SACH XEP HANG');
   Writeln;
   Hang := 1;
   For i := 1 To N Do
      Begin
         If (i > 1) And (Hs[i].Tb <> Hs[i-1].Tb) Then
            Hang := i;
         Writeln('   .Hoc sinh : ',Hs[i].HoTen);
         Writeln('   .Nam sinh : ',Hs[i].NamSinh);
         Writeln('   .Diem trung binh ca nam : ',Hs[i].Tb:5:2);
         Writeln('   .Xep hang ca nam        : ',Hang);
      End;
   Readln
End.
zipBài tập 16: Viết chương trình Pascal  tính điểm và xếp hạng học kỳ - dùng giải thuật nổi bọt
Program Tinh_Diem_Xep_Hang_Hoc_ky;
Type
   Lop = Record
      HoTen         : String[24];
      V,T,L,H,Nn,Tb : Real;
   End;
Var
   Hs          : Array[1..50] Of lop;
   i,j,n,Hang: Integer;
   Tam         : Lop;
Begin
   Writeln('TINH DIEM VA XEP HANG);');
   Writeln('Giai thuat noi Buble');
   Writeln('--------------------');
   Writeln;
   Write('-So hoc sinh: ');
   Readln(n);
   For i := 1 To N Do
      With Hs[i] Do
         Begin
            Write(' +Ho ten hoc sinh thu: ',i:2,' la: ');
            Readln(Hoten);
            Write(' +Diem mon Van: ');
            Readln(V);
            Write(' +Diem mon Toan: ');
            Readln(T);
            Write(' +Diem mon Ly: ');
            Readln(L);
            Write(' +Diem mon Hoa: ');
            Readln(H);
            Write(' +Diem mon Ngoai ngu: ');
            Readln(Nn);
            Tb :=((V*3 + T*3)+(L*2 + H*2 + Nn*2)) /12;
            Writeln;
         End;
   For i := 1 To N-1 Do
      For j := 1 To N-i Do
         If Hs[j].Tb < Hs[j+1].Tb Then
            Begin
               Tam := Hs[j];
               Hs[j] := Hs[j+1];
               Hs[j+1] := Tam;
            End;
   Writeln;
   Writeln('        DANH SACH XEP HANG');
   Writeln;
   Hang := 1;
   For i := 1 To N Do
      Begin
         If (i > 1) And (Hs[i].Tb <> Hs[i-1].Tb) Then
            Hang := i;
         Writeln('   .Hoc sinh : ',Hs[i].HoTen);
         Writeln('   .Diem trung binh ca nam : ',Hs[i].Tb:5:2);
         Writeln('   .Xep hang ca nam        : ',Hang);
      End;
   Readln
End.
zipBài tập 17: Viết chương trình Pascal sắp xếp danh sách theo tuổi
Program Sap_Xep_Tuoi;
Type
   Ngay_Sinh = Record
      Ngay,Thang,Nam : Integer;
   End;

   CongTy = Record
      HoTen : String[24];
      NgaySinh : Ngay_Sinh;
   End;
Var
   i,j,n : Integer;
   Tam   : CongTy;
   Nv    : Array[1..100] Of CongTy;
Begin
   Writeln('SAP XEP THEO TUOI');
   Writeln('-----------------');
   Writeln;
   Write('-So nhan vien: ');
   Readln(n);
   For i := 1 To N Do
      With Nv[i] Do
         Begin
            Write('-Ho ten nhan vien thu: ',i,' la: ');
            Readln(HoTen);
            Writeln('-Nhap ngay, thang, nam sinh');
            With NgaySinh Do
               Begin
                  Write('   +Ngay : ');
                  Readln(ngay);
                  Write('   +Thang: ');
                  Readln(Thang);
                  Write('   +Nam  : ');
                  Readln(Nam);
               End;
         End;
   For i := 1 To N-1 Do
      For j := 1 To N - i Do
         If (Nv[j].Ngaysinh.Nam > Nv[j+1].NgaySinh.Nam) OR
            ((Nv[j].Ngaysinh.Nam = Nv[j+1].NgaySinh.Nam) AND
             (Nv[j].Ngaysinh.Thang > Nv[j+1].NgaySinh.Thang)) OR
            ((Nv[j].Ngaysinh.Nam = Nv[j+1].NgaySinh.Nam) AND
             (Nv[j].Ngaysinh.Thang = Nv[j+1].NgaySinh.Thang) AND
             (Nv[j].Ngaysinh.Ngay > Nv[j+1].NgaySinh.Ngay)) Then
             Begin
                Tam := Nv[j];
               Nv[j] := Nv[j+1];
               Nv[j+1] := Tam;
             End;
   Writeln;
   Writeln('DANH SACH NHAN VIEN XEP THEO TUOI GIAM DAN');
   Writeln;
   For i := 1 To N Do
      With Nv[i] Do
         Writeln('-',Hoten:24,' ,sinh ngay: ',NgaySinh.Ngay,'/',NgaySinh.Thang,'/',NgaySinh.Nam);
   Readln
End.
zipBài tập 18: Viết chương trình Pascal khảo sát hai đường tròn
Program Khao_Sat_Hai_Duong_Tron;
Type
   DuongTron = Record
      R      : Real;
      x, y : Real;
   End;
Var
   Dt1, Dt2 : DuongTron;
   Kc, Tong, Hieu : Real;

Begin
   Writeln('KHAO SAT 2 DUONG TRON');
   Writeln('---------------------');
   Writeln;
   Writeln('*Duong tron thu nhat');
   Write('   +Ban kinh: ');
   Readln(Dt1.R);
   Write('   +Toa do x: ');
   Readln(Dt1.x);
   Write('   +Toa do y: ');
   Readln(Dt1.y);
   writeln;
   Writeln('*Duong tron thu hai');
   Write('   +Ban kinh: ');
   Readln(Dt2.R);
   Write('   +Toa do x: ');
   Readln(Dt2.x);
   Write('   +Toa do y: ');
   Readln(Dt2.y);

   Kc := Sqrt(Sqr(Dt1.x - Dt2.x) + Sqr(Dt1.y - Dt2.y));
   Tong := Dt1.R + Dt2.R;
   Hieu := ABS(Dt1.R - Dt2.R);
   If (Kc = 0) AND (Hieu = 0) Then
      Writeln('-Hai duong tron trung nhau')
   Else
      If (Hieu > Kc) Then
         Writeln('-Hai duong tron long nhau')
      Else
         If (Tong = Kc) OR (Hieu = Kc) Then
            Writeln('-Hai duong tron tiep xuc nhau')
         Else
            If (Tong > Kc) AND (Hieu < Kc) Then
               Writeln('-Hai duong tron cat nhau')
            Else
               If (Tong < Kc) Then
                  Writeln('-Hai duong tron o ngoai nhau');
   Readln
End.
zipBài tập 19: Viết chương trình Pascal quản lý điểm
Program Diem_Thi;
Const
   Max = 50;
   Td1 = '|========================|======|======|======|';
   Td2 = '|       HO VA TEN        | DIEM |  TL1 |  TL2 |';
   Td3 = '|------------------------|------|------|------|';
   Td4 = '|---------------------------------------------|';

Type
   DiemThi = Record
      HoTen  : String[24];
      Diem1  : Real;
      Case ThiLai1 : Boolean Of
         True : (Diem2 : Real;
                Case ThiLai2 : Boolean Of
                   True : (Diem3 : Real));
      End;
Var
   Diem : Array[1..Max] Of DiemThi;
   n, i : 1..Max;
Begin
   Writeln('-So luong sinh vien: ');
   Readln(n);
   For i := 1 To N Do
      With Diem[i] do
         Begin
            Write('+Ho va ten sinh vien thu: ',i,' = ');
            Readln(HoTen);
            Write('+Diem thi : ');
            Readln(Diem1);
            If Diem1 < 5 Then
               Begin
                  ThiLai1 := True;
                  Write('   -Diem thi lai lan 1= ');
                  Readln(Diem2);
                  If Diem2 < 5 Then
                     Begin
                        ThiLai2 := True;
                        Write('   -Diem thi lai lan 2= ');
                        Readln(Diem3);
                     End;
               End;
         End;
   Writeln(#32:34,'KET QUA HOC TAP');
   Writeln(#32:20,Td1);
   Writeln(#32:20,Td2);
   Writeln(#32:20,Td3);
   For i := 1 To N Do
      With Diem[i] Do
         Begin
            Write(#32:20);
            Write(#124,HoTen,#32:24-length(HoTen));
            Write(#124,Diem1:6:1);
            If Diem1 < 5 Then
               Begin
                  Write(#124,Diem2:6:1);
                  If Diem2 < 5 Then
                     Writeln(#124,Diem3:6:1,#124)
                  Else
                     Writeln(#124,#32:6,#124);
               End
            Else
               Writeln(#124,#32 :6, #124, #32 :6, #124);
         End;
   Writeln(#32:20,Td4);
   Readln
End.
zipBài tập 20: Viết chương trình Pascal tính đa thức
Program Da_Thuc;
Const
   MaxOrder = 10;
Type
   PolyNom = Record
      Bac : Integer;
      HeSo : Array[0..MaxOrder] Of Real;
   End;
Var
   A,B,C : Polynom;
   i     : Integer;
{-------------------------}
Procedure Nhap;
Var
   i : Integer;
Begin
   Repeat
      Writeln;
      Writeln('Hay nhap 2 da thu A(x), B(x) voi');
      Write('-Bac A (phai <= ',MaxOrder,' ) = ');
      Readln(A.Bac);
      If A.Bac > MaxOrder Then
         Writeln(#7,'Bac A phai <= ',MaxOrder,' ! nhap lai ');
      Write('-Bac B (phai <= ',MaxOrder,' ) = ');
      Readln(B.Bac);
      If B.Bac > MaxOrder Then
         Writeln(#7,'Bac B phai <= ',MaxOrder,' ! nhap lai ');
   Until (A.Bac <= MaxOrder) And (B.Bac <= MaxOrder);
   For i := 0 To MaxOrder Do
      Begin
         A.Heso[i] :=0;
         B.Heso[i] :=0;
      End;
   Writeln;
   Writeln('Nhap ca he so cua da thuc A: ');
   For i := A.Bac DownTo 0 Do
      Begin
         Write('   A[',i,'] = ');
         Readln(A.heso[i]);
      End;
   Writeln;
   Writeln('Nhap ca he so cua da thuc B: ');
   For i := B.Bac DownTo 0 Do
      Begin
         Write('   B[',i,'] = ');
         Readln(B.heso[i]);
      End;
End;

{-------------------------}
Procedure Cong(A,B : Polynom; Var C : Polynom);
Var
   BacMax :Integer;
Begin
   If A.Bac < B.Bac Then
      Begin
         C.Bac :=B.Bac;
         For i := A.Bac + 1 To B.Bac Do
            A.Heso[i] := 0
      End
   Else
      Begin
         C.Bac := A.Bac;
         For i := B.Bac + 1 To A.Bac Do
            B.Heso[i] := 0
      End;
   C.Bac :=A.Bac;
   For i := C.Bac To MaxOrder Do
      C.Heso[i] := 0;
   For i := 0 To C.Bac Do
      C.Heso[i] := A.Heso[i] + B.Heso[i];
End;

{-------------------------}
Procedure Nhan(A,B : Polynom; Var C:Polynom);
Var
   i,j : Integer;
Begin
   For i := 0 To MaxOrder Do
      C.Heso[i] := 0;
   For i := 0 To A.Bac Do
      For j := 0 To B.Bac Do
         C.Heso[i+j] := C.Heso[i+j] + A.Heso[i] * B.Heso[j];
   C.Bac :=A.Bac + B.Bac;
End;

{-------------------------}
procedure Chia(P, Q :Polynom);
Var
   i,k,kk : Integer;
   G : Polynom;
Begin
   If P.Bac < Q.Bac Then
      For i := P.Bac + 1 To Q.Bac Do
         P.Heso[i] := 0;
   If P.Bac > Q.Bac Then
      For i := Q.Bac + 1 To P.Bac Do
         Q.Heso[i] := 0;
   Write('-Hay cho he so trong ket qua phep chia: ');
   Readln(kk);
   Writeln('Da thuc ket qua xep theo so mu giam dan. ');
   Writeln;
   Write('Bac: ');
   For k := 0 To kk Do
      Write(P.Bac-Q.Bac-k:6);
   Writeln;
   Write('He so ');
   For k := 0 To kk Do
      Begin
         G.Heso[k] := P.Heso[P.bac] / Q.Heso[Q.Bac];
         If Frac(G.Heso[k]) =0 Then
            Write(G.Heso[k]:6:0)
         Else
            Write(G.Heso[k]:6:0);
         For i:= Q.Bac DownTo 1 Do
            P.Heso[P.Bac-Q.Bac+i] := P.Heso[P.Bac+i-1] - G.Heso[k]*Q.Heso[i-1];
         For i := P.Bac-Q.bac Downto 0 Do
            P.Heso[i] :=0;
      End;
End;

{--------------------------}
Begin
   Nhap;
   Nhan(A,B,C);
   Writeln;
   Writeln('Cac he so cua da thuc tich: ');
   Write('Bac: ');
   For i := 0 To C.Bac Do
   Write(i:7);
   Writeln;
   Write('He so: ');
   For i := 0 To C.Bac Do
      If Frac(C.Heso[i]) = 0 Then
         Write(C.Heso[i]:7:0)
      Else
         Write(C.Heso[i]:7:0);
   Writeln;
   Writeln;
   Chia(A,B);
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal tạo biến động và theo dõi kích thước bộ nhớ dùng con trỏ
Program Tao_Bien_Dong;
Type
   Str10 = String[10];
   PStr  = ^Str10;
Var
   Newp  : PStr;
   i     : Integer;
Begin
   Writeln('TAO BIEN DONG VA THEO DOI KICH THUOC BO NHO');
   Writeln('-------------------------------------------');
   Writeln;
   Writeln('-Bo nho ban dau la: ',MemAvail,' bytes');
   Writeln;
   For i := 1 To 10 Do
      Begin
         New(Newp);
         Writeln('   +Sau khi tao bien thu: ',i:2,' bo nho con lai la: ',MemAvail,' bytes');
      End;
   Writeln;
   Writeln('-Bo nho bay gio la : ',MemAvail,' bytes');
   Writeln;
   Writeln(' Bam <Enter> de ket thuc');
   Readln
End.
zipBài tập 2: Viết chương trình Pascal tạo và xóa các biến động
Program Tao_Bien_Dong;
Type
   ConTro = ^BanGhi;
   BanGhi = Record
      HoTen  : String[24];
      Tuoi   : Byte;
      DiaChi : String[30];
      Next   : ConTro;
   End;
Var
   Newp    : ConTro;
   HeapTop : Pointer;
   i       : Integer;
Begin
   Writeln('TAO VA XOA CAC BIEN DONG');
   Writeln('------------------------');
   Writeln;
   Writeln('-Bo nho ban dau la: ',MemAvail,' bytes');
   Mark(HeapTop);
   Writeln('-Kich thuoc cua ban ghi la: ',Sizeof(BanGhi),' bytes');
   For i := 1 To 10 Do
      Begin
         New(Newp);
         Writeln('   +Sau khi tao bien thu: ',i:2,' bo nho con lai: ',MemAvail,' Bytes');
      End;
   Writeln;
   Writeln('-Bo nho bay gio la: ',MemAvail,' bytes');
   Writeln;
   Writeln('   Bam <Enter> de xoa cac bien dong');
   Readln;
   Release(HeapTop);
   Writeln;
   Writeln('-Bo nho bay gio lai la: ',MemAvail,' bytes');
   Writeln;
   Writeln('   Bam <Enter> de ket thuc');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal tạo biến động và theo dõi kích thước bộ nhớ dùng mảng con trỏ
Program Tao_Bien_Dong;
Type
   Str10 = String[10];
   PStr  = ^Str10;
Var
   Newp  : Array[1..10] Of PStr;
   i     : Integer;
Begin
   Writeln('TAO BIEN DONG VA THEO DOI KICH THUOC BO NHO');
   Writeln('-------------------------------------------');
   Writeln;
   Writeln('-Bo nho ban dau la: ',MemAvail,' bytes');
   Writeln;
   For i := 1 To 10 Do
      Begin
         New(Newp[i]);
         Writeln('   +Sau khi tao bien thu: ',i:2,' bo nho con lai la: ',MemAvail,' bytes');
      End;
   Writeln;
   Writeln('Bo nho bay gio la: ',MemAvail,' bytes');
   Writeln;
   Writeln('   Bam <Enter> de bat dau xoa lan luot tung bien dong');
   Readln;
   For i := 1 To 10 Do
      Begin
         Dispose(Newp[i]);
         Writeln('+Xoa bien thu: ',i:2,' bo nho tro la: ',Memavail,' bytes');
         Writeln('   Bam <Enter> de xoa tiep');
         Readln;
      End;
   Writeln;
   Writeln('-Bo nho bay gio la : ',MemAvail,' bytes');
   Writeln;
   Writeln('       Bam <Enter> de ket thuc');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal tạo biến động tại địa chỉ cho trước
Program Tao_Con_Tro;
Var
   ConTro : ^String;
Begin
   Writeln('TAO BIEN DONG TAI DIA CHI CHO TRUOC');
   Writeln('-----------------------------------');
   Writeln;
   ConTro :=Ptr($B800,$0004);
   ConTro^ := 'Turbo Pascal';
   Writeln('-Du lieu cua bien ma con tro dang tro toi la: ',ConTro^);
   Writeln;
   Write('   Bam <Enter> de ket thuc');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal tính điểm trung bình của lớp
Program Tinh_Diem;
Type
   ConTro = ^BanGhi;
   BanGhi = Record
      HoTen   : String[24];
      Tuoi    : Byte;
      Diem    : Real;
   End;
Var
   Newp       : ConTro;
   i,n          : Integer;
   d,tong,tb  :Real;
Begin
   Writeln('TINH DIEM TRUNG BINH CUA LOP');
   Writeln('----------------------------');
   Writeln;
   Tong := 0.0;
   Write('-Lop co bao nhieu nguoi: ');
   Readln(n);
   Writeln;
   For i := 1 To N Do
      Begin
         New(Newp);
         With Newp^ Do
            Begin
               Write('   +Ho ten nguoi thu: ',i:2,' la: ');
               Readln(HoTen);
               Write('   +Tuoi : ');
               Readln(Tuoi);
               Write('   +Diem : ');
               Readln(Diem);
               d := Diem;
               Tong :=Tong + d;
            End;
         Tb := tong / n;
      End;
   Writeln('-Diem trung binh cua lop la: ',Tb:5:2);
   Readln
End.
zipBài tập 6: Viết chương trình Pascal sắp xếp danh sách theo tên
Program Sap_Xep_Theo_Ten;
Type
   ConTro = ^HoSo;
   HoSo = Record
      HoLot : String[17];
      Ten   : String[7];
      Diem  : Real;
   End;

Var
   a            : Array[1..50] Of HoSo;
   Tam        : ConTro;
   i,j,PhanTu : Integer;

Begin
   PhanTu := 0;
   New(Tam);
   With Tam^ Do
   Repeat
      Write('-Nhap ho lot ( 0 de ket thu): ');
      Readln(HoLot);
      If HoLot <> '0' Then
         Begin
            Write('-Nhap ten  : ');
            Readln(Ten);
            Write('-Nhap diem : ');
            Readln(Diem);
            PhanTu := PhanTu + 1;
            a[PhanTu] := Tam^;
         End;
   Until HoLot = '0';

   For i := 1 To PhanTu - 1 Do
      For j := PhanTu DownTo i+1 Do
         If a[j].Ten[1] < a[j-1].Ten[1] Then
            Begin
               Tam^ := a[j];
               a[j] := a[j-1];
               a[j-1] := Tam^;
            End;
   Writeln;
   Writeln('------------------------------------');
   Writeln('|       HO VA TEN          |  DIEM |');
   Writeln('|--------------------------|-------|');
   For i := 1 To PhanTu Do
      With a[i] Do
         Writeln('|',HoLot:17,' ',Ten:7,' |',Diem:5:1,'  |');
   Writeln('------------------------------------');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal sắp xếp danh sách theo điểm tăng dần
Program Sap_Xep_Diem_Tang;
Type
   ConTro = ^Lop;
   Lop = Record
      HoTen    : String[24];
      NamSinh    : Integer;
      DiemTb     : Real;
   End;
Var
   Hs    : Array[1..50] Of lop;
   i,j,n : Integer;
   Tam   : ConTro;
Begin
   Writeln('SAP XEP DIEM TANG DAN);');
   Writeln('Giai thuat noi Buble');
   Writeln('--------------------');
   New(Tam);
   Writeln;
   Write('-So hoc sinh: ');
   Readln(n);
   For i := 1 To N Do
      With Hs[i] Do
         Begin
            Write('+Ho ten hoc sinh thu: ',i:2,' la: ');
            Readln(Hoten);
            Write('+Nam sinh: ');
            Readln(NamSinh);
            Write('+Diem trung binh: ');
            Readln(DiemTb);
         End;
   For i := 1 To N-1 Do
      For j := 1 To N-i Do
         If Hs[j].DiemTb > Hs[j+1].DiemTb Then
            Begin
               Tam^ := Hs[j];
               Hs[j] := Hs[j+1];
               Hs[j+1] := Tam^;
            End;
   Writeln;
   Writeln('        DANH SACH SAP XEP');
   Writeln;
   For i := 1 To N Do
      With Hs[i] Do
         Writeln('-',HoTen:24,' :',Namsinh:4,' , ',DiemTb:5:2);
   Readln
End.
zipBài tập 8: Viết chương trình Pascal in hóa đơn bán hàng
Program Hoa_Don;
CONST
   Max = 100;
Type
   ConTro = ^HoaDon;
   HoaDon = Record
      NguoiMua : String[24];
      TenHang  : String[10];
      DonGia   : Real;
      SoLuong  : Integer;
   End;

Var
   a   : Array[1..Max] Of HoaDon;
   DsTenHang : Array[1..Max] Of String[10];
   Tam       : ConTro;
   Spt, SoTenHang, i, j : Integer;
   Tong                 : Real;
   KiemTra              : Boolean;

Begin
   Writeln('HOA DON BAN HANG');
   Writeln('----------------');
   Writeln;
   Spt := 0;
   New(Tam);
   With Tam^ do
      Repeat
         Write('-Ten nguoi mua (go 0 de thoat): ');
         Readln(NguoiMua);
         If NguoiMua <> '0' Then
            Begin
               Write('-Ten hang: ');
               Readln(TenHang);
               Write('-Don gia : ');
               Readln(DonGia);
               Write('-So luong: ');
               Readln(SoLuong);
               Spt := Spt + 1;
               a[Spt] := Tam^;
            End;
      Until NguoiMua = '0';
   SoTenHang := 0;
   For i := 1 To Spt Do
      Begin
         KiemTra :=False;
         For j := 1 To SoTenHang Do
            If DsTenHang[j] = a[i].TenHang Then
               KiemTra := True;
            If NOT KiemTra Then
               Begin
                  SoTenHang :=SoTenHang + 1;
                  DsTenHang[SoTenHang] := a[i].TenHang;
               End;
      End;
   Writeln;
   For i := 1 To SoTenHang Do
      Begin
         Tong := 0;
         For j := 1 To Spt Do
            With a[j] Do
               If TenHang = DsTenHang[i] Then
                  Tong := Tong + (DonGia * Soluong);
               Writeln('  +Tong so tien mua: ',DsTenHang[i]:10,' = ',tong:10:2);
      End;
   Readln
End.
zipBài tập 9: Viết chương trình Pascal Quản lý thư viện
Program Thu_Vien;
Uses Crt;
Type
   ConTro = ^ThuVien;
   ThuVien = Record
      TenSach  : String[30];
      TacGia   : String[24];
      Namxb    : Byte;
      NguoiMuon: String[24];
      Next     : ConTro;
   End;
Var
   First,Last,Newp       : ConTro;
   ds,dm : Integer;
   Ch : Char;
   HeapTop : ^Integer;
Begin
   ClrScr;
   GotoXY(5,25);
   Write('Bam <Enter> de tiep tuc, bam <Esc> de thoat');
   Window(1,1,80,24);
   Writeln('QUAN LY THU VIEN');
   Writeln('----------------');
   Writeln;
   ds := 0;
   dm := 0;
   First := Nil;
   Mark(Heaptop);
     Repeat
      New(Newp);
         With Newp^ Do
            Begin
               Write('-Ten sach : ');
               Readln(TenSach);
               If TenSach <> '' Then
                  Begin
                     ds := ds + 1;
                     Write('-Tac Gia: ');
                     Readln(TacGia);
                     Write('-Nam xuat ban : ');
                     Readln(Namxb);
                     Write('-Nguoi muon (Khong co ai muon thi bam <Enter>: ');
                     Readln(NguoiMuon);
                     If NguoiMuon <> '' Then
                        dm := dm + 1;
                  End;
            End;
      If First = Nil Then
         First := Newp
      Else
         Last^.Next := Newp;
         Last :=Newp;
         Last^.Next := Nil;
      Ch := ReadKey;
   Until Ch = #27;
   ClrScr;
   Writeln('QUAN LY THU VIEN');
   Writeln('----------------');
   While First <> Nil Do
      With First^ Do
         Begin
            Writeln('-Ten sach: ',TenSach);
            Writeln('-Tac gia : ',TacGia);
            Writeln('-Nam Xuat ban: ',Namxb);
            Writeln('-Nguoi muon : ',NguoiMuon);
            First := Next;
         End;
   Writeln;
   Writeln('+Tong so sach: ',Ds);
   Writeln('+So sach cho muon: ',Dm);
   Release(HeapTop);
   Writeln;
   Write('   Bam <Esc> de thoat');
   Readln
End.
zipBài tập 10: Viết chương trình Pascal quản lý hồ sơ nhân viên
Program Ho_So;
Uses Crt;
Type
   ConTro = ^HoSo;
   HoSo = Record
      HoTen : String[24];
      Tuoi  : Integer;
      Luong : LongInt;
      Next  : ConTro;
   End;
Var
   First, Last, Newp : ConTro;
   Hoten1, Hoten2               : String[24];
   i,TuoiMax,TuoiMin          : Integer;
   LuongMax, LuongMin,LuongTb : LongInt;
   Ch                         : Char;
   HeapTop  :^Integer;
Begin
   ClrScr;
   Writeln('HO SO NHAN VIEN');
   Writeln('---------------');
   Writeln;
   GoToXY(5,25);
   Write('Bam <Enter> de tiep tuc, bam <Esc> de thoat ');
   Window(1,2,80,25);
   First :=Nil;
   Mark(HeapTop);
   i := 0;
   Repeat
      i := i + 1;
      New(Newp);
         With Newp^ Do
            Begin
               Write('-Ho ten nhan vien thu: ',i:2,' la= ');
               Readln(HoTen);
               Write('-Tuoi      = ');
               Readln(Tuoi);
               Write('-Bac luong = ');
               Readln(Luong);
               TuoiMax  := Tuoi;
               TuoiMin  := Tuoi;
               LuongMax := Luong;
               LuongMin := Luong;
               HoTen1   := HoTen;
               HoTen2   := HoTen;
            End;
         If First = Nil Then
            First := Newp
         Else
            Last^.Next := Newp;
            Last := Newp;
            Last^.Next := Nil;
         Ch := ReadKey;
   Until Ch = #27;
   Writeln;
   While First <> Nil Do
      With First^ Do
         Begin
            If Tuoi > TuoiMax Then
               TuoiMax := Tuoi
            Else
               If Tuoi < TuoiMin Then
                  TuoiMin := Tuoi;
            If Luong > LuongMax Then
               Begin
                  LuongMax := Luong;
                  HoTen1 := HoTen;
               End
            Else
               If Luong < LuongMin Then
                  Begin
                     LuongMin := Luong;
                     HoTen2 := HoTen;
                  End;
            First := Next;
         End;
   Writeln;
   Writeln('+Nhan vien co tuoi lon nhat la: ',TuoiMax);
   Writeln('+Nhan vien co tuoi nho nhat la: ',TuoiMin);
   Writeln('+Nhan vien: ',HoTen1,' ,co bac luong lon nhat: ',LuongMax:10);
   Writeln('+Nhan vien: ',HoTen2,' ,co bac luong nho nhat: ',LuongMin:10);
   Release(HeapTop);
   Writeln;
   Write(' Bam <Enter> de ket thuc ');
   Readln
End.
zipBài tập 11: Viết chương trình Pascal quản lý gia cảnh
Program Gia_Canh;
Uses Crt;
CONST
   Td1 ='|========================|========================|======|';
   Td2 =#124 +'         HO VA TEN      '+
        #124 +'      HO TEN VO CHONG   '+
        #124 +'SO CON'+#124;
   Td3 ='|------------------------|------------------------|------|';
Type
   ConTro  = ^GiaCanh;
   GiaCanh = Record
      HoTen :String[24];
      Next  : ConTro;
      Case GiaDinh  : Boolean Of
              True  : (VoChong : String[24];
              SoCon : Byte);

      End;
Var
   First, Last, Newp : ConTro;
   i    : Integer;
   Ch   : Char;
   HeapTop : ^Integer;
Begin
   ClrScr;
   GotoXY(5,25);
   Write('Bam <Enter> de tiep tuc, bam <Esc> de thoat');
   Window(1,2,80,25);
   Writeln('HO SO GIA CANH');
   Writeln('--------------');
   Writeln;
   First := Nil;
   Mark(HeapTop);
   i := 0;
   Repeat
      i := i + 1;
      New(Newp);
      With Newp^ Do
         Begin
            Write('+Ho va ten nhan vien thu: ',i:2,' la= ');
            Readln(HoTen);
            Write('+Co gia dinh chua (C/K) ');
            Readln(Ch);
            Ch := UpCase(Ch);
            If Ch = 'C' Then
               Begin
                  GiaDinh := True;
                  Write('   +Ho ten vo/chong: ');
                  Readln(VoChong);
                  Write('   +So con         : ');
                  Readln(SoCon);
               End
            Else
               GiaDinh := False;
         End;
      If First = Nil Then
           First := Newp
      Else
           Last^.Next := Newp;
      Last := Newp;
      Last^.Next := Nil;
      Ch := ReadKey;
   Until Ch = #27;
   Writeln;
   ClrScr;
   Writeln(#32:25,'HOAN CANH GIA DINH NHAN VIEN');
   Writeln(#32:12,Td1);
   Writeln(#32:12,Td2);
   Writeln(#32:12,Td3);
   While First <> Nil Do     {Xuat du lieu }
      With First^ Do
         Begin
            Write(#32:12);
            Write(#124,HoTen,#32:24-Length(HoTen));
            If GiaDinh Then
               Begin
                  Write(#124,VoChong,#32:24-Length(VoChong));
                  Writeln(#124,SoCon:6,#124);
               End
            Else
               Begin
                  Write(#124,#32:24);
                  Writeln(#124,#32:6,#124);
               End;
            First := Next;
         End;
    Release(HeapTop);
   Writeln(#32:12,Td1);
   Readln
End.
zipBài tập 12: Viết chương trình Pascal tính điểm và xếp hạng lớp học
Program Tinh_Diem_Xep_Hang;
Type
   ConTro = ^Lop;
   Lop = Record
      HoTen       : String[24];
      NamSinh       : Integer;
      Tb1,Tb2,Tb    : Real;
   End;
Var
   Hs          : Array[1..50] Of lop;
   i,j,n,Hang: Integer;
   Tam         : ConTro;
Begin
   Writeln('TINH DIEM VA XEP HANG);');
   Writeln('Giai thuat noi Buble');
   Writeln('--------------------');
   Writeln;
   New(Tam);
   Write('-So hoc sinh: ');
   Readln(n);
   For i := 1 To N Do
      With Hs[i] Do
         Begin
            Write(' +Ho ten hoc sinh thu: ',i:2,' la: ');
            Readln(Hoten);
            Write(' +Nam sinh: ');
            Readln(NamSinh);
            Write(' +Diem trung binh hoc ky 1: ');
            Readln(Tb1);
            Write(' +Diem trung binh hoc ky 2: ');
            Readln(Tb2);
            Tb :=(Tb1 + Tb2)/2;
            Writeln;
         End;
   For i := 1 To N-1 Do
      For j := 1 To N-i Do
         If Hs[j].Tb < Hs[j+1].Tb Then
            Begin
               Tam^ := Hs[j];
               Hs[j] := Hs[j+1];
               Hs[j+1] := Tam^;
            End;
   Writeln;
   Writeln('        DANH SACH XEP HANG');
   Writeln;
   Hang := 1;
   For i := 1 To N Do
      Begin
         If (i > 1) And (Hs[i].Tb <> Hs[i-1].Tb) Then
            Hang := i;
         Writeln('   .Hoc sinh : ',Hs[i].HoTen);
         Writeln('   .Nam sinh : ',Hs[i].NamSinh);
         Writeln('   .Diem trung binh ca nam : ',Hs[i].Tb:5:2);
         Writeln('   .Xep hang ca nam        : ',Hang);
      End;
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 huongdan

zipBài tập 1: Viết chương trình Pascal tạo biến động và theo dõi kích thước bộ nhớ dùng con trỏ
Program Tao_Bien_Dong;
Type
   Str10 = String[10];
   PStr  = ^Str10;
Var
   Newp  : PStr;
   i     : Integer;
Begin
   Writeln('TAO BIEN DONG VA THEO DOI KICH THUOC BO NHO');
   Writeln('-------------------------------------------');
   Writeln;
   Writeln('-Bo nho ban dau la: ',MemAvail,' bytes');
   Writeln;
   For i := 1 To 10 Do
      Begin
         New(Newp);
         Writeln('   +Sau khi tao bien thu: ',i:2,' bo nho con lai la: ',MemAvail,' bytes');
      End;
   Writeln;
   Writeln('-Bo nho bay gio la : ',MemAvail,' bytes');
   Writeln;
   Writeln(' Bam <Enter> de ket thuc');
   Readln
End.
zipBài tập 2: Viết chương trình Pascal tạo và xóa các biến động
Program Tao_Bien_Dong;
Type
   ConTro = ^BanGhi;
   BanGhi = Record
      HoTen  : String[24];
      Tuoi   : Byte;
      DiaChi : String[30];
      Next   : ConTro;
   End;
Var
   Newp    : ConTro;
   HeapTop : Pointer;
   i       : Integer;
Begin
   Writeln('TAO VA XOA CAC BIEN DONG');
   Writeln('------------------------');
   Writeln;
   Writeln('-Bo nho ban dau la: ',MemAvail,' bytes');
   Mark(HeapTop);
   Writeln('-Kich thuoc cua ban ghi la: ',Sizeof(BanGhi),' bytes');
   For i := 1 To 10 Do
      Begin
         New(Newp);
         Writeln('   +Sau khi tao bien thu: ',i:2,' bo nho con lai: ',MemAvail,' Bytes');
      End;
   Writeln;
   Writeln('-Bo nho bay gio la: ',MemAvail,' bytes');
   Writeln;
   Writeln('   Bam <Enter> de xoa cac bien dong');
   Readln;
   Release(HeapTop);
   Writeln;
   Writeln('-Bo nho bay gio lai la: ',MemAvail,' bytes');
   Writeln;
   Writeln('   Bam <Enter> de ket thuc');
   Readln
End.
zipBài tập 3: Viết chương trình Pascal tạo biến động và theo dõi kích thước bộ nhớ dùng mảng con trỏ
Program Tao_Bien_Dong;
Type
   Str10 = String[10];
   PStr  = ^Str10;
Var
   Newp  : Array[1..10] Of PStr;
   i     : Integer;
Begin
   Writeln('TAO BIEN DONG VA THEO DOI KICH THUOC BO NHO');
   Writeln('-------------------------------------------');
   Writeln;
   Writeln('-Bo nho ban dau la: ',MemAvail,' bytes');
   Writeln;
   For i := 1 To 10 Do
      Begin
         New(Newp[i]);
         Writeln('   +Sau khi tao bien thu: ',i:2,' bo nho con lai la: ',MemAvail,' bytes');
      End;
   Writeln;
   Writeln('Bo nho bay gio la: ',MemAvail,' bytes');
   Writeln;
   Writeln('   Bam <Enter> de bat dau xoa lan luot tung bien dong');
   Readln;
   For i := 1 To 10 Do
      Begin
         Dispose(Newp[i]);
         Writeln('+Xoa bien thu: ',i:2,' bo nho tro la: ',Memavail,' bytes');
         Writeln('   Bam <Enter> de xoa tiep');
         Readln;
      End;
   Writeln;
   Writeln('-Bo nho bay gio la : ',MemAvail,' bytes');
   Writeln;
   Writeln('       Bam <Enter> de ket thuc');
   Readln
End.
zipBài tập 4: Viết chương trình Pascal tạo biến động tại địa chỉ cho trước
Program Tao_Con_Tro;
Var
   ConTro : ^String;
Begin
   Writeln('TAO BIEN DONG TAI DIA CHI CHO TRUOC');
   Writeln('-----------------------------------');
   Writeln;
   ConTro :=Ptr($B800,$0004);
   ConTro^ := 'Turbo Pascal';
   Writeln('-Du lieu cua bien ma con tro dang tro toi la: ',ConTro^);
   Writeln;
   Write('   Bam <Enter> de ket thuc');
   Readln
End.
zipBài tập 5: Viết chương trình Pascal tính điểm trung bình của lớp
Program Tinh_Diem;
Type
   ConTro = ^BanGhi;
   BanGhi = Record
      HoTen   : String[24];
      Tuoi    : Byte;
      Diem    : Real;
   End;
Var
   Newp       : ConTro;
   i,n          : Integer;
   d,tong,tb  :Real;
Begin
   Writeln('TINH DIEM TRUNG BINH CUA LOP');
   Writeln('----------------------------');
   Writeln;
   Tong := 0.0;
   Write('-Lop co bao nhieu nguoi: ');
   Readln(n);
   Writeln;
   For i := 1 To N Do
      Begin
         New(Newp);
         With Newp^ Do
            Begin
               Write('   +Ho ten nguoi thu: ',i:2,' la: ');
               Readln(HoTen);
               Write('   +Tuoi : ');
               Readln(Tuoi);
               Write('   +Diem : ');
               Readln(Diem);
               d := Diem;
               Tong :=Tong + d;
            End;
         Tb := tong / n;
      End;
   Writeln('-Diem trung binh cua lop la: ',Tb:5:2);
   Readln
End.
zipBài tập 6: Viết chương trình Pascal sắp xếp danh sách theo tên
Program Sap_Xep_Theo_Ten;
Type
   ConTro = ^HoSo;
   HoSo = Record
      HoLot : String[17];
      Ten   : String[7];
      Diem  : Real;
   End;

Var
   a            : Array[1..50] Of HoSo;
   Tam        : ConTro;
   i,j,PhanTu : Integer;

Begin
   PhanTu := 0;
   New(Tam);
   With Tam^ Do
   Repeat
      Write('-Nhap ho lot ( 0 de ket thu): ');
      Readln(HoLot);
      If HoLot <> '0' Then
         Begin
            Write('-Nhap ten  : ');
            Readln(Ten);
            Write('-Nhap diem : ');
            Readln(Diem);
            PhanTu := PhanTu + 1;
            a[PhanTu] := Tam^;
         End;
   Until HoLot = '0';

   For i := 1 To PhanTu - 1 Do
      For j := PhanTu DownTo i+1 Do
         If a[j].Ten[1] < a[j-1].Ten[1] Then
            Begin
               Tam^ := a[j];
               a[j] := a[j-1];
               a[j-1] := Tam^;
            End;
   Writeln;
   Writeln('------------------------------------');
   Writeln('|       HO VA TEN          |  DIEM |');
   Writeln('|--------------------------|-------|');
   For i := 1 To PhanTu Do
      With a[i] Do
         Writeln('|',HoLot:17,' ',Ten:7,' |',Diem:5:1,'  |');
   Writeln('------------------------------------');
   Readln
End.
zipBài tập 7: Viết chương trình Pascal sắp xếp danh sách theo điểm tăng dần
Program Sap_Xep_Diem_Tang;
Type
   ConTro = ^Lop;
   Lop = Record
      HoTen    : String[24];
      NamSinh    : Integer;
      DiemTb     : Real;
   End;
Var
   Hs    : Array[1..50] Of lop;
   i,j,n : Integer;
   Tam   : ConTro;
Begin
   Writeln('SAP XEP DIEM TANG DAN);');
   Writeln('Giai thuat noi Buble');
   Writeln('--------------------');
   New(Tam);
   Writeln;
   Write('-So hoc sinh: ');
   Readln(n);
   For i := 1 To N Do
      With Hs[i] Do
         Begin
            Write('+Ho ten hoc sinh thu: ',i:2,' la: ');
            Readln(Hoten);
            Write('+Nam sinh: ');
            Readln(NamSinh);
            Write('+Diem trung binh: ');
            Readln(DiemTb);
         End;
   For i := 1 To N-1 Do
      For j := 1 To N-i Do
         If Hs[j].DiemTb > Hs[j+1].DiemTb Then
            Begin
               Tam^ := Hs[j];
               Hs[j] := Hs[j+1];
               Hs[j+1] := Tam^;
            End;
   Writeln;
   Writeln('        DANH SACH SAP XEP');
   Writeln;
   For i := 1 To N Do
      With Hs[i] Do
         Writeln('-',HoTen:24,' :',Namsinh:4,' , ',DiemTb:5:2);
   Readln
End.
zipBài tập 8: Viết chương trình Pascal in hóa đơn bán hàng
Program Hoa_Don;
CONST
   Max = 100;
Type
   ConTro = ^HoaDon;
   HoaDon = Record
      NguoiMua : String[24];
      TenHang  : String[10];
      DonGia   : Real;
      SoLuong  : Integer;
   End;

Var
   a   : Array[1..Max] Of HoaDon;
   DsTenHang : Array[1..Max] Of String[10];
   Tam       : ConTro;
   Spt, SoTenHang, i, j : Integer;
   Tong                 : Real;
   KiemTra              : Boolean;

Begin
   Writeln('HOA DON BAN HANG');
   Writeln('----------------');
   Writeln;
   Spt := 0;
   New(Tam);
   With Tam^ do
      Repeat
         Write('-Ten nguoi mua (go 0 de thoat): ');
         Readln(NguoiMua);
         If NguoiMua <> '0' Then
            Begin
               Write('-Ten hang: ');
               Readln(TenHang);
               Write('-Don gia : ');
               Readln(DonGia);
               Write('-So luong: ');
               Readln(SoLuong);
               Spt := Spt + 1;
               a[Spt] := Tam^;
            End;
      Until NguoiMua = '0';
   SoTenHang := 0;
   For i := 1 To Spt Do
      Begin
         KiemTra :=False;
         For j := 1 To SoTenHang Do
            If DsTenHang[j] = a[i].TenHang Then
               KiemTra := True;
            If NOT KiemTra Then
               Begin
                  SoTenHang :=SoTenHang + 1;
                  DsTenHang[SoTenHang] := a[i].TenHang;
               End;
      End;
   Writeln;
   For i := 1 To SoTenHang Do
      Begin
         Tong := 0;
         For j := 1 To Spt Do
            With a[j] Do
               If TenHang = DsTenHang[i] Then
                  Tong := Tong + (DonGia * Soluong);
               Writeln('  +Tong so tien mua: ',DsTenHang[i]:10,' = ',tong:10:2);
      End;
   Readln
End.
zipBài tập 9: Viết chương trình Pascal Quản lý thư viện
Program Thu_Vien;
Uses Crt;
Type
   ConTro = ^ThuVien;
   ThuVien = Record
      TenSach  : String[30];
      TacGia   : String[24];
      Namxb    : Byte;
      NguoiMuon: String[24];
      Next     : ConTro;
   End;
Var
   First,Last,Newp       : ConTro;
   ds,dm : Integer;
   Ch : Char;
   HeapTop : ^Integer;
Begin
   ClrScr;
   GotoXY(5,25);
   Write('Bam <Enter> de tiep tuc, bam <Esc> de thoat');
   Window(1,1,80,24);
   Writeln('QUAN LY THU VIEN');
   Writeln('----------------');
   Writeln;
   ds := 0;
   dm := 0;
   First := Nil;
   Mark(Heaptop);
     Repeat
      New(Newp);
         With Newp^ Do
            Begin
               Write('-Ten sach : ');
               Readln(TenSach);
               If TenSach <> '' Then
                  Begin
                     ds := ds + 1;
                     Write('-Tac Gia: ');
                     Readln(TacGia);
                     Write('-Nam xuat ban : ');
                     Readln(Namxb);
                     Write('-Nguoi muon (Khong co ai muon thi bam <Enter>: ');
                     Readln(NguoiMuon);
                     If NguoiMuon <> '' Then
                        dm := dm + 1;
                  End;
            End;
      If First = Nil Then
         First := Newp
      Else
         Last^.Next := Newp;
         Last :=Newp;
         Last^.Next := Nil;
      Ch := ReadKey;
   Until Ch = #27;
   ClrScr;
   Writeln('QUAN LY THU VIEN');
   Writeln('----------------');
   While First <> Nil Do
      With First^ Do
         Begin
            Writeln('-Ten sach: ',TenSach);
            Writeln('-Tac gia : ',TacGia);
            Writeln('-Nam Xuat ban: ',Namxb);
            Writeln('-Nguoi muon : ',NguoiMuon);
            First := Next;
         End;
   Writeln;
   Writeln('+Tong so sach: ',Ds);
   Writeln('+So sach cho muon: ',Dm);
   Release(HeapTop);
   Writeln;
   Write('   Bam <Esc> de thoat');
   Readln
End.
zipBài tập 10: Viết chương trình Pascal quản lý hồ sơ nhân viên
Program Ho_So;
Uses Crt;
Type
   ConTro = ^HoSo;
   HoSo = Record
      HoTen : String[24];
      Tuoi  : Integer;
      Luong : LongInt;
      Next  : ConTro;
   End;
Var
   First, Last, Newp : ConTro;
   Hoten1, Hoten2               : String[24];
   i,TuoiMax,TuoiMin          : Integer;
   LuongMax, LuongMin,LuongTb : LongInt;
   Ch                         : Char;
   HeapTop  :^Integer;
Begin
   ClrScr;
   Writeln('HO SO NHAN VIEN');
   Writeln('---------------');
   Writeln;
   GoToXY(5,25);
   Write('Bam <Enter> de tiep tuc, bam <Esc> de thoat ');
   Window(1,2,80,25);
   First :=Nil;
   Mark(HeapTop);
   i := 0;
   Repeat
      i := i + 1;
      New(Newp);
         With Newp^ Do
            Begin
               Write('-Ho ten nhan vien thu: ',i:2,' la= ');
               Readln(HoTen);
               Write('-Tuoi      = ');
               Readln(Tuoi);
               Write('-Bac luong = ');
               Readln(Luong);
               TuoiMax  := Tuoi;
               TuoiMin  := Tuoi;
               LuongMax := Luong;
               LuongMin := Luong;
               HoTen1   := HoTen;
               HoTen2   := HoTen;
            End;
         If First = Nil Then
            First := Newp
         Else
            Last^.Next := Newp;
            Last := Newp;
            Last^.Next := Nil;
         Ch := ReadKey;
   Until Ch = #27;
   Writeln;
   While First <> Nil Do
      With First^ Do
         Begin
            If Tuoi > TuoiMax Then
               TuoiMax := Tuoi
            Else
               If Tuoi < TuoiMin Then
                  TuoiMin := Tuoi;
            If Luong > LuongMax Then
               Begin
                  LuongMax := Luong;
                  HoTen1 := HoTen;
               End
            Else
               If Luong < LuongMin Then
                  Begin
                     LuongMin := Luong;
                     HoTen2 := HoTen;
                  End;
            First := Next;
         End;
   Writeln;
   Writeln('+Nhan vien co tuoi lon nhat la: ',TuoiMax);
   Writeln('+Nhan vien co tuoi nho nhat la: ',TuoiMin);
   Writeln('+Nhan vien: ',HoTen1,' ,co bac luong lon nhat: ',LuongMax:10);
   Writeln('+Nhan vien: ',HoTen2,' ,co bac luong nho nhat: ',LuongMin:10);
   Release(HeapTop);
   Writeln;
   Write(' Bam <Enter> de ket thuc ');
   Readln
End.
zipBài tập 11: Viết chương trình Pascal quản lý gia cảnh
Program Gia_Canh;
Uses Crt;
CONST
   Td1 ='|========================|========================|======|';
   Td2 =#124 +'         HO VA TEN      '+
        #124 +'      HO TEN VO CHONG   '+
        #124 +'SO CON'+#124;
   Td3 ='|------------------------|------------------------|------|';
Type
   ConTro  = ^GiaCanh;
   GiaCanh = Record
      HoTen :String[24];
      Next  : ConTro;
      Case GiaDinh  : Boolean Of
              True  : (VoChong : String[24];
              SoCon : Byte);

      End;
Var
   First, Last, Newp : ConTro;
   i    : Integer;
   Ch   : Char;
   HeapTop : ^Integer;
Begin
   ClrScr;
   GotoXY(5,25);
   Write('Bam <Enter> de tiep tuc, bam <Esc> de thoat');
   Window(1,2,80,25);
   Writeln('HO SO GIA CANH');
   Writeln('--------------');
   Writeln;
   First := Nil;
   Mark(HeapTop);
   i := 0;
   Repeat
      i := i + 1;
      New(Newp);
      With Newp^ Do
         Begin
            Write('+Ho va ten nhan vien thu: ',i:2,' la= ');
            Readln(HoTen);
            Write('+Co gia dinh chua (C/K) ');
            Readln(Ch);
            Ch := UpCase(Ch);
            If Ch = 'C' Then
               Begin
                  GiaDinh := True;
                  Write('   +Ho ten vo/chong: ');
                  Readln(VoChong);
                  Write('   +So con         : ');
                  Readln(SoCon);
               End
            Else
               GiaDinh := False;
         End;
      If First = Nil Then
           First := Newp
      Else
           Last^.Next := Newp;
      Last := Newp;
      Last^.Next := Nil;
      Ch := ReadKey;
   Until Ch = #27;
   Writeln;
   ClrScr;
   Writeln(#32:25,'HOAN CANH GIA DINH NHAN VIEN');
   Writeln(#32:12,Td1);
   Writeln(#32:12,Td2);
   Writeln(#32:12,Td3);
   While First <> Nil Do     {Xuat du lieu }
      With First^ Do
         Begin
            Write(#32:12);
            Write(#124,HoTen,#32:24-Length(HoTen));
            If GiaDinh Then
               Begin
                  Write(#124,VoChong,#32:24-Length(VoChong));
                  Writeln(#124,SoCon:6,#124);
               End
            Else
               Begin
                  Write(#124,#32:24);
                  Writeln(#124,#32:6,#124);
               End;
            First := Next;
         End;
    Release(HeapTop);
   Writeln(#32:12,Td1);
   Readln
End.
zipBài tập 12: Viết chương trình Pascal tính điểm và xếp hạng lớp học
Program Tinh_Diem_Xep_Hang;
Type
   ConTro = ^Lop;
   Lop = Record
      HoTen       : String[24];
      NamSinh       : Integer;
      Tb1,Tb2,Tb    : Real;
   End;
Var
   Hs          : Array[1..50] Of lop;
   i,j,n,Hang: Integer;
   Tam         : ConTro;
Begin
   Writeln('TINH DIEM VA XEP HANG);');
   Writeln('Giai thuat noi Buble');
   Writeln('--------------------');
   Writeln;
   New(Tam);
   Write('-So hoc sinh: ');
   Readln(n);
   For i := 1 To N Do
      With Hs[i] Do
         Begin
            Write(' +Ho ten hoc sinh thu: ',i:2,' la: ');
            Readln(Hoten);
            Write(' +Nam sinh: ');
            Readln(NamSinh);
            Write(' +Diem trung binh hoc ky 1: ');
            Readln(Tb1);
            Write(' +Diem trung binh hoc ky 2: ');
            Readln(Tb2);
            Tb :=(Tb1 + Tb2)/2;
            Writeln;
         End;
   For i := 1 To N-1 Do
      For j := 1 To N-i Do
         If Hs[j].Tb < Hs[j+1].Tb Then
            Begin
               Tam^ := Hs[j];
               Hs[j] := Hs[j+1];
               Hs[j+1] := Tam^;
            End;
   Writeln;
   Writeln('        DANH SACH XEP HANG');
   Writeln;
   Hang := 1;
   For i := 1 To N Do
      Begin
         If (i > 1) And (Hs[i].Tb <> Hs[i-1].Tb) Then
            Hang := i;
         Writeln('   .Hoc sinh : ',Hs[i].HoTen);
         Writeln('   .Nam sinh : ',Hs[i].NamSinh);
         Writeln('   .Diem trung binh ca nam : ',Hs[i].Tb:5:2);
         Writeln('   .Xep hang ca nam        : ',Hang);
      End;
   Readln
End.

Nguồn: Sưu tầm trên mạng Internet

 

Bạn đang ở trang: Home Nghề Tin học Văn phòng Tin học 11 Bài tập TH11 - Bài tập Pascal - Có đáp án