99
KHOA CÔNG NGHTHÔNG TIN BMÔN CÔNG NGHPHN MM Bài 6: Các khái nim cơ bn trong ngôn nglp trình C Bài ging LP TRÌNH CƠ BN

ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM

Bài 6: Các khái niệm cơ bản trong ngôn ngữ lập trình C

Bài giảng LẬP TRÌNH CƠ BẢN

Page 2: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Tài liệu tham khảo

� Kỹ thuật lập trình C: cơ sở và nâng cao, Phạm Văn Ất, Nhà xuất bản KHKT – Chương 2, 3

� The C programming language 2nd Edition, Brian Kernighan and Dennis Ritchie, Prentice Hall Software Series – Chương 2

Các khái niệm cơ bản trong ngôn ngữ lập trình C2

Page 3: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

NộiNội dungdung

� Giới thiệu ngôn ngữ lập trình C

� Các kiểu dữ liệu cơ bản

� Biến, hằng và biểu thức

� Các phép toán

� Cấu trúc chương trình

� Hàm main và đối số dòng lệnh

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Hàm main và đối số dòng lệnh

� Khai báo biến

� Phát biểu include

� Câu lệnh

� Xuất dữ liệu ra thiết bị chuẩn: các hàm putchar, printf

� Nhập dữ liệu từ thiết bị chuẩn: các hàm getchar, scanf

3

Page 4: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

PhầnPhần mềmmềm, , chươngchương trìnhtrình, , câucâu lệnhlệnh

Software

Program 2Program 1

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Program 2Program 1

Commands Commands Commands

4

Page 5: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

BắtBắt đầuđầu CC

B – Ken Thompson

BPCL – Martin Richards

Các khái niệm cơ bản trong ngôn ngữ lập trình C

C – Dennis Ritchie

B – Ken Thompson

5

Page 6: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Lịch sử C

� C và Unix có chung nguồn gốc

� C ban đầu được xây dựng và cài đặt trên hệ điều hành Unix máy

tính PDP-11

� Dennis Ritchie là tác giả C (1971).

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Năm 1973 Unix được viết lại bằng C

� BCPL (giữa những năm-60s) hay B (1970, cắt gọn của BCPL)

là tiền thân của C (không có A)

� BCPL và B ngôn ngữ không định kiểu, C là ngôn ngữ định kiểu.

6

Page 7: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Lịch sử C

� Năm 1978 - Kernighan & Ritchie (1st edition) công bố phiên bản chuẩn

đầu tiên của C "K&R C“

� Năm 1983, Viện tiêu chuẩn quốc gia MỹAmerican National Standards

Institute (ANSI) thành thập một ủy ban để làm rõ và chuẩn hóa ngôn

ngữ.

Các khái niệm cơ bản trong ngôn ngữ lập trình C

ngữ.

� Năm1988, ANSI C công bố phiên bản đầu tiên.

� Năm 1990, ISO thông qua ANSI C không thay đổi – là chuẩn quốc tế cho

đến bây giờ.

� Điều này mang đến lợi ích rất lớn về tính khả chuyển

� Xem http://cm.bell-labs.com/cm/cs/who/dmr/chist.html7

Page 8: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

CácCác lĩnhlĩnh vựcvực ứngứng dụngdụng củacủa CC

� C được dùng để lập trình hệ thống

� Một chương trình hệ thống làm thành một phần hệ

điều hành hoặc các tiện ích hỗ trợ của hệ điều hành

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Hệ điều hành (Operating Systems), trình thông

dịch (Interpreters), trình soạn thảo (Editors), trình

Hợp Ngữ (Assembly) được gọi là chương trình hệ

thống 8

Page 9: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

NgônNgôn ngữngữ cấpcấp trungtrung

Ngôn ngữ cấp cao

C

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Ngôn ngữ hợp ngữ

C

9

Page 10: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

NgônNgôn ngữngữ cócó cấucấu trúctrúc

� C cho phép tổng hợp mã lệnh và dữ liệu

� Nó có khả năng tập hợp và ẩn đi tất cả

thông tin, lệnh khỏi phần còn lại của chương

Các khái niệm cơ bản trong ngôn ngữ lập trình C

thông tin, lệnh khỏi phần còn lại của chương

trình để dùng cho những tác vụ riêng

� Chương trình C có thể được chia nhỏ thành những hàm (functions) hay những khối mã (code blocks).10

Page 11: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ĐặcĐặc điểmđiểm củacủa CC� C có 32 từ khóa

� Những từ khóa này kết hợp với cú pháp của C hình thành ngôn

ngữ C

� Các quy tắc được áp dụng cho các chương trình C

• Tất cả từ khóa là chữ thường main()

Các khái niệm cơ bản trong ngôn ngữ lập trình C

• Tất cả từ khóa là chữ thường

• Ðoạn mã trong chương trình C có

phân biệt chữ thường, chữ hoa, do

while khác DO WHILE

•Từ khóa không thể dùng đặt tên biến

(variable name) hoặc tên hàm (function

name)

main()

{

/* This is a sample Program*/

int i,j;

i=100;

j=200;

:

}

11

Page 12: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

CấuCấu trúctrúc chươngchương trìnhtrình CC

main()� Chương trình C được chia nhỏ thành những đơn vị gọi là hàm

� Không kể có bao nhiêu hàm trong chương trình, Hệ điều hành

luôn trao quyền điều khiển cho hàm main() khi một chương

Các khái niệm cơ bản trong ngôn ngữ lập trình C

luôn trao quyền điều khiển cho hàm main() khi một chương

trình C được thực thi.

� Theo sau tên hàm là dấu ngoặc đơn

� Dấu ngoặc đơn có thể có chứa hay không chứa những tham số

12

Page 13: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

CấuCấu trúctrúc chươngchương trìnhtrình C (C (tttt.).)

Dấu phân cách {…}

