SlideShare a Scribd company logo
1 of 6
Download to read offline
KỸ THUẬT LẬP TRÌNH                                                 HÀM VÀ THỦ TỤC


KỸ THUẬT PHÁT TRIỂN CHƯƠNG TRÌNH                                     Thủ tục (Procedures) và Hàm (functions) thể hiện
                                                                     hai dạng của chương tình con (subprograms)
NỘI DUNG                                                             Cho phép lặp đi lặp lại một đoạn code hoặc một tính
  Hàm và Thủ tục                                                     toán nhất định.

  Phát triển chương trình bằng phương pháp tinh                      Hàm/thủ tục có thể được gọi từ nhiều chỗ khác nhau
  chỉnh dần từng bước.                                               trong chương trình.
                                                                          – Bằng cách thay thế một dãy các chỉ thị bởi một lệnh duy nhất
  Định nghĩa và sử dụng hàm trong ngôn ngữ C                                (lệnh gọi hàm/thủ tục) sẽ giúp mã nguồn dễ đọc và dễ duyệt lỗi
                                                                            hơn.
  Hàm/thủ tục đệ quy
                                                                     Hàm có kết quả trả về còn thủ tục thì không.

                                                               0                                                                             1




 Đối số và Tham biến (Arguments and Parameters)                    Vài điểm quan trọng về đối và tham biến của chương trình con:
                                                                     Số lượng đối số hay tham số thực sự (arguments) nhất thiết phải
 Ví dụ
                                                                     bằng số tham biến (parameters)
  { Cộng num1 và num2 rồi ghi kết quả vào biến sum}
                                                                     Thứ tự là quan trọng. Đối số đầu tiên tương ứng với tham biến đầu
  Procedure Adder(num1 : real; num2 : real; var sum : real);         tiên, đối số thứ k tương ứng với tham biến thứ k, …
  begin                                                              Kiểu dữ liệu của mỗi đối số phải tương thích với kiểu dữ liệu của
                                                                     tham biến tương ứng.
     sum := num1 + num2;
                                                                     Tên không quan trọng. Tên của đối số không nhất thiết phải giống
  end;
                                                                     với tên tham biến tương ứng của nó.
 Phạm vi của các biến:                                               Phân biệt hai cách truyền dữ liệu cho hàm/thủ tục: truyền theo
  • biến cục bộ trong chương trình con                               tham chiếu ( by reference ) hay truyền theo trị (by value)

  • biến toàn cục
                                                               2                                                                             3
Truyền theo tham chiếu: vị trí trong bộ nhớ (địa chỉ)                   Ưu điểm của các hàm/thủ tục
  của đối số được truyền cho chương trình con, cho phép                    • Chia tách và kiểm soát (“Chia để trị”)
  chương trình con truy nhập tới biến thực sự và thay đổi
                                                                               – Khả năng quản lý chương trình và phát triển
  nội dung của nó.
                                                                           • Khả năng sử dụng lại các hàm/thủ tục
  Truyền theo trị: giá trị của đối số được truyền cho
                                                                               – Sử dụng các hàm/thủ tục đã có sẵn, chạy ổn định để xây
  chương trình con, cho phép chương trình con truy nhập                          dựng các khối chương trình mới
  đến “bản sao” của biến. Truyền theo trị bảo toàn nội
                                                                               – Tính trừu tượng: che dấu các chi tiết bên trong hàm
  dung của biến ban đầu.
                                                                               – Tránh phải lặp lại một đoạn chương trình (code)




                                                                     4                                                                    5




