Xem kết quả thăm dò: Trước khi đọc bài viết này, bạn đã biết lập trình C chưa ?

  • Chỉ nghe nói về lập trình và mình rất muốn học.

    0 0%
  • Đang học cách sử dụng C/C++.

    15 88.24%
  • Sử dụng tốt C/C++.

    1 5.88%
  • Sử dụng tốt C/C++ và một vài ngôn ngữ lập trình khác.

    1 5.88%
Bạn không thể bỏ phiếu ở thăm dò này
Số người bỏ phiếu 17.
Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 25 kết quả

Đề tài: Hướng Dẫn Học lập trình C - www.siteduzero.com

  1. #1
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    Red face Hướng Dẫn Học lập trình C - www.siteduzero.com

    Trên diễn đàn siteduzero.com có bài giảng về lập trình C khá hay và đơn giản, dành cho những bạn mới bắt đầu học lập trình. Tranh thủ những thời gian rảnh rỗi, mình dich nó sang tiếng việt. Mình sẽ update thường xuyên, vì thế xin các bạn ủng hộ mình.
    Mình chỉ là hạng gà mờ về ngoại ngữ cũng như văn chương, vì vậy các câu văn mình viết khá chuối, đôi khi có sai sót, xin nhẹ tay và hãy giúp mình chỉnh sửa để hoàn thiện bản dich của quyển sách này.

    Quyển sách có tên là "Apprenez à programmer en C" tập hợp những hướng dẫn về C có trong trang web siteduzero.com, tác giả chính là Mathieu Nebra, nickname M@teo21, đây là một trong những quyển sách hướng dẫn khá hay, chi tiết, đầy đủ và phải nói là cực kì đơn giản và dễ hiểu. Bạn có thể tìm hiểu thêm qua địa chỉ: siteduzero.com/boutique-614-65-apprenez-a-programmer-en-c.html

    Được sự cho phép của chính tác giả, mình đã bắt đầu dịch và có thể post lên diễn đàn khác (trước đó mình đã thử post phần I lên diễn đàn ubuntu-vn.org, nhưng do gặp một số vẫn đề nhỏ về kỹ thuật nên mình đã không post tiếp ở đó nữa). Vì thế tất cả những gì mình viết, đều được ghi trong cuốn "Apprenez à programmer en C".

    Bản dịch hiện đang trong giai đoạn tiến hành nên có rất nhiều sai sót. Các bạn hãy giúp mình sữa chữa và hoàn thiện.

    Xin nói thêm là công việc này của mình chỉ xuất phát từ sở thích, vì thế bản dịch không phục vụ cho bất kì mục đích nào khác ngoài việc chia sẻ kiến thức với cộng đồng.

  2. #2
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    Bạn thích lập trình, nhưng bạn không biết phải bắt đầu từ đâu ?
    (Bạn có những bài học khá phức tạp và bạn không biết phải bắt đầu từ đâu?)



    Bạn là newbie?
    Đây là cơ hội dành cho bạn.
    Bạn sẽ có được những bài giảng lập trình cơ bản, cực kì cơ bản dành cho những người mới bắt đầu.
    Tôi hiểu rằng tất cả mọi người đều bắt đầu từ “newbie” và bạn cũng như vậy. Vì vậy bạn không có gì làm xấu hổ khi bạn là “newbie”.

    Tôi sẽ hướng dẫn tất cả , tuần tự, và bạn chỉ phải thực hiện những điều đơn giản.

    • Làm cách nào để tạo nên những chương trình như các trò chơi, cửa sổ.
    • Bạn cần dùng chương trình nào để lập trình ?
    • Ngôn ngữ lập trình là gì? Bạn bắt đầu từ ngôn ngữ nào?


    Tôi hi vọng đây sẽ là một bài hướng dẫn thú vị. Và bài hướng dẫn này giúp bạn tốt nhất có thể.
    Bài hướng dẫn này bao gồm những phần sau:

    I. [Ngôn ngữ lập trình C] Nền tảng để bắt đầu
    II. [Ngôn ngữ lập trình C] Kỹ thuật nâng cao
    III. [Thư viện C] Tạo game 2D trên SDL
    IV. [Ngôn ngữ lập trình C++] Lập trình định hướng đối tượng. (La Programmation Orientée Objet)
    V. Annexes





    Phần I : [Ngôn ngữ lập trình C] Nền tảng để bắt đầu



    Bạn đã sẵn sàng?
    Bây giờ, chúng ta bắt đầu.
    Những kiến thức nền tảng ta học trong suốt những chương đầu được chăm chút khá kĩ. Vì những điều bạn học ở đây là cần thiết để bạn có thể đọc và hiểu ngay các bài học khác.
    Và đây là những gì bạn sẽ học trong chương đầu tiên:

    1) Bạn đã nói "lập trình"?
    Lập trình là gì ?
    Lập trình trên ngôn ngữ nào ?
    Lập trình có khó không ?
    Q.C.M.

    2) Có được những công cụ cần thiết !
    Những công cụ cần thiết cho lập trình
    Các bạn có thể chọn... Dev-C++
    Hay là... Visual C++
    Và cái này nữa... Code::Blocks
    Hoặc Mac... Xcode
    Q.C.M.

    3) Chương trình đầu tiên của bạn
    Console hay là cửa sổ ?
    Một ít về code
    Hiển thị một tin nhắn ra màn hình
    Những chú thích, rất tiện dụng !
    Q.C.M.

    4)Thế giới của những biến số
    Công việc của bộ nhớ
    Khai một biến
    Hiển thị nội dung của biến
    Lưu lại giá trị được chọn
    Q.C.M.

    5) Công cụ tính toán
    Những tính toán cơ bản
    Cách viết ngắn gọn
    Thư viện toán học
    Q.C.M.

    6) conditions: điều kiện
    La condition "if... else"
    Les booléens, trung tâm của những điều kiện
    La condition "switch"
    Les ternaires : des conditions condensées
    Q.C.M.

    7) Les boucles: vòng lặp
    Thế nào là vòng lặp
    La boucle while
    La boucle do... while
    La boucle for
    Q.C.M.

    8) Thực hành: Hơn hay kém, trò chơi đầu tiên của bạn
    Chuẩn bị và những lời khuyên
    Sữa chữa !
    Ý tưởng nâng cấp

    9) Les fonctions: hàm
    Tạo ra và gọi une fonction
    Hàng tá những ví dụ để giải thích
    Q.C.M.


    Xin ghi chú rằng có rất nhiều từ ngữ chuyên ngành mình không biết phải dịch sang tiếng việt như thế nào cho đúng nên đành giữ nguyên. Nếu mình tìm được từ tương ứng bên tiếng anh thì sẽ thêm vào giúp các bạn có thể hiểu rõ hơn. Có rất nhiều lỗi về từ vựng vì vậy các bạn giúp đỡ mình nha
    Đã được chỉnh sửa lần cuối bởi daihung.pham : 22-02-2010 lúc 05:38 AM.

  3. #3
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    Phần I : [Lý thuyết] Cơ sở để bắt đầu


    1) Bạn đã nghe nói về “lập trình”?



    Chào mừng các bạn đến với bài học lập trình C/C++ của tôi,
    Tôi sẽ là người hướng dẫn (hay là thầy giáo nếu bạn thích ) trong suốt các bài học.
    Vậy tôi là ai? Tên tôi, hay là nickname của tôi là M@teo21. Tôi đã từng viêt rất nhiều bài hướng dẫn khác trên siteduzero.com, đặc biệt tôi là người đã tạo nên trang web này. Và đây không phải là lần đầu tiên tôi viết những bài hướng dẫn cơ bản .
    Nhưng khoan hãy nói về tôi, mà là các bạn.
    Các bạn đã xác định chính xác lí do để ở đây: các bạn muốn học lập trình. Các bạn không hề biết tí gì về lập trình, các bạn cũng không chắc đã biết nó là gì nhưng... chắc chắn là các bạn muốn học lập trình.
    Nhưng lập trình C / C++... Đó nghĩa là gì? Và có phải thật sự tốt nếu ta bắt đầu từ nó? Và bạn đã biết lập trình trước đó chưa? Có phải chúng ta có thể làm tất cả với nó?
    Nhiêm vụ của phần học này là trả lời tất cả những câu hỏi đơn giản như thế, nhưng điều đó hết sức quan trọng.

    Và đây là điều ta cần biết trong chương này:

    1) Bạn đã nói "lập trình"?
    Lập trình là gì ?
    Lập trình trên ngôn ngữ nào ?
    Lập trình có khó không ?
    Q.C.M.


    Lập trình là gì?


    Chúng ta bắt đầu từ một câu hỏi đơn giản nhất có thể.
    Nếu bạn nghĩ rằng bạn đã biết tất cả những điều này trước đó, tôi vẫn khuyên bạn nên đọc lại nó. Tôi bắt đầu bài hướng dẫn từ zero.


    “lập trình” (programmer) nghĩa là gì?

    Vâng tôi sẽ tránh làm giống như thầy giáo dạy văn của tôi. Tôi sẽ không đưa ra cho bạn nguồn gốc của từ lập trình (programmer). Nhưng dù sao đi nữa nó xuất phát từ một từ latin "programmeus" tôi tin là bạn đã bắt đầu cảm thấy hơi khó tin.
    Nói đơn giản, lập trình nghĩa là tạo nên những "chương trình tin học". Những chương trình đòi hỏi máy tính thực hiện tất cả công việc.

    Máy tính bạn đã được thêm vào các chương trình ở nhiểu thể loại:

    • Calculator chính là một chương trình.
    • Công cụ xử lí văn bản của bạn cũng là một chương trình.
    • Các softwars dùng để “chat” cũng là chương trình.
    • Trò chơi cũng là chương trình.


    Tóm lại, chương trình ở khắp mọi nơi trên máy tính và cho phép thực hiện bất cứ điều gì. Bạn có thể tạo ra một chương trình mang tính cách mạng nếu bạn may mắn, hoặc thực hiện một game đánh nhau nhau 3D trên internet... Máy tính của bạn có thể làm tất cả (trừ những việc như làm ra café)

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		eyecandy1.jpg
Lần xem:	1
Size:		143.1 KB
ID:		15330
    Trò chơi nổi tiêng Half-life 2, được lập trình bằng C++



    Chú ý rằng tôi không nói người ta thực hiện trò chơi hoàn toàn bằng cách đánh máy. Ý của tôi đơn giản là tất cả những điều đó là có thể, nhưng chắc là bạn phải cần làm việc rất nhiều



    Bạn sẽ không bắt đầu bằng việc thực hiện một trò chơi 3D. Điều đó chắc chắn là tự sát . Chúng ta hãy bắt đầu từ những điều cơ bản. Đầu tiên là làm sao hiển thị lên màn hình một tin nhắn.

    Bạn phải học từng thứ từng thứ một, và bạn sẽ có khả năng thực hiện những chương trình với độ khó ngày càng gia tăng. Mục đích của toàn bộ bài hướng dẫn này giúp bạn có khả năng xoay sở trên bất kì chương trình viết bằng C hay C++ nào.

    __________________________________



    Lập trình bằng ngôn ngữ nào?



    Ít nhất ta có thể nói rằng máy tính là một cỗ máy kì lạ: chỉ nhận và gửi lại những số 0 và 1.
    Ví dụ, nếu dịch: ”thực hiện phép tính 3+5” về ngôn ngữ tin học, nó sẽ có dạng như sau:

    0010110110010011010011110

    (dãy số trên do tôi chế ra đấy, vì tôi không thạo việc dịch ra ngôn ngữ tin học )

    Những số mà bạn thấy ở trên, là ngôn ngữ của máy tính, gọi là ngôn ngữ nhị phân (langage binaire). Máy tính của bạn chỉ hiểu đươc ngôn ngữ này. Và như bạn nhận thấy, chúng ta hoàn toàn không thể hiểu và học được ngôn ngữ đó.

    Và đây chính là vấn đề đầu tiên của chúng ta:


    Làm cách nào để giao tiếp với máy tính đơn giản hơn việc dùng những số 0 hay 1?

    Máy tính của bạn không nói được tiếng anh cũng như tiếng pháp. Và không ai quan niệm phải viết một chương trình bằng ngôn ngữ nhị phân, kể cả những nhà lập trình điên nhất cũng không làm chuyện đó.

    Và ý tưởng là phải tạo ra một ngôn ngữ mới đơn giản hơn và nó sẽ được dich sang ngôn ngữ nhị phân sau đó. Đây là việc của những nhà lập trình chuyên về ngôn ngữ. Và các chương trình trình này đã đuợc tạo ra bởi họ, và chúng ta sẽ không cần phải thực hiện lại, thật là may mắn .

    Bạn viết một lệnh:
    ”thực hiện phép tính 3+5”
    Và chương trình dịch sẽ chuyển thành những dạng như sau:

    "0010110110010011010011110"

    Tôi sẽ lập một biểu đồ để giúp bạn hiểu rõ hơn:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		01.png
Lần xem:	16
Size:		5.2 KB
ID:		15331

    Biểu đồ cực kì đơn giản về việc thi hành một chương trình

    Ở đây tôi chỉ dùng những từ ngữ đơn giản để giải thích, nhưng trong tin học mỗi vấn đề như vậy đều có một thuật ngữ riêng. Suốt các bài học, bạn sẽ phải học không ít những thuật ngữ đó. Điều đó không chỉ giúp bạn có thể dễ dàng biểu đạt những vẫn đề về tin học, hơn nữa, bạn có thể hiểu được ý của một nhà lập trình nào đó mà bạn sẽ trò chuyện sau này. Hẳn là lúc đó, những người khác xung quanh sẽ nhìn các bạn với ánh mắt khác thường, đó là lý do mà bạn phải chú ý đến việc học những thuật ngữ đó

    Quay lại với biểu đồ ở trên.
    Trong ô đầu tiên:” Chương trình được viết bằng ngôn ngữ lập trình đơn giản”. Cụm từ “Ngôn ngữ lập trình đơn giản” còn đuợc gọi là “ngôn ngữ bậc cao”. (langage de haut niveau)
    Có rất nhiều "cấp bậc" trong ngôn ngữ. Và ngôn ngữ bậc càng cao càng gần và giống với ngôn ngữ của chúng ta (cũng giống như tiếng pháp hay tiếng anh). Ngôn ngữ bậc cao giúp ta dễ dàng hơn trong sử dụng, nhưng nó vẫn có một vài thiếu sót mà bạn sẽ thấy về sau. Có rất nhiều ngôn ngữ bậc cao hay thấp trong tin học, trong số đó bạn có thể dùng để lập trình. Và đây là một vài ví dụ:
    • C
    • C++
    • Java
    • Visual Basic
    • Delphi
    • …vv...

    Viết thêm rằng ở đây tôi không sắp xếp chúng theo "cấp bậc của ngôn ngữ", vì thế bạn đừng nghĩ rằng ngôn ngữ đầu tiên sử dụng dễ dàng hơn hay ngược lại. Đó chỉ là một vài ví dụ bất chợt nảy ra trong đầu của tôi.
    (Còn rất nhiều ngôn ngữ khác nữa mà tôi không liệt kê ra hết, vì sẽ rất dài nếu ghi hết ra , xin các bạn bỏ qua cho)
    Một số ngôn ngữ có bậc cao hơn các ngôn ngữ khác ( về mặt lí thuyết thì dễ dàng sử dụng hơn), chúng ta sẽ xem xét điều này sau, đặc biệt là sự khác nhau giữa ngôn ngữ C và C++.

    Một từ ngữ khác mà ta phải nắm đó là: mã nguồn (code source). Đó đơn giản là phần mã của chương trình được viết bằng ngôn ngữ bậc cao. Và tất cả những mã nguồn đó sẽ được dịch thành ngôn ngữ nhị phân.

    Trong giai đoạn tiếp theo, “chương trình dịch” sẽ dịch ngôn ngữ bậc cao đó (C hay C++) sang nhị phân. Chương trình này có tên là compilateur (english: compinator). Việc dịch gọi là compilation (compination).
    Quan trọng: các ngôn ngữ bậc cao khác nhau sẽ có các compilateur khác nhau. Nói cách khác, chúng ta không thể dịch ngôn ngữ C++ cùng với cách mà ta dịch ngôn ngữ Delphi.


    Tiếp theo bạn sẽ thấy, cùng một ngôn ngữ, lấy ví dụ ngôn ngữ C / C++ , có rất nhiều các compilateur khác nhau! (compilateur do Microsoft viết, compilateur GNU... tôi sẽ nói về chúng ở những chương sau.) Rất may mắn là những compilateur đó hầu như giống nhau (đôi khi chúng có những khác biệt nhỏ và tôi sẽ chỉ cho bạn).

    Cuối cùng , ngôn ngữ nhị phân được tạo ra bởi compilateur được gọi là: l'exécutable. Các chương trình này trên Windows có đuôi “.exe” giống như EXEcutable.

    Quay lại với biểu đồ vừa rồi nhưng thay bằng những thuật ngữ tin học chính xác:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		5709.png
