Bài giảng bài 1 giúp người học tìm hiểu về các khái niệm lập trình. Các nội dung cụ thể trong chương này gồm có: Giới thiệu về lập trình, ngôn ngữ lập trình, thuật giải, chương trình; chương trình đầu tiên bằng C++; một số khái niệm và thuật ngữ; khái niệm mã giả và lưu đồ;...và một số nội dung khác
Trang 1TÌM HIỂU KHÁI NIỆM LẬP TRÌNH
NGÔ QUỐC VIỆT-LÊ ĐỨC LONG
2012
Trang 21. 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
Trang 3 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
Trang 4 Bao gồm nhiều thiết bị phần cứng (hardware
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
Trang 51 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
Trang 7 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
Trang 8 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ó:
Trang 10 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
Trang 11 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
Trang 12 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
Trang 13 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
Trang 14 Prolog, Delphi, ASP, PHP
C++.NET, C#, VB.NET, Ruby, Python
14
Trang 15 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
Trang 16Desktop Web Di động
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
Trang 17 Không học chính thức ngôn ngữ lập trìnhTự 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
Trang 18 Microsoft
Visual Studio 6.0 (C, C++, Basic), DevC (C, C++)
Visual Studio 2008 (C++, Basic, C#)
Trang 19 Dịch và sửa lỗi chương trình (compile & debug)
Chạy thử và sửa lỗi (run & debug)
19
Trang 20 Hiển thị thông b|o “Hello world”
cout << "Hello World!" << endl;
}
Ngôn ngữ C
#include <stdio.h>
main() {
printf(“Hello world!”);
}
Trang 22 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
Trang 23 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
THUẬT TOÁN LÀ GÌ ?
23
Trang 24Nhắ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ā Khwārizmī (Arabic: ىسوم نب محمد يمزراوخلا ) was a Persian
al-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
Trang 25 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
Trang 26Cá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
Trang 27Nhập
dữ liệu Tính toán xử lý thông tin Xuất
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
Trang 28Ví 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
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
Trang 29Ví dụ về thuật toán
Thuật toán giải phương trình bậc hai ax 2 +bx+c=0 (a ≠0)
1 Yêu cầu cho biết giá trị của 3 hệ số a, b, c
3.3 Nếu = 0 thì
3.3.1 Phương trình có nghiệm kép x 0 3.3.2 Giá trị của nghiệm kép là x 0 = -b/2a 3.3.3 Kết thúc thuật toán
a
b x
2
2
2 1
29
Trang 30Ví 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
Trang 311 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
Trang 32Lạ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
Trang 33Ví 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ờ
Trang 34Ví 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)
Một ví dụ khác …
TÍNH XÁC ĐỊNH VÀ TÍNH ĐÚNG
34
Trang 36 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
Trang 3737
Trang 38So s|nh hai số
Trang 41}
Trang 42Tìm hiệu v{ thương số của hai số
Trang 44 Thực hiện theo trình tự
vấn đề trên giấy
Cài đặt chương trình trên máy
Trang 45Tìm số lớn nhất trong
3 số
Trang 4747
Tính N giai
thừa
Trang 48 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
Trang 491. 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