Tài liệu lập trình C for newbie - Chương 1: Nền tảng để bắt đầu!

basic
c
programming
document

(MiN) #1

Hi mọi người,

Hôm nay mình xin chia sẻ với các bạn 1 tài liệu hướng dẫn lập trình C mà mình sưu tầm được. Tài liệu này được viết bởi một lập trình viên người Pháp, mình và một người bạn sống ở Pháp dịch và biên soạn lại.

Theo cá nhân mình thì với các bạn newbie khi mới chập chững bắt đầu lập trình luôn phải chạy ngược chạy xuôi tìm tài liệu, và tất nhiên là lần đầu tiên lúc nào cũng khó khăn đúng ko ?

Một tài liệu dành cho những người hoàn toàn không có tí kiến thức gì về lập trình đối với mình phải có được những tiêu chí:

  • Dễ hiểu: Đây là 1 lĩnh vực không phải dễ nhai, mà với một tài liệu hay, dễ đọc, sẽ khiến cho sự tiếp cận của bạn dễ dàng hơn với lập trình (lần đầu tiên luôn quan trọng mà … hehe). Có những người đã từ bỏ ý tưởng học lập trình ngay khi vừa bắt đầu chỉ vì nhặt được bí kíp quá khó luyện.

  • Chi tiết: Là 1 người chưa biết gì về lập trình thì việc hiểu rõ, hiểu sâu sẽ tạo nền tảng rất tốt về sau này.

  • Tạo được cảm hứng: Tài liệu chuẩn thì có rất nhiều vì kiến thức cơ bản thì ở đâu cũng chỉ có nhiêu đó thôi nhưng văn phong, cách trình bày tạo được cảm hứng cho người đọc khiến những người mới bắt đầu không bị cảm giác sợ hãi khi mới rớ vào lập trình.

Tài liệu này là dành riêng cho những bạn mới học.

Mong mọi người đọc và góp ý, mình có ý định biên soạn tài liệu này thành 1 bộ sách hoàn chỉnh để truyền lại cho thế hệ sau … hehehe !!!

Chi tiết góp ý xin các bạn gửi email cho mình về địa chỉ mail [email protected]

Sau đây mình xin phép show hàng luôn cho nóng:

Full bộ tài liệu: Tải tại đâyLink dự phòng

Việt Nam version:

[Tài liệu lập trình C] - Chương 1: Nền tảng để bắt đầu!Link dự phòng

[Tài liệu lập trình C] - Chương 2: Những kỹ thuật nâng cao!

Pháp version: Apprenez à programmer en C

Dưới đây mình cũng dành thời gian tách ra thành từng bài và đồng thời khuyến khích các bạn kết hợp đọc tài liệu của mình với xem các videos của anh Đạt.

Với lý thuyết kèm theo thực hành lại còn có video trực quan sinh động. Bảo đảm tốc độ “tu luyện thành tinh” của các bạn sẽ nhanh hơn rất nhiều nhé.

Bài 1: Lập Trình Là Gì ?Link dự phòng

Clip: Ngôn Ngữ C – 1 – Giới thiệu ngôn ngữ

Bài 2: Công Cụ Cần Có Để Học Lập TrìnhLink dự phòng

Clip: Ngôn Ngữ C – 2 – Sử dụng Code::Blocks để tạo Project C
Clip: Hướng dẫn một số chức năng của Code:Blocks: Download phần mềm
Clip: Hướng dẫn một số chức năng của Code:Blocks: Tự động sắp xếp source code
Clip: Hướng dẫn một số chức năng của Code:Blocks: Build và kiểm tra lỗi
Clip: Hướng dẫn một số chức năng của Code:Blocks: Debug với breakpoint
Clip: Hướng dẫn một số chức năng của Code:Blocks: Debug với watches window

Bài 3: Chương Trình Đầu Tiên Của BạnLink dự phòng

Clip: Ngôn Ngữ C – 3 – Viết chương trình C đầu tiên
Clip: Ngôn Ngữ C - 4 – Thư viện stdio.h là gì ?
Clip: Ngôn Ngữ C - 5 – Cách ghi chú lúc lập trình C
Clip: Ngôn Ngữ C - 6 – Hàm prinf hoạt động như thế nào ?
Clip: Ngôn Ngữ C - 11 – Lệnh và khối lệnh

Bài 4: Thế Giới Của Những Biến SốLink dự phòng

Clip: Ngôn Ngữ C - 7 – Biến là gì? Có ăn được không?
Clip: Ngôn Ngữ C - 8 – Kiểu dữ liệu: Số nguyên (int)
Clip: Ngôn Ngữ C - 36 – Biến cục bộ, biến auto
Clip: Ngôn Ngữ C - 37 – Giải thích sử dụng Scope và auto
Clip: Ngôn Ngữ C - 38 – Biến toàn cục
Clip: Ngôn Ngữ C - 39 – Cách đặt tên biến hiệu quả
Clip: Ngôn Ngữ C - 40 – Float và Double khác nhau như thế nào
Clip: Ngôn Ngữ C - 41 – Thắc mắc về short, long, long long, unsigned, signed, tràn số ?
Clip: Ngôn Ngữ C - 42 – Hằng số là gì? Từ khóa Const
Clip: Ngôn Ngữ C - 43 – Một vài thủ thuật với chuỗi hằng

Bài 5: Công Cụ Tính ToánLink dự phòng

Clip: Ngôn Ngữ C - 44 – Các phép toán cộng, trừ, nhân, chia và ép kiểu
Clip: Ngôn Ngữ C – 45 – Độ ưu tiên của các phép toán
Clip: Ngôn Ngữ C - 46 – Phép toán chia lấy dư (module)
Clip: Ngôn Ngữ C - 48 – Các phép tăng giảm rút gọn

Bài 6: Condition - Điều KiệnLink dự phòng

Clip: Ngôn Ngữ C - 12 – Câu lệnh rẽ nhánh if else
Clip: Ngôn Ngữ C - 13 – Câu lệnh rẽ nhánh else if
Clip: Ngôn Ngữ C - 14 – Lệnh switch với số nguyên
Clip: Ngôn Ngữ C - 15 – Lệnh switch với ký tự
Clip: Ngôn Ngữ C - 50 – Các toán tử quan hệ
Clip: Ngôn Ngữ C - 51 – Kiểu dữ liệu Bool
Clip: Ngôn Ngữ C - 52 – Các toán tử gán

Bài 7: Loop - Vòng LặpLink dự phòng

Clip: Ngôn Ngữ C - 16 – Vòng lặp: While
Clip: Ngôn Ngữ C - 17 – Vòng lặp: For
Clip: Ngôn Ngữ C - 18 – Vòng lặp: Do … While
Clip: Ngôn Ngữ C - 19 – Cách thoát ra khỏi một vòng lặp? Dùng Break
Clip: Ngôn Ngữ C - 20 – Cách bỏ qua một nhóm các điều kiện trong vòng lặp, dùng continue

Bài 8: Test Program - Chương Trình Thử NghiệmLink dự phòng

Bài này trong tài liệu cũng toàn VD nên mình up các clips khác của anh Đạt xem như bonus 1 số kiến thức bổ ích nhé:
Clip: Ngôn Ngữ C – 21- Lệnh goto
Clip: Ngôn Ngữ C – 22- Chương trình tính lãi suất tiền gửi
Clip: Ngôn Ngữ C - 28 – Điều thú vị về phép gán bằng
Clip: Ngôn Ngữ C - 29 – Viết chương trình đếm dòng (hàng)
Clip: Ngôn Ngữ C - 30 – Viết chương trình đếm từ
Clip: Ngôn Ngữ C - 47 – Toán tử sizeof
Clip: Ngôn Ngữ C - 49 – Phân biệt getchar và getch
Clip: Ngôn Ngữ C - 53 – Toán tử comma (dấu phẩy)
Clip: Ngôn Ngữ C - 54 – Mã hóa dữ liệu bằng thư viện ctype.h
Clip: Ngôn Ngữ C - 55 – Các hàm kiểm tra chuỗi trong thư viện ctype.h
Clip: Ngôn Ngữ C - 56 – Hàm toupper và hàm tolower trong ctype.h

Bài 9: Function - HàmLink dự phòng

Clip: Ngôn Ngữ C - 11 – Lệnh và khối lệnh
Clip: Ngôn Ngữ C - 31 – Cấu trúc của một hàm và prototype là gì ?
Clip: Ngôn Ngữ C - 32 – Cấu trúc của một hàm và lệnh return
Clip: Ngôn Ngữ C - 33 – Truyền tham trị
Clip: Ngôn Ngữ C - 34 – Thử nghiệm lý thuyết “Call by value”
Clip: Ngôn Ngữ C - 35 – Hàm trả về kiểu Void

Thêm 1 điều nữa là mình khuyến khích các bạn chia sẻ tài liệu này đến với mọi người càng nhiều càng tốt. Mục đích của mình là muốn tất cả mọi người đều có điều kiện để tiếp xúc với lập trình.

