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

Bài giảng môn học Kỹ thuật lập trình C: Chương 2 - Đại học Kinh tế Luật

55 84 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 55
Dung lượng 1,13 MB

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

Nội dung

Bài giảng Kỹ thuật lập trình C - Chương 2: Xử lý mảng và chuỗi cung cấp cho người học các kiến thức: Mảng, các thao tác trên mảng, chuỗi, các thao tác trên chuỗi. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.

Trang 1

Chương 2

Trang 3

M ng

v Là  t p  h p  nhi u  ph n  t   có  cùng  ki u  d   ậ ợ ề ầ ử ể ữ

li u ệ

v S  ph n t  trong m ng đ ố ầ ử ả ượ c xác đ nh tr ị ướ c

v M i ph n t  đ ỗ ầ ử ượ c đánh s  ch  m c, b t đ u  ố ỉ ụ ắ ầ

t  0 ừ

Trang 8

v S  giá tr  trong d u ngo c ph i b ng s   ố ị ấ ặ ả ằ ố

Trang 16

Đ o M ngả ả

Phương  th c ứ Reverse  cua  l p ̉ ớ Array  th c  hiên  viêc ự ̣ ̣đao th  t  ca c phâ n t  trong mang. Cu  pha p th c ̉ ư ự́ ́ ̀ ử ̉ ́ ́ ựhiên: ̣

int[] mang = { 15, 26, 7, 28, 19, 6 }; 

Array.Reverse(mang); 

K t qu : ế ả

mang = { 6,19,28,7,26,15}; 

Trang 17

S p x p M ngắ ế ả

Phương th c ứ Sort() cua l p ̉ ớ Array th c hiên viêc să p ự ̣ ̣ ́

xê p ca c phâ n t  trong mang. Cu  pha p th c hiên: ́ ́ ̀ ử ̉ ́ ́ ự ̣

Trang 18

Tìm ki m trên M ngế ả

0 2 5 6 7 8 9

5 2 9 7 6 0 8

9 8 7 6 5 2 0

Trang 19

Tìm ki m trên M ngế ả

Ph ươ ng th c  ư ́ BinarySearch cua l p  ̉ ơ ́ Array th c  ự hiên viêc ti m kiê m môt gia  tri trong môt mang  ̣ ̣ ̀ ́ ̣ ́ ̣ ̣ ̉

đa   đ ̃ ượ c  să p  xê p  tr ́ ́ ươ ́ c,  tra  vê   kê t  qua  la   ̉ ̀ ́ ̉ ̀

sô  nguyên cho biê t chi sô  index cua phâ n t   ́ ́ ̉ ́ ̉ ̀ ử

ti m đ ̀ ượ c ,  nê u không ti m đ ́ ̀ ượ c thi  tra vê  ­1 ̀ ̉ ̀  

Cu  pha p th c hiên:  ́ ́ ự ̣

Trang 21

Tìm ki m trên M ng ch a s p x pế ả ư ắ ế

v Gi i pháp 1: ả  S p x p m ng tr ắ ế ả ướ c, sau đó g i  ọ hàm  tìm  ki m  nh   phân(đ n  gi n,  tuy  nhiên  ế ị ơ ả

gi i thu t tìm ki m tuy n tính ả ậ ế ế

Trang 22

Tìm ki m trên M ng ch a s p x pế ả ư ắ ế

v Gi i thu t tìm ki m tuy n tính ả ậ ế ế

Xét ph n t  t  đ u cho đ n cu i m t cách tu n tầ ử ừ ầ ế ố ộ ầ ự

T i  v   trí  thạ ị ứ  i  n u  giá  tr   trong  d   li u  đúng  v i ế ị ữ ệ ớ

khoá c n tìm ki m ­> tìm th y. N u không đúng tìm ầ ế ấ ế

đ n ph n t  k  ti p ế ầ ử ế ế i+1

N u sau khi xét h t N ph n t  mà không có giá tr  ế ế ầ ử ị

khoá c n tìm ầ  không tìm th yấ

Trang 23

Tìm ki m trên M ng ch a s p x pế ả ư ắ ế

v Gi i thu t tìm ki m tuy n tính ả ậ ế ế

• Bước 1: i = 0; // b t đ u t  ph n t  đ u tiên c a dãyắ ầ ừ ầ ử ầ ủ

•   Bước 2: So sánh a[i] v i x, có 2 kh  năng :ớ ả

•   + a[i] = x : Tìm th y. D ngấ ừ

•   + a[i] ≠ x : Sang Bước 3

•   Bước 3 : i = i+1; // xét ti p ph n t  k  trong m ngế ầ ử ế ả

•   N u i = N: H t m ng,không tìm th y.D ngế ế ả ấ ừ

•   Ngượ ạc l i: L p l i Bặ ạ ước 2. 

Trang 24

Tìm ki m trên M ng ch a s p x pế ả ư ắ ế

v Gi i thu t tìm ki m tuy n tính ả ậ ế ế

int TimKiem( int x){

for (int i=0; i<N;i++) {

  if (a[i]==x) return i ; // a[i] là ph n t  có khoá x ầ ử

};

return ­1;// tìm h t m ng nh ng không có x ế ả ư

}

Trang 25

Tìm ki m trên M ng ch a s p x pế ả ư ắ ế

Trang 26

Tìm ki m trên M ng ch a s p x pế ả ư ắ ế

Trang 27

Ø C#  h   tr   m ng  đa  chi u,    đây  ta  xét  m ng  2 ỗ ợ ả ề ở ả

chi u vì nó ph  bi n nh t.ề ổ ế ấ

Ø M ng  hai  chi u  th c  ch t  là  m ng  c a  nh ng ả ề ự ấ ả ủ ữ

m ng m t chi u. Ta có th  xem m ng hai chi u là ả ộ ề ể ả ề

m t ma tr n g m các hàng và các c tộ ậ ồ ộ

Trang 29

M ng đa chi uả ề

Ø Cú pháp khai báo:

Kiêu_d _liêủ ữ ̣ [ , ] mang = 

new Kiêu_d _liêủ ữ ̣  [so_hang, so_cot];

Ø Ví d :ụ

T o m ng 2 chi u có 3 dòng 5 c t:ạ ả ề ộ

int[ , ] mang = new int[3, 5];

Ø Đê  truy  câp  phâ n  t   trong  mang  hai  chiê u,  ta  s  ̉ ̣ ̀ ử ̉ ̀ ử

dung index dang̣ ̣  tenMang [ vi tri  do ng ̣ ́ ̀ ,  vi tri  côt ̣ ́ ̣ ]. 

Trang 30

M ng đa chi uả ề

int soDong = 3;

int soCot = 4;

int[,] mang = new int[soDong, soCot];

for(int i = 0; i < soDong; i++)

Trang 31

M ng đa chi uả ề

Ø Ngoài ra có th  duy t b ng cách sau:ể ệ ằ

for (int i = 0; i < mang.GetLength(0); i++)

Trang 32

Đánh giá m ng

Ø Ưu đi m chính c a m ng:ể ủ ả

o Truy su t nhanh, d  s  d ng v i t p d  li u c  ấ ễ ử ụ ớ ậ ữ ệ ố

đ nh không thay đ i trong quá trình th c thiị ổ ự

Ø H n ch  c a m ng:ạ ế ủ ả

o M ng  có  kích  c   và  s   chi u  c   đ nh  nên  khó ả ỡ ố ề ố ị

khăn trong vi c m  r ng  ng d ng.ệ ở ộ ứ ụ

o Các  ph n  t   đầ ử ược  đ t  và  tham  chi u  m t  cách ặ ế ộ

liên ti p nhau trong b  nh  nên khó khăn cho vi c ế ộ ớ ệxóa m t ph n t  ra kh i m ng.ộ ầ ử ỏ ả

Trang 33

X  lý H n ch  c a m ngử ạ ế ủ ả

Ø S  d ng collections:ử ụ

    List,  ArrayList,  Dictionary…  đ   thay  th   cho ể ế

m ng khi thao tác trên t p d  li u có thay đ i trong ả ậ ữ ệ ổquá trình th c thi (Thay đ i giá tr , thay đ i s  lự ổ ị ổ ố ượng, thay đ i v  trí các ph n t …)ổ ị ầ ử

v Các collection này r t d  s  d ng và có kh  năng ấ ễ ử ụ ả

t   “co  giãn”  theo  s   thay  đ i  c a  d   li u  trong ự ự ổ ủ ữ ệquá trình th c thi.ự

Trang 36

Chuy n đ i ki u ký tể ổ ể ự

t ự

§ char ch1 = Convert.ToChar("a"); // ch1 = ‘a’ 

§ char ch1 = Convert.ToChar("aa");  // báo l iỗ

Trang 38

So sánh ki u ký tể ự

§ True: n u 2 ký t  b ng nhauế ự ằ

§ False: n u 2 ký t  không b ng nhauế ự ằ

char ch1 = 'A';

char ch2 = (char)65;

char ch3 = 'B';

Console.WriteLine(ch1.Equals(ch2)); //K t qu  ‘True’ ế ả

Console.WriteLine(ch1.Equals(ch3)); //K t qu  ‘False’ ế ả

Trang 39

Ki m tra ký tể ự

Trang 40

Ki m tra ký tể ự

vConsole.WriteLine(Char.IsDigit('1')); //True

vConsole.WriteLine(Char.IsDigit('½')); //False

vConsole.WriteLine(Char.IsNumber('½')); //True

vConsole.WriteLine(Char.IsNumber('2')); //True

vConsole.WriteLine(Char.IsLetter('1')); //False

vConsole.WriteLine(Char.IsLower('A')); //False

vConsole.WriteLine(Char.IsUpper('a')); //False

vConsole.WriteLine(Char.IsWhiteSpace('  ')); //True

Trang 45

N i dung ộ  : So sánh chu i đang xét v i chu i  ỗ ớ ỗ value. Tr  v  0 ả ề

n u hai chu i b ng nhau, 1 n u l n h n và ­1 n u nh  h n ế ỗ ằ ế ớ ơ ế ỏ ơ

  bool  i;

       // Tr  v  True ả ề

        i = s.Constains( "lo" );

Trang 46

N i dung ộ  : Copy count ký t  b t đ u t  v  trí ự ắ ầ ừ ị sourceIndex 

trong chu i vào m ng ký t   ỗ ả ự destination b t đ u t i v  trí ắ ầ ạ ị

destinationIndex.

Ví dụ :

 string  s =  "hello" ;   char [] ch =  new   char [5];

 ch[0] =  'a' ;  ch[1] =  'b' ;  s.CopyTo(1, ch, 2, 3);

 // Tr  v  m ng ký t  ch là "abell" ả ề ả ự   Console WriteLine(ch);

Trang 47

N i dung ộ  : Tr  v  chu i đ ả ề ỗ ượ c xây d ng t  chu i  ự ừ ỗ FormatStr b ng cách thay 

th  các v  trí {<value i>:<ki u format>} trong  ế ị ể FormatStr thành các giá tr  ị value1, value2, … tươ ng  ng ứ

Trang 48

Các hàm x  lý Chu iử ỗ

bool  Equals(  string  

value)  N i dungvalue, ngộ ượ ạ ả ề : Tr  v  True n u chu i đang xét b ng v i chu i c l i tr  v  False.ả ề ế ỗ ằ ớ ỗ

N i dung ộ  : Tr  v  chu i m i đ ả ề ỗ ớ ượ c xây d ng t  chu i ban đ u  ự ừ ỗ ầ

b ng cách chèn vào chu i ban đ u t i v  trí  ằ ỗ ầ ạ ị startIndex chu i 

con value.

Ví dụ :         string  s =  "Hello !" ;        string  val =  "everybody" ;        //Tr  v  "Helloeverybody !" ả ề

Trang 49

N i dung ộ  : Tr  v  v  trí xu t hi n đ u tiên c a ký t  ho c chu i  ả ề ị ấ ệ ầ ủ ự ặ ỗ

value trong chu i k  t  v  trí ỗ ể ừ ị startIndex. Tr  v  ­1 n u không tìm ả ề ế

th y ấ

Ví dụ :        string  s =  "Hello everybody !" ;        int  i = 0;

g  value,  int  startIndex) 

N i dung ộ  : T ươ ng t  hàm IndexOf, nh ng tr  v  v  trí xu t hi n  ự ư ả ề ị ấ ệ

cu i cùng ố

Trang 50

Các hàm x  lý Chu iử ỗ

string  PadLeft(  int  

width)  N i dung ộ  : Tr  v  chu i đã đ ả ề ỗ ượ c canh l  trái. Thao tác canh  ề

l  nh  sau: t o chu i m i g m  ề ư ạ ỗ ớ ồ width ký t , đ t chu i ban ự ặ ỗ

đ u vào bên ph i chu i m i, các ký t  kho ng tr ng s   ầ ả ỗ ớ ự ả ắ ẽ

đ ượ c chen vào các v  trí còn tr ng bên trái trong chu i m i ị ố ỗ ớ

Ví dụ :

string  s =  "Hello!" ;

string  s_leftaligned;

// Tr  v  chu i "    Hello!" ả ề ỗ s_leftaligned = s.PadLeft(10);      

Console WriteLine(s_leftaligned);

string  PadLeft(  int  

width,  char  ch)  N i dung ộ  : T ươ ng t  hàm PadLeft   trên, nh ng thay vì s   ự ở ư ử

Trang 51

Các hàm x  lý Chu iử ỗ

string  PadRight(  int  width)  N i dung ộ  : T ươ ng t  hàm PadLeft, nh ng canh l  ph i ự ư ề ả

