Thuật Toán & Kỹ Thuật Lập Trình Pascal

36 10.5K 42
Thuật Toán & Kỹ Thuật Lập Trình Pascal

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Thuật Toán & Kỹ Thuật Lập Trình Pascal

Thuật Tốn & Kỹ Thuật Lập Trình Pascal CHƯƠNG CÁC VẤN ĐỀ CƠ BẢN CỦA THUẬT TỐN TĨM TẮT LÝ THUYẾT Định nghĩa Thuật toán hệ thống chặt chẽ rõ ràng qui tắc nhằm xác định dãy thao tác đối tượng, cho sau số hữu hạn bước thực thao tác này, ta nhận kết mong muốn Các đặc trưng thuật tốn Tính kết thúc: Một thuật toán phải kết thúc sau số hữu hạn thao tác Tính rõ ràng: Từng thao tác thuật toán phải rõ ràng theo nghĩa: thao tác nhiều người khác thực phải cho kết Tính phổ dụng: Cùng giải yêu câu, thuật toán sử dụng rộng rãi hơn, tổng qt tính phổ dụng cao Tính hiệu quả: Cùng giải u cầu, thuật tốn tốn số lượng thao tác, nhớ, thời gian tính hiệu cao Biểu diễn thuật toán Để biểu diễn thuật toán người ta thường dùng hai phương pháp sau đây: 3.1 Phương pháp liệt kê bước Phương pháp sử dụng ngôn ngữ đấy, mô tả dãy thao tác thật bản, rõ ràng theo trình tự từ xuống dưới, từ trái qua phải, từ bắt đầu đến kết thúc theo giải thuật, nhằm đạt yêu cầu đề Các thao tác bao gồm: - Bắt đầu - Thông báo, yêu cầu - Nhận giá trị ban đầu - Gán giá trị (lưu giá trị vào tên biến đấy) - Thực phép toán số học, logic - Kiểm tra điều kiện để khẳng định điều kiện hay sai - Chuyển khơng điều kiện, có điều kiện đến thao tác khác - Lặp lại thao tác Thuật Toán & Kỹ Thuật Lập Trình Pascal - Kết thúc 3.2 Phương pháp sơ đồ khối Dùng hình để thể thao tác, ghi thao tác vào hình dùng mũi tên để hướng thực thao tác tiếp theo, tạo thành sơ đồ biểu diễn thuật tốn, thường dùng hình sau: Hình Bắt đầu i=1 False a N Max lớn đến bước 7, trái lại đến bước Bước 5: Nếu Ai > Max Max = Ai Bước 6: Quay lại bước Bước 7: Kết thúc 4.3 Kiểm tra xem A có thuộc dãy X1, X2, ,XN hay khơng? (Thuật tốn tìm kiếm tuần tự) Bước 1: Nhận giá trị N, X1, X2, ., XN Bước 2: Gán i = Bước 3: Nếu i > N sang bước bước 5, trái lại đến bước Bước 4: Nếu A = Xi đến bước 5, trái lại tăng i lên quay lại bước Bước 5: Nếu i > N thơng báo A khơng thuộc dãy X1, X2, ,XN, trái lại thông báo A phần tử thứ i dãy Bước 6: Kết thúc 4.4 Tính tổng dãy số X1, X2, ., XN Bước 1: Nhận giá trị N, X1, X2, ., XN Bước 2: Gán S = Bước 3: Gán i = Bước 4: Nếu i > N sang bước 8, trái lại đến bước Bước 5: Thực S = S + Xi (cộng Xi vào S) Bước 6: Gán i = i +1 Bước 7: Quay lại bước Bước 8: Đưa tổng S Bước 9: Kết thúc 4.5 Tìm ước số chung lớn (ƯSCLN) số nguyên dương M N Bước 1: Nhập M, N Bước 2: Nếu M = N sang bước 5, trái lại đến bước Bước 3: Nếu M > N M = M - N, trái lại N = N - M Bước 4: Quay lại bước Bước 5: ƯSCLN M N M Bước 6: Kết thúc Thuật Toán & Kỹ Thuật Lập Trình Pascal Biều diễn thuật tốn ƯSCLN sơ đồ khối Begin Nhập a, b a == b True False b=b-a False a>b True ƯSCLN a a=a-b End Bài tập chương 5.1 Hãy biểu diễn thuật toán mục 4.1 đến 4.3 sơ đồ khối 5.2 Hãy trình bày thuật tốn tìm phần tử nhỏ dãy số A1, A2, An dạng liệt kê sơ đồ khối 5.3 Hãy trình bày thuật tốn tính tổng số chẵn dãy số A1,A2, An dạng liệt kê sơ đồ 5.4 Hãy đề xuất thuật toán để kiểm tra số nguyên dương có phải số nguyên tố hay không? Gợi ý: N gọi số nguyên tố chia hết cho Nếu ta tìm số k (2 Nhỏ = 2.3.Các phép tốn logic Có phép tốn Logic kiểu liệu Boolean Phép toán Viết theo PASCAL Phủ định Not Hội, And Tuyển, Or Tuyển loại trừ Xor Kết phép toán logic theo bảng sau (X, Y hai liệu logic) X Y Not X X And Y X Or Y X xor Y Thuật Tốn & Kỹ Thuật Lập Trình Pascal TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE Biểu thức 3.1.Định nghĩa Biểu thức cơng thức tính tốn, trả lại kết thuộc kiểu liệu chuẩn 3.2.Cách viết biểu thức Trong ngơn ngữ lập trình, qui định biểu thức viết dòng, ngồi liệu dấu phép tốn viết theo qui định, dùng cặp dấu () để ưu tiên tính biểu thức ngoặc trước Ví dụ:Biểu thức số viết theo toán học ( x + y )[ ( x − 2) + ( y + 3)] 2x + y viết theo NNLT ((x + y) *((x - 2) + (y +3))) / (2 *x +y) Biểu thức logic y < x < 100 viết (y < x) and (100 > x) Bài tập chương 4.1.Hãy viết số sau dạng dấu phẩy tĩnh động a/ -12,345 b/ 0,1231 c/ -234,021345 4.2 Hãy xác định kết phép tính sau a/ 145 div 10 = ? b/ 215 mod 10 =? c/ (120 +1 * 10 ) / 10 * = ? d/ -30.2E-1 * 0.1E+1 = ? e/ ( > 6) and ( 10 ) = ? f/ ((10- > ) or ( > 5)) and ( TRUE = TRUE) = ? 4.3 Hãy viết biểu thức sau theo qui định Pascal a/ ( 12+x2 )[ (y+1)+ x2 ] b/ a ≤ b ≤ c ; a = b = c ; a ≥ b + c ≥ a - d c/ CÁC KHÁI ( x + y )2 z [ (12 − z ) + x ] ( x + 1) y z − 3y CHƯƠNG NIỆM CƠ BẢN CỦA NGÔN NGỮ PASCAL TĨM TẮT LÝ THUYẾT Thuật Tốn & Kỹ Thuật Lập Trình Pascal Từ khố Pascal có số từ vững riêng gọi từ khoá (key word) Với từ khoá người dùng phải viết cú pháp, khơng dùng vào việc khác, khơng đặt tên biến trùng với từ khố Chú ý: Trong Pascal không phân biệt chữ thường chữ hoa(In), từ khố viết chữ thường hoa điều Các tên chuẩn Các tên chuẩn tên số đối tượng (biến, hằng, kiểu, hàm, thủ tục) mà ngơn ngữ lập trình định nghĩa trước Khi dùng chúng không cần phải khai báo Các tên chuẩn định nghĩa lại, nhiên nên để chúng đặt để tránh nhầm lẫn VD: Integer, Char, Read, Writeln, PI, Cos Tên tự đặt Các tên tự đặt tên mà người dùng đặt cho đối tượng (hằng, biến, kiểu, chương trình con) chương trình Chúng phải khai báo trước dùng Các tên tự đặt phải tuân theo qui tắc sau: - Chỉ dùng loại ký tự chữ cái, chữ số dấu nối chân - Ký tự phải ký tự chữ - Không trùng với từ khoá - Độ dài tên khơng vượt q 127 ký tự Chương trình mẫu Trong Pascal có sẵn số chương trình thường gặp gọi chương trình mẫu Các chương trình mẫu quản lý thư viện, trước dụng chương trình mẫu phải khai báo sử dụng thư viện chứa chúng Dưới số chương trình mẫu thường dùng: Tên chương trình mẫu Nhiệm vụ chươngtrình Abs(y) Lấy giá trị tuyệt đối y Sqr(y) Tính bình phương y Sqrt(y) Tính bậc hai y Chr(n) Trả lại ký tự có mã ASCII n Ord(ch) Trả lại mã ASCII ký tự ch Upcase(c) Trả lại chữ in hoa ký tự c Thuật Toán & Kỹ Thuật Lập Trình Pascal Clrscr Xố hính GotoXY( x, y) Đưa trỏ Dos đến toạ độ x, y TextColor (mode ) Thiết lập mầu chế độ hiển thị ký tự TextBackground ( col ) Thiết lập màu nên ký tự Readkey Đọc ký tự từ bàn phím KeyPressed Kiểm tra bàn phím có nhấn hay khơng Delay(ms) Làm CPU ngừng làm việc ms Lời giải thích dấu chấm phẩy Các lời giải thích đưa vào vị trí chương trình chương trình dễ đọc, dễ hiểu mà khơng ảnh hưởng đến phần khác Lời giải thích đặt hai dấu ngoặc móc { } hai cụm dấu (* noi dung *) Dấu chấm phẩy ( ; ) để làm dấu ngăn cách câu lệnh chương trình Cấu trúc chung chương trình Pascal Một chương trình Pascal đầy đủ gồm phần sau: 6.1.Tiêu đề chương trình Phần khoá PROGRAM, sau tên người lập trình đặt cho có ý nghĩa cơng việc chương trình,cuối kết thúc dấu chấm phẩy; VD: Program Giai_Phuong_Trinh_Bac_Hai; Phần tiêu đề có khơng phụ thuộc vào người lập trình 6.2.Phần khai báo Phần có nhiệm vụ khai báo thư viện, hằng, kiểu liệu, biến, chương trình Mỗi mục khai báo ứng với từ khoá Uses CRT; { khai báo thư viện } Const { khai báo } Type { mô tả kiểu liệu } Var { khai báo chung } Procedure { khai báo thủ tục } Function { khai bào hàm } Các mục khai báo có khơng tuỳ thuộc vào toán cụ thể 10 Thuật Toán & Kỹ Thuật Lập Trình Pascal CHƯƠNG KIỂU DỮ LIỆU MẢNG TĨM TẮT LÝ THUYẾT 1.Khai báo mảng Có hai cách khai báo mảng a/ Khai báo thông qua khai báo kiểu Cú pháp: Type Tên_kiểu = Array[Csd csc] Of kiểu_thành_phân; Var Tên_biên : Tên_kiểu; b/ Khai báo trực tiếp Tên_biến_mảng : Array[csd csc] Of kiểu_thành_phần; 2.Cách truy cập Để truy cập đến phần tử biến mảng, ta viết sau: Tên_biến_mang[chỉ_số] Thông thường, người ta dùng biến có kiểu với số mảng để truy cập đến phần tử mảng 3.Cấp phát nhớ Số ô nhớ (bytes) cấp cho mảng phụ thuộc vào kích thước kiểu thành phần mảng Số tăng nhanh tăng số chiều mảng Thông thường, người tachir dùng mảng chiều (véc tơ) mảng hai chiều (ma trân) 4.Các xử lý thường gặp - Nhập mảng, đưa phần tử mảng hình - Tìm kiếm phần tử thoả mãn điều kiện cho trước - Tìm phần tử lớn nhất, bé - Tìm vị trí phần tử thoả mãn điều kiện - Đổi chỗ, xếp phần tử - Tính tốn phần tử 22 Thuật Tốn & Kỹ Thuật Lập Trình Pascal Các ví dụ 5.1.Chương trình nhập n số từ bàn phím vào mảng, sau tính tổng số dương nhập In tổng hình Uses Crt; Var A:Array[1 100] of real; i, n: byte; tg : real; Begin Clrscr; Write(' Nhap so phan tu n = '); Readln(n); for i:= to n begin Write(' nhap gia tri cho phan tu A[', i,'] = '); Readln(A[i]); end; for i :=1 to n if A[i] >0 then tg := tg + A[i]; Write(' Tong cac so >0 la ' , tg:8:2); Readln; End 5.2.Chương trình nhập N số từ bàn phím vào mảng B, xếp mảng B thành dãy không giảm theo thuật tốn Selection_sort in hình Program Selection_sort; Uses Crt; Var i, j,n, min: Byte; A:array[1 100] of real; temp : real; Begin Clrscr; Write(‘ Nhap so phan tu N = ‘); Readln(n); for i := to n begin write(‘ A[‘, i, ‘] = ‘); Readln(a[i]); end; {nhập mảng} for i :=1 to n-1 begin :=i; for j := i +1 to n if a[j] < a[min] then := j; { tìm vị trí pt nhỏ nhất} temp := a[min]; a[min] := a[i]; a[i] := temp; {hoán vị a[i] a[min] } end; clrscr; writeln(‘ Sau sap xep ‘); for i :=1 to n Write(a[i]:8:2); Readln; End 23 Thuật Tốn & Kỹ Thuật Lập Trình Pascal Câu hỏi tập 6.1.Hãy sửa câu lệnh sai sau: a/ Mang A : Array[1 10] of Integer; b/ Mang_A Array[1 10] of real; d/ Mang-A: Array[1 100] of char ; d/ Mang_A Array[10 100] of real; e/ Mang_A: Array[10 1] of char; f/ Mang_A : Array[10 100] real; g/ Mang_A: Array[ -1 10] of char; h/ Mang_A: Array['a' 'k'] of byte; 6.2.Hãy viết chương trình nhập N số từ bàn phím vào mảng A, tìm giá trị nhỏ mảng A 6.3.Hãy viết chương trình nhập N số từ bàn phím vào mảng A, tìm vị trí phần tử có giá trị nhỏ 6.4.Hãy viết chương trình nhập số nguyên dương dạng số 10 sau hiển thị số nguyên dạng số nhị phân 6.5.Hãy cài đặt thuật toán xếp Insert_Sort (chèn trực tiếp) 6.6.Hãy viết chương trình nhập n số, hiển thị số số nhỏ Gợi ý: Nhập n số vào mảng, xếp mảng theo thứ tự khơng giảm Sau xếp tất số nhỏ đứng đầu mảng, tìm từ đầu mảng đến vị trí a[i] a[i+1] i số phần tử nhỏ 6.7.Viết chương trình nhập n số (có số âm, số dương), hiển thị số dương nhỏ nhất, số âm lớn Gợi ý: Nhập n số vào mảng A, chép tất số âm mảng A sang mảng AM số dương mảng A sang mảng DUONG, xếp mảng AM, DUONG theo thứ tự không giảm Sau xếp, số âm lớn đứng cuối mảng AM số dương nhỏ đứng đầu mảng DUONG 6.8.Hãy viết chương trình để tính C = A +B A, B, C ma trận có hàng, cột giá trị A, B nhập vào từ bàn phím 6.9.Hãy viết chương trình để tính C = A - B A, B, C ma trận có n hàng m cột (m, n, A,B nhập vào từ bàn phím) 6.10.Chương trình tính C = A * B A, B, C ma trận vuông cấp ba, giá trị A, B nhập từ bàn phím 24 Program Nha_Ma_Tran; Uses crt; Const Hang = 2; Cot = 2; Var i, j, tempcot : byte; tg :real; A,C, B :Array[1 10,1 10] of real; Begin clrscr; Writeln(' Nhap Ma Tran A '); for i :=1 to Hang { Nhập ma trận A } for j :=1 to Cot begin Write(' A[',i,' ',j,'] = '); Readln(A[i,j]); end; Writeln(' Nhap Ma Tran B '); for i :=1 to Hang { Nhập ma trận B} for j :=1 to Cot begin Write(' B[',i,' ',j,'] = '); Readln(B[i,j]); end; for i := to Hang { Tính ma trận C } for j := to Cot begin tg := 0; for tempcot := to Cot tg :=tg + A[i,tempcot] * B[tempcot, j]; C[i,j] := tg; end; clrscr; Writeln(' C = A x B '); for i := to Hang { In ma trận C hình } begin writeln; for j := to Cot Write(C[i,j]:8:2); end; Readln; End Thuật Toán & Kỹ Thuật Lập Trình Pascal 25 Thuật Tốn & Kỹ Thuật Lập Trình Pascal CHƯƠNG XÂU KÝ TỰ TÓM TẮT LÝ THUYẾT 1.Lệnh khai báo Có hai cách khai báo xâu a/ Khai báo kiểu xâu sau dùng kiểu để khai báo biến xâu Cú pháp: Type Tên_kiểu = string[max]; b/ Khai báo trực tiếp Var Tên_biến_xâu : string[max]; Trong max số nguyên dương xác định độ dài tối đa xâu, 00 ) { xoá ký tự ký tự space} Delete(s,1,1); while(s[length(s)] = ‘ ‘) and (length(s) > ) {xoá ký tự cuối kt space} Delete(s,length(s),1); if length(s) > then s[1] := upcase(s[1]); { đổi ký tự xâu thành ký tự In } writeln(‘ sau chuan hoa ‘ , s); readln; End 27 Thuật Toán & Kỹ Thuật Lập Trình Pascal 5.3.Viết chương trình nhập xâu ký tự, đếm số lần xuất ký tự ‘A’ xâu (có phân biệt ký tự thường, in) 5.4.Viết chương trình nhập xâu ks tự bất kỳ, đếm số lần xuất ký tự ‘c’ xâu (khơng phân biệt ký tự thường, in) 5.5 Hãy viết chương trình nhập xâu ký tự đếm số từ xâu 5.6.Viết chương trình nhập xâu có cấu trúc Họ Và Tên (gồm từ Họ, tên đệm, tên), đưa tên đệm xâu 5.7.Viết chương trình nhập hai xâu s1, s2 s1 họ tên đệm, s2 tên người ghép s1 với s2 để họ tên người 5.8.Viết chương trình nhập xâu ký tự hiển thị số lần xuất ký tự xâu Ví dụ: nhập xâu ‘Pascal’; P lần, a lần, s lần, c lần, l lần 5.9.Viết chương trình nhập xâu chuẩn hố xâu cho ký tự từ ký tự In 5.10.Viết chương trình nhập xâu chuẩn hố xâu cho từ cách dấu cách (một ký tự space) 5.11.Viết chương trình chuyển đổi năm Dương lịch thành Âm lịch Ví dụ nhập năm Dương lịch 1968 năm Âm lịch Mậu Thân 28 Thuật Tốn & Kỹ Thuật Lập Trình Pascal CHƯƠNG CHƯƠNG TRÌNH CON TĨM TẮT LÝ THUYẾT Phân loại chương trình Pascal Trong Pascal chương trình chia thành hai dạng, Hàm (Function) Thủ tục (Procedure) - Chương trình dạng hàm có trả lại giá trị thơng qua tên hàm - Chương trình dạng thủ tục không trả lại giá trị Thủ tục (Procedure) a/ Khai báo Các chương trình dù dạng hàm hay thủ tục khai báo sau từ khố Var chương trình Cấu trúc khai báo thủ tục sau: Procedure Tên_thủ_tục(Tham_số_hình_thức); Phần khai báo chung thủ tục begin Thân chương trình con; end; Trong phần khai báo thủ tục gồm: - Từ khoá Procedure dùng để khai báo thủ tục, tên thủ tục cần khai báo Tên_thủ_tục - Ngồi cịn khai báo Tham_số_hình_thức cho thủ tục cặp dấu ( ) sau tên thủ tục, thủ tục khơng có tham số bỏ cặp dấu ( ) Các tham số hình thức cần xác định tên kiểu ví dụ: Procedure thutuc1( a: integer); Nếu có nhiều tham số có kiểu liệu đặt cách dấu phẩy (,) ví dụ Procedure thutuc2(a,b:integer); Nếu có nhiều tham số hình thức có kiểu liệu khác tham số có dấu chấm phẩy (;) để phân cách Procedure thutuc3(a,b:integer; c: real); 29 Thuật Tốn & Kỹ Thuật Lập Trình Pascal - Phần khai báo chung thủ tục: dùng giống phần khai báo chung chương trình chính, điều có nghĩa khai báo biến, chương trình chương trình cần thiết - Thân_thủ_tục: câu lệnh cần thực chương trình con, câu lệnh đặt cặp từ khố begin end; Ví dụ 1: Khai báo thủ tục có tên Display để hiển thị xâu bất kỳ: Procedure Display( s: string); begin writeln(s); end; Ví dụ 2: Khai báo thủ tục có tên Tinh_Tong để tính tổng N số tự nhiên In giá trị tổng hình: Procedure Tinh_Tong( N : byte); var i: byte; tg: Integer; begin tg := 0; for i := to N tg := tg + i; writeln( ' tg = ', tg); end; b/ Lời gọi thủ tục Chương trình (có thể chương trình khác) cần thực cơng việc thủ tục đảm nhiệm thực lời gọi thủ tục cú pháp sau: Tên_thủ_tục(Tham_số_thực_sự); Tham_số_hình_thức: tham số sử dụng cách giả định khai báo chương trình con, tham số nhận giá trị xác định tương ứng có lời gọi chương trình con, giá trị gọi Tham_số_thực_sự Chú ý: Giữa Tham_số_hình_thức Tham_số_thực_sự phải tồn phép tương ứng sau: số lượng tham số, kiểu liệu tham số vị trí tương ứng Nếu thủ tục khơng có tham số lời gọi thủ tục đơn giản Tên_thủ_tục ; Ví dụ: 30 Thuật Tốn & Kỹ Thuật Lập Trình Pascal Viết chương trình tính tổng số nguyên khoảng từ N tới M, chức tính tổng hiển thị kết tổ chức thành thủ tục PROGRAM Tinh_Tong_Tu_N_Toi_M; USES CRT; VAR N, M :INTEGER; Procedure Tinh_tong( a, b: integer); var { khai báo biến thủ tục } tg: longint; i: integer; begin tg := 0; for i:= a to b tg := tg +i; writeln(' tong tu ', a, ' den ', b, ' = ', tg); end; BEGIN repeat clrscr; Write(' nhap gia tri N = ') ; readln(n); write(' nhap gia tri M = '); readln(m); Until m >= n ; Tinh_tong(n, m); { lời gọi thủ tục để tính tổng từ N đến M } readkey; Tinh_Tong(1, 10); { lời gọi thủ tục để tính tổng từ đến 10} readkey; END Hàm (Function) a/ Khai báo Tương tự thủ tục, hàm khai báo phần khai báo chung chương trình Cú pháp: 31 Thuật Tốn & Kỹ Thuật Lập Trình Pascal Function Tên_hàm(Tham_số_hình_thức): Kiểu_của_hàm ; Kha_ báo_chung_của_hàm; begin Thân_của_hàm; Tên_hàm := giá_trị_trả_về ; end; Trong phần khai báo hàm bao gồm: - Từ khoá Function dùng để xác định khai báo hàm, tiếp sau tên hàm cần khai báo Tên_hàm Lưu ý hàm có trả lại kết thông qua tên hàm, kết phải xác định kiểu cụ thể thông qua Kiểu_của_hàm - Tham_số_hình_thức : giống thủ tục - Khai_báo_chung_của_hàm Thân_của_hàm giống thủ tục Chú ý: Trong phần thân hàm có câu lệnh gán tên hàm = giá trị trả như: Tên_hàm := giá_trị_trả_về ; b/ Lời gọi hàm Lời gọi hàm giống lời gọi thủ tục, điều khác biệt chỗ: Lời gọi hàm thường xuất biểu thức tốn hạng bình thường ví dụ ta có cơng thức T := * sin(x); sin(x) hàm chuẩn với tham số x hàm sin trả kết xác định c/ Ví dụ ví dụ Xây dựng chương trình tính tổng hai số ngun N, M Cơng việc tính tổng tổ chức chương trình dạng hàm USES CRT; VAR M, N :Integer; Function Tong_hai_so (a, b:integer): Integer; begin Tong_hai_so := a + b; end; BEGIN Clrscr; Write('Nhap so thu 1') ; Readln(n); Write(' Nhap so thu '); Readln(m); writeln(' tong hai so = ', Tong_hai_so(n,m)); readkey; END 32 Thuật Toán & Kỹ Thuật Lập Trình Pascal ví dụ Viết chương đếm số từ xâu, việc đếm số từ xâu tổ chức thành chương trình dạng hàm PROGRAM Xu_ly_xau; USES crt; VAR s: string; Function Dem_tu(x : string): Byte; var i, count: byte; begin count := 0; while (x[1] = ' ' ) and (length(x) >0 ) Delete(x,1,1); while (x[length(x)] = ' ') and (length(x) >0 )do Delete (x,length(x),1); if length(x)> then begin count := 1; for i :=1 to length(x) if (x[i] = ' ') and (x[i+1] ' ') then count := count +1; end; Dem_tu := Count; end; { kết thúc khai báo hàm} BEGIN clrscr; write(' nhap xau '); read(s); writeln( ' so tu cua xau la ', Dem_tu(s)); readkey; END Tham số hình thức chương trình Tham số hình thức chương trình chia thành hai loại: tham biến tham trị; - Tham biến: tham số hình thức khai báo theo tham biến, lời gọi chương trình cịn làm việc trực tiếp địa biến tham số thực Do làm việc trực tiếp địa biến, nên sau kết thúc chương trình giá trị biến truyền theo tham trị bị thay đổi chương trình Để khai báo biến hình thức theo tham trị ta cần đặt từ khoá Var vào trước tên biến tham số hình thức - Tham trị: tham số hình thức khai báo theo tham trị, lời gọi chương trình làm việc biến truyền tham số thực 33 Thuật Tốn & Kỹ Thuật Lập Trình Pascal Do thay đổi chương trình có tác động sao, kết thúc chương trình theo giá trị biến quay trở lại gốc giá trị khơng bị thay đổi Để xác định biến truyền theo tham trị ta khai báo bình thương (khơng có từ khố Var trước) Chú ý: Đối với tham số hình thức khai báo tham biến, thực lời gọi chương trình phải truyền tên biến (khơng truyền giá trị) Ví dụ: Xây dựng chương trình hốn vị giá tri hai biến, cơng việc hốn vị tổ chức thành thủ tục có tên Swap Phân tích tốn: Thủ tục Swap có hai tham số hình thức, hai tham số hai biến cần hoán vị giá trị cho Do mong muốn sau thực thủ tục Swap giá trị hai biến thay đổi, hai tham số hình thức phải khai báo truyền theo tham biến VAR a ,b: real; Procedure swap ( var i : real; var j : real); var temp : real; begin temp := i; i := j; j: = temp; end; BEGIN write(' Nhap a = '); readln(a); write(' Nhap b = '); readln(b); Writeln(' Truoc hoan vi a = ', a:8:2, ' b = ', b:8:2 ); swap(a, b); writeln(' Sau hoan vi a = ' , a:8:2, ' b = ', b:8:2); readln; END Biến toàn cục biến cục - Các biến khai báo chương trình gọi biến tồn cục Các biến dùng nơi chương trình ( chương trình chương trình chính) - Các biến khái báo chương trình gọi biến cục dùng chương trình khai báo Khi kết thúc chương trình biến tác dụng 34 Thuật Tốn & Kỹ Thuật Lập Trình Pascal Chú ý: Nếu chương trình có khai báo biến cục trùng tên với biến toàn cục, chương trình sử dụng biến ngầm hiểu biến cục Bài tập chương 6.1 Hãy sửa phát biểu sai phát biểu sau: a/ Chương trình dạng hàm khơng trả lại giá trị thông qua tên hàm b/ Biến truyền theo tham biến không bị thay đổi giá trị chương trình c/ Biến cục biến khai báo chương trình d/ Biến cục sử dụng nơi chương trình e/ Khơng khai báo biến cục trùng tên với biến toàn cục f/ Lời gọi thủ tục phép tham gia vào biểu thức g/ Không có khác biệt tham trị tham biến 6.2.Hãy xây dựng hàm MyCopy giống hàm Copy chuẩn Pascal, viết chương trình sử dụng hàm Mycopy 6.3.Chương trình xây dựng hàm Left(s,count) để lấy xâu có count ký tự xâu s, tính từ trái qua phải viết chương trình sử dụng hàm VAR s:string; c : byte; Function Left(x :string ; count :byte) : string; begin if length(x) > count then Left := Copy(x,1,count) else Left := ''; {xâu rỗng} end; BEGIN write(' Nhap xau s = '); Readln(s); write(' so ky tu c = '); readln(c); writeln( Left(s,c)); readln; END 35 Thuật Tốn & Kỹ Thuật Lập Trình Pascal 6.4.Xây dựng hàm Right(s, count) để lấy xâu có count ký tự xâu s, tính từ bên phải sang trái viết chương trình sử dụng hàm 6.5.Xây dựng thủ tục MyDelete(s, pos, count) giống thủ tục Delete(s, pos, count) chuẩn Pascal viết chương trình để sử dụng hàm ý: chương trình không sử dụng hàm Delete 6.6.Hãy xây dựng thủ tục MyClrscr để xố hình viết chương trình để sử dụng hàm ý: chương trình khơng sử dụng hàm Clrscr 6.7.Xây dựng hàm để kiểm tra xâu có phải xâu đối xứng hay khơng? viết chương trình để sử dụng hàm 6.8.Xây dựng hàm kiểm tra số ngun dương có phải số ngun tố hay khơng ? Hãy viết chương trình sử dụng hàm để tính tổng số nguyên tố N số tự nhiên 6.9.Viết chương trình hiển thị số phương N số tự nhiên đầu tiên, tổ chức dạng chương trình 6.10.Xây dựng hàm tìm ước số chung lớn hai số nguyên dương N, M Hãy viết chương trình để sử dụng hàm 6.11.Xây dựng hàm tính tổng chữ số số ngun dương Viết chương trình để sử dụng hàm 36 ... writeln; for j := to Cot Write(C[i,j]:8:2); end; Readln; End Thuật Tốn & Kỹ Thuật Lập Trình Pascal 25 Thuật Tốn & Kỹ Thuật Lập Trình Pascal CHƯƠNG XÂU KÝ TỰ TĨM TẮT LÝ THUYẾT 1.Lệnh khai báo Có... thúc Thuật Tốn & Kỹ Thuật Lập Trình Pascal Biều diễn thuật toán ƯSCLN sơ đồ khối Begin Nhập a, b a == b True False b=b-a False a>b True ƯSCLN a a=a-b End Bài tập chương 5.1 Hãy biểu diễn thuật toán. .. 1968 năm Âm lịch Mậu Thân 28 Thuật Tốn & Kỹ Thuật Lập Trình Pascal CHƯƠNG CHƯƠNG TRÌNH CON TĨM TẮT LÝ THUYẾT Phân loại chương trình Pascal Trong Pascal chương trình chia thành hai dạng, Hàm (Function)

Ngày đăng: 14/11/2012, 15:36

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan