Bài 2 : Những Vấn Đề Cơ Bản Trong C++

804

Ở bài viết mình đã giới thiệu với các bạn thế nào là lập trình hướng đối tượng c++  và ở bài viết này mình cùng các bạn sẽ đi làm rõ vấn đề cơ bản trong lập trình c++ là gì? Nào chúng ta cùng bắt đầu nhé

Vấn đề cơ bản trong c++

1. Cấu trúc chương trình

Xét ví dụ sau:

  • #include: yêu cầu chương trình dịch chèn thêm file vào mã nguồn.
  • using namespace
  • cout nằm trong namespace std;
  • Hàm main()
  • Câu lệnh: kết thúc bởi dấu “;”
  • Câu chú thích: Câu chú thích bắt đầu bằng dấu // hoặc nằm trong /* */.

2. Biến

  • Phải khai báo biến trước khi sử dụng
  • Có thể khai báo biến ở mọi nới trong chương trình
  • Tên biến
  • Phân biệt chữ hoa, chữ thường
  • Sử dụng các ký tự từ a-z, 0-9 và dấu “_”
  • Ví dụ:
    • nint var1;
    • nint var2=10;

Kiểu giữ liệu đơn giản

  • Kiểu nguyên: int, long, short
  • Kiểu ký tự: char – lưu mã ASCII của ký tự
  • Ký tự nằm trong dấu ‘’. Ví dụ: ‘a’
  • Ký tự đặc biệt: \n, \tab, \\, \’, \”, …
  • Kiểu không dấu: unsigned char, unsigned int, unsigned short, unsigned long
  • Kiểu dấu phẩy động: float, double, long double
  • Kiểu bool: có giá trị True/False

table-c

Kiểu String

  • string không phải là kiểu cơ bản trong C++
  • string được định nghĩa trong lớp chuẩn string

Biến hằng (Constant Variables)

  • Giá trị của hằng không thay đổi.
  • Có 2 cách khai báo hằng:
    • const float PI=3.14;
    • #define PI 3.14
      • Định nghĩa ở đầu chương trình
      • Không xác định kiểu của PI

3. Toán Tử

Toán tử toán học

  • +, -, *, /, %

  • ++, —

  • +=, -=, *=, /=

Toán tử quan hệ

  • So sánh 2 giá trị.
  • Kết quả trả về là true hoặc false
  • >, <, ==, !=, >=, <=
  • Ví dụ:

int x=44;
int y=12;
(x == y)   // false
(x >= y)   // true
(x != y)    // true

Toán tử logic

  • logical and : &&
    • (x >= 5) && ( x <= 15)   // true  nếu x nằm trong [5,15]
  •  logical or : ||
    • (x == 5) || ( x == 10)   // true nếu x=5 hoặc x=10
  •  logical negation : !
    • ! (x == 5)                      // true nếu x khác 5
    • Tương tự x != 5
  • Toán tử điều kiện (conditional operator) : ? … :
  • <condition> ? <true expression> : < false expression>
    • Ví dụ:

      min = (alpha<beta) ? alpha : beta;

    • Tương tự

       

       

4. Thao tác vào ra chuẩn

  • Sử dụng đối tượng stream để thực hiện các thao tác input/output
  • Được khai báo trong header file iostream

Sử dụng cout

  • cout là một đối tượng được định nghĩa trước trong C++, tương ứng với luồng ra chuẩn (standard output stream).
  • Toán tử << là toán tử chèn, định hướng nội dung cần hiển thị.
  • Ví dụ:

  • Để định dạng nội dung hiển thị, sử dụng setw (nằm trong iomanip)
    • cout<< setw(12) << str << setw(5) << i;
    • Kết quả: Hello world     8

Sử dụng cin

  • cin là toán tử được định nghĩa trước trong C++, tương ứng với luồng vào chuẩn (standard input stream).
  • Toán tử >> đưa nội dung từ luồng vào chuẩn vào biến.
  • Ví dụ :

Cin và String

  • cin>>mystring
  • cin dừng khi nhập dấu cách
  • Để lưu cả dòng khi nhập, sử dụng getline

Header File và Library File

  • Một số nhiệm vụ được thực hiện bởi Library Function.
  • Header File chứa khai báo các hàm mà ta cần sử dụng trong chương trình.
  • Ví dụ:
  • #include <math.h>
  • #include ”myprog.h”
  • <>: yêu cầu chương trình dịch tìm từ thư mục chuẩn.
  • ” ” : yêu cầu chương trình dịch tìm từ thư mục hiện tại.
  • Nếu không include Header File thích hợp thì chương trình dịch sẽ báo lỗi.

header

5. Các câu lệnh

  • Vòng lặp
  • Rẽ nhánh
  • Một số lệnh điều khiển khác