Lần xem:	19
Size:		6.9 KB
ID:		15332

    Cùng biểu đồ nhưng biểu đồ này dùng các thuật ngữ chính xác hơn


    Tại sao chọn học C/C++?


    Như tôi đă nói với bạn ở trên, có rất nhiều ngôn ngữ bậc cao. Chúng ta bắt đầu bằng một trong số đó.
    Nhưng mà bạn phải có sự chọn lựa ngay từ bây giờ, bạn sẽ lựa chọn giữa:
    • Một ngôn ngữ lập trình có bậc rất cao: dễ dàng dử dụng, "thông dụng", như Visual basic. Nhưng các ngôn ngữ này có rất nhiều khuyết điểm: đầu tiên là phải mua bản quyền để sử dụng, giá thành mắc, và bị nhiều hạn chế. Ví dụ, chương trình mà bạn viết sẽ chỉ chạy được trên Windows, đừng nghĩ đến việc chạy nó trên Linux hay Macinstosh! Hay trên hết, bạn không có thể làm tất cả những gì bạn muốn với dạng ngôn ngữ này, và điều đó khiến bạn cảm thấy hạn chế khi sử dụng.
    • Một ngôn ngữ khác ở vị trí tương đối thấp hơn (nhưng nó không thấp lắm đâu!): có thể nó sẽ hơi khó hơn visual basic, nhưng chắc chắn một điêu là với một ngôn ngữ như C(hay C++) bạn sẽ giúp bạn học thêm rât nhiều trong việc lập trình cũng như hiểu thêm cách hoạt động của máy tính. Và sau đó hoàn toàn dư khả năng học thêm một ngôn ngữ khác nếu bạn muốn. Bạn sẽ được tự chủ hơn. Mặt khác, ngôn ngữ C và C++ được sử dụng khá rộng rãi. Nó được dùng để lập trình phần lớn các chương trình bạn biết. Cuối cùng, để lập trình trên C hay C++, bạn không cần phải mua bất kì chương trình nào vượt ngoài túi tiền của bạn, vì ngôn ngữ này hoàn toàn miễn phí!


    Và các lý do đó thúc đẩy tôi hướng dẫn bạn ngôn ngữ C trước tiên. Tôi không hề nói rằng chúng ta bắt buộc phải bắt đầu từ đây, nhưng lựa chọn này sẽ giúp bạn bạn có được những kiến thức bền vững.
    Tôi xem như đây chính là ngôn ngữ lập trình đầu tiên của bạn, và bạn không biết tí gì về lập trình trước đó. Có thể, bạn đã biết lập trình rồi, nhưng việc học từ cơ bản không hề ảnh hưởng xấu đến bạn tí nào phải không .


    Khoan đã, có một cái mà tôi vẫn chưa hiểu: Tôi sẽ học một ngôn ngữ gọi là “C / C++” hay tôi sẽ học 2 ngôn ngữ khác nhau một là “C” và một là “C++”?
    Câu trả lời tốt nhất là bạn sẽ cùng lúc học cả 2 ngôn ngữ. Không phải là bạn phải tăng cường độ làm việc lên hai lần đâu mà là 2 ngôn ngữ này khá giống nhau. (Khi tôi nói đến 2 ngôn ngữ cùng lúc, tôi sẽ viêt “C / C++").

    Và chúng ta phải hiểu rõ sự khác nhau giữa chúng trước khi bắt đầu:
    • Giai đoạn đầu, lúc các máy tính có khối lượng tính bằng tấn và có kích thước to như ngôi nhà, người ta đã sáng tạo ra một ngôn ngữ lập trình gọi là Algol.
    • Sau nhiều cải tiến, người ta đã tạo ra một ngôn ngữ mới gọi là CPL, và chính nó phát triển thành BCPL, sau đó nó được mang tên là ngôn ngữ B. (Các bạn không cần phải nắm tất cả những điều này, tôi viết ra chỉ để có thêm chút dáng vẻ về lịch sử mà thôi )
    • Và trong một ngày đẹp trời, người ta đã hoàn tất việc tạo ra một ngôn ngữ mới gọi là... ngôn ngữ C. Qua các sửa đổi, ngôn ngữ này vẫn là một trong những ngôn ngữ được sử dụng nhiều nhất cho đên hôm nay.
    • Không lâu sau đó, người ta đề xuất thêm vào ngôn ngữ này một vài thứ để cải tiến, và ngôn ngữ này được gọi là ngôn ngữ C++ hoàn toàn dựa trên nền tảng của C. Ngôn ngữ C++ không gì khác C ngoại trừ một số cái được thêm vào.(Những cái đó là gì? Chúng ta sẽ thấy về sau).


    Như tôi đã nói ở trên, có rất nhiều cách để học lập trình. Nhiều người nghĩ rằng cần thiết hơn là học trực tiếp từ “C++”. Điều đó chả ảnh hưởng gì, vì ngôn ngữ C++ cũng chính là C được thêm vào “những dấu +"

    Và theo ý kiến của tôi, điều đó sẽ trộn lẫn nhiều thứ nếu như ta bắt đầu từ C++. Nên tôi quyêt định tách ra làm 2 phần lớn:
    • Ngôn ngữ C
    • Ngôn ngữ C++


    Nếu bạn bắt đầu bằng ngôn ngữ C, sau này bạn học ngôn ngữ C++ sẽ nhanh và dễ dàng hơn. Và bạn sẽ không cần phải học lai tất cả những gì đã biết, bạn chỉ cần học những cái được thêm vào ở “C++” (và đây chính là đều tôi cần nói )


    Có một số hiểu lầm,ngôn ngữ C++ không hề tốt hơn C, nó chỉ cho phép bạn lập trình theo cách khác. Có thể nói, nó chỉ giúp việc lập trình của ta nhanh hơn và dễ dàng hơn trong việc tổ chức mã của chương trình
    Điều đó không phải là vì Half-life 2 được viết bằng C++, và người ta dùng C++ để viết những chương trình hay những trò chơi phức tạp.
    Ngôn ngữ C không phải là “ngôn ngữ già cỗi bị lãng quên”, ngược lại nó được sử dụng rât nhiều trong thời đại hiện nay. Nó là nên tảng của những hệ điều hành lớn như Unix hay Windows.
    Nắm vững vấn đề: C và C++ không phải là 2 ngôn ngữ cạnh tranh, đối lập với nhau. Chúng ta đều có thể dùng 2 ngôn ngữ này lập trình những cái tương tự. Chỉ là dùng 2 phương pháp lập trình khác nhau .
    Điều thuận lợi hơn là sau này có thể dùng C hay C++ tùy theo ý muốn và mục đích của các bạn .

    __________________________________


    Lập trình có khó không ?


    Đây chính là câu hỏi khiến bạn phải suy nghĩ nhiều đúng không ?
    Và có phải chúng ta bắt buộc phải là một nhà toán học cực giỏi sau nhiều năm học tập để có thể bắt đầu với việc lâp trình?

    Câu trả lời khiến bạn yên tâm hơn là điều đó không đúng
    Không cần thiết bạn phải có một đẳng cấp toán học thật cao. Cái mà bạn cần biết thật sự đó là:
    • Phép cộng (Tôi hi vọng bạn đã nắm vững nó )
    • Phép trừ (hic... hic... )
    • Phép nhân ( …)
    • Phép chia

    Tôi hi vọng các bạn đã biết tất cả những cái đó . Và chắc chắn là tôi sẽ giải thích cho bạn trong phần tiếp theo làm sao máy tính có thể thực hiện các phép tính cơ bản
    Tóm lại, về toán học thì không có gì khó khăn để bạn vượt qua.
    Tất cả chỉ phụ thuộc vào chương trình mà bạn muốn thực hiện, nếu đó là chương trình liên quan đến toán học, bạn bắt buộc phải hiểu biết về toán. Nếu bạn muốn làm một game 3D thì đòi hỏi bạn phải có kiến thức về hình học không gian.
    Tùy theo các trường hợp khác nhau.
    Để học ngôn ngữ “C / C++”, bạn không cần thiết phải có những kiến thức cao cấp nào cả.

    Nhưng đâu là cái khó khăn ?
    Chúng ta cần phải biết máy tính hoạt động như thế nào để có thể hiểu chúng ta cần làm những gì. Và ở điểm này, hãy yên tâm, tôi sẽ cố gắng hết sức hướng dẫn cho các bạn.
    Một người lập trình cũng cần phải có một vài đặc điểm như sau:
    • Kiên trì: một chương trình không thể nào chạy tốt trong giai doạn đầu, vì vậy bạn phải nhẫn nại!
    • Cảm nhận tốt về logic: chắc hẳn là bạn không cần phải giỏi lắm về toán, nhưng điều đó không thể nào ngăn cản được khả năng suy nghĩ của bạn. (quá tốt rồi còn gì )
    • Nhẹ nhàng: Người ta không đánh máy bằng việc gõ búa lên bàn phím . Điều đó không giúp chương trình của bạn chạy tốt tí nào đâu.


    Tóm lai một cách đơn giản, không đòi hỏi thật sự một kiến thức nào để học lập trình. Một người dốt toán vẫn có thể cho ra một chương trình, cái cần thiết chính là khả năng suy nghĩ của bạn.
    Chà! Chúng ta kết thúc phần I rồi, nhưng các bạn vẫn chưa thấy bất kì đoạn mã nào và giống như chúng ta đã thống nhất trước đó.
    Chúng ta cần biết thế nào là lập trình và thế nào là C /C++. Bây giờ chắc chắn tôi biết bạn đang chờ đợi điều gì nhưng chúng ta còn khá lâu để thấy điều đó đấy .

    Trong chương tiếp theo, các bạn sẽ bắt đầu với công cụ đầu tiên. Bạn sẽ cài đặt những chương trình cần thiết cho bất kì người học lập trình nào.

    ______________________________________
    Q.C.M.



    Phần này cũng tương tự như trắc nghiệm kiểm tra kiến thức, bạn chọn câu trả lời đúng nhất thôi


    Một ngôn ngữ lập trình cấp cao là:
    • Một ngôn ngữ khá phức tạp tương tự như ngôn ngữ nhị phân
    • Một ngôn ngữ khá đơn giản và gần giống với ngôn ngữ trong cuộc sống chúng ta.
    • Một ngôn ngữ sử dụng chỉ trong trường hợp cao cấp

    Quel type de fichier permet de créer la programmation ?
    • Những file *.exe chạy trên Windows
    • Những hình ảnh (*.jpg, *.png, *.bmp...)
    • Những đoạn vidéos (*.avi, *.mov...)
    Giữa C et le C++, cái nào cho phép ta lập trình được nhiều việc hơn ?
    • C
    • C++
    • Cả hai đều mạnh mẽ như nhau

    Chương trình dịch ngôn ngữ cao cấp thành ngôn ngữ nhị phân gọi là :
    • Le binarisateur
    • Le brumisateur
    • Le compilateur

    Ngôn ngữ nào bạn sẽ học trong giai đoạn đầu ?
    • Le C
    • Le C++
    • Cả hai

    Đáp án :
    1-b
    2-a
    3-c
    4-c
    5-a
    Đã được chỉnh sửa lần cuối bởi daihung.pham : 18-02-2010 lúc 11:29 PM.

  4. #4
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    2) Đạt được những công cụ cần thiết



    Chú thích là phần này mình để đây, và sẽ dịch và post lên trong một ngày đẹp trời nào đó , mình nghĩ rằng các bạn cũng không cảm thấy khó chịu phải không. Vì đây chỉ là bài hướng dẫn làm sao để cài đặt những công cụ phục vụ cho lập trình trên các hệ điều hành khác nhau. Những bài hướng dẫn này có đầy trên các trang web và rất dễ dang tìm thấy.

    Những công cụ nêu ra ở phần này đó là
    • Dev-C++
    • Visual C++
    • Code::Blocks
    • Xcode (Mac)


    Nếu bạn muốn tìm hiểu rõ hơn có thể lên trực tiếp trang web http://www.siteduzero.com/tutoriel-3...ns-outils.html
    Vậy nhé, nói thật phần này nhiều hình ảnh nên mình lười dịch và post lên lắm

  5. #5
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    3) Chương trình đầu tiên của bạn

    Chúng ta đã chuẩn bị xong sân chơi, chúng ta sắp sửa bắt đầu cuộc chơi , các bạn có cảm tưởng như thế nào ?
    Mục đích của phần hướng dẫn này giúp bạn có thể tạo ra chương trình đầu tiên cho chính mình !
    Nào chúng ta bắt đầu.

    Đây là những gì ta sẽ học:


    Chương trình đầu tiên của bạn
    • Console hay cửa sổ ?
    • Đoạn mã tối thiểu (Code minimum)
    • Viết một tin nhắn lên màn hình
    • Những chú thích, khá tiện dụng !
    • Q.C.M.




    _________________________________
    Console hay là cửa sổ?


    Console hay là cửa sổ?

    Chúng ta đã nói qua rất nhanh vấn đề này trước đó, IDE (Dev hay Visual) yêu cầu chúng ta phải lựa chọn cần tạo ra chương trình dạng nào. Bạn chọn console.
    (cái này ở phần 2 nhưng mình không có dịch phần đó)
    IDE viết tắt của "Environnements de développement", tiếng việt là môi trường phát triển mình cũng không biết dich vậy có đúng không nên quyết định giữ nguyên ko đổi :(

    Chỉ có 2 loại chương trình :
    • Những chương trình dạng cửa sổ
    • Những chương trình dạng console



    Những chương trình dạng cửa sổ:

    Tôi nghĩ rằng các bạn đã biết cái này,lấy một ví dụ điển hình:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		paint_window.png
Lần xem:	1
Size:		21.4 KB
ID:		15333
    Chương trình paint

    Đó là một chương trình dạng cửa sổ, các bạn rất muốn tạo ra những chương trình như thế này đúng không?
    Trên C /C++, chúng ta hoàn toàn có khả năng làm được. Nhưng các bạn chưa đủ sức tạo ra chúng vào lúc này.

    Tốt hơn là ta bắt đầu với việc tạo ra một chương trình dạng console.

    Nhưng chương trình dạng cửa sổ có giống với những chương trình dạng console không?
    Những chương trình dưới dạng console

    Console chính là những chương trình xuất hiện đầu tiên trên thế giới. Vào thời kì đó, màn hình máy tính chỉ hiển thị những dòng chữ đen và trắng và không đủ khả năng hiển thị những cửa sổ.

    Và Windows đã cho ra đời hệ điều hành dùng trên các máy tính có khả năng chạy những chương trình dạng cửa sổ. Vì vậy mà sản phẩm của họ được dùng rộng rãi, khiến phần lớn người sử dụng quên mất sự tồn tại của console.

    Và tôi chắc là bạn đang muốn biết console là gì phải không?

    Tôi có một tin mới cho bạn đây ! console không hề mất đi ! trên thực tế Linux đã giữ lại sở thích sử dụng console. Và đây là hình dạng của console trên Linux:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		5964.png
Lần xem:	5
Size:		8.9 KB
ID:		15334
    Một ví dụ về console trong Linux

    Hê hê.. khá kinh dị
    Đó là console và những đặc điểm cần chú ý:
    • Console ngày nay không chỉ hiển thị trắng và đen.
    • Console không được những người mới sử dụng chào đón lắm.
    • Console là một công cụ mạnh mẽ nếu như chúng ta biết cách sử dụng.


    Viết một chương trình dạng console đơn giản và lý tưởng hơn cho những người mới học lập trình (việc không hề đơn giản nếu như ta tạo ra một chương trình dạng cửa sổ)

    Ghi thêm rằng, console đã được phát triển rất nhiều: có thể hiển thị màu sắc, và bạn có thể đặt một hình ảnh nào đó lên nền của console. Và đây là hình ảnh một console đã được tạo dựng khá hoành tráng trên linux trên internet:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		lxterminal-transparent-linux.jpg
Lần xem:	8
Size:		99.4 KB
ID:		15341

    Trên hệ điều hành Windows có console hay không?
    Có nhưng nó đã bị giấu đi, ta có thể nói như thế.
    Bạn gọi nó bằng cách vào Start => run => nhập “cmd”.
    Và đây chính là console của Windows, kì diệu:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		163841.png
Lần xem:	4
Size:		28.5 KB
ID:		15335
    console trên Windows

    _____________________________

    Đoạn mã tối thiểu


    Trên bất công cụ lập trình nào, chúng ta đều phải viết ra ít nhất một đoạn mã,tuy rằng chúng không thực hiện điều gì nhưng đó là điều bắt buộc.
    Đó là đoạn mã tối thiểu mà ta sắp sửa tìm hiểu ngay sau đây. Đó là nền tảng của đa số các chương trình viết bằng ngôn ngữ C.
    Xác định lại rằng chúng ta đang học ngôn ngữ C, điều này tôi đã nói rõ ràng trước đó. Và tất cả những cái bạn sẽ học cũng sẽ sử dụng lại trong C++ vì vậy hãy chăm chú và đừng bỏ sót điều gì

    Phần này mình thật sự là không biết dich như thế nào cho đúng vì mình chưa hề sử dụng những chương trình như Dev-C++ hay Visual C++ trước đó, và các hình ảnh trên siteduzero đều bằng tiếng pháp, không hề có tiếng anh T_T các bạn nào biết hãy giúp mình chỉnh sửa lại.

    Phương pháp để bạn bắt đầu một projet mới trên các IDE mà bạn đã lựa chọn ở phần 2 đều không giống nhau. Hãy quay lại phần 2 nếu như bạn không biết làm sao để tạo ra một IDE.
    • Trên Dev-C++: gọi console application để bạn có thể viết chương trình “Xinchao” . Dev sẽ viết sẵn cho bạn đoạn mã cần thiết để bắt đầu chương trình, vì vậy bạn chẳng cần làm thêm điều gì.
    • Trên Visual C++: Gọi projet console Win32 mà bạn sẽ viết chương trình “Xinchao” Hãy chọn file dạng “file C++ (.ccp)”. Lưu lại ngay sau đó tập tin của bạn, lấy tên là main.c trong một thư mục nào đó. (lưu ý là main.c chứ không .ccp vì main.ccp được dùng cho C++).
      Sau đó trong tab “Explorer solution”, nhấp chuột phải vào thư mục “File source” và chọn “Add element existent”.Chon file main.c mà bạn đã lưu trước đó.


    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		sdfsdf.png
Lần xem:	0
Size:		30.8 KB
ID:		15336

    Trong giai đoạn đầu, bạn có thể thực hiện dễ dàng trên Dev hơn trên visual vì Dev đã tạo ra cho bạn những đoạn mã C cần thiết. Ví dụ như:

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(int argc, char *argv[])
    4. {
    5. system("PAUSE");
    6. return 0;
    7. }

    Và nếu như bạn sử dụng Visual thì hãy chép đoạn mã trên vào file main.c của bạn và lưu lại.
    Chúng ta vẫn chưa làm gì cả, nhưng vẫn lưu nó lại. Hãy tập thói quen đó.
    Bây giờ, bạn chỉ có duy nhất một file main.c (số còn lại là những file có sẵn do IDE tạo ra trước đó)

    Khảo sát đoạn mã tối thiểu (code minimum)
    Đoạn code đó không có gì là khó hiểu cả, đó là cách gọi và hiển thị một chương trình, sau đó nó sẽ đưa vào trạng thái chờ (pause), tắt đi bằng cách nhấn thêm một phím bất kì trên bàn phím.
    Chúng ta sẽ phải học cách đọc và hiểu tất cả những đoạn code như vậy.

    Bắt đầu từ 2 dòng đầu tiên có vẻ tương tự nhau:

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>


    Đây chính là những dòng đặc biệt thường thấy ở những file nguồn và dễ dàng nhận biết vì nó bắt đầu từ dấu “#”. Ta gọi chúng là directives de préprocesseur, vì nó sẽ được đọc bằng một chương trình gọi là préprocesseur, chương trình này sẽ chạy đầu tiên khi ta thực hiện compilation.

    Chúng ta đã thấy đồ thị khá đơn giản về compilation ở chương trước. Nhưng quá trình đó thực sự không hề dễ dàng như vậy, có rất nhiều thứ diễn ra trong đó. Tôi sẽ nói sau này, trong thời điểm này, các bạn chỉ cần biết cách viết những dòng đầu tiên vào file của bạn.

    Nhưng những dòng đó nghĩa là gì? Tôi rất muốn biết điều đó!
    Từ “include” tiếng anh có nghĩa là đặt vào, bao gồm (inclure: tiếng pháp). Nó cho phép thêm một projet nữa trong việc compilation
    Ở đây có 2 dòng, vậy là sẽ có 2 file được thêm vào. Những file này có tên là stdio.hstdlib.h. Đó là những file đã tồn tại trước đó trong source và luôn sẵn sàng khi bạn gọi ra. Chúng ta thường gọi nó là thư viện (librairie). Và những file này chứa những đoạn code cho phép hiển thị một đoạn văn lên màn hình.
    Ghi chú: Thư viện tiếng anh là “library” và nó được dịch thành “bibliothèque”. “Librairie” cũng có nghĩa như vậy nhưng dùng thế không đúng. Theo lí thuyết người ta sử dụng bibliothèque, không sử dụng librairie. Nhưng tôi và một số người giống tôi thường có thói quen ghi librairie, tôi sẽ tiếp tục sử dụng như vậy. Bạn hãy nắm vững nghĩa dịch chính xác của nó.
    Tôi nghĩ việt nam mình chỉ cọi là thư viện thôi nhỉ?
    Nếu không có những file thư viện đó, ta không thể nào ghi được một đoạn văn lên màn hình. Về nguyên tắc, máy tính của bạn sẽ không hiểu gì cả.

    Tóm lại, 2 dòng đầu tiên đó cho phép ta ghi một đoạn vãn lên màn hình "dễ dàng".

    C Code:
    1. int main(int argc, char *argv[])
    2. {
    3. system("PAUSE");
    4. return 0;
    5. }

    Cái mà bạn thấy ở trên, người ta gọi đó là một fonction. Một chương trình C hầu như cấu tạo bởi các fonction, Trong thời điểm này, chương trình của chúng ta chỉ là một fonction duy nhất.

    Một fonction cho phép chúng ta tập hợp lại các lệnh cho máy tính, những lênh này cho phép ta thực hiện chính xác một điều gì đó. Ví dụ, ta có thể viết một fonction “mở_một_tập_tin” trong đó chứa đựng những chi dẫn về cách mở một tập tin cho máy tính.
    Lợi ích là, một khi fonction đã được viết ra, bạn không cần phải nói thêm gì nữa cả. Máy tính sẽ biết làm việc đó bằng cách nào.
    (c'est beau la technologie!)

    Vẫn còn quá sớm để chúng ta tìm hiểu chi tiết về những thành phần cấu tạo nên một fonction. Chúng ta chỉ xem xét những phần lớn của nó. Ở câu đầu tiên, chữ thứ hai là tên của fonction, ta đã viết là main. Theo nguyên tắc, main là một tên đặc biệt, nó chỉ dùng để đặt cho fonction chính của chương trình, Và lúc nào chương trình cũng sẽ bắt đầu từ fonction main.

    Một fonction luôn có mở đầu và kết thúc, giới hạn bởi những dấu { và } . Tất cả fonction main của chúng ta đều nằm trong đó. Nếu bạn đã theo kịp những gì tôi đã nói, thì fonction main của chúng ta gồm 2 dòng:

    C Code:
    1. system("PAUSE");
    2. return 0;

    Ta gọi những dòng nằm trong một fonction là các instruction. (Hãy nắm vững những từ ngữ này ).
    (instruction: chỉ thị, chỉ dẫn)

    Mỗi một instruction là một lệnh dành cho máy tính, và nó yêu cầu máy tính phải thực hiện chính xác một cái gì đó.

    Như tôi đã nói với bạn, công việc của những người lập trình là động não để viết những instruction, và khi bạn đã sử dụng tốt, bạn sẽ có thể tạo ra những fonction như “mở_một_tập_tin” hay “nhân_vật_đi_tới” trong một game nào đó.

    Một chương trình không gì khác hơn là tạo lên một dãy các instruction: instruction “hãy làm cái này” instruction “hãy làm cái kia”... Bạn ra những lệnh đã được sắp đặt và máy tính sẽ thực hiện các lệnh đó.

    (X) Quan trọng: Tất cả các instruction đều kết thúc bằng một dấu chấm phấy “;“. Hay nói khác hơn đó là cách nhận biết một instruction. Nếu bạn quên chúng, chương trình của bạn sẽ không dịch được.
    Dòng đầu tiên:
    C Code:
    1. system("PAUSE");
    Yêu cầu máy tính phải rơi vào trạng thái chờ. Khi mà chương trình bạn đã chạy đến dòng này, nó sẽ hiện thị lên màn hình : " Appuyez sur une touche pour continuer " và sẽ chờ cho đến khi bạn nhấn một phím bất kì trước khi chuyển sang instruction tiếp theo.

    instruction system(“PAUSE”) sẽ không chạy trên Windows. Chương trình Dev C++ đã tự động làm điều đó trước khi kết thúc chương trình.
    Những IDE khá thông minh, giống như Code::Blocks, thêm vào tự động một instruction khi compilation
    Trong trường hợp đó, instruction system(“PAUSE”); không cần thiết, bạn có thể xóa nó đi.
    Nếu bạn sử dụng một hệ điều hành nào khác Windows (như Linux hay MacOS), bạn sẽ chạy trực tiếp chương trình của bạn trên console vì vậy bạn cũng không cần sử dụng nó. Nếu như bạn muốn chương trình bạn rơi vào trạng thái dừng trước khi kết thúc, bạn có thể thay thế bằng instruction system(“PAUSE”); bằng instruction getchar();

    Chúng ta sang instruction tiếp theo:
    C Code:
    1. return 0;

    Có nghĩa là đã kêt thúc, dòng này biểu thị rằng ta đã đến giai đoạn kết thúc fonction main và yêu cầu gửi giá trị 0.

    Vậy thì tai sao chương trình phải trở về số 0?
    Trên thực tế, mỗi chương trình khi kết thúc sẽ gửi về một giá trị, ví dụ như để nói rằng tất cả hoạt động tốt (0= tất cả hoạt động tốt, những số khác có nghĩa là “error”). Hầu như những giá trị này không hề được sử dụng, nhưng thực tế nó vẫn tồn tại.
    Chương trình của bạn cũng có thể chạy khi không có return 0; những sẽ chính xác và đúng đắn hơn nếu ta thêm vào.

    Vậy là! Chúng ta đã tìm hiểu một ít về cách hoạt động của đoạn mã tối thiểu (code minimal)

    Hẳn là các bạn vẫn còn một số nghi vẫn khác vì chúng ta không tìm hiểu sâu lắm. Nhưng bạn hãy yên tâm, tất cả những câu hỏi sẽ từng tí từng tí có được câu trả lời. Tôi không muốn giải thích cho bạn trong một lần, nếu không đầu óc bạn sẽ hoàn toàn rối bem, tôi đảm bảo.

    Mặt khác, nói về đầu óc rối bem, bạn vẫn theo kịp tôi đúng không? Nếu không phải, bạn hãy nghỉ ngơi và sau đó đọc lại với tinh thần minh mẫn. Tất cả những gì tôi vừa hướng dẫn cho bạn đều là nền tảng, nếu bạn không có vấn đề gì nữa thì ta hãy tiếp tục.

    Tôi sẽ vẽ cho bạn lại một biểu đồ tổng hợp với những từ ngữ ta vừa học:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		huongdan02.jpg
Lần xem:	2
Size:		12.7 KB
ID:		15337
    Thuật ngữ của program minimal

    Test chương trình

    Khá là nhanh, bạn chỉ cần dịch chương trình rồi chạy. (“Nhấn vào “Compine & run” hay “Compiler & Exécuter” trên Dev).
    Sau một khoảng thời gian chờ đợi khá là khó chịu, chương trình của bạn đã xuất hiện ra trước mắt với cảm giác tràn đầy niềm vui sướng

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		163842.png
Lần xem:	5
Size:		29.9 KB
ID:		15338
    Chương trình đầu tiên của bạn!

    Như lời giải thích trên màn hình, hãy nhẫn thêm một phím bất kì, chương trình sẽ kết thúc.

    Vâng, tôi biết rằng cái đó chẳng có nghĩa gì cả, giống như một trò đùa nhưng đó là tất cả những gì bạn muốn.
    Nhưng dù sao, đó cũng là chương trình đầu tiên của bạn, hãy nhớ lại cảm giác đó, nó sẽ theo bạn suôt cả đời đấy.

    Không phải vậy sao ?...


    Trước khi bạn cho tôi thấy vẻ mặt của bạn lúc này, tôi xin phép chúng ta bước sang bài tiếp theo, không chậm trễ.

    _____________________________________
    Viết một tin nhắn lên màn hình


    Kể từ bây giờ, chúng ta sẽ tự đánh những đoạn mã vào chương trình.
    Nhiệm vụ của các bạn là hiển thị tin nhắn “Xin chao” lên màn hình.
    Giống như trước đó console sẽ mở ra. Tin nhắn “Xin chao” sẽ xuất hiện trong đó.

    Làm cách nào để viết một tin nhắn lên màn hình?
    Chúng ta sẽ phải thêm vào một dòng trong fonction main của bạn. Tôi đã nói với bạn là những dòng đó có tên đúng không?
    Chúng ta gọi chúng là instruction. Chúng ta sẽ thêm vào một instruction yêu cầu máy tính thực hiện lệnh: “Hãy hiển thị cho tôi một tin nhắn lên màn hình”

    Và instruction này gọi là printf (hãy nắm vững nó !)
    Trên thưc tế printf là một fonction đã được viết bởi một chương trình khác trước đó.

    fonction này ở đâu ? Tôi chỉ thấy tồn tại mỗi fonction main mà thôi !
    Bạn có nhớ hai dòng này chứ ?
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>

    Tôi đã nói với bạn rằng nó cho phép ta thêm vào chương trình những thư viện. Và những thư viện đó chứa đầy những fonction bên trong. stdio.h chứa đựng những fonction cho phép hiển thị một cái gì đó lên màn hình (ví dụ như fonction printf ), những nó đòi hỏi người sử dụng phải đánh ra một cái gì đó (đây là những fonction mà ta sẽ thấy sau này).

    Hãy chào đi!

    Trong fonction main, chúng ta gọi hàm printf.

    (Kể từ lúc này mình gọi tất cả các fonction có trong thư việnhàm nhé, còn những fonction tương tự như main vẫn là fonction. Thế nhé )

    Để gọi một hàm rất đơn giản: ta chỉ cần ghi ra tên của nó. Bạn hãy nhập vào printf vào dòng đầu tiên của fonction main (trước system(“PAUSÊ”); ).

    Nhưng công việc của bạn vẫn chưa xong. Chúng ta phải giải thích cần hiển thị điều gì lên màn hình. Để làm điều đó, chúng ta sẽ phải cho hàm printf một đoạn văn cần hiển thịn hãy mở ngoặc ( ) sau printf. Trong đó, mở ngoặc kép " " . Cuối cùng đánh điều gì bạn cần máy tính hiển thị bên trong.
    Trong trường hợp của chúng ta:
    C Code:
    1. printf("Xin chao");

    Tôi hị vọng rằng bạn không quên mất dấu chấm phẩy " ; " ở cuối cùng, tôi nhắc lại là nó rất quan trọng! Nó cho phép máy tính hiểu rằng instruction của ta kết thúc ở đây.

    Và đây là code source mà bạn phải có được:

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(int argc, char *argv[])
    4. {
    5. printf("Bonjour");
    6. system("PAUSE");
    7. return 0;
    8. }

    Chúng ta có 3 instruction yêu cầu máy tính thực hiện:

    1. Hiển thị “Xin chao” lên màn hình.
    2. Đưa chương trình vào giai đoạn nghỉ, hiển thị tin nhắn “Appuyer sur une touche pour continuer” và chờ đợi cho đến khi ta đánh thêm 1 phím bất kì lên bàn phím để chuyển sang instruction tiếp theo.
    3. Fonction main kết thúc, trả về 0. Chương trình kết thúc.


    Việc đưa chương trình vào trạng thái nghỉ có ý nghĩa như thế nào? Chúng ta có được phép xóa đi instruction system(“PAUSE”) hay không?
    Có chứ, chắc chắn là bạn có thể. Hãy thử chạy chương trình không có instruction này và bạn sẽ thấy.
    Chương trình sẽ không dừng lại. Nói rõ hơn, máy tính sẽ hiển thị tin nhắn “Xin chào” và dừng lại. Cửa sổ của console sẽ hiện ra và biến mất với vận tôc ánh sáng, bạn không có đủ thời gian để đọc cái gì được ghi trong đó.

    Stupid, isn't it?

    Ghi thêm là, với một số IDE, như là tôi đã nói trước đó, nó sẽ tự động dừng lại ở cuối chương trình. Trong trường hợp đó instruction system(“PAUSE”) coi như vô dụng, bạn có thể xóa nó đi.
    Và chúng ta hãy test chương trình với pause, và nó sẽ hiển thị:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		huongdan03.jpg
Lần xem:	5
Size:		16.6 KB
ID:		15339
    Cuối cùng, chương trình hiển thị "Xin chao" đã được hoàn thành.

    Nhưng thật sự nó không hoàn toàn hiển thị xin chào, có một dòng khác cùng hiển thị sau nó
    Thưa bạn, không có việc gì nghiêm trọng ở đây cả, chúng ta sẽ học cách sữa chữa nó ngay đây.
    Kết quả sẽ đưa ra màn hình một dòng khác nằm dưới dòng “Xin chao” của chúng ta, giống như việc gõ phím "enter "để ngắt dòng.

    Tất nhiên và bạn sẽ dễ dàng nhấn phím enter để ngắt dòng giống như đã thực hiện bên trong code source của chúng ta hơn là việc ngắt dòng một đoạn văn hiển thị trên màn hình !
    Chúng ta phải sử dụng những kí tự đặc biệt..

    Những kí tự đặc biệt

    Những kí tự đặc biệt là những kí tự cho máy tính hiểu rằng ta muốn xuống dòng hay nhấn tab...
    Những kí tự này tương đối dễ dàng nhận biết. Trước chúng lúc nào cũng có một dấu anti-slash ( \ ), kế tiếp là một chữ cái hay một số, đây là 2 kí tự đặc biệt được sử dụng khá thường xuyên mà bạn chắc chắn cần dùng:

    \n : xuống dòng (= “Enter")
    \t : tabulation

    Trong trường hợp này, chúng ta chỉ cần thêm vào \n để xuống dòng.
    Và bây giờ chương trình của bạn đã rõ ràng hơn rồi

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		163847.png
Lần xem:	2
Size:		28.3 KB
ID:		15340
    Một chương trình hiển thị rõ ràng

    bạn có thể viết trong printf duy nhất \n , điều đó có nghĩa là bạn muốn xuống dòng ở câu kế tiếp. Bạn hãy tập viết những câu thế này:
    printf("Xin chao\nTam biet\n");
    Nó sẽ hiển thị “Xin chao ở câu đầu tiên và Tam biệt ở câu kế tiếp.



    Hội chứng Gérard

    Xin chào, tôi tên là Gérard và tôi muốn sửa đổi chương trình với tên là “Xin chào Gérard”. Chỉ vậy thôi, tôi bất ngờ rằng nó không hiển thị chính xác... Tôi phải làm gì bây giờ ?
    Đầu tiên xin chào bạn, Gérard
    Đây là một câu hỏi khá hay dành cho tôi, và tôi rất vui thấy được bạn đã bắt đầu có những ý tưởng sửa chữa lại chương trình.
    Và đây là câu trả lời dành cho bạn, tôi có một tin đáng buồn dành cho bạn: console trên Windows không hiển thị được những dấu trọng âm, nhưng ngược lại trên Linux ta có thể làm điều đó.

    Kể từ lúc này bạn có 2 lựa chọn:

    • Chuyển sang Linux: lựa chọn này khá là phức tạp vì lúc đó tôi phải giải thích cho riêng bạn cách sử dịng Linux. Nếu bạn chưa đủ trình độ để sử dụng vào lúc này, hãy quên lựa chọn này đi.
    • Không sử dụng những dấu trọng âm. Thật đáng tiếc là bạn phải lựa chon nó. Console của Windows có những hạn chế, nó chỉ hiển thị những tin nhắn không có dấu.


    Và bạn sẽ ghi là:
    C Code:
    1. printf("Bonjour Gerard\n");

    Tôi xin cám ơn bạn Gérard đã giúp tôi nhớ lại vấn đề này

    ps: Nếu tên các bạn cũng có dấu như bạn Gérard, thì cũng làm tương tự vậy nhé.

    ___________________________________
    Những lời chú thích, vô cùng tiện dụng !


    Trước khi kết thúc phần này, tôi nhất thiết phải chỉ cho bạn một cái khá hay, mà ta gọi chúng là các commentaires (ghi chú). Trên các ngôn ngữ lập trình ta luôn có thể thêm vào những ghi chú vào trong mã nguồn của bạn. Và C cũng có thể làm như vậy

    Có nghĩa là bạn thêm một đoạn văn vào giữa chương trình để giải thích là phải làm gì ở đó, dòng này có nhiệm vụ gì, kí hiệu này cho mục đích gì ..v.v..
    Đó thật sự là một cái không thể thiếu vì kể cả những thiên tài về lập trình cũng cần phải thêm vào các chú thích ở đây hay ở kia. Nó cho phép:

    • Bạn sẽ dễ dàng đi vào trọng tâm của những gì bạn đã viết. Vì ta có thể dễ dàng quên mất nguyên tắc hoạt động chương trình mà bạn đã viết. Bạn có thể mất nhiều ngày để suy nghĩ lại điều đó, bạn sẽ cần những chú thích của bản thân bạn để có thể tự hiểu lại ý nghĩa của việc mình làm.
    • Nếu bạn đưa mã nguồn của bạn cho một ai khác và người đó không hiểu nhiều lắm nguyên tắc hoạt động chương trình, thì những ghi chú đó sẽ giúp họ làm quen nhanh hơn.
    • Cuối cùng, cái đó cho phép tôi có thể thêm những chú thích vào những đoạn mã trong bài học. Điều đó giúp tôi giải thích cho bạn tốt hơn về tác dụng của những đoạn mã đó.


    Có nhiều cách để thêm vào một lời chú thích. Tất cả phụ thuộc vào chiều dài của lời chú thích mà bạn muốn viết:
    • Nếu ngắn: chỉ gồm 1 dòng, hoặc vài từ. Trong trường hợp đó bạn đánh vào double slash ( // ) sau đó là chú thích của bạn. Ví dụ:



    C Code:
    1. // Đây là một chú thích

    Hoặc là:

    C Code:
    1. printf("Xin chao"); // instruction này hiển thị lên màn hình “Xin chao”

    • Nếu lời chú thích của bạn dài: bạn có nhiều cái để thuật lại, bạn cần viết rất nhiều câu và trên rất nhiều dòng. Trong trường hợp này :


    1. Để mở đầu lời chú thích: hãy đánh một slash sau đó đánh dấu sao (/*)
    2. Để kết thúc: Đánh dấu sao rồi sau đó là slash (*/)


    Ví dụ:


    C Code:
    1. /* Đây là một chú thích gồm nhiều dòng */

    Trở lại với chương trình hiển thị “Xin chao”, và thêm vào những lời chú thích để luyện tập:

    C Code:
    1. /*
    2. Sau day la nhung directives de préprocesseur.
    3. Nhung dong nay cho phep them mot so file vao projet cua ban, file ma chung ta goi ten la “thu vien”
    4. Nho vao cac thu vien, chung ta luon co nhung ham luon san sang vi du nhu ham printf: hien thi mot doan van len man hinh
    5. */
    6. #include <stdio.h>
    7. #include <stdlib.h>
    8. /*
    9. Sau day la fonction chinh cua chuong trinh goi la “main”. Nho fonction nay ma chuong trinh cua ban co the bat dau
    10. Chuong trinh nay se hien thi “Xin chao” len man hinh, dua chuong trinh vao trang thai pause, ket thuc
    11. */
    12.  
    13. int main(int argc, char *argv[])
    14. {
    15. printf("Xin chao "); // instruction nayf hien thi “Xin chao” len man hinh
    16. system("PAUSE"); // Dua chuong trinh vao trang thai pause
    17. return 0; // Chuong trinh tra ve gia tri 0 va ket thuc
    18. }

    đó là một chương trình với những dòng chú thích
    Khi mà ta dịch chương trình, tất cả những chú thích sẽ được bỏ qua. Những chú thích sẽ không xuất hiện khi ta chạy chương trình, nó chỉ dành cho những người lập trình.

    Bình thường thì ta không ghi chú mỗi dòng của chương trình. Tôi đã nói rằng viêt chú thích trong code source là một điều quan trọng nhưng chúng ta cần biết khi nào cần dùng đến, vì chú thích từng dòng như vậy sẽ tốn thời gian vô ích. Và mọi người đã biết rằng printf là hàm hiển thị một tin nhắn lên màn hình, bạn không cần phải chú thích thêm nữa mỗi lần.

    Tốt hơn là bạn hãy chú thích nhiều cái trong một lần, có nghĩa là giải thích ý nghĩa của dăy instruction này, nó sẽ được sử dụng vào việc gì. Và người lập trình chỉ cần ngó qua lời chú thích đó, họ sẽ tự hiểu lấy toàn bộ.

    Nắm vững: Những lời chú thích hướng dẫn người lập trinh trong code source, có cho phép chúng ta nhận ra nó, vì vậy hãy tập chú thích từng nhóm lúc hơn là bạn chú thích cho từng dòng.

    Và để kết thúc bài học này, tôn xin trích dẫn một luật của IBM:
    Nếu bạn đọc những chú thích mà bạn không hiểu chương trình hoạt động thế nào, hãy xóa bỏ tất cả.
    Như là bạn nhận thấy, chúng ta vẫn chưa hoàn toàn kết thúc hết toàn bộ bài gỉảng. Và đây cũng là lần đầu tiên bạn thấy thế nào là mã lập trình thật sự, và các từ và kí hiệu khiến đầu óc hơi choáng váng một tí. Thì đó cũng là đều bình thường, tất cả ai cũng đểu như vậy trong lần đầu tiên.

    Trước khi bạn bước sang mỗi giai đoạn, bạn hãy test lại những gì bạn đã biết. Tôi thích tránh việc dạy bạn nhiều thứ trong một lúc, đơn giản là bạn sẽ không lãnh ngộ được gì cả nếu bạn học một cách quá nhanh.

    Và tôi xin báo cho bạn biết, các phần tiếp theo sẽ có rất nhiều điều mà bạn chưa biết.
    Đã được chỉnh sửa lần cuối bởi daihung.pham : 21-02-2010 lúc 03:55 AM.

  6. #6
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    Mặc định Hướng Dẫn Học lập trình C - www.siteduzero.com

    Q.C.M.


    một directive de préprocesseur một dòng bắt đầu bởi :
    • #
    • {
    • //
    Tên của fonction chính của chương trình là ?
    • princ
    • master
    • main
    Thư viện là gì?
    • Những file source đã được viết trước đó gồm các fonction luôn sẵn sàng chờ bạn gọi ra.
    • Một file cho phép bạn viết một đoạn văn lên màn hình
    • Một nơi để ta có thể mượn những quyển sách về khoa học viễn tưởng
    Một instruction luôn được kết thúc bởi kí tự nào ?
    • /*
    • ;
    • }
    Tên của hàm cho phép hiển thị một đoạn văn lên màn hình ?
    • printf
    • print
    • afficher
    Kí tự nào cho phép ta xuống dòng khi hiển thị lên màn hình ?
    • \t
    • \n
    • Chỉ đơn giản là nhấn phím enter để xuống dòng.
    Một chú thích chỉ dành cho một dòng bắt đầu bởi :
    • /*
    • */
    • //
    Kết quả :

    1-a
    2-c
    3-a
    4-b
    5-a
    6-b
    7-c


    _________________________________________

    các bạn có thể down sách viết bằng tiếng pháp ở đây:
    http://www.mediafire.com/?5neg2maayjl
    Đã được chỉnh sửa lần cuối bởi daihung.pham : 19-02-2010 lúc 11:01 PM.

  7. #7
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    4)Thế giới của các biến số (variable)


    Đây là một chương quan trọng, và bạn cần phải tập trung nhiều (Nói cách khác, đây không phải thời điểm để bạn phân tích một con ruồi đang bay bên cạnh).

    Tóm tắt lại những gì đã học:

    Ở chương trước, bạn đã học cách để tạo một projet mới trên IDE (Dev-C++, Visual C++ hay một IDE nào khác). Tôi đã đặc biệt giải thích với bạn rằng việc tạo ra một chương trình trên cửa sổ khá phức tạp (Và tôi cũng không nói với bạn về việc tạo ra một game 3D chơi trên mạng ).
    Chúng ta hiện đang bắt đầu với việc học cách làm việc trên console. Và chúng ta đã học những điều khá hay ho như việc hiển thị một tin nhắn lên màn hình. Tôi biết rằng bạn sắp sửa bảo với tôi rằng cái đó chưa giúp bạn điều gì cả.

    Và thời điểm này, bạn vẫn chưa biết cách làm thế nào gọi một biến số, tất cả những ngôn ngữ lập trình như C đều không tránh khỏi việc sử dụng chúng.
    Những biến số, chúng ta hãy nói về nó !



    Vậy thì biến số chính xác là gì ?
    Tôi sẽ giải thích tất cả về nó trong phần này, tôi sẽ không để bạn phải chờ đợi, về tổng quát chúng ta sẽ học cách đưa những con số vào trong bộ nhớ của máy tính.

    Tôi sẽ bắt đầu với những lời giải thích về bộ nhớ của máy tính, nguyên tắc hoạt động, máy tính có thể nhớ bao nhiêu cái khác nhau?
    Vấn đề này có thể đơn giản đối với một số người, nhưng bài giảng của tôi chỉ dành cho những người vẫn chưa biết bộ nhớ là gì. Và nếu bạn chỉ đọc những dòng chú thích mà bạn vẫn không hiểu cách hoạt động của chương trình thì háy xóa bỏ tất cả.

    Phần này ta sẽ học :
    Công việc của bộ nhớ
    • Khai báo một biến số
    • Hiển thị giá trị một biến số
    • Lưu lại giá trị được chọn
    • Q.C.M.


    _________________________________

    Công việc của bộ nhớ


    Bài giảng này có mối quan hệ trực tiếp với bộ nhớ của máy tính.


    Con người cũng như máy tính đều cần lưu giữ lại một số cái gì đó, con người chỉ có duy nhất bộ não nhưng trên máy tính thì có nhiều dạng bộ nhớ khác nhau.

    Tại sao máy tính cần nhiều loại bộ nhớ khác nhau? Một bộ nhớ duy nhất không đủ cho máy tính, có phải vậy không?

    Không, thực tế người ta chỉ cần một bộ nhớ có tốc độ lưu nhanhkhả năng chứa lớn (để có thể lưu lại nhiều thứ quan trọng).
    Nhưng cho đến thời điểm hiện tại, chúng ta vẫn chưa tạo được những bộ nhớ giống như vậy.
    Vì các bộ nhớ nhanh đắt tiền nên các bộ nhớ được tổ chức thành nhiều cấp, cấp có dung lượng ít thì nhanh nhưng đắt tiền hơn cấp có dung lượng cao hơn. Những bộ nhớ có tốc độ lưu càng nhanh sẽ có dung lượng càng nhỏ

    Vây máy tính của chúng ta được lắp đặt :
    _ Những bộ nhớ có tốc độ lưu nhanh nhưng khả năng chứa nhỏ.
    _ Những bộ nhớ có tốc độ lưu chậm nhưng khả năng chứa lớn hơn rất nhiều.

    Bạn vẫn theo kịp tôi chứ

    Những khác biệt về bộ nhớ

    Để cho bạn dễ hiểu, đây là những loại bộ nhớ khác nhau có trong một máy tính được sắp xếp từ nhanh đến chậm:

    1. Les registres (registers) : Bộ nhớ cực nhanh được đặt trực tiếp trong bộ xử lý của máy tính (processor).
    2. La mémoire cache (Memory cache) : Làm cầu nối giữa registres và mémoire vive.
    3. La mémoire vive (main memory) : Là một bộ nhớ mà chúng ta sử dụng thường xuyên nhất.
    4. Ổ cứng (Le disque dur , Hard Disk Drive): Cái này các bạn biết đến nhiều nhất, người ta lưu trữ dữ liệu ở đây
    .


    Những registres chỉ có thể chứa được một vài số, trái ngược hẳn với ổ cứng có thể chứa một số lượng lớn các tập tin.


    Khi tôi nói một bộ nhớ “chậm” là đang dựa theo thang đo máy tính, 8 phần nghìn giây để vào đên ổ cứng thật sự là quá lâu!
    Có cẩn phải nắm tất cả những điều này?
    Từ bây giờ, các bạn sẽ học về lập trình, và các bạn thường chỉ làm việc trên mémoire vive nên các bạn cần biết đôi chút về nó. Và chúng ta sẽ tìm hiểu cách đọc và lưu các tập tin lên ổ cứng (nhưng chúng ta sẽ làm điều này rất lâu sau đó). Về mémoire cache và registres chúng ta không cần phải chạm đến vì máy tính của bạn sẽ tự làm việc đó.

    Trong ngôn ngữ lập trình bậc thấp, như l'assembleur (viết tắt của "ASM"), một ngôn ngữ tôi đã từng sử dụng, chúng ta phải làm việc trực tiếp với registres, việc làm một phép toán nhân đơn giản là quá trình chiến đấu thật sự gian nan ! May mắn là việc đó trên C (và trên nhiều ngôn ngữ lập trình khác) thực hiện đơn giản hơn rất nhiều
    Cần phải thêm vào một điều quan trọng cuối cùng: chỉ có ổ cứng giữ lại tất cả những gì mà nó chứa. Tất cả các bộ nhớ khác (registres, mémoire cache, mémoire vive) đều là những bộ nhớ nhất thời: khi mà bạn tắt máy tính đi thì tất cả dữ liệu trong đó sẽ mất đi.

    May mắn là dữ liệu trong ổ cứng của bạn vẫn không đổi để nhắc nhở máy tính của bạn ở tình trạng nào khi bật lên.

    Hình ảnh của mémoire vive

    Chúng ta sắp sửa làm việc một với mémoire vive, tôi nghĩ rằng tôi nên giới thiệu nó với bạn

    Đây là máy tính của bạn:


    Các bạn đã biết thế nào là bàn phím, chuột, màn hình và thùng máy.
    Bây giờ chúng ta chỉ quan tâm đến thùng máy của bạn, trung tâm của máy tính, nó chứa tất cả các bộ nhớ:


    Cái mà ta hứng thú nằm bên trong thùng máy, khi mở ra:


    Bạn có cảm thấy thích nó không ?
    Các bạn hãy yên tâm, tôi sẽ không đòi hỏi các bạn phải biết chúng hoạt động như thế nào, tôi chỉ muốn bạn biết làm thế nào để tìm thấy mémoire vive ở đó, vị trí của nó nằm trong ô chữ nhật màu đỏ.
    Tôi sẽ không chỉ ra những bộ nhớ khác (registres et mémoire cache) nằm ở đâu vì nố khá nhỏ để có thể thấy được băng mắt của chúng ta.

    Và đây là hình dáng thật sự của mémoire vive:


    Nếu bạn muốn xem hình dạng lớn hơn hãy nhấn vào đây
    http://www.siteduzero.com/uploads/fr/files/7001_8000/7208.jpg


    Mémoire vive còn gọi là RAM, và tôi sẽ sử dụng từ này thường xuyên.

    Biểu đồ của mémoire vive

    Nếu ta nhìn một cách bình thường một mémoire vive thì chẳng thấy được gì cả. Nhưng, rất quan trọng để biết bên trong nó hoạt động như thế nào. Đây chính là điều tôi muốn hướng dẫn các bạn.

    Tôi sẽ vẽ cho các bạn một biểu đồ về cách hoạt động của mémoire vive, nó cực kì đơn giản. Nếu bạn nắm được biểu đồ này thì điều đó vô cùng tốt đối với bạn.


    Như bạn thấy, nó được chia làm 2 cột:

    • Một cột địa chỉ: địa chỉ là một số cho phép máy tính có thê xác đinh vị trí trong mémoire vive. Nó bắt đầu từ địa chỉ 0 và kết thúc ở địa chỉ 3 448 765 900 126... Hic, tôi không hề biết rõ số lượng địa chỉ chứa trong RAM, tôi chỉ biêt rằng nó có rất nhiều. Bởi vì nó phụ thuộc vào dung lượng bộ nhớ mà bạn có. Chỉ có thể nói là, bạn có RAM, bạn có thể để vào đó nhiều thứ.
    • Và mỗi địa chỉ chứa một giá trị (một số): Máy tính của bạn đưa vào mémoire vive những số này để có thể nhớ ngay lập tức. Và người ta chỉ có thể đưa vào một số cho từng địa chỉ!


    Và RAM không thể chứa gì khác ngoài những con số.

    Vậy làm cách nào để chúng ta có thể lưu lại những chữ cái ?
    Đó là một câu hỏi thú vị, trên thực tế, đối với máy tính thì những chữ cái cũng là những con số ! Một câu văn chính là một dãy những con số !
    Có một bảng viết về sự tương ứng giữ chữ cái và số, ví dụ số 67 tương ứng với chữ Y, tôi không nói nhiều về vấn đề này chúng ta sẽ có cơ hội nói về nó sau này.
    Trở lại với biểu đồ của chúng ta. Hãy xét một vấn đề đơn giản: nếu máy tính muốn lưu lại giá trị 5 ( có thể là số mạng sống của nhân vật mà bạn chơi trong game nào đó), nó sẽ đặt số 5 vào một vị trí nào đó trong bộ nhớ.(Ví dụ tại địa chỉ 3 062 199 902).
    Sau đó, khi muốn tìm lại giá trị này, máy tính sẽ đến “ô” bộ nhớ n° 3 062 199 902, tại đó nó tìm thấy 5 !
    Và đó là nguyên tắc hoạt động của bộ nhớ, có thể bạn vẫn còn một chút mập mờ (lợi ích của việc đặt một số vào một địa chỉ của bộ nhớ?), bạn sẽ hiểu rõ hơn vấn đề này ở những phần sau của bài hướng dẫn.

    ________________________________

    Cách khai một biến số

    Bạn hãy tin tôi rằng một ít giới thiệu về bộ nhớ sẽ rất tiện lợi tốt hơn cho bạn, giúp bạn có thể tưởng tượng dễ dàng hơn.
    Nhưng bây giờ chúng ta phải biết làm cách nào để sử dụng nó.

    Vậy thế nào là một biến số ?
    Chỉ đơn giản là một thông tin nhỏ được lưu trữ trong RAM.
    Chúng ta gọi nó là « biến số » vì nó có thể thay đối trong quá trình thực hiện chương trình. Ví dụ , số 5 vừa rồi của chúng ta có khả năng bị giảm đi (khi mà nhân vật bạn chết thì mạng sống sẽ giảm xuống). Khi mà giá trị này tiến đến 0 thì trò chơi sẽ kết thúc, game over.

    Các bạn sẽ thấy chương trình của chúng ta sẽ chứa đầy những biến số.

    Trên ngôn ngữ C, một biến số có 2 thành phần :

    • Một giá trị : đó là số mà nó chứa, ví dụ như 5.
    • Một tên gọi : tên gọi này sẽ giúp ta nhận ra nó. Trên ngôn ngữ C, chúng ta không cần phải nhớ địa chỉ của biến số, chúng ta chỉ cần chỉ ra tên của biến số. Và bộ dịch (Compilateur) sẽ thực hiện việc chuyển đổi giữa chữ và số.



    Gọi tên một biến số :

    Trong ngôn ngữ của chúng ta, biến số chỉ số mạng sống của nhân vật trong một trò chơi điện tử nào đó thường được gọi là "mạng sống nhân vật", hoặc một tên nào khác cùng loại.

    Trên ngôn ngữ C, mỗi biến số có một tên gọi, nhưng bạn không có thể chọn bất cứ tên gì bạn thích để đặt tên cho nó.

    • Chúng ta chỉ có thể đặt tên nó bằng những chữ cái viết thường hay viết hoa và những con số (abcABC012…).
    • Tên của biến số phải bắt đầu bằng một chữ cái. Chúng ta không được sử dụng khoảng trống « », thay vào đó chúng ta có thể sử dụng kí tự « underscore » _ Đó là kí tự duy nhất không thuộc dạng chữ cái hay số được phép sử dụng.
    • Bạn cũng không được phép sử dụng chữ cai mang dấu trọng âm. (ví dụ éèêà…).


    Và một điều hết sức quan trọng mà bạn cần phải nắm đó là trong ngôn ngữ C (C++ cũng như thế) có sự khác nhau giữa chữ thường và chữ hoa
    : chieu_rong, CHIEU_RONG và CHieu_RoNg là tên của 3 biến số khác nhau trong ngôn ngữ C. Đối với chúng ta thì chúng có vẻ hoàn toàn giống nhau !

    Và đây là các biến số được đặt tên chính xác : mangsongNhanvat, mangsong_nhanvat, ho, ten, so_dien_thoai, sodidong.

    Mỗi chương trình có cách thức gọi tên biến số khác nhau. Trong phần này, tôi giới thiệu cho bạn cách thức gọi tên biến số của riêng tôi:

    • Tên của biến số, tôi luôn bắt đầu bằng chữ cái thường .
    • Nếu tên của biến số gồm nhiều chữ, thì mỗi chữ tôi sẽ viết hoa ở kí tự đầu tiên


    Tôi thích bạn thực hiện giống như tôi, vì điều đó giúp chúng ta có thể làm việc dễ dàng với nhau.

    (X) Bạn hãy đặt cho biến số những tên gọi rõ ràng. Chúng ta có thể rút ngắn tên của mangsong_NhanVat bằng ms_NV. Điều đó có thể giúp tên gọi ngắn hơn, nhưng không hề rõ ràng khi bạn viết chương trình. Bạn đừng ngại việc đặt tên dài cho biến số vì điều đó sẽ giúp chương trình của bạn đọc được dễ dàng hơn.
    Những dạng của biến số

    Các bạn có thể xem máy tính không khác gì một cỗ máy lớn dành cho công việc tính toán, nó không biết gì khác hơn ngoài những con số.

    Và tôi có một tin đặc biệt là có nhiều dạng biến số !

    Ví dụ, có những số tự nhiên dương :

    • 45
    • 398
    • 7650


    Cũng có những số thực :

    • 75,909
    • 1,7741
    • 9810,7


    Hơn nữa cũng có những số nguyên âm :

    • -87
    • -916


    ... Và những số thực âm:

    • -76,9
    • -100,11



    Và chiếc máy tính đáng thương của bạn cần sự hỗ trợ ! Khi bạn yêu cầu nó lưu lại một số, bạn phải nói con số đó thuộc dạng nào. Máy tính của bạn không thể nào có khả năng tự nhận biết chúng, điều đó giúp nó rất nhiều trong việc tự tổ chức, và hạn chế việc sử dụng bộ nhớ một cách vô ích.

    Khi bạn tạo một biến số, phải ghi nó thuộc dạng nào.
    Đây là những dạng biến số tồn tại trong ngôn ngữ C (sẽ còn một số loại biến số khác trong C++) :


    3 dạng đầu cho phép chúng ta khai báo những số nguyên (1, 2 ,3 ,4...)
    2 dạng cuối khai báo những số thực (13.8, 16.911...)

    float và double cho phép khai báo những số thực rất lớn.
    Nếu nhưng bạn không hiểu rõ lắm về lũy thừa của 10, tôi sẽ nói rõ hơn cho bạn rằng những số dạng double có thể lưu lại số được viết bởi số 1 và 308 số 0 tiếp theo !
    10000000000000000000000000000000000000000000000000 00000000000000000000….
    (trong trường hợp này tôi sẽ không ghi hết 308 số 0 cho bạn)

    Bạn cần lưu ý rằng int và long có vẻ như giống nhau nhưng thực sự thì int sẽ nhỏ hơn long, và ngày nay bộ nhớ đã phát triển rất nhiều và chúng ta luôn đủ chỗ để chứa những số vô cùng lớn, và chúng ta không cần chú ý lắm đến sự khác biệt của chúng. Ngôn ngữ C lưu trữ lại tất cả những thứ đó vì lý do compatibilité (sự tương hợp). Thực tế tôi chỉ thường dùng những dạng char, long và double.
    Và bạn sẽ thấy phần lớn chúng ta chỉ sử dụng những số tự nhiên vì nó dễ dàng sử dụng.

    (X) Hãy chú ý những số thực ! Máy tính của bạn không hiểu dấu phẩy là gì đâu, chúng ta chỉ sử dụng dấu chấm. Bạn không thể viết 54,9, thay vào đó là 54.9 !
    Và không chỉ như vậy ! Đối với những dạng biến số có thể chứa những số tự nhiên (char, int, long), còn có các loại đặc biệt khác mang tên « unsigned » (không có dấu), tại đó chúng ta chỉ có có thể đưa vào những số tự nhiên. Để sử dụng, chỉ cần đặt « unsigned » ở phía trước :



    Như bạn đã thấy, những unsigned không thể chứa những số âm, nhưng nó có lợi thế là mở rộng giới hạn chứa những số dương lên gấp đôi (ví dụ: char có giới hạn 128, trong khi đó unsigned char có giới hạn 255).

    Tại sao phải tạo ra 3 dạng biến số cho những số tự nhiên như vậy ? Chúng ta chỉ cần 1 dạng là đủ rồi mà, không phải vậy sao?
    Người ta tạo nhiều dạng biến số khác nhau như thế để tiết khiệm bộ nhớ. Khi mà chúng ta bảo máy tính rằng chúng ta cần một biến số dạng “char”, thì máy tính sẽ sử dụng bộ nhớ ít hơn khi chúng ta bảo rằng cần bộ nhớ dạng “long”.

    Việc này có thể thấy rõ trong giai đoạn bộ nhớ còn nhiều giới hạn. Ngày nay, mémoire vive máy tính đã tiên tiến hơn rất nhiều nên việc này không còn là vấn đề thật sự nữa. Chúng ta không còn nghĩ nhiều đến việc chọn dạng biến số nào để sử dụng. Nếu biến số của bạn có khả năng nhận một giá trị tương đối lớn thì hãy sử dụng long. Tôi nói nghiêm túc rằng bạn không cần phải suy nghĩ nhiều lắm về cách chọn dạng biến số trong thời điểm hiện tại.

    Chúng ta chỉ cần phân biệt sự khác biệt giữa dạng số nguyên và thực:

    • Đối với số tự nhiên thì chúng ta sẽ dùng long.
    • Đối với số thực thì chúng ta sử dụng double.


    Khai báo một biến số

    Chúng ta đã đến đây rồi, bây giờ, tạo một projet console mới lấy tên là “variables”.(biến số)
    Bạn sẽ thấy làm cách nào để chúng ta khai báo một biến số, nói cách khác yêu cầu quyền sử dụng bộ nhớ của máy tính.

    Bạn chỉ cần làm theo trình tự sau:

    1. Dạng của biến số cần tạo.
    2. Nhấn phím spacebar.
    3. Tên của biến số cần tạo.
    4. Cuối cùng là chấm phẩy ; đừng quên điều đó.


    Ví dụ nếu như tôi muốn khai một biến số mangsongNhanVat, tôi sẽ làm như sau:

    C Code:
    1. long mangsongNhanVat;

    Chỉ đơn giản vậy thôi !

    Và một vài ví dụ ngốc ngếch khác :

    C Code:
    1. long diemToan;
    2. double tongChiPhiNhanDuoc;
    3. unsigned long soluongNguoiChuanBiXemTenCuaMotBienSoKhaLaDai;

    Tôi nghĩ bạn đã hiểu được nguyên tắc của nó rồi.

    Việc chúng ta vừa làm gọi là déclaration de variable (hãy nắm vững thuật ngữ này )
    (mình dịch là khai báo một biến số nhé)
    Bạn phải thực hiện việc khai báo biến số ở vị trí bắt đầu của các fonction. Và trong thời điểm này chúng ta chỉ có được duy nhất một fonction (fonction main), và bạn hãy khai báo biến sồ như sau:

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(int argc, char *argv[])
    4. {
    5. // Bat dau mot fonction
    6. long mangsongNhanVat;
    7. system("PAUSE");
    8. return 0;
    9. // Ket thuc mot fonction
    10. }

    Nếu bạn thực hiện việc dịch và chạy chương trình vào lúc này thì chắc hẳn bạn sẽ ngạc nhiên rằng chẳng có gì xảy ra cả

    Giải thích

    Trước khi bạn cho rằng tôi đùa với bạn thì hãy để tôi nói hết lời của mình.

    Thực tế đã nó một vài thứ diễn ra nhưng bạn không thể nào thấy được. Khi mà chương trình chạy đến đoạn mã khai báo biến số của bạn, nó chỉ yêu cầu máy tính một cách lịch sự rằng nó sẽ sử dụng một ích khoảng trống trong mémoire vive của máy tính.
    Nếu không có vấn đề gì, máy tính sẽ trả lời « oh, tất nhiên rồi, hãy làm việc đó như là đang ở nhà của bạn vậy ».

    Vấn đề chỉ xảy ra khi bộ nhớ của bạn không còn khoảng trống nữa. May mắn là điều này vô cùng khó xảy ra nếu sử dụng những biến số dạng long để đầy bộ nhớ của bạn.
    Và biến số của bạn đã được tạo ra một cách hoàn hảo.

    Có một phương thức bạn cần biết : nếu bạn có nhiều biến số cần khai báo và các biến số này cùng một dạng, bạn không cần thiết phải khai báo mỗi biến số cho mỗi dòng. Bạn chỉ cần phân biệt các biến số bởi những dấu phẩy trên cùng một dòng :

    C Code:
    1. long mangsongNhanVat, capdoTroChoi, capdoNhanVat;

    Đoạn code này đã khai báo 3 biến long gọi là mangsongNhanVat, capdoTroChoi, capdoNhanVat.
    Và bây giờ ?
    Bây giờ chúng ta đã khai báo những biến số, chúng ta có thể đưa cho chúng những giá trị.

    Đưa giá trị vào biến số

    Không có gì là khó khăn, nếu bạn muốn cho biến số mangsongNhanVat một giá trị, bạn chỉ cần làm như sau :

    C Code:
    1. mangsongNhanVat = 5;

    Vậy là xong rồi, bạn không cần làm thêm điều gì khác. Bạn chỉ cần đặt tên của biến số, cho một dấu bằng, kế tiếp là giá trị bạn muốn đặt vào nó. Ở đây chúng ta cho mangsongNhanVat gia trị 5.
    Dưới đây là chương trình hoàn thiện:

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(int argc, char *argv[])
    4. {
    5. long mangsongNhanVat;
    6. mangsongNhanVat = 5;
    7. system("PAUSE");
    8. return 0;
    9. }

    Và khi chạy chương trình thì màn hình vẫn chưa có gì thay đổi, nó chỉ diễn ra trong bộ nhớ.
    Tại một ô bộ nhớ nào đó trong máy tính, giá trị 5 đã được đặt vào. Tuyệt vời đúng không?

    Và hay hơn nữa là:

    C Code:
    1. long mangsongNhanVat;
    2. mangsongNhanVat = 5;
    3. mangsongNhanVat = 4;
    4. mangsongNhanVat = 3;

    Trong ví dụ này, khi chạy chương trình, biến nhận giá trị 5 đầu tiên, sau đó là 4 và cuối cùng là 3. Chương trình kết thúc tại đấy

    Giá trị của một biến số mới

    Đây là một câu hỏi khá quan trọng mà tôi muốn nhấn mạnh :

    Khi mà ta khai báo một biến, thì nó sẽ nhận giá trị nào đầu tiên ?
    Thực tế, khi mà máy tính bạn đọc dòng này :
    C Code:
    1. long mangsongNhanVat;

    Nó sẽ sử dụng một ít bộ nhớ, đồng ý. Nhưng giá trị của biến số lúc này là bao nhiêu ? Là 0 lúc khởi đầu đúng không ?

    Câu trả lời là không. Không không và không. Không có giá trị nào lúc khởi đầu cả. Bộ nhớ sẽ giành chỗ cho biến số nhưng tại vị trí đó, giá trị sẽ không đổi. Máy tính sẽ không hề xóa những gì được đặt vào trước đó. Nếu vị trí này vẫn chưa sử dụng qua lần nào thì có thể nó sẽ mang giá tri là 0. Nhưng nếu một chương trình nào khác đã sử dụng qua rồi thì nó có thể mang giá trị là 368, 18 hay một số nào khác. Chúng ta cần phải chú ý kĩ vấn đề này để tránh các sai sót về sau. Tốt nhất bạn hãy gán cho nó giá trị sau khi vừa khai báo xong. Bộ dịch có thể hiểu được nếu như ta khai và gán giá trị một biến số trong cùng một lúc :

    C Code:
    1. long mangsongNhanVat = 5;

    Tại đây, biến số mangsongNhanVat được khai báo và nhận tức khắc giá trị 5
    Lợi ích của việc này là bạn luôn chắc rằng sau biến số đó luôn nhận giá trị chính xác

    Những constantes:

    Đôi khi chúng ta cần sử dụng những giá trị không đổi trong suốt quá trình sử dụng chương trình. Có nghĩa là sau khi khai báo, biến số sễ nhận một giá trị mà không cách nào có thể thay đổi được.

    Những biến số này chúng ta gọi là các constantes(giá trị không đổi), lý do là giá trị mà nó mang sẽ giữ nguyên như thế.

    Để khai báo một constante, ta làm như sau : chúng ta thêm từ « const » trước dạng biến số mà bạn khai báo.

    Mặt khác, chúng ta bắt buộc phải gán cho nó một giá trị ngay trong thời điểm bạn khai báo nó. Giống như cách mà ta đã thấy vừa rồi. Sau đó, bạn không thể nào thay đổi giá trị đó, đã quá muộn rồi.

    Ví dụ về cách khai báo một constantes

    C Code:
    1. const long MANGSONG_NHANVAT_KHOIDAU = 5;

    Việc tôi chỉ sử dụng những chữ cái in hoa để đặt tên cho constantes là không bắt buộc. Làm như thế để có thể dễ dàng phân biệt những biến số với những constantes. Ghi thêm rằng tôi vẫn sử dụng dấu underscore _ vào vị trí của khoảng trống « ».
    Sau đó, bạn có thể sử dụng constantes như một biến số bình thường. Khác biệt duy nhất là nếu bạn thử thay đổi giá trị của nó sau đó và thực hiện dịch chương trình thì compilateur sẽ báo lỗi.

    Tôi gọi nó là « zone de mort » (« death zone » hay là vùng chết). Trong trường hợp đó, compilateur sẽ hiển thị lên màn hình: : [Warning] assignment of read-only variable 'MANGSONG_NHANVAT_KHOIDAU'
    (Dịch ra: “bạn thật là ngu ngốc, tại sao bạn lại cố gắng thay đổi giá trị của một constant chứ?”)

    ______________________________________

    Hiển thị giá trị của biến số

    Chúng ta đã biết cách hiển thị một đoạn văn với hàm printf.
    Bây giờ, chúng ta sẽ xem làm sao để hiển thị một giá trị của biến số cũng với hàm này.
    Chúng ta cũng sẽ sử dụng printf với phương pháp cũ, nhưng thêm vào một kí tự đặc biệt tại vị trí mà chúng ta muốn giá trị của biến số đó.
    Ví dụ :

    C Code:
    1. printf("Ban con %ld hoi sinh");

    Kí tự đặc biệt mà tôi đã nói với bạn đó là một « % » sau đó là những chữ cái « ld ». Những kí tự này cho phép chúng ta hiển thị dạng của biến số.
    « ld » có nghĩa là một số tự nhiên.
    Còn rất nhiều kí tự đặc biệt khác có thể sử dụng. Nhưng để dễ dàng, lúc này bạn chỉ cần nắm vững 2 loại :


    Tôi sẽ nói cho bạn biết những kí tự đặc biệt khác về sau.
    Với các số nguyên (char, int, long...), bạn phải sử dụng %ld, và với các số thực (float, double), bạn sử dụng %lf.

    Chúng ta sắp xong rồi, chúng ta đã chỉ ra vị trí cần hiển thị một số, nhưng chúng ta vẫn chưa nói là hiển thị số nào. Vì thể chúng ta cần chỉ cho hàm printf biết phải hiển thị biến số nào.
    Bằng cách đánh tên của biến số sau khi thêm vào một dấu phẩy sau khi kết thúc dấu ’’ giống như sau :

    C Code:
    1. printf("Ban con %ld hoi sinh", mangsongNhanVat);

    %ld sẽ thay thế bởi biến số mà ta đã chỉ ra sau dấu phẩy, trường hợp này là mangsongNhanVat.
    Chúng ta thử chạy chương trình nhé ?

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(int argc, char *argv[])
    4. {
    5. long mangsongNhanVat = 5; // Khoi dau, ban co 5 lan hoi sinh
    6. printf("Ban co %ld hoi sinh\n", mangsongNhanVat);
    7. printf("**** B A M ****\n"); // Ban bi trung mot phat sung vao dau
    8. mangsongNhanVat = 4; // Ban vua bi mat mot lan hoi sinh !
    9. printf("Xin chia buon, ban chi con %ld lan hoi sinh !\n\n", mangsongNhanVat);
    10. system("PAUSE");
    11. return 0;
    12. }

    Cái này gần giống như một game điện tử rồi (bạn hãy tưởng tượng nhiều một tí)
    Chương trình hiển thị cái này ra màn hình:

    HTML Code:
    Ban co 5 hoi sinh **** B A M **** Xin chia buon, ban chi con 4 lan hoi sinh ! Appuyez sur une touche pour continuer...
    Bạn phải hiểu được điều gì diễn ra trong chương trình của bạn :

    1. Đầu tiên, nhân vật có 5 mạng sống, chúng ta hiển thị bằng printf
    2. Sau đó, « bùm » nhân vật trúng phải một phát súng vào đầu.
    3. Cuối cùng, nhân vật còn 4 mạng sống, chúng ta hiển thị bằng printf.


    Đơn giản là như vậy.

    Hiển thị nhiều biến số trong một hàm printf

    Chúng ta luôn có thể hiển thị giá trị của nhiều biến số chỉ trong một hàm printf duy nhất. Chỗ này sẽ hiển thị %ld và chỗ kìa hiển thị %lf, tùy theo bạn muốn, sau đó chỉ ra theo thứ tự những biến số tương ứng, cách nhau bởi những dấu phẩy.
    Ví dụ :

    printf("Ban co %ld hoi sinh va ban dang o man choi thu%ld", mangsongNhanVat, capdo);

    Hãy chỉ ra những giá trị của bạn theo đúng thứ tự. %ld đầu tiên sẽ thay thế bằng biến số đầu tiên (mangsongNhanVat), và %ld thứ hai sẽ thay thế bởi biến số thứ hai (capdo). Nếu như bạn nhầm lẫn vị trí, lời bạn muốn hiển thị sẽ không còn đúng nữa.
    Và chúng ta hãy thử test lại một ít, ghi thêm rằng tôi đã xóa đi những dòng ở trên cùng (những directives de préprocesseur bắt đầu bởi những #), và tôi sẽ giả định rằng bạn sẽ luôn thêm nó vào ở đầu chương trình.

    C Code:
    1. int main(int argc, char *argv[])
    2. {
    3. long mangsongNhanVat = 5, capdo = 1;
    4. printf("Ban co %ld hoi sinh va ban dang o man choi thu%ld\n", mangsongNhanVat, capdo);
    5. system("PAUSE");
    6. return 0;
    7. }

    Và nó sẽ hiển thị:

    HTML Code:
    Ban co 5 hoi sinh va ban dang o man choi thu 1 Appuyez sur une touche pour continuer...
    _________________________________

    Cách đưa vào những giá trị


    Những biến số bắt đầu làm bài học này thú bị hơn rồi. Chúng ta sẽ học cách yêu cầu người sử dụng hãy nhập một số vào console. Số này sẽ được một biến số lưu lại. Một khi bạn biết thực hiện điều này, bạn sẽ thấy rằng có thể làm rất nhiều việc sau đó.

    Để yêu cầu người sử dụng đưa vào một cái gì đó vào trong console, chúng ta sẽ sử dụng một hàm khác, và hàm này đã có sẵn trong thư viện của bạn :
    scanf
    Cách sử dụng scanf khá giống với printf. Bạn phải đăt những %ld hay những %lf trong dấu "..." để giải thích với máy tính rằng bạn muốn người dùng đưa vào một số nguyên hay một số thực. Sau đó bạn phải chỉ ra tên của biến số sẽ nhận lấy giá trị đó.

    Bạn sẽ thấy điều đó trong ví dụ này :

    C Code:
    1. scanf("%ld", &tuoi);

    Chúng ta chỉ được phép đưa vào %ld (hoặc %lf) trong dấu "..."
    Mặt khác chúng ta thêm vào & trước tên của biến số.

    Vậy tại sao phải thêm & trước tên của biến số ?
    Tôi sẽ không giải thích cho bạn tất cả ở đây. Nhưng hãy tin tôi, tôi sẽ giải thích cho bạn vấn đề này trong một phần sau đó, tôi hứa đấy !

    Trở lại, khi mà chương trình của bạn chạy đến scanf, nó sẽ dừng lại và đợi người sử dụng đưa vào một số. Số này sẽ được đưa vào biến số « tuoi ».

    Và đây là một chương trình nhỏ yêu cầu biết tuổi của người sử dụng và nó sẽ hiển thị ra sau đó :

    C Code:
    1. int main(int argc, char *argv[])
    2. {
    3. long tuoi = 0; // Cho bien so gia tri la 0
    4. printf("Xin cho biet tuoi cua ban");
    5. scanf("%ld", &tuoi); // May tinh yeu cau nhap so tuoi voi scanf
    6. printf("Oh ! tuoi cua ban la 20 !\n\n", tuoi);
    7. system("PAUSE");
    8. return 0;
    9. }

    HTML Code:
    Xin cho biet tuoi cua ban 20 Oh ! tuoi cua ban la 20 ! Appuyez sur une touche pour continuer...
    Chương trình sẽ dừng lại và hiển thị « Xin cho biet tuoi cua ban ». Dấu nháy sẽ xuất hiện trên màn hình. Các bạn phải đánh vào một số tự nhiên (tuổi của bạn). Sau đó nhấn Enter để xác nhận, và chương trình sẽ tiếp tục hoạt động.
    Sau đó, chương trình sẽ hiển thị giá trị của biến số « tuoi » lên màn hình (« Oh ! tuoi cua ban la 20 !»).

    Nguyên tắc hoạt động là như vậy.
    Nhờ vào hàm scanf chúng ta có thể yêu cầu người sử dụng đưa ra một số thông tin cá nhân

    Viết thêm rằng bạn chỉ có thể đưa vào đó một số tự nhiên :

    • Nếu bạn nhập vào đó một số thực, ví dụ như 2.9, nó sẽ tự động làm tròn, nghĩa là nó chỉ giữ lại phần nguyên. Trong trường hợp này số 2 sẽ được biến số lưu lại.
    • Nếu bạn đánh vào bất kì một chữ cái nào đó («éèydf »), biến số sẽ không thay đổi giá trị. Điều này cũng tốt vì trước chúng ta đã gán cho biến số giá trị 0. Sau khi nhập những chữ cái vào thì ngay lập tức, chương trình hiển thị « 0 tuoi », chứng tỏ scanf không được thực hiện. Nếu sau khi khai báo biến số chúng ta không gán cho nó giá trị nào, chương trình bạn có thể hiển thị bất cứ cái gì !


    Chúng ta sắp sửa kết thúc phần hướng dẫn về các biến số
    Tôi xin nhắc lại là biến số sẽ được sử dụng thường xuyên khi lập trình. Nếu như bạn hiểu rằng biến số là một thông tin được đưa vào bộ nhớ tạm thời thì bạn đã hiểu bài giảng này. Không có điều gì khác ngoài việc bạn cần biết những dạng biến số (char, int, long…).
    Hãy tự luyện tập cách hiển thị những biến số lên màn hình và cách nhập vào giá trị một biến số bằng bàn phím với scanf
    Trong chương tiếp theo, chúng ta sẽ học cách làm sao thực hiện các tính toán trên ngôn ngữ C . Yêu cầu bạn phải sử dụng tốt printfscanf.
    Đã được chỉnh sửa lần cuối bởi daihung.pham : 22-02-2010 lúc 05:35 AM.

  8. #8
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    Q.C.M.


    Khi ta khai báo một biến số, bộ nhớ nào sẽ được sử dụng ?
    • Registres (registers)
    • Mémoire cache (Memory cache)
    • Mémoire vive (main memory)
    • Disque dur (Hard Disk Drive)
    Khi tắt máy tính, bộ nhớ nào sẽ không bị mất dữ liệu ?

    • Registres (registers)
    • Mémoire cache (Memory cache)
    • Mémoire vive (main memory)
    • Disque dur (Hard Disk Drive)
    Biến số nào không được đặt tên chính xác ?

    • vitriMenu
    • chieurongCửaSổ
    • tuoi_Capital
    Dạng biến số nào có thể lưu trữ số 76.8 ?

    • char
    • long
    • double
    • int
    Dạng biến số nào có thể lưu trữ số -1000 ?

    • int
    • unsigned int
    • unsigned double
    Nếu như biến số "taikhoanNganHang" thuộc dạng int có giá trị là 6 500 000 , màn hình sẽ hiển thị đoạn mã này thế nào ?


    Code:
    printf("Ban co %d dong trong tai khoan", taikhoanNganHang);
    • Ban co %d dong trong tai khoan
    • Ban co 6 500 000 dong trong tai khoan
    • Ban co d dong trong tai khoan, taikhoanNganHang
    Nếu như tôi muốn gán một số thực vào biến số, dòng nào sao đây chính xác ?
    • scanf("%f", soThuc);
    • scanf("%d", soThuc);
    • scanf("%lf", &soThuc);
    • scanf("%d", &soThuc);
    Đáp án:
    1-c
    2-d
    3-b
    4-c
    5-a
    6-b
    7-c

    Hic phần này dài quá

  9. #9
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    5) Công cụ để tính toán

    Tôi đã nói vấn đề này ở phần trước : máy tính của các bạn cũng giống như một cỗ máy tính toán khổng lồ. Khi mà bạn muốn nghe nhạc, xem film hay chơi game điện tử, máy tính của bạn không làm điều gì khác hơn việc tính toán
    Phần này tôi sẽ hướng dẫn cho các bạn thực hiện phần lớn những phép tính mà máy tính có thể thực hiện. Các bạn đã biết thế nào là biến số, và ý tưởng là chúng ta sẽ thực hiện những tính toán trên các biến số đó : hãy cho một biến số giá trị nào đó, sao đó hãy nhân nó lên, và giá trị nhận được sẽ đưa vào một biến số khác .v.v…
    Kể cả khi bạn không phải là những fan hâm mộ của toán học, các bạn cũng cần biết nội dung của phần hướng dẫn này. Vì nếu bạn không biết cách thực hiện phép cộng, bạn không thể nào có thể thực hiện việc lập trình.

    Phần hướng dẫn gồm :

    Những phép toán cơ bản
    • Những cách viết rút gọn
    • Thư viện toán học
    • Q.C.M.


    __________________________

    Những phép toán cơ bản


    Chúng ta tìm hiểu không gì khác ngoài những phép toán bình thường, máy tính của bạn là một cỗ máy tính toán đơn giản vì nó chỉ có thể làm những phép toán :

    • Phép cộng
    • Phép trừ
    • Phép nhân
    • Phép chia
    • Phép Modulo (Tôi sẽ giải thích nếu như bạn không biết nó là gì)


    Nếu như bạn muốn sử dụng những phép toán phức tạp hơn (bình phương, lũy thừa, logarithme, và một số những phép toán khác mà bạn thích) thì bạn phải lập trình ra nó, có nghĩa là bạn sẽ hướng dẫn máy tính làm cách nào thể thực hiện những phép toán đó.
    May mắn là bạn có thể mượn những quyển sách này trong thư viện của ngôn ngữ C : có rất nhiều hàm toán học luôn trong trạng thái sẵn sàng. Bạn không cần phải viết lại chúng nữa

    Chúng ta bắt đầu với phép cộng.
    Để thực hiện một phép cộng, chúng ta sử dụng kí tự + (đúng không nhỉ? )
    Bạn cần phải đưa kết quả nhận được vào trong một biến số. Chúng ta sẽ sử dụng biến số « ketqua » dạng long để thực hiện phép tính:

    C Code:
    1. int ketqua = 0;
    2.  
    3. ketqua = 5 + 3;

    Bạn không cần phải có một đầu óc pro về tính toán để có thể hiểu rằng « ketqua » sẽ mang giá trị 8 sau khi ta chạy chương trình.
    Chắc chắn là, màn hình sẽ không hiển thị bất cứ điều gì nếu như ta chỉ sử dụng đoạn mã trên, hãy thêm vào một hàm printf.
    Trên màn hình sẽ cho ta :

    Console Code:
    1. 5 + 3 = 8

    Và đó là phép cộng.
    Và với những phép toán khác, cũng tương tự, chỉ cần thay đổi kí tự tính toán :

    • Phép cộng : +
    • Phép trừ : -
    • Phép nhân : *
    • Phép chia : /
    • Modulo : %


    Nếu như bạn đã từng tính toán trên máy tính của bạn thì chắc hẳn là bạn biết những kí tự này . "Dấu trừ" tương ứng với dấu gạch ngang, "dấu nhân" tương ứng dấu sao, "dấu chia" tương ứng dấu slash.

    Không có gì đặc biệt khó khăn để sử dụng được chúng. Ở hai phép tính cuối cùng (phép chia và modulo) có một số khác biệt nhỏ, chúng ta sẽ nói rõ hơn.

    Phép chia

    Phép chia hoạt động bình thường trên máy tính nếu như không có số dư. Ví dụ, 6 / 3 bằng 2, máy tính của bạn sẽ cho một kết quả đúng, không hề sai sót.

    Bây giờ chúng ta thử thực hiện một phép chia có dư như 5 / 2.
    5 / 2 theo như ta tính sẽ cho kết quả là 2.5.

    Tuy nhiên ! hãy xem kĩ kết quả của đoạn mã này :

    C Code:
    1. int ketqua = 0;
    2.    
    3. ketqua = 5 / 2;
    4. printf ("5 / 2 = %d", ketqua);

    Console Code:
    1. 5 / 2 = 2

    Có một vấn đề lớn ở đây, chúng ta yêu cầu máy tính thực hiện 5 / 2, chúng ta chờ đợi kết quả là 2.5, nhưng máy tính cho kết quả là 2 !

    Có một cái gì đó kì lạ ở đây. Không lẽ máy tính của chúng ta ngu ngốc ở điểm này ?
    Thực sự, khi máy tính nhận được những số 5 và 2, máy tính của bạn thực hiện phép tính với dạng số tự nhiên, điều đó có nghĩa là máy tính đã làm tròn kết quả, nó chỉ giữ lại phần nguyên (số 2).

    Tôi biết rồi ! tại vì biến số « ketqua » mà chúng ta khai báo có dạng long ! nếu nó ở dạng double thì nó sẽ chứa một số thực !
    Cũng không phải.
    Hãy thử lại đoạn mã trên nhưng chúng ta đổi biến số « ketqua » thành double, nó cũng chỉ hiển thị kết quả là 2.

    Nếu như ta muốn máy tính hiển thị một kết quả chính xác, chúng ta phải biến đổi những số 5 và 2 đó về dạng số thực, nghĩa là 5.0 và 2.0 (Đối với chúng ta, chúng giống nhau nhưng đối với máy tính, những số thực khác với số tự nhiên và nó sẽ thực hiện phép toán với dạng số thực) :

    C Code:
    1. double ketqua = 0;
    2.    
    3. ketqua = 5.0 / 2.0;
    4. printf ("5 / 2 = %lf", ketqua);

    Console Code:
    1. 5 / 2 = 2.500000

    Mặc dù nó hiển thị một dãy những số 0 ở phía sau nhưng kết quả này hoàn toàn chính xác.

    Đặc điểm này của phép chia rất quan trọng, bạn cần chú ý:
    5 / 2 = 2
    10 / 3 = 3
    4 / 5 = 0
    Những số trong phép tính phải thuộc dạng số thực :
    5.0 / 2.0 = 2.5
    10.0 / 3.0 = 3.33333
    4.0 / 5.0 = 0.8

    Thực tế, nếu ta thực hiện phép tính « 5 / 2 », ở dạng số tự nhiên. Máy tính sẽ trả lời câu hỏi : « Trong 5, có bao nhiều lần 2 ?». Câu trả lời là 2 lần. Giống như vậy, « trong 10, có bao nhiêu lần 3 ? 3 lần ».

    Nhưng làm sao để giữ lại số dư của phép chia ?
    Và đây chính là công việc của phép modulo.

    Phép modulo

    Modulo là một phép toán cho ta số dư của một phép chia. Modulo ít được biết đến hơn các phép toán cơ bản còn lại, nhưng nó giúp máy tính có thể thực hiện đầy đủ tất cả những phép toán với những số tự nhiên.

    Modulo được biểu thị bởi kí tự %.
    Một số ví dụ :

    • 5 % 2 = 1
    • 14 % 3 = 2
    • 4 % 2 = 0


    Modulo 5 % 2 là số dư của 5 / 2, bằng 1. Máy tính tính toán như sau 5 = 2 * 2 + 1 (modulo cho kết quả 1)
    Tương tự, 14 % 3, tính như sau 14 = 3 * 4 + 2 (modulo cho kết quả 2)
    Cuối cùng, pour 4 % 2, phép chia không có dư nên modulo sẽ cho kết quả là 0.

    Và không nói gì nhiều hơn về modulo, tôi chỉ giải thích với những bạn nào chưa biết.
    Và tôi có thêm một tin tốt nữa, chúng ta đã biết tất cả những phép toán cơ bản.

    Những tính toán sử dụng biến số

    Vấn đề này khá lý thú, bạn đã biết cách sử dụng các phép toán cơ bản, chúng ta hãy luyện tập bằng cách tính toán với nhiều biến số, bạn có thể thực hiện :

    ketqua = so1 + so2;

    Đoạn mã này tính tổng của các biến số so1 và so2, sau đó kết quả sẽ đưa vào biến số ketqua.

    Ah ! tôi có một ý tưởng cho bạn đây, bây giờ bạn có khả năng thực hiện một công cụ tính toán nhỏ. Chắc mà, tôi bảo đảm các bạn có thể làm đươc !

    Hãy tưởng tượng một chương trình đòi hỏi người sử dụng nhập vào 2 số hạng. Đó là giá trị của 2 biến số, sau đó bạn hãy thực hiện tổng của 2 biến số này, kết quả là giá trị của biến số « ketqua ». Sau đó bạn hiển thị nó lên màn hình. Chương trình này khá đơn giản, hãy luyện tập với nó.

    Đây là kết quả:

    C Code:
    1. int main(int argc, char *argv[])
    2. {
    3.   int ketqua = 0, so1 = 0, so2 = 0;
    4.  
    5.   // Chung ta yeu cau nguoi su dung nhap vao gia tri cua so1 va so2 :
    6.  
    7.   printf("Gia tri so thu 1 : ");
    8.   scanf("%d", &so1);
    9.   printf("Gia tri so thu 2 : ");
    10.   scanf("%d", &so2);
    11.  
    12.   // Thuc hien phep tinh :
    13.  
    14.   ketqua = so1 + so2;
    15.  
    16.   // Va ta hien thi len man hinh :
    17.  
    18.   printf ("%d + %d = %d\n", so1, so2, ketqua);
    19.        
    20.   return 0;
    21. }

    Console Code:
    1. Gia tri so thu 1 : 30
    2.  
    3. Gia tri so thu 2 : 25
    4.  
    5. 30 + 25 = 55

    Các bạn có thể thử chương trình này với bất kì số hạng nào ( nếu số hạng đó không nằm ngoài giới hạn của biến số dạng long), máy tính của bạn sẽ hoàn thành phép tính với vận tốc ánh sáng .

    Tôi khuyên bạn hãy tạo thêm các chương trình sử dụng những phép toán khác (phép trừ, phép nhân…)
    Bạn hoàn toàn có thể thực hiện với nhiều biến số hơn nữa, không vấn đề gì nếu như ta dùng 3 biên số cùng lúc:

    C Code:
    1. ketqua = so1 + so2 + so3;

    __________________________________

    Phương pháp viết rút gọn


    Như tôi đã nói với các bạn, chúng ta không còn phép toán nào mới để học nữa, đó là tất cả.
    Chúng ta không cần thêm các phép toán nào khác vì chúng ta có thể tạo ra chúng.
    Thật khó tin nếu như tôi nói rằng một game 3D chỉ sử dụng không gì khác hơn phép cộng và phép trừ. Nhưng đó hoàn toàn là sự thật.

    Và cũng giống như dưới đây, trong C có những phương pháp giúp ta viết ngắn gọn những phép toán.
    Tại sao phải dùng phương pháp viết rút gọn ?
    Tại vì chúng ta thường xuyên phải lặp lại một phép toán. Bạn sẽ hiểu rõ hơn những gì tôi nói. Với cái gọi là incrémentation
    (incrementation, là tăng lần lượt một giá trị theo trình tự, mình nghĩ tiếng việt là phép lượng gia, mình không chắc nên giữ nguyên cho chắc ăn, tác giả dùng từ này chỉ việc tăng giá trị một số lên 1, incrément hay increment là số gia)

    L'incrémentation

    Bạn sẽ thấy rằng bạn sẽ phải thường xuyên tăng giá trị một biến số lên 1. Ví dụ như biến số của bạn là « sohang » . Và ta làm như sau:

    C Code:
    1. sohang = sohang + 1;

    Và chuyện già diễn ra ở đây ? Chúng ta lấy sohang + 1, và sau đó chúng ta đưa giá trị nhận được vào chính « sohang ». Nếu số hạng này có giá tri ban đầu là 4 thì nó sẽ thành 5, nêu là 8 thì sẽ thành 9…

    Thao tác này sẽ được sử dụng lại. Những nhà lặp trình đều là những người đặc biệt lười biếng, hầu như họ đều không hứng thú với việc viết lại một cái nào đó (việc này khá mệt nhọc !).

    Và họ đã tạo ra một cách viết rút gọn gọi là incrémentation. Đoạn mã sau cũng biểu thị điều tương tự với đoạn mã ta vừa thấy ở trên :

    C Code:
    1. sohang++;

    Đoạn mã này khá ngắn so với những gì ta thấy trước đó, nó có nghĩa là « thêm 1 vào biến số sohang ». Chỉ cần viết tên biến số, sau đó thêm vào hai dấu +, và đừng quên dấu chấm phẩy đặt ở cuối cùng.

    Chỉ là như vậy, chúng ta sẽ gặp lại nó thường xuyên vì có rất nhiều trường hợp cần sử dụng phương pháp này.

    Nếu bạn chịu để ý một tí, bạn sẽ thấy dấu hiệu này được tìm thấy trong « C++ ». Và với con mắt của một nhà lập trình, bạn có thể hiểu được ý nghĩa của nó !
    C++ có nghĩa là ngôn ngữ C « được tăng thêm một cấp ».

    décrémentation

    Hic, giống như trên mình thật sự không tìm được trong từ điển tiếng việt từ ngữ nào tương ứng.

    Đơn giản là trái ngược hoàn toàn với incrémentation. Chúng ta sẽ giảm giá trị của biến số đi 1.
    Và chúng ta cũng sẽ sử dụng nó thường xuyên như incrémentation.

    Nếu như ta viết nó đầy đủ :

    C Code:
    1. sohang= sohang - 1;

    Thì đây là dạng rút gọn :

    C Code:
    1. sohang--;

    Hẳn là bạn có thể tự đoán ra được, ở vị trí ta đặt ++, thì thay thế bằng --. Nếu biến số có giá trị là 6 ban đầu, thì nó sẽ thành 5 sau khi thực hiện décrémentation.

    Những dạng viết rút gọn khác

    Trong C còn nhiều cách viết rút gọn khác cũng hoạt động tương tự. Tất cả các phép toán cơ bản : + - * / đều có phương pháp viết rút gọn.

    Nó giúp ta phải viết lại tên của biến số cùng một dòng.
    Và nếu bạn muốn tăng lên 2 lần giá trị của một biến số :

    C Code:
    1. sohang = sohang * 2;

    Bạn có thể viết dưới dạng rút gọn :

    C Code:
    1. sohang *= 2;

    Nếu số đó là 5 lúc ban đầu thì nó sẽ trở thành 10 sau đó.
    Với những phép toán cơ bản khác cũng hoạt động y như vậy, đây là một chương trình làm ví dụ :

    C Code:
    1. int sohang = 2;
    2.  
    3. sohang += 4; // sohang tro thanh 6...
    4. sohang -= 3; // ... sohang tro thanh 3
    5. sohang *= 5; // ... sohang tro thanh 15
    6. sohang /= 3; // ... sohang tro thanh 5
    7. sohang %= 3; // ... sohang tro thanh 2 (vi 5 = 1 * 3 + 2)

    Đó là những cách viết rút gọn mà bạn sẽ sử dụng trong một ngày nào đó,
    hãy nắm vững incrémentation vì đây là phương pháp viết rút gọn được sử dụng nhiều nhất.

    _______________________________

    Thư viện toán học


    Trong ngôn ngữ C , tồn một số cái gọi là những thư viện « standard », đó là những thư viện « cơ bản » luôn có thể sử dụng, và sử dụng thường xuyên.

    Tôi xin nhắc lại, thư viện là tập hợp những hàm đã được viết sẵn bởi những nhà lập trình khác trước đó để tránh việc phải viết lại.

    Chúng ta đã từng sử dụng hàm printfscanf trong thư viện stdio.h.
    Chúng ta phải biết rằng còn nhiều thư viện khác nữa, trong đó có math.h, nó chứa một số lớn những hàm toán học đã được viết trước.

    Ngoài phép toán cơ bản mà bạn đã biết, thì thư viện toán học chứa những phép toán phức tạp khác mà tôi chắc là bạn sẽ cần đến, ví dụ như là các fonctions exponentielles (nếu như bạn không biết đây là gì thì có thể bạn còn quá trẻ hay là bạn học toán vẫn chưa đủ) .
    Theo mấy cuốn từ điển mà mình có được cũng như tra từ điển trên mạng hay vô google.vn đều dịch cái này là hàm số mũ, hàm kiểu mũ
    Nhưng theo những gì mình hiểu và học được thì đó là hàm tính lũy thừa của e, vd exp(1) = e^1 = e = 2.7182821828… ai rành cái này kiểm chứng lại giúp mình, mình không chắc lắm)


    Trong ví dụ này, chúng ta không biết cách thực hiện những lũy thừa trong C ! Làm sao tính một số mũ 2 ? Bạn có thể viết 5² trong đoạn mã của bạn, những máy tính sẽ không hiểu cái đó là gì cả… Ít nhất bạn phải giải thích cho nó bằng cách sử dụng những thư viện toán học !

    Để có thể sử dụng những hàm trong thư viện toán học, chúng ta bắt buộc phải thêm directive de préprocesseur ở đầu chương trình:

    C Code:
    1. #include <math.h>

    Một khi mà bạn đã làm điều đo, bạn có thể sử dụng tất cả các hàm trong thư viện này.

    Tôi nghĩ là tôi nên giới thiệu chúng với bạn. Tôi sẽ không làm một list đầy đủ ở đây, vì nó có rất nhiều, các ngón tay đáng thương của tôi sẽ phồng lên trước khi kết thúc phần hướng dẫn này. Tôi chỉ hướng dẫn các bạn một số hàm chính, những hàm có vẻ quan trọng nhất.

    Có thể cấp độ toán học của bạn không đủ để hiểu làm cách nào có thể viết được những hàm này. Nếu đúng là như vậy, bạn không cần phải lo lắng gì cả. Chỉ cần đọc, việc này không khiến bạn tổn hại.
    Và tôi sẽ cho bạn một lời khuyên miễn phí : hãy chú tâm vào những tiết toán, họ không nói như tôi ở đây đâu
    .
    fabs

    Hàm này sẽ trả về giá trị tuyệt đối của một số , trong toán học viết là |x|.
    • Nếu bạn đưa hàm này giá trị là -53, nó sẽ trả về giá trị 53.
    • Nếu bạn đưa hàm này giá trị là 53, nó sẽ trả về 53.


    C Code:
    1. double absolu = 0, sohang=-27;
    2.  
    3. absolu = fabs(sohang); // gia tri tuyet doi cua sohang se la 27

    Hàm này sẽ trả về một số dạng double vì vậy biến số của bạn đưa vào cũng phải thuộc dạng double.

    Trong thư viện « stdlib.h » cũng có một hàm tương tự gọi là « abs », nó cũng hoạt động như vậy, chỉ trừ việc nó sử dụng những số nguyên « int » và nó trả về giá trị dạng số nguyên int.
    ceil

    Hàm này sẽ trả về giá trị dạng số nguyên nếu như ta đưa cho nó một số thực.

    Đó là một dạng làm tròn. Nó sẽ luôn cho một số nguyên có giá trị lớn hơn.
    Ví dụ, nêu như ta cho nó giá trị là 26.512, hàm sẽ trả lại 27.

    Nó sử dụng và trả lại giá trị dạng double:

    C Code:
    1. double lamtronTren = 0, sohang = 52.71;
    2.  
    3. lamtronTren = ceil(sohang); // lamtronTren se bang 53

    floor

    Trái ngược với hàm trước đó, hàm này cho ta số nguyên có giá trị nhỏ hơn.
    Nếu như ta cho nó 37.91, hàm floor sẽ trả lại 37.

    pow

    Hàm này cho phép tính lũy thừa một số. Chúng ta phải chỉ ra cho nó 2 giá trị : số hạng và cấp lũy thừa của số đó. Đây là biểu đồ của hàm này :

    C Code:
    1. pow(sohang, capLuyThua);

    Ví dụ, « 2 lũy thừa 3 » (chúng ta thường ghi là 2^3 trên máy tính), là phép toán 2 * 2 * 2, cho kết quả là 8 :

    C Code:
    1. double ketqua = 0, sohang = 2;
    2.  
    3. ketqua = pow(sohang, 3); // ketqua se duoc 2^3 = 8

    Bạn có thể sử dụng hàm này để tính bình phương của một số.

    sqrt

    Hàm này tính căng bậc 2 của một số, nó cho ta giá trị dạng double.

    C Code:
    1. double ketqua = 0, sohang = 100;
    2.  
    3. ketqua = sqrt(sohang); // ketqua tro thanh 10

    sin, cos, tan

    Đây là 3 hàm được sử dụng trong lượng giác.

    Cách hoạt động của chúng như nhau, trả về giá trị dạng double.
    Chúng ta phải cho nó giá trị radian.
    (một radian bằng 180 độ)

    asin, acos, atan

    Đây là những hàm arc sinus, arc cosinus và arc tangente, các hàm lượng giác khác.
    Cũng hoạt động tương tự như trên, trả về giá trị dạng double.

    exp

    Hàm tính exponentiel của một số . Trả về giá trị dạng double.

    log

    Hàm tính logarithme népérien của một số. (chúng ta thường ghi là « ln »)

    ngày trước còn đi học ông thầy bảo đọc cái này là « lóc ne be »

    log10

    Hàm này tính le logarithme base 10 của một số.
    ông thầy bảo đọc là « lóc mười »

    Lời kết

    Tóm lại, tôi đã không nói về các hàm khác.(Thật sự là tôi không biêt là chúng được dùng để làm gì )
    Với những hàm này bạn có thể sử dụng cho phần lớn các trường hợp liên quan đến toán học.

    Xin nói thêm lần nữa, nếu bạn không hiểu những điều tôi nói thì không có gì nghiêm trọng cả vì những phép toán này chúng ta không nhất thiết cần đến. Trừ khi bạn phải làm một chương trình tính toán một vấn đề khoa học nào đó.

    Dù gì bạn cũng nên nắm vững hàm floor, ceil, và pow, nó rất cần thiết cho chúng ta trong tính toán.

    Bài hướng dẫn này tôi xin được dành cho những thầy giáo dạy toán (một nghề nghiệp ít được biết đến). Nếu bạn vẫn còn đi học, tôi cho bạn một lời khuyên chân thành : lập trình, luôn đi cùng với toán học. Hãy học tốt môn toán, điều đó sẽ giúp ích rất nhiều trong lập trình. Nhưng chắc chắn là chúng ta rất ít khi phải tính exponentielles và tangentes khi thực hiện chương trình. Những cái này phụ thuộc vào chương trình mà chúng ta viết, tôi nói lại. Ví dụ, nếu một số người trong các bạn có hứng thú với những việc liên quan đến 3D (tôi sẽ hướng dẫn bạn rất lâu sau này), bạn cần phải có một số hiểu biết về hình học không gian (đồ thị, vecteurs…)

    _____________________________________

    Q.C.M.

    "Dấu nhân" trên máy tính là kí hiệu nào ?
    • *
    • +
    • /
    • -
    • %
    Một câu hỏi đơn giản về modulo
    Kết quả sẽ là bao nhiêu: 17 % 5 ?

    • 0
    • 1
    • 2
    • 3
    • 4
    • 5
    • 15
    "Ketqua" se mang gia tri bao nhieu ?

    C Code:
    1. ketqua = (8 / 3) - 2;

    • -2
    • 0
    • 1
    • 2
    phương pháp này là gì ?

    C Code:
    1. sohang++;

    • L'incrémentation
    • L'augmentation
    • La supplémentation
    Biến số "sohang" sẽ mang giá trị bao nhiêu ?

    C Code:
    1. int sohang = 4;
    2.  
    3. sohang--;
    4. sohang *= 4;
    5. sohang %= 12;
    6. sohang += 1;

    • 1
    • 4
    • 12
    • 14
    Hàm nào sau đây sẽ làm tròn 5.47 thành 5 ?
    • pow
    • ceil
    • floor
    • sqrt
    Đáp án:
    1-a
    2-c
    3-b
    4-a
    5-a
    6-c
    Đã được chỉnh sửa lần cuối bởi daihung.pham : 22-02-2010 lúc 05:27 AM.

  10. #10
    Ngày gia nhập
    02 2010
    Nơi ở
    Marseille
    Bài viết
    14

    6) Condition


    Trong chương đầu tiên, ta đã thấy rằng có rất nhiều ngôn ngữ lập trình, trong đó một số ngôn ngữ hoạt động tương tự nhau, ví dụ như ngôn ngữ PHP khá giống với C, tuy nhiên người ta sử dụng PHP để thiết kế web nhiều hơn.
    Các ngôn ngữ thường có một số điểm giống nhau do chúng cùng sử dụng lại các nguyên tắc cơ bản của ngôn ngữ đời trước. Ngôn ngữ C được tạo ra cách đây khá lâu, và mô hình của phần lớn các ngôn ngữ mới hiện giờ đều đươc tạo trên C.
    Nguyên tắc cơ bản thì có rất nhiều như cách khai báo biến số, các cách thực hiện phép tính (hầu như các ngôn ngữ lập trình đều giống nhau ở mặt này !) và cách sử dụng condition

    Phần này gồm :
    • Condition "if... else"
    • Booléen, tâm của những điều kiện
    • Condition "switch"
    • Ternaire: những condition rút gọn
    • Q.C.M.


    _____________________________
    Condition « if…else »

    Chúng ta thường muốn kiểm tra giá trị của một biến số. Ví dụ « Nếu biến số maymoc có giá trị là 50, hãy thực hiện công việc …» .Nếu biến số nhỏ hơn 50, nhỏ hơn hoặc bằng 50, lớn hơn, lớn hơn hoặc bằng…

    Điều đó có thể được thực hiện trong C thông qua việc sử dụng condition if…else. Condition dùng để kiểm tra giá trị của biến số. Và để sử dụng nó, ta đi theo sơ đồ sau:

    1. Một số kí tự cần biết trước khi bắt đầu.
    2. Thử nghiệm if
    3. Thử nghiệm else
    4. Thử nghiệm “else if”
    5. Cách thiết lập nhiều điều kiện cùng lúc
    6. Những sai phạm thường gặp mà người mới học cần tránh




    Một vài kí hiệu cơ bản cần biết trước khi học cách sử dụng condition “if…else” trên C

    Chúng ta cần phải thuộc lòng bảng kí hiệu này:

    (X) Hãy chú ý, để kiểm tra bằng nhau, ta cần nhập 2 kí tự « == ». Những người bắt đầu học lập trình thường mắc lỗi chỉ nhập một kí tự =, chúng không có cùng ý nghĩa trên C, tôi sẽ nói về vấn đề này ở dưới.
    if

    Chúng ta sẽ thực hiện một chương trình đơn giản, nó sẽ nói với máy tính:

    NẾU biến số thỏa điều kiện ...
    THÌ thực hiện ...
    Trong tiếng anh, từ « nếu » sẽ dịch thành « if », từ này cũng được sử dụng trong C để khai báo một điều kiện.

    Để viết một condition if, đầu tiên hãy viết một if kế đó mở ngoặc đơn. Trong ngoặc đơn, hãy viết điều kiện.

    Sau đó, mở một dấu gộp { và hãy đóng lại ở phía sau }. Trong đó chứa tất cả những instruction chỉ được thực hiện nếu điều kiện thỏa mãn.

    Chúng ta sẽ viết như sau:

    C Code:
    1. if (/* Điều kiện của bạn */)
    2. {
    3. // Các Instructions được thực hiện nếu như điều kiện thỏa mãn
    4. }

    Tại vị trí chú thích « điều kiện của bạn », chúng ta sẽ viết một điều kiện để kiểm tra biến số.
    Ví dụ chúng ta có thể kiểm tra một biến số « tuoi » sẽ chứa giá trị là tuổi của bạn. Chúng ta sẽ xét xem bạn có phải là người trưởng thành hay không, có nghĩa là tuổi của bạn có lớn hơn hoặc bằng 18 hay không :

    C Code:
    1. if (tuoi >= 18)
    2. {
    3. printf ("Ban la nguoi truong thanh !");
    4. }

    Kí tự >= có nghĩa là « lớn hơn hoặc bằng », chúng ta đã thấy trong bảng liệt kê các kí tự đặc biệt ở trên.

    Các dấu gộp {...} không bắt buộc khi bên trong nó chỉ chưa duy nhất một instruction. Bạn có thể viết như sau
    C Code:
    1. if (tuoi >= 18)
    2. printf ("Ban la nguoi truong thanh !");

    Test code

    Nếu như bạn muốn test những đoạn mã trước để xem if hoạt động như thế nào, chúng ta phải đặt condition if bên trong một fonction main và đừng quên khai báo biến số tuổi, và cho nó một giá trị nào đó theo ý thích.

    Tôi nghĩ rằng bạn có thể tự mình viết ra đoạn mã này và sau đó chạy thử nỏ.

    Đây là đoạn mã hoàn chỉnh:

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(int argc, char *argv[])
    4. {
    5. long tuoi = 20;
    6. if (tuoi >= 18)
    7. {
    8. printf ("Ban la nguoi truong thanh !\n");
    9. }
    10. system("PAUSE");
    11. return 0;
    12. }

    Ở đây, biến số tuổi bằng 20, vậy « Ban la nguoi truong thanh ! » sẽ được hiển thị
    Hãy thử thay đổi giá trị của biến số. Cho giá trị mới là 15 : điều kiện không thỏa mãn và « Ban la nguoi truong thanh ! » không hiển thị lần này.

    Hãy giữ lại đoạn mã này để sử dụng cho ví dụ tiếp theo.

    Câu hỏi

    Cách bạn mở những dấu gộp { } không quan trọng, chương trình của bạn sẽ cũng chạy tốt nếu như bạn viết tất cả trên cùng một hàng. Ví dụ:

    C Code:
    1. if (tuoi >= 18) { printf ("Ban la nguoi truong thanh !"); }

    Mặc dù bạn có thể viết như vây nhưng cách viết này rất không được khuyến khích (viết thêm là khi tôi biết rất to, sậm và được gạch dưới, cũng bởi vì nó thật sự quan trọng).

    Thực sự là viết tất cả trên cùng một hàng sẽ khiến cho việc đọc đoạn mã của bạn vô cùng khó khăn. Bạn cần tập cách trình bày mã nguồn của mình ngay từ bây giờ, nếu không sau này khi bạn viết các chương trình lớn hơn, bạn sẽ không tìm thấy được cái bạn cần trong đó!

    Hãy thử trình bài lại mã nguồn của bạn theo với cách thức của tôi: một dấu gộp mở { duy nhất trên 1 hàng, các dòng sau đó là các instruction (nhấn tab để có thể « cách về bên phải »), sau đó một dấu gộp đóng } duy nhất trên một hàng.

    Có rất nhiều cách thức hay để trình bày mã nguồn và nó không làm thay đổi hoạt động của chương trình. Cách trình bày mã nguồn có thể gọi là « style informatique » nếu như bạn muốn.

    Bạn sẽ thấy các đoạn mã được trình bày bởi các style hơi khác. Nhưng về cơ bản các đoạn mã đó đều có cách trình bày thoáng và dễ nhìn.
    « else » nghĩa là « nếu không »

    Chúng ta đă biết cách viết condition đơn giản, hãy đi xa hơn một chút : điều kiện không thỏa mãn (sai), chúng ta sẽ yêu cầu máy tính thi hành một instruction khác.

    Trong ngôn ngữ của chúng ta, điều đó sẽ được ghi với dạng tương tự như sau :

    NẾU biến số thỏa điều kiện...
    THÌ thực hiện ...
    NẾU KHÔNG thực hiện ...
    Chỉ cần thêm vào từ else sau dấu gộp kết thúc của if.
    Một ví dụ nhỏ :

    C Code:
    1. if (tuoi >= 18) // Neu tuoi lon hon hoac bang 18
    2. {
    3. printf ("Ban la nguoi truong thanh !");
    4. }
    5. else // Neu khong...
    6. {
    7. printf ("Hehe, ban con la con nit !");
    8. }

    Ta có thể hiểu đơn giản: nếu như biến số tuổi có giá trị lớn hơn hoặc bằng 18, sẽ hiển thị « Ban la nguoi truong thanh ! »
    Nếu không hiển thị « Hehe, ban con la con nit ! »

    « else if » có nghĩa là « nếu không nếu »

    Chúng ta đã thấy bằng cách nào để tạo một « nếu » và một « nếu không ». Chúng ta cũng có thể tạo một “nếu không nếu”. Nếu như điều kiện đầu không thỏa mãn, chúng ta sẽ kiểm tra biến số với một điều kiện khác . “Nếu không nếu” đặt bên trong if và else.

    Chúng ta yêu cầu máy tính:

    NẾU biến số thỏa điều kiện 1
    THÌ thực hiện việc 1
    NẾUKHÔNG NẾU biến số thỏa điều kiện 2
    THÌ thực hiện việc 2
    NẾU KHÔNG thực hiện việc 3
    Dịch sang ngôn ngữ C:

    C Code:
    1. if (tuoi >= 18) // Neu tuoi lon hon hoac bang 18
    2. {
    3. printf ("Ban la nguoi truong thanh !");
    4. }
    5. else if ( age > 4 ) // Neukhong, Neu tuoi nho hon 18 va lon hon  4
    6. {
    7. printf ("Hehe, ban con la con nit!");
    8. }
    9. else // Neukhong...
    10. {
    11. printf ("Oe oe"); // Ngon ngu tre so sinh, ban khong the hieu duoc dau
    12. }


    Máy tính sẽ thực hiện những kiểm tra theo thứ tự:

    • Đầu tiên nó sẽ kiểm tra if đầu tiên : nếu như điều kiện được thỏa mãn, nó sẽ thi hành các instructions có trong các dấu gộp {...} đầu tiên.
    • Nếu không, nó sẽ đi đến « nếu không nếu » để kiểm tra các điều kiện mới : nếu đúng, thì nó sẽ thi hành các instruction trong các dấu gộp {...} thứ 2.
    • Cuối cùng, nếu không có điều kiện nào được thỏa mãn, nó sẽ chạy những instruction của « nếu không»


    « else » và « else if » không bắt buộc phải có. Cần phải có ít nhất một “if” để tạo một condition( nói một cách logic, "nếu không" không có điều kiện!)
    Chúng ta có thể đặt bao nhiều “else if” nếu như ta muốn. Chúng ta có thể viết như sau:
    NẾU biến số thỏa điều kiện 1
    THÌ thực hiện việc 1
    NẾUKHÔNG NẾU biến số thỏa điều kiện 2
    THÌ thực hiện việc 2
    NẾUKHÔNG NẾU biến số thỏa điều kiện 3
    THÌ thực hiện việc 3
    NẾUKHÔNG NẾU biến số thỏa điều kiện 4
    THÌ thực hiện việc 4
    NẾUKHÔNG thực hiện việc 5

    Thiết lập nhiều điều kiện cùng lúc
    Ta có thể kiểm tra nhiều điều kiện cùng lúc trong if. Ví dụ, các bạn muốn xem thử nếu như tuổi lớn hơn 18 VÀ nhỏ hơn 25.
    Chúng ta cần phải sử dụng các kí hiệu sau đây:

    &&-----VÀ
    ||------HOẶC
    !-------KHÔNG

    Test VÀ

    Đoạn mã sử dụng kí hiệu vừa nêu

    C Code:
    1. if (age > 18 && age < 25)

    Những kí hiệu « && » có nghĩa là VÀ. Diễn dạt bằng ngôn ngữ của chúng ta : « Nếu tuổi lớn hơn 18 VÀ bé hơn 25 »

    Test HOẶC

    Để tạo một HOẶC, chúng ta sử dụng 2 kí tự ||.
    Chúng ta hãy tưởng tượng một chương trình kiểm tra và quyết định quyền mở tài khoản ngân hàng.Để mở một tài khoản ngân hàng, tuổi khách hàng không được nhỏ quá (chúng ta sẽ tùy tiện đặt điều kiện tuổi phải lớn hơn 30) hoặc khách hàng có nhiều tiền (tất nhiên ngân hàng sẽ dang tay đón chào kể cả khi tuổi bạn bé hơn 10)

    Đây là đoạn mã nhận biết quyền mở một tài khoản ngân hàng :

    C Code:
    1. if (tuoi > 30 || tien > 100000)
    2. {
    3. printf("Chao mung ban den voi chung toi !");
    4. }
    5. else
    6. {
    7. printf("Cut !");
    8. }

    Điều kiện sẽ được thỏa mãn nếu người này có tuổi trên 30 hoặc có số tiền nhiều hơn 100 000 euros

    Test KHÔNG

    Kí tự cuối cùng còn lại để test là dấu chấm thang. Trong tin học, dấu chấm thang có nghĩa là « Không »
    Các bạn phải đặt kí tự này trước điều kiện để nói rằng «Nếu điều này không đúng » :

    C Code:
    1. if (!(tuoi < 18))

    Đoạn mã trên có thể dịch là « Nếu người này không phải là trẻ con »
    Nếu dấu « ! » ở phía trước bị lấy đi, đoạn mã sẽ có nghĩa trái ngược : « Nếu người này là trẻ con »

    Một số lỗi thường gặp của người mới học

    Đừng quên có đến 2 dấu ==

    Nếu chúng ta muốn kiểm tra xem người này có phải 18 tuổi hay không, chúng ta phải ghi:

    C Code:
    1. if (tuoi == 18)
    2. {
    3. printf ("Ban vua moi truong thanh !");
    4. }

    Đừng quên việc đặt 2 kí tự « bằng » trong một if, như thế này : ==
    Nếu bạn chỉ đặt mỗi một kí tự =, thì biến số của bạn sẽ nhận giá trị 18 (giống như ta đã học trong phần biến số). Tất cả những điều ta muốn ở đây, là kiểm tra giá trị của biến số chứ không phải thay đổi nó ! Hãy chú ý điểm này, Có rất nhiều người trong các bạn chỉ đặt mỗi một và khi chương trình bạn được bắt đầu thì tất nhiên là nó không chạy giống như ý họ muốn.

    Dấu chấm phẩy dư thừa

    (X) Một lỗi khác của những người mới bắt đầu : có khi các bạn đặt một dấu chấm phẩy sau dòng của if.
    if là một condition, chúng ta sẽ không đặt dấu chấm phẩy ở cuối condition mà cuối một instruction
    Đoạn code sau đây sẽ không chạy vì có một dấu chấm phẩy ở cuối condition if :

    C Code:
    1. if (tuoi == 18); //  dau cham phay nay KHONG duoc phep o day
    2. {
    3. printf ("Ban chi vua moi truong thanh");
    4. }

    Phần này có rất nhiều chỗ mình không dịch không theo đúng câu văn của tác giả mà phải sửa lại rất nhiều lần để có thể hiểu được rõ ý hơn.
    Có một vấn đề khó khăn nữa là "condition if...else..." không biết phải dịch như thế nào là đúng, vì nếu dich là "điều kiện if...else..." thì có thể bạn sẽ nhầm lẫn bởi điều kiện bên trong dấu ngoặc (...), nếu dịch lả "hàm điều kiện..." thì có thể hiểu nhầm là cần đặt một dấu chấm phẩy ở cuối cùng vì nó cũng là một hàm. Nên mình quyết định, gọi là "condition" nếu đề cập đến toàn bộ "if...else...", gọi "điều kiện" nếu đề cập đến điều kiện bên trong (...) của if

    Mình không biết các giáo viên việt nam gọi chúng như thế nào nên nếu có sai sót các bạn gửi thư chỉ mình sửa lại nhé
    Đã được chỉnh sửa lần cuối bởi daihung.pham : 28-02-2010 lúc 05:55 AM.
    change my life...

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn