Cú pháp cơ bản của C ++

Khi chúng ta xem xét một chương trình C ++, nó có thể được định nghĩa như một tập hợp các đối tượng giao tiếp thông qua việc gọi các phương thức của nhau. Bây giờ chúng ta hãy xem xét những gì một lớp, đối tượng, phương thức và các biến tức thời có nghĩa là gì.

  • Đối tượng – Đối tượng có các trạng thái và hành vi. Ví dụ: Chó có trạng thái – màu sắc, tên, giống cũng như hành vi – vẫy, sủa, ăn uống. Một đối tượng là một thể hiện của một lớp.
  • Lớp – Một lớp có thể được định nghĩa là một bản mẫu / kế hoạch chi tiết mô tả các hành vi / trạng thái mà đối tượng của kiểu hỗ trợ của nó.
  • Phương pháp – Một phương pháp cơ bản là một hành vi. Một lớp có thể chứa nhiều phương thức. Đó là trong các phương thức mà các logic được viết, dữ liệu được thao tác và tất cả các hành động được thực thi.
  • Instance Variables – Mỗi đối tượng có tập các biến cá thể duy nhất của nó. Trạng thái của đối tượng được tạo bởi các giá trị được gán cho các biến cá thể này.

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

Chúng ta hãy nhìn vào một mã đơn giản có thể in chữ Hello World .

#include 
using namespace std;

// main() is where program execution begins.
int main() {
   cout << "Hello World"; // prints Hello World
   return 0;
}
Chúng ta hãy xem xét các phần khác nhau của chương trình trên –

  • Ngôn ngữ C ++ định nghĩa một số tiêu đề, chứa các thông tin cần thiết hoặc hữu ích cho chương trình của bạn. Đối với chương trình này, tiêu đề <iostream> là cần thiết.
  • Dòng sử dụng không gian tên std; yêu cầu trình biên dịch sử dụng không gian tên std. Không gian tên là một bổ sung tương đối gần đây cho C ++.
  • Dòng tiếp theo ‘ // main () là nơi bắt đầu thực hiện chương trình. ‘là một chú thích một dòng có sẵn trong C ++. Các chú thích một dòng bắt đầu bằng // và dừng ở cuối dòng.
  • Dòng int main () là hàm chính nơi bắt đầu thực hiện chương trình.
  • Dòng lệnh tiếp theo << “Đây là chương trình C ++ đầu tiên của tôi.”; gây ra thông báo “Đây là chương trình C ++ đầu tiên của tôi” được hiển thị trên màn hình.
  • Dòng tiếp theo trả về 0; chấm dứt hàm main () và làm cho nó trả về giá trị 0 cho quá trình gọi.

Biên dịch và thực thi chương trình C ++

Hãy xem cách lưu tệp, biên dịch và chạy chương trình. Vui lòng làm theo các bước dưới đây –

  • Mở trình soạn thảo văn bản và thêm mã như trên.
  • Lưu tệp dưới dạng: hello.cpp
  • Mở một dấu nhắc lệnh và đi đến thư mục mà bạn đã lưu tệp.
  • Nhập ‘g ++ hello.cpp’ và nhấn enter để biên dịch mã của bạn. Nếu không có lỗi trong mã của bạn, dấu nhắc lệnh sẽ đưa bạn đến dòng tiếp theo và sẽ tạo ra tệp thực thi a.out.
  • Bây giờ, gõ ‘a.out’ để chạy chương trình của bạn.
  • Bạn sẽ có thể nhìn thấy ‘Hello World’ được in trên cửa sổ.
$ g++ hello.cpp
$ ./a.out
Hello World
Đảm bảo rằng g ++ nằm trong đường dẫn của bạn và bạn đang chạy nó trong thư mục chứa tệp hello.cpp.

Dấu chấm phẩy và khối trong C ++

Trong C ++, dấu chấm phẩy là một dấu kết thúc câu lệnh. Tức là, mỗi câu lệnh riêng lẻ phải được kết thúc bằng dấu chấm phẩy. Nó cho biết kết thúc của một thực thể logic.

Ví dụ, sau đây là ba câu lệnh khác nhau –

x = y;
y = y + 1;
add(x, y);
Khối là một tập hợp các câu lệnh được kết nối hợp lý được bao quanh bằng cách mở và đóng niềng răng. Ví dụ –
{
   cout &lt;&lt; "Hello World"; // prints Hello World
   return 0;
}
C ++ không nhận ra sự kết thúc của dòng như một terminator. Vì lý do này, nó không quan trọng nơi bạn đặt một tuyên bố trong một dòng. Ví dụ –
x = y;
y = y + 1;
add(x, y);
giống như
x = y; y = y + 1; add(x, y);

Định danh C ++

Mã định danh C ++ là tên được sử dụng để xác định biến, hàm, lớp, mô-đun hoặc bất kỳ mục nào do người dùng xác định khác. Mã định danh bắt đầu bằng chữ cái A đến Z hoặc từ a đến z hoặc dấu gạch dưới (_) theo sau là 0 hoặc nhiều chữ cái, dấu gạch dưới và chữ số (0 đến 9).

C ++ không cho phép các ký tự dấu câu như @, $ và% trong số nhận dạng. C ++ là một ngôn ngữ lập trình phân biệt chữ hoa chữ thường. Do đó, Nhân lựcvà nhân lực là hai định danh khác nhau trong C ++.

Dưới đây là một số ví dụ về số nhận dạng có thể chấp nhận –

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

Từ khóa C ++

Danh sách sau đây hiển thị các từ dành riêng trong C ++. Các từ dành riêng này có thể không được sử dụng làm hằng số hoặc biến hoặc bất kỳ tên định danh nào khác.

asm else new this
auto enum operator throw
bool explicit private true
break export protected try
case extern public typedef
catch false register typeid
char float reinterpret_cast typename
class for return union
const friend short unsigned
const_cast goto signed using
continue if sizeof virtual
default inline static void
delete int static_cast volatile
do long struct wchar_t
double mutable switch while
dynamic_cast namespace template


Một vài ký tự có một biểu diễn thay thế, được gọi là một chuỗi dấu vết. Một dấu vết là một chuỗi ba ký tự đại diện cho một ký tự đơn và chuỗi luôn bắt đầu bằng hai dấu chấm hỏi.Trigraphs

Trigraphs được mở rộng bất cứ nơi nào chúng xuất hiện, bao gồm trong các chuỗi ký tự và các ký tự chữ, trong các chú thích và các chỉ thị tiền xử lý.

Sau đây là các chuỗi dấu vết được sử dụng thường xuyên nhất –

Trigraph Thay thế
?? = #
?? / \
?? ‘ ^
?? ( [
??) ]
??! |
?? < {
??> }
?? – ~

Tất cả các trình biên dịch không hỗ trợ các dấu vết và chúng không được khuyên dùng vì bản chất khó hiểu của chúng.

Khoảng trống trong C ++

Một dòng chỉ chứa khoảng trắng, có thể với một chú thích, được gọi là một dòng trống, và trình biên dịch C ++ hoàn toàn bỏ qua nó.

Khoảng trống là thuật ngữ được sử dụng trong C ++ để mô tả khoảng trống, tab, ký tự dòng mới và nhận xét. Khoảng trắng phân tách một phần của câu lệnh từ một câu lệnh khác và cho phép trình biên dịch xác định vị trí của một phần tử trong câu lệnh, chẳng hạn như int, kết thúc và phần tử tiếp theo bắt đầu.

Tuyên bố 1

int age;
Trong câu lệnh trên, phải có ít nhất một ký tự khoảng trống (thường là một dấu cách) giữa int và age để trình biên dịch có thể phân biệt chúng.

Tuyên bố 2

fruit = apples + oranges;   // Get the total fruit
Trong câu lệnh trên 2, không có ký tự khoảng trắng nào cần thiết giữa trái cây và = hoặc giữa = và táo, mặc dù bạn được tự do đưa vào một số nếu bạn muốn cho mục đích có thể đọc được.

Hưỡng dẫn sử dụng IPython Notebook

Ipython Notebook là công cụ soạn thảo chuyên nghiệp bởi vì nó hỗ trợ nhiều tiện ích như LaTex, biểu đồ… đặc biệt nó cho phép soạn thảo code Python và chạy trực tiếp.

Cách đọc file .ipynb

Bước 1: Tải về và cài đặt Anaconda

Bước 2: Chạy Anaconda Command Prompt

Bước 3: Chuyển về thư mục chứa file Ipython Notebook (*.ipynb)

Ví dụ: cd e:/myipynb/

Bước 4: Gõ jupyter-notebook

Chương trình sẽ đưa cho bạn một đường dẫn localhost để mở xem file .ipynb

Hướng dẫn sử dụng cơ bản

Mỗi tập tin IPython Notebook được cấu tạo từ các cell. Ở mỗi cell bạn có thể viết và thực thi câu lệnh. Như đã biết IPython Notebook mạnh mẽ ở khả năng viết code và soạn thảo văn bản do đó có 2 loại cell tương ứng với tên gọi là Code Cell  Markdown Cell.

yeulaptrinh.pư-python-notebook-cell

Markdown Cell và Code Cell

Khi tạo một tập tin mới, một cell được tạo sẵn (cell có dòng In[]: phía trước) đó là Code cell, để có thể chuyển sang Markdown cell, bạn chỉ cần nhấn Esc mất con trỏ nhấp nháy sau đó nhấn phím M. Để chuyển ngược lại sang Code Cell, bạn hãy nhấn phím Y. Đó là 2 trong số rất nhiều thao tác thường xuyên sử dụng, bạn hãy nhấn phím H để xem tất cả các phím tắt.

 

 

Pandas trong Python

Pandas là một gói công cụ viết bằng Python, được sử dụng nhiều trong xử lý và phân tích dữ liệu. Pandas cũng được kèm theo khi cài đặt Anaconda.

Trong phần này, ta sẽ thực hành việc nhập dữ liệu thực tế vào DataFrame của Pandas, sau đó sử dụng các kỹ thuật khác để trích xuất những phần thông tin ta cần từ trong tập dữ liệu.

Chuyển dữ liệu từ file CSV sang DataFrame trong pandas

DataFrame là một cấu trúc dữ liệu quan trọng nhất của pandas, được dùng để lưu trữ dữ liệu dạng bảng, hỗ trợ ta đặt tên cho các cột và các hàng.

Trong bài tập này, ta sẽ làm việc với dữ liệu giao thông của một số quốc gia. Mỗi mẫu là dữ liệu của một quốc gia, bao gồm các thông tin về số lượng phương tiện trung bình trên đầu người, vô-lăng ở bên trái hay phải xe,… Dữ liệu này được đặt trong file "cars.csv", file này nằm trong thư mục hiện tại ta đang làm việc. Toàn bộ dữ liệu trong file được trình bày như sau:

[[code]]czoxODc6XCIsY2Fyc19wZXJfY2FwLGNvdW50cnksZHJpdmVzX3JpZ2h0DQpVUyw4MDksVW5pdGVkIFN0YXRlcyxUcnVlDQpBVVMsNzN7WyYqJl19MSxBdXN0cmFsaWEsRmFsc2UNCkpBUCw1ODgsSmFwYW4sRmFsc2UNCklOLDE4LEluZGlhLEZhbHNlDQpSVSwyMDAsUnVzc2lhLFRydXtbJiomXX1lDQpNT1IsNzAsTW9yb2NjbyxUcnVlDQpFRyw0NSxFZ3lwdCxUcnVlDQpcIjt7WyYqJl19[[/code]]
Dòng đầu tiên là tên của các cột dữ liệu. Mỗi dòng tiếp theo là dữ liệu ứng với từng quốc gia. Dữ liệu ở các cột được phân cách bởi dấu phẩy.

Để đọc dũ liệu từ file .csv vào DataFrame trong Pandas, ta dùng hàm read_csv() (tham khảo hàm này tại đây).

Numpy trong Python

Numpy (hay Numeric Python) là một gói công cụ hỗ trợ tính toán rất hiệu quả trên mảng (array), nhanh hơn rất nhiều so với tính toán trên danh sách (list) mặc định của Python. Ngoài ra, numpy còn hỗ trợ các phép tính trực tiếp trên toàn bộ mảng, chứ không cần phải duyệt qua từng phần tử của mảng. Ví dụ:

