Lập trình cơ bản với c quyển 6

16 41 0
Lập trình cơ bản với c  quyển 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI T ú SÁ C H KM O A H Ọ C 74-KHTN-2012 BỘ GIÁO TRÌNH TIN HỌC Chủ biên: Hồ Sĩ Đàm ■ ■ sở Q uyển LẬP TRÌNH ca BẢN VỚI Tác giả: Bùi Thế Duy T T T V - D K Q G H N tu-i)(6) 2012 ÕỠ03# LẬP TRÌNH Cơ BẢN VỚI c M Ụ C LỤC Lời nói đ ầ u Chương I Lập trình ngơn ngữ lập tr ìn h 1.1 Giài vấn đ ề 1.1.1 Giải vấn đề sống hàng n y 1.1.2 Giải vấn đề bàng máy tín h .10 1.1.3 Phân tích tốn/vấn đ ề 10 1.2 Lập t r ì n h 11 1.3 Ngôn ngừ tự nhiên ngôn ngữ lập t r ì n h 12 1.4 Các thành phần ngôn ngữ lập trinh c 13 1.4.1 Bảng chừ c i 13 1.4.2 Quy tấc cú p h p 14 1.4.3 Ngữ n g h ĩ a 14 1.5 Kết c h n g 14 Câu hòi t ậ p 15 Bài đọc thêm: Những thành công ngơn ngữ lập trình 16 c Chương Chưo’ng trình máy tính 19 2.1 Khái niệm chương trình máy tín h 19 2.2 Cấu trúc chương trình ngơn ngữ lập trình c 20 2.3 Một chương ưình đơn g ià n 20 2.4 Dịch chương trình 23 2.5 Liên kết chương t r ì n h 23 2.6 Viết inột chương t r ì n h .24 2.6.1 Mô tà vấn đ ề 24 2.6.2 Xem xét toán 25 2.6.3 Các giai đoạn phát triển chương t r ì n h 26 2.6.4 Chiến lược phát triển chương trình phần m ề m 26 2.7 Kết c h n g 29 Câu hỏi t ậ p 30 Chương Biến, kiểu d ữ liệ u 31 3.1 Biển 31 3.1,1 Đăt tên b i ế n 32 l Ạ p t r Inh c v i C 3.1.2 Câu lệnh g n .33 3.2 Một số kiểu dừ liệu c h u ẩ n 34 3.3 n Ị i g .1 37 3.4 Kết c h n g 38 Câu hỏi t ậ p 39 Chương Xuất/nhập d ữ l i ệ u 4.1 4.2 4.3 4.4 Câu Xuất dừ liệu h ì n h 41 Nhập liệu từ bàn p h í m 43 Nhập liệu k iể u 44 Kết c h n g 46 hỏi t ậ p 47 Chương Phép toán, biểu d i ễ n 49 5.1 Phép t o n 49 5.2 Biểu thức 51 5.2.1 Biểu thức số h ọ c 51 5.2.2 Biểu thức quan h ệ 53 5.2.3 Biểu thức l o g i c 53 5.3 Thứ tự cùa phép t í n h 54 5.4 Kiểu cùa biểu t h ứ c 55 5.5 Các hàm toán h ọ c 56 5.6 Toán từ kết h ợ p 57 5.7 Kết c h n g 59 Câu hỏi t ậ p 60 Chưong c ấ u trúc điều k h i ể n 63 6.1 Các cấu trúc điều khiển lập trìn h 63 6.1.1 Tuần t ự 63 6.1.2 Rẽ n h n h 63 6.1.3 L ặ p .64 6.2 Câu lệnh rẽ nhánh c 65 6.2.1 Câu lệnh i f 65 6.2.2 Câu lệnh s w i t c h 68 6.2.3 Khối chương t r ì n h 70 6.3 Cấu trúc lặp c 71 6.3.1 Câu lệnh w h ile 71 6.3.2 Câu lệnh do., w h ile 75 6.3.3 Câu lệnh f o r .76 M IX JA)C 6.3.4 Câu lệnh break c o n tin u e 79 6.4 Kốt c h n g 80 Càu hỏi t ậ p 81 C hương Con trỏ M ả n g 85 7.1 Con trò 85 7.1.1 Khai báo biến kiểu t r ỏ 86 7.1.2 Lay địa b i ế n 86 7.1.3 Cấp phát nhớ động 87 7.1.4 Tham chiếu giá trị t r ò 88 7.1.5 Gán giá t r ị 88 7.2 Mảng c h i ề u 89 7.2.1 Khai báo m ảng chiều 89 7.2.2 Truy cập phần t 91 7.2.3 Saojchep m ả n g 93 7.3 Mảng nhiều c h i ề u .94 7.4 Xâu.T 97 7.5 Kết c h n g 99 C âu hòi t ậ p 100 C hương Vào/ra với t ệ p 103 8.1 Giới th iệ u 103 8.2 Thư viện vào/ra c h u ẩ n .103 8.3 Thao tác trực tiếp với tệ p 104 8.4 Các thao tác với nội dung t ệ p 104 8.4.1 Khai báo t ệ p 104 8.4.2 Mở t ệ p 104 8.4.3 Đóng t ệ p 106 8.4.4 Đọc ghi d ữ liệu với tệp văn b ả n 106 8.5 Vào/ra tệp nhị p h â n 107 8.6 Kết c h o n g .108 Câu hòi t ậ p 109 C hương H m 111 9.1 9.2 9.3 9.4 9.5 Lý cần quan tâm đến h m 111 Cấu trúc cùa h m 112 Thực h m 116 Trà giá trị thông qua tham s ố 118 Khai báo h m 119 l a p t r ìn h c v i c 9.6 9.7 9.8 Càu Biến cục biến toàn c ụ c Đệ q u y ’ Kết c h n g hỏi t ậ p 19 120 121 122 Chươìĩg 10 Kiểu d ữ liệu có cấu t r ú c 123 10.1 Khai b o 124 10.2 Truy cập giá t r ị 125 10.3 Gán giá t r ị 125 10.4 Một sổ ví dụ ứng d ụ n g 126 10.5 Kết c h n g 131 Câu hỏi t ậ p 132 Chương II L ỗi 133 11.1 GỠIỒL 133 11.1.1 Lỗi lúc d ịch 133 11.1.2 Lỗi cú p h p 136 11.1.3 Lồi kiểu 137 11.1.4 Các cảnh báo lúc dịch 138 11.2 Lỗi lúc liên k ế t 138 11.3 Lỗi lúc chạy chương trình 139 11.4 Lỗi logic 141 11.5 Gỡ lồi bàng thực n g h iệ m 141 11.6 Xử lý lỗ i .142 11.7 Các nguyên nhân tạo l ỗ i 143 11.8 Xử lý lồ i 144 11.8.1 Phần mã gọi hàm xử lý lỗi 144 11.8.2 Phần mã hàm xử lý lồi 146 11.9 Kết c h n g 147 Tài liệu tham k h ả o 149 LỜI NĨI Đ ÀU Giáo trình biên soạn theo đề cương mơn học “Lập trình bán với C"’ Đại học Quốc gia Hà Nội phô duyệt Môn học nhàm cung cấp khái niệm lộp trình ngơn ngừ lập trình bậc cao Ngôn ngữ lập trinh c dược sử dụng để mô tả, minh họa khái niệm đồng thời ngôn ngừ cụ thể để sinh viên rèn luyện kỳ lập trình, giải qiiyếl vấn đề Mục tiêu giáo trinh giúp cho người đọc suy nghĩ người làm Tin học Cách suy nghĩ kết hcrp đặc tính tốt cùa toán học, kỳ sư, khoa học tự nhiên Như nhà toán học, nhà Tin học dùng ngơn ngừ hình thức để thể ý tường minh Như kv sư, nhà Tin học thiết kế, lẳp ráp thành phần thành hệ thống đánh giá hệ thống đỏ N h nhà khoa học, nhà Tin học quan sát hành vi hệ thống phức tạp, đưa giả thuyết kiểm tra già thuyết dó Bùi Thế Duy, HỒ Sĩ Đàm Chương I LẬP TRÌNH VÀ N G Ơ N NGỮ LẬP T R ÌN H Kỹ cần có cùa naười làm Tin học khà mô tà vấn dề, suy nghĩ sáng tạo dể giải quvết vấn dề, trình bày giải pháp cách rõ ràng xác Học lập trinh hội tốt để thực hành kỳ giái quvết vấn đề 1,1 Giải vấn đề / 1.1 Giải (Ịuyểt vẩn đề sổng /làng ỉ làng ngày, lúc phủi sử dụng kỳ giải vấn dề, dưa lựa chọn đưa định Ví dụ, ta nên xem ti vi hay di xem phim, ta chọn nghề nghiệp nào, Các phương án giải vấn dề không lốt, định khơng tốt gây hậu q, chí nghiêm Irọng Ví dụ kinh doanh, phương án không tốt, dịnh không tốl có ihế gây thua lỗ tiền bạc mát thời gian Cliính vậy, biết cách giái vấn đồ, biết cách dưa ru định kv nâng quan trọng Dể giải vấn dồ, thường sử dụng bước sau; Xác dịnh/hiểu vấn đề; Ncu vấn đề gì, khơng thể giài nó, phủi xác định rõ vấn đề cũne dầu vào dầu vấn dề mứi giải được; Xác dịnh giài pháp khác để giải vấn dề; tạo danh sách nhièu tốt cách giải quyết, trao đổi với người khác để có nhũng giải pháp mà chưa nghĩ tới Neu chưa có đầy đú giải pháp, chưa thê đưa định tổt; 10 _ l a p t r in h c bần VỚỊ_C ỉ)ánh giá cho mồi giài pháp de chọn giai pháp tốt nhất; Liệt kê bước cho phép chúng la giái \ an dồ theo giãi pháp chọn lựa; Thực bước đánh giá giải pháp T ó m lại, để giải tốt vấn đề, cần: • vấn đề xác định rõ ràng; • giải pháp khác xcni xét; • đánh giá tính khả thi giải pháp 1.1.2 Giải vấn đề máy tính Như vậy, giải vấn đề kỳ mà phái sừ dụng hàng ngày Hãy xem xét hai loại vấn đề mà phải gặp hàng ngày: • Loại vấn đề có giải pháp kiểu thuật tốn: vấn dổ mà giải chuồi hành động • Loại vấn đề có giải pháp kiểu ơ-ris-tic {heuristic) - giài pháp không dạng chuỗi bước - ví dụ làmthế dể mua chứng khoán tốt nhất? Các vấn đề loại đầu thích hợp đổ giải Ircn máy tính, loại thứ hai đề giải máy tính cần kết hợp nhiều phưcmg pháp khác I.Ỉ.3 p/iãn tích hài toảiưvẩn đề Dẻ giải tốt tốn bàng máy tính, cần tiến hành phân tích tốn trước thực trièn khai máy Một phưưng pháp tốt để phân tích tốn tách tốn làm bốn phần: dừ liệu dầu vào, yêu cầu kết quả, bước xử lý cần làm, giải pháp khác Sau đày mẫu cùa bảng biểu dùng để phân tích tốn/vấn đè: 11 CHƯONG LẬP TRÌNH VA NGỔN NGỮ LẬP TRlNH Yẻu cảu kết Dừ liệu dẩu vảo - Dữ liệu toán cung cấp người dùng - Các hảng số dử liệu Các yêu cầu kết đầu Các bưởc xử lý cần lám Các giải pháp khác Danh sách bước xử lý cản ỉám công thừc (vi dụ kỹ thuật tìm kiếm hay xếp thuặt toán) Danh sách giải pháp khảc — Ví dụ, với tốn tính tổng sổ tiền phải trả cho người lao động theo giừ theo công thức; Tồng tiền phải trả = Tổng số làm * Định mức trả theo có Ihề phân tích bảng sau; Dữ liệu đâu vào Yồu cầu kếỉ Tống số làm Định mửc trả theo Tổng số tiền phải trả Các bước xừ lý cần ỉàm Các giải pháp khác Tỏng tiền phải trả = Tồng số làm • Định mức trả theo Coi định mửc trả theo số 1.2 Lập trình Trên máy tính, lập trình giải tốn có thuật tốn giài sau xác định dừ liệu vào liệu tốn Lập trình lựa chọn sử dụng cấu trúc dừ liệu thích hợp câu lệnh ngơn ngừ lập trình cụ thể đế mô tả liệu (dừ liệu vào, liệu liệu trung gian) thao tác cùa thuật tốn Giáo trình coi việc dạy lập trình ưu tiên việc dạy ngôn ngữ lập trình, cơng cụ, chi ưu tiên thứ hai Mục tiêu giúp người đọc hiểu khái niệm, nguyên tẳc, kỹ thuật chung, ví dụ kỳ thuật để viết mã không bị lồi, cách viết mã cách logic đơn giản, cách sử dụng cách hàng số, hay cách tách phần _[2 _ l a p TRINH CƠ BAN v i c khai báo khỏi phần cài dặt thực Tuy nhiên, hièu vấn dề mà khơng có ngơn ngữ lập trình Ví dụ, chi tiết vè cú pháp, cách thức triển khai khái niệm, nguyên tăc niíỏn ngừ lập trình khác cỏ thể khác 1'hC'm vào dó, kỹ ihuật lập trình thiết kế phài học thông qua việc sử dụng ngôn n e ữ lập trình Thiết kế, tổ chức mã, gỡ lỗi kỹ nãng mà ta thu cách trừu tượng, c ầ n phải viết mã niột ntìơn nizừ lạp trình thu kinh nghiệm thực tế từ Diều có nghĩa phải tìm hiểu vấn đề cùa ngôn ngữ lập trình 1.3 Ngơn n gữ tự nhiên ngơn ngữ lập trình Ngơn ngừ tự nhiên ngơn ngữ mà người dùng đê giao liếp với nhau, ví dụ tiếng Việt, tiếng Anh, tiếng Nhật Ngôn ngữ lự nhicn hình thành phát triển với phát triẻn cùa lồi người Ngơn ngữ hình thức ngôn ngữ thiết kế người cho ứng dụng định Ví dụ, cơng thức ký hiệu mà nhà toán học dùng ligơn ngừ hình thức để ghi lại mối quan hệ giừa số biếu lượng Các nhà hóa học dùng ngơn ngừ hình thức cùa họ để thể cấu trúc hóa học phân tử Và có lẽ quan trọng nhất, ngơn ngữ lập trinh ngơn ngữ hình thức thiết kế để thể lính tốn Ngơn ngữ lập trình ngôn ngữ người thiết kế đế mõ tả liệu thuật toán d i d n g mà m y tính trực tiêp h oặc gián íiêp "hiểu ” Mặc dù ngơn ngữ lập trình có nhiều điểm giống ngơn ngữ lự nhiên, nhiên có nhiều điềm khác nhau: - Sự nhập nhàng: Ngôn ngừ tự nhiên chứa đựng nhiều nliập nhàng Con ngưừi xử lý nhập nhàng cách sừ dụng thơng tin tình Trong ngơn ngừ lập trình khơng có nhập nhàng Điều có nghĩa mồi câu mang rnột ý nghĩa tình - Sự dư thừa: Đẻ giảm bớt khó hiểu lý giao tiếp, ngơn ngừ tự nhiên thường có thêm nhiều thành phần dư thừa 13 CHƯƠNG LẬP TRÌNH VẢ NGỔN NGỮLẢP TRÌNH Trong đó, ngơn ngừ lập trình cô đọng không chứa dư thừa - Ngừ nghĩa; Ngôn ngữ tự nhiên thường sử dụng nhiều thành ngữ phép ẩn dụ, câu mang nghĩa đen nhiều nghĩa bóng Trong ngơn ngữ lập trinh, câu chi mang nghĩa mà thơi Chính vl vậy, cần phải lưu ý điểm sau đọc hiểu cliLumu trinh máy tính Tarớc hết, cần lưu ý ràng ngơn ngừ hinh thức cô đọng ngôn ngừ tự nhiên, vậy, cần nhiều thời gian để đọc Nhớ ràng chi tiết quan trọng irong chương trinh máy tính Các lồi nhỏ đặt sai chấm phẩy dễ dàng bỏ qua ngơn ngữ tự nhiên, nliưng lại lạo khác biệt lớn chương trình máy tính 1.4 C c thành phần ngôn ngữ lập trình c Mỗi ngơn ngừ lập trình xác định ba thành phần là; bàng chữ cái, quy tấc cú pháp ngừ nghĩa khái niệm 1.4 ỉ Bảng chữ Bàng chừ tập hợp ký tự dùng để viết chương trình Nhìn chung bảng chừ ngơn ngữ lập trình không khác nhiều Bùiig chừ ngôn ngữ lập trình c bao gồm: • Các chừ thường chữ hoa bảng chừ tiếng Anh: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ • 10 chữ số Ảrập: 0123456789 • Các ký tự đặc biệt: + - } # * / \ = < > í ] A $ ! & ( ) { } dấu cách (mă ASCII 32) _ (dấu gạch dưới) , (dấu phẩy) ' (dấu nháy) “ (dâu nháy kép) J _ LAP TRiNH CƠ BẢN_vớl^ 1.4.2 Quy tắc cú pháp Quy tác cú pháp quy tắc sừ dụng để viết chương trinh Dựa vào quy tẩc đó, người lập trình xây dựng tồ hợp cách hợp lệ dể mơ tà xác thuật tốn để máy thực ỉ 4.3 Ngữ nghĩa Ngữ nghĩa xác định ý nghĩa thao tác cần phải thực ứng với tổ hợp kí tự dựa vào ngữ cảnh cùa Ví dụ, với hai biểu thức đây: x -y (1) m -n (2) với giả thiết x,y đại lượng nhận giá trị thực m,n đại lưựng nhận giá trị nguyên Khi dấu - biểu thức (1) hiểu trừ hai số thực biểu thức (2) hiểu trừ hai số nguyên Cũng dấu trừ hai ngữ cảnh khác có ý nghĩa khác 1.5 Kết c h ng Trong chưong này, đề cập đến vấn đề: - Giải vẩn đề máy tính ihế nào? - Thế lập trinh ngôn ngừ lập trình? - Giới thiệu ngơn ngừ lập trinh no / c thành phần cư bàn CHƯƠNG l a p TRlNH VÀ NGỔN NGƠLAP TRINH [5 Câu hỏi tập Chúng ta giải quvết máy tính tốn nào? Ngơn ngừ lập trình dùng để làm gì? Những điểm khác biệt ngơn ngữ tự nhiên ngơn ngừ lập trình gì? Sự khơng nhập nhàng ngơn ngừ lập trình thể ngơn ngữ lập trình c Chúng ta cần giải máy tính phương trình bậc hai a x ^ b x + c = Hãy phân tích tốn theo phần: liệu đau vào, yêu cầu kết quả, bước xử Iv càn làm, giài pháp khác 16 l Ạ p t r ìn h c o b ầ n v i c Bài đọc thêm Những thành công ngôn ngữ lập trình c c ngơn ngữ lập trình đáng ghi nhận Từ thiết kố ban đầu Dennis Ritchie, nhà khoa học làm việc phòng thí nghiệm AT & 'I' Bell New Jersey, với số lượng người dùng ngày tăng, c ngơn ngữ máy tính phổ biến dược viết giới Sự thành công c sổ yếu tố Không yếu tố chù chốt, quan trọng Có lỗ quan trọng tất cá c phát triển bời nhà lập trình viên thực thiết kế để sử dụng Ihực tế hàng ngày, khơng phải để trưng bày hay trình diễn Giống cơng cụ thiết kế tốt, dễ dàng nhà lập Irình đón nhận, rhay cung cấp ràng buộc, kiểm tra giới hạn nghiêm ngặt, ngơn ngữ lập trình c tập trung vào cung cấp sức mạnh Bởi điều này, phù hcĩp cho chuyên gia người bắt đầu Không chi c phổ biến tài sản mạnh mẽ kho vũ khí lập trình viên nghiêm túc, có lý khác cho thành cóng cùa ngơn ngừ Nó ln ln gan kết với hệ điều hành UNIX hưởng lợi từ phổ biến ngày lăng hộ diều hành Mặc dù khơng phủi lựa chọn cho ứng dụng xử lý dừ liệu thương mại lớn, c có lợi lớn ln có sẵn triển khai thương mại UNIX UNIX viết bàng c , đó, UNIX dược triển khai loại phần cứng mới, nhiệm vụ phài biên dịch c hệ thống Ket gần khơng thể tim thấy niột hệ thống UNIX mà không cần hỗ trợ cho c Do đó, nhà cung cấp phần mềm muốn nhắm mục tiêu thị trường UNIX thấy ràiig c đặt cược tốt nhát họ muốn phù hệ thống săn Trên thực tế, c lựa chọn cho tính khả chuyển phần mềm môi trường UNIX CHƯƠNG la p t r ìn h Và ng ổ n n g ữ LAP TRINH _ \J_ c đưực sừ dụng đáng kể từ bùng nổ thị trường máy tính cá nhân, c dã thiết kế đặc biệt cho việc phát triển phần mềm cho PC' nhà phát triển phần mềm khơng có khả nãng dễ đọc nãim suất cùa ngôn ngữ bậc cao, mà nhận sức mạnh để nhận truy cập dến kiến trúc hệ thống mà không cần đến hợp ngữ c ngơn ngừ có tính cà hai mức ngơn ngữ lập trình: lập trình bậc cao lập trình bậc thấp; vừa cung cấp luồng điều khiển mức cao, cấu Irúc liệu thù lục - tất cà cơng cụ cần có ngơn ngừ bậc cao đại Nó cho phép nhà lập trình hộ thốna đánh địa chi dưn vị ihỏng tin máy, thao tác bit tiến gàn tới phần cứng phía họ muốn Sự kết hcrp tính cần thiết thị trường phần mềm PC cạnh tranh kết quà số lượng ngày tãng nhà phát triển phần mềrn chọn c ngôn ngừ lập trình cùa họ Cuối cùng, khả mở rộng c đă góp phần khơng nhỏ đến phơ biên Nhiều ngơn ngừ khác khơng cung cấp cách linh hoạt việc trưy cập tệp tính vào cần thiết cho ứng dụng cơng nghiệp Thường ngôn ngừ chức vào đirực xây dựng sẵn hiểu trinh biên dịch Một điếm nhấn thiết kế c (và thủ vị, điểm mạnh hộ thống UNIX) quan điểm làm dể cung cấp giải pháp hoàn chinh cho yêu cầu chung chung, thay cung cấp nửa giải pháp (mà ln khơng làm vui lòng ai), ta nên cho phép người dùng xây dựng giải pháp riêng cùa họ Các nhà thiết kế phần mềm trơn tồn the giới có để học hỏi từ điều này! Đó cách tiếp cận đà dưực thực c , không chi cho việc vào Thông qua việc sừ dụng hàm thư viện, bạn m rộng ngơn ngữ theo nhiều cách để cung cấp tính mà nhà thiết kế không nghĩ đến Bằng chúmg diêu thư viện vào chuẩn stdio, phát tricn chậm so với ngôn ngữ c , thân trở thành tiêu chuẩn trước y ban Tiêu chuẩn ban hành Nó dã chứng minh có thề phát triển mơ hình vào tập tin tính nãng liên quan mà có tính khà chuyển cho nhiều hệ điều hành khác UNIX — - : -r— ĐAI HOC QUỐC GiA HÂ NỘI TRUNG TẰM THÔNG TIN ĨHƯ ViẸN ... b c cao, mà nhận s c mạnh để nhận truy c p dến kiến tr c hệ thống mà không c n đến hợp ngữ c ngơn ngừ c tính c hai m c ngơn ngữ lập trình: lập trình b c cao lập trình b c thấp; vừa cung c p... Bàng chừ tập hợp ký tự dùng để viết chương trình Nhìn chung bảng chừ ngơn ngữ lập trình khơng kh c nhiều Bùiig chừ ngơn ngữ lập trình c bao gồm: • C c chừ thường chữ hoa bảng chừ tiếng Anh: abcdefghijklmnopqrstuvwxyz... 63 6. 1 C c cấu tr c điều khiển lập trìn h 63 6. 1.1 Tuần t ự 63 6. 1.2 Rẽ n h n h 63 6. 1.3 L ặ p .64 6. 2 C u lệnh rẽ nhánh c 65 6. 2.1 C u

Ngày đăng: 27/03/2020, 23:16

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan