Tải bản đầy đủ (.docx) (54 trang)

báo cáo thực tập tốt nghiệp tại trung tâm nghiên cứu sam sung SVMC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.13 MB, 54 trang )

LỜI NÓI ĐẦU
Được thành lập từ năm 2012, SVMC hiện đang là trung tâm nghiên cứu và phát
triển di động lớn nhất của Samsung tại khu vực Đông Nam Á. Nhân lực của SVMC
hiện lên đến hơn 1400 kỹ sư đang làm việc trong các lĩnh vực ph ần mềm dành
cho thiết bị di động và mạng 4G LTE. Trụ sở của SVMC được đặt tại PVI Tower,
nằm ở địa chỉ: số 1, đường Phạm Văn Bạch, P. Yên Hòa, Q. C ầu Gi ấy, TP. Hà N ội,
có diện tích hơn 10.000m2 và được trang bị hiện đại.
Hai nhóm lĩnh vực chính SVMC đang nghiên cứu bao gồm: phát tri ển ph ần m ềm
cho các thiết bị di động thương mại ở thị trường Đông Nam Á s ử d ụng n ền t ảng
Android và Tizen; nghiên cứu, phát tri ển các giải pháp kỹ thu ật trên n ền t ảng di
động bao gồm hệ thống nhúng, giao thức truyền thông, dịch vụ đa ph ương ti ện,
giải pháp Spen, và bảo mật điện thoại.
Trong khuôn khổ hợp tác giữa Samsung Electronics Vi ệt Nam và các tr ường Đ ại
học/ Học viện lớn tại miền Bắc, SVMC Internship Program là ch ương trình thi ết
thực và ý nghĩa nhằm chuẩn bị hành trang trước khi ra trường cho các b ạn sinh
viên, cung cấp nền tảng tri thức và kĩ năng vững chắc cần có đ ể tr ở thành m ột
Nhân viên Lập trình tài năng theo tiêu chuẩn toàn cầu của Tập đoàn Samsung.
Ngoài ra, sinh viên còn có cơ hội học hỏi và trải nghi ệm môi tr ường làm vi ệc
năng động, chuyên nghiệp và hiện đại tại Trung tâm nghiên cứu và phát tri ển
Điện thoại Di động lớn nhất Đông Nam Á của Samsung.
Đặc biệt, khi kết thúc chương trình thực tập, sinh viên sẽ có c ơ h ội tr ở thành
nhân viên chính thức của SVMC nếu vượt qua bài thi cuối kỳ thực tập.
Chúng em xin chân thành cảm ơn cô Đào Thị Phương Mai , các th ầy cô giáo trong
khoa điện điện tử và nhà trường đã giúp đỡ và tạo điều kiện giúp chúng em có
thể thực tập và trải nghiệm trong một môi trường làm việc rất năng động và
hiện đại như ở Trung Tâm Nghiên Cứu SamSung ( SamSung SVMC).

1


Mục Lục


CHƯƠNG 1. GIỚI THIỆU VỂ TRUNG TÂM NGHIÊN CỨU VÀ PHÁT TRIỂN ĐIỆN
THOẠI

DI

ĐỘNG

-

SVMC (Samsung

Vietnam

Mobile

R&D

Center)

…………………………………………………………………….……Trang 3

2


CHƯƠNG 1: GIỚI THIỆU VỂ TRUNG TÂM NGHIÊN CỨU VÀ PHÁT TRIỂN ĐIỆN
THOẠI DI ĐỘNG - SVMC (Samsung Vietnam Mobile R&D Center)
1.1.Giới thiệu về tòa nhà PVI.
1.1.1.Vị trí.
PVI Tower nằm cạnh ngã tư giao cắt Trần Thái Tông – Dương Đình Nghệ – Trung
Kính.Đây là nút giao thông trọng đi ểm của khu vực, thu ận l ợi di chuy ển vào n ội

thành, di chuyển ra ngoại thành, các tuyến phố lớn khác và các tỉnh thành lân cận
thành phố Hà Nội.

Đây cũng là khu vực tập trung nhiều văn phòng cho thuê tại khu v ực phía Tây, các
khu đô thị cao cấp, các khu trung tâm thương mại nh ư The Manor, Indochina
Plaza Hanoi… rất thuận tiện cho nhu cầu làm việc, mua s ắm, th ư giãn, ngh ỉ ng ơi
của cán bộ nhân viên và khách hàng. Đồng thời v ới đó, các doanh nghi ệp đ ặt đ ịa
chỉ văn phòng tại khu vực này cũng có cơ hội ti ếp xúc v ới nhi ều đ ối tượng khách
hàng khác nhau, cơ hội cạnh tranh và mở rộng quy mô rất lớn.

Hình 1.1: Tòa nhà PVI .
3


