Chương 1 Tổng quan về lập trình cho MTĐT

 Computer program - Là tập hợp các câu lệnh (chỉ dẫn) được liệt kê theo một trình tự nhất định nhằm giải quyết một vấn đề.  Chương trình máy tính được viết trên một ngôn ngữ lập trình.  Theo Niklaus Wirth Chương trình = Cấu trúc dữ liệu + Giải thuật

pdf25 trang | Chia sẻ: lylyngoc | Lượt xem: 1646 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Chương 1 Tổng quan về lập trình cho MTĐT, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
4/10/2012 1 Chương 1 Tổng quan về lập trình cho MTĐT Giảng viên: ThS. Phạm Thanh An Khoa công nghệ thông tin Đại học Ngân hàng TP. Hồ Chí Minh Nội dung trình bày  Khái niệm về chương trình, ngôn ngữ lập trình, giải thuật  Giới thiệu về Top down Design  Mô hình phát triển phần mềm  Các cách tiếp cận trong lập trình  Tổng quan về lập trình hướng đối tượng  Kiến trúc .NET Framework và C#  Viết các chương trình đơn giản Chương trình Computer program - Là tập hợp các câu lệnh (chỉ dẫn) được liệt kê theo một trình tự nhất định nhằm giải quyết một vấn đề. Chương trình máy tính được viết trên một ngôn ngữ lập trình. Theo Niklaus Wirth Chương trình = Cấu trúc dữ liệu + Giải thuật 4/10/2012 2 Giải thuật - Algorithm  Giải thuật (Thuật toán - Thuật giải)  Là dãy các câu lệnh (chĩ dẫn) chặt chẽ và rõ ràng, xác định một trình tự các thao tác trên một số đối tượng nào đó sao cho sau một số hữu hạn bước thực hiện ta đạt được kết quả mong muốn Câu lệnh, chương trình, phần mềm Software Program 2Program 1 Commands Commands Commands Ngôn ngữ lập trình Programming language - Ngôn ngữ lập trình là ngôn ngữ để viết chương trình. Ngôn ngữ lập trình bao gồm hệ thống các ký hiệu, các qui ước về ngữ pháp và ngữ nghĩa, dùng để xây dựng thành các chương trình cho máy tính.  Có nhiều loại ngôn ngữ lập trình. 4/10/2012 3 Các lớp Ngôn ngữ lập trình MACHINE CODE ASSEMBLER LANGUAGES HIGH-LEVEL LANGUAGES ForTran, COBOL, C, C++, LISP, Pascal, Java, ... 4GLs ORACLE, SEQUEL, INGRES, ... 5GLs Artificial intelligence Hợp ngữ - Assembler Nguyên lý Von Neumann  Bao gồm 3 bước: Input –Process -Output Các bước lập trình Xác định yêu cầu bài toán Phân tích bài toán Thiết kế Giải thuật Cài đặt Kiểm thử Bảo trì và Cập nhật 4/10/2012 4 Mô tả giải thuật Ngôn ngữ tự nhiên Sơ đồ khối (flow chart) Mã giả (Pseudocode) Mô tả bằng ngôn ngữ tự nhiên  Input: Vào a, b thuộc tập R  Ra: Nghiệm phương trình ax + b =0 1. Nhập 2 số thực a và b 2. Nếu a =0 thì 2.1. Nếu b = 0, 2.1.1. Phương trinh vô số nghiệm 2.1.2. Kết thúc giải thuật 2.2. Ngược lại 2.2.1. Phương trình vô nghiệm 2.2.2. Kết thúc giải thuật 3. Ngược lại 3.1. Phương trình có nghiệm 3.2. Giá trị nghiệm đó là x = -b/a 3.3. Kết thúc giải thuật Bằng Sơ đồ khối (Flow Chart) Condition expression: Lựa chọn, kiểm tra điều kiện Process : Xử lý Data input/ out put : Vào ra dữ liệu Flow line: Luồng xử lý Begin, End : Bắt đầu, kết thúc 4/10/2012 5 Ví dụ: Cộng hai số Ví dụ: S T A R T IN P U T n u m r = n u m M O D 2 r = 0 D IS P L A Y "N u m b e r i s E ve n " S T O P Ví dụ: S TA RT INP UT num r = num MO D 2 r = 0 DISP LAY "Number is E ven" S TOP DIS PLA Y " Number is O dd" Yes No 4/10/2012 6 Bằng mã giả  Input: Vào a, b thuộc tập R  Ra: Nghiệm phương trình ax + b =0 If a = 0 then Begin If b = 0 then Xuất “Phương trình vô số nghiệm” Else Xuất “Phương trình vô nghiệm” End Else Xuất “Phương trình có nghiệm x = -b/a” 3 cấu trúc điều khiển cơ bản Trong lập trình có 3 cấu trúc cơ bản  Tuần tự: các bước thực hiện tuần tự, từ trên xuống, mỗi bước thực hiện đúng 1 lần  Lựa chọn: chọn 1 trong 2 hay nhiều thao tác để thực hiện  Lặp: Một hay nhiều thao tác được lặp lại 1 hay nhiều lần. Top-down Design  Top-Down Design là kỹ thuật trong chiến lược chia để trị  Các vấn đề phức tạp có thể được giải quyết bằng kỹ thuật top-down design hay stepwise refinement , với qui tắc  Chia bai toán lớn thành các bài toán con  Tiếp tục chia các bài toán con đó thành các bài toán con nhỏ  Tiếp tục quá trình trên khi các bài toán con có thể giải quyết dễ dàng 4/10/2012 7 Các phase phát triển phần mềm Tìm hiểu và phân tích yêu cầu Thiết kế Cài đặt Kiểm thử Triển khai và Bảo trì hệ thống Mô hình WaterFall Mô hình WaterFall (tt) Ưu điểm:  Thích hợp cho những dự án lớn.  Quản lý dự án sẽ dễ dàng và thuận tiện. Nhược điểm:  Thiếu sự trao đổi giữa người sử dụng và nhóm phát triển.  Không cho phép thay đổi nhiều theo các đặc tả yêu cầu của hệ thống. 4/10/2012 8 Mô hình xoắn ốc Mô hình xoắn ốc (tt) Phát triển hệ thống nhanh, sửa lỗi đến khi hoàn thiện.  Ưu điểm:  Linh hoạt trong việc thay đổi yêu cầu.  Nhược điểm:  Các pha bị lặp lại quá nhiều lần. Tạo nguyên mẫu (prototype) Tạo các nguyên mẫu cho người sử dụng dùng rồi tạo ra hoàn thiện hệ thống  Ưu điểm:  Linh hoạt trong việc thay đổi yêu cầu.  Rút ngắn thời gian phát triển.  Nhược điểm:  Không thích hợp trong dự án lớn. 4/10/2012 9 Các phương pháp lập trình  Lập trình tuần tự: Assembler (hợp ngữ)  Chương trình quá dài, khó nhớ  Khó kiểm soát lỗi  Lập trình cấu trúc (thủ tục/hướng chức năng)  Chương trình chính được chia nhỏ thành các chương trình con  Mỗi chương trình con thực hiện một công việc xác định  Lập trình hướng đối tượng Lập trình cấu trúc Hàm_1 Hàm_2 Hàm_3 Hàm_4 Hàm_5 Hàm_6 Hàm_7 Hàm_8 Hàm_9 Chương trình chính main() So sánh HĐT và hướng chức năng Cách tiếp cận hướng đối tượng  Hệ thống được xem là một tập hợp các đối tượng cùng làm việc với nhau để  Các đối tượng thực hiện hành động khi được yêu cầu  Mỗi đối tượng duy trì dữ liệu riêng của nó Tiếp cận thủ tục (Procedural approach)  Hệ thống được xem là một tập hợp các thủ tục tương tác với dữ liệu  Dữ liệu tách rời các thủ tục 4/10/2012 10 So sánh HĐT và hướng chức năng  Tiếp cận hướng chức năng và tiếp cận hướng đối tượng Khái niệm về hướng đối tượng Lớp (Classes) Đối tượng (Objects)  Attributes  Methods Trừu tượng hóa dữ liệu Bao gói và che dấu thông tin Kế thừa Đa hình Đối tượng Đối tượng = Dữ liệu + Hành vi Hành vi - Tăng giây - Tăng phút - Tăng giờ Dữ liệu - Giây - Phút - Giờ 4/10/2012 11 Đối tượng (tt) Thuộc tính •Nhãn hiệu xe •Màu xe •Công suất •Giá Hành vi •Khởi động •Chạy xe •Dừng xe •Tắt máy Trừu tượng hóa dữ liệu  Mô tả bài toán với những khía cạnh quan trọng nhất  Thu thập và phân tích các đối tượng liên quan, nắm bắt các đặc trưng cơ bản nhất của chúng và xác định rõ mối quan hệ giữa các đối tượng với nhau Bao gói và che dấu thống tin TaoDH CapnhatDH GiatriDH DonHang int MaDH int MaKH Tinh_gia(); public: TaoDH( ) CapnhatDH( ) GiatriDH( ) Các phương thức chung của đơn hàng Lớp đối tượng Bên ngoài 4/10/2012 12 Kế thừa Nhân viên Người Sinh viên Bác sĩ Đa hình Môi trường phần mềm trước đây Đối với người phát triển ứng dụng  Luôn quan tâm tới hệ điều hành  Luôn quan tâm tới công cụ, ngôn ngữ  Bất lợi của DLL và đăng ký vào registry  Phải xác định thiết bị truy cập  Không tích hợp được các ngôn ngữ khác nhau  Khó khăn khi phát triển các ứng dụng phân tán 4/10/2012 13 Môi trường phần mềm trước đây (tt) Đối với người sử dụng  Bất lợi khi phải cài ứng dụng trên máy đơn  Các trang web không tương tác với nhau .NET framework  Tích hợp một số công nghệ đã có của Microsoft và một số công nghệ mới nhằm tạo ra giao diện lập trình mới  Sử dụng mã trung gian  Độc lập với hệ điều hành  Đa ngôn ngữ  Hướng đến ứng dụng Internet  Hỗ trợ WebService  Tốc độ phát triển ứng dụng nhanh  Ứng dụng độc lập với thiết bị client  Tháng 7/2000, Microsoft giới thiệu .Net Kiến trúc của .Net framework Gồm hai thành phần chính  NET common language runtime (CLR)  .NET framework class library (FCL) 4/10/2012 14 Kiến trúc .Net framework Operate System Common Language Runtime Base Class Library ADO .NET: Data and XML ASP .NET Web Forms Web Services ASP.NET Mobile Controls Windows Forms Common Language Specification VB C++ C# J# … Visual Studio .N ET Common Language Runtime - CLR  CLR (Common Language Runtime) là nền tảng của .NET Framework.  Là công cụ thực thi mã trung gian (tựa JVM)  Biên dịch (Just-in-time compiler)  Thực thi mã nguồn  Quản lý bộ nhớ  Thưc thi luồng (Thread execution)  Xử lý lỗi (Error-handling)  Xác nhận mã nguồn an toàn và các hình thức khác của việc chính xác mã nguồn (managed code), Framework Class Libraries - FCL Thư viện lớp.NET Framework  Là một tập hợp hướng đối tượng của các kiểu dữ liệu được dùng lại (các thư viên lớp được đóng gói trước cho việc dùng lại), khoảng 4000 lớp  Được sử dụng bởi bất kỳ ngôn ngữ của .NET  Hầu hết các lớp được gom vào một không gian tên gọi là System 4/10/2012 15 .NET framework là tập hợp của nhiều ý tưởng .NET OOP JVM GUI Web component-based design n-tier design .Net là đa ngôn ngữ code.vb code.cs code.cpp ... Development Tools app.exe FCL .NET là đa ngôn ngữ (tt)  .Net không chỉ hỗ trợ một ngôn ngữ độc lập, có thể là sự tích hợp ngôn ngữ trong một ứng dụng Có nghĩa là chúng ta có thể xây dựng một lớp kế thừa code từ các ngôn ngữ hỗ trợ .NET khác nhau 4/10/2012 16 .Net là độc lập về hệ điều hành Các ứng dụng trong Net chạy được trên bất kỳ các nền tảng hỗ trợ APP.exe ? Win64 Win32 (XP,2K,98) WinCE Net là độc lập về hệ điều hành VB C++ C# … Intermedia Languge CLR for Linux CLR for Windows CLR for Unix .NET Compiler Linux Native code Windows Native code Unix Native code .Net là độc lập về hệ điều hành  Thực thi ứng dụng độc lập về hệ điều hành (Cross-platform) được hiểu theo 2 cách sau:  Các ứng dụng được viết dựa trên Framework Class Library (FCL), không dựa trên OS  Trình biên dịch phát sinh ra ngôn ngữ chung được thực thi bởi Common Language Runtime (CLR) 4/10/2012 17 Biên dịch trong .NET Code in VB.NET Code in C# Code in another .NET Language VB.NET compiler C# compiler Appropriate Compiler IL(Intermediate Language) code CLR (Common Language Runtime) just-in-time compilation Biên dịch trong .NET (tt)  Các chương trình được viết bởi ngôn lập trình được biên dịch vào ngôn ngữ trung gian (IL- Intermediate Language), không phải là mã máy (code machine)  CLR biên dịch lại các mã trung gian (IL code) vào mã máy tức thời khi thực thi chương trình, just-in-time (JIT): khi hàm đuợc gọi  Mã JIT tồn tại trong bộ nhớ cho các lần gọi sau (nếu bộ nhớ cho phép). Biên dịch trong .NET (tt)  Các mã trung gian là như nhau, dù được viết bởi ngôn ngữ lập trình nào trong Net.  Sản phẩm IL giống nhau, nên kết quả là một đối tượng được tạo ra từ ngôn ngữ này có thể được truy cập hay được dẫn xuất từ một đối tượng của ngôn ngữ khác trong .NET.  Ví dụ, người phát triển có thể tạo một lớp cơ sở trong VB.NET và sau đó dẫn xuất nó trong C# một cách dễ dàng. 4/10/2012 18 Biên dịch trong .NET (tt)  Tại sao phải có 2 lần biên dịch  Độc lập với hệ điều hành  .NET framewwork có thể cài đặt trên nhiều platform  Các chương trình .NET được thực hiện mà không có thay đổi code nào (viết 1 lần, chạy mọi nơi)  Độc lập về ngôn ngữ  Các chương trình .Net không bị trói buộc vào một ngôn ngữ cụ thể nào cả  Các chương trình trong .Net có thể được viết bới các ngôn ngữ trong Net Thiết kế ứng dụng trong .Net Các ứng dụng nguyên khối (Monolithic app)  Tất cả source code được biên dịch vào 1 file .exe  Không phải là quy tắc trong windows APP.exe Thiết kế ứng dụng trong .Net (tt) Ứng dụng dựa trên thành phần (Component-based)  Component-based app: .EXE + 1 hay nhiều hơn .DLLs  Đây là chuẩn thực tiễn trên windows compute.dll data.dll GUI.exe 4/10/2012 19 Tại sao phải Component-based  Lập trình nhóm (team programming) Phát triển ứng dụng đa ngôn ngữ (tôi dùng C#, bạn dùng C++, cô ấy dùng VB.Net) Sử dụng lại mã nguồn (code reuse) Nâng cấp độc lập (nâng cấp thành phần X) Các loại ứng dụng trong .NET Sử dụng .Net để xây dựng các loại ứng dụng sau  Ứng dụng Console  Ứng dụng giao diện GUI trên Windows (Windows Forms)  Ứng dụng web (ASP.NET)  Dịch vụ web service (XML web)  Ứng dụng trên Mobile Các phiên bản của .Net  .Net framework 1.0 – 2002  .Net framework 1.1 – 2003  .Net framework 2.0 – 2005 Net framework 3.5 – 2008 4/10/2012 20 Assemblies Các ứng dụng .Net được đóng gói vào các phần gọi là assembly 1 assembly = 1 hay nhiều lớp được biên dịch, gồm một hay nhiều file nguồn  .exe mô tả gói gồm các lớp với Main()  .Dll mô tả gói gồm các lớp Assemblies Development Tools assembly code.vbcode.vb code.cs .EXE / .DLL Cấu trúc chương trình C# 4/10/2012 21 Thực thi ứng dụng .Net  Client cần CLR & FCL để thực thi ứng dụng .NET  Cài đặt Redistributable .NET Framework  20MB  Chạy trên nền 98 và trở lên, NT (sp6a) trở lên Thực thi ứng dụng .Net Apps.EXE other FCL assemblies CLR JIT Compiler obj code OS Process Underlying OS and HW Core FCL assembly .DLL.DLL.DLL obj code obj code obj code Giới thiệu về C#  C# được xây dựng trên nền tảng C++ và Java  Đơn giản hơn C++  Trình biên dịch C# là hiệu quả nhất trong họ ngôn ngữ .NET  Là ngôn ngữ lập trình hướng đối tượng, đơn giản, an toàn, ít từ khóa (80 từ khóa)  C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần component  C# phân biệt chữ hoa chữ thường  Giới thiệu vào 7/2000 4/10/2012 22 C# và các ngôn ngữ khác C# mang sức mạnh của C++ với sự dễ dàng của ngôn ngữ Visual Basic C# và các ngôn ngữ họ .Net biên dịch ra IL còn Java biên dịch ra bytecode (mã trung gian), sau đó chúng được thực hiện bằng cách thông dịch hoặc biên dịch just-in-time trong từng máy ảo tương ứng Phiên bản VB.NET ~ C# Phát triển chương trình minh họa using System; class Hello { static void Main( ) { // Console from the System namespace Console.WriteLine("Hello World"); } } Phát triển chương trình minh họa Có tối thiểu là hai cách để soạn thảo, biên dịch và thực thi chương trình:  Sử dụng môi trường phát triển tích hợp (IDE) Visual Studio .NET  Sử dụng chương trình soạn thảo văn bản bất kỳ như Notepad rồi dùng biên dịch dòng lệnh. 4/10/2012 23 Biên dịch thành Assemblies  Tạo một assembly từ một hay nhiều file nguồn  Ví dụ : tạo một có tên assembly “array.dll” từ file array1.cs: Tạo file thực thi (Executables) Tạo flie thực thi sử dụng chỉ dẫn /target:exe :  Ví dụ: tạo ra file array.exe từ file array1.cs Tham chiếu một Assembly Để tham chiếu một assembly, thêm /reference khi biên dịch file thực thi: Ví dụ: tạo ra array.exe từ file nguồn array1.cs tham chiếu đến assembly có tên array2.dll: 4/10/2012 24 Biên dịch và chạy chương trình trình  Sử dụng trinh soạn thảo notepad và DOS prompt  Step 1 – gõ code trong Notepad  Step 2 – lưu file với phần mở rộng là .cs  Step 3 – Chuyển qua dấu nhắc DOS prompt và gõ lệnh sau csc .cs  Để chạy file C#, gõ tên file không phần mở rộng Sử dụng IDE VS .NET Sử dụng IDE VS .NET Tạo một ứng dụng console  Xóa đối số (string[] args) trong phương thức Main( ). Sau đó gõ dòng lệnh sau đây vao thân của Main(): System.Console.WriteLine("Hello World"); Dịch chương trình : Build-> Build Solution Chạy chương trình : Ctrl+F5 hoặc vào debug -> start 4/10/2012 25 Tóm tắt  .Net là một nền tảng phát triển phần mềm  Đa ngôn ngữ  Độc lập với hệ điều hành  Sử dụng ngôn ngũ trung gian IL  Hướng đến các ứng dụng phân tán  Phát triển ứng dụng nhanh  Triển khai ứng dụng dễ dàng  An toàn  Hướng đối tượng  Dựa trên nền tảng component  CLR, FCL là nền tảng Q&A