You are on page 1of 12

8/19/2021

@ 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

 Công việc nặng nề, phức tạp

 Khó chuyển đổi chương trình giữa các hệ máy tính khác
nhau

 Cần ngôn ngữ mới

 Đơn giản việc lập trình

 Tính khả chuyển cao.

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

 Ứng dụng:  Ứng dụng:

 Viết hệ điều hành

 Phát triển ngôn ngữ mới

 Hệ thống nhúng

 Đồ họa và trò chơi.

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

 Ứng dụng:  Phương pháp phân tích TOP-DOWN

 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

 Ký tự là các phần tử cơ bản tạo nên chương trình  Tập kí tự trong C

 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:

 Dành riêng cho các mục đích xác định

 Đặt tên cho kiểu dữ liệu:

int, float, double…

 Mô tả các lệnh, các cấu trúc lập trình

if, else, while, case, for…


 Chú ý: tất cả các từ khóa trong C đều viết bằng chữ cái
thường.

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.

 Chú ý: C là ngôn ngữ có phân biệt chữ hoa và chữ thường

@ 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

– Chú thích nhiều dòng: đặt trong /* */ biên dịch.

 Ví dụ:  Tất cả các chỉ thị tiền xử lý đều bắt đầu với với #

// Day la chu thich /*


 Các chỉ thị tiền xử lý không phải là lệnh C/C++ vì vậy
Dong 1
Dong 2 không có dấu ; khi kết thúc.
*/

@ 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

 Chia thành 3 nhóm:

 Chỉ thị bao hàm tệp (#include).

 Chỉ thị định nghĩa cho tên (#define macro).

 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

const float PI = 3.1415;

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

 Khai báo biến  Khai báo các hàm nguyên mẫu

int N; Khai báo thông tin về các hàm của người dùng sẽ được sử

float Delta, x1, x2; dụng trong chương trình

– Tên hàm

– Danh sách các kiểu tham số sẽ truyền vào

– Kiểu dữ liệu trả về

@ 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()

 Khai báo các hàm nguyên mẫu  Bắt buộc phải có

Ví dụ:  Là hàm đặc biệt trong C, đánh dấu điểm bắt đầu của mọi

float DienTichTamGiac(float a, float b, float c); chương trình C

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

 Cú pháp  Định nghĩa các hàm đã khai báo ở phần trên

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

Chú ý: Các bước lập trình giải quyết vấn đề


 Khi định nghĩa hàm được đặt trước hàm main(), không cần Giải thuật gồm một tập hợp các bước
Phòng học
thực hiện nhằm giải quyết một vấn
khai báo nguyên mẫu hàm đề. Thí dụ sau đây mô
tả một giải thuật
Rời phòng học

Ðến cầu thang


 Mọi đối tượng cần phải được khai báo trước khi sử dụng

Xuống
tầng hầm

Ðây là các bước thực hiên


Ði đến quán khi một người muốn đi đến
ăn tự phục vụ quán ăn tự phục vụ từ
phòng học
Cafeteria

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

 Các biểu tượng:


Lưu đồ là một hình ảnh minh hoạ cho giải thuật

START

DISPLAY ‘Hello World !’

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

 Ví dụ: lưu đồ cộng hai số  Ví dụ 1:

# 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

 Ví dụ 2:  Theo dõi tài liệu + video


# include <stdio.h>
# include <conio.h>
void main()
{
int dai,rong; //khai báo các biến
int cv, dt;
printf(“Nhap chieu dai, rong:”); //In ra màn hình chuỗi trong cặp dấu
// nháy kép
scanf(“%d %d”,&dai,&rong); //Nhập số liệu cho các biến
cv = (dai+rong)*2; // Tính chu vi
dt = (dai*rong); // Tính diện tích
printf(“\nchu vi = %d”,cv); // In ra màn hình giá trị chu vi
printf(“\ndien tich = %d”,dt); // In ra màn hình diện tích
getch(); //Dừng màn hình để xem kết quả
}

12

You might also like