intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo trình Lập trình có cấu trúc với ngôn ngữ C: Phần 1

Chia sẻ: Năm Tháng | Ngày: | Loại File: PDF | Số trang:140

101
lượt xem
19
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Phần 1 cuốn giáo trình "Lập trình có cấu trúc với ngôn ngữ C" cung cấp cho người đọc các kiến thức: Phương pháp lập trình có cấu trúc, giới thiệu về ngôn ngữ C, các thành phần của ngôn ngữ C, con trỏ và mảng. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Giáo trình Lập trình có cấu trúc với ngôn ngữ C: Phần 1

  1. B Ộ G I Á O D Ụ C V À Đ À O T Ạ O D Ạ I H Ọ C T H Á I N G U Y Ê N ĐỖ T H Ị T Â M - N G U Y Ễ N H I Ể N T R I N H NGUYỄN THỊ TUYÊN - ĐẶNG THỊ OANH G i á o T H Ì N H L Ậ P l l l M c ế C Ẩ U n ố c V Ớ I N G Ô N N G Ữ c NGUYÊN ?c LIỆU NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT
  2. B ộ GIÁO DỤC VÀ Đ À O T Ạ O ĐẠI HỌC THÁI NGUYÊN Đ ỗ T h ị T â m - Nguyễn H i ề n T r i n h Nguyễn Thị Tuyển - Đặng Thị Oanh G I Á O T R Ĩ N H L Ậ P T R Ì N H C Ó C Á U T R Ú C V Ớ I N G Ô N N G Ữ c ỊDẠĨHỌCTIỈẤÌ NGUYỄN Ị TONG T Ầ M H Ọ C l i ễ u ị NHÀ X U Ấ T BẢN K H O A H Ọ C VÀ KỸ THUẬT Hà Nội-2010
  3. M Ụ C L Ụ C • • Trang LỜI GIỚI THIỆU 7 Chương 1 P H Ư Ơ N G P H Á P L Ậ P TRÌNH C Ó CÁU T R Ú C 1.1. Các phương pháp lập trình 9 1.2. Các phương pháp thiết kế 13 1.3. Chiến lược phát triển phần mềm máy tính 17 Câu hỏi 22 Bài tập 23 Chương 2 GIỚI THIỆU VỀ NGÔN NGỮ c 2.1. Lịch sử hình thành và phát triển ngôn ngữ c 25 2.2. Các tính chất đặc trưng của ngôn ngữ c 27 2.3. Cấu trúc cơ bản của một c h ư ơ n g trinh trong c 28 2.4. Các thao tác cơ bản của Turbo c 32 Ghi nhớ 38 Câu hỏi và bài tập 38 Chương 3 CÁC THÀNH PHÀN CỦA NGÔN N G Ữ c 3.1. Hệ thống ký hiệu và từ khoa 39 3.2. Biến và hằng 42 3.3. Các kiểu d ữ liệu 46 3.4. Các phép toán 56 3.5. Vào, ra chuẩn 62 3.6. Các lệnh điều khiển c h ư ơ n g trình 77 3
  4. Ghi nhớ 94 C á c lỗi thưởng gặp khi lập trình 95 C á c thói quen tốt khi lập trình 96 Câu hỏi 96 Bài tập 98 Chương 4 C O N T R Ỏ VÀ M Ả N G 4.1. Cấu trúc mảng 100 4.2. Con trỏ 109 4.3. Cấp phát động con trỏ 123 Ghi nhớ 130 C á c lỗi hay gặp khi lập trình 131 Các thói quen tốt khi lập trình 132 Câu hỏi 132 Bài tập 138 Chương 5 CÁC KIỂU D ữ LIỆU C Ó CÁU T R Ú C 5.1. Kiểu cấu trúc 140 5.2. Kiểu enum 150 5.3. Kiểu hợp (union) 151 5.4. Các cáu trúc tự trỏ 153 C á c lỗi thường gặp khi lập trình 172 C á c thói quen tốt khi lập trình 173 Câu hỏi 173 Bài tập 177 Chương 6 HÀM 6.1. Giới thiệu 180 6.2. Các môđun c h ư ơ n g trinh trong c 181 6.3. Thư viện c á c hàm chuẩn 182 6.4. Các hàm 183 6.5. Con trỏ hàm 192 4
  5. 6.6. Hàm đệ quy 193 C á c thói quen tốt khi lập trinh 199 Câu hỏi 200 Bài tập 201 Chương 7 T Ệ P VÀ C Á C T H A O T Á C V À O / R A 7.1. C á c khái niệm v ề tệp 203 7.2. stream và c á c hàm thao tác vào/ra vùng đ ệ m 212 7.3. Các thao tác trên tệp nhị phân 216 7.4. C á c thao tác trên tệp văn bản 225 7.5. Các thao tác vào/ra file mức thấp 228 7.6. So sánh và chọn p h ư ơ n g án sử dụng 231 Các lỗi thường gặp khi lập trình 232 Các thói quen tốt khi lập trình 232 Câu hỏi 232 Bài tập 234 Chương 8 ĐỒ HỌA 8.1. Giới thiệu chung v ề đồ hoa trên máy PC 236 8.2. Các chế độ đồ hoa, h ệ toa độ 237 8.3. Đặt màu và mẫu tô cho c á c đường và c á c hình 240 8.4. Các hàm vẽ và tô 242 8.5. Vievvport và toa độ 247 8.6. Văn bản trong đồ hoa 249 8.7. Cắt dán hình và tạoảnh chuyển động 252 Bài tập 255 Phụ lục: MỘT SỐ CÂU HỎI TRÁC NGHIỆM 258 5
  6. LỜI GIỚI THIỆU Lập trình có cấu trúc là p h ư ơ n g p h á p g i ú p đ ạ t được mục đ í c h bằng cách phát t r i ể n c h ư ơ n g trình đ ể g i ả i quyết bài t o á n đặt ra theo từng bước và làm m ị n dần. T ạ i b ư ớ c đ ầ u tiên cổ gắng d i ễ n tả m ộ t m ẫ u đ ạ i thể của c h ư ơ n g trình cần x â y dựng. T r o n g c á c bước t i ế p theo thực h i ệ n theo n g u y ê n tắc "chia đ ể trị" đ ể chi tiết hoa, l à m m ị n dần c á c đặc tả theo trình tự t ừ trên x u ố n g ( t ó p - dovvn), t ừ t r ừ u t ư ợ n g đ ế n cụ t h ể , từ đ ạ i thể đến chi tiết. B ư ớ c c u ố i c ù n g là sử dụng n g ô n n g ữ l ậ p trình thích họp để v i ế t c h ư ơ n g trình h o à n chỉnh. N g ô n ngữ lập trình là c ô n g cụ đ ể g i ả i quyết c á c bài t o á n trên m á y tính. C/C-H- là n g ô n n g ữ p h ù hợp cho v i ệ c thiết k ế v à p h á t t r i ể n c á c c h ư ơ n g trình ứng dụng phức tạp. Đặc trung c ơ bản của C / C + + c h í n h là tốc độ thực h i ệ n c h ư ơ n g trình m ạ n h m ẽ v à u y ể n c h u y ể n trong lập trình. Bản thân n g ô n n g ữ đ ã t ự n h i ê n chấp nhận p h ư ơ n g p h á p thiết k ế trên xuống (tóp - down), theo đ ó m ọ i v ấ n đ ề l ớ n , phức tạp đ ề u c ó t h ể chia nhỏ dần đ ể h i ể u đ ư ợ c c h ú n g . Q u á trình l à m m ị n dần n à y đ ư ợ c t i ế n h à n h cho đ ế n k h i n à o v i ế t đ ư ợ c c h ư ơ n g trình ( t h ư ờ n g là c á c h à m ) thực sự (trong C/C++) đ ể thực h i ệ n t ừ n g chức n ă n g cần thiết. Giáo trình Lập trình có cẩu trúc với ngôn ngữ c đ ề cập đ ế n k ỹ thuật lập trình trong c . N ộ i dung của g i á o trình đ ư ợ c trình bày trong 8 chương. - C h ư ơ n g Ì p h â n tích p h ư ơ n g p h á p lập trình có cấu trúc v à q u á trình phát triển c h ư ơ n g trình. - C h ư ơ n g 2 trình b à y m ộ t số v ấ n đ ề c ơ bản của n g ô n n g ữ l ậ p trình c và những thao t á c c ă n bản k h i sử dụng Turbo c . - C h ư ơ n g 3 n ê u c á c t h à n h phần c ơ bản của n g ô n n g ữ lập trình c , bao gồm các hệ thống ký h i ệ u , t ừ khoa, k i ể u d ữ l i ệ u c ơ sở, c á c p h é p toán, biêu thức, c á c cấu trúc đ i ề u k h i ể n , . . . - C h ư ơ n g 4 đ ề cập đ ế n hai cấu trúc quan trọng t h ư ờ n g đ ư ợ c sử dụng rất hiệu quả trong c , đ ó là cấu trúc m ả n g v à con trỏ. 7
  7. - C h ư ơ n g 5 trình b à y những cấu trúc d ữ l i ệ u n h ư struct. stack. queue, cây nhị p h â n . - V ấ n đ ề c ơ bản của lập trình c ó cấu trúc là thực h i ệ n theo c á c h t i ế p cận đ ơ n thể hoa đ ư ợ c t h ể h i ệ n trong c t h ô n g qua c á c h à m đ ư ợ c trình bày ở c h ư ơ n g 6. - C h ư ơ n g 7 trình b à y c á c p h ư ơ n g p h á p tổ chức v à x ử lý c á c t ệ p dữ liệu. - C h ư ơ n g 8 đề cập đ ế n m ộ t số kỹ thuật đ ồ hoa m á y t í n h , n h ă m tạo ra các c h ư ơ n g trình ứng d ụ n g c ó chất lượng cao t h ô n g qua k ỳ thuật đ ồ hoa hoặc giao d i ệ n t h â n t h i ệ n v ớ i n g ư ờ i d ù n g . G i á o trình n à y phục v ụ cho sinh viên Khoa C ô n g n g h ệ t h ô n g t i n . M ụ c tiêu của m ô n học là h ư ớ n g dẫn sinh viên n ắ m v ừ n g n h ữ n g k h á i n i ệ m c ơ bản của p h ư ơ n g p h á p l ậ p trình c ó cấu trúc v à biêt c á c h sử dụng n g ô n n g ữ c đ ể p h á t t r i ể n c á c c h ư ơ n g trình ứng d ụ n g p h ố d ụ n g . G i á o trình có thể sử dụng l à m tài l i ệ u tham khảo t ố t cho n h ữ n g học viên, giáo viên v à những n g ư ờ i quan t â m đ ế n p h ư ơ n g p h á p l ậ p t r ì n h có cấu trúc và v ớ i n g ô n n g ữ c . B ộ m ô n Khoa học m á y t í n h , K h o a C ô n g nghệ t h ô n g t i n - Đ ạ i học Thái N g u y ê n x i n trân trọng c ả m ơ n c á c G i á o sư, P h ó g i á o sư, T i ế n Sĩ ở V i ệ n C ô n g nghệ t h ô n g t i n , V i ệ n K h o a học V i ệ t N a m , c á c thầy c ô v à c á c bạn đ ồ n g nghiệp trong khoa đ ã g ó p ý, ủng h ộ v à tạo đ i ề u k i ệ n đ ể h o à n t h à n h cuốn g i á o trình n à y . Đ ặ c b i ệ t x i n gửi l ờ i cảm ơ n trân t r ọ n g nhất tới Phó giáo sư, T i ế n sĩ Đ o à n V ă n Ban, T r ư ở n g p h ò n g C ơ sở d ữ l i ệ u , V i ệ n C ô n g nghệ t h ô n g t i n , V i ệ n Khoa học V i ệ t N a m đ ã g ó p ý, chỉ bảo và đ ộ n g viên c h ú n g tôi h o à n t h à n h g i á o trình này. M ặ c d ù c á c tác g i ả đ ã c ó n h i ề u cố gắng, n h ư n g g i á o trình k h ó tránh k h ỏ i những t h i ế u sót. C h ú n g tôi rất mong nhận đ ư ợ c c á c ý k i ế n đ ó n g g ó p của bạn đ ọ c đ ể g i á o trình n g à y c à n g h o à n t h i ệ n hơn. M ọ i ý kiến đóng g ó p xin gửi về: Khoa C ô n g nghệ thông tin - Đ ạ i học Thái Nguyên. Bộ môn Khoa học máy tính 8
  8. C h ư ơ n g 1 P H Ư Ơ N G P H Á P L Ậ P TRÌNH C Ó C Á U T R Ú C Nội dung: > Giới thiệu về c á c phương pháp lập trình. > Tính cấu trúc của lập trình có cấu trúc. > Các phương pháp thiết kế chương trình. > Quá trình phát triển c h ư ơ n g trình. 1.1. C á c p h ư ơ n g p h á p l ậ p t r ì n h 1.1.1. Chương trình và lập trình Chương (rình đ ư ợ c xem n h ư là m ộ t d ã y c á c phát b i ể u (các lệnh) có thể thực hiện đ ư ợ c theo m ộ t t h ứ t ự nhất định để đạt đ ư ợ c mục đ í c h . V i ệ c lập thành m ộ t chuỗi c á c lệnh đ ư ợ c sắp xếp theo m ộ t trình t ự xác định m ô tả m ộ t l ớ p c á c q u á trình tính t o á n n à o đ ó đ ư ợ c g ọ i là lập trình. Lập trình là m ộ t b ộ m ô n rất phong p h ú liên quan đ ế n n h i ề u lĩnh vực của C ô n g nghệ t h ô n g t i n ( C N T T ) . N ó bao g ồ m n h i ề u v ấ n đ ề liên quan đến các p h ư ơ n g p h á p g i ả i quyết bài toán trên c ơ sở sử dụng p h ư ơ n g pháp hệ thống của g i ả i tích t o á n học và c ô n g nghệ t h ô n g t i n với nhiều c ô n g cụ h i ệ n đ ạ i g i ú p cho n g ư ờ i lập trình phát huy đ ư ợ c tính sáng tạo của m ì n h . N ó i chung, n g ư ờ i lập trình k h ô n g cần quan t â m 9
  9. đ è n tính chất cá biệt của c á c b ộ v i x ử lý, m à h ọ chỉ cần tin r à n g m á y tính hiêu được n g ô n n g ữ v i ế t c h ư ơ n g trình, bao g ồ m c á c cấu trúc đ i ề u khiên bộ v i x ử lý thực h i ệ n . D o đ ó , n g ư ờ i lập trình phải h i ể u đ ư ợ c c á c y ê u cầu của bài t o á n v à tập c á c c â u lệnh của n g ô n n g ữ lập t r ì n h đ ư ợ c lựa chọn và viết c h ú n g đ ú n g theo quy tắc v ă n p h ạ m của n g ô n n g ữ đ ó . 1.1.2. Ngôn ngữ lập trình bậc thấp và ngôn ngữ lập trình bậc cao à) Ngôn ngữ lập trình bậc thấp N g ô n ngữ lập trình bậc thấp bao g ồ m : - N g ô n ngữ m á y : trước đ â y c h ư ơ n g trình đ ư ợ c v i ế t b à n g m ã m á y , c h ư ơ n g trình l o ạ i n à y dài vì m ỗ i d ò n g m ã lệnh t h ư ờ n g đ ư ợ c v i ế t d ư ớ i dạng nhị p h â n và chỉ thực h i ệ n đ ư ợ c m ộ t lệnh của m á y . C á c m á y t í n h k h á c nhau, có hệ m ã lệnh k h á c nhau n ê n n g ô n n g ữ m á y p h ụ thuộc v à o k i ế n trúc của m á y tính. - N g ô n ngữ Assembly (hợp ngữ): l ậ p trình bằng c á c m ã c â u l ệ n h đ ể thực h i ệ n c á c chỉ thị của m á y t í n h . Ví dụ: A D D 74 C ộ n g t h ê m 74 MUL 2 Nhân với 2 DIV 4 Chia cho 4 b) Ngôn ngữ lập trình bậc cao N g ô n n g ữ lập trình bậc cao đ ư ợ c v i ế t theo tập c á c quy tắc d ẫ n xuất, được g ọ i là cú p h á p (Syntax). C á c Version chuẩn của c á c n g ô n n g ữ lập trình bậc cao nói chung là đ ộ c lập v ớ i m á y tính. N g ô n n g ữ l ậ p trình bậc cao đ ư ợ c chia l à m hai l o ạ i là n g ô n n g ữ lập t r ì n h h ư ớ n g t h ủ tục (Procedure - Oriented) v à n g ô n n g ữ l ậ p trình h ư ớ n g đ ố i t ư ợ n g (Object - Oriented). - N g ô n n g ữ l ậ p trình h ư ớ n g t h ủ tục ( l ậ p trình c ó cấu t r ú c ) n h ư : Fortran, Visual Basic, Pascal, c , . . . 10
  10. - N g ô n n g ữ lập trình h ư ớ n g đ ố i t ư ợ n g n h ư : Ada. Smalltalk, C + + , Java,... ỉ ỉ Ề í 1.1.3. G i ớ i t h i ệ u v ê n g u ồ n g ó c x u â t x ứ c ủ a n g ô n n g ữ l ậ p t r ì n h Pascal v à c Pascal là n g ô n n g ữ lập trình có cấu t r ú c , đ ư ợ c giáo sư N i k l a u s W i r t h của T r ư ờ n g Đ ạ i học K ỹ thuật Z u r i c h ( T h u ỵ Sỹ) thiết k ế v à c ô n g bố v à o n ă m 1971. M ớ i đ ầ u ô n g thiết k ế n g ô n n g ữ n h ằ m phục v ụ v i ệ c giảng dạy cho sinh viên p h ư ơ n g p h á p lập trình, đặc biệt là " P h ư ơ n g p h á p lập trình có cấu t r ú c " . N h ư n g Pascal đ ã t h à n h c ô n g rực rỡ trong m ọ i ứng dụng lập trình v à c ó ảnh h ư ở n g s â u sắc đ ế n c á c n g ô n n g ữ lập trình ra đ ờ i sau n ó trong t ư duy lập trình c ó cấu trúc. N ó là n g ô n n g ữ lập trình bậc cao u n v i ệ t nhất trong lĩnh vực giảng dạy v à lập trình chuyên nghiệp. N g ô n ngữ c do Dennis Richie thiết k ế v à o n ă m 1972 t ạ i P h ò n g thí nghiệm Bell Telephone (thuộc C ô n g ty V i ễ n t h ô n g Á T & T của M ỹ ) , v ớ i mục đích t ư ơ n g đ ố i hạn chế là tạo n g ô n n g ữ đ ể v i ế t h ệ đ i ề u hành U N I X . Song n h ờ tính un v i ệ t v à tính m ề m dẻo, n ó đ ã nhanh c h ó n g được c á c n h à tin học chấp nhận n h ư là m ộ t n g ô n n g ữ c h í n h thống cho các n h à lập trình c h u y ê n nghiệp. ỉ.1.4. Tính cấu trúc của lập trình có cấu trúc N g ô n n g ữ lập trình là m ộ t chuỗi c á c chỉ thị đ ư ợ c k ế t hợp từ hai yêu tố là: d ữ l i ệ u (data) v à thuật t o á n (algorithm). T í n h cấu trúc của lập trình có cấu trúc đ ư ợ c t h ể h i ệ n ở c á c đặc đ i ể m sau: - D ữ l i ệ u được cấu trúc hoa: D ữ l i ệ u d ù n g đ ể tạo ra c á c t h ô n g t i n m à một c h ư ơ n g trình c ó t h ể d ù n g v à x ử lý. C á c n g ô n n g ữ lập trình đ ề u xây dựng những k i ể u d ữ l i ệ u chuẩn (real, integer, char, boolean trong n g ô n ngữ lập trình Pascal chẳng hạn), r ồ i t ừ d ữ l i ệ u đ ơ n giản hoặc c ó câu trúc đơn giản, n g ư ờ i lập trình có t h ế x â y d ự n g c á c d ữ l i ệ u có cấu li
  11. trúc phức tạp h ơ n n h ư cấu t r ú c d ữ l i ệ u k i ể u mảng, k i ể u bản g h i , k i ê u tệp, k i ể u con trỏ,... - M ệ n h lệnh được cấu trúc hoa: Thuật t o á n là n h ữ n g p h ư ơ n g p h á p m à c h ư ơ n g trình đ ó phải t u â n theo. M ộ t g i ả i thuật là m ộ t c h u ô i những tiến trình tuần t ự c ó t h ể đ ư a đ ế n m ộ t k ế t q u ả n à o đ ó . M ộ t c h ư ơ n g trình chỉ c ó t h ể thi h à n h đ ư ợ c n ế u n ó đ ư ợ c k h ở i thảo t r ê n m ộ t g i ả i thuật đ ú n g v à hợp lý. Thuật t o á n dựa v à o 3 cấu trúc căn b à n , đ ư ợ c gọi là cẩu trúc điều khiển, vì c ó t h ể đ i ề u k h i ể n tác vụ thi h à n h theo đ ú n g t h ứ tự. C á c n g ô n n g ữ lập trình đ ề u x â y d ự n g cho m ì n h m ộ t sô c â u lệnh đ ơ n giản c ù n g v ớ i c á c cấu trúc lập trình và t ừ c á c l ệ n h đ ơ n giản đ ã có, n g ư ờ i lập t r ì n h c ó t h ể n h ó m c h ú n g l ạ i v ớ i nhau v à đ ặ t g i ữ a hai từ khoa Begin ... End; (trong Pascal) hay trong cặp d â u { ... } (trong C) k h i ế n c h ú n g trở t h à n h c â u l ệ n h phức tạp g ọ i là lệnh hợp thành hay lệnh ghép. C á c cấu trúc đ i ề u k h i ể n g ồ m : + C ẩ u trúc tuần tự: Hai hay n h i ề u chỉ thị ( l ệ n h ) đ ư ợ c t h i h à n h liên t i ế p cái n ọ r ồ i t ớ i cái kia, k h i đ ã k h ở i sự thì tất cả c á c l ệ n h đ ề u đ ư ợ c thi h à n h theo m ộ t t h ứ t ự đ ã đ ư ợ c đ ị n h sẵn. + Cấu trúc t u y ể n chọn: M ộ t trong hai l ệ n h đ ư ợ c thi h à n h do k ế t quả của k i ể m tra đ i ề u k i ệ n là đ ú n g hay sai, n ế u k i ể m tra cho k ế t q u ả đ ú n g thì thực h i ệ n lệnh n à y , n ế u sai thì thực h i ệ n lệnh kia. + Cấu trúc lặp: T h i h à n h l ặ p đi lặp l ạ i m ộ t số lệnh, đ â y là p h ư ơ n g p h á p thi h à n h m ộ t lệnh n h i ề u l ầ n liên t i ế p , c á c l ệ n h đ ư ợ c l ặ p đi l ặ p l ạ i g ọ i là thân vòng lặp v à c h ư ơ n g trình n ằ m trong v ò n g l ặ p c ứ t h i h à n h lặp đi lặp l ạ i k h i n à o m à t á c v ụ k i ể m tra v ẫ n c ò n đ ú n g v à chỉ t h o á t ra k h ỏ i v ò n g lặp k h i k i ể m tra thấy sai. Vì v ậ y , t á c v ụ k i ể m tra trong v ò n g lặp được g ọ i là điều kiện ngừng. Vỉ dụ: V ò n g lặp Vvhile k i ể m tra đ i ề u k i ệ n n g ừ n g trước k h i t h i h à n h thân v ò n g l ặ p , n ế u l ầ n đ ầ u tiên k i ể m tra thấy sai thì t h â n v ò n g lặp k h ô n g được thực h i ệ n l ầ n n à o . 12
  12. V ò n g lặp do w h i l e thi h à n h ngay t h â n v ò n g lặp, sau đ ó m ớ i k i ể m tra đ i ề u k i ệ n ngừng, nghĩa là v ò n g lặp do vvhile bao g i ờ cũng thi h à n h thân v ò n g lặp ít nhất là m ộ t l ầ n . 1.2. Các phương pháp thiết kế 1.2.1. Phương pháp từ trên xuống (TÓP - DOWN) P h ư ơ n g p h á p từ trên x u ố n g là c á c h p h â n tích tổng q u á t toàn b ộ v ấ n đề, thiết kế nhũng c ô n g v i ệ c c h í n h y ế u , r ồ i sau đ ó m ớ i đi v à o g i ả i quyết các vấn đề chi tiết, cụ t h ể . Ví dụ: D ù n g m á y tính đ ể quản lý v à bảo trì h ồ sơ v ề học b ổ n g của sinh viên được tài trợ, đ ồ n g t h ờ i t h ư ờ n g k ỳ phải lập b á o c á o tổng k ế t để đệ trình lên cấp trên. Trước hết ta phải x á c định đ ầ u v à o v à đ ầ u ra của bài t o á n : Đầu vào: C ó tệp h ồ s ơ chứa c á c t h ô n g tin liên quan đ ế n học bổng của sinh viên n h ư số h i ệ u sinh v i ê n , đ i ể m đạo đức, đ i ể m trung b ì n h , khoản tiền tài trợ. Đầu ra: Tạo đ i ề u k i ệ n cho n g ư ờ i sử dụng có t h ể g i ả i quyết đ ư ợ c các yêu cầu sau: - T ì m và h i ể n thị đ ư ợ c v ề t h ô n g t i n của bất k ỳ m ộ t sinh v i ê n n à o tại thiết bị đầu cuối của n g ư ờ i d ù n g . - Cập nhật đ ư ợ c t h ô n g t i n của m ộ t sinh viên cho trước bằng c á c h thay đ ổ i một số t h ô n g t i n n ế u cần thiết. - In bảng tổng k ế t chứa n h ữ n g t h ô n g t i n h i ệ n t h ờ i (đã đ ư ợ c cập nhật m ỗ i khi có thay đ ổ i ) g ồ m số h i ệ u , đ i ể m trung bình, đ i ể m đạo đức, khoản tiền tài trợ. N h ư vậy, giải thuật x ử lý sẽ thực h i ệ n c á c n h i ệ m v ụ sau: - Những t h ô n g t i n v ề c á c sinh viên nhận học bổng được lưu trữ trên đĩa và phải được đọc vào bộ n h ớ trong để x ử lý (nhiệm vụ đọc tệp). - X ử lý các t h ô n g tin đ ể tạo ra c á c k ế t quả mong m u ố n (nhiệm v ụ x ử lý tệp). 13
  13. - Sao c h é p c á c t h ô n g t i n đ ã đ ư ợ c x ử lý lên đĩa đ ể lưu t r ừ cho v i ệ c x ử lý sau này ( n h i ệ m v ụ ghi tệp). M ô hình thể h i ệ n g i ả i thuật n à y n h ư h ì n h 1.1. Hệ thống quản lý học bổng Đọc tệp Xử lý tệp Ghi tệp Hình 1.1. Mỏ hình giải thuật bài toán quản lý và bảo tri hồ s ơ sinh viên M ỗ i n h i ệ m v ụ ở đ â y rất phức tạp, cần chia t h à n h c á c n h i ệ m v ụ con, ví dụ n h i ệ m v ụ x ử lý tệp đ ư ợ c chia t h à n h c á c n h i ệ m v ụ : - T ì m t h ô n g t i n của m ộ t sinh v i ê n cho trước. - Cập nhật t h ô n g t i n cho sinh v i ê n . - In bảng tổng k ế t v ề n h ữ n g sinh v i ê n đ ư ợ c học bổng. C á c h thiết k ế này g i ú p cho v i ệ c g i ả i quyết bài t o á n đ ư ợ c định h ư ớ n g rõ ràng, t r á n h sa đ à v à o n h ữ n g chi t i ế t p h ụ . Đ â y là n ề n tảng cho lập trình có cấu t r ú c . Xử lý tệp In bảng tồng kết Tìm Hiển Tìm Cập kiếm thị kiếm nhật Hình 1.2. Phân rã các chức năng 14
  14. 1.2.2. P h ư ơ n g p h á p m ô đ u n h o a P h ư ơ n g p h á p m ô đ u n h ó a là việc p h â n chia bài t o á n l ớ n t h à n h c á c bài toán nhỏ. Đ i ề u đ ó cũng c ó nghĩa là, n ế u ta coi bài toán l ớ n là m ô đ u n chính, thì c á c bài t o á n n h ỏ là c á c m ô đ u n con v à m ỗ i m ô đ u n con l ạ i được chia t h à n h c á c m ô đ u n con t ư ơ n g ứ n g v ớ i c á c phần v i ệ c cơ bản m à ta đ ã b i ế t c á c h g i ả i quyết. Mô-đun Mô-đun Mô-đun Môđun 11 12 21 22 Hình 1.3. Chiến thuật "chia để trị" 1,2.3. P h ư ơ n g p h á p t ỉ n h c h ỉ n h d ầ n t ừ n g bước Tinh chỉnh từng b ư ớ c là p h ư ơ n g p h á p thiết k ế g i ả i thuật g ắ n l i ề n v ớ i lập trình. N ó phản á n h tinh thần của q u á trình m ô đ u n hoa bài t o á n và thiết kế T Ó P - D O W N . - Đ ẩ u tiên bài t o á n được trình b à y khái quát, g ồ m những chức năng chính cần thực h i ệ n . - Những bước sau, c á c chức n ă n g đ ó được chi tiết hoa d ầ n d ầ n t ư ơ n g ứng v ớ i những c ô n g v i ệ c n h ỏ hon, đ ơ n giản h ơ n , g i ú p h i ể u rõ c h ú n g hơn. C á c bước tinh chỉnh n à y sẽ được h ư ớ n g v ề n g ô n n g ữ đ ã chọn. 15
  15. - C à n g v ề sau, n h ũ n g đặc tả h ì n h thức của c á c đ ơ n t h ê sẽ đ ư ợ c thay t h ế dần bằng c á c c â u l ệ n h của n g ô n n g ữ lập trình g ọ i là giữ ngôn ngữ. Ví dụ: Bài toán sắp x ế p d ã y số theo p h ư ơ n g p h á p lựa chọn. Mức ỉ: Khái q u á t c á c chức n ă n g c h í n h T ừ m ộ t d ã y c á c số n g u y ê n c h ư a đ ư ợ c sắp x ế p , c h ọ n ra m ộ t sô n h ỏ nhất đặt v à o cuối d ã y đ ã đ ư ợ c sắp, d ã y ban đ â u là r ô n g . L ặ p l ạ i bước Ì cho đ ế n khi d ã y c h ư a đ ư ợ c sắp trở t h à n h r ỗ n g . Mức 2: L à m m ị n h ơ n Trước hết t ì m h i ế u x e m d ã y số đ ư ợ c tổ chức n h ư t h ế n à o , c á c h chọn phần t ử nhỏ nhất đ ư a v à o c u ố i d ã y đ ư ợ c thực h i ệ n ra sao. N ế u d ã y số cho trước đ ư ợ c tổ chức t h à n h m ả n g m ộ t c h i ề u g ồ m n phần t ử (ai, a , a , a „ ) thì thuật t o á n sắp x ế p c ó t h ể v i ế t n h ư sau: 2 3 for i:=1 to n do Begin Ì. Xét từ a ± đến a n tìm số nhỏ nhất aj 2. Đ ổ i chỗ giữa a ± và a.j End; Mức 3: Tinh chỉnh - Bước Ì: M ứ c 2 c ó t h ể l à m m ị n h ơ n n h ư sau: j:= i; for k:= j + l to n do if a k < aj then j := k ; - Bước 2: Tinh chỉnh tiếp: Đổi chỗ ai cho aj: b:= a ; ± a = i : a ; 3 a 3:=b; 16
  16. T ừ đ ó thuật toán mức 3 v i ế t bằng c n h ư sau: void sapxep(int a [ ] , int n){ int b/ int i,j,k; for ( i = 0; Ì < n; i ++){ j = i ; for (k=j+l; k
  17. ì b) Tăm quan trọng của máy tỉnh H i ệ n nay m á y tính đ ã t r ở t h à n h m ộ t c ô n g cụ k h ô n g t h ê thay t h ê đ ư ợ c trong hầu hết các lĩnh vực v à m ọ i hoạt đ ộ n g của con n g ư ờ i . N h i ề u bài toán nảy sinh trong n h i ề u lĩnh vực k h á c nhau và con n g ư ờ i sẽ k h ô n g giải quyết đ ư ợ c n ế u k h ô n g c ó sự h ỗ t r ợ của m á y tính. M á y tính có thể xem n h ư m ộ t m á y ô t ô m a t c ó k h ả n ă n g t i ế n h à n h c ô n g v i ệ c tính toán, x ử lý t h ô n g t i n theo đ ú n g c á c quy tắc định sẵn, nghĩa là thực h i ệ n theo c h ư ơ n g trình. 1.3.2. C á c đ ặ c t r ư n g của c h ư ơ n g t r ì n h M ộ t c h ư ơ n g trình c ó t h ể đ ư ợ c đ á n h g i á theo ba đặc t r ư n g sau: - Tỉnh cẩu trúc của chương trình: C á c h v i ế t v à tổ chức c á c t h à n h phần của c h ư ơ n g trình bao g ồ m : + T í n h đ ơ n t h ể : T h ư ờ n g m ộ t c h ư ơ n g trình đ ư ợ c t ổ chức t h à n h nhiều đ ơ n thể ( c h ư ơ n g trình con - subroutine hay c ò n g ọ i là thù tục hay hàm) v à c ó liên k ế t v ớ i nhau t h ô n g qua c á c l ờ i g ọ i h à m . + C h ư ơ n g trình là m ộ t t h ế thống nhất: Sự liên k ế t giữa c á c đ ơ n thể bằng c ơ chế truyền tham số của c á c thủ tục, h à m trong c h ư ơ n g trình. + Phong thái lập t r ì n h : C á c h l ậ p trình phải rõ r à n g , d ễ đ ọ c , ngắn gọn, súc tích v à nhất q u á n . C h ư ơ n g trình nguồn p h ả i c ó c á c c h ú t h í c h v à h ư ớ n g dẫn đ ể c ó t h ể sử d ụ n g m ộ t c á c h d ễ d à n g . - Tỉnh chức năng của chương trình: Chỉ ra c á c h m ộ t c h ư ơ n g trình đ ú n g đ ắ n có t h ể thực h i ệ n đ ư ợ c n h ữ n g c ô n g v i ệ c đặt ra v à m ứ c đ ộ d ễ sử dụng c h ư ơ n g trình đ ó đ ể g i ả i quyết n h ữ n g bài t o á n t ư ơ n g t ự hay thực h i ệ n được trên n h i ề u m á y k h á c nhau. Đ ó là c á c tính chất: + T í n h tin cậy: C h ư ơ n g trình đ ú n g đ ắ n v à thực h i ệ n cho k ế t q u ả chính xác. + T í n h phổ dụng: C h ư ơ n g trình á p d ụ n g đ ư ợ c cho m ộ t l ó p n h i ề u bài t o á n t ư ơ n g t ự có liên quan. 18
  18. + Tính t ư ơ n g thích: C h ư ơ n g trình c ó t h ể dịch v à thực h i ệ n t r ê n nhiều hệ m á y tính k h á c nhau. - Tỉnh hiệu suất của chương trình: M ộ t c h ư ơ n g trình tốt c ó t h ể t u ô n g tác v ớ i n g ư ờ i sử dụng, v ớ i n h i ề u thiết bị k h á c nhau, quản lý hiệu quả các tài n g u y ê n của m á y tính ( b ộ nhớ, t h ờ i gian x ử lý - b ộ x ử lý) và x ử lý được c á c tình h u ố n g ngoại l ệ k h i c h ư ơ n g trinh thực h i ệ n . Tính hiệu quả của c h ư ơ n g trình đ ư ợ c t h ể h i ệ n qua: + T h â n thiện v ớ i n g ư ờ i sử dụng: C h ư ơ n g trình d ễ sử dụng v à t h â n thiện v ớ i m ọ i n g ư ờ i sử dụng. + Tính hiệu quả: C h ư ơ n g trình sử dụng hợp lý c á c tài n g u y ê n của m á y tính như bộ nhớ, bộ x ử lý (thời gian thực hiện) v à c á c thiết bị ngoại v i , . . . + Khoe khoắn v à c ư ờ n g t r á n g : C h u ô n g trình c ó t h ể t ự x ử lý đ ư ợ c các trường hợp đặc biệt n h ư c á c d ữ l i ệ u v à o / r a k h ô n g thích hợp hay những vấn đề tràn ô bộ nhớ,... T h ô n g thường, m á y tính chỉ thực h i ệ n được m ộ t n h ó m c á c lệnh s ơ cấp m à nó "hiểu" được v à t u â n theo c á c lệnh đ ó k h ô n g biết m ệ t m ỏ i và rất tin cậy. 1.3.3. Quá trình phát triển chương trình Q u á trình v i ế t v à thực h i ệ n m ộ t c h ư ơ n g trình truyền thống đ ư ợ c thực hiện theo quy trình sau: - Sử dụng m ộ t h ệ soạn thảo (Editor), ví d ụ n h ư Turbo c hay Turbo Pascal,... đ ể v i ế t c h ư ơ n g trình. - Dịch và g õ l ồ i cú p h á p của c h ư ơ n g trình. - Liên két v ớ i c á c t h ư v i ệ n hay c á c m ô đ u n c h ư ơ n g trình k h á c . - Thực hiện và k i ể m t h ử c h ư ơ n g trình (tìm l ỗ i n g ữ nghĩa v à l ỗ i thiết kế c h ư ơ n g trình). - Xây dựng c á c b ộ d ữ l i ệ u m ẫ u v à chạy k i ể m n g h i ệ m k ế t quả. Q u á trình n à y đ ư ợ c m ô tả n h ư h ì n h Ì .4. 19
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2