1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo án - Bài giảng: BÀI GIẢNG MÔN KỸ THUẬT LẬP TRÌNH (C++)

73 1,1K 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

Tiêu đề Bài giảng môn kỹ thuật lập trình (C++)
Tác giả ThS Về NHẬT VINH, ThS Vừ Nhật Vinh
Người hướng dẫn ThS Về NHẬT VINH
Trường học Đại học Mở TP.Hồ Chí Minh
Chuyên ngành Kỹ thuật Lập trình
Thể loại Bài giảng
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 73
Dung lượng 1,21 MB

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

Nội dung

KHÁI QUÁT M Ả NG NHI Ề U CHI Ề U• ðể biểu diễn dãy các giá trị, ta dùng mảng 1 chiều, • ðể biểu diễn bảng các giá trị, ta dùng mảng 2 chiều, • ðể biểu diễn khối các giá trị, ta dùng mảng

Trang 1

ThS VÕ NHẬT VINH

Trang 6

QUY ðỊ NH CA GING VIÊN

Trang 9

GII THIU MNG 2 CHIU

• ðể lưu trữ dữ liệu theo 1 hàng dọc hoặc hàng

ngang, ta dùng mảng (xem Cơ slp trình),

• ðể lưu trữ kết quả ñược sắp xếp theo cả chiều

ngang và chiều dọc, ta sẽ dùng mảng 2 chiều

Trang 10

KHAI BÁO MNG 2 CHIU

• Khai báo mảng cần 3 thông tin:

Trang 12

• Ví dụ: xét mảng ñược khai báo int A[50][60]

Trang 13

• Có thể khởi tạo giá trị của mảng ngay từ lúc khai

báo mảng bằng cách liệt kê các giá trị của các phần

tử: int A[2][3] = {{1, 2, 3},

{2, 3, 4}}

Nếu liệt kê không ñầy ñủ thì giá trị các phần tử còn

lại mặc ñịnh là 0

Trang 14

KHÁI QUÁT MNG NHIU CHIU

• ðể biểu diễn dãy các giá trị, ta dùng mảng 1 chiều,

• ðể biểu diễn bảng các giá trị, ta dùng mảng 2 chiều,

• ðể biểu diễn khối các giá trị, ta dùng mảng 3 chiều,

• …

• Ta sẽ có thể mảng nhiều chiều (2 chiều, 3 chiều…)

ñể biểu diễn các phần tử liên tiếp nhau trong bộ nhớ,

cùng kiu dliu, cùng tên theo một cách sắp xếpkhông gian nào ñó,

Trang 16

TÓM TT

• Mảng dùng ñể một loạt các phần tử liên tiếp, cùng

kiu dliucùng tên,

• Tùy theo cách sp xếp không gian của các phần tử

liên tiếp mà ta có mảng 1 chiều, 2 chiều, 3 chiều,…

• Khi khai báo ta cần các thông tin: kiu dữ liệu, tên

mảng và kích thước mảng (số lượng kích thước tùytheo số chiều của mảng),

• Khi truy xuất, cần gọi ñúng tên mảng, vị trí của phần

Trang 17

ThS VÕ NHẬT VINH

Trang 18

TNG QUAN

• Hạn chế của bộ nhớ tĩnh,

• Giới thiệu con trỏ:

– Khái quát v ề con tr ỏ ,

– Khai báo con tr ỏ ,

– Kh ở i t ạ o và h ủ y b ỏ con tr ỏ ,

– Truy xu ấ t vùng nh ớ và giá tr ị l ư u trong vùng nh ớ ,

• Ứng dụng con trỏ cho mảng một chiều,

• Tóm tắt

Trang 19

HN CHCA BNHT Ĩ NH

• Dữ liệu phải lưu vào vùng nhớ ñã ñược khai báo

trước trong chương trình,

• Chương trình khi nhận ñược sự khai báo sẽ dành

hẳn 1 vùng nhớ tương ứng ñể chờ ñợi dữ liệu,

• Trong quá trình tính toán, dữ liệu ít hơn dự kiến thì

không thể yêu cầu chương trình ct bt vùng nhớ,

• Nếu dliu nhiu hơn dự kiến thì cũng không th

