Tải bản đầy đủ (.ppt) (27 trang)

Ngôn ngữ lập trình 5 - Giới thiệu lập trình cấu trúc potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (137.71 KB, 27 trang )

Thế giới lập trình
Bài 5 / Slide
1 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Nội dung chính

Định nghĩa lập trình hướng cấu trúc

Khai báo, hiện thực và gọi thủ tục

Khai báo và gọi thủ tục có tham số

Khai báo, hiện thực và gọi hàm

Khai báo và gọi hàm có tham số

Giới thiệu về tầm vực của biến

Tầm vực của tham số
Thế giới lập trình
Bài 5 / Slide
2 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Lập trình hướng cấu trúc

Trong giai đoạn đầu tiên của ngôn ngữ lập trình, một chương trình
được chấp nhận nếu như nó thực hiện đúng công việc. Người ta
không chú ý đến phương pháp thiết kế và hiện thực chương trình.


Vào khoảng giữa thập niên 60, khi mà công việc máy tính thực
hiện trở nên phức tạp, chương trình đòi hỏi phải được viết hiệu
quả hơn để tiện cho việc dùng lại và phân chia công việc theo
nhóm. Điều này dẫn đến sự ra đời của phương pháp lập trình mới
là lập trình hướng cấu trúc.

Lập trình hướng cấu trúc chia chương trình thành những phân hệ
(module) nhỏ hơn để giải quyết một chức năng nào đó.
Thế giới lập trình
Bài 5 / Slide
3 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Lập trình hướng cấu trúc (tiếp theo)

Một ứng dụng thường được hình thành từ tập hợp các module
tương tác với nhau. Sự kết hợp giữa các module này được điều
khiển bằng module Main.
Module1 Module2 Module3
Main
Program
Thế giới lập trình
Bài 5 / Slide
4 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Lập trình hướng cấu trúc (tiếp theo)

Lưu đồ sau đây minh họa lập trình hướng cấu trúc.
Thế giới lập trình

Bài 5 / Slide
5 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Lập trình hướng cấu trúc (tiếp theo)

Các module trong lập trình hướng cấu trúc là

Thủ tục (procedure)

Hàm (function)
Thế giới lập trình
Bài 5 / Slide
6 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Thủ tục (Procedure)

Thủ tục là tập hợp các câu lệnh thực hiện một công việc nhất định.

Trong lập trình hướng cấu trúc, thủ tục là một trong những cách
hiện thực các module.

Cách làm việc của thủ tục được hiện thực theo cơ chế gọi thủ tục
và trả giá trị về:

Thủ tục được gọi.

Các câu lệnh bên trong thủ tục được thực thi


Dòng điều khiển sẽ chuyển về chương trình gọi thủ tục.
Thế giới lập trình
Bài 5 / Slide
7 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Khai báo, hiện thực và gọi thủ tục

Thủ tục cần phải được khai báo trước khi nó được gọi thực thi.

Thủ tục được khai báo bằng cú pháp như sau:
procedure <procedure_name>

Thủ tục được hiện thực như sau:
procedure <procedure_name>
begin
//Các câu lệnh của thủ tục
end

Gọi thủ tục: call <procedure_name>
Thế giới lập trình
Bài 5 / Slide
8 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Thủ tục có tham số (parameter)

Tham số được xem như cầu nối giữa thủ tục và chương trình gọi.

Tham số bao gồm dữ liệu được dùng (dữ liệu vào) và dữ liệu xử lý

(dữ liệu ra) của thủ tục.

Tham số có thể là biến kiểu số hoặc kiểu chuỗi.

Tham số được dùng cho hai việc chính:

Gởi dữ liệu qua thủ tục

Nhận kết quả trả về từ thủ tục.
Thế giới lập trình
Bài 5 / Slide
9 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Thủ tục có tham số (Tiếp theo)

Thủ tục có tham số được khai báo theo cú pháp sau:
procedure <procedure_name> (input <parameter_data type>, output
<parameter_data type>)

