1. Trang chủ
  2. » Giáo án - Bài giảng

Kỹ thuật lập trình

31 146 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 274,86 KB

Nội dung

Lời mở đầu Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 1 LỜI MỞ ĐẦU  Khi bắt đầu làm quen với ngôn ngữ lập trình – Cụ thể là ngôn ngữ C – Sinh Viên thường gặp khó khăn trong việc chuyển vấn đề lý thuyết sang cài đặt cụ thể trên máy. Sách “Giáo Trình Bài Tập Kỹ Thuật Lập Trình” nhằm cung cấp cho các Học Sinh - Sinh Viên Trường CĐ Công Nghệ Thông Tin Tp. Hồ Chí Minh hệ thống các bài tập, những kỹ năng thực hành cơ bản và nâng cao về ngôn ngữ lập trình C. Cuốn sách này được xem như tài liệu hướng dẫn từng bước cho Học Sinh - Sinh Viên của Trường trong việc học và áp dụng kiến thức lý thuyết trên lớp một cách thành thạo và sâu rộng. Giáo trình được chia thành 10 chương theo từng nội dung kiến thức, kèm theo Các đề thi mẫu và 1 phụ lục hướng dẫn viết chương trình, chuẩn đoán lỗi và sửa lỗi. Mỗi chương gồm 2 phần:  Phần lý thuyết: được tóm tắt ngắn gọn với đầy đủ ví dụ minh hoạ kèm theo.  Phần bài tập: với nhiều bài tập được chia làm hai mức độ cơ bản và luyện tập nâng cao, bài tập có đánh dấu * là bài tập khó dành cho sinh viên luyện tập thêm.  Phần kết luận: Tóm tắt nội dung và các thao tác mà sinh viên cần nắm hay những lưu ý của chương đó. Trong quá trình biên soạn, chúng tôi đã cố gắng trích lọc những kiến thức rất cơ bản, những lỗi hay gặp đối với người mới lập trình. Bên cạnh đó chúng tôi cũng bổ sung thêm một số bài tập nâng cao để rèn luyện thêm kỹ năng lập trình. Tuy nhiên, chủ đích chính của giáo trình này là phục vụ cho một môn học nên chắc chắn không thể tránh khỏi những thiếu sót, vì thế, rất mong nhận được những góp ý quý báu của các thầy cô, các đồng nghiệp và các bạn Học Sinh – Sinh Viên để giáo trình này ngày càng hoàn thiện hơn. Chân thành cảm ơn. Lịch trình thực hành Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 2 LỊCH TRÌNH THỰC HÀNH ¡ Tổng thời gian: 90 tiết. STT NỘI DUNG SỐ TIẾT 1 Chương 1: Lưu đồ thuật toán 03 2 Chương 2: Cấu trúc điều khiển 06 3 Chương 3: Hàm con 12 4 Chương 4: Mảng một chiều 24 5 Chương 5: Chuỗi tự 06 6 Chương 6: Mảng hai chiều 12 7 Chương 7: Kiểu dữ liệu có cấu trúc 12 8 Chương 8: Tập tin 06 9 Chương 9: Đệ qui 06 10 Chương 10: Hướng dẫn lập trình bằng phương pháp Project 03 Lưu đồ thuật toán Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 3 CHƯƠNG 1 LƯU ĐỒ THUẬT TOÁN (FLOWCHART) Các hiệu biểu diễn lưu đồ thuật toán, cách biểu diễn các cấu trúc điều khiển rẽ nhánh, cấu trúc lặp và các kỹ thuật liên quan đến lưu đồ thuật toán. I. TÓM TẮT LÝ THUYẾT I.1. Khái niệm Lưu đồ thuật toán là công cụ dùng để biểu diễn thuật toán, việc mô tả nhập (input), dữ liệu xuất (output) và luồng xữ lý thông qua các hiệu hình học. I.2. Phương pháp duyệt • Duyệt từ trên xuống. • Duyệt từ trái sang phải. I.3. Các hiệu STT HIỆU DIỄN GIẢI 1 Bắt đầu chương trình 2 Kết thúc chương trình 3 Luồng xử lý 4 Điều khiển lựa chọn 5 Nhập 6 Xuất 7 Xử lý, tính toán hoặc gán 8 Trả về giá trị (return) 9 Điểm nối liên kết tiếp theo (Sử dụng khi lưu đồ vượt quá trang) Chapter INTRODUCTION TO COMPUTER AND PROGRAMMING Programming Fundamentals Chapter     Hardware and software Programming Languages Problem solution and software development Algorithms Programming Fundamentals Computer Hardware       Input unit Output unit Memory unit ALU CPU Secondary storage Programming Fundamentals Input Unit and Output Unit  Input Unit - It obtains information from various input devices and places this information at the disposal of the other units - Examples of input devices: keyboards, mouse devices  Output Unit - It takes information that has been processed by the computer and places it on various output devices - Most output from computer is displayed on screens, printed on paper, or used to control other devices Programming Fundamentals Memory Unit  The memory unit stores information Each computer contains memory of two main types: RAM and ROM  RAM (random access memory) is volatile Your program and data are stored in RAM when you are using the computer  ROM (read only memory) contains fundamental instructions that cannot be lost or changed by the user ROM is non-volatile Programming Fundamentals ALU and CPU  Arithmetic and Logic Unit (ALU) ALU performs all the arithmetic and logic operations Ex: addition, subtraction, comparison, etc  CPU The unit supervises the overall operation of the computer Programming Fundamentals Secondary Storage   Secondary storage devices are used to be permanent storage area for programs and data Examples: magnetic tapes, magnetic disks and optical storage CD Magnetic hard disk Floppy disk CD ROM etc… Programming Fundamentals Some terminology  A computer program is a set of instructions used to operate a computer to produce a specific result  Writing computer programs is called computer programming  The languages used to create computer programs are called programming languages  Software means a program or a set of programs Programming Fundamentals Machine languages  Machine languages are the lowest level of computer languages Programs written in machine language consist of 1s and 0s  Programs in machine language can control directly to the computer’s hardware  Example: 00101010 000000000001 000000000010 10011001 000000000010 000000000011 opcode address parts Programming Fundamentals Machine languages (cont.)  A machine language instruction consists of two parts: an instruction part and an address part  The instruction part (opcode) tells the computer the operation to be performed  The address part specifies the memory address of the data to be used in the instruction Programming Fundamentals 10 PROGRAMMING LANGUAGES  Some well-known programming languages: FORTRAN COBOL BASIC PASCAL C C++ Java  1957 1960s 1960s 1971 Structure programming Object-oriented programming What is Syntax? A programming language’s syntax is the set of rules for writing correct language statements Programming Fundamentals 17 The C Programming Language  In the 1970s, at Bell Laboratories, Dennis Ritchie and Brian Kernighan designed the C programming language  C was used exclusively on UNIX and on mini-computers During the 1980s, C compilers were written for other flatforms, including PCs  To provide a level of standardization for C language, in 1989, ANSI created a standard version of C, called ANSI C  One main benefit of C : it is much closer to assembly language other than other high-level programming languages  The programs written in C often run faster and more efficiently than programs written in other high-level programming language Programming Fundamentals 18 The C++ Programming Language  In 1985, at Bell Laboratories, Bjarne Stroutrup created C++ based on the C language C++ is an extension of C that adds object-oriented programming capabilities  C++ is now the most popular programming language for writing programs that run on Windows and Macintosh  The standardized version of C++ is referred to as ANSI C++  The ANSI standards also define run-time libraries, which contains useful functions, variables, constants, and other programming items that you can add to your programs  The ANSI C++ run-time library is called Standard Template Library or Standard C++ Library Programming Fundamentals 19 Structured Programming     During 1960s, many large softwares encountered severe difficulties Software schedules were late, costs exceeded budgets and finished products were unreliable People realized that software development was a far more complex activity than they had imagined Research activity in the 1960s  Structured Programming It is a discipline approach to writing programs that are clearer than unstructured programs, easier to test and debug and easier to modify Chapter discusses the principles of structured programming Pascal (Niklaus Wirth) in 1971  Pascal was designed for teaching structured programming in academic environments and rapidly became the preferred programming languages in most universities   Programming Fundamentals ... TRƯỜNG ĐẠI HỌC ĐÀ LẠT F 7 G GIÁO TRÌNH KỸ THUẬT LẬP TRÌNH NÂNG CAO TRẦN HOÀNG THỌ 2002 Kỹ thuật lập trình nâng cao - 2 - MỤC LỤC LỜI NÓI ĐẦU 4 PHẦN I 5 CHƯƠNG I .5 I. MƠÛ ĐẦU .5 1. Mô tả đệ quy 5 2. Các loại đệ quy 6 II. MÔ TẢ ĐỆ QUY CÁC CẤU TRÚC DỮ LIỆU .7 III. MÔ TẢ ĐỆ QUY GIẢI THUẬT 7 1. Giải thuật đệ quy 7 2. Chương trình con đệ quy 8 3. Mã hóa giải thuật đệ qui trong các ngôn ngữ lập trình. .11 4. Một số dạng giải thuật đệ quy đơn giản thường gặp . 13 CHƯƠNG II .16 I. CÁC NỘI DUNG CẦN LÀM ĐỂ TÌM GIẢI THUẬT ĐỆ QUY CHO MỘT BÀI TOÁN. .16 1. Thông số hoá bài toán .16 2. Phát hiện các trường hợp suy biến (neo) và tìm giải thuật cho các trường hợp này.16 3. Phân rã bài toán tổng quát theo phương thức đệ quy. 16 II. MỘT SỐ BÀI TOÁN GIẢI BẰNG GIẢI THUẬT ĐỆ QUY ĐIỂN HÌNH .17 1. Bài toán tháp Hà Nội . .17 2. Bài toán chia thưởng 19 3. Bài toán tìm tất cả các hoán vò của một dãy phần tử .21 4. Bài toán sắp xếp mảng bằng phương pháp trộn (Sort-Merge) 24 5. Bài toán tìm nghiệm xấp xỉ của phương trình f(x)=0 . .25 CHƯƠNG III 28 I. CƠ CHẾ THỰC HIỆN GIẢI THUẬT ĐỆ QUY 28 II. TỔNG QUAN VỀ VẤN ĐỀ KHƯÛû ĐỆ QUY .32 III. CÁC TRƯỜNG HP KHƯÛ ĐỆ QUY ĐƠN GIẢN. .33 1. Các trường hợp khử đệ quy bằng vòng lặp . 33 2. Khử đệ quy hàm đệ quy arsac 41 3. Khử đệ quy một số dạng thủ tục đệ quy thường gặp. .45 Phần II 52 CHƯƠNG IV 52 I. CÁC GIAI ĐOẠN TRONG CUỘC SỐNG CỦA MỘT PHẦN MỀM .52 1) Đặc tả bài toán 52 2) Xây dựng hệ thống 52 3) Sử dụng và bảo trì hệ thống 53 II. ĐẶC TẢ .53 1. Đặc tả bài toán .53 2. Đặc tả chương trình (ĐTCT) .54 3. Đặc tả đoạn chương trình 55 III. NGÔN NGỮ LẬP TRÌNH 57 CHƯƠNG V 59 I. CÁC KHÁI NIỆM VỀ TÍNH ĐÚNG .59 II. HỆ LUẬT HOARE (HOARES INFERENCE RULES). .59 1. Các luật hệ quả (Consequence rules) Kỹ thuật lập trì nh 1 CHƯƠNG i ĐạI CƯƠNG Về LậP TRìNH I. Khái niệm thuật toán: I.1. Khái niệ m: Thuậ t toá n là tậ p hợp cá c quy tắ c có logic nhằ m giả i một lớp bà i toán nà o đó để được một kế t quả xá c định. I.2. Các tí nh chất đặc trưng của thuật toán : I.2.1. Tí nh tổng quát : Thuậ t toá n được lậ p không phả i chỉ để giả i một bà i toá n cụ thể mà thôi mà còn phả i giả i đ ược một lớp cá c bà i toá n có dạ ng tương tự. I.2.2. Tí nh giới hạn : Thuậ t toá n giả i một bà i toá n phả i đ ược thực hiệ n qua một số giới hạ n các thao tá c để đạ t đế n kế t quả . I.2.3. Tí nh duy nhất : Toà n bộ quá trì nh biến đổi, cũng như trậ t tự thực hiệ n phả i đ ược xác định và là duy nhấ t. Như vậ y khi dùng thuậ t toá n cùng một dữ liệ u ban đầ u phả i cho cùng một kế t quả . I.3. Phân loại: Theo cấ u trúc, ta có thể phâ n thà nh ba loạ i thuậ t toá n cơ bả n sau : - Thuậ t toá n không phâ n nhá nh. - Thuậ t toá n có phâ n nhá nh. - Thuậ t toá n theo chu trì nh có bước lặ p xá c định và có bước lặ p không xá c định. II. Mô tả thuật toán bằng lưu đồ : II.1. Lưu đồ : Lưu đồ là một dạ ng đồ thị dùng để mô tả quá trì nh tí nh toá n một cá ch có hệ thống. Người ta thường thể hiệ n thuậ t toá n bằ ng lưu đồ. II.2. Các hiệu trên lưu đồ : Tê n khối hiệ u ý nghĩ a Khối mở đầ u hoặ c kế t thúc Dùng mở đầ u hoặ c kế t thúc chương trì nh Khối và o ra Đưa số liệ u và o hoặ c in kế t quả Kỹ thuật lập trì nh 2 Khối tí nh toá n Biể u diễ n cá c công thức tí nh toá n và thay đổi giá trị của cá c biế n Khối điều kiện Dùng để phâ n nhá nh chương trì nh Chương trì nh con Dùng để gọi chương trì nh con Mũi tê n Chỉ hướng truyề n thông tin, liê n hệ cá c khối II.3. Một số ví dụ biể u diễ n thuật toán bằng lưu đồ II.3.1. Thuật toán không phân nhánh: Ví dụ 1: Tí nh A = x2 + y2 BeginNhaọp (x,y)A = x2 + y2Xuaỏt (A)End Ví dụ 2 : Tí nhyxCByAxS22+++=; biế t A,B,C,x,y BeginNhaọp (A, B, C, x,y)S = (Ax + By + C) / SQRT (x*x + y*y)Xuaỏt SEnd Kỹ thuật lập trì nh 3 II.3.2. Thuật toán có phân nhánh: Ví dụ 1: Tì m giá trị max của ba số thực a,b,c BeginNhaọp (a, b, c)Max = aXuaỏt (Max)Enda > bMax < cMax = cSSMax = bẹẹ Ví dụ 2: Giả i phương trì nh bậ c nhấ t Ax+B =0 với cá c nghiệ m thực. BeginNhaọp (a, b)Xuaỏt (PTVẹ)Enda = 0SSXuaỏt (-b/a)b = 0 Xuaỏt (PTVN)ẹẹ Kü tht lËp tr× nh 4 VÝ dơ 3 : Gi¶ i ph­¬ng tr× nh bË c hai Ax2+Bx+C =0 víi c¸ c nghiƯ m thùc. BeginNhập (a, b, c)Xuất (‘X1= ’,(-b + SQRT(Delta)) / (2*a))Xuất (‘X2= ’,(-b - SQRT(Delta)) / (2*a))Enda = 0ĐĐPTB1 (b, c)Delta < 0Xuất (‘PTVN’)SSDelta = b*b - 4*a*cĐDelta = 0Xuất (-b / (2*a))S II.3.3. Tht to¸n cã chu tr× nh: Th t to¸ n cã chu tr× nh víi c¸c b­íc lỈ p x¸ c ®Þnh th­êng ® ­ỵc thĨ hiƯ n b» ng l­u ®å sau : i = giá trò ban đầuLệnh S;Tăng ii <= nSĐ víi n lµ gi¸ trÞ kÕ t thóc. Kỹ thuật lập trì nh 5 Ví dụ 4: Tí nhS=iinx=1, với cá c xi do ta nhậ p và o. BeginNhaọp (n)i = 1S = 0Nhaọp (xi)Endi = i+1S = S+xii <= nXuaỏt (S)Sẹ III. CáC NGôN Lời mở đầu Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 1 LỜI MỞ ĐẦU  Khi bắt đầu làm quen với ngôn ngữ lập trình – Cụ thể là ngôn ngữ C – Sinh Viên thường gặp khó khăn trong việc chuyển vấn đề lý thuyết sang cài đặt cụ thể trên máy. Sách “Giáo Trình Bài Tập Kỹ Thuật Lập Trình” nhằm cung cấp cho các Học Sinh - Sinh Viên Trường CĐ Công Nghệ Thông Tin Tp. Hồ Chí Minh hệ thống các bài tập, những kỹ năng thực hành cơ bản và nâng cao về ngôn ngữ lập trình C. Cuốn sách này được xem như tài liệu hướng dẫn từng bước cho Học Sinh - Sinh Viên của Trường trong việc học và áp dụng kiến thức lý thuyết trên lớp một cách thành thạo và sâu rộng. Giáo trình được chia thành 10 chương theo từng nội dung kiến thức, kèm theo Các đề thi mẫu và 1 phụ lục hướng dẫn viết chương trình, chuẩn đoán lỗi và sửa lỗi. Mỗi chương gồm 2 phần:  Phần lý thuyết: được tóm tắt ngắn gọn với đầy đủ ví dụ minh hoạ kèm theo.  Phần bài tập: với nhiều bài tập được chia làm hai mức độ cơ bản và luyện tập nâng cao, bài tập có đánh dấu * là bài tập khó dành cho sinh viên luyện tập thêm.  Phần kết luận: Tóm tắt nội dung và các thao tác mà sinh viên cần nắm hay những lưu ý của chương đó. Trong quá trình biên soạn, chúng tôi đã cố gắng trích lọc những kiến thức rất cơ bản, những lỗi hay gặp đối với người mới lập trình. Bên cạnh đó chúng tôi cũng bổ sung thêm một số bài tập nâng cao để rèn luyện thêm kỹ năng lập trình. Tuy nhiên, chủ đích chính của giáo trình này là phục vụ cho một môn học nên chắc chắn không thể tránh khỏi những thiếu sót, vì thế, rất mong nhận được những góp ý quý báu của các thầy cô, các đồng nghiệp và các bạn Học Sinh – Sinh Viên để giáo trình này ngày càng hoàn thiện hơn. Chân thành cảm ơn. Lịch trình thực hành Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 2 LỊCH TRÌNH THỰC HÀNH ¡ Tổng thời gian: 90 tiết. STT NỘI DUNG SỐ TIẾT 1 Chương 1: Lưu đồ thuật toán 03 2 Chương 2: Cấu trúc điều khiển 06 3 Chương 3: Hàm con 12 4 Chương 4: Mảng một chiều 24 5 Chương 5: Chuỗi tự 06 6 Chương 6: Mảng hai chiều 12 7 Chương 7: Kiểu dữ liệu có cấu trúc 12 8 Chương 8: Tập tin 06 9 Chương 9: Đệ qui 06 10 Chương 10: Hướng dẫn lập trình bằng phương pháp Project 03 Lưu đồ thuật toán Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 3 CHƯƠNG 1 LƯU ĐỒ THUẬT TOÁN (FLOWCHART) Các hiệu biểu diễn lưu đồ thuật toán, cách biểu diễn các cấu trúc điều khiển rẽ nhánh, cấu trúc lặp và các kỹ thuật liên quan đến lưu đồ thuật toán. I. TÓM TẮT LÝ THUYẾT I.1. Khái niệm Lưu đồ thuật toán là công cụ dùng để biểu diễn thuật toán, việc mô tả nhập (input), dữ liệu xuất (output) và luồng xữ lý thông qua các hiệu hình học. I.2. Phương pháp duyệt • Duyệt từ trên xuống. • Duyệt từ trái sang phải. I.3. Các hiệu STT HIỆU DIỄN GIẢI 1 Bắt đầu chương trình 2 Kết thúc chương trình 3 Luồng xử lý 4 Điều khiển lựa chọn 5 Nhập 6 Xuất 7 Xử lý, tính toán hoặc gán 8 Trả về giá trị (return) 9 Điểm nối liên kết tiếp theo (Sử dụng khi lưu đồ vượt quá trang) Lưu đồ thuật tốn Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 4 I.4. Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản Lời nói đầu Đồ họa máy tính được ra đời bởi sự kết hợp của 2 lĩnh vực thông tin và truyền hình. Đầu tiên kỹ thuật đồ họa được phát triển bởi các nhóm kỹ sư sử dụng máy tính lớn. Trong giai đoạn đầu của sự phát triển người ta phải tốn nhiều tiền cho việc trang bị các thiết bị phần cứng. Ngày nay, nhờ vào sự tiến bộ của vi xử lý, giá thành của máy tính càng lúc càng phù hợp với túi tiền của người sử dụng trong khi các kỹ thuật ứng dụng đồ họa của nó ngày càng cao hơn nên có nhiều người quan tâm nghiên cứu đến lĩnh vực này. Chúng ta có thể vẽ ra những hình ảnh không chỉ là ảnh tĩnh mà còn có thể biến đổi thành những hình ảnh sinh động qua các phép quay, tịnh tiến . Do vậy, đồ họa máy tính trở thành một lĩnh vực lý thú và có nhiều ứng dụng trong thực tế. Tuy nhiên, việc dạy và học kỹ thuật đồ họa thì không là đơn giản do chủ đề này có nhiều phức tạp. Kỹ thuật đồ họa liên quan đến tin học và toán học bởi vì hầu hết các giải thuật vẽ, tô cùng các phép biến hình đều được xây dựng dựa trên nền tảng của hình học không gian hai chiều và ba chiều. Hiện nay, Kỹ thuật đồ họa là một môn học được giảng dạy cho sinh viên chuyên ngành Tin học với 45 tiết lý thuyết và 15 tiết thực tập. Nội dung của giáo trình kỹ thuật đồ họa này tập trung vào 2 vấn đề chính như sau : - Trình bày các thuật toán vẽ và tô các đường cơ bản như đường thẳng, đa giác, đường tròn, ellipse và các đường conic. Các thuật toán này giúp cho sinh viên có thể tự mình thiết kế để vẽ và tô một hình nào đó ( chương 1 và 2). - Nội dung thứ hai đề cập đến đồ họa hai chiều và đồ họa ba chiều bao gồm các phép biến đổi Affine, windowing và clipping, quan sát ảnh ba chiều qua các phép chiếu, khử các mặt khuất và đường khuất, thiết kế đường cong và mặt cong (từ chương 3 đến chương 7). Giáo trình kỹ thuật đồ họa này được sửa đổi và cập nhật dựa trên kinh nghiệm giảng dạy đã qua và được xây dựng dựa trên tài liệu tham khảo chính là : Donald Hearn, M. Pauline Baker; Computer Graphics; Prentice-Hall, Inc., Englewood Cliffs, New Jersey , 1986. Sau cùng, chúng tôi hy vọng rằng giáo trình này sẽ đóng góp tích cực trong việc cải tiến sự hiểu biết của sinh viên về lĩnh vực đồ họa và mong nhận được sự góp ý của các đồng nghiệp và sinh viên để công việc biên soạn ngày càng được tốt hơn. Trang 1 Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản Mục lục Chương 1: GIỚI THIỆU THUẬT TOÁN VẼ VÀ TÔ .6 CÁC ĐƯỜNG CƠ BẢN .6 1.1 Tổng quan .6 1.2. Hệ tọa độ thế giới thực, hệ tọa độ thiết bị và hệ tọa độ chuẩn .7 1.3. Thuật toán vẽ đoạn thẳng 9 1.3.1. Thuật toán DDA (Digital DifferentialAnalyzer) .10 1.3.2. Thuật toán Bresenham .13 1.4. Thuật toán vẽ đường tròn 17 1.4.1. Thuật toán đơn giản

Ngày đăng: 30/09/2017, 04:38

TỪ KHÓA LIÊN QUAN

w