Lưu trữ

Archive for Tháng Bảy, 2008

ebook C++

Tháng Bảy 29, 2008 vuau Phản hồi đã bị khóa

C++ How to Program, Fifth Edition
Part 1
Part 2

Optimizing Away C++ Exception Handling
Link download

Binding Parametric Polymorphism in C++
Link Download

trích:
Ideal as an introduction for beginners and a quick reference for advanced programmers, the C Pocket Reference consists of two parts: a compact description of the C language and a thematically structured reference to the standard library. The representation of the language is based on the ANSI standard and includes extensions introduced in 1999. An index is included to help you quickly find information the information you need.

C pocket reference
Link download

C++ coding standar
Link download

C++ programming how to
Link download

trích:

I have written Optimizing C++ because I believe that this common attitude is incorrect, and that a knowledge of optimization is essential to a professional programmer. One very important reason is that we often have little control over the hardware on which our programs are to be run. In this situation, the simplistic approach of adding more hardware is not feasible.

Optimizing C++ provides working programmers and those who intend to be working programmers with a practical, real-world approach to program optimization. Many of the optimization techniques presented are derived from my reading of academic journals that are, sadly, little known in the programming community. This book also draws on my nearly 30 years of experience as a programmer in diverse fields of application, during which I have become increasingly concerned about the amount of effort spent in reinventing optimization techniques rather than applying those already developed.

Optimizing C++
Link download

Trích:
C++ in a Nutshell is a langauge reference manual. It is not a tutorial. It is not for beginners. It is a concise, to-the-point reference for professionals and other serious programmers. C++ in a Nutshell is not a comprehensive reference for the entire C++ language, in all its intricacies and complexities. Instead, I focus on what is most important to the working professional. If you feel that I have included too many irrelevant details or omitted too much important information, please let me know.

C++ in a nutshell
Link download

Trích:
For the practicing programmer with little time to spare, Essential C++ offers a fast-track to learning and working with C++ on the job. This book is specifically designed to bring you up to speed in a short amount of time. It focuses on the elements of C++ programming that you are most likely to encounter and examines features and techniques that help solve real-world programming challenges.

Essential C++ presents the basics of C++ in the context of procedural, generic, object-based, and object-oriented programming. It is organized around a series of increasingly complex programming problems, and language features are introduced as solutions to these problems. In this way you will not only learn about the functions and structure of C++, but will understand their purpose and rationale.

Essential in C++
Link download

Trích:
This book is for you if

You’re no “dummy,” and you need to get quickly up to speed in intermediate to advanced C++

You’ve had some experience in C++ programming, but reading intermediate and advanced C++ books is slow-going

You’ve had an introductory C++ course, but you’ve found that you still can’t follow your colleagues when they’re describing their C++ designs and code

You’re an experienced C or Java programmer, but you don’t yet have the experience to develop nuanced C++ code and designs

You’re a C++ expert, and you’re looking for an alternative to answering the same questions from your less-experienced colleagues over and over again

C++ Common Knowledge: Essential Intermediate Programming

C/C++ Programmer’s Reference, Third Edition
Link download

Programming Embedded Systems in C and C++

Trích:
This book introduces embedded systems to C and C++ programmers. Topics include testing memory devices, writing and erasing Flash memory, verifying nonvolatile memory contents, controlling on-chip peripherals, device driver design and implementation, optimizing embedded code for size and speed, and making the most of C++ without a performance penalty.

Link download

C++ Coding Standards: 101 Rules, Guidelines, and Best Practices

Trích:
Whether you’re working alone or with others, C++ Coding Standards will help you write cleaner codeand write it faster, with fewer hassles and less frustration.

Link Download

C++ Essentials
Link download


Exceptional C++ Style 40 New Engineering Puzzles, Programming Problems, and Solutions

Trích:
Which is better?

Don’t be too sure you know the answer. For one thing, “better” is an unuseful term unless you define specific measures. Better for what? Better in which cases? For another, the answer is almost always a balance of the two and begins with: “It depends…”

This book is about finding that balance in many detailed aspects of software design and implementation in C++, and knowing your tools and materials well to know when they are appropriate.

Link download

Secure Coding

Trích:
Secure Coding: Principles & Practices
By Mark G. Graff, Kenneth R. van Wyk

Publisher : O’Reilly
Pub Date : June 2003
ISBN : 0-596-00242-4
Pages : 224
Slots : 1

Despite their myriad manifestations and different targets, nearly all attacks on computer systems have one fundamental cause: the code used to run far too many systems today is not secure. Flaws in its design, implementation, testing, and operations allow attackers all-too-easy access. Secure Coding: Principles & Practices looks at the problem of bad code in a new way. Packed with advice based on the authors’ decades of experience in the computer security field, this concise and highly readable book explains why so much code today is filled with vulnerabilities, and tells readers what they must do to avoid writing code that can be exploited by attackers.

Link Download

Teach yourself C++ in 21 days
cuốn này hình như các bạn tích hợp từ mấy cuốn ebook đọc trực tuyến cám ơn các bạn

Trích:
This book is designed to help you teach yourself how to program with C++. In just 21 days, you’ll learn about such fundamentals as managing I/O, loops and arrays, object-oriented programming, templates, and creating C++ applications–all in well-structured and easy-to-follow lessons. Lessons provide sample listings–complete with sample output and an analysis of the code–to illustrate the topics of the day. Syntax examples are clearly marked for handy reference.