� Sau phần đầu hàm là dấu ngoặc xoắn mở {�

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Nó cho biết việc thi hành lệnh trong hàm bắt đầu

� Tương tự, dấu ngoặc xoắn đóng } sau câu lệnh cuối cùng trong hàm chỉ ra điểm kết thúc của hàm

13

Page 14: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

CấuCấu trúctrúc chươngchương trìnhtrình C (C (tttt.).)

Dấu kết thúc câu lệnh … ;

� Một câu lệnh trong C được kết thúc bằng dấu

Các khái niệm cơ bản trong ngôn ngữ lập trình C

chấm phẩy ;� Trình biên dịch C không hiểu việc xuống dòng,

khoảng trắng hay tab� Một câu lệnh không kết thúc bằng dấu chấm

phẩy sẽ được xem như dòng lệnh lỗi trong C

14

Page 15: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

CấuCấu trúctrúc chươngchương trìnhtrình C (C (tttt.).)

/*Dòng chú thích*/

� Những chú thích thường được viết để mô tả

công việc của một lệnh đặc biệt, một hàm hay

Các khái niệm cơ bản trong ngôn ngữ lập trình C

toàn bộ chương trình

� Trình biên dịch sẽ bỏ qua phần chú thích

� Trong trường hợp chú thích nhiều dòng, nó sẽ

bắt đầu bằng ký hiệu /* và kết thúc là */15

Page 16: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Biến

Dữ liệu

Bộ nhớ

15 15

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Dữ liệu

Mỗi vị trí trong bộ nhớ là duy nhất

Biến cho phép cung cấp một tên có ý nghĩa cho mỗi vị trí nhớ

15

Dữ liệu trong bộ

nhớ

15

16

Page 17: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ

BEGIN

DISPlAY ‘Enter 2 numbers’

INPUT A, BC = A + BDISPLAY C

END

Các khái niệm cơ bản trong ngôn ngữ lập trình C

• A, B và C là các biến trong đoạn mã giả trên

• Tên biến giúp chúng ta truy cập vào bộ nhớ mà không cần dùng địa chỉ của

chúng

• Hệ điều hành đảm nhiệm việc cấp bộ nhớ còn trống cho những biến này

• Ðể tham chiếu đến một giá trị cụ thể trong bộ nhớ, chúng ta chỉ cần dùng tên

của biến

END

17

Page 18: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Khai báo

• <kiểu dữ liệu> <tên biến> [=<giá trị 1>]

•Ví dụ:

Các khái niệm cơ bản trong ngôn ngữ lập trình C

int a = 3;int b;int a=3, b=4;char c = ‘A’;

18

Page 19: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Hằng

� Một hằng (constant) là một giá trị không bao giờ thay đổi trong thời gian tồn tại của nó.

� Định nghĩa hằng: sử dụng từ khóa const

Các khái niệm cơ bản trong ngôn ngữ lập trình C

const <kiểu dữ liệu> <tên hằng> = <giá trị>

19

Page 20: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Hằng

Các ví dụ

� const int a= 5; hằng số nguyên

� const float x = 5.3; hằng số thực

� const char c = ‘1’; hằng ký tự

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Hằng trong hệ 16 được bắt đầu bằng 0x.

Ví dụ: 0xa5 = 10*16 + 5 =165.

� Hằng trong hệ 8 bắt đầu bằng 0.

Ví dụ: 0345 = 3*64+4*16+5=229

20

Page 21: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Định danh� Tên của các biến (variables), các hàm (functions), các nhãn (labels) và các đối tượng khác nhau do người dùng

định nghĩa gọi là định danh

� Ví dụ về các định danh đúng

� arena

� s_count

� marks40

class_one

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� class_one

� Ví dụ về các định danh sai

� 1sttest

� oh!god

� start... end

� Các định danh có thể có bất cứ chiều dài nào theo quy ước, nhưng số ký tự trong một biến được nhận diện bởi

trình biên dịch thì thay đổi theo trình biên dịch

� Các định danh trong C có phân biệt chữ hoa và chữ thường

Không hợp lệ !

21

Page 22: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Tên biến phải bắt đầu bằng một ký tự alphabet

Nên tránh đặt tên biến trùng tên các từ khoá

Theo sau ký tự đầu có thể là các ký tự chữ, số …

Các nguyên tắc đặt tên định danh

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Nên tránh đặt tên biến trùng tên các từ khoá

Tên biến nên mô tả được ý nghĩa của nó

Tránh dùng các ký tự gây lầm lẫn

Nên áp dụng các quy ước đặt tên biến chuẩn khi lập trình

22

Page 23: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Định danh

Các khái niệm cơ bản trong ngôn ngữ lập trình C23

Page 24: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Từ khóa

� Từ khóa: Tất cả các ngôn ngữ dành một số từ nhất định

cho mục đích riêng

� Những từ này có một ý nghĩa đặc biệt trong ngữ cảnh của

một ngôn ngữ cụ thể

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Sẽ không có xung đột nếu từ khóa và tên biến khác nhau.

Ví dụ từ integer cho tên biến thì hoàn toàn hợp lệ ngay cả

khi mà từ khóa là int

24

Page 25: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Từ khóa

auto double int struct break elselong switch case enum registertypedef char extern return union

Các khái niệm cơ bản trong ngôn ngữ lập trình C25

typedef char extern return unionconst float short unsignedcontinue for signed void default gotosizeof volatile do if static while

Page 26: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu dữ liệu

� Các kiểu dữ liệu khác nhau được lưu trữ trong biến là:

� Số (Numbers)

� Số nguyên.

Ví dụ : 10 hay 178993455

� Số thực.

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Số thực.

Ví dụ, 15.22 hay 15463452.25

� Số dương

� Số âm

� Tên. Ví dụ : John

� Giá trị luận lý :

Ví dụ : Y hay N

26

Page 27: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu dữ liệu (tt.)

� Kiểu dữ liệu mô tả loại dữ liệu sẽ được lưu

trong biến

� Tên biến đặt sau kiểu dữ liệu

� Ví dụ : tên biến “varName” đứng sau kiểu dữ

