한국   대만   중국   일본 
Ch??ng trinh con ? Wikipedia ti?ng Vi?t B??c t?i n?i dung

Ch??ng trinh con

Bach khoa toan th? m? Wikipedia

Trong khoa h?c may tinh , ch??ng trinh con (subprogram) hay subroutine la m?t đo?n ch??ng trinh đ??c đong goi thanh m?t đ?n v? trinh, no th?c hi?n m?t s? tac v? c? th? ma ch??ng trinh c?n th?c hi?n nhi?u l?n t? nhi?u n?i trong th?i gian ch?y c?a no. Khi ch??ng trinh c?n đ?n tac v? c? th? đo thi b? tri ch? th? g?i (call) đ?n ch??ng trinh con nay va nh?n k?t qu? n?u co sau khi no th?c thi xong [1] .

Ngay t? luc may tinh ra đ?i thi k? thu?t l?p trinh ki?u c?u truc modul hoa v?i cac ch??ng trinh con đa đ??c thi?t l?p, va đ??c c?ng c? trong cac ph?n m?m l?p trinh h?p ng? . Ngay nay trong ngon ng? b?c cao ch??ng trinh con đ??c di?n đ?t tuy theo ngon ng? la cac ham ( function ), th? t?c ( procedure ) va ph??ng th?c ( method ),... M?t s? ngon ng? l?p trinh , ch?ng h?n Pascal va FORTRAN , phan bi?t gi?a ham (m?t ch??ng trinh con co tr? v? gia tr?) va th? t?c (khong tr? v? gia tr?). Cac ngon ng? khac, vi d? C va LISP , coi hai thu?t ng? nay nh? nhau. Cai ten ph??ng th?c th??ng đ??c dung trong l?p trinh h??ng đ?i t??ng đ? g?i cac ch??ng trinh con la m?t ph?n c?a cac đ?i t??ng .

Trong ch??ng trinh, m?t ch??ng trinh con đ??c phep g?i ch??ng trinh con khac, ho?c co th? g?i chinh no. Tuy nhien n?u b? tri g?i l?n nhau, vi d? subroutine A g?i subroutine B nh?ng trong than c?a subroutine B l?i co g?i subroutine A , s? d?n đ?n l?i b?t đ?nh khi th?c hi?n. M?t s? ngon ng? co h? tr? phat hi?n l?i nay trong moi tr??ng so?n th?o trinh va khi d?ch. D?u v?y đ? tranh l?i thi khi l?p trinh ph?i tuan th? b? tri g?i theo " mo hinh canh va la ", trong đo "canh" la subroutine co g?i subroutine khac, con "la" la subroutine khong co l?nh g?i.

Khai ni?m chinh [ s?a | s?a ma ngu?n ]

K? thu?t l?p trinh d?n đ?n vi?c t? ch?c ch??ng trinh ki?u c?u truc modul hoa, t?c la chia ch??ng trinh thanh nhi?u modul hay đ?n v? ma k? thu?t đi?n toan g?i la subroutine, va trong trinh chinh thi th?c hi?n g?i chung [2] [3] . No đem l?i cho ng??i l?p trinh cac l?i ich:

  1. Thay cac đo?n trinh gi?ng nhau b?ng m?t subroutine, lam cho ma ch??ng trinh ng?n h?n, sang s?a va d? b?o d??ng.
  2. đ?a cac subroutine đa ki?m tra vao th? vi?n (library) ? d?ng v?n b?n trinh ho?c d?ng ma [4] , đ? khi l?p trinh m?i thi ch? c?n lien k?t t?i th? vi?n đo.
  3. Nh?ng ch??ng trinh l?n đ??c thi?t k? d?ng c?u truc t?t co th? trao cho cac nhom va ng??i l?p trinh khac nhau l?p trinh, đoi khi co th? thue ng??i lam them vi?t cac subroutine khong qua ph?c t?p.

