NHẬP MÔN VỀ MÁY TÍNH VÀ LẬP TRÌNH
Trang 21 Phần cứng và phần mềm
a Máy tính
b Phần cứng
c Phần mềm
Trang 3a Máy tính
Máy tính, cũng gọi là máy vi tính hay điện toán, là
những thiết bị hay hệ thống dùng để tính toán hay kiểm
soát các hoạt động mà có thể biểu diễn dưới dạng số hay quy luật lôgic
Khoa học nghiên cứu về lý thuyết, thiết kế và ứng dụng của máy tính được gọi là khoa học máy tính, hay khoa học điện toán
Từ "máy tính" (computers), đầu tiên, được dùng cho
những người tính toán số học, có hoặc không có sự trợ
giúp của máy móc, nhưng hiện nay nó có nghĩa là máy
móc hoàn toàn Đầu tiên máy tính chỉ giải các bài toán số học, nhưng các máy tính hiện đại làm được nhiều hơn thế
Trang 4a Máy tính (tt)
Các nguyên lý cơ bản
Máy tính có thể làm việc thông qua sự chuyển động
của các bộ phận cơ khí, electron, photon, hạt lượng tử
hay các hiện tượng vật lý khác đã biết Mặc dù máy
tính được xây dựng từ nhiều công nghệ khác nhau
song gần như tất cả các máy tính hiện nay là máy tính điện tử
Trong phần lớn các máy tính ngày nay, trước hết, mọi vấn đề sẽ được chuyển thành các yếu tố toán học
bằng cách diễn tả mọi thông tin liên quan thành các số theo hệ nhị phân Sau đó, mọi tính toán trên các
thông tin này được tính toán bằng đại số Bool
(Boolean algebra)
Trang 6a Máy tính (tt)
Khả năng lập trình
Khả năng lập trình của máy tính (programmability),
nghĩa là cung cấp cho nó một tập hợp các chỉ thị để thực
hiện mà không có sự điều khiển vật lý đối với nó, là một đặc trưng thiết kế nền tảng của phần lớn các máy tính
Đặc trưng này là một sự mở rộng đáng kể khi các máy tính đã được phát triển đến mức nó có thể kiểm soát động luồng thực hiện của chương trình Điều này cho phép máy tính kiểm soát được thứ tự trong sự thực thi các chỉ lệnh
trong chương trình dựa trên các dữ liệu đã được tính ra
Trang 7b Phần cứng:
Còn gọi là cương liệu (Anh ngữ: hardware ), là các cơ phận (vật lý) cụ thể của máy tính hay hệ thống máy tính như là màn hình, chuột, bàn
phím, máy in, máy quét, vỏ máy tính, đơn vị vi
xử lý CPU, bo mạch chủ, các loại dây nối, loa, ổ mềm, ổ cứng, ổ CDROM,
Trang 9b Phần cứng (tt):
Dựa trên chức năng và cách thức hoạt động
người ta còn phân biệt phần cứng ra thành:
Nhập hay đầu vào ( Input ): Các bộ phận thu nhập dữ liệu hay mệnh lệnh như là bàn phím,
Trang 10b Phần cứng (tt):
Ngoài các bộ phận nêu trên liên quan tới phần cứng của máy tính còn có các khái niệm quan trọng sau đây:
Bus: chuyển dữ liệu giữa các thiết bị phần cứng
BIOS: còn gọi là hệ thống xuất nhập cơ bản nhằm khởi động, kiểm tra, và cài đặt các mệnh lệnh cơ bản cho phần cứng và giao quyền điều khiển cho hệ điều hành
CPU: bộ phân vi xử lý điều khiển toàn bộ máy tính
Kho lưu trữ dữ liệu: lưu giữ, cung cấp, thu nhận dữ liệu
Trang 11b Phần cứng (tt):
Các loại chíp hỗ trợ: nằm bên trong bo mạch chủ hay
nằm trong các thiết bị ngoại vi của máy tính các con chip quan trọng sẽ giữ vai trò điều khiển thiết bị và liên lạc với
hệ điều hành qua bộ điều vận hay qua phần sụn
Bộ nhớ: là thiết bị bên trong bo mạch chủ giữ nhiệm vụ trung gian cung cấp các mệnh lệnh cho CPU và các dữ
liệu từ các bộ phận như là BIOS, phần mềm, kho lưu trữ, chuột đồng thời tải về cho các bộ phận vừa kể kết quả
các tính toán, các phép toán hay các dữ liệu đã/đang
được xử lý
các cổng vào/ra
Trang 12c Phần mềm:
Tiếng Việt còn được gọi là nhu liệu (tiếng Anh:
software ) là một tập hợp những câu lệnh được
viết bằng một hoặc nhiều ngôn ngữ lập trình
theo một trật tự xác định nhằm tự động thực
hiện một số chức năng hoặc giải quyết một bài toán nào đó.
Trang 13Sản phẩm phần mềm được phân loại như sau:
Theo phương thức hoạt động
Phần mềm hệ thống dùng để vận hành máy tính và các phần cứng máy tính (Windows XP, Linux, Unix, các thư
viện động-DLL của hệ điều hành, các trình điều khiển
(driver), phần sụn(firmware) và BIOS Đây là các loại
phần mềm mà hệ điều hành liên lạc với chúng để điều
khiển và quản lý các thiết bị phần cứng
Trang 14Sản phẩm phần mềm được phân loại như sau:
biên dịch và trình thông dịch: các loại chương
trình này sẽ đọc các câu lệnh từ các mã nguồn được viết bởi các lập trình viên bằng một ngôn
Trang 15Sản phẩm phần mềm được phân loại như sau:
Theo khả năng ứng dụng
Những phần mềm không phụ thuộc, nó có thể được bán cho bất kỳ khách hàng nào trên thị trường tự do Ví dụ: phần mềm về cơ sở dữ liệu như Oracle, đồ họa như
Photoshop, Corel Draw, soạn thảo và xử lý văn bản, bảng tính Ưu điểm: Thông thường đây là những phần mềm
có khả năng ứng dụng rộng rãi cho nhiều nhóm người sử dụng Khuyết điểm: Thiếu tính uyển chuyển, tùy biến
Những phần mềm được viết theo đơn đặt hàng hay hợp đồng của một khách hàng cụ thể nào đó (một công ty,
bệnh viện, trường học ) Ví dụ: phần mềm điều khiển,
phần mềm hỗ trợ bán hàng
Trang 16Tóm tắt quá trình tạo nên một phần mềm
Về mặt thiết kế:
Tùy theo mức độ phức tạp của phần mềm làm ra, người thiết kế phần mềm sẽ ít nhiều dùng đến các phương tiện để tạo ra mẫu thiết kế theo ý muốn (chẳng hạn như là các sơ
đồ khối, các lưu đồ, các thuật toán và các mã giả), sau đó mẫu này được mã hoá bằng các ngôn ngữ lập trình và đưọc các trình dịch chuyển thành các khối lệnh (module) hay/và các tệp khả thi Tập hợp các tệp khả thi và các khối lệnh đó làm thành một phần mềm
Một phần mềm thông thường sẽ tương thích với một
hay vài hệ điều hành, tùy theo cách thiết kế, cách viết mã
nguồn và ngôn ngữ lập trình được dùng
Trang 17Tóm tắt quá trình tạo nên một phần mềm
Sản xuất và phát triển phần mềm
Việc phát triển và đưa ra thị trường của một
phần mềm là đối tượng nghiên cứu của bộ môn kỹ
mềm ( software engineering )
Bộ môn này nghiên cứu các phương pháp tổ
chức, cách thức sử dụng nguồn tài nguyên, vòng quy trình sản xuất, cùng với các mối liên hệ với thị trường, cũng như liên hệ giữa các yếu tố này với
nhau
Trang 182 Các ngôn ngữ lập trình
a Ngôn ngữ lập trình
b Phân nhóm
c Học ngôn ngữ lập trình
Trang 19a Ngôn ngữ lập trình:
Phương tiện để viết chương trình cho máy tính
Hàng trăm ngôn ngữ lập trình khác nhau
Những quy định về cú pháp ( syntax ) & ngữ
nghĩa ( semantic )
Máy tính có thể hiểu được
Trang 20b Phân nhóm
Ngôn ngữ máy - Machine languages
Ngôn ngữ duy nhất của máy tính - CPU
Hợp ngữ - Assembly languages
Ngôn ngữ cấp cao - High-level languages
Trang 21Ngôn ngữ máy - Machine languages
Ngôn ngữ duy nhất được máy tính (CPU) hiểu trực tiếp
Được xác định bởi tập lệnh của CPU
Phụ thuộc vào máy tính cụ thể
Dạng nhị phân {0,1}*
Rất khó đọc hiểu
Khó có khả năng viết chương trình trực tiếp
Khó nhớ hàng chục ngàn lệnh dạng {0,1}*
Rất khó xác định & sửa lỗi
Không được sử dụng trong thực tế để viết chương trình
Nền tảng xây dựng hợp ngữ
Trang 22Hợp ngữ - Assembly languages
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
Trang 23Ngôn ngữ cấp cao - High-level languages
Một câu lệnh diễn tả nhiều động thái
Có cấu trúc ngày càng 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
Source code & Executed code
Được phân làm nhiều lớp
Lập trình goto
Lập trình cấu trúc – Structured
Lập trình hướng đối tượng – Object Oriented
Các dạng khác
Trang 24 Học ngôn ngữ lập trình ≠ Học ngôn ngữ tự nhiên
Quy tắc ngữ pháp đơn giản
Từ vựng ít, tự quy định
Cấu trúc câu đơn giản
Hạn chế và khó khăn của sử dụng ngôn ngữ lập trình
Trang 27Lập trình cấu trúc (tt)
Hạn chế của lập trình cấu trúc:
Khi chương trình lớn hơn, ta khó quản lý
Dữ liệu đóng vai trò quan trọng
Khi thêm 1 dữ liệu kiểu mới, ta phải thay đổi tất cả các công việc và các hàm liên quan đến dữ liệu đó
Không thể phân chia các phần trong chương trình sao cho không xem xét được từ những phần khác
Trọng tâm của lập trình truyền thống: dựa trên các chi tiết của việc thực hiện
Lối suy nghĩ của con người: các thực thể hay đối
tượng, các thuộc tính và hoạt động của chúng
Trang 28Lập trình hướng đối tượng
Phân chia vấn đề thành những bộ phận cấu
Trang 29Lập trình hướng đối tượng (tt)
Trang 30Lập trình hướng đối tượng (tt)
Object oriented programming (OOP)
Mô hình các đối tượng thế giới thực
Các thuộc tính (trạng thái) của các đối tượng
Kích thước, hình dạng, màu sắc, khối lượng, v v
Các hoạt động (hành vi)
Quả banh lăn, nảy, phình lên và xẹp xuống
Đối tượng
Dữ liệu và hàm được đóng gói
Dữ liệu được che giấu
• Thông tin với nhau thông qua các giao diện được định rõ
Trang 314 Giải thuật
4.1 Khái niệm về thuật toán
4.2 Tính chất của thuật toán
4.3 Khái niệm thuật giải
4.4 Biểu diễn thuật toán
Trang 324.1 Khái niệm về thuật toán
Thuật toán là một tập các hướng dẫn nhằm thực hiện
một công việc nào đó 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
Thuật toán có vai trò quan trọng trong khoa học máy tính vì: Máy tính chỉ giải quyết được vấn đề khi đã có hướng dẫn 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 kết quả như mong muốn
Trang 33Vậy thuật toán là:
Thuật toán, còn gọi là giải thuật, là một tập
hợp hữu hạn của các chỉ thị hay phương cách
được định nghĩa rõ ràng cho việc hoàn tất một
số sự việc từ một trạng thái ban đầu cho trước; khi các chỉ thị này được áp dụng triệt để thì sẽ
dẫn đến kết quả sau cùng như đã dự đoán.
Nói cách khác, thuật toán là một bộ các qui tắc
hay qui trình cụ thể nhằm giải quyết một vấn đề trong một số bước hữu hạn, hoặc nhằm cung
cấp một kết quả từ một tập hợp của các dữ kiện đưa vào.
Trang 34Ví dụ:
Thuật toán để giải phương trình bậc nhất
P(x): a x + b = c , ( a , b , c là các số thực), trong tập hợp các số thực có thể là một bộ các bước sau
Trang 35Bài tập:
Anh (Chị) xây dựng thuật toán cho các bài toán sau:
Thuật toán tìm số nhỏ nhất trong 2 số
Thuật toán tìm số lớn nhất trong 3 số
Tìm số X trong dãy gồm N số
Trang 364.2 Tính chất của thuật toán
Tính chính xác: để đảm bảo kết quả tính toán hay các thao tác mà máy tính thực hiện được là chính xác
Tính rõ ràng: Thuật toán phải được thể hiện bằng các câu lệnh minh bạch; các câu lệnh được sắp xếp theo thứ
tự nhất định
Tính khách quan: Một thuật toán dù được viết bởi
nhiều người trên nhiều máy tính vẫn phải cho kết quả
như nhau
Tính phổ dụng (hàng loạt): Thuật toán không chỉ áp dụng cho một bài toán nhất định mà có thể áp dụng cho một lớp các bài toán có đầu vào tương tự nhau
Tính kết thúc: Thuật toán phải kết thúc sau một số hữu hạn các bước tính toán
Trang 374.2 Tính chất của thuật tốn (tt)
Tính khả thi: Thuật toán phải bao gồm những phép toán mà máy tính có thể hiểu được, đồng thời thuật
toán phải đảm bảo việc giải quyết được bài toán
Tính đầy đủ - vét cạn: Thuật toán ph i vét được hết ảcác tình huống, các kh n ng có thể x y ra, không bỏ ả ă ẩsót bất k một trường hợp nào trong miền áp dụng.ỳ
Tính đúng đắn: Thuật toán phải cho kết quả đúng của bài toán Nghĩa là phải được chứng minh về mặt toán học
Trang 38Độ phức tạp thuật toán
Thời gian mà máy tính khi thực hiện một thuật
toán không chỉ phụ thuộc vào bản thân thuật toán đó,
ngoài ra còn tùy thuộc từng máy tính Để đánh giá hiệu quả của một thuật toán, có thể xét số các phép tính phải thực hiện khi thực hiện thuật toán này Thông thường số các phép tính được thực hiện phụ thuộc vào cỡ của bài
toán, tức là độ lớn của đầu vào Vì thế độ phức tạp
thuật toán là một hàm phụ thuộc đầu vào Tuy nhiên
trong những ứng dụng thực tiễn, chúng ta không cần biết chính xác hàm này mà chỉ cần biết một ước lượng đủ tốt của chúng
Để ước lượng độ phức tạp của một thuật toán ta thường dùng khái niệm bậc O-lớn và bậc Θ (bậc Theta)
Trang 394.3 Khái niệm thuật giải
Trong quá trình nghiên cứu giải quyết bài toán, người
ta dưa ra nhận xét sau:
Có nhiều bài toán cho đến nay vẫn chưa tìm được một
cách giải theo kiểu thuật toán và vẫn không biết có tồn tại thuật toán hay không
Có nhiều bài toán đã có thuật toán nhưng không chấp
nhận được vì thời gian giải quá lớn hoặc các điều kiện cho thuật toán khó đáp ứng
Có những bài toán được giải theo những cách vi phạm
thuật toán những vẫn chấp nhận được
Vậy cần có những đổi mới cho khái niệm thuật toán Người
ta đã mở rộng 2 tiêu chuẩn: Tính chính xác và rõ ràng
Trang 401.4.3 Khái niệm thuật giải (tt)
Tính xác định: Các giải thuật đệ quy và ngẫu
nhiên.
Tính đúng đắn: Chấp nhận cách giải gần tối ưu.
® Các cách giải chấp nhận được nhưng
không hoàn toàn đáp ứng đầy đủ các tiêu
chuẩn của thuật toán thường được gọi là
giải thuật.
Trang 411.4.4 Biểu diễn thuật toán
1.4.4.1 Cấu trúc cơ bản của thuật toán
1.4.4.2 Các phương pháp biểu diễn thuật toán
Trang 424.4.1 Cấu trúc cơ bản của thuật toán
Cấu trúc tuần tự
Cấu trúc rẽ nhánh
Cấu trúc vòng lặp
Trang 44Cấu trúc rẽ nhánh
Điều kiện
Thoả mãn
Không thoả mãn Cơng
việc 2
Kiểm tra điều kiện, nếu thỏa mãn thì thực
hiện cơng việc 1 (lệnh 1), điều kiện khơng
thỏa mãn thì thực hiện cơng việc 2 (lệnh 2)
Trang 45Cấu trúc rẽ nhánh
Lần lượt kiểm tra điều kiện, nếu thỏa mãn thì
thực hiện công việc
Điều kiện 1 Điều kiện 2 Điều kiện n
Việc 1 Việc 2 Việc n
Trang 46Cấu trúc vòng lặp
Dạng 1: Kiểm tra điều kiện nếu thỏa thì thực
hiện lệnh, kiểm tra điều kiện …
Coâng vieäc
Kiểm tra
Trang 47Cấu trúc vòng lặp
Dạng 2: Thực hiện lệnh, kiểm tra điều kiện, nếu thỏa thì thực hiện lệnh ….
Coâng vieäc
Trang 484.4.2 Các phương pháp biểu diễn thuật toán
Ngôn ngữ tự nhiên
Mã giả
Lưu đồ - sơ đồ khối
Trang 49Ngôn ngữ tự nhiên
Sử dụng ngôn ngữ thường ngày (mẹ đẻ)
Nhược điểm: Dài dòng, không thể hiện rõ cấu
trúc thuật toán, khó hiểu
Ưu điểm: Dễ trình bày vấn đề
Trang 51Lưu đồ - sơ đồ khối
Sử dụng sơ đồ khối biểu diễn tác thao tác:
Lựa chọn theo điều kiện
Xử lý
Điểm đầu, cuối
Điểm nối
Điều kiện Nội dung xử lý
Bắt đầu Kết thúc 1
Trang 535 Ôn Tập
Thuật toán là gì?
Các tính chất của thuật toán?
Các phương pháp biểu diễn thuật toán?