Giáo trình Tin học đại cương - Nguyễn Gia Phúc
I- MỘT SỐ KHÁI NIỆM CƠ BẢN
Thông tin, lưu trữ và truyền tin
Thông tin là sự phản ánh sự vật, sự việc, hiện tượng của thế giới khách quan và các hoạt
động của con người trong đời sống xã hội. Điều cơ bản là con người thông qua việc cảm nhận
thông tin làm tăng hiểu biết cho mình và tiến hành những hoạt động có ích cho cộng đồng.
Thông tin được lưu giữ trên nhiều dạng vật liệu khác nhau như được khắc trên đá, được
ghi lại trên giấy, trên bìa, trên băng từ, đĩa từ. . .
Việc lưu giữ và truyền tin chỉ có giá trị khi quá trình đó đảm bảo chính xác nội dung của
nó. Để thuận tiện người ta phải biến đổi và khôi phục thông tin theo quy ước sao cho đảm
bảo: chính xác, kinh tế, thời gian, không gian, mà thực chất là quá trình xử lý thông tin: mã
hoá thông tin, cất giữ, truyền tin và giải mã thông tin.
Môi trường vận động thông tin là môi trường truyền tin, nó bao gồm các kênh liên lạc tự
nhiên hoặc nhân tạo như sóng âm, tia sáng, dây dẫn, sóng âm thanh, sóng hình. . . Kênh liên
lạc thường nối các thiết bị của máy móc với nhau hay nối với con người.
Con người có hình thức liên lạc tự nhiên và cao cấp là tiếng nói, từ đó nghĩ ra chữ viết.
Ngày nay nhiều công cụ phổ biến thông tin đã xuất hiện: bút viết, máy in, điện tín, điện thoại,
phát thanh, truyền hình, phim ảnh v.v.
Máy tính điện tử là công cụ hiện đại cho phép tự động hoá việc xử lý và truyền thông
tinđảm bảo chính xác và nhanh gọn.
II- BIỂU DIỄN THÔNG TIN TRONG MÁY TÍNH ĐIỆN TỬ (MTĐT)
Máy tính điện tử biểu diễn thông tin trên cơ sở ghép nối các linh kiện, các mạch điện tử
thực hiện hai trạng thái vật lý ký hiệu là 0 và 1.
Để mô tả trạng thái vật lý tương ứng với hai ký hiệu 0 và 1, Ví dụ: Bóng điện tử có thể ở
một trong hai trạng thái là sáng hoặc tắt; Một công tắc điện có thể ở một trong hai trạng thái là
bật hoặc tắt; Một nguồn điện có thể có điện thế cao hay thấp v.v . .
Trong máy tính là các mạch điện tử, linh kiện điện tử thể hiện hai trạng thái đó và được
quy ước biểu diễn như sau:
Nếu ở trạng thái đóng: biểu diễn ký hiệu số 1
Nếu ở trạng thái ngắt : biểu diễn ký hiệu số 0
Thông tin biểu diễn trong máy tính có dạng dữ liệu, bao gồm những con số, chữ cái, ký
hiệu được chọn lọc và tổ chức theo quy cách xác định để thuận tiện cho việc xử lý tự động.
Dữ liệu được thể hiện bằng cách ghép nối theo từng nhóm các linh kiện điện tử và ở từng thời
điểm, từng nhóm các linh kiện thể hiện trạng thái tín hiệu điện ký hiệu 0,1. MTĐT có thể biểu
diễn được thông tin đa dạng của cuộc sống trên cơ sở mã hoá thành các ký hiệu 0 và 1 theo
quy luật náo đó gọi là mã nhị phân.
Trong thực tế người ta hay ghép các linh kiện thành từng nhóm, các bộ xử lý của máy
tính thường ghép theo nhóm 8, 16, 32 linh kiện để biểu diễn thông tin.
Việc dùng từ “linh kiện điện tử” trên nhằm mục đích mô tả, thực chất linh kiện điện tử là
các vi mạch bán dẫn, các bộ vi xử lý thực hiện hai tín hiệu đó cực kỳ nhanh.

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Tin học đại cương - Nguyễn Gia Phúc
để ghi dữ liệu, trong đó mỗi bản ghi của FA chưa ba dữ liệu
thực , mỗi bản ghi của FB chứa một dữ liệu nguyên và một dữ liệu xâu kí tự . Các dữ liệu sẽ
được đưa vào từ bàn phím.
b) Tạo file FS từ FA và FB sao cho mỗi bản ghi của FS được tạo bằng cách ghép các
bản ghi tương ứng của FA, FB .Nếu các file FA , FB có số lượng bản ghi khác nhau thì bỏ
phần dư của một trong hai file đó .
c) Đưa các bản ghi FS ra màn hình.
Program c9b9;
Uses crt;
type ra = record
x1 , x2 , x3 ::real ;
end;
rb = record
n1:integer;
s1 :string;
end;
rc = record
x1 , x2 , x3 : real;
n1 : integer;
s1 : string;
end;
Var i : integer;
ba : ra;
bb : rb;
bc : rc;
f1 : file of ra;
f2 : file of rb;
f3 : file of rc;
ans: char;
BEGIN clrscr;
assign (f1,' FA ');
rewrite(f1);
writeln(' Nhap du lieu cho file FA : ');
repeat
write(#13#10 ' Cho 3 so thuc :');
readln(ba.x1,ba.x2,ba.x3);
write(f1,ba);
repeat
write (' Co nhap tiep du lieu cho file FA nua khong ?(C/K)');
138
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
ans :=upcase ( readkey );
until ans in ['C' , 'K'];
until ans= 'K';
close (f1);
assign (f2,' FB ');
rewrite(f2);
writeln(#13#10' Nhap du lieu cho file FB : ');
repeat
write(#13#10 ' Cho so nguyen va mot xau :');
write ( ' n = '); readln(bb.n1);
write ( ' xau : '); readln (bb.s1);
write(f2,bb);
repeat
write (' Co nhap tiep du lieu cho file FB nua khong ?(C/K)');
ans :=upcase ( readkey );
until ans in ['C' , 'K'];
until ans= 'K';
close (f2);
assign (f3,'FC ');
rewrite(f3); i:=0;
assign(f1,'FA'); reset(f1);
assign(f2,'FB'); reset(f2);
while (not eof(f1)) and not(eof(f2)) do
begin
read(f1,ba); read(f2,bb);
bc.x1:=ba.x1; bc.x2:=ba.x2; bc.x3:=ba.x3;
bc.n1:=bb.n1; bc.s1:=bb.s1;
write(f3,bc); inc(i);
with bc do
begin
writeln(#13#10 '***** Ban ghi thu ' , i ,' :');
writeln('x1 , x2 , x3 = ', x1:12:3,x2:12:3, x3:12:3);
writeln(' n = ',n1);
writeln(' Xau : ' ,s1);
delay(1000);
end;
end;
close(f1); close(f2); close(f3);
END.
Bài 10 : Hãy lập chương trình làm các việc sau :
a) Tạo một file , mỗi bản ghi gồm :
- Tên sản phẩm : xâu < 21 kí tự
- Mã sản phẩm : gồm 2 mã , mỗi mã là một số nguyên.
- Đơn giá : số thực
Tên file đọc từ bàn phím và kết thúc vào dữ liệu khi gặp tệp rỗng .
b) Cập nhật đơn giá sản phẩm của thông tin ghi trên file dựa theo mã thứ 2 và đơn giá
sản phẩm tương ứng. Nếu ặp mã mới thì thông báo và bỏ qua.
Chương 10 : Thủ tục , hàm ,chương trình pascal có cấu trúc
139
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
Bài 1 : Lập chương trình tính min/max của một hàm số trên đoạn [a , b] bằng cách dùng thủ
tục và hàm . Các giá trị a và b đưa vào từ bàn phím , tìm min hay max tuỳ chọn.
Program c10b1;
Uses crt;
Var a , b , ketqua : real ;
chon : integer;
Procedure menu;
begin
writeln(' ***** TIM MIN/MAX HAM SO *****');
writeln(' 1- Tim min f(x) ');
writeln(' 2- Tim max f(x) ');
writeln(' 3- Ket thuc ');
writeln('-----------------------');
writeln(' An so de chon ! '); readln(chon);
end; {Menu}
Function f(x:real): real;
begin
f:=x*x - 5*x + 6 ;
end;
Procedure minf(aa,bb:real; var mi:real);
Var x , dx : real;
i : integer;
Begin
mi := 1e10; dx:=(bb-aa)/200;
for i:=1 to 200 do
begin
x:=aa+(i-1)*dx;
if f(x) <mi then mi:=f(x);
end;
end; {minf}
Procedure maxf(aa,bb:real; var ma :real);
var x , dx : real;
i : integer;
Begin
ma:=-1e10; dx:=(bb-aa)/200;
for i:=1 to 200 do
begin
x:=aa+(i-1)*dx;
if f(x)>ma then ma:=f(x);
end;
End; {maxf}
Procedure thongbao;
Begin
gotoxy(50,15);
writeln('* An ENTER de tiep tuc !');
repeat until keypressed;
end; { thong bao }
BEGIN
clrscr;
140
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
menu;
while chon 3 do
begin
writeln;
write(' a, b ='); readln(a, b);
if chon=1 then minf(a,b,ketqua);
if chon=2 then maxf(a,b,ketqua);
writeln(' ket qua =',ketqua:16:2);
thongbao;
clrscr; menu;
end;
END.
Bài 2 : Lập chương trình nhập toạ độ n điểm trong không gian (x1 , y1 , z1) rồi tìm toạ độ các
đỉnh của một hình hộp có các cạnh song song với các trục toạ độ và chứa tất cả các điểm trên .
Program c10b2;
Uses crt;
Type vt = array[1..100] of real;
Var n:type
x, y, z: vt;
xl,yl,zl,xn,yn,zn :real;
Procedure Nhap;
Var i:byte;
Begin
repeat
write('#13#10' Tong so diem :');
readln(n);
until (n>0) and (n<100);
writeln('Nhap toa do cac diem :');
for i :=1 to n do
begin
write('X[', i ,'] , y[', i ,'] : ');
readln(x[i], y[i],z[i]);
end;
End; {end of NHAP}
Procedure minmax(var w:vt; var v1,v2:real);
Var i:byte;
Begin
v1:= w[1];
v2:=v1;
for i:=1 to n do
if w[i] <v1 then v1:=w[i]
else if w[i]>v2 then v2:=w[i];
end; {end of MINMAX}
BEGIN
clrscr;
nhap;
minmax(x,xn,xl);
minmax(y,yn,yl);
minmax(z,zn,zl);
141
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
writeln(' Toa do hai dinh xac dinh hop can tim la :');
writeln(' Dinh duoi ben trai : x = ',xn :6:2,' y=',yn:6:2,'z=',zn:6:2);
writeln('Dinh tren ben phai : x= ',xl:6:2, 'y= ' ,yl:6:2,' z=',zl:6:2);
repeat until keypressed
END.
Bài 3 : Lập thủ tục đổi các toạ độ tương ứng của hai vectơ a ,b cho nhau.
Procedure swap(var a, b :vt; n: integer);
Var i: integer;
r : real;
Begin
for i:=1 to n do
begin
r:=b[i];
b[i]:=a[i];
a[i]:=r;
end;
End;
Bài 4 : Cho hai ma trận A, B có cùng kích thước . Lập một thủ tục đổi chỗ các phần tử tương
ứng của A và B cho nhau. Đưa ra màn hình A , b ban đầu và sau khi đã đổi chỗ.
Bài 5 : Lập thủ tục tính tích hai ma trận , thủ tục chuyển vị ma trận . Dùng các thủ tục này lập
chương trình đọc vào ma trận A kích thước m , n rồi tính A.A* trong đó A* là chuyển vị của
A.
Bài 6 : Lập thủ tục kiểm tra xem xâu A có chứa xâu B như một xâu con hay không và nếu có
thì xem chứa bao nhiêu lần .
Program c10b6;
Uses crt;
Var a, b, c , d : string;
k , l, i , j ; byte;
BEGIN
clrscr;
write (' Xau A : '); readln(a);
write (' Xau B : '); readln(b);
c:=a; k:=0; l:=length(b); d: =' ' ; j:=pos(b,c);
d := chr(219); { ''}
while j>0 do
begin
inc(k);
delete(c,j,1);
insert(d,c,j);
j:=pos(b,c);
end;
if k = 0 then writeln(' Xau ' , a , ' Khong chua xau ', b , '. ')
else
writeln(' Xau ' ' , b , ' ' ' co mat trong xau ' ' ' , a , ' ' ' ', k , ' lan . ');
readln;
END.
Bài 7 : a) Lập hàm xác định chỉ số kể từ đó xây B tham gia vào xâu A như một xâu con lần
thứ k.
142
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
b) Viết chương trình dùng hàm trên để tìm chỉ số của xâu A mà từ chỉ số đó xâu B
tham gia vào xâu A như một xâu con lầ thứ k . Các xâu A , B và số k nhập từ bàn phím.
Function indxk(a , b : string; k :byte) :byte;
Var i , j , l : byte;
c , d :string;
ok:boolean;
Begin
c:=a; l:=length(b); d:=' ';
d := chr (219);
i:= pos (b , c); j:=1;
ok:=(i>0) and (j=k);
while (i>0) and (j<k) do
begin
inc(j);
delete(c,i,1);
insert(d, c, i);
i:=pos(b,c);
ok:=(i>0) and (j=k);
end;
if ok then indxk:=i else indxk:=0;
End; { het ham INDXK }
Program c10b13;
Uses crt;
Var a,b : string;
k: byte;
Function indxk(a , b : string; k :byte) :byte;
Var i , j , l : byte;
c , d :string;
ok:boolean;
Begin
c:=a; l:=length(b); d:=' ';
d := chr (219);
i:= pos (b , c); j:=1;
ok:=(i>0) and (j=k);
while (i>0) and (j<k) do
begin
inc(j);
delete(c,i,1);
insert(d, c, i);
i:=pos(b,c);
ok:=(i>0) and (j=k);
end;
if ok then indxk:=i else indxk:=0;
End; { het ham INDXK }
BEGIN
clrscr;
write(' Xau A : '); readln(a);
write(' Xau B : '); readln(b);
write(#13#10'K = ' ); readln(k);
143
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
writeln(indxk(a,b,k);
readln;
END.
Bài 8 : a) Lập thủ tục biến đổi các kí tự của xâu A theo qui tắc sau : Nếu kí tự thứ i ( 1 i
length(A) Ai có mặt trong xâu B thì nó được thay thế bằng kí tự tương ứng ở xâu C ( các xâu
B, C có độ dài bằng nhau và bằng m ). Các kí tự Ai không có mặt rong B được giữ nguyên.
b) Lập chương trình nhập cá xâu A , B , C từ bàn phím rồi sử dụng thủ tục trên biến
đổi xâu A theo qui tắc đã nêu . Đưa kết quả ra màn hình.
Program translate(var a, b , c : string ; m : byte);
Var i , j : byte;
Begin
for i:=1 to length(a) do
begin
j:= pos(a[i], b);
if j>0 then a[i] :=c[j];
end;
End;
Program c10b8;
Uses crt;
Var s1 , s2 , s3 : string ;
ans:char;
n:byte;
Program translate(var a, b , c : string ; m : byte);
Var i , j : byte;
Begin
for i:=1 to length(a) do
begin
j:= pos(a[i], b);
if j>0 then a[i] :=c[j];
end;
End;
BEGIN
clrscr;
repeat
write(#13#10' Xau nguon :'); readln(s1);
repeat
write(' Xau khoa :'); readln(s2);
write( 'Xau thay :'); readln(s3);
n:=length(s2);
until n = length(s3);
translate(s1,s2,s3,n);
writeln(' Ket qua thay the :',s1);
repeat
write(#13#10' Co lam tiep nua khong ?(C/K)');
ans:=upcase(readkey);
until ans in [' C ' , ' K '];
until ans='K'
END.
144
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
Bài 9 : Lập thủ tục viết một câu vào vị trí (x , y) và thủ tục xoá câu từ vị trí (x , y) trở đi ,
trong đó (1 x 80 , 1 y 25). Dùng các thủ tục đã viết lập chương trình để cho dòng chữ
** DAI HOC BACH KHOA HA NOI ** chạy trên màn hình từ trái sang phải , roòi chạy trên
đường chéo màn hình.
Program DEMO;
Uses crt;
Const
a= ' DAI HOC BACH KHOA HA NOI';
b= ' KHOA TIN HOC ' ;
c= "PHONG MAY TINH';
Procedure writeXY ( x , y : integer; st : string);
Begin
gotoxy(x,y); write(st);
End;
Procedure delxy( x , y : integer);
Var i: integer;
Begin
gotoxy(x , y);
for i:=x to 80 do write(' ');
end; {delxy}
Procedure qc1(st : string);
Var k , x , y : integer;
Begin
for k:=25 to 75 do
begin
x:=80-k; y:=10;
writexy(x,y,st); delay(100);
delxy(x , y);
if keypressed then exit;
end;
End; {qc1}
Procedure qc2(st : string);
Var k , x , y : integer;
Begin
for k:=1 to 64 do
begin
x:=65-k; y:=(25- (k div 3));
writexy(x,y,st); delay(100);
delxy(x , y);
if keypressed then exit;
end;
End; {qc2}
{ chuong trinh chinh }
BEGIN
textbackground(1);
clrscr;
writexy(2,2,'An ENTER de ketthuc !');
textcolor(3);
repeat
145
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
qc1(a); qc2(a); qc1(b); qc2(b); qc1(c); qc2(c);
until keypressed;
END.
Bài 10 : Lập thủ tục Di : Đổi dấu tất cả các phần tử trên dòng i của ma trận A ; Thủ tục Cj :
Đổi dấu tất cả các phần tử trên cột j của ma trận A ; Lập chương trình dùng các thủ tục trên để
biến đổi ma trận A thành ma trận có tổng các phần tử cùng dòng hoặc cùng cột không âm.
Program c10b10;
Uses crt;
Var q:array[1..20,1..40] of real;
i , j , m , n : integer;
ok : boolean;
Function d(i:integer):real;
Var j:integer;
s:real;
Begin
s:=0;
for j:=1 to n do s:=s+q[i,j];
d:=s;
End; {End of function D(i). }
Function c(j:integer):real;
Var i:integer;
s:real;
Begin
s:=0;
for i:=1 to m do s:=s+q[i,j];
c:=s;
End; {End of function C(j). }
Procedure sc(j:integer);
{ Doi dau cot j }
Var i:integer;
Begin
writeln(' Doi dau dong',j);
delay(500);
for i:=1 to m do q[i,j]:=-q[i,j];
End; { End of Procedure sc(i). }
Procedure sd(i:integer);
{ Doi dau hang i }
Var j:integer;
Begin
writeln(' Doi dau dong',i);
delay(500);
for j:=1 to n do q[i,j]:=-q[i,j];
End; { End of Procedure sd(i). }
BEGIN
clrscr;
write(#13#10 ' M ,N ='); readln(m,n);
writeln( ' Nhap mang Q :');
for i:=1 to m do
for j:=1 to n do
begin
write('Q[' , i , ',' , j , ']=');
146
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
readln(q[i,j]);
end;
ok:=false;
while not ok do
begin
ok:=true;
for i:=1 to m do if (d(i) <0 ) then
begin sd(i); ok :=false; end;
for j;=1 to n do if (c(j) < 0 ) then
begin sc(j); ok:=false; end;
end;
writeln(' Ket qua : ');
for i:=1 to m do
for j:=1 to n do
writeln(' Q[' , i , ',' , j , ']=' , q[i,j]:6:2);
readln;
END.
Bài 11 : Lập chương trình nhập một văn bản T, đếm các kí tự khác nhau và số lần xuất hiện các kí
tự đó trong T , tính tỷ số giữa số lần xuất hiện từng kí tự và độ dài văn bản T. Hiển thị trên màn
hình hoặc in ra máy in tuỳ chọn.
Program c10b11;
Uses crt,printer;
Var t:array[1..10000] of char;
s1:array[char] of integer;
i, ans : char;
n : integer;
BEGIN
repeat
clrscr;
for i:=chr(0) to chr(255) do s1[i]:=0;
gotoxy(1,1);
write(' Van ban vao :'); gotoxy(21,24);
write(' Ket thuc van ban vao : An Ctrl +Z. ');
window(0,0,80,22);
gotoxy(15,1); n:=0;
repeat
ans:=readkey; write(ans);
inc(n);
t[n]:=ans;
s1[ans]:=s1[ans]+1;
until ord(ans) =26;
dec(n);
repeat
writeln;
write(' Dua ket qua ra dau ? (S: Man hinh, P : May in).');
ans:=upcase(readkey);
until ans in [' S ' , ' P '];
writeln;
Case ans of
'S' : if n=0 then writeln(' Van ban trong !')
else
147
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
for i:=chr(0) to chr(255) do
if (s1[i]0) and 9ichr(26)) then
writeln(i:3,' Tan so : ',s1[i]:6,' Tan suat :' ,s1[i]/n:10:8); 'P': if n=0 then
writeln(lst, 'Van ban trong!')
else
for i:=chr(0) to chr(255) do
if (s1[i]0) and 9ichr(26)) then
writeln(i:3,' Tan so : ',s1[i]:6,' Tan suat :' ,s1[i]/n:10:8);
end;
repeat
write(#13#10' Co lam tiep nua khong ? (C/K)');
ans:=upcase(readkey);
until ans in [' C ' , ' K ']
until ans='K';
END.
PHỤ LỤC
BẢNG MÃ CHUẨN ASCII
Số TT Ký tự Số TT Ký tự Số TT Ký tự Số TT Ký tự
0 NUL 32 Space 64 @ 96 `
1 SOH 33 ! 65 A 97 a
2 STX 34 “ 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 700 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 ‘ 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 405 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DC1 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
148
Nguyễn Gia Phúc, Nguyễn Thái Hà Giáo
trình Tin họcđạicương
22 SYN 54 6 86 V 118 v
23 ETB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 \ 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 ~
31 US 63 ? 95 _ 127 DEL
149File đính kèm:
giao_trinh_tin_hoc_dai_cuong_nguyen_gia_phuc.pdf

