Chương trình con – thủ tục và hàm | sinhvientot.net

1. Khái niệm chương trình con

Chương trình con (ctc) là một đoạn chương trình triển khai đầy đủ một chức năng hoặc một chức năng. Trong turbo pascal, có hai loại chương trình con:

  • Thủ tục: Được sử dụng để thực hiện một hoặc nhiều nhiệm vụ cụ thể.
  • Chức năng: Trả về một giá trị cụ thể (kiểu vô hướng, kiểu chuỗi hoặc kiểu con trỏ). Các hàm có thể được sử dụng trong các biểu thức. Ngoài ra, pascal cũng cho phép các ctc lồng vào nhau.

2. Cấu trúc chung

Chương trình Tên chương trình;

Bạn đang xem: Hàm là gì thủ tục là gì

Sử dụng crt;

Không đổi …………;

Loại …………;

var …………;

quy trình tutuc [(tham số)];

[khai báo hằng, kiểu, biến]

Bắt đầu

………… ..

Kết thúc;

Hàm ham [(tham số)]: & lt; datatype & gt ;;

[khai báo hằng, kiểu, biến]

Bắt đầu

………… ..

Hàm: = & lt; value & gt ;;

Kết thúc;

Bắt đầu {main program}

…………………….

thutuc [(…)];

…………………….

a: = ham [(…)];

…………………….

Kết thúc.

Lưu ý : Trong quá trình xây dựng ctc, khi nào nên sử dụng thủ tục / hàm?

Sử dụng các tính năng

Chương trình

– Lệnh gọi ctc cần có trong biểu thức tính toán.

– cuộc gọi ctc không được bao gồm trong biểu thức đánh giá.

Ví dụ 1: Viết ctc để tính n! = 1,2… n.

Ý tưởng : Vì sự cố này trả về một giá trị duy nhất, chúng tôi sử dụng một hàm.

Dấu chấm hàm (n: word): word;

var p, i: word;

Bắt đầu

p: = 1;

for i: = 1 to n do p: = p * i;

giaithhua: = p;

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

Kết thúc;

Ví dụ 2: Viết chương trình con tìm điểm đối xứng của điểm (x, y) về gốc tọa độ.

Ý tưởng : Vì tọa độ của điểm đối xứng (xx, yy) được trả về bởi câu hỏi này có 2 giá trị, chúng tôi sử dụng quy trình này.

thủ tục doixung (x, y: integer; var xx, yy: integer);

Bắt đầu

xx: = – x;

XEM THÊM:  tiểu sử hà anh tuấn

yy: = – y;

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

Kết thúc;

Lưu ý : Trong cả hai ví dụ trên:

  • n, x, y được gọi là value (không có từ khóa var trước nó) vì đầu ra của nó từ ctc Value không thay đổi .
  • xx, yy được gọi là tham số (với từ khóa var xuất hiện đầu tiên) vì giá trị của nó sau khi thoát Đã thay đổi .

3. Biến cục bộ và toàn cục

  • Biến toàn cục : biến được khai báo trong chương trình chính. Các biến này có mặt khắp nơi trong suốt chương trình.
  • biến cục bộ : là các biến được khai báo trong ctc. Các biến này chỉ hợp lệ trong ctc đó.

Xem thêm: Pyramid Scheme là gì? Định nghĩa, ví dụ, giải thích

Lưu ý: Trong ctc, nếu biến toàn cục có cùng tên với biến cục bộ, thì biến cục bộ sẽ được ưu tiên hơn.

Ví dụ:

Chương trình khosatbien;

var a, b: integer; {global variable}

Chương trình thubien;

var a: integer; {local variable}

Bắt đầu

a: = 10;

writeln (‘a =’, a, ‘b =’, b);

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

Kết thúc;

Bắt đầu

a: = 50;

b: = 200;

Tubian; {a = 10 b = 200}

writeln (‘a =’, a, ‘b =’, b); {a = 50 b = 200}

Kết thúc.

4. Đệ quy

4.1. Khái niệm về đệ quy

Trong một chương trình, một ctc có thể gọi một ctc khác hoạt động. Nếu ctc đó tự nhớ lại thì nó được gọi là đệ quy.

4.2. Phương pháp thiết kế thuật toán đệ quy

  • Bài toán tham số hóa
  • Tìm các trường hợp suy biến.
  • Phân tích các trường hợp thường gặp (giảm các vấn đề cùng loại nhưng nhỏ hơn).

Ví dụ: Viết một hàm đệ quy để tính n! = 1,2… n.

  • Tham số hóa: n! = Giai thừa (n);
  • Giai thừa (0) = 1 (trường hợp suy biến)
  • Giai thừa (n) = n * Giai thừa (n -1) (trường hợp chung)