To help you become more proficient, each lesson ends with a set of common questions and answers, exercises, and a quiz. You can check your progress by examining the quiz and exercise answers provided in the book’s appendix.

Link download

C++ Templates: The Complete Guide

Trích:
Templates are among the most powerful features of C++, but they are too often neglected, misunderstood, and misused. C++ Templates: The Complete Guide provides software architects and engineers with a clear understanding of why, when, and how to use templates to build and maintain cleaner, faster, and smarter software more efficiently.

C++ Templates begins with an insightful tutorial on basic concepts and language features. The remainder of the book serves as a comprehensive reference, focusing first on language details, then on a wide range of coding techniques, and finally on advanced applications for templates. Examples used throughout the book illustrate abstract concepts and demonstrate best practices.

Readers learn

The exact behaviors of templates

How to avoid the pitfalls associated with templates

Idioms and techniques, from the basic to the previously undocumented

How to reuse source code without threatening performance or safety

How to increase the efficiency of C++ programs

How to produce more flexible and maintainable software

This practical guide shows programmers how to exploit the full power of the template features in C++.

Link download

Complete Reference C++(3rd Ed)
Link download

Programming Visual C++
Link download

Teach Yourself Visual C++ 6 in 21 days(file pdf)
Link download

Teach Yourself Cpp In 24H
Link download

Component-Oriented Programming
Link download

C++ by Dissection
Link download

C++ RedBooks
Link download

Categories: ebook

Làm thế nào để học tốt ở khoa CNTT?

Tháng Bảy 28, 2008 vuau 8 comments

Làm thế nào để học tốt ở khoa CNTT? (từ forum của ĐHBKSG)

“Làm sao để học tốt ở khoa CNTT?”
Tôi vẫn còn nhớ rõ thời điểm này cách đây đúng bốn năm. Khi ấy, tôi và các bạn cùng khoá vừa bước vào giảng đường đại học. Nỗi băn khoăn lớn nhất của tôi vào lúc ấy là câu hỏi trên. Tôi đã từng thấy rất nhiều người tài giỏi xuất thân từ khoa CNNT, nhưng cũng nghe rất nhiều anh chị than thở về việc học ở đây. Phải có điều gì tạo nên sự khác biệt, và tôi luôn thôi thúc bản thân mình tìm ra câu trả lời chính xác nhất.
Trong suốt thời gian ở khoa, tôi quan sát những người học trên mình vài khoá, học hỏi từ các bạn bè, và tự rút tỉa từ các kinh nghiệm bản thân. Qua những điều đã học, tôi nhận ra rằng hoàn toàn có thể học tốt ở khoa CNTT, và điều tạo nên sự khác biệt chính là phương pháp.
Vài hôm trước, có bạn sinh viên khoá dưới hỏi tôi rằng:
“Làm sao để học tốt ở khoa CNTT?”
Thật thú vị. Bốn năm đã qua, giờ đây tôi gặp lại câu hỏi trên. Thực tế thì cho đến thời điểm này tôi vẫn chưa tốt nghiệp ;-( Nhưng tôi cảm thấy rằng mình đã có thể tổng hợp những gì biết được, để giải đáp phần nào câu hỏi trên.
Đó chính là động lực khiến tôi phác thảo ra bài viết này.

Vậy thì, bài viết này phục vụ cho ai?
Thứ nhất, tôi muốn truyền đạt những kinh nghiệm của mình cho các bạn sinh viên vừa mới vào trường. Kể cả các bạn sang năm hai cũng có thể tìm thấy những điều bổ ích ở đây. Các bạn còn rất nhiều cơ hội phía trước.
Ngoài ra, các bạn sinh viên năm ba, bốn vẫn có thể cùng tôi chia xẻ những phương pháp được giới thiệu ở đây. Bởi vì, không có gì là quá muộn để bắt đầu. Hy vọng bài viết này có thể giải đáp phần nào những thắc mắc của các bạn.
Cuối cùng, tôi mong rằng bất kỳ ai đang học tập và làm việc ở khoa CNTT cũng có thể tham khảo rồi đóng góp ý kiến cho bài viết. Đây là câu hỏi của mọi người, nên tốt nhất là để mọi người cùng tham gia trả lời. Một điều rất thú vị trong ngành CNTT là ứng với mỗi thắc mắc của một người, luôn tồn tại ít nhất một ai đó có thể giải đáp, thế nhưng vấn đề là hai người có thể tìm thấy được nhau hay không.

Nhưng thật ra, khái niệm học tốt nghĩa là gì?
Chúng ta hãy xét hai sinh viên A và B vừa mới tốt nghiệp. Anh A tốt nghiệp với điểm số tuyệt vời, nhận được rất nhiều bằng khen. Dĩ nhiên, có người sẽ cho rằng anh ta học gạo, rằng anh ta sống chết vì điểm số trong suốt bốn năm rưỡi qua. Trong khi đó, anh B có điểm số không mấy ấn tượng. Anh ấy lý giải rằng thời gian được anh ấy dùng để trui rèn kiến thức chuyên ngành, kể cả những kiến thức bên ngoài phạm vi giảng dạy ở trường, nên anh ấy không quan tâm nhiều đến các kỳ kiểm tra. Dĩ nhiên, cũng có người cho rằng
điểm số ấy sẽ khiến anh mất nhiều thời gian hơn đối với nhà tuyển dụng. Thật ra, bạn chỉ cần đạt được thành tích như một trong hai người trên đã là học tốt rồi. Nếu đạt được cả hai, bạn có thể tự hào rằng mình đã học rất tốt. Ngược lại, vì không có được cả hai điều, bạn trông đợi vào tấm bằng tốt nghiệp ĐHBK sẽ giúp mình đạt được một mục tiêu nào đó. Thế thì bạn đã học bình thường. Cuối cùng, nếu bạn không có được bất kỳ điều nào trong ba điều kể trên, thì lẽ ra bạn cần suy nghĩ về chúng sớm hơn, và đã phải có một hành động nào đó để xoay chuyển tình thế. Bạn đang ở tình trạng báo động!
Tóm lại, nếu không được như anh A hay anh B, bạn đã không học tốt ở khoa CNTT.
3 nguyên tắc quan trọng cần nhớ
Nếu phải đúc kết toàn bộ kinh nghiệm để thành công khi học ở khoa CNTT bằng một từ duy nhất, nhiều người sẽ không ngần ngại trả lời: “học nhóm”. Hoàn toàn chính xác. Ngoài ra, bạn cũng cần biết thêm hai nguyên tắc nữa, đó là “tự đánh giá” và “tự học”.

Những ích lợi của học nhóm
Học nhóm (group-study) được đề cập rất nhiều ngay từ thời chúng ta còn học phổ thông. Nhưng vào thời điểm đó, học nhóm hay không học nhóm, điều đó không mấy khác biệt. Có khác biệt chăng là ta có nhiều cơ hội để chơi đùa với bạn bè hơn 8-) Nhưng ở môi trường đại học, đây là yếu tốt vô cùng quan trọng. Hầu hết mọi sinh viên chúng ta đều chơi trong ít nhất một nhóm bạn nào đó. Hiểu một cách đơn giản, bạn bè là những người có chung một sở thích, suy nghĩ nào đó khiến họ kết hợp lại với nhau. Từ đó, chúng ta có thể nhận ra trong khoa CNTT có những hình thức kết bạn như sau:

