TTO - Giây phút bi quan và đau đớn nhất của cuộc đời Trang không chỉ là thời điểm nghe tin mình bị ung thư, mà đó còn là khi phải một mình đấu tranh để bảo vệ cho sự học của chính mình.
Trang quyết tâm phải vào đại học để thay đổi đời mình, đời em út mình - Ảnh: CÔNG TRIỆU
Bao lần đối diện với lằn ranh sinh tử, bạn nhất quyết phải vào đại học.
Đó là Lê Thị Trang (21 tuổi, ngụ huyện Bình Chánh, TP.HCM), tân sinh viên Học viện Hàng không Việt Nam.
Current Time0:07
/
Duration3:37
Auto
Nghị lực của cô gái Lê Thị Trang - Video: CÔNG TRIỆU - HUỲNH VY - TRINH TRÀ
Giấu bệnh
Một ngày cách đây 5 năm, khi đang đạp xe đến trường, Trang bỗng cảm giác tay chân tê cứng, đầu quay cuồng và máu mũi không ngừng chảy. "Bác sĩ nói là bạch cầu có dấu hiệu bất thường của ung thư" - Trang nhớ lại. Tuổi 15 trăng tròn đủ cho Trang mường tượng hết về những bất thường mà bác sĩ nói. Lúc đó, Cô òa khóc như một đứa trẻ. Cô khóc cho những dự định của mình rồi sẽ đi về đâu?
Gia đình Trang thời điểm đó vốn khá giả. Nhưng từ khi cô đổ bệnh, công việc gia công bao bì từ rác thải của bố mẹ liên tục gặp khó khăn. Để có tiền trang trải, ông Lê Duy Tám, ba Trang, đã bán đi căn nhà riêng rồi dọn ra một lán trại 15m2 gia đình thuê để chung sống. Lúc này mẹ Trang đang mang bầu đứa em út (thứ 4), còn ba phải ra vô bệnh viện chữa bệnh thần kinh tọa, Trang đã quyết định giấu nhẹm đi bệnh tình của mình.
Sau hôm ấy, Trang trở lại với dáng vẻ thường ngày, luôn tươi cười, nhiệt huyết và sống đầy trách nhiệm. Nhưng bố mẹ đã nhận ra những biểu hiện khác thường ở bạn khi Trang hay sốt về chiều, thường xuyên chảy máu cam... "Một lần tôi đưa nó đi khám vì bị sốt mới được bác sĩ cho hay" - ông Tám chia sẻ.
Kết quả xét nghiệm lúc đó cho thấy lượng tế bào bạch cầu trong máu của Trang cao bất thường. Chỉ trong một tuần, lượng bạch cầu đo được trong 1 microliter máu của Trang từ 80.000 đã tăng vọt lên quá 125.000 (người bình thường chỉ từ 6.000-9.000 trong 1 microliter máu).
Trang được xác định bị ung thư máu mà cụ thể là bệnh bạch cầu mãn dòng tủy. "Lúc đó tôi chỉ nghĩ bố mẹ đã quá vất vả rồi nên bấm bụng giấu luôn chứ ung thư thì làm sao mà chữa" - Trang ngậm ngùi.
Học đại học năm 21 tuổi
Một năm sau, khi đều đặn lui tới Bệnh viện Truyền máu huyết học TP.HCM thì Trang được bác sĩ thông báo gan của cô đã xơ nặng. Cùng lúc chữa hai loại bệnh khiến sức khỏe của Trang rất yếu. Cô bắt buộc phải nghỉ học ba năm. Sau đó khi "quen" bệnh hơn, Trang quyết tâm trở lại "đường đua" của chính mình.
Mỗi tháng tiền thuốc cho Trang ngốn gần 6 triệu đồng. Biết đó là vất vả và gánh nặng của ba mẹ khi còn nuôi ba người em của Trang đi học nên khi quay trở lại học đường, Trang tự trang trải cho học phí cấp III bằng việc theo người anh đi làm thêm ở Long An. Cô luôn rời khỏi nhà với hai bộ đồ, một bộ đi làm, một bộ đồng phục học sinh. Trang ghé nhà bạn để thay đồ học sinh ra và luôn về nhà với bộ đồng phục của công ty.
Trong kỳ thi THPT vừa qua, Trang thi tổ hợp khối D01 gồm toán, văn và ngoại ngữ được 21,3 điểm. Mong ước cuối cùng đã thành hiện thực khi giờ đây Trang đã là tân sinh viên hệ xét tuyển ngành quản trị kinh doanh của Học viện Hàng không VN (với tổ hợp khối A trên 26,3 điểm), dù bước sang tuổi 21.
Dù đang bệnh, Trang vẫn cố giúp bố mẹ việc nhà - Ảnh: CÔNG TRIỆU
Cô Bùi Minh Nhật Uyên, bí thư Đoàn thanh niên Trung tâm giáo dục phổ thông (Trường ĐH Công nghiệp thực phẩm TP.HCM), nói tấm gương nghị lực vượt khó đến trường của Trang luôn khiến cô ấn tượng. Nhà trường đã miễn học phí cho Trang trong suốt 2 năm học cuối cấp.
"Trang từng đoạt giải 3 cuộc thi Học sinh giỏi giải toán bằng máy tính cầm tay và giải 3 cuộc thi Học viên giỏi môn ngữ văn TP.HCM. Nếu đặt mình vào vị trí của Trang, tôi không chắc mình sẽ làm được như thế" - cô Uyên nói.
Tự lo liệu học phí đến trường, Trang cũng làm gia sư, làm phục vụ tại các nhà hàng - Ảnh: CÔNG TRIỆU
Hỗ trợ Tiếp sức đến trường
Với thông điệp "Cùng Tuổi Trẻ vượt COVID đến giảng đường", Tiếp sức đến trường năm nay dự kiến hỗ trợ 1.000 suất học bổng cho các tân sinh viên trên 63 tỉnh thành khắp cả nước. Hoạt động thuộc chương trình "Vì ngày mai phát triển" do báo Tuổi Trẻ sáng kiến và chủ trì.
Đồ họa: NGỌC THÀNH
Tân sinh viên khó khăn hoặc người giới thiệu có thể đăng ký học bổng Tiếp sức đến trường 2021 tại đây: tiepsuc.tuoitre.vn.
- Định nghĩa: "Một số nguyên dương N là số nguyên tố nếu nó chỉ có đúng hai ước là 1 và N"
- Tính chất:
+ Nếu N = 1 thì N không là số nguyên tố
+ Nếu 1 < N < 4 thì N là số nguyên tố
2. Ý tưởng
- N<4: Xem như bài toán đã được giải quyết
- N≥4: Tìm ước i đầu tiên > 1 của N
+ Nếu i < N thì N không là số nguyên tố (vì N có ít nhất 3 ước 1, i, N)
+ Nếu i = N thì N là số nguyên tố
3. Xây dựng thuật toán
a) Cách liệt kê
Bước 1: Nhập số nguyên dương N
Bước 2: Nếu N=1 thì thông báo "N không là số nguyên tố", kết thúc;
Bước 3: Nếu N<4 thì thông báo "N là số nguyên tố", kết thúc;
Bước 4: i← 2;
Bước 5: Nếu i là ước của N thì đến bước 7
Bước 6: i← i+1 rồi quay lại bước 5; ( tăng i lên 1 đơn vị)
Bước 7: Nếu i = N thì thông báo "N là số nguyên tố", ngược lại thì thông báo "N không là số nguyên tố", kết thúc;
b) Sơ đồ khối
Hình 1. Sơ đồ khối thuật toán kiểm tra tính nguyên tố của một số nguyên dương N
Lưu ý: Nếu N ≥ 4 và không có ước trong phạm vi từ 2 đến phần nguyên căn bậc 2 của N thì N là số nguyên tố
Bài toán 2: Sắp xếp bằng cách tráo đổi
1. Xác định bài toán
- Input: Dãy A gồm N số nguyên a1, a2,…,an
Ví dụ : Dãy A gồm các số nguyên: 2 4 8 7 1 5
- Output: Dãy A được sắp xếp thành dãy không giảm
Dãy A sau khi sắp xếp: 1 2 4 5 7 8
2. Ý tưởng
- Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước > số sau ta đổi chỗ chúng cho nhau. (Các số lớn sẽ được đẩy dần về vị trí xác định cuối dãy)
- Việc này lặp lại nhiều lượt, mỗi lượt tiến hành nhiều lần so sánh cho đến khi không có sự đổi chỗ nào xảy ra nữa
3. Xây dựng thuật toán
- Bước 1. Nhập N, các số hạng a1, a2,…,an;
- Bước 2. Đầu tiên gọi M là số số hạng cần so sánh, vậy M sẽ chứa giá trị của N:
- Bước 3. Nếu số số hạng cần so sánh < 2 thì dãy đã được sắp xếp. Kết thúc;
- Bước 4. M chứa giá trị mới là số phép so sánh cần thực hiện trong lượt: . Gọi i là số thứ tự của mỗi lần so sánh, đầu tiên i 0;
- Bước 5. Để thực hiện lần so sánh mới, i tăng lên 1 (lần so sánh thứ i)
- Bước 6. Nếu lần so sánh thứ i> số phép so sánh M: đã hoàn tất M số phép so sánh của lượt này. Lặp lại bước 3, bắt đầu lượt kế (với số số hạng cần so sánh mới chính là M đã giảm 1 ở bước 4);
- Bước 7. So sánh 2 phần tử ở lần thứ i là ai và ai+1. Nếu ai > ai+1 thì tráo đổi 2 phần tử này;
- Bước 8. Quay lại bước 5
a) Đối chiếu, hình thành các bước liệt kê
b) Sơ đồ khối
Hình 2. Sơ đồ khối thuật toán sắp xếp bằng cách tráo đổi
Bài toán 3: Tìm kiếm tuần tự
1. Xác định bài toán
- Input : Dãy A gồm N số nguyên khác nhau a1, a2,…,an và một số nguyên k (khóa)
Ví dụ : Dãy A gồm các số nguyên: 5 7 1 4 2 9 8 11 25 51 . Và k = 2 (k = 6)
- Output: Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy. Vị trí của 2 trong dãy là 5 (không tìm thấy 6)
2. Ý tưởng
Tìm kiếm tuần tự được thực hiện một cách tự nhiên: Lần lượt đi từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khóa cho đến khi gặp một số hạng bằng khóa hoặc dãy đã được xét hết mà không tìm thấy giá trị của khóa trên dãy.
3. Xây dựng thuật toán
a) Cách liệt kê
Bước 1: Nhập N, các số hạng a1, a2,…, aN và giá trị khoá k;
Bước 2: i ← 1;
Bước 3: Nếu ai = k thì thông báo chỉ số i, rồi kết thúc;
Bước 4: i ← i+1
Bước 5: Nếu i > N thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc;
Bước 6: Quay lại bước 3;
b) Sơ đồ khối
Hình 3. Sơ đồ khối thuật toán tìm kiếm tuần tự
Bài toán 4: Tìm kiếm nhị phân
1. Xác định bài toán
- Input: Dãy A là dãy tăng gồm N số nguyên khác nhau a1, a2,…,an và một số nguyên k.
Ví dụ: Dãy A gồm các số nguyên: 2 4 5 6 9 21 22 30 31 33. Và k = 21 (k = 25)
- Output : Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy. Vị trí của 21 trong dãy là 6 (không tìm thấy 25)
2. Ý tưởng
- Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách thu hẹp nhanh vùng tìm kiếm bằng cách so sánh k với số hạng ở giữa phạm vi tìm kiếm (agiữa), khi đó chỉ xảy ra một trong ba trường hợp:
+ Nếu agiữa= k thì tìm được chỉ số, kết thúc;
+ Nếu agiữa > k thì việc tìm kiếm thu hẹp chỉ xét từ ađầu (phạm vi) → agiữa - 1;
+ Nếu agiữa < k việc tìm kiếm thu hẹp chỉ xét từ agiữa + 1 → acuối (phạm vi).
- Quá trình trên được lặp lại cho đến khi tìm thấy khóa k trên dãy A hoặc phạm vi tìm kiếm bằng rỗng.
3. Xây dựng thuật toán
a) Cách liệt kê
b) Sơ đồ khối
Hình 4. Sơ đồ khối thuật toán tìm kiếm tuần tự
Nguồn: toploigiai.vn
ĐỌC THÊM
“Bất kì một chương trình máy tính nào cũng cần thuật toán/ giải thuật (algorithms). Không thuật toán, không chương trình nào hết!”
Câu nói đánh giá vô cùng đúng về vai trò cũng như giá trị của thuật toán/giải thuật đối với mỗi lập trình viên. Vậy thuật toán là gì? Tại sao thuật toán lại quan trọng như vậy? Chúng ta nên học thuật toán từ những nguồn nào là tốt nhất?,… Những thắc mắc này của bạn sẽ có ngay đáp án sau khi bạn đọc xong bài viết này.
Let’s go!
Thuật toán là gì?
Thuật toán (algorithms) có thể hiểu đơn giản là tập hợp các bước để hoàn thành một nhiệm vụ. Một số ví dụ rất cơ bản về thuật toán xung quanh bạn như: bạn có thể có một thuật toán để đi từ nhà đến trường, để làm bánh mỳ xá xíu thật ngon hoặc một thuật toán để tìm thấy những gì bạn tìm kiếm trong một cửa hàng tạp hóa nhanh nhất.
Trong khoa học máy tính khái niệm này cũng tương tự như vậy, thuật toán là một tập hợp các bước để chương trình máy tính hoàn thành một nhiệm vụ.
Tại sao thuật toán lại quan trọng với lập trình viên như vậy?
Câu trả lời rất đơn giản, học thuật toán giúp chúng ta giải quyết vấn đề một cách tốt hơn, nâng cao tư duy lập trình.
Như ví dụ mình đã nêu ở trên bạn có thể thấy rằng thuật toán ở khắp nơi quanh ta từ những vấn đề nhỏ tới vấn đề lớn. Chính vì thế thuật toán thì cũng có thuật toán đơn giản và thuật toán phức tạp.
Một số lĩnh vực trong lập trình chỉ cần những thuật toán đơn giản những cũng có những lĩnh vực cần sử dụng rất nhiều thuật toán phức tạp như: render đồ hoạ, mã hoá dữ liệu, driver, machine learning, data mining. Phải nắm vững các thuật toán này thì bạn mới có thể làm việc trong lĩnh vực đó.
Đối với mỗi lập trình viên việc giỏi thuật toán cũng giúp bạn tìm ra hướng giải quyết vấn đề nhanh hơn, viết code mạch lạc hơn. Nắm vững thuật toán, cấu trúc dữ liệu, bạn sẽ ước tính được độ phức tạp của code, đánh giá code chạy nhanh hay chậm, có scalable hay không.
“Có một sự thật rằng, đa phần các sản phẩm phần mềm ngày nay thành công mà không cần hay sử dụng rất ít thuật toán bên trong nó. Tuy nhiên những sản phẩm có hàm lượng thuật toán cao, trí tuệ lớn, thật sự tạo ra sự khác biệt và thành công lớn hơn những sản phẩm bình thường. Sản phẩm như Google thành công vì có thuật toán tìm kiếm mạnh mẽ bậc nhất thế giới. Sản phẩm như Facebook hay Youtube cũng phải sử dụng nhiều thuật toán như tìm kiếm, gợi ý người dùng, gợi ý nội dung, … Nhưng thuật toán lại không phải yếu tố cốt lõi quyết định thành công của sản phẩm này. Do đó, việc học thuật toán, sự quan trọng của thuật toán phụ thuộc vào sản phẩm, ứng dụng mà bạn làm. Dù có giỏi hay không giỏi thuật toán, bạn vẫn có thể thành công nếu vận dụng đúng kỹ năng, hiểu biết của mình vào lĩnh vực mà bạn làm. Cá nhân tôi luôn khuyên và nhắn nhủ các bạn lập trình viên hãy luôn học và rèn luyện thuật toán. Với tôi, thuật toán giúp bạn rèn luyện tư duy giải quyết vấn đề, cùng với suy nghĩ về việc luôn tối ưu và làm sản phẩm một cách tối ưu và tổng quát. Có những lúc, thực sự bế tắc trong công việc (không chỉ là lập trình), tôi vẫn thường vào làm 1 số bài tập thuật toán để khai thông và thúc đẩy sự suy nghĩ. Sau đó tôi thấy mình minh mẫn và giải quyết công việc cũ 1 cách thuận lợi hơn.”