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#,
49 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1174 | Lượt tải: 1
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ì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
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:
- ltcb_baigiang01_0399.pdf