1.1.2.Quy mô thiết kế và trang bị.
Toà nhà văn phòng PVI Tower có quy mô cao 25 tầng, tổng di ện tích s ử d ụng lên
đến 61.400 m2, trong đó diện tích sàn lên tới 2.000m2 và các diện tích văn phòng
cho thuê từ 80m2. Đây là trụ sở chính thức của Quỹ đầu tư PVI Holdings và cũng
là địa chỉ thuê văn phòng của rất nhiều thương hiệu uy tín trên thị trường.
Tòa nhà PVI Tower được thiết kế theo phong cách hi ện đại, tầm nhìn thoáng,
được trang bị đầy đủ cơ sở vật chất và trang thiết bị. Bao gồm:
+ Hệ thống 07 thang máy chở khách và 01 thang chở hàng nhập kh ẩu Th ụy Sỹ,
tốc độ: 2,5m/s đáp ứng tối đa nhu cầu di chuyển giữa các tầng nhà.
+ Hệ thống điều hòa nhiệt độ Carrier của Mỹ, có thể điều chỉnh nhiệt độ theo
từng khu vực.
+ Hệ thống phòng cháy chữa cháy theo tiêu chuẩn Qu ốc tế v ới còi báo cháy t ự
động, thang điều áp hút khói, bình xịt chữa cháy trang bị tại các hành lang.
+ Hệ thống điện dự phòng đáp ứng 100% nhu cầu sử dụng v ới 2 máy phát đi ện
công suất 2.500 KVA/máy.
+ Hệ thống điện nước, hệ thống thông tin bao gồm đường dây đi ện tho ại,

internet, cáp quang được trang bị tới từng văn phòng.
Tòa nhà PVI lấy cảm hứng từ phong cách thiết kế hiện đại, sang tr ọng và g ần gũi
với thiên nhiên, kết hợp với việc bố trí mạng lưới cây xanh, ti ểu cảnh từ đó giúp
tiết kiệm tối đa năng lượng, mang lại môi trường làm việc xanh – sạch – đẹp.

4


Hình 1.2. Nội thất bên trong tòa nhà.
1.1.3.Tiện ích và dịch vụ của tòa nhà.
Bên cạnh các tiện ích về vị trí địa lý và giao thông đi l ại, PVI Tower còn có nh ững
tiện nghi và dịch vụ sau đáp ứng tối đa nhu cầu của khách hàng:
+ Tòa nhà được tư vấn quản lý bởi Công ty Savills Vi ệt Nam và áp d ụng h ệ th ống
quản lý tòa nhà thông minh IBMS giúp nâng cao chất lượng, ti ết ki ệm tối đa năng
lượng và chi phí cho khách hàng.
+ Tầng sảnh tòa nhà rộng rãi, có hệ thống ghế ngồi phục vụ nhu c ầu ti ếp khách
của các doanh nghiệp thuê văn phòng.
+ Khu vực đậu xe: Tòa nhà có 2 tầng hầm liên thông, áp d ụng h ệ th ống qu ản lý
giao thông thông minhđáp ứng nhu cầu trông giữ xe của nhân viên và khách hàng,
có sức chứa khoảng 300 xe ô tô và 1.500 xe máy.
+ Hệ thống trung tâm hội nghị có sức chứa tới 500 khách 7 phòng h ọp ti ện nghi
quy mô 20-50 khách đáp ứng nhu cầu tổ chức sự kiện, hội nghị, hội th ảo của
khách hàng.
+ Trong khuôn viên tòa nhà còn có hệ thống quán café và nhà hàng ph ục v ụ nhu
cầu ăn uống, tiếp khách của các doanh nghiệp thuê văn phòng.
+ Ngoài ra còn có phòng tập gym trang bị hiện đại phục v ụ nhu cầu tập luy ện
thể dục thể thao ngoài giờ.

5



+ Bộ phận an ninh làm việc chuyên nghiệp, thay ca liên tục, ki ểm soát khách
hàng ra vào nhằm đảm bảo an toàn tuyệt đối cho tòa nhà.
+ Sảnh tầng 1 có bộ phận lễ tân làm việc tận tình nh ằm h ướng d ẫn và h ỗ tr ợ
khách hàng ra vào.
1.2.Giới Thiệu về trung tâm SVMC.
SVMC là trung tâm nghiên cứu lớn nhất của SAMSUNG tại khu vực Đông
Nam Á. Nơi đây không ngừng đổi mới để tạo ra một nơi làm việc tốt nhất
(Great Work Place), chính sách đào tạo phát tri ển nhân tài bài b ản, cùng ch ế
độ lương thưởng cạnh tranh, công bằng nhằm nâng cao hiệu quả làm vi ệc
và sự gắn bó lâu dài của nhân viên.