Hàm giai thừa (n: integer): longint;

Bắt đầu

XEM THÊM:  Tiểu sử ca sĩ Trương Thế Vinh

Nếu n = 0 thì giai thừa: = 1

Giai thừa khác: = n * Giai thừa (n-1); {lệnh gọi đệ quy}

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

Kết thúc;

4.3. Thuật toán theo dõi ngược

Toán học:

Xây dựng các bộ gồm n phần tử (x1,…, xn) từ một tập hữu hạn đã cho sao cho các bộ này thỏa mãn một số yêu cầu đã cho b.

Cách tiếp cận chung:

Giả sử k-1 phần tử đầu tiên của dãy đã được xác định: x1, …, xk-1. Chúng ta cần xác định phần tử thứ k. Phần tử được định nghĩa như sau:

– giả sử tk: tập hợp tất cả các giá trị có thể có mà phần tử xk có thể nhận. Vì tập tk là hữu hạn nên ta có thể đặt nk với số phần tử của tk theo một thứ tự nào đó, tức là ta có thể xây dựng từ tập tk thành tập {1, 2, …, nk}.

– Xem xét jÎ {1, 2, …, nk}. Ta nói “j là chấp nhận được” nếu ta có thể thêm phần tử thứ j trong tk là phần tử xk vào dãy x1, …, xk-1, kết quả là dãy x1, …, xk.

– nếu k = n: tuple (x1,…, xk) thỏa mãn yêu cầu b, vì vậy tuple này được tìm nạp.

– if k <n: Ta tiếp tục quá trình trên, tức là ta phải thêm phần tử xk + 1 vào dãy x1,…, xk.

Sau đây là quy trình đệ quy của thuật toán bẻ khóa ngược:

Bộ thu xử lý (k: integer);

var j: integer;

Bắt đầu

Thực hiện cho j: = 1 đến nk

nếu & lt; j chấp nhận được & gt; thì

Bắt đầu

& lt; xác định xk theo j & gt ;;

Nếu k = n thì & lt; chấp nhận một tuple & gt;

Những người nhận khác (k + 1); {return}

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

Kết thúc;

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

XEM THÊM:  Asura là gì? Những Asura mạnh nhất trong thần thoại Hindu - Hồ Sơ Nhân Vật - Nhân vật thần thoại Ấn Độ

Kết thúc;

Bài tập ví dụ

Bài tập 1: Viết hàm tìm giá trị lớn nhất của 2 số thực x, y.

var a, b: real;

Giá trị lớn nhất của hàm (x, y: real): real;

Bắt đầu

Nếu x> y thì max: = x else max: = y;

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

Kết thúc;

Bắt đầu

write (‘nhap a =’); read (a);

Write (‘nhap b =’); Read (b);

writeln (‘Chọn một trong hai:’, max (a, b));

Đọc trong;

Kết thúc.

Bài tập 2: Viết hàm lowcase (c: char): char; để đổi chữ hoa c thành chữ thường.

Ý tưởng:

Trong mã hóa ascii, số thứ tự của chữ hoa ít hơn số thứ tự của chữ thường là 32, vì vậy chúng ta có thể sử dụng hàm chr và ord để chuyển đổi.

Sử dụng crt;

var ch: char;

Chữ thường của hàm (c: char): char;

Bắt đầu

Nếu c trong [‘a’ .. ‘z’] là chữ thường: = chr (ord (c) +32)

Chữ thường khác: = c;

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

Kết thúc;

Bắt đầu

write (‘hãy viết ch =’); read (ch);

writeln (‘chữ thường:’, chữ thường (ch));

Đọc trong;

Kết thúc.

Bài tập 3: Viết thủ tục hoán đổi hai giá trị x, y.

var a, b: real;

Hoán đổi hàm (var x, y: real);

var tam: real;

Bắt đầu

tam: = x; x: = y; y: = tam;

Xem thêm: 24 điểm nhạy cảm của đàn ông và phụ nữ hễ “đụng là lên” • Hello Bacsi

Kết thúc;

Bắt đầu

write (‘nhap a =’); read (a);

Write (‘nhap b =’); Read (b);

Exchange (a, b);

writeln (‘So sánh sau khi hoàn thành: a =’, a: 0: 2, ‘b =’, b: 0: 2);

Đọc trong;

Kết thúc.

Bài tập tự giải

Bài tập 1: Viết 2 hàm tìm số lớn nhất, nhỏ nhất của 3 số thực.

Bài tập 2: Viết chương trình in hoán vị của n số nguyên đầu tiên ra màn hình.

Xem thêm: Stoch RSI là gì? Những lưu ý và cách sử dụng Stochastic RSI hiệu quả

Viết một bình luận