1. Trang chủ
  2. » Công Nghệ Thông Tin

lập trình C từ cơ bản

436 85 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 436
Dung lượng 4,05 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mã máy machine language  Là ngôn ngữ duy nhất máy tính trực tiếp hiểu được, là “ngôn ngữ tự nhiên” của máy tính  Được định nghĩa bởi thiết kế phần cứng, phụ thuộc phần cứng  Gồm các c

Trang 1

TẬP BÀI GIẢNG ĐIỆN TỬ

KỸ THUẬT LẬP TRÌNH

(Theo phương thức đào tạo tín chỉ)

Trình độ đào tạo : Đại học

Giảng viên

VŨ TRUNG DŨNG

Hà Nội, 2018

Trang 2

BÀI GIẢNG ĐIỆN TỬ SỐ 01

Trang 3

BB

3

 Học phần “Kỹ thuật lập trình ” nhằm cung cấp cho sinh viên

những kiến thức cơ sở cho lập trình hệ thống Qua đó sinhviên có được khái niệm chung về lập trình

 Tiết đầu tiên chúng ta sẽ học về: MÃ MÁY, HỢP NGỮ VÀ

NGÔN NGỮ BẬC CAO, MỘT SỐ NGÔN NGỮ LẬPTRÌNH BẬC CAO

Trang 4

CHƯƠNG 1: TỔNG QUAN VỀ

NGÔN NGỮ C++

HỌC PHẦN:

KỸ THUẬT LẬP TRÌNH

Trang 6

BB 1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao

a Mã máy (machine language)

 Là ngôn ngữ duy nhất máy tính trực tiếp hiểu được, là “ngôn ngữ tự

nhiên” của máy tính

 Được định nghĩa bởi thiết kế phần cứng, phụ thuộc phần cứng

 Gồm các chuỗi số, => chuỗi các số 0 và 1

 Dùng để lệnh cho máy tính thực hiện các thao tác cơ bản, mỗi lần

một thao tác

Trang 7

BB

7

1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao

 Nặng nề, khó đọc đối với con người

 Ví dụ:

+1300042774 +1400593419 +1200274027

Trang 9

BB

9

1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao

 Máy tính không hiểu

• Cần đến các chương trình dịch hợp ngữ (assembler) để chuyển từ

Trang 10

BB 1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao

c Các ngôn ngữ bậc cao (high-level languages)

 Tương tự với tiếng Anh, sử dụng các ký hiện toán học thông dụng

 Một lệnh thực hiện được một công việc mà hợp ngữ cần nhiều lệnh để

thực hiện được

 Các chương trình dịch (compiler) để chuyển sang mã máy

Trang 11

BB

11

1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao

 Các chương trình thông dịch (Interpreter program) trực tiếp chạy các

chương trình viết bằng ngôn ngữ bậc cao

 Ví dụ:

grossPay = basePay + overTimePay

Trang 12

BB 1.2 Một số ngôn ngữ lập trình bậc cao

FORTRAN

 Formula Translator (1954-1957: IBM)

 Tính toán toán học phức tạp, thường dùng trong các ứng dụng khoa học và kỹ thuật

 Common Business Oriented Language (1959)

Trang 13

 Tác giả: Sun Microsystems (1991)

 Ngôn ngữ điều khiển theo sự kiện (event-driven), hoàn toàn hướng đối tượng, tính khả chuyển (portable) rất cao

Trang 15

 Dennis Ritchie (Bell Laboratories)

 Là ngôn ngữ phát triển của hệ điều hành UNIX

 Độc lập phần cứng => các chương trình khả chuyển (portable)

Trang 16

BB

C++

 Là mở rộng của C

 Đầu những năm 1980: Bjarne Stroustrup (phòng thí nghiệm Bell)

 Cung cấp khả năng lập trình hướng đối tượng

 Ngôn ngữ lai

• Lập trình cấu trúc kiểu C

• Lập trình hướng đối tượng

• Cả hai1.2 Một số ngôn ngữ lập trình bậc cao

Trang 18

BB

Visual C++

 C++ của Microsoft và mở rộng

• Thư viện của Microsoft (Microsoft Foundation Classes -MFC)

• Thư viện chung

– GUI, đồ họa, lập trình mạng, đa luồng (multithreading), … – Dùng chung giữa Visual Basic, Visual C++, C#

1.2 Một số ngôn ngữ lập trình bậc cao

Trang 19