Các khái niệm cơ bản trong ngôn ngữ lập trình C

kiểu dữ liệu tên biến

int varName

� Ví dụ : tên biến “varName” đứng sau kiểu dữ

liệu “int”

27

Page 28: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu dữ liệu cơ bản

Kiểu dữ liệu cơ bản

Các khái niệm cơ bản trong ngôn ngữ lập trình C

voidchardoublefloatint

28

Page 29: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

• kích thước kiểu dữ liệu phụ thuộc vào việc build cho hệ điều

hành nào.

• Nếu build cho các hệ 8 bits, 32 bits hoặc 64 bits (Windows),

Kiểu dữ liệu cơ bản

Các khái niệm cơ bản trong ngôn ngữ lập trình C

29

các giá trị này sẽ thay đổi tương ứng.

• Kích thước được giới thiệu ở đây là dành cho HĐH 16 bits.

Page 30: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu số nguyên (int)

� Lưu trữ dữ liệu số

int num;

� Không thể lưu trữ bất cứ kiểu dữ liệu nào khác như

“Alan” hoặc “abc”

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Chiếm 16 bits (2 bytes) bộ nhớ

� Biểu diễn các số nguyên trong phạm vi

-32768 tới 32767

� Ví dụ : 12322, 0, -232

30

Page 31: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu số thực (float)

� Lưu trữ dữ liệu số chứa phần thập phân

float num;

� Có độ chính xác tới 6 con số

� Chiếm 32 bits (4 bytes) bộ nhớ

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Chiếm 32 bits (4 bytes) bộ nhớ

� 3.4E-38 đến 3.4E+38 (10 mũ dương 38)

� Ví dụ : 23.05, 56.5, 32

31

Page 32: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu số thực (double)

� Lưu trữ dữ liệu số chứa phần thập phân

double num;

� Có độ chính xác tới 10 con số

� Chiếm 64 bits (8 bytes) bộ nhớ

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� 1.7E-308 đến 1.7E+308

� Ví dụ : 23.05, 56.5, 32

32

Page 33: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu ký tự (char )

� Lưu trữ một ký tự đơn

char gender;

gender='M';

Các khái niệm cơ bản trong ngôn ngữ lập trình C

gender='M';

� Chiếm 8 bits (1 byte) bộ nhớ

� Ví dụ: ‘a’, ‘m’, ‘$’ ‘%’ , ‘1’, ’5’

33

Page 34: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu void

� Không lưu bất cứ dữ liệu gì

� Báo cho trình biên dịch không có giá trị trả về

Các khái niệm cơ bản trong ngôn ngữ lập trình C34

Page 35: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Những kiểu dữ liệu dẫn xuất

Kiểu dữ liệu dẫn xuấtKiểu dữ liệu

cơ bản

Bộ bổ từ (Modifiers)

kiểu dữ liệu

int unsigned int

(chỉ là số dương)unsigned

Các khái niệm cơ bản trong ngôn ngữ lập trình C

intshort short int (chiếm ít bộ nhớ hơn int)

int (chỉ là số dương)unsigned

int/doubleLong int /longdouble

(chiếm nhiều bộ nhớ hơnint/double)

long

35

Page 36: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Các kiểu dữ liệu signed và unsigned

� Kiểu unsigned chỉ rõ rằng một biến chỉ có thể nhận giá trị

dương

unsigned int varNum;

varNum=23123;

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� varNum được cấp phát 2 bytes

� Bổ từ unsigned có thể được dùng với kiểu dữ liệu int và float

� Kiểu unsigned int hỗ trợ dữ liệu trong phạm vi từ 0 đến 65535

36

Page 37: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Những kiểu dữ liệu long (dài) và short (ngắn)

� short int chiếm giữ 8 bits (1 byte) � Cho phép số có phạm vi từ -128 tới 127

� long int chiếm giữ 32 bits (4 bytes)� -2,147,483,648 và 2,147,483,647

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� -2,147,483,648 và 2,147,483,647

� long double chiếm 128 bits (16 bytes)

37

Page 38: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu dữ liệu & phạm vi giá trị

Kiểu Dung lượngtính bằng bit

Phạm vi

char 8 -128 tới 127

unsigned char 8 0 tới 255

signed char 8 -128 tới 127

Các khái niệm cơ bản trong ngôn ngữ lập trình C

signed char 8 -128 tới 127

int 16 -32,768 tới 32,767

unsigned int 16 0 tới 65,535

signed int 16 Giống như kiểu int

short int 16 Giống như kiểu int

unsigned short int 16 0 tới 65, 535

38

Page 39: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kiểu dữ liệu & phạm vi giá trị (tt.)Kiểu Dung

lượngtính bằng

bit

Phạm vi

signed short int 16 Giống như kiểu short int

long int 32 -2,147,483,648 tới 2,147,483,647long int 32 -2,147,483,648 tới 2,147,483,647

signed long int 32 0 tới 4,294,967,295

unsigned long int 32 Giống như kiểu long int

float 32 6 con số thập phân

double 64 10 con số thập phân

long double 128 10 con số thập phân

Các khái niệm cơ bản trong ngôn ngữ lập trình C39

Page 40: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ về cách khai báo biến

main (){

char abc; /*abc of type character */int xyz; /*xyz of type integer */float length; /*length of type float */

Các khái niệm cơ bản trong ngôn ngữ lập trình C

float length; /*length of type float */double area; /*area of type double */long liteyrs; /*liteyrs of type long int */short arm; /*arm of type short integer*/

}

40

Page 41: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Các toán tử số học (Arithmetic Operators)

Toán tử 1 ngôi

Chức năng Toán tử 2 ngôi

Chức năng

- Lấy đối số + Cộng

++ Tăng 1 - Trừ- - Giảm 1 * Nhân

% Lấy phần dư/ Chia

Các khái niệm cơ bản trong ngôn ngữ lập trình C

41

Page 42: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Bài tập

