markdown:
## TH11 - Bài tập Pascal - Có đáp án
- Được viết ngày Thứ bảy, 05 Tháng 5 2012 23:52
- Lượt xem: 13718
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bài tập 12:** **Viết chương trình Pascal tính a mũ b (a** b)
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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Viết chương trình Pascal in bài ca dao ra màn hình** **Bài tập 30:**
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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bài tập 15:** **Viết chương trình Pascal tính trị của đa thức P** n
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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bài tập 16:** **Viết chương trình Pascal tính luỹ thừa x** n
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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bài tập 19:** **Viết chương trình Pascal giải phương trình bậc 2: ax** 2+ 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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bài tập 17:** **Viết chương trình Pascal Tính x mũ n (x** n)
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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bài tập 18:** **Viết chương trình Pascal Tính x mũ n (x** n)
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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/stories/zip.png)
**Bà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.
![ zip](/images/stories/zip.png)
**Bà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.
![ zip](/images/stories/zip.png)
**Bà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.
![ zip](/images/stories/zip.png)
**Bà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.
![ zip](/images/stories/zip.png)
**Bà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.
![ zip](/images/stories/zip.png)
**Bà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.
![ zip](/images/stories/zip.png)
**Bà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.
![ zip](/images/stories/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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.
![ zip](/images/Tinhoc11/Images/zip.png)
**Bà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*

Set-Cookie: ja_edenite_tpl=ja_edenite; expires=Sun, 18-Jun-2017 13:20:02 GMT; path=/

Server: nginx

Cache-Control: private

Vary: Accept-Encoding

P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"