yêu cầu chương trình tăng thêm vùng nhớ,

• Ví dụ: khai báo mảng 10 phần tử nhưng có lúc chỉ

cần dùng 7 phần tử hoặc cần dùng 15 phần tử?

Trang 20

KHÁI QUÁT VCON TR

Trang 21

KHAI BÁO CON TR

• Biến con trỏ cũng phải ñược khai báo trước khi sử

Trang 22

KHAI BÁO CON TR(tt)

• Cú pháp: kiu_d_liu * tên_biến_con_tr

• Ví dụ: int * Con_tro;

– Ngh ĩ a là: bi ế n Con_tro s ẽ ch ỉ ñế n 1 vùng nh ớ mà vùng

nh ớ này s ẽ ch ứ a m ộ t giá tr ị s ố ki ể u int

– Giá tr ị c ủ a bi ế n Con_tro là ñị a ch ỉ vùng nh ớ ñ ang ñượ c

ch ỉ ñế n.

Trang 23

KHI TO VÀ HY BCON TR

• Khác với các biến thông thường, sau khi khai báo,

biến con trỏ vẫn chưa sử dụng ñể truy xuất ñược

phi khi to, nghĩa là chrõ vùng nhớ mà nó

trỏ ñến Có 2 cách:

• Gán con trỏ tới vùng nhớ ñã ñược cấp sẵn,

Vd:int * con_tro; int i; //vùng nhca i ñã ñược cp

con_tro = &i; // con_tro chti vùng nhớ ñã có

• Yêu cầu xin cấp vùng nhớ mới cho con trỏ:

Vd: int * con_tro; con_tro = new (int);

Trang 25

– Truy xu ấ t giá tr ị : * con_tro

– Truy xu ấ t ñị a ch ỉ : con_tro

Trang 26

TRUY XUT VÙNG NHVÀ GIÁ TR(tt)

• Ví dụ:

int i; int * con_tro;

truy xut giá tr// *con_tro = i; // giá trca i truy xut ñịa ch// con_tro = &i; // ñịa chca i

Trang 27

NG DNG CON TRCHO MNG

• Con trỏ ñược dùng ñể truy xuất mảng:

– Khai báo m ả ng: int Mang[10];

– Khai báo con tr ỏ : int * con_tro;

– Con tr ỏ ch ỉ ñế n m ả ng: con_tro = & Mang[0];

– Dùng con tr ỏ truy xu ấ t m ả ng:Mang[0]  *con_tro

Mang[1]  *(con_tro+1) Mang[n]  *(con_tro+n)

Trang 28

NG DNG CON TRCHO MNG (tt)

• Con trỏ thay thế hoàn toàn mảng:

– Khai báo con tr ỏ : int * con_tro;

– M ả ng t ạ o b ở i con tr ỏ : con_tro = new int[10];

– Truy xu ấ t giá tr ị m ả ng: * (con_tro+0) hoc con_tro[0]

* (con_tro+1) hoc con_tro[1]

Trang 29

TÓM TT

• Con trỏ là biến sử dụng bộ nhớ ñộng, khắc phục hạn

chế của bộ nhớ tĩnh về cấp phát bộ nhớ khi cần thiết/ không cần thiết,

• Con trỏ lưu ñịa chỉ vùng nhớ tương ứng của nó,

• Kiểu dữ liệu của con trỏ là kiểu dữ liệu của giá trị

ñang lưu trong vùng nhớ tương ứng của con trỏ,

• Con trỏ có thể chỉ ñến vùng nhớ tĩnh ñã ñược tạo ra

trước ñó hoặc tạo mới với new và xóa bỏ với delete,

• Con trỏ có thể trỏ ñến mảng hoặc thay thế cho mảng

Trang 30

CHUI KÝ T

ThS VÕ NHẬT VINH

Trang 31

TNG QUAN

• Nhắc lại về mảng và con trỏ,

• Giới thiệu chuỗi ký tự:

– Khái quát chu ỗ i ký t ự ,

– Khai báo chu ỗ i ký t ự ,

Trang 33

GII THIU VCHUI KÝ T

• Khaí quát chuỗi ký tự:

– T ậ p h ợ p các ký t ự ñượ c x ế p liên ti ế p nhau trong b ộ