� Cho tam giác ABC có góc vuông A và cho biết cạnh a và góc B. Hãy viết thuật toán để tính góc C, cạnh b và cạnh c

� Chỉ dùng phép cộng, tính bình phương của một số

� Tính nghiệm xấp xỉ với độ chính xác ε = 0.000001 của phương trình f(x)= ex- x3 = 0

Các khái niệm cơ bản trong ngôn ngữ lập trình C42

Page 43: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

BiểuBiểu thứcthức (Expressions)(Expressions)

Sự kết hợp các toán tử và các toán hạng

Toán Tử

2 * y + 5

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Toán hạng

Ví dụ: 2 * y + 5

43

Page 44: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ToánToán tửtử gángán

Toán tử gán (=) có thể được dùng với bất kỳ biểu thức C hợp lệ nào

Các khái niệm cơ bản trong ngôn ngữ lập trình C

(Giá trị trái) (Giá trị phải)

(Toán tử gán)

(Tên biến) (Biểu thức)

44

Page 45: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

GánGán liênliên tiếptiếp

Nhiều biến có thể được gán với cùng một giá trị trong một câu lệnh đơn

Các khái niệm cơ bản trong ngôn ngữ lập trình C

�Tuy nhiên, không thể áp dụng quy tắc trên khi khai báo biến

45

Page 46: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

BốnBốn KiểuKiểu ToánToán TửTử

Số học (Arithmetic)

Luận Lý(Logical)

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Quan hệ (Relational)

Nhị phân(Bitwise)

46

Page 47: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

BiểuBiểu thứcthức sốsố họchọc

Biểu thức số học có thể được biểu diễn trong C bằng cách sử dụng các toán tử số học

Ví dụ :

Các khái niệm cơ bản trong ngôn ngữ lập trình C

a * (b + c/d) - 22

++i % 7

5 + (c = 3 + 8)

47

Page 48: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ToánToán tửtử sốsố họchọc

Các khái niệm cơ bản trong ngôn ngữ lập trình C48

Page 49: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ToánToán tửtử quanquan hệhệ vàvà logiclogic

Ðược dùng để :Kiểm tra mối quan hệ giữa hai biến hay giữa một biến và một hằng

Toán tử quan hệ

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Toán tử Ý nghĩa> Lớn hơn>= Lớn hơn hoặc bằng< Nhỏ hơn<= Nhỏ hơn hoặc bằng== Bằng!= Không bằng

49

Page 50: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Toán tử logic là những ký hiệu dùng để kết hợp hay phủ định biểu thức chứa các toán tử quan hệ

ToánToán tửtử quanquan hệhệ vàvà logic (logic (tttt.).)

Toán tử Ý nghĩa&& AND: Kết quả là True khi cả 2 điều kiện đều đúng

|| OR : Kết quả là True khi chỉ một trong hai điều kiện

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Những biểu thức dùng toán tử logic trả về 0 thay cho false và 1 thay cho true

Ví dụ: if (a>10) && (a<20)

|| OR : Kết quả là True khi chỉ một trong hai điều kiện là đúng

! NOT: Tác động trên các giá trị riêng lẻ, chuyển đổi True thành False và ngược lại.

50

Page 51: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ToánToán tửtử logic logic nhịnhị phânphân

Dữ liệu chỉ được xử lý sau khi đã chuyển đổi giá trị SỐ thành giá trị NHỊ PHÂN

Toán tử Mô tả

Bitwise AND ( x & y)

Mỗi vị trí của bit trả về kết quả là 1 nếu bit của haitoán hạng là 1.

Các khái niệm cơ bản trong ngôn ngữ lập trình C

( x & y) toán hạng là 1.

Bitwise OR( x | y)

Mỗi vị trí của bit trả về kết quả là 1 nếu bit của một trong hai toán hạng là 1.

Bitwise NOT( ~ x)

Ðảo ngược giá trị của toán hạng (1 thành 0 và ngược lại).

Bitwise XOR ( x ^ y)

Mỗi vị trí của bit chỉ trả về kết quả là 1 nếu bit củamột trong hai toán hạng là 1 mà không không phải cảhai toán hạng cùng là 1.

51

Page 52: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ToánToán tửtử logic logic nhịnhị phânphân ((tttt.).)

Ví dụ

• 10 & 15� 1010 & 1111�1010 � 10

• 10 | 15� 1010 | 1111�1111 � 15

Các khái niệm cơ bản trong ngôn ngữ lập trình C

• 10 | 15� 1010 | 1111�1111 � 15

• 10 ^ 15� 1010 ^ 1111�0101 � 5

52

Page 53: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ChuyểnChuyển đổiđổi kiểukiểuQui tắc chuyển đổi kiểu tự động trình bày dưới đây nhằm xác định giá trị biểu

thức:a. char và short được chuyển thành int và float được chuyển thành double.b. Nếu có một toán hạng là double, toán hạng còn lại sẽ được chuyển thành

double, và kết quả là double.c. Nếu có một toán hạng là long, toán hạng còn lại sẽ được chuyển thành long, và

kết quả là long. d. Nếu có một toán hạng là unsigned, toán hạng còn lại sẽ được chuyển thành

unsigned và kết quả cũng là unsigned.

Các khái niệm cơ bản trong ngôn ngữ lập trình C

unsigned và kết quả cũng là unsigned.e. Nếu tất cả toán hạng kiểu int, kết quả là int.

Ví dụ

53

Page 54: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ÉpÉp kiểukiểu

Một biểu thức được ép thành một kiểu nhất định bằng cách dùng kỹ thuật ép kiểu (cast). Cú pháp :

(kiểu dữ liệu) castKiểu � Bất cứ kiểu dữ liệu hợp lệ trong C

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Kiểu � Bất cứ kiểu dữ liệu hợp lệ trong C

Ví dụ:

float x,f;

f = 3.14159;

x = (int) f;

Giá trị của x sẽ là 3 (số nguyên)

Giá trị số nguyên trả về bởi (int) f được chuyển thành số thực khi nó được toán tử GÁN xử lý. Song, giá trị của f vẫn không đổi.

