Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
274,19 KB
Nội dung
Lập trình bằng Turbo Pascal j:= i-1; while x < a[j] do begin a[j+1]:= a[j]; j:= j-1; end; a[j+1]:= x; end end; 4.3 Phơng pháp chọn trực tiếp. 4.3.1 Mô tả Phơng pháp ny giống nh sắp lại ton bộ các quân bi theo thứ tự bằng cách rải rộng trên mặt bn v nhặt dần từ con bi thấp nhất trở lên. Cụ thể l: chọn phần tử nhỏ nhất trong dãy nguồn, xếp nó vo vị trí đầu tiên trong dãy đích. Đây l phần tử thứ nhất v cũng l phần tử cuối cùng của dãy đích. Chọn phần tử nhỏ nhất trong dãy nguồn còn lại, đây l phần tử nhỏ thứ hai, xếp nó vo vị tri thứ hai v cũng l vị trí cuối của dãy đích vo lúc ny. Lặp lại việc ny cho đến khi hết dãy nguồn. Để tiết kiệm chỗ, ta cũng xếp dãy đích v dãy nguồn liền nhau trong mảng, giống nh trong phơng pháp trớc. Do đó, ở bớc thứ i, thao tác "xếp vo cuối dãy đích" chính l "đổi chỗ cho a[i]". Xuất phát Dãy nguồn Dãy đích rỗng Bớc 1: - Chọn phần tử bé nhất từ dãy nguồn, - Đổi chỗ cho phần tử a[1] . Dãy đích Dãy nguồn a 1 Chọn phần tử min Bớc i: - Chọn phần tử bé nhất từ dãy nguồn còn lại l a[i], a[i+1], , a[n]. - Đổi chỗ cho a[i]. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 77 Lập trình bằng Turbo Pascal Dãy đích Dãy nguồn a i Chọn phần tử min Lặp cho đến khi hết dãy nguồn, i = n. So sánh với phơng pháp chèn: - Phơng pháp chèn l lấy phần tử đầu tiên trong dãy nguồn còn lại, chèn vo đúng chỗ trong dãy đích. Lm việc với dãy đích l chính. - Phơng pháp chọn l lấy phần tử nhỏ nhất trong dãy nguồn còn lại xếp vo cuối dãy đích. Lm việc với dãy nguồn l chính. 4.3.2 4.3.3 Minh hoạ: Xuất phát: 44 55 12 42 94 18 06 67 Bớc 1: 06 / 55 12 42 94 18 44 67 Bớc 2: 06 12 / 55 42 94 18 44 67 Bớc 3: 06 12 18 / 42 94 55 44 67 Bớc 4: 06 12 18 42 94 55 44 67 Bớc 5: 06 12 18 42 44 / 55 94 67 Bớc 6: 06 12 18 42 44 55 / 94 67 Bớc 7: 06 12 18 42 44 55 67 / 94 Bớc 8: 06 12 18 42 44 55 67 94 Thủ tục chi tiết. for i:=1 to n -1 do begin chọn phần tử min của dãy a[i],a[i+1], ,a[n] đổi chỗ cho a[i] end var i,j,k: integer; x: real; begin for i:=1 to size-1 do begin k:=i; x:=a[i]; for j:=i+1 to size do if a[j]<x then begin k:=j; x:=a[j]; end; a[k]:=a[i]; a[i]:=x; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 78 Lập trình bằng Turbo Pascal end end; Câu hỏi v bi tập 1. Các phần tử mảng có thể l những kiểu gì? Chỉ số của mảng có thể l những kiểu gì? 2. Các khai báo kiểu mảng dới đây đúng hay sai, mô tả rõ cấu trúc mảng. Array [10 0] of Real; Array ['0' '9'] of Real; Array ['a' 'z'] of Char; Array [A Z] of Integer; Array [(A,B,C)] of (-10 10); Array [Byte] of Boolean; Array [Integer] of Integer; Array [Char] of Byte; 3. Để xử li mọi phần tử của mảng thờng dùng vòng lặp gì? Có thể dùng những vòng lặp no? 4. Trong Pascal kiểu mảng có thể nhiều nhất l mấy chiều. 5. Thế no l mảng sắp theo u tiên hng, u tiên cột. Mảng trong Pascal thuộc kiểu no? Thực hnh. 1. Nhập dãy n số thực. Tính trung bình cộng, tìm trung vị (median), tìm phần tử lớn nhất, nhỏ nhất; tìm phần tử lớn thứ nhì; đếm số phần tử dơng, âm; Tìm chỉ số của phần tử âm đầu tiên, cuối cùng; kiểm tra dãy đan dấu. 2. Nhập dãy số; trich ra dãy con l cấp số cộng, cấp số nhân có nhiều phần tử nhất. 3. Cho số nguyên dơng hệ 10, hãy in ra số đó ở hệ 2, 8, 16. 4. Nhập dãy n giá trị quan trắc của một đại lợng ngẫu nhiên. Tìm phơng sai v độ lệch tiêu chuẩn. 5. Tính tích vô hớng của hai véc tơ 6. Nhập dãy n số v một số x. Tìm xem có bao nhiêu số trong dãy trùng với x. Chúng ở các vị trí no? 7. Cho ma trận các số nguyên A[1 7; 8 14] với A[i,j]:= i*j. Tính tổng các phần tử trên một cột, trên một hng, trên đờng chéo chính, trên đờng chéo phụ. 8. Cho ma trận vuông. Tách thnh hai ma trận tam giác trên v tam giác dới rồi in ra mn hình. 9. Nhập từ bn phím một dãy số nguyên, in ra các giá trị khác nhau kèm số lần xuất hiện. 10. Viết chơng trình sắp xếp một dãy số, dùng các thủ tục a -) chèn trực tiếp, b -) chọn trực tiếp, Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 79 Lập trình bằng Turbo Pascal c -) đổi chỗ trực tiếp 11. Nhập hai dãy số nguyên cùng có n phần tử. Kiểm tra xem có phải một dãy chỉ l hoán vị của dãy kia hay không. 12. Cho n điểm khác nhau p i = (x i , y i ) v đờng gấp khúc khép kín nối các điểm ny theo thứ tự từ p 1 , p 2 , , p n , p 1 . a) kiểm tra xem đờng gấp khúc có tự cắt không. b) nếu đờng gấp khúc không tự cắt thì có phải l đa giác lồi không c) tìm các đỉnh tạo thnh đa giác lồi bao bọc cả n điểm. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 80 Lập trình bằng Turbo Pascal Chơng 7 Kiểu xâu kí tự 1. Cú pháp và cấu trúc. 1.1 Cú pháp. Xâu kí tự l một kiểu dữ liệu nhận giá trị l dãy kí tự ASCII bất kì. 1.1.1 1.1.2 Khai báo kiểu v biến Cú pháp khai báo kiểu xâu kí tự: TYPE tên kiểu = STRING ; hoặc TYPE tên kiểu = STRING [ độ di cực đại] ; Trong đó độ di cực đại l một số n nguyên dơng, n <= 255. Độ di của một biến xâu kí tự đợc hiểu l số kí tự của dãy, kể các các kí tự khoảng trống xen giữa hoặc nằm ở hai đầu. Với cách khai báo thứ nhất, không ấn định độ di cực đại thì mặc định l độ di cực đại bằng 255. Ví dụ: TYPE HọVTên = STRING[20] ; DòngMnHình : String [80] ; Khai báo biến: VAR SV1, SV2 : HọVTên ; Dòng1, Dòng2: DòngMnHình ; Cũng có thể khai báo biến kiểu xâu kí tự bằng mô tả kiểu trực tiếp: VAR SV1, SV2 : String [20] ; Dòng1, Dòng2: String [80] ; Giá trị của biến xâu kí tự. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 81 Lập trình bằng Turbo Pascal Một hằng xâu kí tự l một dãy kí tự ASCII nằm trong cặp dấu nháy đơn. Cú pháp ngôn ngữ Pascal quy định viết giá trị xâu kí tự trong cặp dấu nháy đơn (single quote). Ví dụ, Turbo Pascal, Dai hoc Quoc gia Ha Noi, v.v. Xâu rỗng l xâu không có kí tự no v có độ di bằng 0. Viết xâu rỗng chỉ có cặp dấu nháy đơn liền nhau, không có kí tự no bên trong. Cần chú ý phân biệt xâu rỗng với xâu chỉ gồm các kí tự khoảng trống. Xâu rỗng: . Xâu chỉ có một kí tự khoảng trống: . 1.1.3 1.2.1 Viết ra, đọc vo một xâu kí tự. Viết ra. Có thể in biểu thức xâu kí tự ra mn hình, máy in hay tệp văn bản bằng các lệnh Write. Thủ tục Write (St) sẽ in ra nguyên văn xâu kí tự St, kể cả các dấu trống ở đầu v cuối xâu. Ví dụ: Giả sử Dòng1, Dòng2 l hai biến xâu kí tự v ta thực hiện phép gán Dòng1:= 'CONG HOA XHCN VIET NAM' ; Dòng2:= ' ***** ' ; Khi in ra bằng các lệnh Writln(Dòng1); Writeln(Dòng2); ta sẽ nhận đợc hai dòng chữ bố trí đúng nh trên: CONG HOA XHCN VIET NAM ***** Chi tiết hơn về sử dụng thủ tục Write để viết ra v quy cách định dạng viết ra đã đợc trình by trong Chơng 3. Đọc vo. Có thể đọc vo từ bn phím v gán gía trị cho một biến kiểu xâu kí tự bằng các lệnh Read. Chi tiết hơn về sử dụng thủ tục Read để đọc dữ liệu vo từ bn phím đã đợc trình by trong Chơng 3. 1.2 Cấu trúc kiểu xâu kí tự - Truy cập trực tiếp từng thành phần. Cấu trúc một xâu kí tự. Biến xâu kí tự đợc tổ chức trong bộ nhớ nh sau: mỗi kí tự trong xâu chiếm một byte, đợc xếp thnh mảng một chiều, từ vị trí số 1 trong mảng trở đi. Riêng phần tử đầu tiên, phần tử chỉ số 0 của mảng, sẽ chứa kí tự m mã ASCII của nó (l một số nguyên) bằng với độ di thực sự của xâu. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 82 Lập trình bằng Turbo Pascal Ví dụ, nếu giá trị của biến xâu kí tự SV1 l 'Nguyen Van A' thì trong bộ nhớ sẽ l #12 N g u y e N V a n A * * * * * * * * Trong đó, #12 l kí tự có mã ASCII bằng 12. Các dấu sao * nghĩa l kí tự bất kì no đó không xác định. 1.2.2 1.2.3 Cú pháp truy cập các kí tự thnh phần. Cấu trúc của một biến xâu kí tự l một mảng kí tự nh vừa mô tả ở trên nên ta có thể thực hiện một số thao tác truy cập trực tiếp vo từng thnh phần của biến xâu kí tự. - Có thể truy cập vo từng kí tự trong xâu, dùng tên biến v số thứ tự của nó trong xâu đặt trong dấu ngoặc vuông, giống nh đối với mảng một chiều. Ví dụ, phép so sánh SV1 [8] = 'V' cho kết quả True. - Có thể lấy độ di thực sự của xâu kí tự St bất kì, thông qua mã ASCII của phần tử St[0], tức l độ di của xâu St bằng Ord (St[0]) . Lu ý rằng ta cũng có hm chuẩn cho biết độ di của xâu kí tự St l Length (St). Ví dụ Viết chơng trình nhập một xâu kí tự từ bn phím v in ra xâu đảo ngợc từ phải sang trái. Uses crt; Var Xau: String; I: byte ; BEGIN Writeln('Cho mot xau ki tu: '); Readln( Xau ); For i:= lenght (Xau) downto 1 do write (Xau[i]); Readln; END. Chú ý: Xâu kí tự khác với mảng một chiều các kí tự ở chỗ độ di thực sự cuả biến xâu kí tự có thể thay đổi, chiếm vừa đủ chỗ cần thiết, trong khi mảng một chiều có dộ di cố định. Điều ny lm cho các thao tác với biến xâu kí tự đơn giản v linh hoạt hơn nhiều so với mảng một chiều các kí tự. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 83 Lập trình bằng Turbo Pascal 2. Thao tác với xâu kí tự 2.1 Các phép toán. 2.1.1 2.1.2 2.1.3 Biểu thức xâu kí tự v phép gán Phép cộng + hai toán hạng kiểu xâu kí tự l ghép nối hai xâu lại thnh một. Có thể cộng hai biến kiểu xâu kí tự, nột biến với một giá trị trực tiếp hoặc hai giá trị trực tiếp (kiểu xâu kí tự). Ví dụ 1: Biến SV1 có gía trị l Nguyen Van A thì biểu thức ' Họ v tên: ' + SV1 sẽ có giá trị l ' Ho va tên: Nguyen Van A '. Ví dụ 2: Path:= 'C:\TP\bin\' ; FileName:= 'Turbo.exe' ; St:= Path + FileName; sẽ nhận đợc St:= ' C:\ TP\bin\Turbo.exe '. Phép so sánh. So sánh bằng nhau = v khác nhau <> Phép so sánh hai biểu thức xâu kí tự "bằng nhau" cho kết quả True nếu từng cặp kí tự tơng ứng ở hai xâu l trùng nhau. Trái lại, phép so sánh bằng nhau sẽ cho kết quả False. Ví dụ: Nếu biến kiểu xâu kí tự SV1 đã đợc gán giá trị nh trong ví dụ ở trên thì SV1 = 'Nguyen Van A' cho giá trị True. SV1 = 'Nguyen Van A' cho giá trị False. Thứ tự của kiểu xâu kí tự. Xâu kí tự l kiểu có thứ tự. Thứ tự của kiểu xâu l thứ tự từ điển. Phép so sánh thứ tự hai xâu kí tự đợc thc hiện qua so sánh lần lợt từng cặp kí tự tơng ứng ở hai xâu, từ trái sang phải. Thứ tự của xâu l thứ tự của cặp kí tự đầu tiên không trùng nhau. Ví dụ: 'abcd' < 'abed' cho giá trị True. 'abc' < 'abcdef' cho giá trị True. 2.2 Các thủ tục và hàm trên xâu kí tự. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 84 Lập trình bằng Turbo Pascal Trong th viện các hm, thủ tục lm sẵn của Pascal có một số hm, thủ tục về xử lí xâu kí tự. 2.2.1 Các thủ tục Delete (St, Pos, Num ) : - St l biến kiểu String. - Num, Pos l các giá trị nguyên. - Tác dụng: xoá khỏi xâu St một số lợng Num kí tự, bắt đầu từ vị trí Pos, từ trái sang phải. Ví dụ: St:= 'ABCDEF' ; Delete(St,2,4); sẽ cho St = 'AFG' Delete(St,2,10) ; sẽ cho St ='A' Delete(St,10,3); sẽ cho St = 'ABCDEF' ; Insert (St2, St, Pos ) ; - St2 l biểu thức kiểu String. - St1 l biến kiẻu String. - Pos l giá trị nguyên. Tác dụng: chèn thêm xâu St2 vo xâu St1 tại vị trí Pos. Nếu Pos v- ợt quá độ di xâu đích thì St2 sẽ đợc nối thêm vo đuôi. Ví dụ: insert('123' , St, 4); sẽ cho St = 'ABCD123EF'. insert('123' , St,10) ; sẽ cho St = 'ABCDEF123'. Str (Value, St ); - Value l biểu thức nguyên hay thực, có quy cách in ra - St l biến kiểu String. Tác dụng: đổi gía trị số thnh xâu kí số rồi gán cho xâu St. Ví dụ: i:= 123; Str (i:5 , St) ; sẽ nhận đợc St = ' 123' . x:= 123.456 ; Str (x:10:5 , St); sẽ nhận đợc St = ' 123.45600' Val (St, Var , Code ) ; - St l biểu thức String. - Var l biến nguyên hay thực. - Code l biến nguyên. Tác dụng: đổi xâu chữ số (biểu diễn một số nguyên hay số thực) thnh ra một giá trị số v gán cho biến Var. Code l cờ báo lỗi. Nếu phép chuyển đổi thực hiện đúng thì code = 0. Nếu sai, do St không biểu diễn đúng l một số, thì Code sẽ có giá trị l vị trí của kí tự sai trong xâu chữ số. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 85 Lập trình bằng Turbo Pascal Ví dụ 1: i, e: integer; St = '123' ; Val (St, i , e); sẽ nhận đợc i = 123 , e = 0. Ví dụ 2: St = '12ba' ; Val (St, i, e ) ; sẽ nhận đợc i không xác định, e = 3. 2.2.2 Các hm Length (St): cho biết độ di của xâu St. Copy (St, Pos, Num): - St l biểu thức xâu kí tự, - Pos, Num biểu thức kiểu nguyên. Tác dụng: trích ra một xâu con từ xâu con từ xâu St, bắt đầu từ vị trí Pos v di Num kí tự. Nếu Pos + Num lớn hơn độ di xâu St thì xâu kết quả chỉ gồm các kí tự cuối trong xâu St. Nếu Pos lớn hơn độ di của St thì xâu kết quả l rỗng. Ví dụ: St:= 'ABCDEF' ; St_con:= Copy (St, 3, 3 ) ; sẽ cho St_con = 'CDE'. St_con:= Copy (St, 4,4 ) ; sẽ cho St_con = 'DEF'. St_con:= Copy (St, 10,5 ) ; sẽ cho St_con = ' ' . Concat (St1, St2, , Stn ): Ghép nối tất các xâu thnh một xâu. - Nếu tổng chièu di các xâu > 255 máy sẽ báo lỗi. - Có thể dùng phép + . Pos (St1, St2 ) ; Tìm xâu St1 trong xâu St2 v cho biết vị trí đầu tiên gặp xâu St1 trong xâu St2. Nếu không tìm thấy thì Pos = 0. Ví dụ: St:='ABCDEF' ; thì: Pos ('CD', St ) = 3; Pos ('CX' ,St ) = 0. Câu hỏi v bi tập 1. Mô tả cấu trúc của một biến kiểu xâu kí tự 2. Độ di cực đại của xâu kí tự l bao nhiêu. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 86 [...]... ShowVariableRecord(v); V:= c_tt; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 96 Lập trình bằng Turbo Pascal ShowVariableRecord(v); END Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 97 Lập trình bằng Turbo Pascal Chơng 9 Kiểu tệp 1 Các khái niệm và định nghĩa 1.1 Mục đích sử dụng tệp Tệp l phơng tiện chính để lu trữ thông tin Có thể nói mọi chơng trình xử lí thông tin đều phải lm việc với tệp Lu thông tin ra tệp đặc... - ĐHQG H nội 93 Lập trình bằng Turbo Pascal Ngnh = (KhaiThác, CơKhi, HóaChất, DầuKhí, ĐiệnLực) ; ChuyênMôn = (Toán,Lý,Hoá,Sinh ) ; Trình ộ = (CơSở, TrungHoc, ĐạiHọc, ThạcSĩ, PTS, TS ); HồSơ = RECORD HọĐệm: String [20] ; Tên: String [20] ; CASE NghềNghiệp: Nghề OF CôngNhân: ( NgnhCN: Ngnh ; Bậc: Byte) ; KĩS: ( NgnhKS: Ngnh; Trình ộKS: Trình ộ); TríThức: (Môn: ChuyênMôn ; Trình ộTT: Trình ộ); DoanhNhân:... end; END 2.5 Tệp truy cập trực tiếp Pascal chuẩn chỉ định nghĩa một kiểu tệp truy cập tuần tự TurboPascal có một số thủ tục cho phép truy cập trực tiếp vo một phần tử bất kì của tệp bằng cách chỉ ra vị trí (thứ tự) của nó trong tệp Điều Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 103 Lập trình bằng Turbo Pascal ny thực hiện đợc vì các phần tử của tệp l cùng kiểu, chiếm chỗ bằng nhau trong bộ nhớ Thủ tục định... cùng kiểu Tiếp tục ví dụ 1 ở trên có thể viết CanBo1 NgaySinh := NgSinh_1 ; 2.2.2 Phép so sánh Có thể so sánh bằng nhau = , khác nhau Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 90 Lập trình bằng Turbo Pascal Phép so sánh "bằng nhau" thực hiện qua so sánh từng cặp các trờng tơng ứng Hai bản ghi l bằng nhau nếu các trờng tơng ứng trùng nhau hon ton Trái lại l khác nhau Ví dụ: Sau lệnh gán CanBo2 := CanBo1... tệp bằng lệnh Close ( biến tệp ) ; Chú ý: Nếu cửa sổ tệp đã đến cuối tệp m vẫn đọc thì sẽ bị lỗi Do đó cần có động tác kiểm tra xem đã ở cuối tệp hay cha Chẳng hạn, có thể sử dụng cấu trúc sau: IF NOT Eof ( biến tệp) THEN Read( biến tệp, X) ; Hoặc: WHILE NOT Eof ( biến tệp ) DO Begin Read( biến tệp , X); End; Ví dụ Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 102 Lập trình bằng Turbo Pascal Đoạn chơng trình. .. phải sử dụng một câu lệnh Case để tuỳ biến theo mỗi trờng hợp Dới đây l một chơng trình minh hoạ cách sử dụng kiểu bản ghi có cấu trúc thay đổi nh định nghĩa ở trên Lu ý phần in đậm trong thủ tục hiển thị biến bản ghi có cấu trúc thay đổi ShowVariableRecord Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 94 Lập trình bằng Turbo Pascal program VariableRecord; type Nghe = (CongNhan,KiSu,TriThuc, DoanhNhan); Nganh... xong phải đóng tệp để tránh mất dữ liệu bằng lệnh đóng tệp: Close ( biến tệp ); Ví dụ Tạo một tệp có tên l Nguyên.Dat chứa các số nguyên n từ 1 đến 100 Program TaoTep; Var i: integer; F: FILE OF Integer; BEGIN Assign (F, 'Nguyen.Dat'); Rewrite (F); For i:=1 to 100 do write (F,i); Close (F); END Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 101 Lập trình bằng Turbo Pascal 2.3 Mở tệp để đọc vào Mở tệp để đọc.. .Lập trình bằng Turbo Pascal 3 Xâu kí tự khác mảng kí tự nh thế no Tại sao sử dụng kiểu xâu lại tiện lợi hơn dùng mảng kí tự Thực hnh 1 Tạo một dòng chữ chạy từ trái sang phải (hoặc từ phải sang trái) trong một khung hình chữ nhật trên mn hình 2 Tự viết lại các hm thủ tục xử lí xâu kí tự trong tiết 2 3 Viết chơng trình chuyển n số thực dới dạng một xâu các... kiểu, xếp liền nhau; - Số phần tử hay kích thớc của tệp có thể thay đổi trong thời gian thực hiện chơng trình ; - Kích thứơc tệp không đợc xác định khi khai báo 1.2.1 Cú pháp Khai báo kiểu tệp Type tên kiểu tệp = File Of kiểu phần tử ; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 98 Lập trình bằng Turbo Pascal Trong đó kiểu phần tử của tệp gọi l kiểu cơ sở, có thể l bất kì kiểu gì, trừ kiểu tệp 1.2.2 Ví dụ... luc '); end; writeln(' bac ', v.bac); end; KiSu: begin writeln(' Ki Su '); nh:= v.nganhKS; case nh of KhaiThac: write(' Khai thac '); CoKhi: end; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 95 Lập trình bằng Turbo Pascal writeln(' Trinh Do ', v.TrinhDoKS); end; TriThuc: begin writeln (' Tri Thuc , mon '); m:= v.ChuyenMon; case m of Toan: write(' Toan '); Ly: write(' Ly '); Hoa: write(' Hoa '); Sinh: write(' . 4. 3.2 4. 3.3 Minh hoạ: Xuất phát: 44 55 12 42 94 18 06 67 Bớc 1: 06 / 55 12 42 94 18 44 67 Bớc 2: 06 12 / 55 42 94 18 44 67 Bớc 3: 06 12 18 / 42 94 55 44 67 Bớc 4: 06 12 18 42 94. Bớc 4: 06 12 18 42 94 55 44 67 Bớc 5: 06 12 18 42 44 / 55 94 67 Bớc 6: 06 12 18 42 44 55 / 94 67 Bớc 7: 06 12 18 42 44 55 67 / 94 Bớc 8: 06 12 18 42 44 55 67 94 Thủ tục chi tiết. for. Lập trình bằng Turbo Pascal j:= i-1; while x < a[j] do begin a[j+1]:= a[j]; j:= j-1; end; a[j+1]:= x; end end; 4. 3 Phơng pháp chọn trực tiếp. 4. 3.1 Mô tả Phơng