Hình 1.3: Một góc văn phòng làm việc của trung tâm SVMC.
Được thành lập năm 2012, đến nay SVMC đã xây dựng được một đ ội ngũ
nhân viên với hơn 1.000 kỹ sư trong lĩnh vực nghiên cứu và phát tri ển ph ần
mềm ĐTDĐ, trong đó có nhiều Tiến sỹ, Thạc sỹ được đào tạo chuyên sâu ở
nước ngoài. Trụ sở chính của SVMC được đặt tại Tòa nhà PVI, số 1 Phạm
Văn Bạch, Cầu Giấy, Hà Nội. Không chỉ nghiên cứu và phát tri ển phần m ềm
ĐTDĐ, SVMC còn tham gia chuyển giao công nghệ tiên ti ến đưa vào dây
chuyền sản xuất tại 2 nhà máy lớn nhất tập đoàn ở Bắc Ninh và Thái
Nguyên, góp phần vào thành công to lớn của tập đoàn Samsung Electronics 6


trở thành một trong những doanh nghiệp có vốn đầu tư nước ngoài thành
công nhất tại Việt Nam.
1.3. Các quy định nội bộ.
1.3.1. Nội quy tòa nhà PVI.
 Đọc kỹ và tuân theo tất cả các thông báo của tòa nhà, cũng nh ư các
thông báo về an toàn, an ninh và các bảng hiệu.
 Các cá nhân không có trách nhiệm không được phép vào khu v ực tòa

nhà văn phòng. Các khách tham quan nên đăng ký ở bàn lễ tân tại đ ại
sảnh.
 Đội bảo vệ sẽ mời ra ngoài tất cả các cá nhân không có nhiệm vụ, hoặc
các cá nhân gây nhiễu loạn, hay đe dọa đến sự an toàn của các Khách
thuê, khách hàng của họ, cũng như an ninh tòa nhà.
 Không được phép bài bạc, hoặc có bất cứ hành động trái lu ật, trái đ ạo
đức nào trong tòa nhà.
 Không mang những thứ gây ra mùi khó chịu vào tòa nhà, đi ều này bao






gồm luôn cả việc không mang sầu riêng vào.
Không mang vật nuôi, hay thú vật vào tòa nhà.
Không phân phát tờ rơi, hay tuyên truyền quảng cáo trong tòa nhà.
Không gây ra tiếng ồn ào làm phiền các Khách thuê khác.
Không mở các cửa sổ.
Không gây cản trở thang máy hoặc sử dụng thang khách để vận

chuyển các vật dụng cồng kềnh.
 Tất cả các Khách thuê và người sử dụng tòa nhà cần phải gi ữ tòa nhà
(bao gồm khu vực công cộng và khu vực thuê) luôn luôn s ạch sẽ và g ọn
gàng
 Rác phải được để trong các túi rác trước khi mang đến khu vực để rác.
 Trẻ em không được phép vào tòa nhà văn phòng n ếu nh ư không có
người lớn bên cạnh.
 Việc vận chuyển hàng hóa ra vào phải thông qua tầng hầm và ph ải có
sự sắp xếp trước với văn phòng quản lý.

 Mọi sự hư hại phải được báo cáo ngay với văn phòng quản lý đ ể đ ược
xử lý. Các khách thuê và người sử dụng tòa nhà phải chịu trách nhi ệm
nếu gây ra hư hại do bất cẩn.
7


 Bảo hiểm thiệt hại tài sản, xâm phạm, cháy nổ, và các hi ểm h ọa khác
đã được sắp xếp với Chủ đầu tư. Tất cả khách thuê nên tự sắp xếp bảo
hiểm tài sản cá nhân trong khu vực thuê.
 Hệ thống thoát nước cần phải được sử dụng đúng với chức năng của
nó. Không đổ rác, bao ni lông, hoặc bất cứ vật l ạ vào đường ống thoát
nước. Khách thuê sẽ phải chịu trách nhiệm đối với vi ệc gây hư hại
hoặc lạm dụng.
 Khách thuê muốn ở lại khu vực thuê sau 18:00 ph ải thông báo v ới Văn
phòng Quản lý trước 17.00. Không được phép ở qua đêm.
 Giờ làm việc hành chính của cao ốc văn phòng như sau:
i. Thứ Hai tới thứ Sáu

08:00 tới 18:00

ii. Thứ Bảy

08:00 tới 12:00

 Vì lợi ích của các khách thuê và người sử dụng tòa nhà được đặt ra
hàng đầu, xin vui lòng báo cho văn phòng quản lý hoặc đội b ảo v ệ
nếu như phát hiện có bất cứ hành động đáng nghi ngờ nào, ho ặc b ất
cứ hiện tượng nào gây tác động xấu đến sự an toàn hay s ức kh ỏe c ủa
các cá nhân trong tòa nhà.
 Đội bảo vệ tòa nhà trực 24 tiếng 1 ngày, 7 ngày 1 tuần, để đáp ứng và

xử lý các trường hợp khẩn cấp, hoặc các đòi hỏi và thắc mắc. Số đi ện
thoại của phòng bảo vệ là:0386868686.
1.3.2. Nội quy trung tâm nghiên cứu.
Thời giờ làm việc và nghỉ ngơi.
1. Biểu thời gian làm việc trong ngày:
Số giờ làm việc trong ngày: 8 tiếng.
Số ngày làm việc trong tuần: 5.5 ngày.Từ thứ Hai đến trưa thứ Bảy.
Thời điểm bắt đầu làm việc trong ngày: 8h sáng
Thời điểm kết thúc làm việc trong ngày: 5h chiều.
Thời gian nghỉ ngơi trong ngày: 11h 30’ 12h 30’
8


2. Ngày nghỉ hằng tuần:
Chiều thứ 7 và ngày Chủ nhật.
3. Quy định về làm thêm giờ.
Nhân viên làm tăng ca,làm thêm giờ sẽ được tính lương bằng 150% so v ới mức
lương làm ngày thường.
4. Quy định với HĐLĐ dưới 3 tháng, thử việc.
Đối với những nhân viên ký HĐLĐ dưới 3 tháng, nhân viên thử việc sẽ đ ược
hưởng 80% mức lương so với nhân viên chính thức.
Thực hiện mọi quy tắc mà công ty đưa ra như nhân viên khác.
Xong thời gian thử việc được làm chính tại Công ty sẽ được tr ả lương nh ư nhân
viên bình thường cùng bộ phận.
5. Ngày nghỉ người lao động được hưởng nguyên lương:
Nghỉ lễ, tết hàng năm:
Tết Dương Lịch: Một ngày (ngày 1 tháng 1 dương lịch).
Tết Âm lịch: Năm ngày (một ngày cuối năm và 3 ngày đầu năm âm lịch).
Ngày chiến thắng: Một ngày (ngày 30 tháng 4 dương lịch).
Ngày Quốc tế lao động: Một ngày (ngày 1 tháng 5 dương lịch).

Ngày Quốc khánh: Một ngày (ngày 2 tháng 9 dương lịch).
Ngày Giỗ tổ Hùng Vương: Một ngày (ngày 10 tháng 03 âm lịch).
Nếu những ngày nghỉ nói trên trùng vào nghỉ hằng tuần thì người lao đ ộng được
nghỉ bù vào ngày tiếp theo.
6.Nghỉ phép hàng năm:
Người lao động có 12 tháng làm việc tại Công ty thì được ngh ỉ 12 ngày phép năm
hưởng nguyên lương. Mỗi tháng người lao động được nghỉ một ngày phép, nếu
9


không nghỉ thì ngày phép đó sẽ cộng dồn vào những tháng sau. C ụ th ể nh ư sau:
Nếu tháng 1 nhân viên có một ngày nghỉ phép h ưởng nguyên l ương mà không s ử
dụng thì có thể cộng dồn vào tháng 2. Đến tháng 2 có nhu c ấu s ử d ụng thì có th ể
sử dụng cả 2 ngày phép.Nhân viên cũng có thể sử dụng một l ần phép năm nếu
không ảnh hưởng đến công việc.
Nếu thời gian làm việc dưới 12 tháng thì số ngày phép năm đ ược tính theo t ỉ l ệ
tương ứng với số tháng làm việc.
Người lao động sẽ có thêm một ngày phép năm hưởng nguyên lương cho m ỗi 5
(năm) năm làm việc.
7. Nghỉ việc riêng có lương
Người lao động có quyền nghỉ và hưởng đầy đủ lương như những ngày đi làm
trong các trường hợp sau:
Bản thân kết hôn: được nghỉ 3 ngày.
Con lập gia đình: được nghỉ 1 ngày.
Bố mẹ (cả bên chồng và bên vợ) chết, hoặc vợ, chồng, con chết: đuợc nghỉ 3
ngày.
Người lao động là chồng có vợ sinh con lần 1 và 2: được nghỉ 2 ngày.
8. Nghỉ việc riêng không lương:
Người lao động có thể thỏa thuận với người sử dụng lao động để xin ngh ỉ không
hưởng lương, tuy nhiên chỉ trong trường hợp có lý do thật sự chính đáng.

Quy định người lao động có thề xin nghỉ không lương tối đa: 14 ngày trong năm.
9. Ngày nghỉ bệnh:
Nếu người lao động bị bệnh thì người thân của người lao động phải thông báo
cho Công ty biết trong thời gian sớm nhất.

10