54

Page 55: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ĐộĐộ ưuưu tiêntiên củacủa toántoán tửtử� Độ ưu tiên tạo nên cấu trúc phân cấp của loại toán tử này

so với loại toán tử khác khi tính giá trị một biểu thức số học

� Nó đề cập đến thứ tự thực thi các toán tử trong C

� Độ ưu tiên của các toán tử này được thay đổi bởi các dấu

ngoặc đơn trong biểu thức

Các khái niệm cơ bản trong ngôn ngữ lập trình C

ngoặc đơn trong biểu thức

Loại toán tử Toán tử Tính kết hợp

Một ngôi - ++ -- Phải đến trái

Hai ngôi ^ Trái đến phải

Hai ngôi * / % Trái đến phải

Hai ngôi + - Trái đến phải

Hai ngôi = Phải đến trái55

Page 56: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ĐộĐộ ưuưu tiêntiên củacủa toántoán tửtử ((tttt.).)

Các khái niệm cơ bản trong ngôn ngữ lập trình C56

Page 57: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ĐộĐộ ưuưu tiêntiên củacủa toántoán tửtử so so sánhsánh

Độ ưu tiên của toán tử so sánh (quan hệ) luôn được tính từ trái sang phải

Các khái niệm cơ bản trong ngôn ngữ lập trình C57

Page 58: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ĐộĐộ ưuưu tiêntiên củacủa toántoán tửtử logiclogic

Thứ tự ưu tiên Toán tử1 NOT2 AND

Các khái niệm cơ bản trong ngôn ngữ lập trình C

2 AND3 OR

Khi có nhiều toán tử logic trong một điều kiện, ta áp dụng quy tắc tính từ phải sang trái

58

Page 59: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Xét biểu thức sau:False OR True AND NOT False AND True

Ðiều kiện này được tính như sau:False OR True AND [NOT False] AND True

NOT có độ ưu tiên cao nhất.False OR True AND [True AND True]

ĐộĐộ ưuưu tiêntiên củacủa toántoán tửtử luậnluận lýlý ((tttt.).)

Các khái niệm cơ bản trong ngôn ngữ lập trình C

False OR True AND [True AND True]Ở đây, AND có độ ưu tiên cao nhất, những toán tử có

cùng ưu tiên được tính từ phải sang trái.False OR [True AND True]

[False OR True]

True

59

Page 60: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Thứ tự ưu tiên Kiểu toán tử

Khi một biểu thức có nhiều loại toán tử thì độ ưu tiên giữa chúng phải được thiết lập.

ĐộĐộ ưuưu tiêntiên giữagiữa cáccác toántoán tửtử

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Thứ tự ưu tiên Kiểu toán tử1 Số học (Arithmetic)

2 So sánh (Comparison)

3 Luận lý (Logical)

60

Page 61: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ĐộĐộ ưuưu tiêntiên giữagiữa cáccác toántoán tửtử ((tttt.).)

Ví dụ :2*3+4/2 > 3 AND 3<5 OR 10<9

Việc tính toán như sau :[2*3+4/2] > 3 AND 3<5 OR 10<9

Các khái niệm cơ bản trong ngôn ngữ lập trình C

[2*3+4/2] > 3 AND 3<5 OR 10<9Toán tử số học sẽ được tính trước

[[2*3]+[4/2]] > 3 AND 3<5 OR 10<9[6+2] >3 AND 3<5 OR 10<9[8 >3] AND [3<5] OR [10<9]

61

Page 62: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Kế đến là toán tử so sánh có cùng độ ưu tiên. Ta áp dụng quy tắc tính từ trái sang phải.

True AND True OR FalseCuối cùng là toán tử kiểu luận lý. AND sẽ có độ ưu

ĐộĐộ ưuưu tiêntiên giữagiữa cáccác toántoán tửtử ((tttt.).)

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Cuối cùng là toán tử kiểu luận lý. AND sẽ có độ ưu tiên cao hơn OR

[True AND True] OR FalseTrue OR False

True

62

Page 63: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

ThayThay đổiđổi độđộ ưuưu tiêntiên� Dấu ngoặc đơn ( ) có độ ưu tiên cao nhất

� Độ ưu tiên của các toán tử có thể được thay đổi bởi

dấu ngoặc đơn

� Toán tử có độ ưu tiên thấp hơn nếu đặt trong dấu

Các khái niệm cơ bản trong ngôn ngữ lập trình C

ngoặc đơn sẽ được thực thi trước

� Khi các cặp ngoặc đơn lồng nhau ( ( ( ) ) ), cặp ngoặc

đơn trong cùng nhất sẽ được thực thi trước

� Nếu trong biểu thức có nhiều cặp ngoặc đơn thì việc

thực thi sẽ theo thứ tự từ trái sang phải 63

Page 64: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ :

5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR (2<6 AND 10>11))

Cách tính :

ThayThay đổiđổi độđộ ưuưu tiêntiên ((tttt.).)

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Cách tính :1) 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR (True AND False))

Dấu ngoặc đơn bên trong sẽ được tính trước 2) 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR False)

64

Page 65: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

3) 5+9*3^2-4 >10 AND (2+16-8/4 > 6 OR False)

Kế đến dấu ngoặc đơn ở ngoài được tính đến 4) 5+9*3^2-4 > 10 AND (2+16-2 > 6 OR False)

5) 5+9*3^2-4 > 10 AND (18-2 > 6 OR False)

ThayThay đổiđổi độđộ ưuưu tiêntiên ((tttt.).)

Các khái niệm cơ bản trong ngôn ngữ lập trình C

6) 5+9*3^2-4 > 10 AND (16 > 6 OR False)

7) 5+9*3^2-4 > 10 AND (True OR False)

8) 5+9*3^2-4 > 10 AND True

65

Page 66: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

9) 5+9*9-4>10 AND True

Biểu thức bên trái được tính trước10) 5+81-4>10 AND True

