Lập trình cơ bản - Tìm hiểu khái niệm lập trình

1. Viết lưu đồ thể hiện: tính điểm trung bình của học sinh với 3 môn toán, lý hoá 2. Đổi từ độ sang radian và ngược lại 3. Đổi tiền Việt Nam sang USD và ngược lại. 4. Thực hành: viết chương trình của các bài tập trên (C, C++, C#,

pdf49 trang | Chia sẻ: nguyenlam99 | Lượt xem: 1050 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Lập trình cơ bản - Tìm hiểu khái niệm lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TÌM HIỂU KHÁI NIỆM LẬP TRÌNH NGÔ QUỐC VIỆT-LÊ ĐỨC LONG 2012 1. Giới thiệu về lập trình, ngôn ngữ lập trình, thuật giải, chương trình. 2. Chương trình đầu tiên bằng C++. 3. Một số khái niệm và thuật ngữ. 4. Khái niệm mã giả và lưu đồ. 5. Quy trình xây dựng một chương trình đơn giản. 6. Khảo sát các môi trường lập trình. 7. Bài tập 2  Lập trình là gì ?  Thể hiện một quy trình xử lý vấn đề thành một thực thể hiểu được bởi máy tính.  Làm cho máy tính và các thiết bị trở nên hữu dụng và thông minh hơn.  Ngôn ngữ lập trình: phương tiện/công cụ để lập trình (Pascal, C/C++, C#, JAVA, )  Thuật giải: cách thức giải quyết một vấn đề.  Chương trình: tập hợp nhiều tác vụ nhằm thực thi yêu cầu cụ thể trong thực tế. 3  Bao gồm nhiều thiết bị phần cứng (hardware devices) ▪ Keyboard ▪ Screen (monitor) ▪ Disks ▪ Memory ▪ Thiết bị khác.  Hệ điều hành (Operating System – OS)  Phần mềm (software)  Công dụng: hệ thống, ứng dụng, cơ sở dữ liệu  Môi trường hoạt động: OS, Network, WEB, Server,.. 4 1. Viết chương trình: phải dùng ngôn ngữ lập trình, trong một môi trường lập trình (IDE) để viết ra mã nguồn (source code). 2. Biên dịch chương trình: dùng một môi trường biên dịch (compiler) để kiểm tra đúng cú pháp. 3. Chạy chương trình: xem chương trình có đúng ý hay không? 4. Debug (tìm lỗi) chương trình: tìm lỗi nếu có (hay luôn luôn có). 5. Lặp lại bốn bước trên cho đến khi OK. 5 6  Mã nguồn chương trình theo ngôn ngữ lập trình.  Chương trình, thành phần của chương trình.  Ứng dụng, phần mềm (liên kết nhiều chương trình/ứng dụng)  Giải pháp phần mềm (liên kết nhiều phần mềm)  Giải pháp CNTT (liên kết giải pháp phần mềm và các trang thiết bị khác) 7  Programmer hay coder là người viết phần mềm.  Thuật ngữ computer programmer là chuyên viên lập trình máy tính hoặc là người viết code phần mềm (en.wikipedia.org/wiki/Programmer.  Trước đây, programmer có:  Nhiều tiền.  Lập trình là công việc thú vị, trí thức  Lập trình nghe có vẻ siêu hơn những người khác  Giờ thì sao? 8  Suy nghĩ logic  Kiên nhẫn  Nhận thức tốt  Thích lao động trí óc  Thích xem phim viễn tưởng  V{ gì nữa ? 9  Theo nền tảng  Hệ điều hành: Windows, Linux, MacOS, v.v.  Môi trường: desktop, mạng, web, di động.  Theo lĩnh vực  Kỹ thuật: mô phỏng, tối ưu, v.v.  Kinh tế: tài chính, kế toán, v.v.  Quản lý: nhân sự, kho, doanh nghiệp, v.v.  Mạng xã hội 10  Ngôn ngữ lập trình  Phương tiện để viết chương trình cho máy tính  Rất nhiều ngôn ngữ lập trình khác nhau. Mỗi nn có quy định về cú pháp (syntax) & ngữ nghĩa (semantic)  Máy tính có thể hiểu được.  Được chia làm 3 nhóm chính  Ngôn ngữ máy - Machine languages  Hợp ngữ - Assembly languages  Ngôn ngữ cấp cao - High-level languages 11  Sử dụng các từ khóa tiếng Anh cho các lệnh hay nhóm lệnh của mã máy.  Được dịch sang mã máy khi thực hiện  Chuyển đỗi nhanh chóng  Dễ đọc và dễ hiểu hơn  Vẫn tương đối khó sử dụng do  Các lệnh còn đơn giản nên phải dùng nhiều lệnh.  Chưa có những cấu trúc điều khiển thuận tiện  Khả năng tìm và sửa lỗi cũng chưa thuận tiện.  Nền tảng xây dựng các ngôn ngữ cấp cao 12  Một câu lệnh diễn tả nhiều động thái  Có cấu trúc giống ngôn ngữ tự nhiên (tiếng Anh)  Được dịch sang assembly hay mã máy bằng các chương trình dịch trước khi thực thi.  Được phân loại thành dạng:  Không cấu trúc (sử dụng các lệnh goto)  Có cấu trúc – Structured  Lập trình hướng đối tượng – Object Oriented 13  Lập trình goto  Assembly  Basic  Lập trình cấu trúc  Pascal, C  Foxpro, dBase  Lập trình hướng đối tượng  Java, C++, Object C,  Khác  Prolog, Delphi, ASP, PHP.  C++.NET, C#, VB.NET, Ruby, Python 14  Theo vấn đề cần giải quyết (dựa trên kinh nghiệm)  Theo ưu thế của ngôn ngữ  C/C++: kỹ thuật. Phổ biến  C#, Basic: dễ dùng cho vấn đề quản lý  Theo tính tiện dụng của ngôn ngữ (dễ nhớ, môi trường làm việc dễ, có nhiều người cùng làm, có nhiều thư viện hỗ trợ, v.v)  Theo yêu cầu của khách hàng.  Theo thói quen của programmer. 15 16 Desktop Web Di động C++ C# VB .NET JAVA .NET JAVA PHP  .NET vẫn là nền tảng được sử dụng nhiều nhất cho các ứng dụng desktop và web.  PHP được ưa chuộng ở Châu Âu  JAVA là nền tảng được sử dụng nhiều nhất cho các ứng dụng di động  Không học chính thức ngôn ngữ lập trìnhTự học. Học tư duy lập trình Học sử dụng các công cụ và phương tiện lập trình 17  Microsoft  Visual Studio 6.0 (C, C++, Basic), DevC (C, C++).  Visual Studio 2008 (C++, Basic, C#)  Open source  Eclipse (Java, Php, )  Các hãng khác  Borland (Delphi, Borland C++)  NetBeans IDE. 18  Dùng để dịch từ một ngôn ngữ lập trình sang dạng mã máy hay assembly.  Phân loại:  Intepreter – thông dịch  Compiler – biên dịch  Công cụ phát triển – Integrated Development Environment (IDE)  Soạn thảo.  Dịch và sửa lỗi chương trình (compile & debug)  Chạy thử và sửa lỗi (run & debug) 19  Hiển thị thông b|o “Hello world”. 20 Ngôn ngữ C++ #include using namespace std; void main() { cout << "Hello World!" << endl; } Ngôn ngữ C #include main() { printf(“Hello world!”); } 21 Ngôn ngữ C# public class Hello { public static void Main() { System.Console.WriteLine("Hello, World!"); } } Ngôn ngữ JAVA public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }  Minh hoạ viết chương trình đầu tiên trên Visual C 6.0 (C/C++). helloC.  Minh hoạ viết chương trình đầu tiên trên Eclipse (JAVA). helloJAVA.  Minh hoạ viết chương trình đầu tiên trên Visual Studio 2008 (C#). helloDOTNET 22  Thuật toán l{ một tập hợp c|c hướng dẫn nhằm thực hiện một công việc n{o đó. Đối việc giải quyết vấn đề – b{i to|n , thuật to|n được hiểu l{ một tập hữu hạn c|c hướng dẫn rõ r{ng đê ̉ người giải b{i to|n có thể theo đó m{ giải quyết được b{i to|n. Như vậy, thuật to|n l{ một phương ph|p thê ̉ hiện lời giải của vấn đề, b{i to|n.  Việc nghiên cứu c|c thuật to|n có vai trò rất quan trọng trong khoa học m|y tính vì m|y tính chỉ giải quyết vấn đề được khi đã có hướng dẫn giải ro ̃ r{ng và đúng.  Trong khoa học máy tính, thuật to|n được định nghĩa l{ một dãy hữu hạn c|c bước không mập mờ và có thê ̉thực thi được, qu| trình h{nh động theo c|c bước n{y phải dừng và cho được kết quả như mong muốn. THUẬT TOÁN LÀ GÌ ? 23 Nhắc lại 1 ít về lịch sử Từ thuật toán (Algorithm) xuất phát từ tên một nhà toán học người Trung Á là Muhammad ibn Musa al-Khwarizmi, thường gọi là al’Khwarizmi. Ông là tác giả một cuốn sách về số học, trong đó ông đã dùng phương pháp mô tả rất rõ ràng, mạch lạc cách giải những bài toán. Sau này, phương pháp mô tả cách giải toán của ông đã được xem là một chuẩn mực và được nhiều nhà toán học khác tuân theo. Từ algorithm ra đời dựa theo cách phiên âm tên của ông. Muḥammad ibn Mūsā al- Khwārizmī (Arabic: محمد نب ىسوم يمزراوخلا ) was a Persian mathematician, astronomer, astrologer and geographer. He was born around 780, in either Khwarizm or Baghdad, and died around 850. He was the author of al-Kitāb al-mukhtaṣar fī ḥisāb al-jabr wa-l-muqābala, the first book on the systematic solution of linear and quadratic equations. Consequently he is considered to be the father of algebra, a title he shares with Diophantus. The word algebra is derived from al-jabr, one of the two operations used to solve quadratic equations, as described in his book. Algoritmi de numero Indorum, the Latin translation of his other major work on the Indian numerals, introduced the positional number system and the number zero to the Western world in the 12th century. The words algorism and algorithm stem from Algoritmi, the Latinization of his name.His name is also the origin of the Spanish word guarismo, meaning digit. 24  Xác định: rõ ràng, không mập mờ va ̀ các bước giải khả thi có thể thực thi được  Mập mờ: thiếu thông tin hoặc có nhiều chọn lựa nhưng không đủ điều kiện để quyết định  Thực thi được: xét trong điều kiện hiện tại của bài toán Hữu hạn: số bước là hữu hạn va ̀ có tính chất dừng  dễ bị vi phạm nhất  Sau một thời gian thi hành hữu hạn thì phải cho kết quả mong muốn Đúng: đúng với mọi trường hợp của bài toán  Tính chất khó đạt nhất Tính chất cơ bản thuật toán 25 Các đặc trưng khác của thuật toán Đầu vào va ̀ đầu ra (Input/Output) : mọi thuật toán đều nhận dữ liệu đầu vào, xử ly ́ nó va ̀ cho ra kết quả cuối cùng. Tính hiệu quả (Effectiveness) : dựa trên khối lượng tính toán, không gian va ̀ thời gian khi thuật toán được thi hành. Là yếu tố quyết định để đánh gia,́ chọn lựa cách giải quyết vấn đề – bài toán trên thực tế. Tính tổng quát (Generalliness): áp dụng được cho mọi trường hợp của bài toán. 26 Nhập dữ liệu Xuất thông tin Tính toán xử lý Liệt kê - Sơ đồ Nngữ lập trình Chương trình thao tác 1; thao tác 2; ; thao tác N TÓM TẮT 27 Ví dụ về thuật toán Giải phương trình bậc nhất ax + b =0 1. Yêu cầu cho biết gia ́trị của a và b 2. Nếu a = 0 thì 2.1. Nếu b = 0 thì phương trình vô định. Kết thúc thuật toán. 2.2. Nếu b  0 thì phương trình vô nghiệm. Kết thúc thuật toán. 3. Nếu a  0 thì phương trình có một nghiệm duy nhất là x = - b/a. Kết thúc thuật toán. 28 Ví dụ về thuật toán Thuật toán giải phương trình bậc hai ax2+bx+c=0 (a ≠0) 1. Yêu cầu cho biết giá trị của 3 hệ số a, b, c 2. Nếu a=0 thì 2.1. Yêu cầu đầu vào không đảm bảo. 2.2. Kết thúc thuật toán. 3. Trường hợp a khác 0 thì 3.1. Tính giá trị  = b2-4ac 3.2. Nếu  > 0 thì 3.2.1. Phương trình có hai nghiệm phân biệt x1 và x2 3.2.2. Giá trị của hai nghiệm được tính theo công thức sau 3.2.3. Kết thúc thuật toán. 3.3. Nếu  = 0 thì 3.3.1. Phương trình có nghiệm kép x0 3.3.2. Giá trị của nghiệm kép là x0 = -b/2a 3.3.3. Kết thúc thuật toán 3.4. Nếu  < 0 thì 3.4.1. Phương trình vô nghiệm. 3.4.2. Kết thúc thuật toán.            a b x a b x 2 2 2 1 29 Ví dụ về thuật toán Thuật toán tìm hộp có trọng lượng nặng nhất Vấn đề : Có n hộp có khối lượng khác nhau và một cái cân dĩa. Hãy chỉ ra cách cân để tìm được hộp có trọng lượng nặng nhất. Vấn đề này là thể hiện của một bài toán tổng quát : Cho một tập hợp A hữu hạn và một thứ tự toàn phần trên A. Hãy xây dựng thuật toán tìm phần tử lớn nhất của A. Ý tưởng: • Nếu có 1 hộp  hộp đó là nặng nhất • Nếu có từ 2 hộp trở lên: • Chọn 2 hộp bất kỳ đưa lên bàn cân  giữ lại hộp nặng • Thực hiện cứ thế cho đến khi không còn hộp nào • Hộp cuối cùng còn lại trên bàn cân là hộp nặng nhất 30 1. Nếu chỉ có 1 hộp (n=1) thì 1.1. Hộp đó chính là hộp nặng nhất. 1.2. Kết thúc thuật toán. 2. Ngược lại nếu có từ hai hộp trở lên (n>1) 2.1. Chọn hai hộp bất kỳ và đặt lên bàn cân. 2.2. Giữ lại hộp nặng hơn, cất hộp nhẹ hơn sang chỗ khác. 3. Nếu còn hộp chưa được cân thực hiện các bước sau, nếu không còn hộp nào nữa, sang bước 5. 3.1. Chọn một hộp bất kỳ và để lên dĩa cân còn trống. 3.2. Giữ lại hộp nặng hơn, cất hộp nhẹ hơn sang chỗ khác. 4. Trở lại bước 3. 5. Hộp còn lại trên cân chính là hộp nặng nhất. Kết thúc. Lời giải trên máy tính = thuật toán 31 Lại thêm khái niệm thuật giải ? Các tính chất của thuật toán rất chặt chẽ và cứng nhắc. Nhưng điều đó cũng có nghĩa là khả năng giải quyết vấn đề theo kiểu thuật toán cũng bị giới hạn. Sau này, người ta đã "làm mềm" đi hai tính chất quan trọng của thuật toán là tính xác định và tính đúng để giải quyết những vấn đề phức tạp hơn mà với các tính chất chặt chẽ của thuật toán thì không thể giải quyết được  Thuật giải – Algorithms. 32 Ví dụ 1 : Thuật giải nấu cơm •Gạo, củi} •Nấu cơm : –Vo gạo –Chuẩn bị lửa –Nấu, canh giờ –Kết thúc •Nồi cơm chín} Không là thuật toán mà là TÍNH ĐÚNG 33 Ví dụ 2: Bài toán đổ nước  Có hai bình đựng nước là B5 có dung tích 5lít , B8 có dung tích 8lít. Hãy chỉ ra cách đong để có được hai lít nước. Các thao tác có thể thực hiện được là :  Hứng đầy nước v{o bình B5 hoặc B8.  Đổ hết nước trong một bình.  Đổ nước từ bình n{y sang bình kh|c cho đến lúc bình kia đầy.  Thuật giải :  Đổ đầy nước vào bình B5 (B5=5) .  Đổ hết nước từ bình B5 sang bình B8 (B5=0, B8=5).  Đổ đầy nước bình B5 (B5=5, B8=5).  Đổ nước từ bình B5 cho đến khi B8 đầy (B5=2, B8=8). Một ví dụ khác TÍNH XÁC ĐỊNH VÀ TÍNH ĐÚNG 34 35  Cách 1: Dùng ngôn ngữ tự nhiên  Cách 2: Dùng lưu đồ / Vẽ sơ đồ khối  Cách 3: Dùng mã giả Biểu diễn thuật toán  Cả hai đều biểu diễn một trình tự xử lý để có kết quả mong muốn.  Lưu đồ: dùng cho các vấn đề trung bình/nhỏ.  Mã giả (pseudo code): có thể biểu diễn một trình tự lớn hơn. 36 Microsoft Visio Dùng bất kỳ trình soạn thảo để soạn 37 38 So s|nh hai số Tìm tổng của hai số bất kỳ.  Các biến: ▪ A: số thứ nhất ▪ B: số thứ 2 ▪ C: Sum (A+B)  Thuật giải  Step 1 – Nhập A  Step 2 – Nhập B  Step 3 – Tính C = A + B  Step 4 – Xuất C 39 40 41 Ngôn ngữ C #include main() { int a, b, c; printf(“Nhap so thu nhat: \n"); scanf("%d", &a); printf(“Nhap so thu hai: \n"); scanf("%d", &b); c = a + b; //Tinh tong cua a va b printf(“Tong cua a va b la: %d”, c); getch(); } Ngôn ngữ C++ #include main() { int a, b, c; cout << “Nhap so thu nhat << endl ; cin >> a; cout << “Nhap so thu hai << endl ; cin >> a; c = a + b; //Tinh tong cua a va b cout << “Tong cua a va b: ” << c; getch(); } Tìm hiệu v{ thương số của hai số.  Các biến  N1, N2: hai số. D: hiệu. V: thương số  Thuật giải  Bước 1 – Nhập N1  Bước 2 – Nhập N2  Bước 3 – Tính D = N1-N2  Bước 4 – Tính V = N1/N2  Bước 5: Xuất D  Bước 6: Xuất V. 42 43  Thực hiện theo trình tự  Tìm, xây dựng thuật giải hay cách giải quyết vấn đề trên giấy.  Liệt kê các quyết định quan trọng trên giấy.  Cài đặt chương trình trên máy .  Dịch chương trình  Chạy và thử chương trình.  Bạn sẽ trở thành chuyên nghiệp nếu theo đúng các trình tự trên. 44 45 Tìm số lớn nhất trong 3 số 46 Tính tổng của 50 số tự nhiên đầu tiên 47 Tính N giai thừa  Hiểu c|c kh|i niệm về lập trình, chương trình v{ c|c thuật ngữ liên quan  Hiểu v{ vận dụng lưu đồ  Hiểu c|ch viết một chương trình đơn giản trên c|c ngôn ngữ kh|c nhau  L{m việc bước đầu với một số IDE. 48 1. Viết lưu đồ thể hiện: tính điểm trung bình của học sinh với 3 môn toán, lý hoá 2. Đổi từ độ sang radian và ngược lại 3. Đổi tiền Việt Nam sang USD và ngược lại. 4. Thực hành: viết chương trình của các bài tập trên (C, C++, C#, JAVA). 49

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

  • pdfltcb_baigiang01_0399.pdf
Tài liệu liên quan