Trường hợp nghỉ nhiếu ngày liên tiếp thì sau khi nghỉ bệnh người lao đ ộng ph ải
nộp đơn xin nghỉ bệnh cùng với giấy xác nhận của Bác sĩ, nếu không sẽ b ị kh ấu
trừ vào ngày phép năm.
Trong thời gian nghỉ bệnh theo giấy của Bác sĩ, người lao động được h ưởng ch ế
độ theo quy định của Bảo Hiểm Xã Hội.
Thời gian tối đa người lao động được hưởng trợ cấp ốm đau như sau:
30 ngày trong một năm nếu đã đóng Bảo hiểm xã hội dưới 15 năm.
40 ngày trong một năm nếu đã đóng Bảo hiểm xã hội từ 15 năm đến d ưới 30
năm.
60 ngày trong một năm nếu đã đóng Bảo hiểm xã hội từ 30 năm trở lên.
1.4. An ninh và phòng cháy chữa cháy.
Tất cả các nhân viên trong công ty đều được cấp 1 thẻ RF ID trùng v ới mã nhân
viên của mình.Muốn vào công ty phải quẹt thẻ và làm các th ủ tục v ề bào m ật và
bảo an.
-

Phải dán tem tất cả các thiết bịđiện tử mang từ ngoài vào.
Niêm phong toàn bộ camera khay thẻ nhớ hoặc khay sim.
trước khi qua cửa phảiđi qua cửa rà soát an ninh tránh mang các d ụng c ụ
nguy hiểm hoặc chấtđộc , chất gây cháy nổ.

CHƯƠNG 2: CHƯƠNG TRÌNH THỰC TẬP.

2.1. Lịch trình thực tập.
Thời gian đăng kí thực tập từ tháng 10 năm 2018 đến tháng 12 năm 2018.
Sinh viên đăng kí thực tập nộp CV online vào trang
wed:.
Sinh viên các trường có trong danh sách liên kết v ới công ty thìđăng kítheo khoa
của mình.

11


Thời gian tổ chức thực tập cho sinh viên chưa tốt nghi ệp và chu ẩn b ị t ốt nghi ệp
diễn ra trong vòng 5 tháng từ 12/2018 đến 5/2019. Được chia thành 3 đ ợt th ực
tập.
 Đợt 1 từ 24/12/2018 đến 18/1/2019.
 Đợt 2 từ 18/2/2019 đến 15/3/2019.
 Đợt 3 từ 18/3/2019 đến 15/4/2019.
Ứng viên được trải qua kì thi phân loại đầu vào và phỏng vấn trước khi vào th ực
tập.
Cácứng viên vượt qua bài thi và phỏng vấn sẽ được phân chia theo đ ợt , và d ự
tuyển thực tập mà trung tâm sắp xếp.
2.2.Nội dung thực tập.
2.2.1. Thuật toán ( 2 tuần)
- Cách đọc file txt trong c/c++ sử dụng câu lệnh freopen(“input.txt”,”r”,stdin);
-Mảng (Array) trong C/C++
Ngôn ngữ lập trình C/C++ cung cấp cấu trúc dữ liệu gọi là mảng, được lưu trữ
trong một tập hợp các dữ liệu cùng kiểu với độ dài cố định. M ột mảng đ ược s ử
dụng để lưu trữ tập hợp dữ liệu, nhưng nó rất hữu dụng nếu bạn nghĩ v ề m ột
mảng các biến với cùng một kiểu.
Thay vì khai báo biến một cách rời rạc, như bi ến so0, so1,… và so99, b ạn có th ể
khai báo một mảng các giá trị như so[0], so[1] và … so[99] đ ể bi ểu di ễn các giá

trị riêng biệt. Một thành viên cụ thể của mảng có th ể được truy cập qua index
(chỉ số).
Tất cả mảng đều bao gồm các vị trí nhớ liền kề nhau. Địa ch ỉ th ấp nh ất t ương
ứng với thành viên đầu tiền và địa chỉ cao nhất tương ứng với thành viên cu ối
cùng của mảng.

12


+Khai báo mảng trong C/C++
Để khai báo một mảng trong ngôn ngữ C/C++, bạn xác định ki ểu của bi ến và s ố
lượng các phần tử được yêu cầu bởi biến đó như sau:
KieuTen_mang[Kich_co_mang];
Đây là mảng một chiều. Kich_co_mang phải là một số nguyên lớn hơn 0
và Kieu phải hợp lệ trong ngôn ngữ C/C++. Ví dụ, khai báo một mảng 10 ph ần
tử gọi là balance với kiểu double, sử dụng câu lệnh sau đây:
char sinhvien[10];
+Khởi tạo mảng trong C/C++
Bạn có thể khởi tạo mảng trong C/C++ hoặc từng phần tử một hoặc s ử dụng
một câu lệnh như dưới đây:
int hanghoa[5]={45,34,29,67,49};
Số lượng các giá trị trong dấu ngoặc kép {} không được l ớn hơn s ố lượng ph ần
tử khai báo trong dấu ngoặc vuông [].
Nếu bạn bỏ sót kích cỡ mảng thì mảng đó đủ lớn để giữ các giá trị được khởi
tạo: Bạn sẽ tạo chính xác một chuỗi có giá tr ị gi ống hệt chu ỗi bên trên b ằng
cách gán từng phần tử một. Dưới đây là một ví dụ khi gán giá tr ị cho m ột ph ần
tử của mảng:
int hanghoa[]={45,34,29,67,49};
Bạn có thể tạo ra cùng một mảng giống như đã làm trong ví dụ trước.
hanghoa[4]=50;