ThayThay đổiđổi độđộ ưuưu tiêntiên ((tttt.).)

Các khái niệm cơ bản trong ngôn ngữ lập trình C

11) 86-4>10 AND True

12) 82>10 AND True

13) True AND True

14) True

66

Page 67: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Nhập/Xuất chuẩn

� Thư viện chuẩn trong C cung cấp các hàm xử lý cho việc nhập và xuất.� Thư viện chuẩn có các hàm I/O, dùng để quản lý việc nhập, xuất, các thao tác trên ký tự và chuỗi.� Thiết bị nhập chuẩn thường là bàn phím.

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Thiết bị nhập chuẩn thường là bàn phím.� Thiết bị xuất chuẩn thường là màn hình (console).� Nhập và xuất có thể được xử lý qua các tập tin thay vì từ các thiết bị chuẩn.

67

Page 68: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Tập tin Header <stdio.h>� #include <stdio.h>

• Đây là câu lệnh tiền xử lý

� stdio.h là tập tin header (header file)

� Chứa các macro sử dụng cho nhiều hàm nhập/xuất trong C

� Các macro trong stdio.h giúp các hàm printf(), scanf(),

Các khái niệm cơ bản trong ngôn ngữ lập trình C

putchar(), getchar() thực thi

68

Page 69: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Nhập/Xuất được định dạng

� printf( ) – Dùng cho xuất có định dạng

� scanf( ) – Sử dụng để nhập có định dạng

� Các đặc tả định dạng - qui định dạng thức mà theo đó

Các khái niệm cơ bản trong ngôn ngữ lập trình C

giá trị của biến được nhập vào và in ra

69

Page 70: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

printf ( )

� Được dùng để hiển thị dữ liệu ra thiết bị xuất chuẩn nhưmàn hình (console)

Cú pháp � printf ( “control string”, argument list);

� Danh sách đối số (argument list) chứa hằng, biến, biểuthức hoặc các hàm phân cách bởi dấu phẩy

Các khái niệm cơ bản trong ngôn ngữ lập trình C

thức hoặc các hàm phân cách bởi dấu phẩy� Phải có một lệnh định dạng trong “control string” cho

mỗi đối số trong danh sách� Các lệnh định dạng phải khớp với danh sách đối số về số

lượng, kiểu và thứ tự.� control string luôn được đặt trong dấu nhấy kép “ ”, đây

là dấu phân cách

70

Page 71: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

printf ( ) (tt.)

control string chứa một trong ba kiểu phần tử sau:

1. Các ký tự văn bản :

gồm các ký tự có thể in được

2. Các lệnh định dạng :

Các khái niệm cơ bản trong ngôn ngữ lập trình C

bắt đầu với ký hiệu % và theo sau là một mã định dạng tương

ứng cho từng phần tử dữ liệu

3. Các ký tự không in được :

gồm tab, blank và new_line

71

Page 72: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Mã định dạngĐịnh dạng printf() scanf()

Ký tự đơn (single character) %c %c

Chuỗi (string) %s %s

Số nguyên có dấu (signed decimal integer) %d %d

Kiểu float - dạng dấu chấm thập phân (decimal notation) %f %f hoặc %e

Kiểu float - dạng dấu chấm thập phân %lf %lf

Kiểu float - dạng lũy thừa (exponential notation) %e %f or %e

Kiểu float ( %f hay %e , khi ngắn hơn) %g

Số nguyên không dấu (unsigned decimal integer) %u %u

Số nguyên hệ 16 không dấu - sử dụng “ABCDEF” (unsigned hexadecimal integer)

%x %x

Số nguyên hệ 8 không dấu (unsigned octal integer) %o %o

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Trong bảng trên : c, d, f, lf, e, g, u, s, o và x là các bộ đặc tả kiểu72

Page 73: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Mã định dạng (tt.)

Mã địnhdạng

Các qui ước in

%d Các con số trong số nguyên

%f Các chữ số phần nguyên sẽ được in ra. Phần thập phân sẽ chỉ in 6 chữ số. NếuPhần thập phân sẽ chỉ in 6 chữ số. Nếuphần thập phân ít hơn 6 chữ số, nó sẽ đượcthêm các chữ số 0 vào từ bên phải, ngượclại nó sẽ làm tròn số từ bên phải.

%e Một con số bên trái của dấu chấm thập phânvà 6 vị trí bên phải, như %f ở trên

Các khái niệm cơ bản trong ngôn ngữ lập trình C73

Page 74: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Mã định dạng (tt.)STT

Lệnh Chuỗi điều khiển

Nội dung chuỗi điều khiển

Danh sách đối số

Giải thích danh sách đối số

Hiển thị trên màn hình

1. printf(“%d”,300); %d Chỉ chứa lệnh định dạng

300 Hằng 300

2. printf(“%d”,10+5); %d Chỉ chứa lệnh định dạng

10 + 5 Biểu thức 15

3. printf(“Good Morning Mr. Lee.”); Good Morning Mr. Lee.

Chỉ chứa các ký tự văn bản

Rỗng Rỗng Good Morning Mr. Lee.

4. int count = 100;printf(“%d”,count);

%d Chỉ chứa lệnh định dạng

count Biến 100

5. printf(“\nhello”); \nhello Chứa ký tự không được in và các ký tự văn bản

Rỗng Rỗng hello on a new line

6. #define str “Good Apple “……..printf(“%s”,str);

%s Chỉ chứa lệnh định dạng

str Hằng ký hiệu

Good Apple

7. ……..int count,stud_num;count=0;stud_num=100;printf(“%d %d\n”,count, stud_num);

%d %d Chứa lệnh định dạng và ký tự không được in

count, stud_num

Hai biến 0 , 100

Các khái niệm cơ bản trong ngôn ngữ lập trình C74

Page 75: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Các ký tự đặc biệt

\\ In ra ký tự \\ “ In ra ký tự “\ “ In ra ký tự “

%% In ra ký tự %

Các khái niệm cơ bản trong ngôn ngữ lập trình C75

