Kĩ thuật lập trình - Tổng quan Lập trình

Common Intermediate Language • Cho phép xây dựng ứng dụng với ngôn ngữ bạn quen thuộc • Một ngôn ngữ chung cho nhiều hệ điều hành khác nhau

pdf55 trang | Chia sẻ: huyhoang44 | Lượt xem: 696 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Kĩ thuật lập trình - Tổng quan Lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình v 1.0 - 09/2012 Tổng quan Lập trình 1 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Nội dung 2 1. Lập trình là gì ? 2. C# và .NET Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Lập trình là gì ? 3 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Máy tính là... 4 tập hợp các dây dẫn và vi mạch được tổ chức sao cho có thể thực hiện nhanh chóng các phép toán đơn giản... Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Vì sao máy tính lại có khả năng lớn như hiện nay ? 5 Điều gì giúp một hộp linh kiện điện tử thành một công cụ mạnh mẽ như vậy ? Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Lập trình 6 câu trả lời là nhờ có Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Lập trình là... 7 Chat với máy tính Sai khiến máy tính thực hiện những thao tác mong muốn Cần hiểu/nắm vững ngôn ngữ của máy tính Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 8 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 9 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward turn right turn left Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 10 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward turn right turn left step forward turn right step forward turn left step forward turn left step forward turn right step forward Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 11 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward turn right turn left Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 12 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward turn right turn left step forward step forward step forward Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 13 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung Phải giải quyết bài toán với tất cả các trường hợp có thể (trường hợp tổng quát) Phải tìm ra thuật toán của bài toán Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 14 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward turn right turn left facing a wall ? outside the maze ? Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 15 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward turn right turn left facing a wall ? outside the maze ? Làm thế nào để khái quát hoá chương trình ? Chia nhỏ chương trình thành những thành phần cơ sở / trường hợp riêng Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 16 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward turn right turn left facing a wall ? outside the maze ? Luôn để chuột đi sát bên phải các bức tường của mê cung Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 17 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward turn right turn left facing a wall ? outside the maze ? Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 18 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung đi sát bên phải bức tường Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 19 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung đi sát bên phải bức tường turn right if facing a wall then turn left and if facing a wall then turn left and if facing a wall then ... Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 20 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung đi sát bên phải bức tường turn right while (facing a wall?) { turn left } Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 21 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung đi sát bên phải bức tường turn right while (facing a wall?) { turn left } đối diện không phải là bức tường, có thể bước tới Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 22 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung turn right while (facing a wall?) { turn left } step forward if (not outside the maze?){ turn right while (facing a wall?) { turn left } step forward if (not outside the maze?){ ... } } Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 23 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung while (not outside the maze?){ turn right while (facing a wall?) { turn left } step forward } Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 24 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung step forward while (not outside the maze?){ turn right while (facing a wall?) { turn left } step forward } Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chú chuột trong mê cung 25 Hãy đưa ra các lệnh chỉ dẫn sao cho chú chuột có thể đi qua một mê cung Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Máy tính và ngôn ngữ lập trình • Máy tính chỉ hiểu được và hành động hay trả lời đối với một số lượng giới hạn các lệnh được dự đoán trước - gọi là tập lệnh • Viết chương trình nghĩa là thể hiện việc giải quyết bài toán dưới dạng thuật toán bằng các lệnh có trong tập lệnh • Kết hợp một cách thông minh các lệnh đơn giản đó thì có thể thực hiện được các công việc rất khó khăn và phức tạp • Quá trình viết một chương trình : • Phải biết các lệnh có sẵn • Hiểu bài toán để lập một thuật toán giải • Thể hiện thuật toán dưới dạng các lệnh máy • Sử dụng ngôn ngữ lập trình bậc cao - máy tính sẽ chuyển ngôn ngữ bậc cao thành các lệnh máy để chương trình có thể chạy được 26 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Ngôn ngữ lập trình 27 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Luôn có những đánh đổi Ngôn ngữ cấp cao gần với bài toán phụ thuộc vào hệ thống Ngôn ngữ cấp thấp gần với hệ thống không ánh xạ đến bài toán Java, C#, Objective C Fortran, COBOL, C++ C/C++ Assembler Machine 28 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Các ngôn ngữ lập trình 29 FORTRAN ALGOL(58) ALGOL(60) CPL BCPL B C Objective C C++ Java C# Tham khảo Lịch sử ngôn ngữ lập trình, Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Phương pháp lập trình 30 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình • Tập trung vào cách giải quyết vấn đề (ví dụ : thuật toán) • Chia một bài toán lớn ra làm nhiều bài toán nhỏ • Các thủ tục hoặc chương trình con • Ghép nối các đoạn chương trình xử lý các bài toán nhỏ thành một chương trình • Hai kiểu dữ liệu (dữ liệu được định nghĩa hai vùng khác nhau) • Dữ liệu địa phương được định nghĩa ở bên trong và chỉ có thể truy xuất bên trong một thủ tục • Dữ liệu toàn cục được định nghĩa bên ngoài và có thể truy xuất ở bất kỳ đâu trong chương trình • Dữ liệu toàn cục dẫn đến hiện tượng ghép nối thủ tục 31 Hướng thủ tục Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình • Cố gắng đầu tiên để cải tiến mô hình hướng thủ tục • Luồng dữ liệu • Nối dữ liệu đầu vào với dữ liệu đầu ra • Thiết kế cấu trúc dữ liệu trước • Thiết kế tiến trình / hàm sau • Che dấu dữ liệu • Đóng gói dữ liệu và các thủ tục xử lý dữ liệu cùng trong một module • Dữ liệu vẫn trong miền toàn cục nhưng chỉ cho phép truy xuất thông qua các hàm của module • Abstract Data Type (ADT) • Người lập trình tạo ra kiểu dữ liệu • struct trong ngôn ngữ C# 32 Hướng dữ liệu Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình • “Object-oriented modeling and design is a new way of thinking about problems using models organized around real-world concepts. The fundamental construct is the object, which combines both data structure and behavior in a single entity.” James Rumbaugh, Object-Oriented Modeling and Design • Các đặc tính của mô hình thủ tục và dữ liệu • Sự tổ chức tự nhiên cho dữ liệu và chức năng • Các đối tượng đóng gói dữ liệu và chức năng với nhau • Hỗ trợ ADT : nhiều đối tượng của một kiểu có thể được tạo ra (class là một kiểu đặc biệt hay ADT) • Hỗ trợ che dấu dữ liệu : truy xuất dữ liệu được kiểm soát thông qua các từ khóa 33 Hướng đối tượng Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Chương trình và thuật toán • Chương trình là một dãy các lệnh mà máy tính điện tử cần thực hiện theo một thứ tự xác định để giải một bài toán nào đó • Thuật toán là một tập hữu hạn các bước công việc cần được thực hiện theo một trật tự nhất định để giải bài toán đó • Để viết chương trình, chúng ta cần nắm : • Ngữ pháp của một ngôn ngữ lập trình (C#) • Phải thông thạo các quy tắc về ngữ pháp • Cách trình bày chương trình • Tổ chức chương trình sáng sủa • Thiết kế và cài đặt một thuật toán • Khó khăn nhất và hấp dẫn nhất • Phải học, nhớ nhiều kỹ thuật và biết kết hợp các phương án thực hiện công việc 34 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Các bước trong lập trình 35 Trình soạn thảo Trình biên dịch Nạp và chạy Các lỗi biên dịch và cảnh báo Lỗi thi hành Đầu ra không chính xác Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Nền tảng .NET 36 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Trước khi có .NET 37 • C/C++ • C cung cấp khả năng điều khiển xâu vào hệ thống • C++ cung cấp những lợi thế của lập trình hướng đối tượng • tự quản lý bộ nhớ, cú pháp không chặt chẽ, phép tính con trỏ dễ nhầm lẫn • Visual Basic 6.0 • cho phép dễ dàng xây dựng các giao diện phức tạp, truy xuất cơ sở dữ liệu mà không đòi hỏi nhiều công sức • không hoàn toàn hướng đối tượng, không hỗ trợ đa luồng • Java • độc lập nền tảng, cung cấp đầy đủ các kiểu dữ liệu và hàm chức năng cho tất cả các loại ứng dụng • ngôn ngữ thừa kế từ C++, những đã loại bỏ những cú pháp dễ gây nhập nhằng • không hỗ trợ khả năng liên thông ngôn ngữ Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Giải pháp .NET • Một nền tảng phần mềm cho desktop và web • Tương tác ngược với các công nghệ trước đây • Hỗ trợ nhiều ngôn ngữ lập trình - C#, Visual Basic, F#, J#,... • Một động cơ thi hành chung (common runtime engine) được chia sẻ cho tất cả các ngôn ngữ chấp nhận .NET (.NET-aware languages) • Tích hợp (integration) hoàn toàn và với tất cả các ngôn ngữ • Một thư viện lớp cơ sở (base class library) đầy đủ • Lập trình đơn giản cho các trang web động • Mô hình phát triển đơn giản hoá • Không còn phải đăng ký chương trình với hệ thống registry • Cho phép nhiều phiên bản của một dll tồn tại trong 1 máy 38 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Kiến trúc nền tảng .NET 39 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Common Language Runtime 40 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình .NET assembly • Là đơn vị nhỏ nhất (.exe, .dll) để phân phối, đánh phiên bản (versioning), tải tự động • Bao gồm : manifest, metadata, mã IL/CIL • Metadata được sử dụng để : tải tự động, đánh phiên bản và phản chiếu (reflection) 41 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Common Intermediate Language • Cho phép xây dựng ứng dụng với ngôn ngữ bạn quen thuộc • Một ngôn ngữ chung cho nhiều hệ điều hành khác nhau 42 .assembly Hello {} .method public static void Main() cil managed { .entrypoint .maxstack 1 ldstr "Hello, world!" call void [mscorlib]System.Console::WriteLine(string) ret } C:\>ildasm Hello.exe Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình43 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn • Môi trường thực thi .NET cung cấp một trình biên dịch JIT cho nền tảng bên dưới • Tại mỗi thời điểm, JIT sẽ biên dịch phần được triệu gọi của mã nguồn và lưu mã máy đã được biên dịch vào lại assembly thay cho mã CIL Tổng quan lập trình JIT/Jitter (Just-in-time) Compiler 44 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Diễn dịch & biên dịch • Diễn dịch (Interpreter) là quá trình đọc mã nguồn và trả ra kết quả của việc thực thi mã nguồn đó • Phân tích lặp lại ở một số câu lệnh (vòng lặp, hàm) • PERL, Python, HTML, Javascript,... • Biên dịch (Compiler) là quá trình dịch một chương trình từ ngôn ngữ nguồn sang ngôn ngữ đích • Thời lượng biên dịch ảnh hưởng đến hiệu năng thực thi • Cần nhiều tối ưu • C, C++, Java, COBOL,... 45 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Hướng tiếp cận lai Ví dụ nổi tiếng là Java • Biên dịch mã nguồn Java sang byte codes - Java virtual machine language (tập tin .class) • Thực thi • Diễn dịch trực tiếp byte codes, hoặc • Biên dịch một số hoặc tất cả ra mã máy (native code) • Just-in-time compiler (JIT) 46 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình .NET Base Class Library • .NET cung cấp một thư viện lớp đầy đủ • 200 namespace với 4500 kiểu dữ liệu • Hỗ trợ những công nghệ quan trọng • XML • mã hoá (cryptography) • phản chiếu (reflection) • đa luồng (multi-threading) • ... • Cơ bản thống nhất cho các ngôn ngữ lập trình khác nhau 47 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình .NET Base Class Library 48 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Common Type System • Đặc tả hình thức các kiểu phải được định nghĩa để được sử dụng trên CLR • Tập các kiểu dữ liệu chung : • Bất kỳ ngôn ngữ nào chạy trên CLR đều nên cài đặt • Không có cú pháp xác định • Các ngôn ngữ thường định nghĩa các kiểu thay thế 49 CTS C# System.Int32 int System.Int64 long System.String string Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Common Language Specification • Một tập các đặc tả mà các trình biên dịch phải thoả mãn, nếu chúng muốn sản phẩm của chúng là hoạt động tốt trong thế giới .NET 50 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình C# 51 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Các ngôn ngữ .NET 52 • Hơn 20 ngôn ngữ chấp nhận .NET • Hầu hết được cung cấp bởi bên thứ ba (3rd parties) • Các ngôn ngữ .NET được cung cấp bởi Microsoft • C++ • Visual Basic • C# Danh sách các ngôn ngữ lập trình .NET, Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình C# • C# là ngôn ngữ hướng đối tượng đơn giản, trong sáng, chỉ gồm ~80 từ khoá và hơn 10 kiểu dữ liệu cơ sở • Khá giống Java • 70% Java, 10% C++, 5% Visual Basic, 15% new 53 Giống Java • Object-orientation (single inheritance) • Interfaces • Generics • Exceptions • Threads • Namespaces • Strong typing • Garbage collections • Reflection • Dynamic loading of code • ... Giống C++ • Struct types • Operator oveloading • Pointer arithmetic in unsafe • Some syntactic details Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Tổng quan lập trình Các đặc điểm của C# • Không yêu cầu con trỏ • Quản lý bộ nhớ tự động thông qua trình gom rác (Garbage Collector) • Cấu trúc cú pháp hình thức cho kiểu dữ liệu liệt kê (enumeration), cấu trúc (structure) và thuộc tính lớp (class properties) • Cho phép chồng hàm cho các kiểu dữ liệu tự tạo • Sử dụng cú pháp tương tự khuôn mẫu trong C++ để lập trình các generic • Hỗ trợ hoàn toàn cho các kỹ thuật lập trình dựa trên giao diện 54 Thursday, September 5, 13 Lê Viết Mẫn - lvman@hce.edu.vn Cảm ơn sự chú ý Câu hỏi ? Tổng quan lập trình55 Thursday, September 5, 13

Các file đính kèm theo tài liệu này:

  • pdf01_tong_quan_lap_trinh_3228.pdf