BÀI GIẢNG ĐIỆN TỬ SỐ 02

Trang 20

BB

Câu 1: Nêu khái niệm Pascal?

Câu 2: Nêu khái niệm Java?

KIỂM TRA BÀI CŨ:

Trang 22

Các trang Web với nội dung tương tác độngPhát triển các ứng dụng quy mô lớn

TRẢ LỜI:

Trang 24

BB 1.3 Lịch sử ngôn ngữ C và C++

Ngôn ngữ C được thiết kế bởi nhà khoa học Dennis Ritchie tại phòng thí nghiệm Bell Telephone vào năm 1972 C được thiết kế để viết hệ điều hành UNIX và để hỗ trợ cho các nhà lập trình nhanh chóng hoàn thành công việc của mình Về tên gọi, ngôn ngữ C được đặt tên như thế vì tiền thân của nó là ngôn ngữ B Ngôn ngữ B được phát triển bởi nhà khoa học Ken Thompson, ông cũng làm việc tại phòng thí nghiệm Bell

Trang 25

khác nhau, và việc phân biệt hay sử dụng ngôn ngữ C bắt đầu làm cho các nhà lập trình bối rối Để giải quyết vấn đề này, Viện Định Chuẩn

Quốc Gia Mỹ (American National Standard Institute) gọi tắt là ANSI đã triệu một cuộc họp vào năm 1983 nhằm thiết lập các chuẩn mực cho

ngôn ngữ C và được gọi là ANSI C

Trang 26

BB 1.3 Lịch sử ngôn ngữ C và C++

Ngoài ngôn ngữ C còn có rất nhiều ngôn ngữ lập trình cấp cao khác như Pascal, BASIC… nhưng theo đánh giá của các

chuyên gia điện toán, C có những ưu điểm nổi bật như sau:

C là ngôn ngữ rất mạnh và linh động, có khả năng thể hiện bất

kỳ ý tưởng nào của bạn Nó có thể chạy trên các hệ điều hành khác nhau và có thể chen các đoạn lệnh C vào cách chương

trình viết bằng ngôn ngữ khác.

Trang 28

BB 1.3 Lịch sử ngôn ngữ C và C++

C là ngôn ngữ lập trình cô đọng, chỉ chứa các thuật ngữ gọi là

từ khóa, là cơ sở để xây dựng chương trình.

C là ngôn ngữ lập trình đơn thể Mã lệnh trong C có thể được

viết thành các hàm và có thể được sử dụng lại trong nhiều

chương trình khác nhau.

Trang 29

nâng cấp đó.

Trang 31

 Borland C (còn gọi là Turbo C)

 Borland C++ 3.1 for DOS.

Trang 32

BB 1.4.1 Môi trường phát triển chương trình

Môi trường C/C++:

 Dev-C++

 Visual C++ của Microsoft

 Visual Stdio 2005 (sẽ thực hành trên môi trường này)

Trang 33

 Biên tập chương trình nguồn (Trình EDIT ).

 Biên dịch chương trình (Trình COMPILE ).

1.4.1 Môi trường phát triển chương trình

Trang 34

BB

 Chạy chương trình nguồn (Trình RUNTIME ).

 Sửa lỗi chương trình nguồn (Trình DEBUG ).

1.4.1 Môi trường phát triển chương trình

Trang 37

/* This is a sample Program*/

int i,j;

i=100;

j=200;

: }

Trang 41

+ io.h: Thư viện chứa các hàm vào ra cấp thấp.

+ graphics.h: Thư viện chứa các hàm liên quan đến đồ họa

Trang 42

BÀI GIẢNG ĐIỆN TỬ SỐ 03

Trang 43

BB

43

Câu hỏi: Nêu khái niệm mã máy?

KIỂM TRA BÀI CŨ:

Trang 47

void Nhap(int &); // Prototype ham Nhap int

TinhTong(int, int); // Protytype ham TinhTong

1.5 Các thành phần cơ bản

Trang 49

BB

49

// Phan mo ta cac ham

void Nhap(int &n)

Trang 50

BB

a main()

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

Cho dù 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 trình C được thực thi.

1.5 Các thành phần cơ bản

Trang 51

BB

51

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ố

1.5 Các thành phần cơ bản

Trang 55

BB

55

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

1.5 Các thành phần cơ bản

Trang 58

BÀI GIẢNG ĐIỆN TỬ SỐ 04

Trang 59

BB