nh ớ và có ký hi ệ u ñặ c bi ệ t k ế t thúc ở cu ố i,

– Có th ể s ử d ụ ng m ả ng, con tr ỏ ñể l ư u tr ữ chu ỗ i ký t ự , – Visual C++ cho phép có m ộ t s ố tác ñộ ng khác lên

chu ỗ i so v ớ i m ả ng ký t ự ,

• Khai báo chuỗi ký tự:

– Chu ỗ i ký t ự s ử d ụ ng m ả ng,

– Chu ỗ i ký t ự s ử d ụ ng con tr ỏ ,

Trang 34

GII THIU VCHUI KÝ T(2)

• Khai báo chuỗi ký tự:

Cn khai báo thư vin các hàm xlý chui và

vùng nhớ ñể np chui ký t.

#include <string.h> using namespace std;

– Chu ỗ i ký t ự s ử d ụ ng m ả ng:

• Khai báo tên, kích th ướ c, ki ể u d ữ li ệ u ký t ự ,

• Kích th ướ c là ñộ dài t ố i ñ a c ủ a chu ỗ i và ký t ự ñặ c bi ệ t k ế t thúc chu ỗ i,

• Trong Visual C++: char tên_mng [kích_thước];

– Chu ỗ i ký t ự s ử d ụ ng con tr ỏ :

Trang 35

char tên_mng [kích_thước] = “chui_ký_t”;

char tên_mng[ ] = {‘kytu1’, ‘kytu2’,’kytu3’,’\0’};

char * tên_con_tr= “chui_ký_t”;

• VC++ h ỗ tr ợ c ấ p m ộ t vùng nh ớ cho chu ỗ i ký t ự h ằ ng,

– Sau khi khai báo:

• Chu ỗ i dùng con tr ỏ : có th ể gán tr ự c ti ế p chu ỗ i h ằ ng (sau khi

kh ở i t ạ o b ằ ng new),

• Chu ỗ i dùng m ả ng: ph ả i gán t ừ ng ph ầ n t ử c ủ a m ả ng.

Trang 36

– Truy xu ấ t t ừ ng ph ầ n t ử c ủ a chu ỗ i: gi ố ng nh ư truy

xu ấ t m ả ng và con tr ỏ thông th ườ ng.

Trang 37

MT SHÀM X Ử LÝ VĂN BẢ N

• Kích thước: size(), strlen()

• Nối hai chuỗi: strcat(), strncat()

• Thay ñổi nội dung của chuỗi bằng chuỗi khác:

strcpy(), strncpy()

• ðịnh vị một ký tự trong chuỗi: strchr()

• Lưu ý:

– Gán tr ự c ti ế p m ộ t chu ỗ i h ằ ng cho m ộ t chu ỗ i b ằ ng con

tr ỏ : con tr ỏ ñượ c liên h ế t v ớ i vùng nh ớ ñ ang ch ứ a

chu ỗ i h ằ ng,

– Nên s ử d ụ ng strcpy() thay phép gán.

Trang 38

• Việc nhập/ xuất dữ liệu thông qua tập tin (file) sẽ

giúp ta giải quyết vấn ñề trên

Trang 39

• Một số hàm hỗ trợ xử lý văn bản,

• Lưu ý việc gán giá trị chuỗi cho chuỗi ký tự,

• Tập tin sẽ tạo thuận tiện cho việc nhập/ xuất

Trang 40

CH ƯƠ NG 4 (Tp tin và lung)

ThS Võ Nht Vinh

Trang 42

dụng sau này,

Trang 43

GII THIU TP TIN

• Tập tin dùng ñể lưu trữ dữ liệu trên ổ ñĩa, có thểñược truy xuất nhiều lần và lâu dài,

• Tập tin sắp xếp các dữ liệu theo tuần tự, muốntruy xuất 1 dữ liệu nào ñó thì phải truy xuất lần

lượt các dữ liệu ñược xếp trước ñó,

• Sau dữ liệu cuối cùng trong tập tin là ký hiệu kếtthúc tập tin

Trang 44

• ðối tượng (object) là giá trị có thể ñược tạo, lưu

trữ và thao tác trong một ngôn ngữ lập trình,