Do t?m quan tr?ng c?a vi?c t? ch?c trinh ki?u c?u truc ma ngay t? khi cong nghi?p may tinh ra đ?i, con ph?i l?p trinh ? d?ng ma may , gi?i ch? t?o may đa ch?m chut nhi?u đ?n l?nh call va t? ch?c c?a ch??ng trinh con. N?u gi?i ma ng??c (unassemble) ma trinh thi th?y day đ?c l?nh call .

Ben c?nh cac subroutine th?c s? thi m?t s? ngon ng? l?p trinh , k? c? l?p trinh h?p ng? , h? tr? d?ng ch??ng trinh con (trong v?n b?n trinh) ma khi d?ch thi thay th? b?ng đo?n ma ch??ng trinh, khong t?o ra subroutine d?ng ma th?t s?.

  • Macro : D?ch n?i dung co trong macro co ten ch? đ?nh va đ?t vao v? tri t??ng ?ng.
  • Inline : Chuy?n n?i dung ma đ??c vi?t ? d?ng hex trong procedure co ten ch? đ?nh va đ?t vao v? tri t??ng ?ng.

Nh??c đi?m [ s?a | s?a ma ngu?n ]

Nh??c đi?m chinh c?a v?n d?ng ch??ng trinh con lien quan đ?n b? tri cac ma ch? th? "d?n nha" (housekeeping code) ? ch??ng trinh con, lam cho th?i gian thi hanh tac v? keo dai h?n so v?i khi đo?n ma đo đ??c đ?t th?ng trong ch??ng trinh chinh.

Khi chuy?n đi?u khi?n sang ch??ng trinh con, t?i cac đi?m vao (entry) ch??ng trinh con ph?i b? tri sao l?u gia tr? cac con tr? (pointer) c?a b? x? ly . Khi k?t thuc (exit) gia tr? cac con tr? đ??c khoi ph?c l?i t? tr? sao l?u r?i m?i thoat. Nh?ng đo?n ma sao l?u va khoi ph?c nay gi?ng nhau ? cac ch??ng trinh con, t?c la n?u subroutine "khong lam gi" thi khi d?ch ra ma v?n co đ? c?p đo?n ma nay.

Vi th? l?p trinh cho cac vi đi?u khi?n co t?c đ? th?p va b? nh? h?n ch? thi ph?i can đ?i gi?a vi?c l?p hay khong l?p ch??ng trinh con. Cac CPU đi?n toan hi?n nay co t?c đ? r?t cao nen t?n th?t th?i gian nay hi?n ra khong đang k?, nh?ng ng??i l?p trinh ?ng d?ng khong c?n quan tam.

Ch? d?n [ s?a | s?a ma ngu?n ]

Tham kh?o [ s?a | s?a ma ngu?n ]

  1. ^ U.S. Election Assistance Commission (2007). “Definitions of Words with Special Meanings” . Voluntary Voting System Guidelines . B?n g?c l?u tr? ngay 22 thang 2 n?m 2017 . Truy c?p ngay 14 thang 1 n?m 2013 .
  2. ^ Wheeler, D. J. (1952). “The use of sub-routines in programmes”. Proceedings of the 1952 ACM national meeting (Pittsburgh) on - ACM '52 . tr. 235. doi : 10.1145/609784.609816 . B?n g?c l?u tr? ngay 28 thang 6 n?m 2015 . Truy c?p ngay 24 thang 12 n?m 2016 .
  3. ^ Wilkes, M. V.; Wheeler, D. J.; Gill, S. (1951). Preparation of Programs for an Electronic Digital Computer . Addison-Wesley.
  4. ^ Dainith, John. " open subroutine." A Dictionary of Computing. 2004.” . Encyclopedia.com . Truy c?p ngay 14 thang 1 n?m 2013 .

Xem them [ s?a | s?a ma ngu?n ]

Lien k?t ngoai [ s?a | s?a ma ngu?n ]