Xét về quê quán, có nhóm Quảng Nam, nhóm Tiền Giang, nhóm Sài Gòn…
Xét về nơi ở, có nhóm Ký Túc Xá, nhóm ở chung phòng trọ,…
Xét về trường phổ thông, có nhóm Lê Hồng Phong, nhóm Năng Khiếu,…
Xét về giới tính, có nhóm các bạn nữ, nhóm các bạn nam.
Xét về giải trí, có nhóm đá banh FIFA, nhóm đánh War Craft, nhóm bắn Half Life…
Xét về ăn uống, có nhóm Lẩu dê, nhóm Lẩu Cá kèo, nhóm Bia hơi…
Xét về tình cảm, có nhóm những bạn đang yêu nhau, nhóm những bạn đang tìm hiểu
nhau…
Xét về sinh hoạt xã hội, có nhóm Mùa hè xanh, nhóm làm web, nhóm Cán bộ Đoàn…
Ngoài ra, có nhóm những người quen nhau lúc vừa vào đại học, nhóm cầu lông, nhóm văn nghệ, nhóm Linux, nhóm xe Su xì po và điện thoại Nó kìa, vân vân và vân vân.

Tất cả các nhóm trên, nhóm nào cũng có cái hay của riêng nó. Đời sinh viên của bạn cũng nên “nếm trải” qua mùi vị của vài nhóm. Nếu bạn đang ở trong một nhóm nào đó, thì sẽ thật tuyệt vời nếu bạn có thể đưa nhóm mình từ hình thức hiện tại trở thành nhóm những người bạn cùng học tốt ở khoa CNTT (gọi tắt là nhóm học tốt).

Đạt được điểm số cao không phải là một nhiệm vụ bất khả thi
Hỗ trợ nhau học tập sẽ đem lại những lợi ích lớn lao cho mỗi thành viên. Thứ nhất, đây là cách thức hiệu quả nhất để bạn có được điểm số cao trong học tập. Có một số người rất thông minh (theo đánh giá của bản thân họ và của những xung quanh), nhưng thi cử lại rất lận đận. Có một số người rất chăm chỉ, nhưng điểm số cũng không được như ý. Bởi vì họ chưa biết cách học và thi cho thật tốt.

Bí quyết đơn giản nhất để có được điểm cao trong các kỳ thi ở trường Bách Khoa là phải “luyện” thật nhiều. Luyện gì ư? Hãy luyện các đề thi. Bạn có thể tìm thấy đề thi các năm trước ở các tiệm photo trong trường. Xem qua chúng và giải các bài trong đó, với phương châm: nhiều hơn, nhanh hơn và chính xác hơn. Nghe qua thì có vẻ dễ dàng và đơn giản quá, nhưng thật ra không có nhiều người có thể làm được.

Nhiều người hăm hở đi tìm các đề thi cũ ngay từ những tuần đầu tiên của học kỳ. Thế rồi, lòng kiên nhẫn của họ sớm bị thử thách vì có quá nhiều đề thi trong đó. Một bộ đề có từ 5 đến 15 đề. Mỗi đề có từ 4 câu hỏi trở lên, nếu là đề thi trắc nghiệm thì còn nhiều hơn nữa. Nên nhớ rằng một học kỳ lý tưởng (nghĩa là không phải trở nợ môn nào) cũng có ít nhất 7 môn học. Bỏ đi những môn lý thuyết thuần tuý, rồi làm một phép nhân đơn giản, cũng dễ thấy rằng một cá nhân không thể nào giải được phân nửa số lượng đề thi đó. Hơn nữa, làm sao người đó chắc chắn rằng những gì mình giải là đúng. Các bộ đề thi đều không có đáp án (nếu có thì cũng không nên tin tưởng hoàn toàn vào chúng). Và bởi vì phải làm ngày làm đêm mà vẫn chưa hết, họ sẽ không có thời gian để hệ thống hoá, rút ra những kỹ thuật giúp làm bài nhanh hơn. Thế đấy, họ đã làm không nhiều, không nhanh và cũng không chính xác. Rồi đến ngày thi, họ có thể bị sốc vì gặp phải một vấn đề hoàn toàn mới lạ, không làm kịp bài vì không “quen tay”, hay làm rồi mà không biết mình sai hay đúng. Đây cũng là một trong những lý do vì sao điểm số ở khoa CNTT thường rất thấp. Nếu bạn chỉ trông cậy vào sự thông minh của mình và trông cậy vào sự rộng lượng của giáo viên chấm thi, tức là bạn đã phó thác kết quả học tập của mình cho sự may rủi.

Thay vì vậy, hãy tập hợp thành những nhóm nhỏ và cùng nhau học thi. Từng người trong nhóm sẽ đảm nhận 2,3 môn. Đối với từng môn, người đó sẽ chịu trách nhiệm hệ thống lại kiến thức của toàn môn học, nhấn mạnh những điểm quan trọng. Ngoài ra, cũng cần phải giải hết các đề thi, sau đó chọn lựa những bài tinh hoa nhất rồi đề nghị những người còn
lại giải qua. Như vậy, bất kỳ người nào trong nhóm cũng có cơ hội giải qua tất cả các dạng bài tập. Hiển nhiên, điều quan trọng là làm quen được càng nhiều dạng bài tập càng tốt, chứ không phải số lượng bài tập đơn thuần. Nhưng điều này khó có thể được thực hiện nếu chỉ có một cá nhân duy nhất, bởi vì không thể phân loại được các dạng bài tập
nếu chưa từng giải qua tất cả các bài tập hiện có. Sau đó, những người trong nhóm sẽ trao đổi kết quả với nhau. Điều này sẽ giúp các thành viên biết được mình đã làm đúng hay chưa. Dĩ nhiên, kết quả cuối cùng của nhóm không hẳn đã là kết quả đúng. Nhưng đó chắc chắn là kết quả tốt hơn rất nhiều so với một người. Ngoài ra, cũng phải xét đến yếu tố xác suất. Kết quả của một nhóm 3,4 người thường cũng là kết quả tốt nhất của 200 người cùng một khoá. Vì vậy, bạn sẽ không sợ rằng điểm thi của mình thấp hơn bất kỳ ai.

Hình thức học thi tốt nhất là mỗi người tự giải đề thi ở nhà rồi gặp nhau ở một số buổi. Trong những buổi này, ngoài việc trao đổi kết quả, các thành viên còn chỉ bảo cho nhau những kỹ thuật đặc biệt giúp tăng tốc, hoặc giảm thiểu sai sót khi làm bài. Tôi và các bạn của tôi thường ghi lại các vấn đề này thành các tài liệu rồi trao đổi với nhau. Một lợi ích không thể không nhắc đến của việc cùng học thi là nó sẽ thúc đẩy các thành viên chăm chỉ hơn. Sự ganh đua, hợp tác sẽ giúp mọi người cảm thấy việc giải một số lượng lớn các bài tập trong một thời gian ngắn đỡ nhàm chán hơn so với khi làm một mình.

Nhiều người hay than thở về điểm số của mình, cho rằng do mình còn lười biếng, do khối lượng kiến thức nhiều quá, do đề thi ở đâu đâu… Có lẽ họ đã quên bài học từ thời phổ thông. Làm sao họ đã thi đậu vào khoa CNTT, nếu không phải vì đã chăm chỉ giải các đề thi đại học đến mức thuần thục? Việc thi cử ở đại học cũng không khác mấy, thế mà họ đã sớm ngủ quên trên chiến thắng. Hãy làm các bài tập trong sách, do giảng viên cho, trong các bộ đề. Và hãy cùng làm với những người bạn của mình. Đó là bí quyết đơn giản để có điểm số cao.
Nhóm học tốt giúp tiếp thu kiến thức hiệu quả hơn
Nếu học tập hơn bốn năm trời ở khoa CNTT mà chỉ có luyện giải bài tập thì thật còn khổ hơn sống dưới địa ngục. Nhưng bạn đừng quá thật vọng. Theo quan sát của tôi, ngay cả những sinh viên đạt được điểm số cao nhất ở khoa CNTT cũng chỉ dành tổng cộng tối đa là 6 tuần trong một học kỳ để tập trung học thi. Mà một học kỳ có đến 15 tuần, cộng thêm 3 đến 4 tuần dành cho thi cử. Ngoài ra còn chưa kể đến khoảng thời gian nghỉ hè và nghỉ Tết. Như vậy, dù cho thi cử có là sự đối phó đối với bạn, thì bạn vẫn còn rất nhiều thời gian để học và làm những gì mà bạn cho rằng thật sự cần thiết.

Ngoài điểm số, ranh giới giữa một sinh viên học tốt và một sinh viên học chưa tốt còn nằm ở chỗ ai biết tận dụng khoảng thời gian rộng rãi này. Một nhóm học tập hoạt động hiệu quả sẽ giúp các thành viên biết làm đúng việc vào đúng thời điểm.

Chẳng hạn, câu hỏi “Tôi nên học ngôn ngữ lập trình nào đây?” là thắc mắc thường thấy nhất của sinh viên năm một, năm hai. Nếu chỉ có một mình, bạn có thể sẽ loay hoay mãi với câu hỏi này, hoặc sự lựa chọn của bạn là không chính xác, hoặc bạn đã học được đúng ngôn ngữ cần thiết những chưa đạt được đến độ sâu kiến thức. Giáo viên hay những sinh viên khoá trên cũng có thể giúp đỡ, nhưng sẽ không hiệu quả bằng bạn bè cùng giúp đỡ lẫn nhau. Bởi vì người hiểu khả năng của bạn nhất chính là bản thân bạn, người thứ hai là người thường xuyên làm việc với bạn. Người giỏi cách mấy nhưng không hiểu về bạn thì khó có thể đưa ra một lời khuyên phù hợp được.

Thực sự thì rất khó để đưa ra một phương pháp cụ thể để hướng dẫn một nhóm đi đến thành công. Có lẽ cách tốt hơn là tôi nêu ra những kinh nghiệm và những nguyên tắc cơ bản. Thứ nhất, mọi hoạt động phải có mục tiêu rõ ràng.

“Chúng ta sẽ học Java trong học kỳ này” là một mục tiêu. Nhưng chưa rõ ràng. Học Java để làm gì? Làm sao chắc rằng chỉ cần một học kỳ là xong? Học xong rồi thì làm gì tiếp? Học như thế nào đây? Nhiều nhóm bắt đầu với một mục tiêu như trên, nhưng rồi không xác định được những việc làm cụ thể để ràng buộc các thành viên. Thế rồi học kỳ này trôi qua một cách nhanh chóng. Sang học kỳ mới, mục tiêu đổi thành: “Chúng ta sẽ cố gắng học Java trong học kỳ này”. Lại một học kỳ trôi qua. Đến học kỳ kế tiếp, mục tiêu mới sẽ là “Chúng ta sẽ học C# trong học kỳ này”. Repeat … Until 3>5.

“Chúng ta sẽ viết một chương trình tương tự như Address Book của Windows, viết bằng Java”. Đây là một mục tiêu rõ ràng hơn. Do đó, nó có khả năng đưa nhóm đến thành công cao hơn. Nhưng chưa đủ. Cần làm rõ hơn nữa. Cho đến khi nào các thành viên cảm thấy rằng việc học Java cũng thúc ép như việc thi học kỳ, tức là nhóm đã tạo ra được một môi trường hiệu quả cho các thành viên cùng học tập.

Thứ hai, phải kiên trì. Bất kỳ nhóm học tập nào cũng gặp khó khăn, không sớm thì muộn. Có thể là do khó khăn của riêng một cá nhân, chẳng hạn không đủ thời gian, chưa đủ trình độ, không hợp tính,… Cũng có thể cách tổ chức nhóm chưa hiệu quả. Cho dù hoàn cảnh có thật vọng thế nào đi nữa, hãy cố gắng tiến lên. Vì nếu bỏ cuộc, bạn chỉ còn lại hai lựa chọn. Hoặc là tập trung hoàn toàn vào việc học vì điểm số, nó không thú vị lắm đâu. Hoặc là buông xuôi tất cả, nghĩa là cuộc đời sinh viên của bạn đã chấm hết.

Nguyên tắc cuối cùng, nếu một người trong nhóm nản chí, bạn hãy truyền sự kiên nhẫn của mình cho người đó. Đây là lợi ích lớn nhất và cũng là duy nhất mà việc học một mình không thể có được. Edison từng nói: “Nhiều người bỏ cuộc ngay khi họ ở cách sự thành công một khoảng rất ngắn”. Sự động viên, giúp đỡ, ganh đua lẫn nhau trong nhóm tạo nên động lực mạnh mẽ cho các thành viên. Theo kinh nghiệm của riêng tôi, một nhóm học tập xuất phát từ nhóm những người bạn thân thường dễ xây dựng được những giá trị này hơn.

Hãy liên kết lại
Nếu bạn đang lẻ loi và cảm thấy mình học chưa tốt. Hãy tìm những người bạn. Nếu bạn đang lẻ loi nhưng tin rằng mình đang học tốt, bạn vẫn nên tìm những người bạn để có thể học tốt hơn. Hầu như những nhân vật thành công trong ngành CNTT đều có những người bạn cũng thành công không kém, họ đã từng cùng học tập và làm việc với nhau suốt thời tuổi trẻ: Bill Gates và Paul Allen ở Microsoft, Jerry Yang và David Filo ở Yahoo!,…