Câu lệnh bên trên gán giá trị thứ 5 của mảng giá trị 50.0. Tất cả các m ảng đ ều
có chỉ số (index) đầu tiên bằng 0, đây được gọi là chỉ s ố c ơ bản và ph ần tử cu ối
13


cùng của mảng có chỉ số bằng độ lớn của mảng trừ đi 1. Dưới đây là cách bi ểu
diễn hình họa cho chuỗi khai báo bên trên thông qua chỉ s ố:

Truy cập các phần tử mảng trong C/C++
Một mảng được truy cập bởi cách đánh chỉ số trong tên của mảng. D ưới đây là
một cách truy cập một giá trị của mảng:
int hocphi = hocphik60[55];
Câu lệnh trên lấy phần tử thứ 56 của mảng và gán giá trị này cho bi ến hocphi.
Dưới đây là một ví dụ về việc sử dụng với tất cả mô tả bên trên:
#include<iostream>
usingnamespace std;

#include<iomanip>
using std::setw;

int main ()
{
int n[10];// n la mot mang gom 10 so nguyen

// khoi tao gia tri cac phan tu cua mang n la 0
for(int i =0; i <10; i++)
{
14



n[ i ]= i +100;// thiet lap phan tu tai vi tri i la i + 100
}
cout <<"Phan tu thu:"<< setw(13)<<"Gia tri la:"<< endl;

// hien thi gia tri cua moi phan tu
for(int j =0; j <10; j++)
{
cout << setw(7)<< j << setw(13)<< n[ j ]<< endl;
}

return0;
}
Chương trình này sử dụng hàm setw(so_nguyen) trong C/C++ để định dạng
output. Tại đây, tham số so_nguyen là một số chỉ độ rộng của kết quả mà bạn
muốn hiển thị. Chẳng hạn, với so_nguyen là 3 tức là bạn dành 3 v ị trí đ ể in k ết
quả, nếu kết quả cần hiển thị là thừa thì nó sẽ bị cắt b ớt, n ếu thi ếu thì chèn
thêm khoảng trống vào. Hàm setw() được dùng cho cả cout và cin.
Chạy chương trình C/C++ trên sẽ cho kết quả như hình sau:

-Chuỗi (String) trong C/C++
15


C++ cung cấp hai kiểu biểu diễn chuỗi như sau:


Chuỗi theo phong cách của ngôn ngữ C (C-style),




Lớp Chuỗi (String) được giới thiệu trong C/C++ chuẩn.
Chuỗi theo phong cách C
Dạng chuỗi này bắt nguồn từ ngôn ngữ C và ti ếp tục được h ỗ tr ợ trong C/C++.
Chuỗi trong ngôn ngữ lập trình C thực chất là mảng một chi ều của các ký tự mà
kết thúc bởi một ký tự null '\0'.
Phần khai báo và khởi tạo dưới đây tạo ra một chuỗi bao gồm một từ "Hello".
Để giữ các giá trị null tại cuối của mảng, cỡ của mảng các ký tự bao gồm m ột
chuỗi phải nhiều hơn số lượng các ký tự trong từ khóa "Hello".
char loiChao[6]={'H','e','l','l','o','\0'};
Nếu bạn theo quy tắc khởi tạo các chuỗi, bạn có thể vi ết l ệnh như sau:
char loiChao[]="Hello";
Dưới đây là phần biểu diễn ô nhớ cho đoạn chuỗi trên trong ngôn ngữ C/C++:

Thực tế, bạn không đặt ký tự null tại vị trí cuối cùng của bi ến h ằng s ố. B ộ biên
dịch C tự động thêm '\0' tại ví trí cuối cùng của chu ỗi khi nó kh ởi t ạo chu ỗi.
Cùng thử ví dụ in ra chuỗi sau đây:
#include<iostream>
16


usingnamespace std;

