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 149
File đính kèm:
- giao_trinh_tin_hoc_dai_cuong_nguyen_gia_phuc.pdf