Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 200 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
200
Dung lượng
1,54 MB
Nội dung
HỌC VIỆN KỸ THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN Bài giảng KỸ THUẬT LẬP TRÌNH Biên soạn Hà Đại Dương Nguyễn Mậu Uyên Hà Nội - 1/2013 MỤC LỤC Bài - TỔNG QUAN I Giới thiệu .4 II Bài toán việc giải toán máy tính III Công cụ lập trình .10 IV Tóm tắt nội dung học 13 V Bài tập 14 Bài - NGÔN NGỮ LẬP TRÌNH C/C++ 15 I Giới thiệu 15 II Một số khái niệm 16 III Cấu trúc chương trình đơn giản 25 IV Nhập/Xuất liệu 27 V Tóm tắt nội dung học 32 VI Bài tập .33 Bài - Bài thực hành: MÔI TRƯỜNG LẬP TRÌNH VÀ CÁC LỆNH VÀO/RA .34 I Làm quen môi trường Dev-C++ 34 II Bài tập làm theo yêu cầu 34 III Bài tập tự làm 37 Bài - ĐIỀU KHIỂN CHỌN 40 I Khối lệnh .40 II Lệnh IF .41 III Lệnh SWITCH 44 IV Tóm tắt 48 V Bài tập 48 Bài - Bài thực hành: ĐIỀU KHIỂN CHỌN 49 I Bài tập làm theo yêu cầu 49 II Bài tập tự làm .52 Bài - ĐIỀU KHIỂN LẶP 53 I Lệnh FOR 53 II Lệnh WHILE 55 III Lệnh DO WHILE 57 IV Lệnh break continue 60 III Tóm tắt nội dung học 60 IV Bài tập .60 Bài - Bài thực hành: ĐIỀU KHIỂN LẶP 61 I Bài tập làm theo yêu cầu 61 II Bài tập tự làm .63 Bài - MẢNG VÀ CON TRỎ 65 I Mảng 65 II Con trỏ 73 IV Tóm tắt nội dung học 83 V Bài tập 83 Bài - Bài thực hành: MẢNG VÀ CON TRỎ 84 I Bài tập làm theo yêu cầu 84 II Bài tập tự làm .87 Bài 10 - XÂU KÝ TỰ .89 I Khai báo .89 II Nhập xuất chuỗi 90 III Một số hàm xử lý chuỗi 91 V Tóm tắt nội dung học 95 VI Bài tập .95 Bài 11 - Bài thực hành: XÂU KÝ TỰ 96 I Bài tập làm theo yêu cầu 96 II Bài tập tự làm .98 Bài 12 - HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH 100 I Tổ chức chương trình 100 II Hàm người dùng định nghĩa 104 III Con trỏ hàm 122 IV Đệ qui .125 V Tóm tắt nội dung học 129 VI Bài tập 130 Bài 13 - Bài thực hành: HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH 131 I Bài tập làm theo yêu cầu 131 II Bài tập tự làm 133 Bài 14 - CẤU TRÚC DỮ LIỆU DO NGƯỜI DÙNG TỰ ĐỊNH NGHĨA 135 I Cấu trúc liệu người dùng tự định nghĩa 135 II Ngăn xếp 145 III Hàng đợi 151 IV Tóm tắt nội dung học 154 V Bài tập 154 Bài 15 - Bài thực hành: CẤU TRÚC DỮ LIỆU DO NGƯỜI DÙNG TỰ ĐỊNH NGHĨA 155 I Bài tập làm theo yêu cầu 155 II Bài tập tự làm 160 Bài 16 - LÀM VIỆC VỚI FILE 162 I Một số khái niệm .162 II Các thao tác tập tin 163 III Truy cập tập tin văn 165 IV Truy cập tập tin nhị phân 168 V Tóm tắt nội dung học 172 VI Bài tập 172 Bài 17 - Bài thực hành LÀM VIỆC VỚI FILE .173 I Bài tập làm theo yêu cầu 173 II Bài tập tự làm 176 Bài 18 - MỘT SỐ VẤN ĐỀ MỞ RỘNG 177 I Cây, Hàm băm 177 II Khởi động đồ hoạ .181 III Các hàm đồ hoạ .184 IV Xử lý văn hình đồ hoạ .193 V Hiệu ứng hoạt hình đồ họa .195 VI Tóm tắt nội dung học 197 VII Bài tập 197 Bài 19 - Bài thực hành: MỘT SỐ VẤN ĐỀ MỞ RỘNG 198 I Bài tập làm theo yêu cầu 198 II Bài tập tự làm 198 Bài 20 - ÔN TẬP 199 I Những vấn đề lý thuyết 199 II Các thực hành .200 Bài - TỔNG QUAN Nội dung học I Giới thiệu II Bài toán việc giải toán máy tính III Công cụ lập trình IV Bài tập I Giới thiệu Mục đích, Yêu cầu Mục đích môn học cung cấp cho sinh viên kiến thức kỹ thuật lập trình nói chung kỹ sử dụng công cụ lập trình C/C++ việc giải toán chương trình phần mềm máy tính Kết thúc môn học sinh viên trang bị kiến thức về: - Cách thức giải toán máy tính; - Công cụ, kiếm thức việc thuật toán hóa toán; - Ngôn ngữ lập trình C/C++; - Một số cấu trúc liệu giải thuật điển hình Yêu cầu sinh viên - Có hiểu biết cấu trúc máy tính; - Có hiểu biết hệ điều hành; - Biết sử dụng phần mềm hệ thống việc quản lý tài nguyên, chép/copy liệu; - Biết sử dụng phần mền ứng dụng công cụ soạn thảo văn bản, truy cập internet, web - Nghe giảng làm tập Nội dung môn học Xem chi tiết mục lục Tài liệu học tập tham khảo Hà Đại Dương, Nguyễn Mậu Uyên, Tập Bài giảng Lập trình co bản, HVKTQS 2010; Trần Đức Huyên, Phương pháp giải toán tin học, Nhà xuất giáo dục 1997; Đào Thanh Tĩnh, Hà Đại Dương, Tin học đại cương, Học viện KTQS, 2003; Đỗ Xuân Lôi, Cấu trúc liệu giải thuật, NXB Giáo dục, 1997; Robert Sedgewick, Algorithns in C++, Addison-Wesley 1992; Niklaus Wirth Bản dịch Nguyễn Quốc Cường, Cấu trúc liệu + Giải thuật = Chương trình, , NXB KHKT, 2001; Giáo trình Tin Học Đại Cương A, Nguyễn Văn Linh, Khoa Công Nghệ Thông Tin, Đại học Cần Thơ, 1991 Giáo trình lý thuyết tập ngôn ngữ C; Nguyễn Đình Tê, Hoàng Đức Hải, Nhà xuất Giáo dục, 1999 C - Tham khảo toàn diện, Nguyễn Cẩn, Nhà xuất Đồng Nai, 1996 10 Giúp tự học Lập Trình với ngôn ngữ C, Võ Văn Viện, Nhà xuất Đồng Nai, 2002 11 The C Programming Language, Brain W Kernighan & Dennis Ritchie, Prentice Hall Publisher, 1988 II Bài toán việc giải toán máy tính Phương pháp tổng quát để giải toán máy tính Để giải toán máy tính cần thực bước sau: Xác định toán; Xác định cấu trúc liệu để mô tả toán; Xây dựng thuật toán; Soạn thảo văn chương trình, kiểm tra hoàn thiện chương trình Xác định toán Khái quát toán Trong trình tồn phát triển, cá nhân phải giải nhiều toán đặt sống Có thể nói sống chuỗi toán mà ta phải đối đầu để giải Theo nhiều nhà nghiên cứu toán diễn đạt theo sơ đồ chung sau: AB (*) đó: - A giả thiết, điều kiện ban đầu, thông tin cho, biết; - B kết luận, mục tiêu cần đạt phải tìm, phải làm kết thúc toán; suy luận, giải pháp cần xác định chuỗi thao tác cần thực để có kết B từ có A Xác định toán Theo sơ đồ việc xác định toán có nghĩa xác định A, B xác định bước thực để “đi” từ A đến B Bài toán máy tính Tương tự (*), - A gọi đầu vào (INPUT); - B gọi đầu (OUTPUT); CHƯƠNG TRÌNH MÁY TÍNH cho kết B với đầu vào A Khó khăn Việc xác định toán máy tính thường gặp khó khăn sau: - Thông tin A, B thường không rõ ràng không đầy đủ; - Thông báo điều kiện đặt cho cách giải (=>) thường không nêu cách minh bạch; Ví dụ 1: Hãy viết chương trình cho phép giải phương trình bậc A =???, B=??? Ví dụ 2: Giả sử người A có số tiền X đem gửi tiết kiện, lãi xuất tháng L% hỏi sau T tháng A có tiền biết tháng tiền lãi cộng vào gốc Ví dụ 3: Bài toán hậu - Hãy tìm cách đặt hậu bàn cờ vua cho quân hậu ăn quân hậu khác Ví dụ 4: Cho dãy số a1, a2, , an xếp dãy theo thứ tự giảm dần Ví dụ 5: Hãy xây dựng hệ thống quản lý hồ sơ kết học tập sinh viên A =???, B=??? Nhận xét quan trọng Việc xác định toán rất quan trọng, ảnh hưởng tới cách thức chất lượng việc giải toán; - Một toán cho dù diễn đạt chi tiết, rõ ràng nên giả định phần lớn thông tin A, B tiềm ẩn đầu người giải Thông tin A B thường biểu tượng gợi nhớ đến thông tin tiềm ẩn - Bước để xác định toán phải phát biểu lại toán cách xác theo ngôn ngữ riêng cách tiếp cận toán, hiểu toán - Bước tiếp tìm hiểu thông tin Input A, Output B mối liên hệ chúng; - Nên xét vài trường hợp cụ thể để thông qua hiểu toán , thấy rõ thao tác phải làm Thực tế cho thấy có toán tin học mô tả thông qua ví dụ (như: ) Cấu trúc liệu Giải thuật Cấu trúc liệu - Trong khoa học máy tính, cấu trúc liệu cách tổ chức lưu trữ truy cập liệu máy tính cho sử dụng cách hiệu (và phụ thuộc vào công cụ lập trình) - Ví dụ (trong C): Mảng (Array), Con trỏ (Pointer), Xâu ký tự (String), File, Stack, Queue - Thông thường, cấu trúc liệu chọn cẩn thận cho phép thực thuật toán hiệu - Việc chọn cấu trúc liệu thường chọn cấu trúc liệu trừu tượng Một cấu trúc liệu thiết kế tốt cho phép thực nhiều phép toán, sử dụng tài nguyên, thời gian xử lý không gian nhớ tốt - Các cấu trúc liệu triển khai cách sử dụng kiểu liệu, tham chiếu phép toán cung cấp ngôn ngữ lập trình Thuật toán - Thuật toán , gọi giải thuật, tập hợp hữu hạn thị hay phương cách định nghĩa rõ ràng cho việc hoàn tất số việc từ trạng thái ban đầu cho trước; thị áp dụng triệt để dẫn đến kết sau dự đoán - Thuật toán qui tắc hay qui trình cụ thể nhằm giải vấn đề số bước hữu hạn, nhằm cung cấp kết từ tập hợp kiện đưa vào Ví dụ 1: Giả sử có hai bình A B đựng hai loại chất lỏng khác nhau, A chứa dung dịch Da, B chứa dung dịch Db Giải thuật để đổi dung dịch Da vào bình B Db vào A là: Yêu cầu phải có thêm bình thứ ba gọi bình C Bước 1: Đổ dung dịch Db vào bình C; Bước 2: Đổ dung dịch Da vào bình B; Bước 3: Đổ dung dịch Db vào bình A Ví dụ 2: Một giải thuật tìm ước chung lớn hai số a b là: Bước 1: Nhập vào hai số a b Bước 2: So sánh số a,b chọn số nhỏ gán cho UCLN Bước 3: Nếu hai số a b chia hết cho UCLN Thực bước Bước 4: Giảm UCLN đơn vị quay lại bước Bước 5: In UCLN - Kết thúc Một thuật toán có tính chất sau: - Tính xác: để đảm bảo kết tính toán hay thao tác mà máy tính thực xác - Tính rõ ràng: Thuật toán phải thể câu lệnh minh bạch; câu lệnh xếp theo thứ tự định - Tính khách quan: Một thuật toán dù viết nhiều người nhiều máy tính phải cho kết - Tính phổ dụng: Thuật toán không áp dụng cho toán định mà áp dụng cho lớp toán có đầu vào tương tự - Tính kết thúc: Thuật toán phải gồm số hữu hạn bước tính toán Trình tự thực bước thuật toán Giải thuật thiết kế theo ba cấu trúc suy luận sau đây: Tuần tự (Sequential): Các công việc thực cách tuần tự, công việc nối tiếp công việc Cấu trúc lựa chọn (Selection) : Lựa chọn công việc để thực vào điều kiện Có số dạng sau: - Cấu trúc 1: Nếu < điều kiện> (đúng) thực - Cấu trúc 2: Nếu < điều kiện> (đúng) thực , ngược lại (điều kiện sai) thực - Cấu trúc 3: Trường hợp < i> thực Cấu trúc lặp (Repeating): Thực lặp lại công việc không nhiều lần vào điều kiện Có hai dạng sau: - Lặp xác định: loại lặp mà viết chương trình, người lập trình xác định công việc lặp lần - Lặp không xác định: loại lặp mà viết chương trình người lập trình chưa xác định công việc lặp lần Số lần lặp xác định chương trình thực thi Biểu diễn thuật giải Ngôn ngữ tự nhiên: Ngôn ngữ tự nhiên ngôn ngữ sử dụng, sử dụng ngôn ngữ tự nhiên để mô tả giải thuật giống ví dụ Ví dụ: Ta có giải thuật giải phương trình bậc dạng ax b sau: Bước 1: Nhận giá trị tham số a, b Bước 2: Xét giá trị a xem có hay không? Nếu a=0 làm bước 3, a khác không làm bước Bước 3: (a 0) Nếu b ta kết luận phương trình vô số nghiệm, b khác ta kết luận phương trình vô nghiệm Bước 4: ( a khác 0) Ta kết luận phương trình có nghiệm x=-b/a Lưu đồ thuật toán: Ngôn ngữ sơ đồ (lưu đồ) ngôn ngữ đặc biệt dùng để mô tả giải thuật sơ đồ hình khối Mỗi khối qui định hành động mô tả hình Ví dụ: So sánh số Giả mã: (tiếng Anh: Pseudocode, xuất phát từ chữ pseudo code) mô tả giải thuật ngắn gọn không thức, sử dụng quy ước có cấu trúc số ngôn ngữ lập trình (thường Pascal) thường bỏ chi tiết không cần thiết để giúp hiểu rõ giải thuật Ví dụ: Thuật giải phương trình bậc Vào: a,b,c Ra: Kết luận nghiệm BEGIN Delta: = b*b – 4*a*c; If Delta=0 Then Phương trình có nghiệm kép x=-b/(2*a); else begin if Delta