Page 76: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ cho hàm printf()

Chương trình hiển thị số nguyên, thập phân, ký tự và chuỗi

#include <stdio.h>

void main()

{

int a = 10;

float b = 24.67892345;

Các khái niệm cơ bản trong ngôn ngữ lập trình C

float b = 24.67892345;

char ch = ‘A’;

printf(“Integer data = %d”, a);

printf(“Float Data = %f”,b);

printf(“Character = %c”,ch);

printf(“This prints the string”);

printf(“%s”,”This also prints a string”);

}

76

Page 77: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ cho hàm printf()

Kết quả hiện ra ở màn hình là:

Integer data = 10

Float Data = 24.678923

Character = A

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Character = A

This prints the string

This also prints a string

77

Page 78: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Bổ từ trong hàm printf( )

1. Bổ từ ‘-‘

Phần tử dữ liệu sẽ được canh lề trái, phần tử sẽ được in bắt

đầu từ vị trí bên trái trong cùng của trường.

2. Bổ từ xác định độ rộng trường

Các khái niệm cơ bản trong ngôn ngữ lập trình C

2. Bổ từ xác định độ rộng trường

Có thể được sử dụng với kiểu float, double hoặc mảng ký

tự (chuỗi). Độ rộng trường là một số nguyên xác định độ

rộng nhỏ nhất cho phần tử dữ liệu.

78

Page 79: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Bổ từ trong hàm printf( ) (tt.)3. Độ chính xác

Được sử dụng với kiểu float, double hoặc mảng ký tự (chuỗi). Nếu dùng

với kiểu float hay double, chuỗi con số xác định số lượng lớn nhất các con

số được in bên phải dấu chấm thập phân.

4. Bổ từ ‘0’

Mặc định thì khoảng trống sẽ được thêm vào một trường. Nếu người dùng

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Mặc định thì khoảng trống sẽ được thêm vào một trường. Nếu người dùng

muốn thêm số 0 vào trường thì bổ từ ‘0’ được dùng

5. Bổ từ ‘l’

Bổ từ này có thể được dùng hiển thị các đối số nguyên kiểu int hay double.

Mã định dạng tương ứng là %ld

79

Page 80: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Bổ từ trong hàm printf( ) (tt.)

6. Bổ từ ‘h’

Bổ từ này được sử dụng để hiển thị dạng short int. Mã

định dạng tương ứng như là %hd

Các khái niệm cơ bản trong ngôn ngữ lập trình C

7. Bổ từ ‘*’

Nếu người dùng không muốn xác định độ rộng trường

nhưng muốn chương trình xác định điều đó, bổ từ này

được sử dụng

80

Page 81: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ về các bổ từ

/* Chương trình minh họa dùng bổ từ với printf() */

#include <stdio.h>void main(){printf(“The number 555 in various forms:\n”);printf(“Without any modifier: \n”);printf(“[%d]\n”,555);printf(“With – modifier :\n”);

Các khái niệm cơ bản trong ngôn ngữ lập trình C

printf(“With – modifier :\n”);printf(“[%-d]\n”,555);printf(“With digit string 10 as modifier :\n”);printf(“[%10d]\n”,555);printf(“With 0 as modifier : \n”);printf(“[%0d]\n”,555);printf(“With 0 and digit string 10 as modifiers :\n”);printf(“[%010d]\n”,555);printf(“With -,0 and digit string 10 as modifiers:\n”);printf(“[%-010d]\n”,555);

}

81

Page 82: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ về các bổ từ

Kết quả hiện ra màn hình:

Các khái niệm cơ bản trong ngôn ngữ lập trình C82

Page 83: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

scanf( )

� Được sử dụng để nhập dữ liệu

Dạng tổng quát của hàm scanf()

scanf(“control string”, argument list);

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Những định dạng dùng trong hàm printf() cũng

được sử dụng với cùng cú pháp trong hàm

scanf()

83

Page 84: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

� printf() sử dụng các tên biến, hằng, hằng biểu tượng và

các biểu thức

� scanf() sử dụng các con trỏ tới biến

Danh sách đối số trong scanf() phải theo qui tắc :

Sự khác nhau về danh sách đối số giữa printf( ) và scanf( )

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Đọc giá trị vào một biến có kiểu dữ liệu cơ sở, sử dụng

ký hiệu & trước tên biến

� Đọc giá trị vào một biến có kiểu dữ liệu dẫn xuất, không

sử dụng & trước tên biến

84

Page 85: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

� Không có tuỳ chọn %g

� Mã định dạng %f và %e là giống nhau

Sự khác nhau về Sự khác nhau về các lệnh định dạngcác lệnh định dạnggiữa printf( ) và scanf( )giữa printf( ) và scanf( )

Các khái niệm cơ bản trong ngôn ngữ lập trình C85

Page 86: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ với hàm scanf( )

#include <stdio.h>

void main(){

int a;

float d;

char ch, name[40];

Các khái niệm cơ bản trong ngôn ngữ lập trình C

char ch, name[40];

printf(“Please enter the data\n”);

scanf(“%d %f %c %s”,&a,&d,&ch,name);

printf(“\n The values accepted are:

%d,%f,%c,%s”,a, d,ch,name);

}

86

Page 87: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Vùng đệm Nhập/Xuất

� Được sử dụng để đọc và viết các ký tự ASCII

� Một vùng đệm (buffer) là một không gian lưu trữ tạm

thời trong bộ nhớ hoặc trên thẻ điều khiển thiết bị

� Bộ đệm Nhập/Xuất có thể chia làm :

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Bộ đệm Nhập/Xuất có thể chia làm :

� Console I/O

� Buffered File I/O

87

Page 88: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Console I/O

� Các hàm Console I/O chuyển các thao tác đến thiết bị

xuất nhập chuẩn của hệ thống

� Trong ‘C’ các hàm console I/O đơn giản nhất là:

getchar( ) - đọc một và chỉ một ký tự từ bàn phím

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� getchar( ) - đọc một và chỉ một ký tự từ bàn phím

� putchar( ) - xuất một ký tự lên màn hình

88

Page 89: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

getchar( )

� Dùng đọc dữ liệu nhập, một ký tự từ bàn phím

� Các ký tự đặt trong vùng đệm đến khi người dùng gõ

phím enter

Các khái niệm cơ bản trong ngôn ngữ lập trình C

� Hàm getchar( ) không có đối số, nhưng vẫn phải có

cặp dấu ngoặc ( )

89

Page 90: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Ví dụ hàm getchar()

/*Program to demonstrate the use of getchar()*/

#include <stdio.h>

void main()

{

Các khái niệm cơ bản trong ngôn ngữ lập trình C

{

char letter;

printf(“\nPlease enter any character:“);

letter = getchar();

printf(“\nThe character entered by you

is %c“, letter);

}

90

Page 91: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

putchar( )

� Hàm xuất ký tự trong ‘C’

� Có một đối số

Đối số của một hàm putchar( ) có thể là:

Các khái niệm cơ bản trong ngôn ngữ lập trình C

Đối số của một hàm putchar( ) có thể là:

� Một hằng ký tự đơn

� Một mã định dạng

� Một biến ký tự

91

Page 92: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Các tùy chọn và chức năng của putchar( )

Tham số Hàm Chức năng

Biến ký tự putchar(c) Hiển thị nội dung biến ký tự c

Hằng ký tự putchar(‘A’) Hằng ký tự AHằng ký tự putchar(‘A’) Hằng ký tự A

Hằng số putchar(‘5’) Hằng số 5

Mã định dạng

putchar(‘\t’) Chèn ký tự khoảng trắng

Mã định dạng

putchar(‘\n’) Chèn ký tự xuống dòng

Các khái niệm cơ bản trong ngôn ngữ lập trình C92

Page 93: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

putchar( )

/* This program demonstrates the use of constants and escape sequences in putchar()*/

#include <stdio.h>void main(){putchar(‘H’); putchar(‘\n’);putchar(‘\t’);

Các khái niệm cơ bản trong ngôn ngữ lập trình C

putchar(‘\t’);putchar(‘E’); putchar(‘\n’);

Ví dụputchar(‘\t’); putchar(‘\t’);putchar(‘L’); putchar(‘\n’);putchar(‘\t’); putchar(‘\t’); putchar(‘\t’);putchar(‘L’); putchar(‘\n’);putchar(‘\t’); putchar(‘\t’); putchar(‘\t’);putchar(‘\t’);putchar(‘O’);

}

93

Page 94: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Tóm tắt nội dung� Sự ra đời ngôn ngữ lập trình C và ý nghĩa sử dụng� Các kiểu dữ liệu cơ bản trong C� Biến, hằng và biểu thức� Các phép toán� Cấu trúc chương trình

Hàm main và đối số dòng lệnh

Các khái niệm cơ bản trong ngôn ngữ lập trình C94

� Hàm main và đối số dòng lệnh� Khai báo biến� Phát biểu include� Câu lệnh� Xuất dữ liệu ra thiết bị chuẩn: các hàm putchar, printf� Nhập dữ liệu từ thiết bị chuẩn: các hàm getchar, scanf

Page 95: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

THẢO LUẬN

� Hàm main() sử dụng với đối số dòng lệnh

� Các hàm xuất, nhập khác

� Sử dụng Dev-C++

95 Giải thuật xử lý thông tin và ngôn ngữ lập trình

Page 96: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

CÂU HỎI VÀ BÀI TẬP� Bài 1: Hãy dùng câu lệnh printf() để :

a)Xuất ra giá trị của biến số nguyên sum.

b)Xuất ra chuỗi văn bản "Welcome", tiếp theo là một dòng mới.

c)Xuất ra biến ký tự letter.

d)Xuất ra biến số thực discount.

Các khái niệm cơ bản trong ngôn ngữ lập trình C96

e)Xuất ra biến số thực dump có 2 vị trí phần thập phân.

1. Dùng câu lệnh scanf() và thực hiện:

a) Ðọc giá trị thập phân từ bàn phím vào biến số nguyên sum.

b) Ðọc một giá trị số thực vào biến discount_rate.

� Bài 2: Viết một chương trình xuất ra giá trịASCII của các ký tự‘A’ và ‘b’.

Page 97: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

Bài 3: Xét chương trình sau:

#include <stdio.h>

void main()

{

int breadth;

CÂU HỎI VÀ BÀI TẬP

Các khái niệm cơ bản trong ngôn ngữ lập trình C97

int breadth;

float length, height;

scanf(“%d%f%6.2f”, breadth, &length, height);

printf(“%d %f %e”, &breadth, length, height);

}

Sửa lỗi chương trình trên.

Page 98: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

� Bài 4. Viết một chương trình nhập vào name, basic, daper(phần trăm của D.A), bonper (phần trăm lợi tức) và loandet(tiền vay bị khấu trừ) cho một nhân viên. Tính lương như sau:

salary = basic + basic * daper/100 + bonper * basic/100 - loandetBảng dữ liệu:

name basic daper bonper loandet

CÂU HỎI VÀ BÀI TẬP

Các khái niệm cơ bản trong ngôn ngữ lập trình C98

name basic daper bonper loandetMARK 2500 55 33.33 250.00

Tính salary và xuất ra kết quả dưới các đầu đề sau (Lương đượcin ra gần dấu đôla ($)):Name Basic

Salary� Bài 5. Viết một chương trình yêu cầu nhập vào tên, họ của bạn

và sau đó xuất ra tên, họ theo dạng là họ, tên.

Page 99: ệm c ơ b ản trong ngôn ng ữ l ập trình Cfit.mta.edu.vn/files/DanhSach/Bai6(20131022252).pdf · Kỹ thu ật l ập trình C: c ơ s ở và nâng cao, Ph ạm V ăn Ất,

HỎI VÀ ĐÁP

Máy tính điện tử và xử lý thông tin