Tải bản đầy đủ (.doc) (5 trang)

Toán tử NOT - Những vấn đề không thể hay có thể

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (71.13 KB, 5 trang )

Những vấn đề không thể hay có thể?
Nguyễn Hiếu cường
Vấn đề 1: Toán tủ NOT
Toán tử NOT thường dùng để phủ định một giá trị kiểuBoolean:
NOT True=False
NOT False=True
Nhưng Pascal cũng cho phép thực hiện toán tử NOT với cáctoán hạng kiểu Integer. Khi đó
phép phủ định được mở rộng thực hiện đồng thờitrên 16 bit.
Ví dụ:
NOT 0 = -1
NOT 1 = -2
NOT -15 = 14
Vấn đề 2: Kết quả trả về của một hàm
Một số bạn hay phát biểu: hàm trả về một giá trị thông quatên hàm, do đó họ hay hiểu lầm
rằng kết quả trả về của hàm là một giá trị,tức là một số nào đó (Integer, Real,...). Đúng là
trong các bài toán chúng tathường hay gặp điều này nhưng không phải luôn luôn như vậy,
kết quả của hàmcũng có thể là một kiểu có cấu trúc, chỉ cần kiểu đó phải được định
nghĩatrước.
Ví dụ:
Type Chuoi4=string[4];
Var s:Chuoi4;
Function HamChuoi: Chuoi4;
Begin
HamChuoi:=****;
End;
Begin
s:= HamChuoi;
write(s);
End.
Vấn đề 3: Kích cỡ chữ trên màn hình đồ họa
Để viết chữ trên màn hình đồ hoạ, ta cần theo các bước:


Chọn kiểu, hướng và kích cỡ chữ: SetTextStyle(Font,Direction, CharSize);
Viết chữ từ toạ độ (X,Y): OutTextXY(X, Y, TextString);
Tại đây, CharSize là kích cỡ của chữ, có giá trị từ 1 đến10. Chúng ta thường chỉ dùng
phạm vi nàu nên ít để ý rằng có thể thay đổi kíchcỡ chữ ngoài phạm vi đó. Để thực hiện
được chúng ta dùng lệnh:
SetUserCharSize(MultX,DivX, MultY, DivY);
Nếu muốn chữ rộng ra thì chọn MultX gấp nhiều lần DivX cònnếu muốn chữ cao lên thì
chọn MultY gấp nhiều lần DivY (các giá trị này đều làsố nguyên).
Chú ý: Trướckhi dùng lệnh SetUserCharSize cần dùng lệnh SetTextStyle để xác định font
chữ,nếu không có lệnh SetTextStyle hoặc có nhưng giá trị Font = 0 thì font chữ mặcđịnh
được sử dụng. Trong trường hợp này SetUserCharSize không có tác dụng.
Ví dụ:
Uses graph;
Var
gd,gm, x, y: integer;
Begin
...
x:=GetMaxX div 2;
y:=GetMaxY div 2;
SetTextStyle(1,0,1);
OutTextXY(x-200,y,Short);
SetUserCharSize(3,1,1,1);
OutTextXY(x-150,y,Wide);
SetUserCharSize(11,1,6,1);
OutTextXY(x-350,y+50,Lage);
...
End.
Vấn đề 4: Tham số hình thức không xác định kiểu
Các chương trình con trong Pascal được khai báo theocông thức sau:
ProcedureTên_thủ_tục(khai báo các tham số hình thức);

FunctionTên_hàm(khai báo các tham số hình thức): Kiểu_hàm;
Thường thì trong phần khai báo, tham số hình thức phảiđược xác định một kiểu nhất định,
theo công thức:
Tên_tham_số:Kiểu;
Hoặc
VarTên_tham_số: Kiểu;
Nhưng kiểu của tham số hình thức cũng có thể không xácđịnh, tức là định nghĩa kiểu
được bỏ qua trong phần mô tả tham số đầu của chươngtrình con. Trong trường hợp này
tham số thực sự tương ứng có thể thuộc bất kỳkiểu nào. Tham số hình thức không xác định
kiểu tự bản thân nó không tương hợpvới tất cả các kiểu do đó chỉ được dùng trong những
hoàn cảnh mà ở đó kiểu dữliệu không có ý nghĩa, chẳng hạn để làm tham số địa chỉ của
biến địa chỉ tuyệtđối.
Ví dụ:
typea=array[1..20] of byte;
Procedure HV(var a1p,a2p; n:integer);
Var {Các biếnđịa chỉ tuyệt đối: các biến có thể được khai báo để được bố trí vào các địa
chỉbộ nhớ cố định nào đó}
a1:a absolute a1p;
a2:a absolute a2p;
tg: byte;
i: integer;
Begin
for i:=1 to n do
begin
tg:=a1[i];
a1[i]:=a2[i];
a2[i]:=tg;
end;
End;
Var

n, i, x, y:byte;
c, d: a;
Begin
{Nhap 2 so}
write(`x,y= `);
readln(x,y);
{Hoan vi2 so}
HV(x,y,1);
writeln(x,,y);
{Nhap 2mang}
write(n= );
readln(n);
for i:=1to n do
begin
write(c,d,i,=);
readln(c[i],d[i]);
end;
{Hoan vi2 mang}
HV(c,d,n);
for i:=1to n do
writeln(c[i],,d[i]);
readln;
End.
Nguyễn Hiếu Cường

×