Các bạn có quyền dùng link của ai tùy ý nhưng mình khuyến khích ưu tiên giới thiệu anh/chị/em đến với daynhauhoc.com nhé.

Cảm ơn các bạn đã quan tâm.

P/s: Mình sẽ chăm sóc topic thường xuyên … nếu có hiện tượng link die hay có vấn đề gì các bạn cứ email cho mình nhé … mình sẽ fix sớm nhất có thể cho các bạn.


Xin tài liệu C++ đi từ cơ bản tới Pro
Muốn học C/C++ từ đầu thì nên học như nào?
Chương trình viết C và tài liệu về C
Thắc mắc về cuốn C cơ bản của Aptech
Sự khác nhau giữa tham biến và tham trị trong C và C++
Xin sách hay về ngôn ngữ C
Có nên bắt đầu tự học lập trình sớm
Xem giùm mình lỗi ở đâu với các bạn C cơ bản
Lỗi nhấn chuột phải vào link?
Giúp đỡ bài về mảng trong C
Tìm tài liệu về học lập trình
Welcome on boat! Excited project for everyone!
Thất tình học lập trình là tốt nhất
Đọc Hiểu Code C#
Sinhvienit.net một "ngôi nhà" của dân IT
Xin khóa học c ạ
Tự học C/C++ cho người mới bắt đầu
Em đã học xong tin học 8, giờ e muốn nâng cao lên thì nên đọc những cuốn sách nào vậy?
Xin giáo trình cơ bản học C
Kiểu dữ liệu trong C
Tính số vòng lặp trong C
Xin tài liệu học C/C++ từ cơ bản đến hướng theo đối tượng
Học sinh lớp 10 muốn học lập trình thì bắt đầu với ngôn ngữ gì?
Xin tài liệu và bài tập về ngôn ngữ C
Cho em tài liệu Kỹ Thuật lập trình với á
Cách đơn giản nhất để hiểu các thuật ngữ khó hiểu
Cho em tài liệu Kỹ Thuật lập trình với á
Tại sao diễn đàn mình lại không có hình thức tính điểm cho reply?
Thiết kế Meetup DNH lần 1 ở TP HCM - 7PM - 6/6/2015
Tài liệu lập trình C tổng quan
Xin tài liệu làm quen với c++ có bài tập cơ bản để làm
Tìm tài liệu về học lập trình
Tech cafe for us?
Cho em hỏi về code trong quyển Tài Liệu C chương 2
Người mới bắt đầu nên học ngôn ngữ lập trình nào?
(MiN) #2

Để dành cho Minh để Minh cập nhật


Chia sẻ sách hay
(Lê Trần Đạt) #3

(Thực tế khắc nghiệt) #4

cắn rơm ngồi hóng nguyên bộ tài liệu! :sunny:


(Lê Đình Huy) #5

Nghe nói bộ này chưa được dịch hết hả @TBM_2512


(khong co ten) #6

mình cảm ơn bạn nhiều nghe :slight_smile: bản dịch rất hay và dễ hiểu, cảm ơn anh Đạt tài giỏi của em nữa :blush:


(Fan Nt) #7

Sao em không tải được anh ơi


(Tran Vu) #8

Không tải được thì có báo lỗi gì không?


(Lê Đình Huy) #9

tải tốt mà e, có báo lỗi gì k ?


(harryjeff) #10

ơ sao ko tải được thế anh ơi


(Lê Đình Huy) #11

có báo lỗi gì k e ? a vừa tải xong, ok mà !


(manh tuan) #12

anh nào hướng dẫn em cách đếm số lần lặp của vòng lặp đi trong bài toán đoán số bí ẩn ấy ạ !


(Lê Trần Đạt) #13

@tuandktd đặt câu hỏi ở topic khác nhé. Chỉ nên đặt các câu hỏi liên quan đến tài liệu này.


(manh tuan) #14

Đấy là bài tập nằm trang 99 mà anh. Mà em làm được phần này rồi,
Mọi người cho e hỏi là em muốn chương trình tiếp tục chạy khi mà kết quả ra rồi thì làm thế nào nhỉ? bài tập trang 99 ấy ạ!!


(Lê Trần Đạt) #15

Oh, vậy thì em post đề bài + code em đã làm ở đây để cho người khác cùng xem. Anh không có thời gian đọc hết sách nên anh không biết bài em hỏi có thuộc về quyển sách hay không. Thế nên để tránh nhầm lẫn em nên viết đề bài, trang, và code em đã sửa. Như vậy thì tốt hơn, nhưng mà chăm thế, mới mà đã đọc tới trang 99 à.