Các bước thực hiện phát triển chương trình                               Các bước thực hiện phát triển chương trình

  Hiểu rõ yêu cầu bài toán: có thể diễn đạt lại bài toán                  Hình thành ý tưởng về cách giải bài toán
  bằng ngôn ngữ đặc tả, các kí hiệu toán học hay các                       • Chương trình có thể được phân tách thành các quá trình rời
  công thức.                                                                 rạc (các mô đun) như thế nào?
  • Mục tiêu chung của chương trình là gì?                                 • Chương trình chính sẽ sử dụng các mô đun này như thế nào?
                                                                             Các mô đun giao tiếp với nhau như thế nào?
  • Chương trình cần dữ liệu vào là gì?
                                                                           • Những mô đun này có cần tách thành các phần chức năng nhỏ
  • Dữ liệu ra của chương trình là gì? sẽ như thế nào? kết xuất ra
                                                                             hơn?
    đâu? (màn hình, máy in, đĩa?)
  • Công thức tính hay cách xử lý thế nào để có kết quả (dữ liệu)
    ra?
  • Dữ liệu vào và ra nên ở định dạng nào?


                                                                     6                                                                    7
PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

 Thiết kế thuật toán bằng phương pháp tinh chỉnh dần                       Chiến lược thiết kế từ trên xuống (top - down)
 từng bước.                                                                • Thiết kế giải thuật từ tổng thể đến chi tiết
 Cài đặt chương trình theo thuật toán                                      • Module hoá bài toán
 •   Viết chương trình chính (việc viết các mô đun như thế nào sẽ              – Chia bài toán (module chính) thành các module con cho đến khi
     hoàn thiện sau. Thay vào đó, có thể tạm đưa ra những lệnh                   mỗi module con là một bài toán đã biết cách giải quyết
     giả định để chương trình có thể họat động. Điều này cho               • “Chia để trị”
     phép thử nghiệm tính logic của chương trình chính).
                                                                               – Chia (Divide): Chia bài toán lớn, thành nhiều bài toán nhỏ
 •   Cuối cùng, viết các mô đun. Kiểm nghiệm và duyệt lỗi từng mô              – Trị (Conquer): Sử dụng thuật toán đệ quy để giải từng bài toán
     đun thật kỹ rồi trước khi đưa vào chương trình chính. Nếu mô                nhỏ
     đun được phân tách thành nhiều tiến trình nhỏ hơn thì phải
                                                                               – Kết hợp (Combine): Tạo ra lời giải cho bài toán cuối cùng bằng
     viết mã (code) cho các tiến trình này trước, thử nghiệm và
                                                                                 cách sử dụng thông tin từ kết quả giải các bài toán nhỏ.
     duyệt lỗi cẩn thận rồi mới ghép lại thành mô đun.

                                                                     8                                                                            9




PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC                                          PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

 Stepwise refinement                                                       Bài toán: Tìm các số có 2 chữ số mà khi đảo trật tự của
                                                                           hai số đó sẽ được một số nguyên tố cùng nhau với số
 Tinh thần: module hoá bài toán, thiết kế kiểu top-down
                                                                           đã cho.
 • Bước 0. Trình bày ý chính của giải thuật bằng ngôn ngữ tự
   nhiên.                                                                  Bước 0:
             ? Làm cái gì?

 • Bước 1 trở đi: Chi tiết hoá dần những ý trong giải thuật, sử
   dụng nhiều ngôn ngữ giả code (giả mã − pseudo code) hơn.
   Kết quả cuối cùng của quá trình tinh chỉnh là chương trình viết
   trên ngôn ngữ lập trình đã chọn trước với cấu trúc dữ liệu dạng
   lưu trữ, cài đặt cụ thể.
             ? Làm như thế nào?


                                                                     10                                                                           11
PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC                                                 PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

 Bước 1.                                                                          Bước 2.
 • Dữ liệu vào:                                                                   Function Tim
 • Dữ liệu ra:                                                                    • Vào:
 • Ý tưởng thuật toán:                                                            • Ra: mảng S và n
     – Tìm các số từ 10 đến 99 thoả mãn yêu cầu và ghi vào mảng S và n
                                                                                  • Biến nguyên n lưu số lượng các số tìm được
       là số lượng các số tìm được.
     – Hiển thị kết quả từ mảng S.                                                  1.        n := 0;
                                                                                    2.        Với mỗi số x trong [10..99],
                                                                                  Kiểm tra xem x có số đảo là nguyên tố cùng nhau hay không, nếu
                                                                                    đúng thì đưa x vào mảng S và n := n + 1;



                                                                            12                                                                      13




PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC                                                 PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

 Bước 3. Hàm tìm số đảo                                                           Bước 4. Kiểm tra xem x và số đảo của nó có nguyên tố
 • Function Sodao                                                                 cùng nhau hay không
     – Vào: x là số nguyên dương                                                  Function NTCN
     – Ra: Số đảo của x                                                           • Vào:      x là số nguyên dương
     – Ý tưởng: Từ x, lần lượt lấy các chữ số từ bên phải của x để tạo số
                                                                                  • Ra:       True, nếu x và số đảo nguyên tố cùng nhau
       y từ trái sang phải.
       1. Khởi đầu y:=0                                                                       False, nếu ngược lại.

       2. Với x> 0, lặp quá trình lấy chữ số hàng đơn vị của x bổ sung            • Ý tưởng: x là nguyên tố cùng nhau với số đảo của x khi và chỉ
       vào bên phải y                                                               khi UCLN(x, Sodao(x)) = 1.
             Tính y := y * 10 + (x mod 10) rồi x := x div 10                       if UCLN(x, Sodao(x)) = 1 then Return True
       3. Trả về số đảo là y                                                        else Return False;

                                                                            14                                                                      15
PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC                                                        PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

 Bước 5. Tìm UCLN của hai số nguyên dương: Thuật toán Euclid                             Bước 6.
 • Function UCLN                                                                         • Hàm tìm UCLN
 • Vào: m, n nguyên (m >= n>= 0)                                                            Function UCLN(a,b: integer) : integer;
                                                                                                        Var r: integer;
 • Ra: UCLN là ước chung lớn nhất của m,n
                                                                                                        Begin
 •   Biến r là số nguyên dương                                                                                  If m < n then
      1. Nếu m>n thì chuyển sang bước 2, ngược lại, hoán chuyển giá trị của m và                                          Begin r := m; m := n; n := r; end;
         n.                                                                                                     While n > 0 do
      2. Nếu n bằng 0 thì trả về UCLN = m và kết thúc thuật toán                                                          Begin
                Ngược lại, chuyển sang bước 4.                                                                                       r := m MOD n;

      3. Tính r là phần dư của phép chia m cho n.                                                                                    m := n; n := r;
                                                                                                                          end;
      4. Gán giá trị của n cho m và của r cho n. Quay lại bước 2.
                                                                                                                UCLN := m;
                                                                                                        End;
                                                                                   16                                                                          17




PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC                                                        PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

 • Function Sodao(x: integer): integer;                                                  • Function NTCN (x: integer): Boolean;
             Var y: integer;                                                                Begin
             Begin                                                                            If UCLN(x, Sodao(x)) = 1 then NTCN := True
                y := 0;                                                                       Else NTCN := false;
                while x > 0 do                                                              End;
                begin
                          y := 10*y + (x MOD 10);
                          x := x DIV 10;
                end;
                Sodao := y;
           End;

                                                                                   18                                                                          19
PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

  • Function Tim(Var s: array[1..80] of integer):integer;        Bước 7. Cài đặt chương trình theo thuật toán (Bài tập!)
          Var x, n: integer;
          Begin
            n := 0;
            for x := 10 to 99 do
                 if NTCN(x) then
                         begin         n := n + 1;
                                       s[d] := x;
                         end;
            Tim := n;
          end;

                                                            20                                                             21




Bài tập

 Phát triển chương trình thực hiện các thao tác trên
 phân số:
  • Nhập vào phân số
  • Hiển thị phân số
  • Cộng, trừ hai phân số
  • Nhân, chia hai phân số




                                                            22

More Related Content

Viewers also liked

методология планирования меню американской национальной программы школьных об...
методология планирования меню американской национальной программы школьных об...методология планирования меню американской национальной программы школьных об...
методология планирования меню американской национальной программы школьных об...Sokirianskiy&Lazerson School
 
Creating seo blogposts
Creating seo blogpostsCreating seo blogposts
Creating seo blogpostsrfair404
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_kIBM
 