import numpy as np
 
A = np.array([1, 2, 3])
B = np.array([4, 5, 6])
 
C = A + B
 
print(C)

Lưu ý, một mảng của numpy sẽ chỉ lưu trữ duy nhất một kiểu dữ liệu, khác với danh sách thông thường của Python. Đây là một trong các lý do mà các tính toán trên mảng của numpy được thực hiện nhanh hơn rất nhiều.

Bạn hãy chú ý, như trong ví dụ trên, phép cộng (+) trên 2 mảng numpy cũng được thực hiện khác trên 2 danh sách thông thường. Phép cộng được thực hiện như sau: từng phần tử của A được cộng với phần tử có chỉ số tương ứng trong B. Các phép tính số học khác như -, * hay / cũng được thực hiện tương tự như vậy đối với mảng numpy.

Numpy là một gói công cụ mạnh mẽ, được sử dụng rất nhiều trong các ứng dụng của Khoa học dữ liệu.

Tạo mảng `numpy` 2 chiều

Các kiểu dữ liệu trong Python

Mình xin được liệt kê các kiểu dữ liệu trong Python để các bạn tiện theo dõi.

  • int, tức kiểu số nguyên. Ví dụ: biến savings, giá trị là 1000.
  • float, tức kiểu số thực. Ví dụ: biến factor, giá trị là 1.1.

Ngoài dữ liệu kiểu số, chúng ta còn một số kiểu dữ liệu thông dụng khác như:

  • str, kiểu xâu (chuỗi) ký tự: dùng để biểu diễn 1 đoạn văn bản. Trong Python, một xâu được khai báo ở trong 2 dấu " hoặc 2 dấu '.
  • bool, kiểu giá trị logic: chỉ nhận 2 giá trị là TrueFalse.

Toản tử trong Python

Python cũng có thể được dùng như một chiếc “máy tính cầm tay” để thực hiện các phép tính cơ bản: cộng (+), trừ (-), nhân (*), chia (/) và các phép tính phức tạp hơn như:

  • Phép lũy thừa: **. Ví dụ: kết quả của 4 ** 216
  • Phép chia lấy phần dư: %. Ví dụ: kết quả của 10 % 31

Toán tử so sánh:

Trong Python, để so sánh 2 đối tượng có bằng nhau không, ta sử dụng toán tử ==. Ví dụ:
print(2 == 2) == True

Ngoài ra, ta còn sử dụng các toán tử so sánh khác như:

  • != (khác)
  • > (lớn hơn)
  • < (nhỏ hơn)
  • >= (lớn hơn hoặc bằng)
  • <= (nhỏ hơn hoặc bằng)

Trong Python, kết quả của các phép so sánh là các giá trị True (đúng) hoặc False (sai).

Toán tử Bool

and, or, not  

Chuyển đổi kiểu dữ liệu (Ép kiểu)

Chúng ta mới chỉ thực hiện các phép toán trên các biến cùng kiểu dữ liệu. Ngược lại, nếu thực hiện phép toán trên các kiểu dữ liệu khác nhau, có thể sẽ xảy ra lỗi. Ví dụ nếu thực thi đoạn lệnh sau:

print("Tôi gửi ngân hàng $" + savings + ", sau 15 năm, bây giờ tôi đã có $" + result + ". Tuyệt vời!")
trình biên dịch của Python sẽ báo lỗi, lý do là bạn không thể thực hiện phép cộng một xâu ký tự với một số nguyên/thực được.

Để giải quyết vấn đề này, chúng ta có thể sử dụng lệnh str() để chuyển kiểu số sang kiểu xâu. Ví dụ: sử dụng str(savings) để chuyển giá trị của savings sang một xâu ký tự.

Với các kiểu dữ liệu khác, ta sử dụng các lệnh tương tự như int(), float() hay bool().

 

Tổng hợp đề thi Giải tích 2, Điện quang…

Sưu tầm đề thi Điện – Quang (Vật lý đại cương 2), Giải tích 2…

của nhiều trường như HUST, UET, HUS, NUCE…

Đề thi Đại học Công Nghệ (UET)

Điện Quang (Vật lý đại cương 2)

Giải tích 2

Giải tích 1