string  PadRight(  int  width, 

char  ch)  N i dungộ  : Tương t  hàm PadLeft, nh ng canh l  ph i.ự ư ề ả

string  Remove(  int  

startIndex,  int  count)  N i dung ộ  : Tr  v  chu i đ ả ề ỗ ượ c xây d ng b ng cách b  đi  ự ằ ỏ

trong chu i ban đ u  ỗ ầ count ký t  b t đ u t  v  trí ự ắ ầ ừ ị

oldStr,  string  newStr)  N i dung ộ  : Tr  v  chu i đ ả ề ỗ ượ c xây d ng b ng cách thay  ự ằ

th  các chu i con  ế ỗ oldStr trong chu i ban đ u b ng các ỗ ầ ằ chu i con  ỗ newStr.

Ví dụ :

     string  s =  "Hello";

         // Tr  v  chu i "Hero"; ả ề ỗ

        s = s.Replace( "ll" ,  "r" );

Trang 52

Các hàm x  lý Chu iử ỗ

bool  StartsWith( string  

value)  

N i dung ộ  : Ng ượ ạ ớ c l i v i hàm EndsWith

string  Substring( int  startIdx, 

ộ  : Tr  v  chu i con trong chu i  ả ề ỗ ỗ ban đ u, b t đ u t  v  trí  ầ ắ ầ ừ ị startIdx và có đ  

Trang 53

string  Trim() N i dung ộ  : Tr  v  chu i m i sau khi b  đi  ả ề ỗ ớ ỏ

các ký t  kho ng tr ng   đ u và cu i c a  ự ả ắ ở ầ ố ủ chu i ban đ u. T ỗ ầ ươ ng t  hàm Trim trong th   ự ư

vi n hàm c a VB.Net ệ ủ

string  TrimEnd() N i dung ộ  : T ươ ng t  hàm Trim, nh ng ch  b   ự ư ỉ ỏ

đi các ký t  kho ng tr ng   cu i ự ả ắ ở ố

string  TrimStart() N i dung ộ  : T ươ ng t  hàm Trim, nh ng ch  b   ự ư ỉ ỏ

đi các ký t  kho ng tr ng   đ u ự ả ắ ở ầ

Trang 54

N i dung: ộ  N i các chu i trong m ng  ố ỗ ả value thành 1 

chu i, phân cách b i  ỗ ở separator

Ví dụ :

string [] mang =  new   string [3];

mang[0] =  "mot" ; mang[1] =  "hai" ; mang[2] =  "ba" ; //Tra ve chuoi "mot*hai*ba"

string  str =  string Join( "*" , mang);

Trang 55

END

Ngày đăng: 11/01/2020, 19:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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