Ví dụ minh họa: Viết một thủ tục tính điểm trung bình của 3 môn học.
Sau đó viết chương trình nhập vào họ tên học viên và điểm của 3 môn
học. Hãy cho biết điểm trung bình của học viên này.
// Khai báo thủ tục
procedure AverageScore (input numeric, input numeric, input
numeric, output numeric)
Thế giới lập trình
Bài 5 / Slide
10 of 27
©NIIT

Giới thiệu lập trình cấu trúc
//Chương trình chính.
begin
character cStudentName
numeric nTest1, nTest2, nTest3, nAverage
display “Enter Student Name”
accept cStudentName
display “Enter scores of Test1”
accept nTest1
display “Enter scores of Test2
accept nTest2
display “Enter scores of Test3
accept nTest3
call AverageScore (nTest1, nTest2, nTest3, nAverage)
display cStudentName, nAverage
end

Thế giới lập trình
Bài 5 / Slide
11 of 27
©NIIT
Giới thiệu lập trình cấu trúc
// Hiện thực thủ tục
procedure AverageScore (input numeric nTest1, input numeric
nTest2, input numeric nTest3, output numeric nAverage)
begin
nAverage=nTest1+nTest2+nTest3
end
Thế giới lập trình
Bài 5 / Slide

12 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Hàm (function)

Hàm là một tập hợp các câu lệnh thực thi một công việc cụ thể. Hàm
và thủ tục có cấu trúc giống nhau nên có thể được dùng để thay thế
cho nhau.

Sự khác nhau giữa hàm và thủ tục là thủ tục không trả về giá trị cho
chương trình gọi còn hàm thì trả về giá trị cho chương trình gọi.

Cách làm việc của hàm được hiện thực theo cơ chế gọi hàm và trả giá
trị về:

Hàm được gọi.

Các câu lệnh bên trong hàm được thực thi

Dòng điều khiển sẽ chuyển về chương trình gọi cùng với giá trị
trả về của hàm.
Thế giới lập trình
Bài 5 / Slide
13 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Khai báo, hiện thực và gọi hàm

Hàm phải được khai báo trước khi gọi. Cú pháp khai báo hàm như
sau: function <function_name>


Hàm được hiện thực giống như thủ tục, chỉ có sự khác biệt là câu lệnh
cuối cùng của hàm là câu lệnh trả giá trị về cho chương trình gọi. Cú
pháp của hiện thực hàm như sau:
function <function_name>
begin
//the function statements
return // The function returns some value
End
Thế giới lập trình
Bài 5 / Slide
14 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Khai báo, hiện thực và gọi hàm (tiếp theo)

Hàm sau khi đã khai báo và hiện thực có thể được sử dụng trong
chương trình. Để dùng hàm thì ta dùng câu lệnh gọi hàm và câu lệnh
này có cú pháp như sau:
call <function_name>.
Thế giới lập trình
Bài 5 / Slide
15 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Tham số của hàm

Tham số của hàm đóng vai trò cầu nối giữa hàm và chương trình gọi.

Hàm nhận dữ liệu từ chương trình gọi thông qua tham số. Nếu hàm có

nhiều tham số thì giữa các tham số này được phân cách bằng dấu
phảy.

Không giống như thủ tục, tham số của hàm thường được dùng để
nhận dữ liệu vào của hàm. Dữ liệu ra thường được trả về qua câu lệnh
return.

Ví dụ minh họa: Viết một hàm nhân 2 số. Sau đó viết chương trình
nhập vào 2 số và cho biết tích của 2 số đó.
Thế giới lập trình
Bài 5 / Slide
16 of 27
©NIIT
Giới thiệu lập trình cấu trúc
// Hàm nhân 2 số
function ProductOfNumbers(numeric nNum1, nNum2)
begin
numeric nNumber3
nNumber3= nNum1*nNum2
return nNumber3
end
//Chương trình chính
begin
numeric nNumber1, nNnumber2, nResult
display “Enter the first number”
accept nNumber1
display “Enter the second number”
accept nNumber2
result = call ProductOfNumbers(nNumber1, nNumber2)
display result

end
Thế giới lập trình
Bài 5 / Slide
17 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Tầm vực của biến

Biến được định nghĩa bên trong hay bên ngòai khối begin và end của
chương trình chính, của thủ tục và hàm.

