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