1. Kết quả Event Ghost 2016


    Dưới đây là danh sách những thành viên đoạt giải thưởng trong Event Ghost 2016

Giáo Trình C Căn Bản ( VD rõ ràng )

Thảo luận trong 'Pascal, C , C++' bắt đầu bởi Raymond, 3 Tháng tám 2012.


  1. Raymond

    Raymond Member Tích Cực

    164
    91
    43
    Môn Lập Trình Căn Bản A cung cấp cho sinh viên những kiến thức cơ bản về lập trình thông qua ngôn ngữ lập trình C. Môn học này là nền tảng để tiếp thu hầu hết các môn học khác trong chương trình đào tạo. Mặt khác, nắm vững ngôn ngữ C là cơ sở để phát triển các ứng dụng.

    Mục Lục :

    + Lý Thuyết C
    + Kiểu Dữ Liệu & Biến
    + Nhập Xuất Dữ Liệu ( cout & cin )
    + Cấu Trúc Rẽ Nhánh Có Điều Kiện
    -------> Mục Tiêu
    -------> Lệnh If
    -------> Lệnh Switch
    -------> Bài Tập
    -------------> Sử Dụng Lệnh if
    -------------> Sử Dụng Lệnh Switch
    + Cấu Trúc Vòng Lặp
    -------> Lệnh for
    -------> Lệnh while
    -------> Lệnh do...while
    -------> Lệnh break
    -------> Lệnh continue
    -------> Vòng Lặp Lồng Nhau
    -------> So Sánh Sự Khác Nhau Của Các Vòng lặp
    -------> Bài Tập
    + Hàm
    -------> Mục Tiêu
    -------> Các VD Về Hàm
    -------> Tham Số Dạng Tham Biến Và Tham Trị
    -------> Sử Dụng Biến Toàn Cục
    -------> Dùng Dẫn Hướng #define
    -------> Bài Tập
    + Mảng & Chuỗi
    -------> Mục Tiêu
    -------> Khai Báo Mảng
    -------------> Nhập & Xuất Dữ Liệu Mảng
    -------------> Khởi Tạo Mảng
    -------------> Mảng Nhiều Chiều
    -------------> Nhập & Xuất Dữ Liệu Mảng Nhiều Chiều
    -------------> Khởi Tạo Mảng 2 Chiều
    -------------> Dùng Mảng 1 Chiều Làm Tham Số Cho Hàm
    -------------> Dùng Mảng 2 Chiều Làm Tham Số Cho Hàm
    -------> Chuỗi
    -------------> Định Nghĩa
    -------------> Khai Báo Chuỗi
    -------------> Hàm Nhập (gets), Xuất (puts) Chuỗi
    -------------> Khởi Tạo Chuỗi
    -------------> Mảng Chuỗi
    -------> Bài Tập Mảng Và Chuỗi
    + Con Trỏ
    -------> Mục Tiêu
    -------> Khai Báo Biến Con Trỏ
    -------> Truyền Địa Chỉ Sang Hàm
    -------> Con Trỏ Và Mảng
    -------> Con Trỏ Và Chuỗi
    -------> Khởi Tạo Mảng Con Trỏ Đến Chuỗi
    -------> Xử Lí Con Trỏ Trỏ Đến Chuỗi
    -------> Con Trỏ Trỏ Đến Con Trỏ
    -------> Bài Tập
    + Các Kiểu Dữ Liệu Tự Tạo
    -------> Khai Báo Kiểu structure
    -------> Structure
    -------------> Tham Chiếu Các Phần Tử Trong structure
    -------------> Khởi Tạo structure
    -------------> structure lồng nhau
    -------------> Truyền structure sang hàm
    -------> Enum
    -------------> Định Nghĩa Kiểu Enum
    -------------> Cách Khai Báo Và Sử Dụng Enum
    -------> Bài Tập Chung
    + Tập Tin
    -------> Ghi & Đọc Số Nguyên
    -------> Ghi & Đọc Mảng
    -------> Ghi & Đọc structure
    -------> Các Mode Khác Để Mở Tập Tin
    + Đệ Quy
    -------> Nội Dung
    + Biểu Thức Và Phép Toán
    + Một Số Hàm Chuẩn Thường Dùng
    -------> Các Hàm Chuyển Đổi Dữ Liệu
    -------> Các Hàm Xử Lí Chuỗi Và Kí Tự
    -------> Các Hàm Toán Học
    -------> Các Hàm Xử Lí File
     
  2. Raymond

    Raymond Member Tích Cực

    164
    91
    43
    Lý thuyết

    1.2.1 Ngôn ngữ lập trình (Programming Language)
    Phần này chúng ta sẽ tìm hiểu một số khái niệm căn bản về thuật toán, chương trình, ngôn ngữ lập trình. Thuật ngữ "thuật giải" và "thuật toán" dĩ nhiên có sự khác nhau song trong nhiều trường hợp chúng có cùng nghĩa.
    1.2.1.1 Thuật giải (Algorithm)
    Là một dãy các thao tác xác định trên một đối tượng, sao cho sau khi thực hiện một số hữu hạn các bước thì đạt được mục tiêu. Theo R.A.Kowalski thì bản chất của thuật giải:
    Thuật giải = Logic + Điều khiển
    * Logic: Đây là phần khá quan trọng, nó trả lời câu hỏi "Thuật giải làm gì, giải quyết vấn đề gì?", những yếu tố trong bài toán có quan hệ với nhau như thế nào v.v… Ở đây bao gồm những kiến thức chuyên môn mà bạn phải biết để có thể tiến hành giải bài toán.
    Ví dụ 1: Để giải một bài toán tính diện tích hình cầu, mà bạn không còn nhớ công thức tính hình cầu thì bạn không thể viết chương trình cho máy để giải bài toán này được.
    * Điều khiển: Thành phần này trả lời câu hỏi: giải thuật phải làm như thế nào?. Chính là cách thức tiến hành áp dụng thành phần logic để giải quyết vấn đề.
    1.2.1.2 Chương trình (Program)
    Là một tập hợp các mô tả, các phát biểu, nằm trong một hệ thống qui ước về ý nghĩa và thứ tự thực hiện, nhằm điều khiển máy tính làm việc. Theo Niklaus Wirth thì:
    Chương trình = Thuật toán + Cấu trúc dữ liệu
    Các thuật toán và chương trình đều có cấu trúc dựa trên 3 cấu trúc điều khiển cơ bản:
    * Tuần tự (Sequential): Các bước thực hiện tuần tự một cách chính xác từ trên xuống, mỗi bước chỉ thực hiện đúng một lần.
    * Chọn lọc (Selection): Chọn 1 trong 2 hay nhiều thao tác để thực hiện.
    * Lặp lại (Repetition): Một hay nhiều bước được thực hiện lặp lại một số lần.
    Muốn trở thành lập trình viên chuyên nghiệp bạn hãy làm đúng trình tự để có thói quen tốt và thuận lợi sau này trên nhiều mặt của một người làm máy tính. Bạn hãy làm theo các bước sau:
    Tìm, xây dựng thuật giải (trên giấy) → viết chương trình trên máy
    → dịch chương trình → chạy và thử chương trình
    HanoiAptech Computer Education Center Thanghv
    Giáo trình Lập trình C căn bản Trang 8
    1.2.1.3 Ngôn ngữ lập trình (Programming language)
    Ngôn ngữ lập trình là hệ thống các ký hiệu tuân theo các qui ước về ngữ pháp và ngữ nghĩa, dùng để xây dựng thành các chương trình cho máy tính.
    Một chương trình được viết bằng một ngôn ngữ lập trình cụ thể (ví dụ Pascal, C…) gọi là chương trình nguồn, chương trình dịch làm nhiệm vụ dịch chương trình nguồn thành chương trình thực thi được trên máy tính.
    1.2.2 Các bước lập trình
    Bước 1: Phân tích vấn đề và xác định các đặc điểm. (xác định I-P-O)
    Bước 2: Lập ra giải pháp. (đưa ra thuật giải)
    Bước 3: Cài đặt. (viết chương trình)
    Bước 4: Chạy thử chương trình. (dịch chương trình)
    Bước 5: Kiểm chứng và hoàn thiện chương trình. (thử nghiệm bằng nhiều số liệu và đánh giá)
    1.2.3 Kỹ thuật lập trình
    1.2.3.1 I-P-O Cycle (Input-Pprocess-Output Cycle) (Quy trình nhập-xử lý-xuất)
    Quy trình xử lý cơ bản của máy tính gồm I-P-O.

    [​IMG]

    Ví dụ 2: Xác định Input, Process, Output của việc làm 1 ly nước chanh nóng
    Input : ly, đường, chanh, nước nóng, muỗng.
    Process : - cho hỗn hợp đường, chanh, nước nóng vào ly.
    - dùng muỗng khuấy đều.
    Output : ly chanh nóng đã sẵn sàng để dùng.
    Ví dụ 3: Xác định Input, Process, Output của chương trình tính tiền lương công nhân tháng 10/2002 biết rằng lương = lương căn bản * ngày công
    Input : lương căn bản, ngày công
    Process : nhân lương căn bản với ngày công
    Output : lương
    Ví dụ 4: Xác định Input, Process, Output của chương trình giải phương trình bậc nhất ax + b = 0
    Input : hệ số a, b
    Process : chia – b cho a
    Output : nghiệm x
    Ví dụ 5: Xác định Input, Process, Output của chương trình tìm số lớn nhất của 2 số a và b.
    Input : a, b
    Process : Nếu a > b thì Output = a lớn nhất
    Ngược lại Output = b lớn nhất

     
  3. Raymond

    Raymond Member Tích Cực

    164
    91
    43
    Kiểu dữ liệu

    Có 4 kiểu dữ liệu cơ bản trong C là: char, int, float, double.

    [​IMG]

    Ghi chú
    Trong khi lập trình cần phải ghi chú để giải thích các biến, hằng, thao tác xử lý giúp cho chương trình rõ ràng dễ hiểu, dễ nhớ, dễ sửa chữa và để người khác đọc vào dễ hiểu. Trong C có các ghi chú sau: // hoặc /* nội dung ghi chú */

    Ví dụ 3 :

    void main()
    {
    int a, b; //khai bao bien t kieu int
    a = 1; //gan 1 cho a
    b =3; //gan 3 cho b
    /* thuat toan tim so lon nhat la
    neu a lon hon b thi a lon nhat
    nguoc lai b lon nhat */
    if (a > b)
    cout<<"Max : "<<a;
    else
    cout<<"Max : "<<b;
    }

    Khi biên dịch chương trình, C gặp cặp dấu ghi chú sẽ không dịch ra ngôn ngữ máy.
    Tóm lại, đối với ghi chú dạng // dùng để ghi chú một hàng và dạng /* …. */ có thể ghi chú một hàng hoặc nhiều hàng.

    Khai báo biến

    1 Cú pháp
    Kiểu dữ liệu Danh sách tên biến;
    Kiểu dữ liệu: 1 trong các kiểu ở mục 3
    Danh sách tên biến: gồm các tên biến có cùng kiểu dữ liệu, mỗi tên biến cách nhau dấu phẩy (,), cuối cùng là dấu chấm phẩy ";".
    Khi khai báo biến nên đặt tên biến theo quy tắc Hungarian Notation
    Ví dụ 4 :
    int ituoi; //khai báo biến ituoi có kiểu int
    float fTrongluong; //khai báo biến fTrongluong có kiểu long
    char ckitu1, ckitu2; //khai báo biến ckitu1, ckitu2 có kiểu char Hanoi Aptech Computer Education Center
    Giáo trình Lập trình C căn bản Trang 20
    Các biến khai báo trên theo quy tắc Hungarian Notation. Nghĩa là biến ituoi là kiểu int, bạn thêm chữ i (kí tự đầu của kiểu) vào đầu tên biến tuoi để trong quá trình lập trình hoặc sau này xem lại, sửa chữa… bạn dễ dàng nhận ra biến ituoi có kiểu int mà không cần phải di chuyển đến phần khai báo mới biết kiể.u của biến này. Tương tự cho biến fTrongluong, bạn nhìn vào là biết ngay biến này có kiểu float.
    2 Vừa khai báo vừa khởi gán

    Có thể kết hợp việc khai báo với toán tử gán để biến nhận ngay giá trị cùng lúc với khai báo.

    Ví dụ 5 :
    Khai báo trước, gán giá trị sau:

    void main()
    {
    int a, b, c;
    a = 1;
    b = 2;
    c = 5;

    }

    Vừa khai báo vừa gán giá trị:

    void main()
    {
    int a = 1, b = 2, c = 5;

    }

    3 Phạm vi của biến
    Khi lập trình, bạn phải nắm rõ phạm vi của biến. Nếu khai báo và sử dụng không đúng, không rõ ràng sẽ dẫn đến sai sót khó kiểm soát được, vì vậy bạn cần phải xác định đúng vị trí, phạm vi sử dụng biến trước khi sử dụng biến.
    Khai báo biến ngoài (biến toàn cục): Vị trí biến đặt bên ngoài tất cả các hàm, cấu trúc... Các biến này có ảnh hưởng đến toàn bộ chương trình. Chu trình sống của nó là bắt đầu chạy chương trình đến lúc kết thúc chương trình.
    Khai báo biến trong (biến cục bộ): Vị trí biến đặt bên trong hàm, cấu trúc…. Chỉ ảnh hưởng nội bộ bên trong hàm, cấu trúc đó…. Chu trình sống của nó bắt đầu từ lúc hàm, cấu trúc được gọi thực hiện đến lúc thực hiện xong.
     
    nam smilodon thích bài này.
  4. Raymond

    Raymond Member Tích Cực

    164
    91
    43
    NHẬP & XUẤT DỮ LIỆU ( cout & cin)

    Trong phần này chúng ta làm quen một số lệnh đơn giản cho phép NSD nhập dữ liệu vào từ bàn phím hoặc in kết quả ra màn hình. Trong phần sau của giáo trình chúng ta sẽ khảo sát các câu lệnh vào/ra phức tạp hơn

    1. Nhập dữ liệu từ bàn phím Cin

    - Để nhập dữ liệu vào cho các biến có tên biến_1, biến_2, biến_3 chúng ta sử dụng câu lệnh:

    PHP:
    cin >> biến_1 ;
    cin >> biến_2 ;
    cin >> biến_3 ;
    Hoặc :

    PHP:
    cin >> biến_1 >> biến_2 >> biến_3 ;
    - biến_1, biến_2, biến_3 là các biến được sử dụng để lưu trữ các giá trị NSD nhập vào từ bàn phím. Khái niệm biến sẽ được mô tả cụ thể hơn trong chương 2, ở đây biến_1, biến_2, biến_3 được hiểu là các tên gọi để chỉ 3 giá trị khác nhau. Hiển nhiên có thể nhập dữ liệu nhiều hơn 3 biến bằng cách tiếp tục viết tên biến vào bên phải sau dấu >> của câu lệnh.

    - Khi chạy chương trình nếu gặp các câu lệnh trên chương trình sẽ "tạm dừng" để chờ NSD nhập dữ liệu vào cho các biến. Sau khi NSD nhập xong dữ liệu, chương trình sẽ tiếp tục chạy từ câu lệnh tiếp theo sau của các câu lệnh trên.

    - Cách thức nhập dữ liệu của NSD phụ thuộc vào loại giá trị của biến cần nhập mà ta gọi là kiểu, ví dụ nhập một số có cách thức khác với nhập một chuỗi kí tự. Giả sử cần nhập độ dài hai cạnh của một hình chữ nhật, trong đó cạnh dài được qui ước bằng tên biến cd và chiều rộng được qui ước bởi tên biến cr. Câu lệnh nhập sẽ như sau:

    PHP:
    cin >> cd >> cr ;
    - Khi máy dừng chờ nhập dữ liệu NSD sẽ gõ giá trị cụ thể của các chiều dài, rộng theo đúng thứ tự trong câu lệnh. Các giá trị này cần cách nhau bởi ít nhất một dấu trắng (ta qui ước gọi dấu trắng là một trong 3 loại dấu được nhập bởi các phím sau: phím spacebar (dấu cách), phím tab (dấu tab) hoặc phím Enter (dấu xuống dòng)). Các giá trị NSD nhập vào cũng được hiển thị trên màn hình để NSD dễ theo dõi.

    2. Xuất dữ liệu ra màn hình Cout

    - Để in giá trị của các biểu thức ra màn hình ta dùng câu lệnh sau:
    PHP:
    cout << bt_1 ;
    cout << bt_2 ;
    cout << bt_3 ;
    hoặc:

    PHP:
    cout << bt_1 << bt_2 << bt_3 ;
    - Cũng giống câu lệnh nhập ở đây chúng ta cũng có thể mở rộng lệnh in với nhiều hơn 3 biểu thức. Câu lệnh trên cho phép in giá trị của các biểu thức bt_1, bt_2, bt_3. Các giá trị này có thể là tên của biến hoặc các kết hợp tính toán trên biến.

    - Ví dụ để in câu "Chiều dài là " và số 23 và tiếp theo là chữ "mét", ta có thể sử dụng 3 lệnh sau đây:
    [PHPcout << "Chiều dài là" ;
    cout << 23 ;
    cout << "mét";[/PHP]
    hoặc có thể chỉ bằng 1 lệnh:
    PHP:
    cout << "Chiều dài là 23 mét" ;
    - Trường hợp chưa biết giá trị cụ thể của chiều dài, chỉ biết hiện tại giá trị này đã được lưu trong biến cd (ví dụ đã được nhập vào là 23 từ bàn phím bởi câu lệnh cin >> cd trước đó) và ta cần biết giá trị này là bao nhiêu thì có thể sử dụng câu lệnh in ra màn hình.
    PHP:
    cout << "Chiều dài là" << cd << "mét" ;
    - Khi đó trên màn hình sẽ hiện ra dòng chữ: "Chiều dài là 23 mét". Như vậy trong trường hợp này ta phải dùng đến ba lần dấu phép toán << chứ không phải một như câu lệnh trên. Ngoài ra phụ thuộc vào giá trị hiện được lưu trong biến cd, chương trình sẽ in ra số chiều dài thích hợp chứ không chỉ in cố định thành "chiều dài là 23 mét". Ví dụ nếu cd được nhập là 15 thì lệnh trên sẽ in câu "chiều dài là 15 mét".

    - Một giá trị cần in không chỉ là một biến như cd, cr, ... mà còn có thể là một biểu thức, điều này cho phép ta dễ dàng yêu cầu máy in ra diện tích và chu vi của hình chữ nhật khi đã biết cd và cr bằng các câu lệnh sau:
    PHP:
    cout << "Diện tích = " << cd cr ;
    cout << "Chu vi = " << * (cd cr) ;
    hoặc gộp tất cả thành 1 câu lệnh:
    PHP:
    cout << Diện tích " << cd * cr << ‘\n’ << " Chu vi " << 2 * (cd + cr) ;
    - Ở đây có một kí tự đặc biệt: đó là kí tự '\n' kí hiệu cho kí tự xuống dòng, khi gặp kí tự này chương trình sẽ in các phần tiếp theo ở đầu dòng kế tiếp. Do đó kết quả của câu lệnh trên là 2 dòng sau đây trên màn hình:
    PHP:
    Diện tích 253
    Chu vi 
    68
    - Ở đây 253 và 68 lần lượt là các giá trị mà máy tính được từ các biểu thức cd * cr, và 2 * (cd + cr) trong câu lệnh in ở trên.

    - Chú ý: để sử dụng các câu lệnh nhập và in trong phần này, đầu chương trình phải có dòng khai báo #include <iostream.h>.

    - Thông thường ta hay sử dụng lệnh in để in câu thông báo nhắc NSD nhập dữ liệu trước khi có câu lệnh nhập. Khi đó trên màn hình sẽ hiện dòng thông báo này rồi mới tạm dừng chờ dữ liệu nhập vào từ bàn phím. Nhờ vào thông báo này NSD sẽ biết phải nhập dữ liệu, nhập nội dung gì và như thế nào ... ví dụ:

    PHP:
    cout << "Hãy nhập chiều dài: "cin >> cd;
    cout << "Và nhập chiều rộng: "cin >> cr;
    - khi đó máy sẽ in dòng thông báo "Hãy nhập chiều dài: " và chờ sau khi NSD nhập xong 23 ↵, máy sẽ thực hiện câu lệnh tiếp theo tức in dòng thông báo "Và nhập chiều rộng: " và chờ đến khi NSD nhập xong 11 ↵ chương trình sẽ tiếp tục thực hiện các câu lệnh tiếp theo.

    - Ví dụ 2 : Từ các thảo luận trên ta có thể viết một cách đầy đủ chương trình tính diện tích và chu vi của một hình chữ nhật. Để chương trình có thể tính với các bộ giá trị khác nhau của chiều dài và rộng ta cần lưu giá trị này vào trong các biến (ví dụ cd, cr).

    PHP:
    #include <iostream.h> // khai báo tệp nguyên mẫu để dùng được cin, cout
    void main() // đây là hàm chính của chương trình
    {
    float cdcr // khai báo các biến có tên cd, cr để chứa độ dài các cạnh
    cout << "Hãy nhập chiều dài: " cin >> cd // nhập dữ liệu
    cout << "Hãy nhập chiều rộng: " cin >> cr ;
    cout << "Diện tích = " << cd cr << '\n' // in kết quả
    cout << "Chu vi = " << * (cd cr) << '\n';
    return ;
    }
    - Chương trình này có thể gõ vào máy và chạy. Khi chạy đến câu lệnh nhập, chương trình dừng để chờ nhận chiều dài và chiều rộng, NSD nhập các giá trị cụ thể, chương trình sẽ tiếp tục thực hiện và in ra kết quả. Thông qua câu lệnh nhập dữ liệu và 2 biến cd, cr NSD có thể yêu cầu chương trình cho kết quả của một hình chữ nhật bất kỳ chứ không chỉ trong trường hợp hình có chiều dài 23 và chiều rộng 11 như trong ví dụ cụ thể trên.
     
  5. Raymond

    Raymond Member Tích Cực

    164
    91
    43
    Mục Tiêu

    - Sau khi hoàn tất bài này học viên sẽ hiểu và vận dụng các kiến thức kĩ năng cơ bản sau:
    - Ý nghĩa lệnh, khối lệnh.
    - Cú pháp, ý nghĩa, cách sử dụng lệnh if, lệnh switch.
    - Một số bài toán sử dụng lệnh if, switch thông qua các ví dụ.
    - So sánh, đánh giá một số bài toán sử dụng lệnh if hoặc switch.
    - Cách sử dụng các cấu trúc lồng nhau.

    Lệnh và khối lệnh
    Lệnh :

    - Là một tác vụ, biểu thức, hàm, cấu trúc điều khiển…
    Ví dụ 1:
    PHP:
    2;
    printf("Day la mot lenh\n");
    Khối lệnh

    - Là một dãy các câu lệnh được bọc bởi cặp dấu { }, các lệnh trong khối lệnh phải viết thụt vô 1 tab so với cặp dấu { }
    Ví dụ 2:
    PHP:
    //dau khoi
    5;
    6viết thụt vô 1 tab so với cặp { }
    printf("Tong %d + %d = %d"aba+b);
    //cuoi khoi
     
  6. Raymond

    Raymond Member Tích Cực

    164
    91
    43
    Lệnh if

    - Câu lệnh if cho phép lựa chọn một trong hai nhánh tùy thuộc vào giá trị của biểu thức luận lý là đúng (true) hay sai (false) hoặc khác không hay bằng không.

    Dạng 1 (if thiếu)
    - Quyết định sẽ thực hiện hay không một khối lệnh.

    - Câu lệnh if cho phép lựa chọn một trong hai nhánh tùy thuộc vào giá trị của biểu thức luận lý là đúng (true) hay sai (false) hoặc khác không hay bằng không.

    • Cú pháp lệnh
    [TABLE="width: 500"]
    [TR]
    [TD]if (biểu thức luận lý)
    khối lệnh;
    [/TD]
    [TD] từ khóa if phải viết bằng chữ thường
    kết quả của biểu thức luận lý phải là đúng (≠ 0) hoặc sai (= 0)
    [/TD]
    [/TR]
    [/TABLE]


    • Lưu đồ
    [TABLE="width: 500"]
    [TR]
    [TD][​IMG][/TD]
    [TD] - Nếu biểu thức luận lý đúng thì
    thực hiện khối lệnh và thoát khỏi if,
    - ngược lại
    không làm gì cả và thoát khỏi if.
    [/TD]
    [/TR]
    [/TABLE]

    Diễn giải:
    + Khối lệnh là một lệnh ta viết lệnh if như sau:
    PHP:
    if (biểu thức luận lý)
    lệnh;
    + Khối lệnh bao gồm nhiều lệnh: lệnh 1, lệnh 2..., ta viết lệnh if như sau:
    PHP:
    if (biểu thức luận lý)
    {
    lệnh 1;
    lệnh 2;
    ...
    }
    Ví dụ 3: Viết chương trình nhập vào 2 số nguyên a, b. Tìm và in ra số lớn nhất.
    a. Phác họa lời giải
    - Trước tiên ta cho giá trị a là giá trị lớn nhất bằng cách gán a cho max (max là biến được khai báo cùng kiểu dữ liệu với a, b). Sau đó so sánh b với a, nếu b lớn hơn a ta gán b cho max và cuối cùng ta được kết quả max là giá trị lớn nhất.
    b. Mô tả quy trình xử lý (giải thuật)

    [TABLE="width: 500"]
    [TR]
    [/TR]
    [TR]
    [/TR]
    [/TABLE]

    [TABLE="class: grid, width: 500"]
    [TR]
    [TD="align: center"]Ngôn ngữ tự nhiên
    [/TD]
    [TD="align: center"]Ngôn ngữ C
    [/TD]
    [/TR]
    [TR]
    [TD]- Khai báo 3 biến a, b, max kiểu số nguyên
    - Nhập vào giá trị a
    - Nhập vào giá trị b
    - Gán a cho max
    - Nếu b > a thì
    gán b cho max
    - In ra kết quả max
    [/TD]
    [TD]
    PHP:
    int abmax;
    cout<<"Nhap vao so a : ";
    cin>>a;
    cout<<"Nhap vao so b : ";
    cin>>b;
    max a;
    if (
    a)
    max b;
    cout<<"So lon nhat = "<<max;
    getche();
    [/TD]
    [/TR]
    [/TABLE]


    c. Mô tả bằng lưu đồ
    [​IMG]
    d. Viết chương trình

    PHP:
    /* Chuong trinh tim so lon nhat tu 2 so nguyen a, b */
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    void main(void)
    {
    int abmax;
    cout<<"Nhap vao so a : ";
    cin>>a;
    cout<<"Nhap vao so b : ";
    cin>>b;
    max a;
    if (
    b>a)
    max b;
    cout<<"So lon nhat = "<<max;
    getche();
    }

    Kết quả in ra màn hình


    [TABLE="class: grid, width: 500"]
    [TR]
    [TD]Nhap vao so a : 10
    Nhap vao so b : 8
    So lon nhat = 10.
    [/TD]
    [TD]Cho chạy lại chương trình và thử lại với:
    a = 7, b = 9
    a = 5, b = 5
    Quan sát và nhận xét kết quả
    [/TD]
    [/TR]
    [/TABLE]

    Ví dụ 4:
    Viết chương trình nhập vào 2 số nguyên a, b. Nếu a lớn hơn b thì hoán đổi giá trị a và b, ngược lại không hoán đổi. In ra giá trị a, b.

    a. Phác họa lời giải
    - Nếu giá trị a lớn hơn giá trị b, bạn phải hoán chuyển 2 giá trị này cho nhau (nghĩa là a sẽ mang giá trị b và b mang giá trị a) bằng cách đem giá trị a gởi (gán) cho biến tam (biến tam được khai báo theo kiểu dữ liệu của a, b), kế đến bạn gán giá trị b cho a và cuối cùng bạn gán giá trị tam cho b, rồi in ra a, b.

    b. Mô tả quy trình thực hiện (giải thuật)


    [TABLE="width: 500"]
    [TR]
    [/TR]
    [TR]
    [/TR]
    [/TABLE]

    [TABLE="class: grid, width: 500"]
    [TR]
    [TD="align: center"]Ngôn ngữ tự nhiên
    [/TD]
    [TD="align: center"]Ngôn ngữ C
    [/TD]
    [/TR]
    [TR]
    [TD]- Khai báo 3 biến a, b, tam kiểu số nguyên
    - Nhập vào giá trị a
    - Nhập vào giá trị b
    - Nếu a > b thì
    tam = a;
    a = b;
    b = tam;
    - In ra a, b
    [/TD]
    [TD]
    PHP:
    int a,b,tam;
    cout<<"Nhap vap so a : ";
    cin>>a;
    cout<<"Nhap vap so b : ";
    cin>>b;
    if(
    a>b)
       {
         
    tam=a;
         
    a=b;
         
    b=tam;
       }
    cout<<"Ket Qua Hoan Chuyen : "<<a<<" "<<b;
    [/TD]
    [/TR]
    [/TABLE]


    c. Mô tả bằng lưu đồ
    [​IMG]
    d. Viết chương trình

    PHP:
    /* Chuong trinh hoan vi 2 so a, b neu a > b */
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    void main(void)
    {
    int abtam;
    cout<<"Nhap vao so a : ";
    cin>>a;
    cout<<"Nhap vao so b : ";
    cin>>b;
    if (
    a>b)
    {
    tam a//hoan vi a va b
    b;
    tam;
    }
    cout<<"Ket qua hoan chuyen : "<<a<<" "<<b;
    getche();
    }
    Kết quả in ra màn hình

    [TABLE="class: grid, width: 500"]
    [TR]
    [TD]Nhap vao so a : 10
    Nhap vao so b : 8
    8, 10
    [/TD]
    [TD]Cho chạy lại chương trình và thử lại với:
    a = 1, b = 8
    a = 2, b = 2
    Quan sát và nhận kết quả
    [/TD]
    [/TR]
    [/TABLE]


    Dạng 2 (if đủ)
    - Quyết định sẽ thực hiện 1 trong 2 khối lệnh cho trước.

    • Cú pháp lệnh
    PHP:
    if (biểu thức luận lý)
          
    khối lệnh 1;
    else
          
    khối lệnh 2;

    • Lưu đồ
    [​IMG]

    - nếu biểu thức luận lý đúng thì thực hiện khối lệnh 1 và thoát khỏi if , ngược lại thực hiện khối lệnh 2 và thoát khỏi if.


    - Nếu khối lệnh 1, khối lệnh 2 bao gồm từ 2 lệnh trở lên thì phải đặt trong dấu { }

    Ví dụ 5:
    Viết chương trình nhập vào 2 số nguyên a, b. In ra thông báo "a bằng b" nếu a = b, ngược lại in ra thông báo "a khác b".

    a. Phác họa lời giải
    -
    So sánh a với b, nếu a bằng b thì in ra câu thông báo "a bằng b", ngược lại in ra thông báo "a khác b".

    b. Mô tả quy trình xử lý (giải thuật)

    [TABLE="class: grid, width: 500"]
    [TR]
    [TD="align: center"]Ngôn ngữ tự nhiên
    [/TD]
    [TD="align: center"]Ngôn Ngữ C
    [/TD]
    [/TR]
    [TR]
    [TD]- Khai báo 2 biến a, b kiểu số nguyên
    - Nhập vào giá trị a
    - Nhập vào giá trị b
    - Nếu a = b thì
    in ra thông báo "a bằng b"
    Ngược lại (còn không thì)
    in ra thông báo "a khác b"
    [/TD]
    [TD]
    PHP:
    int ab;
    cout<<"Nhap vao so a : ";
       
    cin>>a;
    cout<<"Nhap vao so b : ";
        
    cin>>b;
    if (
    == b)
    cout<<"a bang b\n";
    else
    cout<<"a khac b\n";
    [/TD]
    [/TR]
    [/TABLE]



    c. Mô tả bằng lưu đồ


    [​IMG]

    d. Viết chương trình

    PHP:
    /* Chuong trinh in ra thong bao "a bang b" neu a = b, nguoc lại in ra "a khac b" */
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int ab;
    cout<<"Nhap vao so a : ";
    cin>>a;
    cout<<"Nhap vao so b : ";
    cin>>b;
    if (
    == b)
    cout<<"a bang b\n";
    else
    cout<<"a khac b\n";
    getch();
    }
    Kết quả in ra màn hình

    [TABLE="class: grid, width: 500"]
    [TR]
    [TD]Nhap vao so a : 10
    Nhap vao so b : 8
    a khac b.
    [/TD]
    [TD]Cho chạy lại chương trình và thử lại với:
    a = 6, b = 6
    a = 1, b = 5
    Quan sát và nhận xét kết quả
    [/TD]
    [/TR]
    [/TABLE]

     
  7. giacmnrcon

    giacmnrcon Member Mới

    1
    0
    1

Chia sẻ trang này