• Mọi ñối tượng phải thuộc 1 lớp nào ñó

– VD: ðố i t ượ ng T7B2 thu ộ c l ớ p lp_ðH_M

Trang 45

TRUY XUT TP TIN

• Các lớp và ñối tượng trong VC++:

– Bi ể u di ễ n các lu ồ ng xu ấ t nh ậ p t ừ bàn phím và ra màn hình:

• ðố i t ượ ng cin c ủ a iostream k ế t n ố i v ớ i bàn phím,

• ðố i t ượ ng cout c ủ a iostream k ế t n ố i v ớ i màn hình,

– Bi ể u di ễ n các lu ồ ng xu ấ t nh ậ p t ừ t ậ p tin:

• ðố i t ượ ng c ủ a ifstream k ế t n ố i d ữ li ệ u ñọ c t ừ t ậ p tin,

• ðố i t ượ ng c ủ a ofstream k ế t n ố i d ữ li ệ u ghi vào t ậ p tin,

• Các l ớ p này n ằ m trong th ư vi ệ n fstream.h

Trang 47

ofstream ñối_tượng_xut;

ñối_tượng_xut open (“tên_tp_tin”);

ñối_tượng_xut << n;

ñối_tượng_xut close() ;

Trang 48

– Các thao tác cho cincout có th ể ñượ c s ử d ụ ng

cho các ñố i t ượ ng xu ấ t nh ậ p b ằ ng t ậ p tin,

– Vd: các toán t ử và hàm <<, >>, getline() v ẫ n ñượ c

Trang 50

TÓM TT

• Nhập/ghi dữ liệu qua tập tin tiện lợi hơn, tập tin

lưu dữ liệu theo kiểu tuần tự,

• Lớp giống như một kiểu dữ liệu ñược tạo ra và

ñối tượng là một giá trị ñược tạo ra – lưu trữ

-thao tác ðối tượng phải thuộc 1 lớp nào ñó,

• Việc nhập/ghi dữ liệu qua tập tin theo các bước:

mở tập tin, nhập/ghi dữ liệu, ñóng tập tin,

• Sử dụng ñối tượng nhập thuộc ifstream, ñối

tượng xuất thuộc ofstream ñể ñọc/ghi tập tin,

Trang 51

CH ƯƠ NG 5 ( ðệ quy)

ThS Võ Nht Vinh

Trang 53

– G ọ i hàm luy_thua(n) s ẽ cho giá tr ị 2 n ,

– G ọ i hàm luy_thua(n-1) s ẽ cho giá tr ị 2 n-1 ,

– Có th ể vi ế t l ạ i: luy_thua(n) = 2 x luy_thua(n-1),

• Có thể giải một số bài toán bằng phương pháp

“gọi lại chính nó”

Trang 55

GII THIU ðỆ QUY

• Phần chính của ñệ quy:

– Tính toán k ế t qu ả c ầ n tr ả ra d ự a trên k ế t qu ả c ủ a l ầ n tính toán tr ướ c (xem nh ư ñ ã bi ế t),

– L ư u ý s ự thay ñổ i c ủ a tham s ố ,

– Vd: v ớ i luy_thua(n) ta s ẽ return 2 * luy_thua (n-1).

Trang 56

GII THIU ðỆ QUY

• ðiều kiện dừng của ñệ quy:

– Tham s ố c ủ a l ờ i g ọ i ñệ quy s ẽ thay ñổ i,

– Tham s ố ph ả i thay ñổ i và ph ả i h ộ i t ụ v ề 1 giá tr ị ñượ c xác ñị nh tr ướ c,

– Khi tham s ố ñạ t ñượ c giá tr ị h ộ i t ụ ñ ó, m ộ t k ế t qu ả

xác ñị nh tr ướ c ph ả i ñượ c tr ả ra và không th ự c hi ệ n

l ờ i g ọ i ñệ quy n ữ a,

– Vd:

• luy_thua(n) s ẽ cho return 2*luy_thua(n-1),

Trang 58

MRNG VN ðỀ

• Các kiểu dữ liệu cơ bản ñược cung cấp sẵn

không ñủ ñể biểu diễn các dữ liệu trong thực tế,