59

Câu hỏi: Nêu khái niệm hợp ngữ?

KIỂM TRA BÀI CŨ:

Trang 62

BB

e Từ khóa: Trong C có các từ khóa sau:

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

break continue enum goto long short switch volatile case default extern huge near static typedef while

Trang 63

Các từ khóa phải viết bằng chữ thường

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 64

BB

Khái niệm tên rất quan trọng trong quá trình lập trình, nó không

những thể hiện rõ ý nghĩa trong chương trình mà còn dùng để xác định các đại lượng khác nhau khi thực hiện chương trình Tên thường được đặt cho hằng, biến, mảng, con trỏ, nhãn… Chiều dài tối đa của

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 65

BB

65

Tên biến hợp lệ là một chuỗi ký tự liên tục gồm: Ký tự chữ, số và dấu

gạch dưới Ký tự đầu của tên phải là chữ hoặc dấu gạch dưới Khi đặt tên không được đặt trùng với các từ khóa.

Ví dụ 1:

Các tên đúng: delta, a_1, Num_ODD, Case

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 66

BB

Các tên sai:

3a_1 (ký tự đầu là số)

num-odd (sử dụng dấu gạch ngang)

int (đặt tên trùng với từ khóa)

del ta (có khoảng trắng)

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 67

BB

67

Lưu ý: Trong C, tên phân biệt chữ hoa, chữ thường, ví dụ như:

number khác với Number

case khác với Case (case là từ khóa, do đó bạn đặt tên là Case vẫn

đúng).

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 68

BB

g Tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản.

Ví dụ 3: Chương trình in ra câu: bai hoc C dau tien

1 2 3 4 5

/* In ra cau bai hoc C dau tien */

#include <stdio.h>

void main(void) {

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 69

BB

69

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

Bai hoc C dau tien.

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 70

BB

Giải thích:

Dòng thứ 1: bắt đầu bằng /* và kết thúc bằng */ cho biết hàng này là

hàng diễn giải (chú thích) Khi dịch và chạy chương trình, dòng này

không được dịch và cũng không thi hành lệnh gì cả Mục đích của việc ghi chú này giúp chương trình rõ ràng hơn Sau này bạn đọc lại chương

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 71

BB

71

Dòng thứ 2: chứa phát biểu tiền xử lý #include <stdio.h> Vì trong

chương trình này ta sử dụng hàm thư viện của C là printf, do đó bạn cần phải có khai báo của hàm thư viện này để báo cho trình biên dịch C biết Nếu không khai báo chương trình sẽ báo lỗi.

Dòng thứ 3: hàng trắng viết ra với ý đồ làm cho bảng chương trình

thoáng, dễ đọc.

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 72

BB

Dòng thứ 4: void main(void) là thành phần chính của mọi chương trình

C (bạn có thể viết main() hoặc void main() hoặc main(void)) Tuy nhiên, bạn nên viết theo dạng void main(void) để chương trình rõ ràng hơn Mọi chương trình C đều bắt đầu thi hành từ hàm main Cặp dấu ngoặc () cho biết đây là khối hàm (function) Hàm void main(void) có từ khóa void đầu

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 73

BB

73

Dòng thứ 5 và 8: cặp dấu ngoặc móc {} giới hạn thân của hàm Thân

hàm bắt đầu bằng dấu { và kết thúc bằng dấu }.

Dòng thứ 6: printf("Bai hoc C dau tien.");, chỉ thị cho máy in ra chuỗi ký

tự nằm trong nháy kép ("") Hàng này được gọi là một câu lệnh, kết thúc một câu lệnh trong C phải là dấu chấm phẩy (;).

Dòng thứ 7: printf(“\n"); // con tro xuong 1 dong, cho con trỏ nhảy

xuống dòng kế tiếp để dễ theo dõi

1.5.2 Từ khóa, tên và tiếp cận các thành phần cơ bản thông qua ví dụ đơn giản

Trang 74

BÀI GIẢNG ĐIỆN TỬ SỐ 05

Trang 75

Câu 2: Nêu khái niệm hàm main()?

KIỂM TRA BÀI CŨ:

Trang 76

BB

Câu 1:

- Tất cả trình biên dịch C đều chứa một thư viện hàm chuẩn

- Một hàm được viết bởi lập trình viên có thể được đặt trong

thư viện và được dùng khi cần thiết

- Một số trình biên dịch cho phép thêm hàm vào thư viện

chuẩn

- Một số trình biên dịch yêu cầu tạo một thư viện riêng

TRẢ LỜI:

Trang 77

- Cho dù 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

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ố

TRẢ LỜI:

Trang 78

BB

Tiết này chúng ta sẽ học về: CÁC KIỂU DỮ LIỆU CƠ BẢN

Trang 79

2.1 CÁC KIỂU DỮ LIỆU

CƠ BẢN

CHƯƠNG 2: CÁC KIỂU DỮ LIỆU CƠ BẢN

- CÁC CẤU TRÚC ĐIỀU KHIỂN

Trang 80

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

 Kiểu số nguyên: Giá trị của nó là các số nguyên như 2912, -1706, …

 Kiểu số thực: Giá trị của nó là các số thực như 3.1415, 29.12, -17.06, …

 Kiểu luận lý: Giá trị đúng hoặc sai

 Kiểu ký tự: 256 ký tự trong bảng mã ASCII

Trang 83

BB

83

2.1.1 Kiểu số nguyên

 n bit không dấu: 0 … 2n – 1

Trang 84

BB 2.1.1 Kiểu số nguyên

Kiểu (Type)

Độ lớn (Byte)

Trang 86

BB 2.1.2 Kiểu số thực

• (*) Độ chính xác đơn (Single-precision) chính xác đến 7 số lẻ

Kiểu (Type)

Độ lớn (Byte)

Miền giá trị

(Range)

Trang 87

 C ngầm định một cách không tường minh:

• false (sai): giá trị 0

• true (đúng): giá trị khác 0, thường là 1

 C++: bool

Trang 89

 Tên kiểu: char

 Miền giá trị: 256 ký tự trong bảng mã ASCII

 Chính là kiểu số nguyên do:

• Lưu tất cả dữ liệu ở dạng số

• Không lưu trực tiếp ký tự mà chỉ lưu mã ASCII của ký tự đó

Trang 90

BB 2.1.4 Kiểu ký tự

 Lưu số 65 tương đương với ký tự 'A'…

 Lưu số 97 tương đương với ký tự 'a'

Trang 91

BÀI GIẢNG ĐIỆN TỬ SỐ 06

Trang 92

BB

Câu hỏi: Nêu đặc điểm về kiểu luận lý, cho ví dụ?

KIỂM TRA BÀI CŨ:

Trang 93

BB

93

- Đặc điểm

C ngầm định một cách không tường minh:

false (sai): giá trị 0 true (đúng): giá trị khác 0, thường là 1

Trang 95

2.2 PHÉP GÁN VÀ CÁC PHÉP

TOÁN SỐ HỌC

Trang 96

unsigned char dem;

float ketqua, delta;

2.2.1 Biến, hằng, câu lệnh và biểu thức

Trang 97

BB

97

a Biến

Phải khai báo biến trước khi sử dụng.

Trong C/ C++ có thể khai báo biến ở:

Ngoài hàm

Đầu hàm

Tham số hàm

Trong chương trình

Trang 101

 Câu lệnh đơn: chỉ gồm một câu lệnh.

 Câu lệnh phức (khối lệnh): gồm nhiều câu lệnh đơn được bao bởi { và}

Trang 103

 Tạo thành từ các toán tử (Operator) và các toán hạng (Operand).

 Toán tử tác động lên các giá trị của toán hạng và cho giá trị có kiểu

nhất định

Trang 105

BÀI GIẢNG ĐIỆN TỬ SỐ 07

Trang 106

BB

Câu hỏi: Nêu đặc điểm về kiểu ký tự, cho ví dụ?

KIỂM TRA BÀI CŨ:

Trang 107

Lưu số 65 tương đương với ký tự 'A'…

Lưu số 97 tương đương với ký tự 'a'

TRẢ LỜI:

Trang 108

BB

Tiết này chúng ta sẽ học về: TOÁN TỬ GÁN VÀ TOÁN

TỬ TOÁN HỌC

Trang 109

 Thường được sử dụng trong lập trình.

 Gán giá trị cho biến

a Toán tử gán

Trang 113

 Chỉ có một toán hạng trong biểu thức.

 ++ (tăng 1 đơn vị), (giảm 1 đơn vị)

Trang 116

BB b Các toán tử toán học

 Có hai toán hạng trong biểu thức

 +, –, *, /, % (chia lấy phần dư)

 x = x + y  x += y;

Trang 118

BÀI GIẢNG ĐIỆN TỬ SỐ 08

Trang 119

BB

119

Câu hỏi: Nêu khái niệm về toán tử 2 ngôi, cho ví dụ?

KIỂM TRA BÀI CŨ:

Trang 120

BB

- Toán tử 2 ngôi, có hai toán hạng trong biểu thức

 +, –, *, /, % (chia lấy phần dư)

Trang 121

BB

121

Tiết này chúng ta sẽ học về: CÁC TOÁN TỬ TRÊN BIT,

CÁC TOÁN TỬ QUAN HỆ, CÁC TOÁN TỬ LUẬN LÝ, TOÁN TỬ ĐIỀU KIỆN VÀ TOÁN TỬ PHẨY

Trang 122

BB 2.2.3 Các toán tử trên bit

Các toán tử trên bit

 Tác động lên các bit của toán hạng (nguyên)

 & (and), | (or), ^ (xor), ~ (not hay lấy số bù 1)

 >> (shift right), << (shift left)

 Toán tử gộp: &=, |=, ^=, ~=, >>=, <<=

Trang 126

BB 2.2.4 Các toán tử quan hệ

 So sánh 2 biểu thức với nhau

 Cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay true nếu đúng)

 ==, >, >=, <, <=, !=

Trang 128

BB 2.2.5 Các toán tử luận lý

 Tổ hợp nhiều biểu thức quan hệ với nhau

 && (and), || (or), ! (not)

Trang 130

BB 2.2.6 Toán tử điều kiện

 Đây là toán tử 3 ngôi (gồm có 3 toán hạng)

 <biểu thức 1> ? <biểu thức 2> : <biểu thức 3>

• <biểu thức 1> đúng thì giá trị là <biểu thức 2>

• <biểu thức 1> sai thì giá trị là <biểu thức 3>

Trang 132

BB 2.2.7 Toán tử phẩy

 Các biểu thức đặt cách nhau bằng dấu ,

 Các biểu thức con lần lượt được tính từ trái sang phải

 Biểu thức mới nhận được là giá trị của biểu thức bên phải cùng

Trang 134

BÀI GIẢNG ĐIỆN TỬ SỐ 09

Trang 135

BB

135

Câu hỏi: Nêu khái niệm các toán tử trên bit?

KIỂM TRA BÀI CŨ:

Trang 136

 & (and), | (or), ^ (xor), ~ (not hay lấy số bù 1)

 >> (shift right), << (shift left)

 Toán tử gộp: &=, |=, ^=, ~=, >>=, <<=

TRẢ LỜI:

Trang 138

BB 2.2.8 Độ ưu tiên của các toán tử

() [] ->

! ++ - + * (cast) & sizeof

* / %+ -

Trang 139

BB

139

2.2.8 Độ ưu tiên của các toán tử

Trang 140

BB 2.2.8 Độ ưu tiên của các toán tử

 Thực hiện biểu thức trong ( ) sâu nhất trước

 Thực hiện theo thứ tự ưu tiên các toán tử

 => Tự chủ động thêm ( )

Trang 143

• Văn bản thường (literal text)

• Ký tự điều khiển (escape sequence)

• Đặc tả (conversion specifier)

Trang 144

BB a Xuất dữ liệu ra màn hình

 Được xuất y hệt như lúc gõ trong xâu định dạng

 Xuất xâu Hello World

 printf("Hello "); printf("World");

 printf("Hello World");

 Xuất xâu

Trang 145

BB

145

 Gồm dấu \ và một ký tự như trong bảng sau:

Ký tự điều khiển Ý nghĩa

Trang 147

 Xác định kiểu của biến/giá trị muốn xuất.

 Các đối số chính là các biến/giá trị muốn xuất, được liệt kê theo thứ tự cách nhau dấu phẩy

a Xuất dữ liệu ra màn hình

Trang 148

Số nguyên không dấu

charint, short, longfloat, doublechar[], char*

unsigned int/short/long

a Xuất dữ liệu ra màn hình

Trang 152

BB

 int a = 1, b = 2;

 Xuất 1 cong 2 bang 3 và xuống dòng

• printf("%d", a); // Xuất giá trị của biến a

• printf(" cong "); // Xuất xâu " cong "

• printf("%d", b); // Xuất giá trị của biến b

a Xuất dữ liệu ra màn hình

Ngày đăng: 19/10/2019, 21:51

TỪ KHÓA LIÊN QUAN