iPad guidebook v1.5
iPad guidebook v1.5iPad guidebook v1.5
iPad guidebook v1.5윤필 천
 
2010 back to school night presentation
2010 back to school night presentation2010 back to school night presentation
2010 back to school night presentationmicklethwait
 
Arena Multimedia Media Plan (shared using VisualBee)
Arena Multimedia Media Plan  
(shared using VisualBee)Arena Multimedia Media Plan  
(shared using VisualBee)
Arena Multimedia Media Plan (shared using VisualBee)Satyam Arora
 
01 Address Book - Generic
01   Address Book - Generic01   Address Book - Generic
01 Address Book - GenericG2F, Inc.
 
Seo rankings report for excelcontractor.com sept 2010
Seo rankings report for excelcontractor.com   sept 2010Seo rankings report for excelcontractor.com   sept 2010
Seo rankings report for excelcontractor.com sept 2010NetSolutions Group LLC
 
Jiayun Hodges Work Samples
Jiayun  Hodges   Work SamplesJiayun  Hodges   Work Samples
Jiayun Hodges Work Samplesjhuang28
 
Smartsteam презентация бесбойлерных стимеров
Smartsteam  презентация бесбойлерных стимеровSmartsteam  презентация бесбойлерных стимеров
Smartsteam презентация бесбойлерных стимеровSokirianskiy&Lazerson School
 
Coğrafi bölgeler
Coğrafi bölgelerCoğrafi bölgeler
Coğrafi bölgeleraybars
 

Viewers also liked (20)

методология планирования меню американской национальной программы школьных об...
методология планирования меню американской национальной программы школьных об...методология планирования меню американской национальной программы школьных об...
методология планирования меню американской национальной программы школьных об...
 
Kelly thankful
Kelly thankfulKelly thankful
Kelly thankful
 
CSS3 Media Queries
CSS3 Media QueriesCSS3 Media Queries
CSS3 Media Queries
 
Семинары Сокирянского
Семинары СокирянскогоСеминары Сокирянского
Семинары Сокирянского
 
Jamie thankful
Jamie thankfulJamie thankful
Jamie thankful
 
Creating seo blogposts
Creating seo blogpostsCreating seo blogposts
Creating seo blogposts
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k
 
First class
First classFirst class
First class
 
iPad guidebook v1.5
iPad guidebook v1.5iPad guidebook v1.5
iPad guidebook v1.5
 
2010 back to school night presentation
2010 back to school night presentation2010 back to school night presentation
2010 back to school night presentation
 
Perfect egg sous vide style
Perfect egg sous vide stylePerfect egg sous vide style
Perfect egg sous vide style
 
TERRA MATER
TERRA MATER TERRA MATER
TERRA MATER
 
Detectortestors
DetectortestorsDetectortestors
Detectortestors
 
Arena Multimedia Media Plan (shared using VisualBee)
Arena Multimedia Media Plan  
(shared using VisualBee)Arena Multimedia Media Plan  
(shared using VisualBee)
Arena Multimedia Media Plan (shared using VisualBee)
 
01 Address Book - Generic
01   Address Book - Generic01   Address Book - Generic
01 Address Book - Generic
 
Seo rankings report for excelcontractor.com sept 2010
Seo rankings report for excelcontractor.com   sept 2010Seo rankings report for excelcontractor.com   sept 2010
Seo rankings report for excelcontractor.com sept 2010
 
Ung dung web chuong 8
Ung dung web  chuong 8Ung dung web  chuong 8
Ung dung web chuong 8
 
Jiayun Hodges Work Samples
Jiayun  Hodges   Work SamplesJiayun  Hodges   Work Samples
Jiayun Hodges Work Samples
 
Smartsteam презентация бесбойлерных стимеров
Smartsteam  презентация бесбойлерных стимеровSmartsteam  презентация бесбойлерных стимеров
Smartsteam презентация бесбойлерных стимеров
 
Coğrafi bölgeler
Coğrafi bölgelerCoğrafi bölgeler
Coğrafi bölgeler
 

