Version 2.0: So với Pascal chuẩn, Turbo Pascal Version 2.0 có những mở rộng về các biến động, các biến địa chỉ tuyệt đố, Các phép toán trên bit và byte, các phép toán logic trên số nguyê
Trang 1Version 2.0: So với Pascal chuẩn, Turbo Pascal Version 2.0 có những mở rộng về các biến động, các biến địa chỉ tuyệt đố, Các phép toán trên bit và byte, các phép toán logic trên số nguyên, Kết nối các chương trình với các biến chung,
Version 3.0: là một hệ thống phát triển gồm những đặc điểm của version 2.0 và có nhiều mở rộng quan trọng như: Bổ sung nhiề thủ tục và hàm chuẩn Bổ sung một vài dạng đặc biệt mới cho phép tính toán các số thực với độ chính xác lớn, So với version 2.0 thì version 3.0 có tốc độ dịch gấp đôi
Version 4.0: có đặc điểm là có thêm một số dữ liệu mới, thực hiện các biểu thức logic nhanh hơn, có nhiều thủ tục và hàm chuẩn về xử lí đồ họa đồ thị màu sắc hình khối cửa sổ,
Version 5.0 và 5.5: Năm 1989, hãng Borland đưa ra thị trường phiên bản Turbo Pascal Version 5.0 để giới thiệu các thủ tục và hàm tiện nghi Tiếp đó chưa đầy nữa năm họ đưa
ra version 5.5 có thêm cấu trúc hoàn toàn mới, đó là lập trình đối tượng
Version 6.0: Đặc điểm nổi bậc của version này là giới thiệu thành phần của Turbo vision, một thư viện chương trình cụ thể, định hình có các cửa sổ tiện ích để đối chiếu với nhau
Version 7.0: Cuối năm 1992, hãng Borland lại đưa ra version 7.0 để chạy trong nhiều
hệ điều hành kể cả Windows
Trang 2Một số bài tập Ma trận trong Pascal
1 Dùng bộ sinh số ngẫu nhiên tạo ma trận A,B Sau đó tính tổng ma trận rùi in ra màn hình ma trận A,B và ma trận Tổng
Trích:
Program TONGMATRAN;
Uses WinCrt;
Const
TD1 = 'TRUONG DAI HOC BAN CONG MARKETING';
TD2 = ' »»»»» §¤Lïþ§ÑÆÇK® - ¥§æ «««««';
MAX = 30;
Type
MATRAN = Array[1 MAX,1 MAX] Of Byte ;
Var
MA,MB,MC:MATRAN;
CAP:Byte;
{Thu tuc dinh vi cursor}
Procedure WriteXY(X,Y:Byte;CHUOI:String);
Begin
GotoXY(X,Y);
Write(CHUOI);
End;
{Thu tuc in tieu de}
Procedure TIEUDE;
Begin
WriteXY(25,1,TD1);
WriteXY(25,2,TD2);
End;
{Thu tuc tao ma tran}
Procedure TAOMATRAN(Var A,B:MATRAN; Var N:Byte);
Var
i,j:Byte;
Begin
WriteXY(15,5,'- Nhap cap cua ma tran: '); Readln(N);
For i:=1 To CAP Do
For j:=1 To CAP Do
Begin
A[i,j]:=Random(100);
B[i,j]:=Random(50);
End;
End;
{Thu tuc in ma tran}
Procedure INMT(X:MATRAN;N:Byte);
Trang 3i,j:Byte;
Begin
For i:=1 To N Do
Begin
For j:=1 To N Do Write(X[i,j]:5);
Writeln;
End;
Writeln;
End;
{Thu tuc xuat ma tran}
Procedure XUATKQ(A,B:MATRAN; Var C:MATRAN; N:Byte);
Var
i,j:BYte;
Begin
Writeln('MA TRAN A:');
INMT(A,N);
Writeln('MA TRAN B:');
INMT(B,N);
For i:=1 To N Do
For j:=1 To N Do C[i,j]:=A[i,j]+B[i,j];
Writeln('MA TRAN TONG:');
INMT(C,N);
End;
{Chuong trinh chinh}
Begin
Clrscr;
TIEUDE;
TAOMATRAN(MA,MB,CAP);
XUATKQ(MA,MB,MC,CAP);
End
2 Dùng bộ sinh số ngẫu nhiên tạo ma trận A,B Sau đó tính tích 2 ma trận rùi in ra màn hình ma trận A,B và ma trận Tích
Trích:
Program NHANMATRAN;
Uses WinCrt;
Const
TD1 = 'TRUONG DAI HOC BAN CONG MARKETING';
TD2 = ' »»»»» §¤Lïþ§ÑÆÇK® - ¥§æ «««««';
MAX = 30;
Type
MATRAN = Array[1 MAX,1 MAX] Of Byte;
Var
MA,MB,MC:MATRAN;
Trang 4{Thu tuc dinh vi cursor}
Procedure WriteXY(X,Y:Byte; CHUOI:String);
Begin
GotoXY(X,Y);
Write(CHUOI);
End;
{Thu tuc in tieu de}
Procedure TIEUDE;
Begin
Writexy(25,1,TD1);
WritexY(25,2,TD2);
End;
{thu tuc tao ma tran}
Procedure TAOMATRAN(Var A,B:MATRAN; Var DA,CA,DB,CB:Byte);
Var
i,j:Byte;
Begin
Repeat
WriteXY(15,4,'- Nhap so dong Ma tran A: '); Readln(DA);
WriteXY(15,5,'- Nhap so cot Ma tran A: '); Readln(CA);
WriteXY(15,6,'- Nhap so dong Ma tran B: '); Readln(DB);
WriteXY(15,7,'- Nhap so cot Ma tran B: '); Readln(CB);
Until CA=DB;
For i:=1 To DA Do
For j:=1 To CA Do A[i,j]:=Random(20);
For i:=1 To DB Do
For j:=1 To CB Do B[i,j]:=Random(10);
End;
{Thu tuc in ma tran}
Procedure INMATRAN(X:MATRAN;DONG,COT:Byte);
Var
i,j:Byte;
Begin
For i:=1 To DONG Do
Begin
For j:=1 To COT Do Write(X[i,j]:5);
Writeln;
End;
End;
{Thu tuc xuat ket qua}
Procedure XUATKQ(A,B:MATRAN;Var C:MATRAN; DA,CA,DB,CB:Byte;Var DC,CC:Byte);
Trang 5i,j,k:Byte;
Begin
Writeln('MA TRAN A: ');
INMATRAN(A,DA,CA);
Writeln('MA TRAN B: ');
INMATRAN(B,DB,CB);
DC:=DA;
CC:=CB;
For i:=1 To DA Do
For j:=1 To CB Do
Begin
C[i,j]:=0;
For k:=1 To CA Do C[i,j]:=C[i,j]+(A[i,k]*B[k,j]);
End;
Writeln('MA TRAN TICH: ');
INMATRAN(C,DC,CC);
End;
{chuong trinh chinh}
Begin
Clrscr;
TIEUDE;
TAOMATRAN(MA,MB,DONGA,COTA,DONGB,COTB);
XUATKQ(MA,MB,MC,DONGA,COTA,DONGB,COTB,DONGC,COTC); End
*************************************************
2 Xu ly:
a) Dung bo sinh so ngau nhiencua Pascal de luu gia tri cho cac phan tu cua Mang Luu Ket qua vao tap tin LENTHOT.INP gom:
Dong1: la mot so nguyen cho biet gia tri phan tu cua mang
Dong: la gia tri cua phan tu mang
b) Mo tap tin LENTHOT.OUT va dua bien vao mang
c) Thuc hien sap xep bang thuat toan Selection Sort Luu ket qua vao tap tin LENTHOT.OUT
************************************************** *****
Program SELECT;
Uses WinCrt;
Const
TD1 = 'TRUONG DAI HOC BAN CONG MARKETING';
TD2 = 'SOLIDSNACK';
MAX = 20;
Type
MANG = Array[1 MAX] Of Byte;
Var
DAYSO:MANG;
Trang 6{Thu tuc dinh vi cursor}
Procedure WriteXY(X,Y:Byte; CHUOI:String);
Begin
GotoXY(X,Y);
Write(CHUOI);
End;
{Thu tuc in TIEUDE}
Procedure TIEUDE;
Begin
WriteXY(25,1,TD1);
WriteXY(25,2,TD2);
End;
{Thu tuc tao mang}
Procedure TAOMANG(Var A:MANG;Var N:Byte);
Var
i:Byte;
F:Text;
Begin
WriteXY(15,4,'- Muon mang co may phan tu? '); Readln(N); For i:=1 To N Do A[i]:=Random(100);
Assign(F,'D:\LENTHOT.INP');
Rewrite(F);
Writeln(F,N);
For i:=1 To N Do Write(F,A[i]:5);
Close(F);
End;
{Thu tuc Hoan vi}
Procedure HOANVI(Var X,Y:Byte);
Var
TAM:Byte;
Begin
TAM:=X;
X:=Y;
Y:=TAM;
End;
{Thu tuc sap xep bang SelectionSort}
Procedure SELECTIONSORT(Var A:MANG; N:Byte); Var
i,j,MIN:Byte;
Begin
For i:=1 To N-1 Do
Trang 7MIN:=i;
For j:=i+1 To N Do
If A[j]<A[MIN] Then MIN:=j;
HOANVI(A[MIN],A[i]);
End;
End;
{Thu tuc in vao tap tin LENTHOT.INP}
Procedure XUATKQ(Var A:MANG; Var N:Byte);
Var
i:Byte;
F1,F2:Text;
Begin
Assign(F1,'D:\LENTHOT.INP');
Reset(F1);
Readln(F1,N);
For i:=1 To N Do Read(F1,A[i]);
Close(F1);
WriteXY(15,6,'Mo file LENTHOT.OUT de xem ket qua sap xep'); Assign(F2,'D:\LENTHOT.OUT');
Rewrite(F2);
Writeln(F2,'Cac phan tu da duoc sap xep nhu sau: ');
SELECTIONSORT(A,N);
For i:=1 To N Do Write(F2,A[i]:5);
Close(F2);
End;
{Chuong trinh chinh}
Begin
Clrscr;
TIEUDE;
TAOMANG(DAYSO,SOPT);
XUATKQ(DAYSO,SOPT);
End
***********************************************
1 Du lieu nhap vao
- Tao tap tin TIMKIEM.INP gom:
Dong1 : So phan tu cua mang
Dong2: Cac phan tu cua mang mot chieu
- Nhap vao mot do muon tim
2 Xu ly
- Dung thuat toan tuan tu de tim kiem
3 OUTPUT
- Xuat thong bao tim thay hoac khong
- xuat thong bao phan tu muon tim la phan tu thu may cua mang
Trang 8************************************************} Code:
Program TIMKIEMTUANTU;
Uses Wincrt;
Const
MAX = 30;
Type
MANG = Array[1 MAX] Of Byte;
Var
DAYSO:MANG;
SOPT,SOTIM:Byte;
{Thu tuc doc tap tin}
Procedure DOCTT(Var A:MANG; Var N,X:Byte);
Var
i:Byte;
F:Text;
Begin
Assign(F,'D:\TIMKIEM.INP');
Reset(F);
Readln(F,N);
For i:=1 To N Do Read(F,A[i]);
Close(F);
Write('Nhap con so muon tim: '); Readln(X);
End;
{Thu tuc tim kiem tuan tu}
Function TIMKIEM(A:MANG;N,X:Byte):Boolean;
Var
FOUND:Boolean;
i:Byte;
Begin
{Truoc khi tim thi gan gia tri ban dau cho bien found} FOUND:=False;
For i:=1 To N Do
If A[i]=X Then
Begin
Found:= True;
Writeln('Phan tu ',X,' o vi tri thu ',i);
End;
TIMKIEM:=FOUND;
End;
{Thu tuc xuat ket qua}
Procedure XUATKQ(A:MANG;N,X:Byte);
Var
KETQUA:Boolean;
Trang 9Begin
KETQUA:=TIMKIEM(A,N,X);
If KETQUA = True Then Write('Tim thay phan tu') Else Write('Khong tim thay phan tu');
End;
{Chuong trinh chinh}
Begin
DOCTT(DAYSO,SOPT,SOTIM);
XUATKQ(DAYSO,SOPT,SOTIM);
End
Trang 10Giải thuật Sắp xếp
1 Thủ tục hoán vị các phần tử (swap):
Trích:
Procedure SWAP(Var BIEN1,BIEN2:Byte);
Var
TAM:Byte;
Begin
TAM := BIEN1;
BIEN1:= BIEN2;
BIEN2 := TAM;
End;
2.Sắp xếp chọn (Selection Sort)
2.1 Giải thuật:
Đây là phương pháp sắp xếp đơn giản nhất được tiến hành như sau:
a) Chọn phần tử nhỏ nhất trong n phần tử từ A[1] đến A[n] và hoán vị nó với phần tử A[n] b) Chọn phần tử có khóa nhỏ nhất trong N-1 phần tử từ A[2] đến A[n] và hoán nó với vị trí A[2] c) Tổng quát ở bước thứ i, chọn phần tử cò khóa nhỏ nhất trong n-i+1 phần tử từ A[i] đến A[n]
và hoán vị nó với A[i]
Sau bước này thì mảng đã sắp xếp
VD: Cho 5 28 12 1 92
Sắp xếp:
2.2 Chương trình Demo:
Trích:
{Thủ tục hoán vị giữa hai phần tử}
Procedure SWAP(Var BIEN1,BIEN2:Byte);
Var
TAM:Byte;
Begin
TAM := BIEN1;
BIEN1:= BIEN2;
BIEN2 := TAM;
End;
Trang 11{Thủ tục sắp xếp chọn – Selection Sort}
Procedure Selection Sort(Var A:MANG; SOPT:Byte);
Var
I,j:Byte;
MIN:Integer;
Begin
{Duyệt từ phần tử đầu đến phần tử cuối của Mảng}
For i:=1 To SOPT – 1 do
Begin
Min := I;
{Gán chỉ số của phần tử thứ i vào biến Min}
For j:=i+1 To N Do
{So sánh với phần tử của i+1 đến phần tử cuối}
If A[j] < A[min] Then Min := j
SWAP(A[Min],A[i]);
End;
End;
Trang 12Các câu lệnh trong Turbo Pascal
SYSTEM
write() : in ra màn hình liền sau kí tự cuối
writeln() : in xuống một hàng
read() : đọc biến
readln() : dừng chương trình để đọc biến
Uses CRT
clrscr : xoá toàn bộ màn hình
textcolor() : in chữ màu
textcolor() : tô màu cho màn hình
sound() : tạo âm thanh
delay() : làm trể
nosound : tắt âm thanh
windows(x1,y1,x2,y2) : thay đổi cửa sổ màn hình
highvideo : tăng độ sáng màn hình
lowvideo : giảm độ sáng màn hình
normvideo : màn hình trở lại chế độ sáng bình thường
gotoxy(x,y) : đưa con trỏ đến vị trí x,y trên màn hình
deline : xoá một dòng đang chứa con trỏ
clreol : xoá các ký tự từ vị trí con trỏ đến cuối mà không di chuyển vị trí con trỏ insline : chèn thêm một dòng vào vị trí của con trỏ hiện hành
exit : thoát khỏi chương trình
textmode(co40) : tạo kiểu chữ lớn
randomize : khởi tạo chế độ ngẫu nhiên
move(var 1,var 2,n) : sao chép trong bộ nhớ một khối n byte từ biến Var 1 sang biến Var 2
halt : Ngưng thực hiện chương trình và trở về hệ điều hành
Abs(n) : Giá trị tuyệt đối
Arctan(x) : cho kết quả là hàm Arctan(x)
Cos(x) : cho kết quả là cos(x)
Exp(x) : hàm số mủ cơ số tự nhiên ex
Frac(x) : cho kết quả là phần thập phan của số x
int(x) : cho kết quả là phần nguyên của số thập phân x
ln(x) : Hàm loga cơ số tự nhiên
sin(x) : cho kết quả là sin(x), với x tính bằng Radian
Sqr(x) : bình phương của số x
Sqrt(x) : cho kết quả là căn bậc hai của x
pred(x) : cho kết quả là số nguyên đứng trước số nguyên x
Suuc(x) : chô kết quả là số nguyên đứng sau số nguyên x
odd(x) : cho kết quả là true nếu x số lẻ, ngược lại là false
chr(x) : trả về một kí tự có vị trí là x trong bảng mã ASCII
Ord(x) : trả về một số thứ tự của kí tự x
round(n) : Làm tròn số thực n
Random(n) : chó một số ngẫu nhiên trong phạm vi n
upcase(n) : đổi kí tự chữ thường sang chữ hoa
Trang 13assign(f,) : tạo file.
rewrite(f) : khởi tạo
append(f) : chèn thêm dữ liệu cho file
close(f) : tắt file
erase(f) : xóa
rename() : đổi tên cho file
length(s) : cho kết quả là chiều dài của xâu
copy(s,a,b) : copy xau
insert(,s,a) : chèn thêm cho xâu
delete(s,a,b) : xoá xâu
Unit GRAGH
initgraph(a,b,) : khởi tạo chế độ đồ hoạ
closegraph; : tắt chế độ đồ hoạ
setcolor(x) : chọn màu
outtext() : in ra màn hình tại góc trên bên trái
outtextxy(x,y,); : in ra màn hình tại toạ độ màn hình
rectangle(x1,y1,x2,y2): vẽ hình chữ nhật
line(x1,y1,x2,y2) : vẽ đoạn thẳng
moveto(x,y) : lấy điểm xuất phát để vẽ đoạn thẳng
lineto(x,y) : lấy điểm kết thúc để vẽ doạn thảng
circle(x,y,n) : vẽ đường tròn
ellipse(x,y,o1,o2,a,b): vẽ hình elip
floodfill(a,b,n) : tô màu cho hình
getfillpattern(x) : tạo biến để tô
setfillpattern(x,a) : chọn màu để tô
cleardevice; : xoá toàn bộ màn hình
settextstyle(n,a,b) : chọn kiểu chữ
bar(a,b,c,d) : vẽ thanh
bar3d(a,b,c,d,n,h) : vẽ hộp
arc(a,b,c,d,e) : vẽ cung tròn
setbkcolor(n) : tô mà nền
putpixel(x,y,n) : vẽ điểm
setfillstyle(a,b) : tạo nền cho màn hình
setlinestyle(a,b,c) : chọn kiểu đoạn thẳng
getmem(p,1) : chuyển biến để nhớ dữ liệu
getimage(x1,y1,x2,y2,p): nhớ các hình vẽ trên vùng cửa sổ xác định putimage(x,y,p,n) : in ra màn hình các hình vừa nhớ
Unit DOS
getdate(y,m,d,t) : lấy các dữ liệu về ngày trong bộ nhớ
gettime(h,m,s,hund) : lấy các dữ liệu về giờ trong bộ nhớ
findnext(x) : tìm kiếm tiếp
Findfirst(,$20,dirinfo) : tìm kiếm
Đỗ Trung Thành @ 00:32 14/09/2009
Trang 14Số lượt xem: 2016