(manh tuan) #16
#include <stdio.h>
#include <stdlib.h>
#include<time.h>

int main()
{
    int sotoida;
    int i=0;
    printf("MENU\n");
    printf("1 : 1 - 100 \n");
    printf("2 : 1 - 1000 \n");
    printf("3 : 1 - 10000 \n");
    printf("Moi ban chon che do choi\n");
    scanf("%d", &sotoida);
    int sobimat = 0, sohientai=0;
    switch(sotoida)
    {
    case 1:
        printf("ban da chon muc de\n");
        srand(time(NULL));
        sobimat=(rand()%(100)+1);
        break;
    case 2:
        printf("ban da chon muc trung binh\n");
        srand(time(NULL));
        sobimat=(rand()%(1000)+1);
        break;
    case 3:
        printf("ban da chon muc kho\n");
        srand(time(NULL));
        sobimat=(rand()%(10000)+1);
        break;
    default:
        printf("khong co muc nao duoc chon !\n");
        break;

    }
    //Tao so tu nhien

    //Vong lap ct tu dung khi tim dc so bi mat
    do
    {
        i++;
        printf("So can tim la bao nhieu ?");
        scanf("%d",&sohientai);
        //so sanh so hien tai voi so bi mat
        if(sobimat>sohientai)
            printf("lon hon !\n");
        else if(sobimat<sohientai)
            printf("nho hon!\n");
        else
            printf("Chuc mung ban da tim duoc so bi mat trong %d lan doan !!!\n",i);

    }
    while(sohientai!=sobimat);

    return 0;
}

Đề bài: Tìm số bí ẩn!!!
Đến phần mở rộng yêu cầu khi đã tìm số đúng rồi thì bạn hỏi người chới có chơi tiếp hay không ? Không thì nó sẽ chạy lại từ đầu …Trang 99 tài liệu C for newbie


(Lê Trần Đạt) #17

@tuandktd anh sửa code cho em bằng markdown rồi đấy

Dùng markdown đẹp hơn.

Thế code ở trên đã sửa được lỗi này chưa?


(manh tuan) #18

Em vẫn chưa làm đc phần khi người chơi tìm ra đáp án , ct dừng lại.Ta sẽ hỏi người chơi chơi 1 ván khác không ? có thì là 1 à không chơi là 0…?


(Lê Trần Đạt) #19

Bài này anh lười quá, em thử dùng goto xem. Dùng goto để nhảy lên trên đầu, có cách khác mà anh đang lười :smiley:


(manh tuan) #20
    #include <stdio.h>
    #include <stdlib.h>
    #include<time.h>
        
    int main()
    {
        int sotoida;
        int i=0;

    printf("MENU\n");
    printf("Chon che do choi mot nguoi hoac hai nguoi\n");
    printf("Moi ban chon che do 1 nguoi choi\n");
    printf("1 : 1 - 100 \n");
    printf("2 : 1 - 1000 \n");
    printf("3 : 1 - 10000 \n");
    printf("Moi ban an 4 che do 2 nguoi choi\n");
    scanf("%d", &sotoida);
    int sobimat = 0, sohientai=0;
    switch(sotoida)
    {
    case 1:
        printf("ban da chon che do  nguoi choi muc de\n");
        srand(time(NULL));
        sobimat=(rand()%(100)+1);
       break;
    case 2:
        printf("ban da chon che do 1 nguoi choi muc trung binh\n");
        srand(time(NULL));
        sobimat=(rand()%(1000)+1);
       break;
    case 3:
        printf("ban da chon che do mot nguoi choi muc kho\n");
        srand(time(NULL));
        sobimat=(rand()%(10000)+1);
       break;
    case 4:

        printf("che do 2 nguoi choi\n");
        printf("nhap vao so bi mat: ");
        scanf("%d",&sobimat);
        break;
    default:
        printf("Khong co muc nao duoc chon!");
        return 0;
        break;
    }

    //Tao so tu nhien

    //Vong lap ct tu dung khi tim dc so bi mat
    do
    {
        i++;
        printf("So can tim la bao nhieu ?");

        scanf("%d",&sohientai);
        //so sanh so hien tai voi so bi mat
        if(sobimat>sohientai)
            printf("lon hon !\n");
        else if(sobimat<sohientai)
        printf("nho hon!\n");
        else
            printf("Chuc mung ban da tim duoc so bi mat trong %d lan doan !!!\n",i);

    }while(sohientai!=sobimat);
    return 0;

    }

lúc nào ah rảnh thì chỉ e với, e vẫn chưa làm đc :((


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?