Professional Documents
Culture Documents
Chuong1 CacThanhPhanCoBanCuaChuongTrinh PDF
Chuong1 CacThanhPhanCoBanCuaChuongTrinh PDF
@ kqha2006 @
2
Khoa
Chương 1. CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C
CÁC THÀNH PHẦN CƠ BẢN
Nhu cầu viết lại hệ điều hành UNIX cho các hệ máy tính
CỦA NGÔN NGỮ C
Dùng Assembly:
1.1. Giới thiệu ngôn ngữ lập trình C
1.2. Tập ký tự, từ khóa, tên gọi
1.3. Câu lệnh, khối lệnh, lời giải thích
1.4. Chỉ thị tiền biên dịch
1.5. Cấu trúc của một chương trình C
1.6. Một vài chương trình C đơn giản
1.7. Vận hành chương trình trên máy
@ kqha2006 @ @ kqha2006 @
3 4
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C
Nhu cầu viết lại hệ điều hành UNIX cho các hệ máy tính C ra đời tại Bell Lab thuộc tập đoàn AT&T
Dùng Assembly: Phát triển năm 1970, hoàn thành năm 1972
Khó chuyển đổi chương trình giữa các hệ máy tính khác
nhau
1
8/19/2021
@ kqha2006 @ @ kqha2006 @
5 6
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C
C ra đời tại Bell Lab thuộc tập đoàn AT&T Đặc điểm:
Phát triển năm 1970, hoàn thành năm 1972 Ngôn ngữ lập trình hệ thống
Chương trình được chia nhỏ thành chương trình con: Tính khả chuyển, linh hoạt cao
Thủ tục (Procedure) Có thế mạnh trong xử lý dữ liệu số, văn bản, cơ sở dữ liệu
Hàm (Function) Phạm vi sử dụng
Các chương trình con: Viết các chương trình hệ thống
Độc lập với nhau và có dữ liệu riêng Các trình điều khiển thiết bị (device driver)
Trao đổi qua: tham số và biến toàn cục Xử lý ảnh
@ kqha2006 @ @ kqha2006 @
7 8
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C
Hệ thống nhúng
2
8/19/2021
@ kqha2006 @ @ kqha2006 @
9 10
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C
Mỗi công việc cần giải quyết bằng máy tính được cấu thành
từ nhiều công việc nhỏ hơn, mỗi công việc nhỏ hơn lại được
cấu thành từ nhiều công việc nhỏ hơn nữa...
Nội dung: xác định xem công việc cần giải quyết được cấu
thành từ những công việc nhỏ nào, mỗi công việc nhỏ được
cấu thành từ các công việc nhỏ hơn nào, cứ như vậy cho đến
khi những công việc xác định được là những công việc thật
đơn giản, có thể thực hiện dễ dàng
@ kqha2006 @ @ kqha2006 @
11 12
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C CÔNG NGHỆ
THÔNG TIN
1.1. Giới thiệu ngôn ngữ lập trình C
chia thành nhiều công Công việc cần Các trình biên dịch phổ biến:
việc nhỏ hơn, đơn giản để giải quyết (A)
giải quyết hơn.
Turbo C++, Borland C++
Công việc Công việc Công việc
A1 A2
..
An Dev-C++, Code Blocks
.
Visual C++ trong bộ Visual Studio
Công việc Công việc Công việc Công việc Công việc Công việc
A11 A12 A1n An1 An2 Ann Ngoài ra, tùy thuộc lập trình cho thiết bị nào thì sẽ có trình
biên dịch tương ứng
Các công việc đủ nhỏ để
được miêu tả bằng 1
lệnh hay 1 lời gọi .. .. .. .. VD: Lập trình cho VĐK AVR thì dùng CodevisionAVR
hàm/thủ tục đã có. . . . .
Lập trình cho VĐK PIC thì dùng MPLAB
3
8/19/2021
@ kqha2006 @ @ kqha2006 @
13 14
Khoa 1.2. Tập ký tự, từ khóa, tên gọi Khoa
CÔNG NGHỆ CÔNG NGHỆ 1.2.1. Tập ký tự
THÔNG TIN 1.2.1. Tập ký tự THÔNG TIN
Chương trình: Tập các câu lệnh nhằm giải quyết nhiệm vụ 26 chữ cái hoa: A B C ... X Y Z
đặt ra 26 chữ cái thường: a b c … x y z.
• Câu lệnh: là các từ (từ vựng) liên kết với nhau theo cú pháp 10 chữ số: 0 1 2 3 4 5 6 7 8 9.
của ngôn ngữ lập trình Các kí hiệu toán học: + - * / = < >
– Ví dụ: while (i < N ) Các dấu ngăn cách: . ; , : space tab
• Các từ: Tổ hợp các ký tự theo nguyên tắc xây dựng từ vựng Các dấu ngoặc: ( ) [ ] { }
– Ví dụ: TenFile, BaiTap2… Các kí hiệu đặc biệt: _ ? $ & # ^ \ ! ‘ “
@ kqha2006 @ @ kqha2006 @
15 16
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.2.2. Từ khóa CÔNG NGHỆ
THÔNG TIN
1.2.2. Từ khóa
Được định nghĩa sẵn trong mỗi ngôn ngữ lập trình Các từ khóa trong C:
4
8/19/2021
@ kqha2006 @ @ kqha2006 @
17 18
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.2.3. Tên gọi CÔNG NGHỆ
THÔNG TIN
1.2.3. Tên gọi
Định danh (Tên) là một dãy các kí tự dùng để gọi tên các Quy tắc đặt tên trong C:
đối tượng trong chương trình. Định danh được bắt đầu bởi chữ cái hoặc dấu gạch dưới
Biến Các kí tự tiếp theo chỉ có thể là: chữ cái, chữ số hoặc dấu
Hằng số gạch dưới “_”
Hàm Tối đa 32 ký tự
Kiểu dữ liệu Định danh do người lập trình đặt không được trùng với các
từ khóa của C.
@ kqha2006 @ @ kqha2006 @
19 20
Khoa Khoa 1.3. Câu lệnh, khối lệnh, lời giải thích
CÔNG NGHỆ
1.2.3. Tên gọi CÔNG NGHỆ
THÔNG TIN THÔNG TIN 1.3.1. Câu lệnh
Ví dụ Câu lệnh diễn tả một hoặc một nhóm các thao tác trong
Định danh hợp lệ: giải thuật.
i, x, y, a, b, _function, _MY_CONSTANT, PI, gia_tri_1
Chương trình được tạo thành từ dãy các câu lệnh.
Định danh không hợp lệ:
1_a, 3d, 55x (bắt đầu bằng chữ số) Các câu lệnh trong C, được kết thúc bởi dấu chấm phẩy ;
so luong, sin() (có kí tự không hợp lệ, dấu cách, dấu
Ví dụ:
ngoặc..)
int, char (trùng với từ khóa của C) X = 7;
Y = 8;
Z = X + Y;
5
8/19/2021
@ kqha2006 @ @ kqha2006 @
21 22
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.3.1. Câu lệnh CÔNG NGHỆ
THÔNG TIN
1.3.1. Câu lệnh
Trên một dòng có thể viết nhiều câu lệnh Có thể viết 1 câu lệnh trên nhiều dòng nếu tại vị trí ngắt có
X = 7; Y = 8; cho phép các khoảng trắng
Z = X + Y;
Đúng theo ngôn ngữ lập trình nhưng khó khăn trong việc Ví dụ:
if
quan sát ( x>y)
printf(“x > y”);
Quy ước: mỗi dòng chỉ viết 1 câu lệnh
X = 7;
Y = 8; Thường sử dụng khi câu lệnh bao gồm nhiều phép toán và
Z = X + Y;
trình bày trên 1 dòng thì bị tràn màn hình.
@ kqha2006 @ @ kqha2006 @
23 24
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.3.2. Khối lệnh (Block) CÔNG NGHỆ
THÔNG TIN
1.3.3. Lời giải thích
Các câu lệnh được đặt trong một cặp {} Lời mô tả, giải thích vắn tắt cho một câu lệnh, một đoạn
Dùng để nhóm các lệnh lại và coi như đó là một lệnh, đặt chương trình hoặc cả chương trình
tại những vị trí chỉ cho phép xuất hiện một câu lệnh – Giúp việc đọc hiểu chương trình dễ dàng hơn
Ví dụ: – Chú thích không phải là câu lệnh không ảnh hưởng
if ( x > y)
{ tới chương trình
z = x – y;
printf(“z = %d”, z); Khi gặp chú thích, trình biên dịch sẽ bỏ qua.
}
6
8/19/2021
@ kqha2006 @ @ kqha2006 @
25 26
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.3.3. Lời giải thích CÔNG NGHỆ
THÔNG TIN
1.4. Chỉ thị tiền biên dịch
Cách viết chú thích Chỉ thị tiền xử lý là những chỉ thị cung cấp cho trình biên
– Chú thích một dòng: đặt sau // dịch để xử lý những thông tin trước khi bắt đầu quá trình
Ví dụ: Tất cả các chỉ thị tiền xử lý đều bắt đầu với với #
@ kqha2006 @ @ kqha2006 @
27 28
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.4. Chỉ thị tiền biên dịch CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C
Chỉ thị biên dịch có điều kiện (#if, #else, #elseif, #endif,
...).
7
8/19/2021
@ kqha2006 @ @ kqha2006 @
29 30
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C
1. Khai báo các tệp tiêu đề 1. Khai báo các tệp tiêu đề
Liệt kê danh sách thư viện sẽ được sử dụng trong chương Cú pháp khai báo
trình 1. #include <ThuVien.h>
– Các hàm của C đều thuộc một thư viện nào đó • Thư viện phải nằm trong thư mục chứa các header file trong
– Không khai báo thư viện, trình biên dịch không thư mục cài đặt chương trình
hiểu được hàm (có thể báo lỗi) • Ví dụ: #include <stdio.h>
2. #include “ThuVien.h”
• Tìm kiếm thư viện tại thư mục hiện tại lưu project
@ kqha2006 @ @ kqha2006 @
31 32
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C
2. Khai báo các đối tượng toàn cục 2. Khai báo các đối tượng toàn cục
Các đối tượng toàn cục có phạm vi sử dụng trong toàn bộ Định nghĩa kiểu dữ liệu
chương trình Cú pháp: typedef <ĐịnhNghĩaKiểu> <Tên kiểu>;
– Các kiểu dữ liệu mới Ví dụ: typedef unsigned char BYTE;
– Các hằng, biến typedef struct {float re, im;} complex;
– Các nguyên mẫu hàm Khai báo hằng
Tuân theo nguyên tắc khai báo đối tượng #define Max 50
8
8/19/2021
@ kqha2006 @ @ kqha2006 @
33 34
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C
2. Khai báo các đối tượng toàn cục 2. Khai báo các đối tượng toàn cục
int N; Khai báo thông tin về các hàm của người dùng sẽ được sử
– Tên hàm
@ kqha2006 @ @ kqha2006 @
35 36
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C
2. Khai báo các đối tượng toàn cục 3. Định nghĩa hàm main()
Ví dụ: Là hàm đặc biệt trong C, đánh dấu điểm bắt đầu của mọi
int getMax(int Arr []); Khi thực hiện một chương trình C, hệ thống sẽ gọi tới hàm
void swap(int * a, int * b); main đầu tiên, sau đó sẽ thực hiện lần lượt các câu lệnh
(bao gồm cả lời gọi tới các hàm khác) nằm trong hàm
void swap(int *, int *);
main()
9
8/19/2021
@ kqha2006 @ @ kqha2006 @
37 38
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C
3. Định nghĩa hàm main() 4. Định nghĩa các hàm đã khai báo
void main() int main() (Phần khai báo nguyên mẫu - prototype)
{ { – Phần khai báo nguyên mẫu mới chỉ khai báo các thông
…. ….; tin cơ bản về hàm, chưa xác định rõ hàm hoạt động như
} thế nào
return 0;
@ kqha2006 @ @ kqha2006 @
39 40
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C CÔNG NGHỆ
THÔNG TIN
Lưu đồ thuật toán
Xuống
tầng hầm
10
8/19/2021
@ kqha2006 @ @ kqha2006 @
41 42
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
Lưu đồ thuật toán CÔNG NGHỆ
THÔNG TIN
Lưu đồ thuật toán
START
STOP
@ kqha2006 @ @ kqha2006 @
43 44
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
Lưu đồ thuật toán CÔNG NGHỆ
THÔNG TIN
1.6. Một vài chương trình C đơn giản
# include <stdio.h>
# include <conio.h>
void main()
{
printf(“TURBO C HAN HANH\n”);
/* In dòng chữ TURBO C HAN HANH rồi xuống dòng*/
printf(“LAM QUEN VOI BAN”);
/* In dòng chữ LAM QUEN VOI BAN ở đầu dòng tiếp theo */
getch(); // tạm dừng máy để xem kết quả
}
11
8/19/2021
@ kqha2006 @ @ kqha2006 @
45 46
Khoa Khoa
CÔNG NGHỆ
THÔNG TIN
1.5. Cấu trúc của một chương trình C CÔNG NGHỆ
THÔNG TIN
1.7. Vận hành chương trình trên máy
12