Lời nói đầu
Sau khi học xong môn Nhập
Môn Công Nghệ Thông Tin, bạn đã có cái nhìn tổng quan về thông tin, biểu diễn
và xử lý thông tin; đã có những kiến thức căn bản để có thể sử dụng máy tính,
Internet một cách an toàn, hiệu quả; đã có thể sử dụng các phần mềm, email
trong việc học, làm báo cáo và trình bày.
Môn học Nhập Môn Công Nghệ Thông Tin cũng đã giúp bạn có cái
nhìn tổng quan về một số chuyên ngành, nghề nghiệp và vị trí công việc liên
quan đến Công Nghệ Thông Tin. Bạn chưa nhất thiết phải chọn chuyên ngành cho
mình mà hãy tập trung học tốt các môn thuộc phần Kiến Thức Đại Cương và Kiến Thức
Cơ Sở Ngành. Lâu lâu ngó lại các chuyên ngành để chiêm nghiệm xem mình hợp với
chuyên ngành nào hơn, điểm mạnh của mình là gì, chuyên ngành nào đang cần nhiều
người làm, từ đó sẽ tự định hướng cho mình. Nếu lỡ chọn chưa đúng thì cứ chọn lại
không sao hết, học cái gì cũng có lợi.
Nhập Môn Lập Trình là môn học tiếp theo bạn cần học. Môn học
này giúp bạn có những khái niệm, kiến thức cơ bản liên quan đến lập trình như:
thuật toán, lưu đồ, mã giả, ngôn ngữ lập trình, chương trình, trình dịch; cung
cấp cho bạn các kĩ năng lập trình căn bản để giải quyết các bài toán đơn giản;
làm quen với các thuật ngữ tiếng Anh chuyên ngành.
Một điều quan trọng các bạn cần biết là nên tập trung học
các khái niệm quan trọng, các kiến thức nền tảng. Việc lấy ngôn ngữ lập trình nào
để minh họa không thực sự quan trọng. Vì trong thực tế có hàng vài chục ngôn ngữ
lập trình đang tồn tại, có cái mới sinh ra, có cái mất đi, nhưng nguyên lý
chung nhất trong lập trình thì rất ít thay đổi.
Mục tiêu môn học:
– Hiểu các khái niệm: thuật toán, lưu đồ, mã giả, ngôn ngữ lập
trình, chương trình, trình dịch
– Biết, hiểu và sử dụng được các kiểu dữ liệu, các cấu trúc
điều khiển trong một ngôn ngữ lập trình
– Biết, hiểu và sử dụng được kiểu lập trình cấu trúc; tạo
các hàm, thủ tục con để giải quyết các bài toán đơn giản
– Cài đặt được các chương trình bằng một ngôn ngữ lập trình
cụ thể
– Nắm được các thuật ngữ chuyên ngành bằng tiếng Anh
Bạn nào còn yếu tiếng Anh thì theo dõi các bài giảng của các
thầy, và đọc các tài liệu tiếng Việt. Bạn nào khá tiếng Anh hoặc có quyết tâm
cao thì nên đọc, hiểu và làm theo cuốn sách tiếng Anh, đây là mục tiêu cao nhất
của môn học.
Trong tài liệu này sẽ cố gắng ghi càng nhiều càng tốt các
thuật ngữ tiếng Anh đi kèm, nhằm giúp các bạn có vốn từ vựng ban đầu, trước khi
có thể đọc được các tài liệu bằng tiếng Anh. Bạn nào cẩn thận nên ghi lại các
thuật ngữ tiếng Anh cùng với nghĩa của nó ra một tập tin Excel để tra lại khi cần.
Chúc các bạn kiên trì.
1.Tổng quan về lập trình cho
máy tính
1.1
Chương trình
Chương trình (program) là một dãy các chỉ thị (instruction)
hay các lệnh (statement), gọi chung là các lệnh, dùng để điều khiển máy tính thực
hiện một công việc cụ thể.
Ví dụ, chương trình trong Bảng 1
sẽ xuất câu “Chao bac Teo” ra màn hình máy tính:
Người tạo ra (hay viết ra) các chương trình được gọi là lập
trình viên (programmer, coder).
Một chương trình có thể tồn tại ở nhiều dạng, như chương
trình mã máy, chương trình hợp ngữ, hoặc chương trình ngôn ngữ cấp cao (hay bậc
cao). Tương ứng, cũng có nhiều cách để tạo ra một chương trình máy tính, ví dụ
tạo ra bằng mã máy, tạo ra bằng hợp ngữ và tạo ra bằng ngôn ngữ cấp cao. Phần
tiếp theo sẽ tìm hiểu lần lượt về ba cách tạo ra một chương trình máy tính.
1.2 Mã máy
Mã máy (machine code) là các lệnh tồn tại ở dạng các bit 0,
1; CPU có thể hiểu và thực thi trực tiếp các lệnh này. Mỗi lệnh thực hiện một
tác vụ cụ thể như nạp (load), nhảy (jump) tới một vùng nhớ, các thao tác số học
trên một đơn vị dữ liệu.
Chương trình mã máy (machine code program) là chương trình tồn
tại ở dạng mã máy hay ở dạng ngôn ngữ máy (machine language).
Chương trình mã máy có tính phụ thuộc vào phần cứng, nghĩa
là mỗi họ máy tính sẽ có tập lệnh riêng. Như vậy, một chương trình mã máy của họ
máy tính này sẽ không thực thi được trên họ máy tính khác.
Con người rất khó để đọc và hiểu được chương trình mã máy,
do vậy, con người ít khi tạo ra hoặc làm việc trực tiếp với các chương trình dạng
mã máy. Thường thì CPU sẽ đọc, hiểu và thực thi các lệnh trong chương trình mã
máy.
Chương trình mã máy được lưu trên đĩa dưới dạng các tập tin
thực thi (executable program file), ví dụ các tập tin có phần mở rộng
(extension) là EXE hoặc DLL.
Ví dụ một phần chương trình mã máy (Hình 1.1):
Quá trình máy tính thực thi một chương trình mã máy (xem Hình 1.2):
– Bước 1: người dùng, hệ điều hành hoặc một chương trình khác
sẽ kích hoạt để thực thi một chương trình mã máy. Ví dụ, người dùng nhấp đúp chuột
vào biểu tượng của chương trình trên màn hình Desktop;
– Bước 2: hệ điều hành sẽ tìm và nạp các lệnh của chương
trình đang được lưu trên đĩa vào bộ nhớ chính (RAM);
– Bước 3: bộ đếm chương trình của CPU (program counter) sẽ
trỏ tới lệnh đầu tiên của chương trình, cũng được gọi là đầu vào của chương
trình (program entry point). CPU sẽ thực thi từng lệnh của chương trình cho tới
khi gặp lệnh kết thúc.
Chương trình mã máy khi nằm trên đĩa cứng hoặc RAM sẽ là các
bit 0, 1 liên tiếp nhau. Tuy nhiên, chúng được chia thành các lệnh riêng biệt với
kích thước cụ thể, ví dụ mỗi lệnh sẽ là 16 bit, 32 bit, hoặc 64 bit tùy theo họ
máy.
Mỗi lệnh riêng biệt lại được chia theo một cấu trúc cụ thể,
gồm nhiều trường, mỗi trường có số bit và chức năng riêng. Ví dụ, một lệnh theo
kiến trúc MIPS32 sẽ có chiều dài 32 bit, gồm các trường (Hình 1.3):
Do tính phức tạp, khó hiểu của chương trình mã máy, cộng với
tính phụ thuộc phần cứng, nên mọi người hầu như không xây dựng các ứng dụng trực
tiếp bằng mã máy mà sẽ dùng một ngôn ngữ lập trình khác, sau đó dịch thành
chương trình mã máy.
Phần tiếp theo sẽ tìm hiểu một kiểu ngôn ngữ lập trình khác,
để xây dựng chương trình cho máy tính, đó là hợp ngữ.
1.3 Hợp ngữ
Hợp ngữ (assembly language) là ngôn ngữ lập trình cấp thấp (hay
bậc thấp) (low-level programming language). Nó đơn giản hơn chương trình mã máy
nhờ vào việc dùng các từ viết tắt thay cho mã lệnh, mỗi từ viết tắt tương đương
với một mã lệnh, ví dụ mã lệnh 100000 trong chương trình mã máy sẽ được thay bằng
từ ADD (nghĩa là cộng) trong hợp ngữ. Địa chỉ vùng nhớ trong chương trình mã
máy được thay bằng tên mô tả trong hợp ngữ.
CPU của máy tính không thể thực thi trực tiếp được mã hợp ngữ,
do vậy lập trình viên cần phải dịch (assembling) chương trình viết bằng hợp ngữ
sang chương trình mã máy. Chương trình dịch này được gọi là trình hợp dịch (nghĩa là chương trình dịch
hợp ngữ) (assembler).
Cũng như chương trình mã máy, chương trình hợp dịch cũng có
tính phụ thuộc vào họ máy tính cụ thể, mỗi họ máy tính có trình hợp dịch riêng.
Mỗi lệnh trong chương trình hợp ngữ sẽ được dịch thành một lệnh
tương ứng trong chương trình mã máy. Ví dụ:
Mã hợp ngữ |
add $s0, $s1, $s2 |
Mã máy |
0000001000110010100000000100000 |
Quá trình dịch và thực thi một chương trình hợp ngữ được minh họa trong Hình 1.4:
Hợp ngữ được sử dụng nhiều trong các lĩnh vực hẹp, cần lập
trình giao tiếp trực tiếp với phần cứng, yêu cầu tốc độ xử lý cao, ví dụ như
các trình điều khiển thiết bị, hệ thống nhúng cấp thấp và các ứng dụng thời
gian thực.
Hai điều nên để ý khi lập trình bằng hợp ngữ là tính phụ thuộc
vào phần cứng và rất khó để tạo ra các chương trình lớn, phức tạp, có tính
tương thích cao.
Để tạo ra các chương trình ứng dụng có tính tương thích tốt;
tiết kiệm thời gian và công sức cho lập trình viên thì nên lựa chọn các ngôn ngữ lập trình cấp
cao.
1.4 Ngôn ngữ lập trình cấp cao
Ngôn ngữ lập trình cấp cao (high-level programming language)
thường được gọi ngắn gọn là ngôn ngữ lập trình, là một ngôn ngữ hình thức, gồm
tập hợp các lệnh, cú pháp và ngữ nghĩa được sử dụng để điều khiển máy tính, thực
hiện một công việc cụ thể.
Chương trình viết bằng các ngôn ngữ lập trình cấp cao có
tính tương thích tốt, có thể chạy trên nhiều họ máy.
Có nhiều ngôn ngữ lập trình cấp cao khác nhau, tùy theo ứng
dụng bạn muốn xây dựng là gì, để lựa chọn ngôn ngữ cho phù hợp. Ví dụ, sẽ có
các ngôn ngữ chuyên để tạo ra các ứng dụng desktop, ứng dụng web, ứng dụng di động,
ứng dụng nhúng. Cũng có những ngôn ngữ đa năng, có thể dùng để tạo ra nhiều loại
ứng dụng khác nhau.
Một số ngôn ngữ lập trình phổ biến: C, C++, Java, C#, PHP,
Python, JavaScript, Ruby, Go.
– Để viết ra hệ điều hành, hệ quản trị cơ sở dữ liệu, các
chương trình hệ thống có thể sử dụng ngôn ngữ C, C++
– Để làm web có thể sử dụng ngôn ngữ C#, PHP, Java,
JavaScript, Ruby, Python
– Để phát triển các ứng dụng quản lý cho các hệ thống lớn có
thể sử dụng ngôn ngữ C++, C#, Java
Vì CPU của máy tính không thể trực tiếp thực thi được các lệnh
của ngôn ngữ lập trình cấp cao, nên lập trình viên phải sử dụng một chương
trình khác để dịch từ ngôn ngữ cấp cao sang dạng mã máy. Phần tiếp theo sẽ tìm
hiểu về loại chương trình này.
-----//1
[Video]
--------
Cập nhật: 4/7/2022
Bài tiếp theo: Nhập môn lập trình (2) - Chương trình dịch