Một nhóm học tập hiệu quả được đánh giá qua một tiêu chuẩn duy nhất: nhóm ấy có giúp các thành viên hài hoà cả đối nội (học các môn trong trường và có điểm số tốt) lẫn đối ngoại (học những kiến thức vốn rất rộng lớn trong ngành CNTT). Nói cách khác, nhóm ấy có giúp thành viên học tốt hơn hay không.

Nên nhớ rằng, tập hợp những người học tốt lại với nhau không phải là cách để thành lập nhóm học tốt. Ngược lại, nhóm học tốt là nhóm mà nhờ chơi với nhau, những người bạn trong đó trở thành những người học tốt.
Người đời thường nói: chọn bạn mà chơi. Tương tự, hãy nói cho tôi biết bạn đang chơi với ai, tôi sẽ cho biết bạn có đang học tốt ở khoa CNTT hay không.
Phải biết tự đánh giá mình
Không ai trong chúng ta lại muốn rằng sau bốn năm rưỡi học ở đây, trình độ của mình so với lúc mới vào cũng chẳng khác là bao. Những viễn cảnh đen tối ấy hoàn toàn có thể xảy ra nếu bạn không có khả năng tự đánh giá bản thân mình.

Tự đánh giá có nghĩa là biết mình đang ở đâu. Ngay học kỳ đầu tiên, có thể bạn sẽ cảm thấy thua thiệt so với một số bạn bè. Nhưng đừng than thở rằng trước kia (hồi phổ thông), bạn chưa được chuẩn bị về kiến thức tin học cơ bản, chưa từng học qua lập trình, chưa quen đọc sách tiếng Anh. Cũng đừng nản chí nếu bạn chưa có máy vi tính, chưa tiếp xúc với Internet. Đó là những suy nghĩa tiêu cực và sẽ làm giảm sức phấn đấu của bạn. Mọi sinh viên được tuyển vào khoa CNTT đều dựa trên năng lực của họ, hoàn toàn không căn cứ vào điều kiện hay kiến thức chuyên ngành sẵn có. Tất cả được giả định là bắt đầu từ con số 0. Mọi người cùng có một chương trình học, cùng có một lượng thời gian, hoàn toàn bình đẳng như nhau. Nếu bạn chưa có gì, tức là bạn giống như phần đông sinh viên ở đây. Còn nếu bạn đã có sẵn nền tảng về tin học, đấy là một thuận lợi nhất định, nhưng không bảo đảm bạn sẽ học tốt hơn những người không có sự thuận lợi ấy. Xin nhắc lại, hoàn toàn không có sự bất lợi giữa những sinh viên khi mới vào đại học. Dĩ nhiên, ở đây tôi không xét đến những trường hợp đặc biệt khó khăn về tài chính, những bạn sinh viên
này thật sự cần sự trợ giúp từ nhiều nguồn khác nhau.

Tự đánh giá còn có nghĩa là biết được bản thân mình cần gì và không cần gì. Một năm học đại cương có thể làm bạn lo lắng không biết mình cần chuẩn bị gì để bước vào chuyên ngành. Đúng là chương trình đại cương không có những môn học mang tính chuẩn bị hoặc định hướng cho sinh viên. Như đã nói, đây là lúc bạn nên cùng với những người xung quanh để hỗ trợ nhau tìm ra hướng đi cho chính mình. Bạn nên tìm hiểu từ sách báo, từ giảng viên, từ những sinh viên khóa trước. Nhưng quan trọng là bạn phải dám đưa ra một quyết định chính xác mình sẽ chọn lựa hướng đi nào. Sau đó hãy cố gắng thực hiện nó, nếu cùng với những người bạn khác thì càng tốt. Có thể vài lần thất bại mới
có thể giúp bạn tìm ra được điều mà mình thực sự cần. Trong phạm vi hiểu biết của tôi, đó là cách tốt nhất để thực hiện.

Nhưng quan trọng hơn là biết nhận diện những gì thực sự không cần thiết và gạt hẳn chúng sang một bên. Ngành CNTT có rất nhiều lĩnh vực, muốn chuyên sâu vào một lĩnh vực đòi hỏi rất nhiều thời gian và công sức. Không chỉ riêng sinh viên ở khoa CNTT, mà hầu như rất nhiều bạn trẻ Việt Nam có khuynh hướng ôm đồm mọi thứ, kết cuộc là không tinh thông được thứ nào. Tinh thông ở đây có nghĩa là làm được việc trong lĩnh vực đó, hoặc có thể thích ứng nhanh với lĩnh vực ấy khi cần thiết. Biết nhiều mà chỉ hời hợt thì cũng giống như là không biết gì cả.

Một ví dụ khác, nhiều bạn sinh viên băn khoăn khi nghe nói rằng các trung tập đào tạo lập trình viên quốc tế như Aptech, Informatics, NIIT,… có chương trình đào tạo hiện đại và thực tế hơn rất nhiều so với trường đại học. Trong trường không dạy C/C++/C#, Java, SQL Server, ASP, JSP,… thì làm sao mai mốt đi làm được. Nếu suy nghĩ như vậy tức là bạn đã chưa tự đánh giá đúng trình độ của mình. Bạn đang được đào tạo để trở thành kỹ sư, trong khi những nơi kia đào tạo các kỹ thuật viên. Không có cấp bậc nào là “cao cấp” hơn, bởi vì chúng phục vụ cho những mục đích hoàn toàn khác nhau. Các trung tâm đào tạo bạn cách sử dụng công cụ, còn trường đại học đào tạo bạn suy nghĩ về công cụ và tạo ra công cụ. Dĩ nhiên, bạn phải biết cách sử dụng công cụ trước. Nhưng những kiến thức này được giả định là bạn phải biết và không có môn học cụ thể nào về chúng. Nếu bây giờ bạn chưa biết thì phải tự học để mà biết. Trong trường hợp bạn không thể tự học, mà nhất định phải đi học ở các trung tâm, có thể bạn đã ôm đồm nhiều thứ một lúc. Đó là tình trạng mà báo chí thường than phiền: thầy không ra thầy, thợ không ra thợ.

Ngoài ra, tự đánh giá cũng có nghĩa là biết nhìn nhận mọi sự việc theo đúng bản chất của nó. Bởi vì kiến thức trong ngành CNTT thật rộng lớn mà trình độ của mọi sinh viên khi mới vào trường thì đều chưa cao, nên các sinh viên thường hay bị dao động bởi cái gọi là “nghe nói rằng”. Chẳng hạn:

Nghe nói rằng C++ rất khó nên chưa dám học. Nghe nói rằng Java chạy rất chậm nên chưa muốn học.
Nghe nói rằng phần cứng rất “chua”, lại không bảo đảm việc làm trong tương lai nên không muốn quan tâm. Nếu buộc phải học thì học một cách hời hợt.

Thậm chí, nghe nói rằng đề thi cuối kỳ sẽ lấy từ sách này nên đổ xô đi mua cuốn sách ấy.
Thật hài hước phải không. Bạn đang học ngành công nghệ thông tin. Thông tin là những gì có thể tăng sự chắc chắn về một vấn đề nào đó. Nhìn sâu xuống dưới, thông tin được thể hiện bằng hai con số: 0 và 1 (không và có). “Nghe nói rằng” là những gì hoàn toàn không chắc chắn. Đừng để chúng điều khiển bạn.

Categories: lập trình

Bài tập cơ bản C++

Tháng Bảy 27, 2008 vuau 1 comment

Bài 1 : Tạo một lớp vector gồm có các thành phần sau:

-Các thuộc tính : float* v, int n
-Hàm thiết lập không tham số
-Hàm thiết lập một tham số
-Hàm thiết lập hai tham số
-Hàm thiết lập sao chép
-Hàm hiển thị
-Hàm hủy

Viết một chương trình kiểm tra

Bài 2 : Xây dựng lớp date1 có các thành phần sau:

-Các thuộc tính: day, month, year
-Hàm tạo có sử dụng tham số mặc định
-Hàm kiểm tra ngày tháng được sử dụng trong hàm tạo
-Hàm hiển thị

Viết một chương trình kiểm tra.

Bài 3: Xây dựng lớp nhanvien có các thành phần sau:

-Các thuộc tính : tendem, ho, ngaysinh, ngayvaolam
Chú ý: Sử dụng con trỏ char cho tendem, ngaysinh, ngayvaolam có kiểu lớp date1 xây dựng ở bài tập 2 (bài trên).
-Hàm tạo
-Hàm trả về tendem
-Hàm trả về ho
-Hàm hủy
-Hàm hiển thị

Viết chương trình kiểm tra.

Bài 4:Xây dựng xâu ký tự có các thành phần sau:

- Các thuộc tính : char *str, int length
- Hàm tạo một tham số (char *s)
- Hàm hiển thị xâu và độ dài xâu
- Hàm nối xâu để cộng hai xâu (xaukytu s)
- Hàm hủy

Viết chương trình kiểm tra

Bài 5: Tạo lớp phân số có các thành phần sau:

- Các thuộc tính: ts, ms;
- Hàm tạo có sử dụng tham số mặc định
- Nạp chồng toán tử sau:

  • Toán tử cộng (+)
  • Toán tử trừ (-)
  • Toán tử nhân
  • Toán tử chia (/)
  • Toán tử nhập (>>)
  • Toán tử xuất (<<)

Bài 6 : Xây dựng các lớp theo cây thừa kế sau:

- Lớp hình tròn, hình vuông, tam giác đều là thừa kế từ lớp hai chiều, lớp lập phương, lớp hình cầu là lớp thừa kế từ lớp ba chiều. Lớp hai chiều, lớp ba chiều là thừa kế từ lớp hình vẽ.

Bài 7: Khuôn mẫu lớp C++

Sử dụng khuôn hình lớp xây dựng lớp List có các tính chất sau :

- Các thuộc tính : T a[max], int size;
- Các phương thức: Chèn , xóa, tìm kiếm, sắp xếp các phần tử của một mảng.

Bài 8 : Sử dụng khuôn hình lớp xây dựng lớp stack có các thành phần sau:

- Các thuộc tính : T a[max]; int top;
- Các hàm thành phần:

+stack()
+void push (T & itemp) // Chèn một phần tử có kiểu T vào stack
+T pop() // Lấy phần tử ra khỏi stack
+T get_top() // Lấy giá trị phần tử đầu tiên của stack


Bài 9 : Khuôn mẫu lớp C++