Tùy vào nơi biến được khai báo mà biến có thể có tầm vực sử dụng
khác nhau. Biến có 2 tầm vực sử dụng:

Tầm vực cục bộ (local scope)

Tầm vực toàn cục (global scope)
Thế giới lập trình
Bài 5 / Slide
18 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Tầm vực cục bộ

Biến được định nghĩa bên trong khối begin … end của chương trình
chính hoặc là thủ tục và hàm có tầm vực cục bộ.

Biến có tầm vực cục bộ gọi là biến cục bộ.

Khi chương trình đang chạy:


Biến cục bộ sẽ được tạo ra khi khối begin … end của chương trình
chính hoặc của thủ tục và hàm được chạy.

Biến cục bộ sẽ bị hủy đi khi thực thi xong khối begin … end.
Thế giới lập trình
Bài 5 / Slide
19 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Ví dụ về tầm vực cục bộ
Thế giới lập trình
Bài 5 / Slide
20 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Tầm vực toàn cục

Biến có tầm vực tòan cục có thể được sử dụng bất kỳ nơi đâu trong
chương trình. Biến có tầm vực tòan cục được gọi là biến toàn cục.

Biến tòan cục được khai báo bên ngòai khối begin … end của chương
trình chính và bên ngòai hàm, thủ tục.
Thế giới lập trình
Bài 5 / Slide
21 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Ví dụ về tầm vực toàn cục
numeric nScore //Global variable nScore is declared

character cGrade //Global variable cGrade is declared
begin
display “enter your score”
accept nScore
call AssignGrade
end
procedure AssignGrade
begin
if nScore > 80
begin
cGrade = “A” //Grade is assigned a value “A”
display cGrade //Value of Grade is displayed
end
end
Thế giới lập trình
Bài 5 / Slide
22 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Tầm vực của tham số

Tham số của thủ tục và hàm chỉ được truy xuất bởi chính thủ tục và
hàm đó. Điều này ngầm định rằng tham số chính là biến cục bộ của
hàm và thủ tục.

Tầm vực của tham số có các đặt điểm như sau:

Tham số chỉ tồn tại bên trong hàm và thủ tục mà nó được định
nghĩa. Tham số không được truy xuất từ bên ngòai hàm và thủ tục.


Giá trị của tham số được lưu giữ trong quá trình hàm và thủ tục
được thực thi.

Giá trị của tham số được khởi động lại mỗi lần hàm và thủ tục
được gọi.
Thế giới lập trình
Bài 5 / Slide
23 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Ví dụ về tầm vực của tham số
begin
call FindGreater(20,30)
display number1 //Lỗi vì không truy xuất được number1
end
procedure FindGreater (numeric number1, numeric number2)
begin
if number1>number2
display “number1 is greater”
if number2>number1
display “number2 is greater”
else
display “both numbers are equal”
end
Thế giới lập trình
Bài 5 / Slide
24 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Tóm tắt

Trong bài này các bạn đã được học:

Lập trình hướng cấu trúc là chia chương trình thành những module
nhỏ hơn gọi là hàm và thủ tục.

Thủ tục là một tập hợp các câu lệnh để thực thi một công việc cụ thể
nào đó.

Tham số nhập và tham số xuất dùng được dùng trong thủ tục để nhận
giá trị truyền vào và giá trị trả về của thủ tục.

Hàm là một tập hợp các câu lệnh để thực thi một công việc cụ thể nào
đó.
Thế giới lập trình
Bài 5 / Slide
25 of 27
©NIIT
Giới thiệu lập trình cấu trúc
Tóm tắt (Tiếp theo)

Thủ tục không trả về giá trị cho chương trình gọi, hàm có trả về giá trị
cho chương trình gọi.

Sự truy xuất đến các biến trong mã giã được gọi là tầm vực của biến.

Biến được phân thành hai loại là biến toàn cục và biến cục bộ.

Biến cục bộ được tạo ra khi hàm và thủ tục được gọi và tự động hủy
khi hàm và thủ tục thực hiện xong.


Biến toàn cục được sử dụng ở mọi nơi trong chương trình.

×