Vòng lặp for

vong-lap-for-c2

Vòng lặp while

  • Vòng lặp while được sử dụng khi không biết trước số lần lặp.
  • Lặp cho đến khi biểu thức kiểm tra vẫn có giá trị True.
  • Ví dụ:

 

 while ( c != ’y’ )   ⇐ test expression

{

}

vong-lap-while-c2

Vòng lặp do

  • Trong vòng lặp do, biểu thức kiểm tra được đánh giá ở cuối vòng lặp.
  • Thân vòng lặp được thực hiện ít nhất một lần.
  • Ví dụ:

vong-lap-do-c2

Lệnh if-else

  • Phụ thuộc vào điều kiện kiểm tra là true hay false để quyết định nhánh thực hiện
  • Ví dụ:

if-else-c2

Lệnh switch

  • Lệnh switch được sử dụng khi có nhiều nhánh rẽ  phụ thuộc vào giá trị của cùng một biến.

switch-c2

Một số lệnh điều khiển khác

  • break: thoát khỏi vòng lặp hoặc switch
  • continue: trở lại đầu vòng lặp.
  • goto: nhảy tới một nhãn xác định

6. Kiểu dữ liệu cấu trúc

  • Structure là một tập hợp các biến đơn giản, tương tự như record trong Pascal.
  • Khai báo Structure:

 

  • Định nghĩa biến kiểu Structure:

part part1;

  • Khởi tạo các thành phần của Structure: part part1={6244, 373, 217.55};
  • Truy cập vào các thành phần của Structure

part1.modelnumber = 6244;

part.modelnumber = 6244; //sai

  • Hai biến cùng kiểu structure có thể gán cho nhau

part part2;

part2=part1;

Structure lồng

  • Thành phần của Structure có thể là một structure khác.

  struct Distance               struct Room

  {                                        {

      int feet;                                 Distance length;

      float inches;                         Distance width;

  };                                        };

  • Truy cập vào các thành phần của Structure lồng

  Room dining;

 dining.length.feet=13;

  • Khởi tạo Structure lồng:

  Room dining = {{13, 6.5}, {10, 0.0}};

7. Kiểu liệt kê (Enumeration)

  • Định nghĩa enum:

  • Khai báo biến kiểu enum

  • Giá trị của các biến kiểu enum là những giá trị mà enum đã định nghĩa trước.
  • Các giá trị của enum được lưu dưới dạng số nguyên, bắt đầu từ 0.
    • Ta có thể thay đổi giá trị nguyên của giá trị đầu trong enum

8. Hàm

  • Khai báo hàm xác định tên hàm, kiểu trả về, và các tham số cần thiết trong lời gọi hàm.
    • Khai báo hàm thường nằm trong Header File (.h)
  • Định nghĩa hàm chứa thân hàm.
    • Định nghĩa hàm thường nằm trong source file (.cpp)
  • Ví dụ

Truyền trị (Passing by Value)

  • Khi truyền trị, hàm sẽ tạo ra một biến cục bộ để lưu giá trị của biến được truyền.
  • Giá trị của biến được truyền không thay đổi.
  • Ví dụ:

Truyền tham chiếu (Passing by Reference)

  • Tham chiếu cung cấp bí danh (alias) cho biến.
  • Khi truyền tham số theo kiểu tham chiếu thì biến cục bộ là bí danh của biến được truyền.
  • Địa chỉ của biến được truyền cho hàm.
  • Hàm có thể truy cập trực tiếp trên biến được truyền.
  • Ví dụ:

Tham số hằng

  • Tham chiếu hằng không cho phép hàm thay đổi giá trị của biến được truyền.
  • Ví dụ:

Hàm có tham số mặc định

Hàm không có kiểu trả về

  • Sử dụng kiểu void
  • void cũng được sử dụng để khai báo hàm không có tham số.

Inline Fuction

inline-function

Chồng hàm (Overloaded Function)

  • Hàm chồng thực hiện các nhiệm vụ khác nhau phụ thuộc vào các tham số truyền.
  • Ví dụ:

Phạm vi của biến

  • Một khối lệnh (block) nằm trong dấu { … }
  • Phạm vi của biến là khối lệnh mà biến được khai báo
  • Biến được khai báo ở ngoài hàm là biến toàn cục (global variable), ở trong hàm là biến cục bộ (local variable).

Trên đây là những kiến thức mình tổng hợp về các vấn đề cơ bản trong lập trình hướng đối tượng c++ , nó hơi dài nhưng hi vọng các bạn có thể từ từ thấu hiểu được hết. Chúc các bạn thành công

Nguồn : lập trình c++

 

BÌNH LUẬN

Please enter your comment!
Please enter your name here