• Ta có thể tạo “kiểu dữ liệu” mới gọi là “lớp” vớicác giá trị cụ thể “ñối tượng” ñể quản lý chươngtrình dễ hơn,

• Lập trình hướng ñối tượng (OOP) sẽ sử dụng

ñối tượng và lớp,

• Chương 6 sẽ ñề cập ñến vấn ñề này

Trang 60

CH ƯƠ NG 6

(Lp)

ThS Võ Nht Vinh

Trang 62

ðẶ T VN ðỀ

• Có những ñối tượng trong cuộc sống mà ta cầnmiêu tả chúng,

• Một ñối tượng có nhiều khía cạnh cần ñược miêu

Trang 63

kiểu_dữ_liệu_1 biến_1;

kiểu_dữ_liệu_2 biến_2;

kiểu_dữ_liệu_3 biến_3;

}

Trang 64

XÂY DNG KIU DLIU STRUCT (2)

• Khai báo một “biến” thuộc kiểu dữ liệu vừa tạo

ra: ten_kieu tên_biến;

• Truy xuất thuộc tính:

– Các bi ế n d ữ li ệ u bên trong ki ể u d ữ li ệ u m ớ i ñượ c g ọ i

là các “thu ộ c tính”,

– S ử d ụ ng toán t ử d ấ u ch ấ m (bi ế n thông th ườ ng) và

toán t ử m ũ i tên (bi ế n con tr ỏ ) ñể truy xu ấ t các “thu ộ c

tính”.

Trang 65

– Khai báo “bi ế n” MyBook ki ể u Books: Books MyBook ;

– Truy xu ấ t các thu ộ c tính c ủ a MyBook:

MyBook nam_xuat_ban

MyBook gia_tien

Trang 66

XÂY DNG LP

• Lp (Class) cũng có thể ñược xem là kiểu dữ liệu

ñược người dùng ñịnh nghĩa giống như struct

nhưng ngoài các thuộc tính, nó còn chứa những

cách thc tác ñộng lên dữ liệu của nó (hàm),

• Lớp có thể hiểu là tp hp nhng ñối tượng giốngnhau mà ta cần miêu tả,

• Lớp cho phép che các dữ liệu của nó khi nhìn từ

bên ngoài

Trang 67

// khai báo các bi ế n // khai báo các ph ươ ng th ứ c (hàm)

}

Trang 68

XÂY DNG LP (3)

• Xây dựng các phương thức của lớp:

– Ph ươ ng th ứ c ñặ c bi ệ t kh ở i t ạ o dùng ñể kh ở i t ạ o các giá tr ị ban ñầ u cho d ữ li ệ u c ủ a ñố i t ượ ng Ph ươ ng

th ứ c kh ở i t ạ o cùng tên v ớ i tên l ớ p và không tr ả tr ị

Các giá tr ị c ủ a d ữ li ệ u KHÔNG th ể ñượ c kh ở i t ạ o lúc khai báo,

– Ph ầ n ñị nh ngh ĩ a c ủ a các ph ươ ng th ứ c (hàm thành

viên) có th ể ñượ c ñặ t trong ho ặ c ngoài ph ầ n ñị nh

ngh ĩ a l ớ p N ế u ñặ t ngoài, tr ướ c tên hàm ph ả i có tên

Trang 70

XÂY DNG LP (5)

• Truy xuất thuộc tính, phương thức:

– Truy xu ấ t gi ố ng nh ư trong tr ườ ng h ợ p struct,

Trang 71

• L ớ p phan_so ñượ c ñị nh ngh ĩ a ñể th ể hi ệ n m ộ t phân s ố ,

• Làm sao ñể th ự c hi ệ n phép toán + gi ữ a 2 ñố i t ượ ng

phan_so?

Trang 72

MRNG VN ðỀ

• Các toán tử nạp chồng rất cần thiết cho việc

thao tác trên các ñối tượng của lớp,

• Các toán tử nạp chồng cơ bản bao gồm: nhập,

xuất, toán tử 1 ngôi, toán tử 2 ngôi,

• Phần sau của chương này sẽ trình bày thêm về

cách thức xây dựng các toán tử nạp chồng nóitrên

Ngày đăng: 16/04/2014, 15:18

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w