Similar to 4.1.phat trien ct ham-thutuc-tktt

Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1volll
 
T d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuongT d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuongtoiseden91
 
Lap trinh huong doi tuong voi java tran dinh que
Lap trinh huong doi tuong voi java   tran dinh queLap trinh huong doi tuong voi java   tran dinh que
Lap trinh huong doi tuong voi java tran dinh queNguyễn Công Hoàng
 
Lập trình hướng đối tượng với Java - Trần Đình Quế
Lập trình hướng đối tượng với Java  - Trần Đình QuếLập trình hướng đối tượng với Java  - Trần Đình Quế
Lập trình hướng đối tượng với Java - Trần Đình Quếf3vthd
 
Bài tập công nghệ phần mềm
Bài tập công nghệ phần mềmBài tập công nghệ phần mềm
Bài tập công nghệ phần mềmLượng Võ Đại
 
ggggggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggggggggggggggggggggggggggggggggggggggggHngPhmTh35
 
CONG NGHE PHAN MEM
CONG NGHE PHAN MEMCONG NGHE PHAN MEM
CONG NGHE PHAN MEMduc phong
 
How to write good code
How to write good code How to write good code
How to write good code Minh Hoang
 
K34103001 nhom 01
K34103001 nhom 01K34103001 nhom 01
K34103001 nhom 01SP Tin K34
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functionsHồ Lợi
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programmingDucLe868608
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGTrường Phạm
 
Slide Các kỹ thuật bảo trì phần mềm
Slide Các kỹ thuật bảo trì phần mềmSlide Các kỹ thuật bảo trì phần mềm
Slide Các kỹ thuật bảo trì phần mềmNguyễn Anh
 
Ngon ngu lap_trinh_c++
Ngon ngu lap_trinh_c++Ngon ngu lap_trinh_c++
Ngon ngu lap_trinh_c++Da To
 

Similar to 4.1.phat trien ct ham-thutuc-tktt (20)

Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1
 
T d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuongT d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuong
 
Lap trinh huong doi tuong voi java tran dinh que
Lap trinh huong doi tuong voi java   tran dinh queLap trinh huong doi tuong voi java   tran dinh que
Lap trinh huong doi tuong voi java tran dinh que
 
Lập trình hướng đối tượng với Java - Trần Đình Quế
Lập trình hướng đối tượng với Java  - Trần Đình QuếLập trình hướng đối tượng với Java  - Trần Đình Quế
Lập trình hướng đối tượng với Java - Trần Đình Quế
 
Lthdt
LthdtLthdt
Lthdt
 
Bài tập công nghệ phần mềm
Bài tập công nghệ phần mềmBài tập công nghệ phần mềm
Bài tập công nghệ phần mềm
 
Dsd02 sta
Dsd02 staDsd02 sta
Dsd02 sta
 
ggggggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
ggggggggggggggggggggggggggggggggggggggggggggggggggg
 
CONG NGHE PHAN MEM
CONG NGHE PHAN MEMCONG NGHE PHAN MEM
CONG NGHE PHAN MEM
 
Chuong 09 vb
Chuong 09   vbChuong 09   vb
Chuong 09 vb
 
How to write good code
How to write good code How to write good code
How to write good code
 
K34103001 nhom 01
K34103001 nhom 01K34103001 nhom 01
K34103001 nhom 01
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functions
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programming
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 
Slide Các kỹ thuật bảo trì phần mềm
Slide Các kỹ thuật bảo trì phần mềmSlide Các kỹ thuật bảo trì phần mềm
Slide Các kỹ thuật bảo trì phần mềm
 
Ngon ngu lap_trinh_c++
Ngon ngu lap_trinh_c++Ngon ngu lap_trinh_c++
Ngon ngu lap_trinh_c++
 
Bai 17
Bai 17Bai 17
Bai 17
 
Quan ly bo nho
Quan ly bo nhoQuan ly bo nho
Quan ly bo nho
 