int main ()
{
char loiChao[6]={'H','e','l','l','o','\0'};

cout <<"Khi gap nhau, chung ta noi: ";
cout << loiChao << endl;

return0;

}
Khi đoạn code trên được biên dịch và thực hiện, kết quả in ra sẽ như sau:
Khi gap nhau, chung ta noi:Hello
Ngôn ngữ C/C++ hỗ trợ nhiều hàm đa dạng để thao tác các chu ỗi k ết thúc là
null:
STT

Hàm & Mục đích

1

strcpy(s1, s2);
Sao chép chuỗi s2 cho chuỗi s1.

2

strcat(s1, s2);
Nối chuỗi s2 vào cuối chuỗi s1.

17


3

strlen(s1);
Trả về độ dài của chuỗi s1.

4

strcmp(s1, s2);

Trả về 0 nếu s1 và s2 là như nhau; nhỏ hơn 0 nếu s1<s2; lớn hơn 0 nếu s1>s2.

5

strchr(s1, ch);
Trả về con trỏ tới vị trí đầu tiên của ch trong s1.

6

strstr(s1, s2);
Trả về con trỏ tới vị trí đầu tiên của chuỗi s2 trong chuỗi s1.

Dưới đây là ví dụ cho việc sử dụng một vài hàm bên trên:
#include<iostream>
#include<cstring>

usingnamespace std;

int main ()
{
char chuoi1[10]="Hello";
char chuoi2[10]="Christmas";
char chuoi3[10];
int len ;

// sao chep chuoi1 vao trong chuoi3
18


strcpy( chuoi3, chuoi1);

cout <<"strcpy( chuoi3, chuoi1) : "<< chuoi3 << endl;

// noi hai chuoi: chuoi1 va chuoi2
strcat( chuoi1, chuoi2);
cout <<"strcat( chuoi1, chuoi2): "<< chuoi1 << endl;

// tong do dai cua chuoi1 mot sau khi thuc hien noi chuoi
len = strlen(chuoi1);
cout <<"Dung ham strlen(chuoi1) de tinh do dai chuoi1: "<< len << endl;

return0;
}
Chạy chương trình C/C++ trên sẽ cho kết quả như hình sau:

Lớp String trong C/C++
Thư viện chuẩn C/C++ cung cấp một ki ểu lớp String mà hỗ trợ tất cả hoạt
động liên quan tới chuỗi đã đề cập ở trên, và bổ sung thêm nhi ều tính năng nữa.
Chúng ta sẽ học lớp này trong Thư viện chuẩn C/C++ (C++ Standard Library),
nhưng lúc này, chúng ta xem xét ví dụ sau:
Lúc này, có thể bạn không hiểu ví dụ này, bởi vì chúng ta ch ưa bàn lu ận v ề Lớp
và Đối tượngtrong C/C++. Vì thế, bạn quan sát và ghi nhớ chúng tới khi b ạn đã
hiểu các khái niệm về Hướng đối tượng được trình bày ở chương sau đó.
19


#include<iostream>
#include<string>

usingnamespace std;


int main ()
{
string chuoi1 ="Hello";
string chuoi2 ="Christmas";
string chuoi3;
int len ;

// sao chep chuoi1 vao trong chuoi3
chuoi3 = chuoi1;
cout <<"Bay gio chuoi3 la: "<< chuoi3 << endl;

// noi hai chuoi: chuoi1 va chuoi2
chuoi3 = chuoi1 + chuoi2;
cout <<"chuoi1 + chuoi2 co ket qua la: "<< chuoi3 << endl;

// tong do dai cua chuoi3 mot sau khi thuc hien noi chuoi
len = chuoi3.size();
cout <<"Tinh do dai voi ham chuoi3.size() : "<< len << endl;

20


return0;
}
Chạy chương trình C/C++ trên sẽ cho kết quả như hình sau:

-Ngăn xếp (Stack) trong C
Một ngăn xếp là một cấu trúc dữ liệu trừu tượng (Abstract Data Type – vi ết tắt
là ADT), hầu như được sử dụng trong hầu hết mọi ngôn ngữ l ập trình. Đặt tên
là ngăn xếp bởi vì nó hoạt động như một ngăn xếp trong đời sống thực, ví dụ

như một cỗ bài hay một chồng đĩa, …
Chương trình minh họa Ngăn xếp (Stack) trong C
#include<stdio.h>
int MAXSIZE =8;
int stack[8];
int top =-1;
int isempty(){
if(top ==-1)
return1;
else
return0;
}
int isfull(){
if(top == MAXSIZE)
return1;
else
21


return0;
}
int peek(){
return stack[top];
}
int pop(){
int data;
if(!isempty()){
data = stack[top];
top = top -1;
return data;

}else{
printf("Khong the thu thap du lieu, ngan xep (Stack) la trong.\n");
}
}
int push(int data){
if(!isfull()){
top = top +1;
stack[top]= data;
}else{
printf("Khong the chen du lieu, ngan xep (Stack) da day.\n");
}
}
int main(){
// chen cac phan tu vao ngan xep
push(3);
push(5);
push(9);
22


push(1);
push(12);
push(15);
printf("Phan tu tai vi tri tren cung cua ngan xep: %d\n",peek());
printf("Cac phan tu: \n");
// in cac phan tu trong ngan xep
while(!isempty()){
int data = pop();
printf("%d\n",data);
}


printf("Ngan xep da day: %s\n", isfull()?"true":"false");
printf("Ngan xep la trong: %s\n", isempty()?"true":"false");
return0;
}
Kết quả
Biên dịch và chạy chương trình C trên sẽ cho kết quả:

-Cấu trúc dữ liệu hàng đợi (Queue)
Cấu trúc dữ liệu hàng đợi (Queue) là gì ?
Hàng đợi (Queue) là một cấu trúc dữ liệu trừu tượng, là m ột cái gì đó t ương t ự
như hàng đợi trong đời sống hàng ngày (xếp hàng).
23


Hình 2.1. Mô tả Hàng đợi trong thuật toán .
Khác với ngăn xếp, hàng đợi là mở ở cả hai đầu. Một đầu luôn luôn đ ược s ử
dụng để chèn dữ liệu vào (hay còn gọi là sắp vào hàng) và đầu kia được sử dụng
để xóa dữ liệu (rời hàng). Cấu trúc dữ liệu hàng đợi tuân theo phương pháp
First-In-First-Out, tức là dữ liệu được nhập vào đầu tiên sẽ được truy c ập đ ầu
tiên.
Trong đời sống thực chúng ta có rất nhiều ví dụ về hàng đợi, chẳng h ạn nh ư
hàng xe ô tô trên đường một chiều (đặc biệt là khi tắc xe), trong đó xe nào vào
đầu tiên sẽ thoát ra đầu tiên. Một vài ví dụ khác là x ếp hàng h ọc sinh, x ếp hàng
mua vé, …
Biểu diễn cấu trúc dữ liệu hàng đợi (Queue)
Giờ thì có lẽ bạn đã tưởng tượng ra hàng đợi là gì rồi. Chúng ta có th ể truy c ập
cả hai đầu của hàng đợi. Dưới đây là bi ểu diễn hàng đợi dưới d ạng c ấu trúc d ữ
liệu:


Tương tự như cấu trúc dữ liệu ngăn xếp, thì cấu trúc dữ liệu hàng đ ợi cũng có
thể được triển khai bởi sử dụng Mảng (Array), Danh sách liên kết (Linked List),
24


Con trỏ (Pointer) và Cấu trúc (Struct). Để đơn gi ản, phần ti ếp theo chúng ta sẽ
tìm hiểu tiếp về hàng đợi được triển khai bởi sử dụng mảng một chiều.
Các hoạt động cơ bản trên cấu trúc dữ liệu hàng đợi
Các hoạt động trên cấu trúc dữ liệu hàng đợi có th ể liên quan tới vi ệc kh ởi t ạo
hàng đợi, sử dụng dữ liệu trên hàng đợi và sau đó là xóa dữ liệu kh ỏi bộ nh ớ.
Danh sách dưới đây là một số hoạt động cơ bản có th ể thực hiện trên c ấu trúc
dữ liệu hàng đợi:
Hoạt động enqueue(): thêm (hay lưu trữ) một phần tử vào trong hàng


đợi.

Hoạt động dequeue(): xóa một phần tử từ hàng đợi.



Để sử dụng hàng đợi một cách hiệu quả, chúng ta cũng c ần ki ểm tra tr ạng thái
của hàng đợi. Để phục vụ cho mục đích này, dưới đây là một số tính năng h ỗ tr ợ
khác của hàng đợi:
Phương thức peek(): lấy phần tử ở đầu hàng đợi, mà không xóa phần tử


này.



Phương thức isFull(): kiểm tra xem hàng đợi là đầy hay không.



Phương thức isEmpty(): kiểm tra xem hàng đợi là trống hay hay không.
Trong cấu trúc dữ liệu hàng đợi, chúng ta luôn luôn: (1) dequeue (xóa) d ữ li ệu
được trỏ bởi con trỏ front và (2) enqueue (nhập) dữ liệu vào trong hàng đợi bởi
sự giúp đỡ của con trỏ rear.
Trong phần tiếp chúng ta sẽ tìm hiểu về các tính năng hỗ trợ của cấu trúc d ữ
liệu hàng đợi:
Phương thức peek() của cấu trúc dữ liệu hàng đợi
Giống như trong cấu trúc dữ liệu ngăn xếp, hàm này giúp chúng ta quan sát d ữ
liệu tại đầu hàng đợi. Giải thuật của hàm peek() là:
bắt đầu hàm peek
25


×