Xây dựng lớp vector có các thuộc tính : T*v,int n và các hàm thành phần;
Sử dụng lớp vector cho các đối tượng có kiểu dữ liệu int, float, phanso.

Bài 10: Hàm bạn C++

Sử dụng hàm bạn xây dựng một hàm ngoài lớp nhân matran ( một đối tượng thuộc lớp matrix) với vector (đối tượng thuộc lớp vector)

Lớp vector có các hàm thành phần sau :
-Hàm thiết lập
-Hàm hiển thị
Lớp matrix có một hàm thiết lập .

Bài 11: Khuôn hình hàm C++

Xây dựng khuôn hình hàm Swap cho phép trao đổi giá trị 2 biến số truyền vào
Xây dựng khuôn hình hàm Sort dùng để sắp xếp giá trị của một mảng trong đó có sử dụng khuôn hình hàm Swap
Xây dựng khuôn hình hàm Print để in giá trị của một mảng ra màn hình.
Xây dựng lớp phanso để sử dụng các khuôn hình hàm trên.

Bài 12: Khuôn hình (Template) C++

Chương trình sử dụng khuôn hình để thực hiện việc tìm phân số nhỏ nhất, sau đó đưa kết quả lên màn hình.

Bài 13: Xây dựng lớp string có các thành phần sau:


- Các thuộc tính : char * s, int length;
- Hàm thiết lập một tham số ;
- Hàm thiết lập sao chép
- Hàm huỷ
- Nạp chồng các toán tử sau:


Toán tử gán (=), toán tử cộng (+=), toán tử kiểm tra xâu rỗng (!),toán tử sosánh bằng (= =),toán tử so sánh không bằng (!=),toán tử so sánh lớn hơn(>),toán tử so sánh nhỏ hơn (<), toán tử so sánh lớn hơn hoặc bằng(>=),toán tử so sánh nhỏ hơn hoặc bằng(<=),toán tử lấy phần tử của xâu tại chỉ số ( [ ] ),toán tử nhập (>>),toán tử xuất (<<)
Viết chương trình kiểm tra.

Bài 14. Xây dựng lớp vector có các thành phần sau:


- Các thuộc tính : int n; int * v;
- Hàm thiết lập không tham số
- Hàm thiết lập hai tham số (int size, int * a);
- Hàm thiết lập sao chép
- Hàm huỷ
- Nạp chồng các toán tử sau:


+ Toán tử gán (=)
+ Toán tử so sánh bằng (= =)
+ Toán tử so sánh khác (!=)
+ Toán tử lấy phần tử tại chỉ số ( [] )
+ Toán tử nhập (>>)
+ Toán tử xuất (<<)

Viết một chương trình kiểm tra có sử dụng biến và hàm static để đếm số đối tượng vector được khởi tạo.

Bài 15 :Xây dựng lớp date1 có các thành phần sau:


– Các thuộc tính : day, month, year
- Hàm thiết lập có tham số mặc định
- Hàm kiểm tra năm nhuận
- Hàm kiểm tra ngày cuối tháng
- Nạp chồng toán tử tăng (++)
- Nạp chồng toán tử (+ =)
- Nạp chồng toán tử xuất (<<)

Viết chương trình kiểm tra.

Bài 16: Tạo lớp complex (real + image *i ) có các thành phần sau:

- Các thuộc tính : real , image;
- Hàm tạo có sử dụng tham số mặc định
- Nạp chồng các toán tử sau:

+ Toán tử cộng (+)
+ Toán tử cộng thành phần real của số phức b lên x (b.real + x)
+ Toán tử trừ (-)
+ Toán tử nhập (>>)
+ Toán tử xuất (<<)

Bài 17: Tạo một lớp số phức có dạng a+bi :


– Thành phần dữ liệu bao gồm: phần thực(a) và phần ảo(b)
– Các hàm thành viên:
+ Hàm đặt giá trị cho phần thực(a) và phần ảo (b) của số phức
+ Hàm cộng hai số phức
+ Hàm hiển thị số phức dưới dạng (a+bi);


Viết các hàm thực hiện trong chương trình chính làm các công việc sau:
1. Nhập các phần tử cho mảng các số phức
2. Hàm cộng hai mảng số phức
3. Hiển thị các phần tử của mảng

Categories: lập trình

ebook và tool cho VC++ 6.0

Tháng Bảy 27, 2008 vuau Phản hồi đã bị khóa

- Lập trình windown với MFC (VC++ 6)-TV hẳn hoi kèm theo code

http://www.mediafire.com/?extmnz11pmd

Photo Sharing and Video Hosting at Photobucket

- Sams Teach Yourself Visual C++ 6 in 21 Days + Code

http://www.mediafire.com/?7xm3ntxcla4

Photo Sharing and Video Hosting at Photobucket

TOOL:

Bản portable này tiện dụng cho những người hay làm việc trên nhiều máy, có thể chép vào USB để sử dụng
File nén là 41MB, giải nén ra gần 200MB, có kèm theo bộ Platform SDK và DirectX 9 (Feb 2007) SDK (chỉ có Include và Lib thôi), mọi người giải nén 2 bộ này để dùng nếu cần.
Chạy file StartVC.exe để bắt đầu
Download:
http://www.4shared.com/file/49593394…6Portable.html

Link Direct (download trực tiếp)

Categories: ebook