1.OOP Introduction (1).pptx
1.OOP Introduction (1).pptx1.OOP Introduction (1).pptx
1.OOP Introduction (1).pptx
 

More from Giang Nguyễn

Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comGiang Nguyễn
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlGiang Nguyễn
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Giang Nguyễn
 
Hay php architect eav modeling
Hay php architect   eav modelingHay php architect   eav modeling
Hay php architect eav modelingGiang Nguyễn
 
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongHaiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongGiang Nguyễn
 
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlHaiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlGiang Nguyễn
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlGiang Nguyễn
 
Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Giang Nguyễn
 
Canbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameCanbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameGiang Nguyễn
 
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuBuilding websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuGiang Nguyễn
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release reviewGiang Nguyễn
 
Bai tap lap trinh web voi joomla csau
Bai tap   lap trinh web voi joomla csauBai tap   lap trinh web voi joomla csau
Bai tap lap trinh web voi joomla csauGiang Nguyễn
 

More from Giang Nguyễn (20)

Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.com
 
Os xmldomphp
Os xmldomphpOs xmldomphp
Os xmldomphp
 
Os php-7oohabits
Os php-7oohabitsOs php-7oohabits
Os php-7oohabits
 
Os php-5.3new1
Os php-5.3new1Os php-5.3new1
Os php-5.3new1
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sql
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01
 
Php day4
Php day4Php day4
Php day4
 
Hay php architect eav modeling
Hay php architect   eav modelingHay php architect   eav modeling
Hay php architect eav modeling
 
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongHaiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
 
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlHaiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
 
Chuong07 php
Chuong07 phpChuong07 php
Chuong07 php
 
Bai th08 php voi csdl
Bai th08 php voi csdlBai th08 php voi csdl
Bai th08 php voi csdl
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sql
 
Hd lap pttkht2008
Hd lap pttkht2008Hd lap pttkht2008
Hd lap pttkht2008
 
Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206
 
Canbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameCanbanvethietkevalaptrinhgame
Canbanvethietkevalaptrinhgame
 
C1
C1C1
C1
 
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuBuilding websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
 
Bai tap lap trinh web voi joomla csau
Bai tap   lap trinh web voi joomla csauBai tap   lap trinh web voi joomla csau
Bai tap lap trinh web voi joomla csau
 

