Bài giảng Lập trình cơ bản - Chương 1: Tìm hiểu khái niệm lập trình - Ngô Quốc Việt
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình cơ bản - Chương 1: Tìm hiểu khái niệm lập trình - Ngô Quốc Việt", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_lap_trinh_co_ban_chuong_1_tim_hieu_khai_niem_lap_t.pdf
Nội dung text: Bài giảng Lập trình cơ bản - Chương 1: Tìm hiểu khái niệm lập trình - Ngô Quốc Việt
- 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
- 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
- Desktop Web Di động C++ C# VB .NET JAVA PHP .NET JAVA .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 16
- 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”. Ngôn ngữ C #include main() { printf(“Hello world!”); } Ngôn ngữ C++ #include using namespace std; void main() { cout << "Hello World!" << endl; } 20
- 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!"); } } 21
- 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À GÌ? 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 rõ 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. 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. 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 Muḥammad ibn Mūsā al- دمحم بن موسى :with Diophantus. The word algebra is derived from al-jabr, one of the two Khwārizmī (Arabic was a Persian (الخوارزمي .operations used to solve quadratic equations, as described in his book Algoritmi de numero Indorum, the Latin translation of his other major work mathematician, astronomer, on the Indian numerals, introduced the positional number system and the number zero to the Western world in the 12th century. The words algorism astrologer and geographer. He was and algorithm stem from Algoritmi, the Latinization of his name.His name is born around 780, in either also the origin of the Spanish word guarismo, meaning digit. Khwarizm or Baghdad, and died around 850. 24
- Tính chất cơ bản thuật toán Xác định: rõ ràng, không mập mờ và 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 và 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 25
- Các đặc trưng khác của thuật toán Đầu vào và đầu ra (Input/Output) : mọi thuật toán đều nhận dữ liệu đầu vào, xử lý nó và 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 và thời gian khi thuật toán được thi hành. Là yếu tố quyết định để đánh giá, 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
- TÓM TẮT Nhập Tính toán Xuất dữ liệu xử lý thông tin thao tác 1; thao tác 2; ; thao tác N Liệt kê - Sơ đồ Nngữ lập trình Chương trình 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 giá 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ì b 3.2.1. Phương trình có hai nghiệm phân biệt x và x x1 1 2 2a 3.2.2. Giá trị của hai nghiệm được tính theo công thức sau b 3.2.3. Kết thúc thuật toán. x 2 2a 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. 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
- Lời giải trên máy tính = thuật toán 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. 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
- Không là thuật toán mà là 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 TÍNH ĐÚNG –Nấu, canh giờ –Kết thúc • Nồi cơm chín} 33
- Một ví dụ khác Ví dụ2 : Bài toán đổ nước Cóhai bình đựng nước làB 5 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). TÍNH XÁC ĐỊNH VÀ TÍNH ĐÚNG 34
- Biểu diễn thuật toán 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ả 35
- 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. Dùng bất kỳ Microsoft trình soạn Visio thảo để soạn 36
- So s|nh hai số 38
- 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
- Ngôn ngữ C Ngôn ngữ C++ #include #include main() main() { { int a, b, c; int a, b, c; printf(“Nhap so thu nhat: \n"); cout > a; printf(“Nhap so thu hai: \n"); cout > a; c = a + b; //Tinh tong cua a va b c = a + b; //Tinh tong cua a va b cout << “Tong cua a va b: ” << c; printf(“Tong cua a va b la: %d”, c); getch(); getch(); } } 41
- 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
- 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
- Tìm số lớn nhất trong 3 số 45
- Tính tổng của 50 số tự nhiên đầu tiên 46
- Tính N giai thừa 47
- 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