intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo trình Tin học căn bản (MS-DOS6.22, BKED6.4, Turbo Pascal 7.0): Phần 2 - PGS.TS. Bùi Thế Tâm

Chia sẻ: Lê Na | Ngày: | Loại File: PDF | Số trang:162

81
lượt xem
17
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nội dung cuốn sách trình bày những kiến thức cơ bản về tin học, máy tính và giải thuật; các lệnh cơ bản của DOS6.22; cách phòng chống Virus; hệ soạn thảo văn bản tiếng Việt: BKed 6.4; những kiến thức cơ bản về lập trình trên Turbo pascal. Phần 2 sau đây gồm nội dung chương 7 trở đi.

Chủ đề:
Lưu

Nội dung Text: Giáo trình Tin học căn bản (MS-DOS6.22, BKED6.4, Turbo Pascal 7.0): Phần 2 - PGS.TS. Bùi Thế Tâm

  1. Chương ĩ K I Ể U M Ả N G , K I Ể U X Â U KÝ T ự K I Ể U T Ậ P HỢP 7.1. K I Ể U M Ả N G M á n g là một kiểu d ữ liệu có cấu t r ú c bao gồm một số cố đinh các phần t ứ có c ù n g k i ể u , có cung một tên chung. M ỗ i phần t ứ cùa m á n g chứa đ ư ợ c một giá tri và dược truy xuất t h ô n g qua các chi số. M á n g cũng có các kiểu n h ư biến: byte, integer, real, char, s tring ... Công dụng cùa m á n g là d ù n g đ ể lưu t r ữ một dãy số liệu có c ù n g một tính chất nào đ ó . Ví dụ: nhiệt ổ ộ các ngày trong n ă m , khối lượng sán phẩm sán xuất trong các t h á n g , đ i ế m thi một môn hửc cùa các hửc sinh trong lớp, hử tên các nhân viên trong xí nghiệp ... 7.1.1. M á n g mót chiều M á n g m ộ t chiều là m á n g d ù n g m ộ t chí số đ ế xác định các phần t ử cùa m á n g . Trước khi d ù n g m á n g phái khai b á o kiểu của nó. Có hai cách khai b á o m á n g một chiều: • Cách 1: khai báo t r ự c t i ế p . V a r a : array[1..3000] of real; b : array['a'..'z'] of integer; s : arrayịl.,100] of string[20]; Ba lệnh trên khai b á o : biến a là một m á n g số thực có t ố i đa 3000 phần t ứ , biến b là m á n g số nguyên có t ố i đ a 26 phần t ử ( đ á n h số các phần t ừ theo t h ứ t ự chữ cái t ừ a đ ế n z), biến 142
  2. S là một mang xâu ký t ự có t ố i đa 100 phần t ứ và mỗi xâu ký t ự dài không quá 20 ký t ự . • Cách 2: khai báo qua đinh nghĩa kiểu cùa m á n g . Const nmax=3000; Type m a n g l - arrayỊl .nmax] of real; mang2 = array['a'..'z'] of integer; mang3 = array[0..99] of string[20]; Var a : m a n g l ; b: mang2; s : mang3; Lệnh Type đinh nghĩa kiểu cùa m á n g , bao gồm: tên k i ể u , giới hạn d ư ớ i và giới hạn trên của chi số chạy trong m á n g , kiểu giá trị của các phần t ứ m á n g . • Cách 3: khai b á o và khới đầu cho m á n g . Const a: a r r a y [ 1 . . 6 ] of i n t e g e r (5,-1,7,8,-9,6); TamGiac: a r r a y [ 1 . . 4 ] of PointType = ((x:320;y:120), (x:480;y:360), ( x : 1 6 0 ; y : 2 4 0 ) , (x:320;y : 1 2 0 ) ) ; Lệnh đ ầ u khai b á o m á n g A gồm 6 phần t ứ và gán giá trị. Lệnh t h ứ hai khai b á o m á n g TamGiac có 4 phần t ứ và gán giá t r i , một phần t ử là một đ i ể m trên m ặ t phang ( c ó kiểu bán ghi). Chú ý, chí số chạy trong m á n g có t h ế là các số nguyên â m và m á n g d ù n g trong các c h ư ơ n g trình con ( t h ú từc hay h à m ) đều phái khai b á o theo cách t h ứ hai. V í d u 1 . C h ư ơ n g trình nêu d ư ớ i đ â y sắp xếp các phần t ứ cùa m á n g một chiều nhập vào t ừ bàn phím theo t h ứ t ự t ă n g dần b ằ n g t h u ậ t t o á n "nổi hot." Ý chính cua t h u ậ t t o á n này n h ư sau: ta hình dung các số cần sắp xếp là trọng lượng của các bọt khí trong nước. Bọt khí n à o ớ d ư ớ i nhẹ hơn sẽ nối 143
  3. lên trên, nhưng không thể nổi lên cao quá bọt khí nhẹ hơn nó. Chạng hạn: Sắp xếp tăng dần máng: 44 55 12 42 94 18 6 67. Bước 0 44 55 12 42 94 18 6 67 Bước 1 6 44 55 12 42 94 18 67 Bước 2 6 12 44 55 18 42 94 67 Bước 3 6 12 18 44 55 42 67 94 Bước 4 6 12 18 42 44 55 67 94 Uses Crt; Const n = 8; Var i, j , tam : Integer; a : Array[l..nỊ of Integer; Begin ClrScr; (* Nháp so lieu vào mang a * ) For i : = Ì to n do begin Write('a[\i,'] = *); Readln(a[ij); end; Sap xép * ) . For i : = Ì to n - Ì do For j :== n - Ì Downto i do If a[jỊ > a [ j + l ] then begin tam : = a[j]; aỊỊ] := aU+1]; a [ j + l ] := tam; end; (* In két qua * ) Writeln('Mang a sau khi sap xép:'); For i : = Ì to n do Write(a[i]:6); Readln; End. 144
  4. V í d u 2 . T i m các số nguyên t ố k h ô n g v ư ạ t quá số nguyên d ư ơ n g N cho t r ư ớ c . uses c r t ; const n=2500; var a: a r r a y [ l . . n ] o f b o o l e a n ; iJ: integer; begin clrscr; a [ l ] : = False; for i : - 2 t o n do a [ i ] : = True; for i : = 2 t o n d i v 2 do f o r j : = 2 t o n div i do a [ i * j ] : = False; f o r i: = l t o n d o if a[i] t h e n w r i t e ( i : 5 ) ; readln end. 7.1.2. M á n g hai c h i ề u T r o n g t h ự c t ế , c h ú n g t a t h ư ờ n g phái l à m việc v ớ i các b á n g số liệu g ồ m các h à n g và c ộ t ( v í d ụ b á n g đ i ể m của học s i n h ) . Đ ế b i ế u t h ị b á n g s ố , ta d ù n g m á n g hai c h i ề u với hai chi s ố , chi s ố đ ầ u đế chí h à n g , chí s ố t h ứ hai cíế chi c ộ t . G i ố n g n h ư m á n g m ộ t c h i ề u , có hai cách khai báo m á n g hai c h i ề u : • Cách 1 . V a r a : a r r a y [ 1 . . 3 0 , 1 . . 5 0 ] of real; • Cách 2. Const mmax=30; nmax=50; T y p e b a n g l = a r r a y [ l . . m m a x , l . . n m ; i x ] o f real; b a n g 2 = a r r a y [ 1 . . 2 0 , 1 . . 3 0 ] o f i nt e g e r ; Var a : b a n g l ; b: b a n g 2 ; 145
  5. Hai cách trên đ ề u khai báo biến a là m ệ t máng hai chiều c á c s ố thực có chỉ s ố hàng chạy từ Ì đến 30 và chi s ố cột chạy từ Ì đến 50 (tối đa có 30 hàng, 50 c ộ t ) . Khi lập trình ta nên dùng máng một c h í ỉ u , không nên dùng các máng từ hai chi s ố trớ lên. Lý do là máy tính l à m việc nhanh hơn với máng một chiều, tiện lợi trong việc c h u ẩ n hoa' chương trình, d ễ dàng chuyến đối chương trình giữa các ngôn ngữ lập trình ( P a s c a l , c, Fortran, B a s i c ) . V e nguyên t ắ c d ể chi phần tụ ớ hàng i, cột j c ủ a m»*g hai chiều a ( g ồ m m hàng, n c ộ t ) , ta chí c ầ n dùng một chi s ố k, k được tính theo công thục Ẫ: =: ( í — 1) * n «f j. Khi i — 1,2,... , m ; j Ì , 2 , . . . , n thì k — 1 , 2 , . . . , m * n. V í d ụ . V i ế t ehưcrng trình đ ọ c s ố liệu từ bàn phím vào một máng hai eh&ti. T í n h và in ra màn hình tống c ủ a từng bàng, tổng c ủ a từng cột và tống c ủ a cá máng. Uses C r t ; Var i, j , m, n : Integw; s , tong : Real; a : Array(1..2c"l..30] of Real; Begin C l f S e r ; W r i t e C V a o kích thuoc cua mang m, n = ' ) ; Readln(m,n); For i : = 1 to m do For j : = 1 to n do begin W r i t e ( ' a ( ' , i , \ \ j , ' ] = ' ) ; Readln(a[i,il); end; Writeln; tong : = 0; For i : = 1 to m do begin s : = 0; For j : = 1 to n do s s + afij]; tong : = tong + s ; 146
  6. Writeln('Tong hang = ',s:l:2); end; Writeln; For j : = 1 to n do begin s : = 0; For i : = 1 t o m do s : = s + a [ i j ] ; W r i t d n ( T o n g cot ' j , ' = \ s : l : 2 ) ; end; Writeln; Writeln('Tong toan mang = ' , t o n g : l : 2 ) , Readin; End. 7.2. K I Ể U X Â U K Ý T ự 7 . 2 . 1 . D i n h nghĩa Dữ liệu kiểu xâu ký tự (String type) là một dãy các ký tự bất kỳ. Dữ liệu k i ể ư x â u ký tự có nhiều điếm tương tự như kiểu máng nhưng cũng có điểm khác nhau là số ký t ự trong một biến kiểu xâu ký tự có thể thay đ ố i , còn số phần tử của kiểu máng luôn luôn cố định. M ộ t biến kiểu Char là một xâu ký t ự có độ dài một. Một biến kiểu xâu ký t ự được khai báo bằng từ khoa S t r i n g theo sau là số ký tự cực đụi có t h ể có của xâu đặt trong hai dấu ngoặc vuông Ị Ị: Var Tên biến : StrrngỊđộ dài cực đụi]; Xâu ký t ự có chiều dài tối đa là 255. Khi khai báo, ta cũng có t h ế không chi ra độ dài cực đ ụ i . V í d ụ : Var HoTen : string[20]; St : string; Câu lệnh này khai báo biến HoTen có thế chứa tối đa 20 ký t ự , biến St chứa t ố i ổa 255 ký t ự . Đế ch! ký t ự t h ứ i trong xâu ký t ự St, ta dùng ký hiệu StỊiỊ (giống như ký hiệu phần từ t h ứ i cùa một máng). Ví d ụ : 147
  7. St := 'ABCDE'; Writeln(stL3J J , sẽ in ra ký tự c, còn W r i t e ( S t ) hay Writeln(St) sẽ cho ta ABCDE. 7.2.2. Cách hố trí bô nhớ của xâu ký tư Giá sứ biến HoTen ớ trên được gán giá tri HoTen := 'Nguyen V a n ' ; Khi đó phần t ứ t h ứ 0 cùa xâu ký tự HoTenỊO] chứa ký tự mà mã thập phân ASCII cùa nó là số ký tự hiện có trong xâu ký t ự (tức là Chr(lO)). Tiếp theo, từ HoTenỊl] đến HoTenỊlO] chứa các ký tự N g u y e n V a n . Các phần t ứ từ H o T e n Ị l l ] đến HoTen[20] là không xác đinh. Như vậy cíộ dài thực của xâu ký tự được tìm bang biếu thức độ dài : = Ord(HoTen[0]); Hoặc nếu biết độ dài ta có thể tìm ra ký t ự biểu diễn độ dài HoTenỊO] : = Chr(độ dài); 7.2.3. Các phép toán trên xâu ký tư - Phép gán: B i ế n : = B i ể u thức. Ví d ụ : HoTen := 'Nguyen Van A n ' ; - Phép nối xâu ký tự: ký hiệu bới d u cộng ( + ) . V í d ụ : 'Turbo ' + ' P a s c a l ' = 'Turbo P a s c a l ' . - Các phép toán so sánh: khi so sánh hai xâu ký t ự , các ký tự của hai xâu được so sánh từng cặp một từ trái sang phái theo giá tri cùa báng mã ASCII. Nếu hai xâu có độ dài khác nhau, song số ký tự giống nhau đến dô dài xâu ngắn nh t thì xâu có độ dài ngắn hơn được xem là bé hơn. V í d ụ : 'ABC' = ' A B C cho giá trị là True. 'ABC = 'AB' cho giá trị là False. 'ABCD' < 'ABED' cho giá trị là True. 148
  8. 'ABC > 'AD' cho giá t r ị là False. 7.2.4. Các thủ túc chuẩn và hàm chuẩn xử lý xâu kỷ tư Một trong những ưu điếm cùa Turbo Pascal l à có sẵn nhiều thú t ụ c và hàm chuẩn để xử lý xâu ký tự. • T h ủ túc D e l e t e ( S t , V t , S o k t ) . Các tham số: Sỉ là biến kiểu xâu ký tự. V t và Sokt là các biếu thức nguyên. Thú tục này sẽ xoa t ừ vi t r í V t của xâu ký tự St một số ký tự là Sokt. Ví d ụ : nếu St = 'abcdefgh' thì Del ete(St,3,4) sẽ xoa 4 ký tự của St kế từ vi t r í t h ứ ba, kết quá ta nhận đưạc St — 'abgh'. • T h ú túc l n s e r t ( S t 2 , S t l , V t ) . Các t h a m số: St2 là biếu thức kiểu xâu ký tự, S t l là biến kiểu xâu ký tự, V t là biểu thức kiểu nguyên. T h ú t ụ c này sẽ chèn xâu ký tự St2 vào xâu ký tự S t l kế từ vị t r í V t . Ví d ụ : S t l = ' N g u y e n Dung', St2 = ' V a n ' ; lệnh lnsert(St2, S t l , 8) cho ta S t l = 'Nguyen Van D u n g ' . Trường hạp V t vưạt quá độ dài cua S t l thì St2 sẽ đưạc ghép nối tiếp vào sau su. Ví d ụ : S t l =: ' A B C D ' thì lnsert('XYZ', S t l , 6) cho kết quá su == ' A B C D X Y Z ' . • T h ú túc S t r ( G i a T r i . S t ) . Các t h a m số: GiaTri là biếu thức nguyên hay thực có ghi dạng in ra, St là biến kiểu xâu ký tự. Thú t ụ c này sẽ đoi giá tri số GiaTri thành xâu ký tự rồi gán cho St. Ví d ụ : i = 45, Str(i:3,St) cho ta St = ' 45' (cho ba ký tự, ký tự đầu là d ấ u cách). Giá sử X = 123.5678999 thì Str(x:íơ:5,5t) cho St = ' 123.56789 . • T h ú túc V a l ( S t , S o , L o i ) . Các tham số: St .là biểu thức kiểu xâu ký tự, So là biến nguyên hay thực, Loi là biến nguyên. Thú tục này đổi xâu ký t ự St biếu diễn một số (nguyên hay thực) 149
  9. thành ra số và gán cho biến So , nếu phép biến đ ổ i đúng thì Loi = 0, nếu phép biến đổi sai (do St không biêu diễn đúng số nguyên hay số thực) thì Loi nhận giá trị bằng vị trí cùa ký tự sai trong xâu St. Ví d ụ : St = '234', k và I là hai biến nguyên thì Val(St,k,l) cho k = 234, I = 0. Giá sứ Sỉ = '234a6' thì Val(St,k,l) cho k không xác đinh và I = 4. • H à m L e n g t h ( S t ) cho độ dài của xâu ký t ự St. V í d ụ : St = 'Viên T o a n ' t h ì Length(St) = 9. • H à m C o p y ( S t , V t , S o k t ) . Các t h a m số: St là xâu ký t ự , V t và Sokt là các biếu thức nguyên. Hàm này sao chép Sokt ký tự kể từ vi t r í V ỉ của xâu St sang một xâu ký t ự mới. Nếu Vt + So kt > Length(St) thì Co py chỉ sao chép các ký tự nằm trong xâu St. Còn nếu V t > L e n g t h ( S t ) thì Co py sẽ cho một xâu ký t ự rỗng. Ví d ụ : St = 'abcdefgh' thì S t l : = Copy(st,3,4) sẽ cho xâu ký tự mới S t l = ' c d e f . • H à m C o n c a t ( S t l , S t 2 , . . . , S t n ) sẽ ghép nối t ặ t cá các xâu ký t ự S t l , St2, ... , Stn thành m ộ t xâu ký tự theo t h ứ tự đã viết. Nếu t ô n g số chiêu dài của các xâu ký t ự lớn hơn 255 thì máy báo lỗi. Ta cũng có thể dùng phép cộng đế ghép nối các xâu ký tự. • H à m vi trí P o s ( S t l , S t 2 ) cho ta vị t r í đầu tiên cùa xâu ký tự S t l gặp trong xâu ký tự St2. Nếu "không t ì m thặy, Pos cho giá tri bằng 0. V í du 1 . Viết chương trình in lên màn hình m ộ t dòng chữ chạy từ phái sang trái cho đến khi- ặn một phím bặt kỳ. Uses Crt; 150
  10. Var i, d : I n t e g e r ; St, S t l , St2 : String; Begifi O f S c r ; St : = ' T r u n g t a m Khoa hoc T u nhiên va Cong nghe Quoc gia * '; d := Length(St); Repeat G o t o X Y ( 1 5 , l l ) ; W r i t e ( S t ) ; Delay(350); Stl := Copy(St,2,d-l); St2 : = Copy(St,l,l); St : = S t l + St2; Until KeyPressed; End. Giải thích. H à m D e l a y ( n ) : dừng chương trình trong thời g i a n n m i l i giây. Hàm Key pressed: c h o giá t r ị T r u e khi một p h í m dược ấn. V í du 2. N h ậ p v à o t ừ b à n p h í m d a n h sách học sinh m ộ t l á p , s ắ p x ế p l ạ i d a n h sách t h e o t h ứ t ự a b c . var h t : a r r a y [ 1 . . 5 0 ] o f s t r i n g [ 2 3 ] ; t: string[23Ị; i,j,n: integer; BEGIN w r i t e ( ' S o hoc s i n h : ' ) ; r e a d l n ( n ) ; f o r i: = l t o n d o b e g i n w r i t e ( ' ỉ \ l h a p HS t h u : '); readln(htỊiỊ); end; for i : = 2 t o n do for j : = n d o w n t o i do if h t [ j - l ] > h t [ j ] t h e n begin t : = h t [ j - l Ị ; h t [ j - l ] : = h t [ j Ị ; h t [ j ] : = t end; writeln(' K é t q u a sap xép la '); f o r i: = l t o n d o w r i t e l n ( h t [ i ] ) ; 151
  11. readln; END. V í du 3 . V i ế t h à m c h u y ể n đ ố i x â u ký t ự t h à n h c h ữ hoa, xâu ký t ự t h à n h c h ữ t h ư ờ n g . Function ChuHoa(s: string): string; var i : b y t e ; begin for i : = l t o l e n g t h ( s ) d o s[i] : = u p c a s e ( s Ị i Ị ) ; C h u H o a : = s; end; Function ChuThuong(s:string): string; var i: b y t e ; begin f o r i: = l t o l e n g t h ( s ) do if s[i] in ['A .'Z ] then s[i] : = chr(ord(s[i])+32); C h u T h u o n g : = s; end; 7.3. D Ữ L I Ệ U K I Ể U T Ậ P H Ợ P 7,3.1. Dinh nghĩa D ữ liệu k i ể u t ậ p h ạ p ( S e t ) là m ộ t t ậ p h ợ p cua n h ữ n g d ữ liệu c ù n g t h u ộ c m ộ t k i ê u rời r ạ c , g ử i là kiểu cơ sờ cùa kiểu t ậ p hợp. K i ể u cơ sớ có t h ể là k i ể u n g u y ê n , k i ể u ký t ự , k i ể u lôgic, k i ể u l i ệ t kê hay k i ể u đ o ạ n c o n . T r o n g T u r b o Pascal, số phần t ử cực đ ạ i cùa m ộ t t ậ p h ợ p là 2 5 6 p h ầ n t ứ . Một kiểu t ạ p h ợ p đ ư ợ c khai báo b ớ i : S e t of K i ể u co" sỏ'; Ví dụ: Type Chuso = S e t of 0 .. 9; 1K9
  12. ChuCaiHoa = Set of 'A' .. 'Z'; Var So : ChuSo; Chu : ChuCaiHoa; Mau : S e t of (Xanh,Do.Tim,Vang); Một tập hạp được xác đinh bằng cách liệt kê các phần tứ cùa nó trong hai dấu móc vuông. Với ví dụ ớ trên, ta có thể thực hiện các phép gán sau: So := [2,3,6..9]; Chu :« C'A'.'C .. »F»] ; Vi t r í các phần t ừ trong tập hạp không có ý nghĩa. Tập hợp rỗng được ký hiệu là Ị Ị và nó được xem là cùng kiểu với m i tập hợp. 7.3.2. Các phép toán trên táp ho*p a ) Các phép toán quan hệ = cho giá trị True nếu hai t ậ p hợp bằng nhau, < > cho giá tri True nếu hai tập hợp khác nhau, = B cho True nếu B là tập con cùa Ả, Chú ý: không có phép toán < (nhó hơn) và > (lớn hơn). Đế k i ể m tra xem tập A có thực sự nằm trong tập B hay không ta sứ dụng câu lệnh If (A < > B) and (A < = B) then Writeln('A là tập con thực sự cùa B') ; b) Phép toán In Phép toán I n dùng đe xét xem một phần tứ nào đó có nằm trong tập hợp không. Nếu phần t ứ đó có nằm trong tập hạp thì phép toán cho giá tri True, ngược lại cho giá tri False. Ví dụ: >c> In [ ' A ' . ' C ' D ' ] cho giá tri T r u i , 'N' In C'Y' , ' ý ' ] cho giá trị False.
  13. c ) Các phép toán hợp, giao, hiệu A + B là hợp của A và B, A * B là giao của A và 5 , A — B là hiệu cùa Ẩ và s , Ví d ụ : nếu A = [1,3^,5,7,9], B = [ 5 , 6 , 7 , 8 ] thì A + B = [1,3,5,6,7,8,9], A* B = [5, 7], = [1,3,9]. V í d u . Viết chưcrng trình nhập vào một chữ cái. Xét xem chữ cái đó là nguyên âm hay phụ âm. Uses Crt; Var ChuCai, NguyenAm : Set of Char; Ch : Char; Begin ChuCai : = [ ' a ' . / z ' / A ' . / Z ' ] ; NguyenAm : = [ ' A V E ' . T . ' O ' , U']; Repeat ClrScr; Write('Nhap mot chu cai: ' ) ; Readln(Ch); Until Ch In ChuCai; Writeln; If Upcase(Ch) In NguyenAm then Writeln(Ch,' la mot nguyên am.') Else Writeln(Ch,' la mot phu a m . ' ) ; Readln; End. U p c a s e ( C h ) là hàm đối chữ cái thường thành chữ cái hoa. BÀI TẬP M á n g mót chiều 7 . 1 . Viết chương trình nhập vào một dãy n số a [ l ] , aị2] a(n] (kiểu Integer hay Real) và in ra màn hình các thông tin sau : - T ổ n g các phần tử cùa dãy. 154
  14. - Số lưạng số hạng dương và t ố n g của các số hạng dương. - Số lượng số hạng âm và t o n g cùa các số hạng âm. - Trung bình cộng cùa dãy. - Chi số của số hạng dương đầu tiên của dãy. - Chí số cứa số hạng âm đầu tiên của dãy. - Chi số cùa số hạng dương cuối cùng cùa dãy. - Chí số cùa số hạng âm cuối cùng; của dãy. - Số hạng lớn nhất của dãy và chi số cùa nó. - Số hạng nhó nhất cùa dãy và chí số cùa nó. - Số hạng âm lớn nhất cùa dãy và chí số của nó. - Số hạng dương nhó nhất cùa dãy và chi số cùa nó. - Số lượng số hạng dương liên tiếp nhiều nhất. - Số lượng số hạng dương liên tiếp có tổng lán nhất. - Số lượng số hạng âm liên tiếp nhiều nhất. - Số lượng số hạng âm liên tiếp có t ô n g lớn nhất. - Số lượng các số hạng liên tiếp đan dấu nhiều nhất (dãy số hạng liên tiếp được gọi là đan dấu nếu tích hai số liên tiếp âm). - Số lượng các phần t ứ không tăng nhiều nhất. - Số lượng các phần t ứ giám nhiều nhất. - Số lượng các phần t ử tăng nhiều nhất. - Số lượng các phần tử bằng giá trị X (nguyên) cho trước. - Số lượng các phần tứ khác giá tri X (nguyên) cho trước. - Số lượng các phần t ứ > giá tri X (nguyên) cho trước. - Chuyến các số hạng dưcrng cùa máng lên ổầu máng và in máng ra màn hình. 7 . 2 . Viết chưorng trình nhập vào từ bàn phím một dãy số có N phần tứ và một số X. Dò tìm xem trong dãy có hai phần tứ liên tiếp nào mà tống của chúng bằng X không ?
  15. 7.3. V i ế t c h ư ơ n g t r ì n h n h ậ p v à o t ừ bàn p h í m m ộ t d ã y số n g u y ê n . In ra m à n hình t ầ n s u ấ t ( s ố l ầ n x u ấ t h i ệ n ) của các số t r o n g dãy số đ ó . 7.4. N h ậ p m ộ t số nguyên d ư ơ n g n < 2 0 0 và hai dãy n số nguyên a [ l Ị ... a[n] và b [ l ] b ị n ] . T h ô n g báo ra m à n hình x e m hai dãy đ ó có c ù n g các s ố h ạ n g n h ư n h a u và chi khác nhau về t h ứ t ự sắp x ế p hay k h ô n g ? 7.5. C h i ề u cao của các học sinh t r o n g l á p là hi, h , . • •, 2 h, n Hãy t í n h c h i ề u cao t r u n g bình ( c ) và đ ộ lệch ( / ) theo công thưc: c = (hi + h 2 H + h )/n, n 2 ( h i - c) + (h 2 - cf + • • • + (h n - c f s = • n - Ì 7.6. D ù n g m á n g m ộ t c h i ề u đ ể lưu t r ụ m ộ t số nguyên d ư a n g l ớ n ( c ó t h ể có h à n g ngàn c h ụ s ố ) . L ậ p t r ì n h : - T h ự c hiện phép c ộ n g hai số nguyên d ư ơ n g cỡ l ớ n . - T h ự c hiện phép t r ừ hai số nguyên d ư ơ n g cỡ l ớ n . - T h ự c hiện phép nhân hai số nguyên d ư ơ n g cỡ l ớ n . 7 . 7 . P h ò n g " T o á n học ứ n g d ụ n g " t ố chức sinh h o ạ t khoa học h à n g t u ầ n v à o s á n g t h ứ ba ( t r ừ ba t h á n g h è ) . H ã y in ra các ngày t r o n g n ă m 1998 có sinh h o ạ t khoa học, b i ế t r ằ n g ngày 1 / 1 / 1 9 9 8 là ngày t h ú i ! 5. M á n g hai chiều 7 . 8 . N h ậ p m á n g hai c h i ề u A g ồ m in h à n g , ri c ộ t t ừ bàn p h í m . - T i m giá t r ị l ớ n n h ấ t và n h ó n h ấ t t r ê n m ỗ i h à n g , m ỗ i c ộ t cùa A c ù n g v ớ i vi t r í ( c ộ t , h à n g ) c ủ a các giá t r i này. 156
  16. - Tim phần từ có giá trị lớn nhất và nhó nhất của máng A cùng với vị trí (hàng, cột) của hai phần tứ này. - Trong máng A có bao nhiêu phần tử bằng phần tứ lớn nhất. - Lập một máng B mà mỗi cột cùa A thành một hàng của B, mỗi hàng cùa A thành một cột của B. 7.9. Vào từ bàn phím danh sách một lớp cùng điếm thi môn Toán và điếm thi môn Văn của từng học sinh. Tính điểm trung bình (bằng điếm Toán cộng vái điểm Văn rồi chia đôi), xếp loại cho các học sinh trong một lớp theo điểm trung bình và in các thông tin thệng kê sau : - Sệ lượng các học sinh được xếp loại Giỏi, Khá, Trung bình, Yếu cùng t! lệ phần trăm tương ứng. Học sinh yếu : điếm tru ng bình < 5,học sinh trung bình: điếm tru ng bình từ 5 đến 6.5, khá: trên 6.5 cho tới dưới 8, giói: từ 8 trớ lên. - SỐ lượng các học sinh dưới điếm tru ng bình môn Văn, môn Toán cùng ti lệ phần trăm tương ứng. 7.10. Viết chương trình tạo và in ra màn hình ma trận đan vị cấp N < 23, N nhập từ bàn phím. 7 . 1 1 . Viết chương trình nhập vào từ bàn phím một ma trận vuông AỊl..n,l..n] và in ra màn hình tệng các phần tứ trên đường chéo chính, tông các phần tứ trên đường chéo thứ hai. 7.12. In ra các phần tứ cực tiểu của mang A[l..m,l..n] (phần tử gọi là cực tiếu nếu nó nhó han hay bằng các phần tử kề nó). 7.13. Phần tứ A[i j ] gọi là phần từ yên ngựa nếu nó là phần tứ lán nhất của dòng i và là phần tứ nhó nhất của cột j (hoặc nó là phần tử nhó nhất dòng i và là phần tứ lớn nhất cột j ) . In ra tất cá các phần tử yên ngựa cùa máng A[l..m,l..n]. 157
  17. 7 . 1 4 . Sắp xếp má ng A [ l . . m , l . . n ] sao cho cá c phần t ứ có giá trị tăng dần khi đi t ừ trái sang phái và t ừ trên xuống dưới. 7 . 1 5 . Sắp xếp má ng A [ l . . m , l . . n ] sao cho cá c phần t ứ có giá tri tâng dần khi đi theo chiêu xoáy trôn ố c t ừ ngoài vào trong theo chiều kim đồng hồ hoặc theo chiều ngược vói chiều quay kim đồng hồ. Xâu ký tự 7.16. Cho một xâu ký tự gồm các từ, chẳng hạn: St = 'Thu do Ha noi'. Lập m ộ t thú t ụ c đế bó bớt các dấu trống giữa các t ừ sao cho các t ừ chí cách nhau đúng m ộ t ký t ự t r ố n g . 7 . 1 7 . Viết chương trình nhập vào t ừ bàn phím H ờ và tên Việt nam, sau đó in phần tên ra màn hình. V í d ụ : nhập Le V a n T a m sẽ in ra T a m . 7 . 1 8 . Viết chương trình nhập vào t ừ bàn phím m ộ t xâu ký t ự bằng các ký t ự thường hay hoa và in ra màn bình xâu đó bằng các ký tự hoa. V í d ụ : nhập Trung t a m , in ra T R U N G T A M . 7 . 1 9 . Viết chương trình dọc vào t ừ bàn phím m ộ t câu được kết thúc bằng dấu chấm. Hãy đếm t r o n g câu có bao nhiêu từ. Đế đ a n gián ta định nghĩa từ là m ộ t dãy liên t ụ c các kí t ự khác khoáng t r ắ n g , khoáng trắng là dấu tách t ừ duy nhất. 7 . 2 0 . Nhập một số thập phân bất kỳ. V i ế t ra màn hình dạng chữ cùa số thập phân. V í d ụ nếu nhập 13.24 thì phái thông báo ra màn hình dòng chữ : mười ba phay hai mươi bốn. 7 . 2 1 . Nhập t ừ bàn phím một xâu ký t ự s. Xét xem có hay không một xâu X sao cho s là ghép cùa một số lần liên tiếp của X. V í dụ nếu s = abcabcabc thì X = abc; còn nếu s = ababc thì không có xâu X. Thông báo kết quá ra màn hình. 158
  18. 7.22. Nhập m ộ t xâu s từ bàn phím. Xâu s gồm n số thực được viết cách nhau bới dấu phẩy, VI dụ s = '3.2,8.456,-3.43,0.0123,- 8.87'. Hãy chuyển n số từ xâu vào một máng số thực AỊn]. 7.23. Lập trình nhập vào t ừ bàn phím danh sách học sinh một lớp, sắp xếp lại danh sách theo t h ổ tự abc của Tên, nếu trùng tên thì sắp theo t h ổ tự abc cùa phần Họ. 7.24. V i ế t c h u ô n g trình đổi một số nguyên dưcmg từ hệ cơ t ố 10 sang hệ co so bất kì (hệ ca số 2, cá số 8, ca số 16). 159
  19. Chương 8 CHƯƠNG TRÌNH CON " Khi lập trình, có tVhững đoạn chương trình cần dùng nhiều lần. Đế tránh viết lại đoạn này, ta nên viết đoạn chưcrng trình này thành một chương trình con và mỗi lần cần thì gọi nó. Chương trình con còn đế mẫu hoa một chương trình làm công việc nào ổó. Người khác dùng chương trình con chi cần biết cách truyền số liệu vào và lấy kết quá ra, còn không phái quan tâm đến thuật toán trong chương trình con. Khi lập những chương trình lán, để dễ dàng quán lý gỡ rối và hiệu chinh chương trình, ta nên phân chương trình thành nhiều công việc độc lập, mỗi công việc là một chương trình con. Chương trình con có hai loại: hàm và t h ú t c . 8.1. H À M VÀ T H Ủ T Ụ C Cấu trúc của hàm có dạng: Function Tên_hàm(Tham_số-l:kiếu;Tham_số_2:kiểu;...):kiếu; Var khai báo các biến c c bộ; begin Các lệnh tính toán; Tên-hàm : = biểu thức giá t r i ; •nể; Lời gọi hàm: Tên_hàm(danh sách các tham số thực sự); Cấu trúc cùa thủ túc có dạng: Procedure Tên_thú_t c (tham_số_l: kiểu; tham_số_2: kiểu;...; Var tham_số_3:kiếu; Var tham_số_4:kieu; ... ); 160
  20. Var khai báo các biến c ụ c b ộ ; begin Các lệnh t í n h t o á n ; end; Lời g ọ i t h ú t ụ c : T ê n _ t h ú - t u c ( d a n h sách các t h a m số t h ự c s ự ) ; Các t h a m s ố sau t ê n h à m và t ê n t h ú t ụ c g ọ i là các tham số hình thức ( h a y còn g ọ i là đ ố i ) . T r o n g t h ủ t ụ c , các t h a m số hình t h ứ c có hai l o ạ i : các t h a m s ố đ ư ợ c khai báo sau t ừ khoa Var g ọ i là t h a m số biến, các t h a m s ố khai báo k h ô n g có V a r g ọ i là tham số giá trị. T r o n g h à m chí có t h a m số giá t r i . S ự khác n h a u cơ bán giữa h à m và t h ú t ụ c : h à m cho ra m ộ t giá t r ị t h ô n g qua t ê n h à m và h à m có t h ê t h a m gia v à o các b i ế u t h ứ c t í n h t o á n , còn t h ú t ụ c c h o ra n h i ề u giá t r i t h ô n g qua các t h a m số b i ế n . T r o n g t h â n h à m bao g i à c ũ n g có lệnh gán giá t r ị c h o t ê n h à m . T h a m số t h ự c sự là các t h a m s ố d ù n g t r o n g lời g ọ i cùa h à m hay t h ú t ụ c . D a n h sách các t h a m số t h ự c sự t r o n g lời gọi phái t ư ơ n g ứ n g v ớ i d a n h sách các t h a m số hình t h ứ c t r o n g khai báo c h ư ơ n g t r ì n h con và c h ú n g phai t ư ơ n g ứng về k i ể u . T r o n g t h ú t ụ c , các t h a m số giá t r i t h ư ờ n g là các b i ế n đ ế chứa d ữ liệu đưa vào t h ú t ụ c ; các t h a m số biến là các biến mà k ế t quá t í n h t o á n c ủ a t h ú t ụ c sẽ c h ứ a v à o đ ó khi ra khói t h ú t ụ c ; t a có t h ệ d ù n g c h ú n g đ ể t í n h t o á n t i ế p . B i ế n t o à n c ú c , b i ế n cúc bô và co* c h ế t r u y ề n t h a m s ố B i ế n t o à n c ụ c là biến khai báo ờ đ u c h ư ơ n g t r ì n h c h í n h , t ồ n t ạ i t r o n g s u ố t t h ờ i g i a n l à m việc c ủ a c h ư ơ n g t r ì n h . Có t h ế sứ d ụ n g và l à m t h a y đ ố i giá t r ị c ủ a b i ế n t o à n c ụ c n h ờ các 161
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
5=>2