4.1.phat trien ct ham-thutuc-tktt

  • 1. KỸ THUẬT LẬP TRÌNH HÀM VÀ THỦ TỤC KỸ THUẬT PHÁT TRIỂN CHƯƠNG TRÌNH Thủ tục (Procedures) và Hàm (functions) thể hiện hai dạng của chương tình con (subprograms) NỘI DUNG Cho phép lặp đi lặp lại một đoạn code hoặc một tính Hàm và Thủ tục toán nhất định. Phát triển chương trình bằng phương pháp tinh Hàm/thủ tục có thể được gọi từ nhiều chỗ khác nhau chỉnh dần từng bước. trong chương trình. – Bằng cách thay thế một dãy các chỉ thị bởi một lệnh duy nhất Định nghĩa và sử dụng hàm trong ngôn ngữ C (lệnh gọi hàm/thủ tục) sẽ giúp mã nguồn dễ đọc và dễ duyệt lỗi hơn. Hàm/thủ tục đệ quy Hàm có kết quả trả về còn thủ tục thì không. 0 1 Đối số và Tham biến (Arguments and Parameters) Vài điểm quan trọng về đối và tham biến của chương trình con: Số lượng đối số hay tham số thực sự (arguments) nhất thiết phải Ví dụ bằng số tham biến (parameters) { Cộng num1 và num2 rồi ghi kết quả vào biến sum} Thứ tự là quan trọng. Đối số đầu tiên tương ứng với tham biến đầu Procedure Adder(num1 : real; num2 : real; var sum : real); tiên, đối số thứ k tương ứng với tham biến thứ k, … begin Kiểu dữ liệu của mỗi đối số phải tương thích với kiểu dữ liệu của tham biến tương ứng. sum := num1 + num2; Tên không quan trọng. Tên của đối số không nhất thiết phải giống end; với tên tham biến tương ứng của nó. Phạm vi của các biến: Phân biệt hai cách truyền dữ liệu cho hàm/thủ tục: truyền theo • biến cục bộ trong chương trình con tham chiếu ( by reference ) hay truyền theo trị (by value) • biến toàn cục 2 3
  • 2. Truyền theo tham chiếu: vị trí trong bộ nhớ (địa chỉ) Ưu điểm của các hàm/thủ tục của đối số được truyền cho chương trình con, cho phép • Chia tách và kiểm soát (“Chia để trị”) chương trình con truy nhập tới biến thực sự và thay đổi – Khả năng quản lý chương trình và phát triển nội dung của nó. • Khả năng sử dụng lại các hàm/thủ tục Truyền theo trị: giá trị của đối số được truyền cho – Sử dụng các hàm/thủ tục đã có sẵn, chạy ổn định để xây chương trình con, cho phép chương trình con truy nhập dựng các khối chương trình mới đến “bản sao” của biến. Truyền theo trị bảo toàn nội – Tính trừu tượng: che dấu các chi tiết bên trong hàm dung của biến ban đầu. – Tránh phải lặp lại một đoạn chương trình (code) 4 5 Các bước thực hiện phát triển chương trình Các bước thực hiện phát triển chương trình Hiểu rõ yêu cầu bài toán: có thể diễn đạt lại bài toán Hình thành ý tưởng về cách giải bài toán bằng ngôn ngữ đặc tả, các kí hiệu toán học hay các • Chương trình có thể được phân tách thành các quá trình rời công thức. rạc (các mô đun) như thế nào? • Mục tiêu chung của chương trình là gì? • Chương trình chính sẽ sử dụng các mô đun này như thế nào? Các mô đun giao tiếp với nhau như thế nào? • Chương trình cần dữ liệu vào là gì? • Những mô đun này có cần tách thành các phần chức năng nhỏ • Dữ liệu ra của chương trình là gì? sẽ như thế nào? kết xuất ra hơn? đâu? (màn hình, máy in, đĩa?) • Công thức tính hay cách xử lý thế nào để có kết quả (dữ liệu) ra? • Dữ liệu vào và ra nên ở định dạng nào? 6 7
  • 3. PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Thiết kế thuật toán bằng phương pháp tinh chỉnh dần Chiến lược thiết kế từ trên xuống (top - down) từng bước. • Thiết kế giải thuật từ tổng thể đến chi tiết Cài đặt chương trình theo thuật toán • Module hoá bài toán • Viết chương trình chính (việc viết các mô đun như thế nào sẽ – Chia bài toán (module chính) thành các module con cho đến khi hoàn thiện sau. Thay vào đó, có thể tạm đưa ra những lệnh mỗi module con là một bài toán đã biết cách giải quyết giả định để chương trình có thể họat động. Điều này cho • “Chia để trị” phép thử nghiệm tính logic của chương trình chính). – Chia (Divide): Chia bài toán lớn, thành nhiều bài toán nhỏ • Cuối cùng, viết các mô đun. Kiểm nghiệm và duyệt lỗi từng mô – Trị (Conquer): Sử dụng thuật toán đệ quy để giải từng bài toán đun thật kỹ rồi trước khi đưa vào chương trình chính. Nếu mô nhỏ đun được phân tách thành nhiều tiến trình nhỏ hơn thì phải – Kết hợp (Combine): Tạo ra lời giải cho bài toán cuối cùng bằng viết mã (code) cho các tiến trình này trước, thử nghiệm và cách sử dụng thông tin từ kết quả giải các bài toán nhỏ. duyệt lỗi cẩn thận rồi mới ghép lại thành mô đun. 8 9 PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Stepwise refinement Bài toán: Tìm các số có 2 chữ số mà khi đảo trật tự của hai số đó sẽ được một số nguyên tố cùng nhau với số Tinh thần: module hoá bài toán, thiết kế kiểu top-down đã cho. • Bước 0. Trình bày ý chính của giải thuật bằng ngôn ngữ tự nhiên. Bước 0: ? Làm cái gì? • Bước 1 trở đi: Chi tiết hoá dần những ý trong giải thuật, sử dụng nhiều ngôn ngữ giả code (giả mã − pseudo code) hơn. Kết quả cuối cùng của quá trình tinh chỉnh là chương trình viết trên ngôn ngữ lập trình đã chọn trước với cấu trúc dữ liệu dạng lưu trữ, cài đặt cụ thể. ? Làm như thế nào? 10 11
  • 4. PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Bước 1. Bước 2. • Dữ liệu vào: Function Tim • Dữ liệu ra: • Vào: • Ý tưởng thuật toán: • Ra: mảng S và n – Tìm các số từ 10 đến 99 thoả mãn yêu cầu và ghi vào mảng S và n • Biến nguyên n lưu số lượng các số tìm được là số lượng các số tìm được. – Hiển thị kết quả từ mảng S. 1. n := 0; 2. Với mỗi số x trong [10..99], Kiểm tra xem x có số đảo là nguyên tố cùng nhau hay không, nếu đúng thì đưa x vào mảng S và n := n + 1; 12 13 PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Bước 3. Hàm tìm số đảo Bước 4. Kiểm tra xem x và số đảo của nó có nguyên tố • Function Sodao cùng nhau hay không – Vào: x là số nguyên dương Function NTCN – Ra: Số đảo của x • Vào: x là số nguyên dương – Ý tưởng: Từ x, lần lượt lấy các chữ số từ bên phải của x để tạo số • Ra: True, nếu x và số đảo nguyên tố cùng nhau y từ trái sang phải. 1. Khởi đầu y:=0 False, nếu ngược lại. 2. Với x> 0, lặp quá trình lấy chữ số hàng đơn vị của x bổ sung • Ý tưởng: x là nguyên tố cùng nhau với số đảo của x khi và chỉ vào bên phải y khi UCLN(x, Sodao(x)) = 1. Tính y := y * 10 + (x mod 10) rồi x := x div 10 if UCLN(x, Sodao(x)) = 1 then Return True 3. Trả về số đảo là y else Return False; 14 15
  • 5. PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Bước 5. Tìm UCLN của hai số nguyên dương: Thuật toán Euclid Bước 6. • Function UCLN • Hàm tìm UCLN • Vào: m, n nguyên (m >= n>= 0) Function UCLN(a,b: integer) : integer; Var r: integer; • Ra: UCLN là ước chung lớn nhất của m,n Begin • Biến r là số nguyên dương If m < n then 1. Nếu m>n thì chuyển sang bước 2, ngược lại, hoán chuyển giá trị của m và Begin r := m; m := n; n := r; end; n. While n > 0 do 2. Nếu n bằng 0 thì trả về UCLN = m và kết thúc thuật toán Begin Ngược lại, chuyển sang bước 4. r := m MOD n; 3. Tính r là phần dư của phép chia m cho n. m := n; n := r; end; 4. Gán giá trị của n cho m và của r cho n. Quay lại bước 2. UCLN := m; End; 16 17 PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC • Function Sodao(x: integer): integer; • Function NTCN (x: integer): Boolean; Var y: integer; Begin Begin If UCLN(x, Sodao(x)) = 1 then NTCN := True y := 0; Else NTCN := false; while x > 0 do End; begin y := 10*y + (x MOD 10); x := x DIV 10; end; Sodao := y; End; 18 19
  • 6. PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC • Function Tim(Var s: array[1..80] of integer):integer; Bước 7. Cài đặt chương trình theo thuật toán (Bài tập!) Var x, n: integer; Begin n := 0; for x := 10 to 99 do if NTCN(x) then begin n := n + 1; s[d] := x; end; Tim := n; end; 20 21 Bài tập Phát triển chương trình thực hiện các thao tác trên phân số: • Nhập vào phân số • Hiển thị phân số • Cộng, trừ hai phân số • Nhân, chia hai phân số 22