Tổng kết buổi 1

Số lượng thành viên tham gia: 27
Link slide buổi học
Link record
Link bài tập lớp buổi 1 CPP
Link btvn buổi 1 CPP

Nội dung chia sẻ:

  • Tổng quan về C++ và ứng dụng.
  • Cấu trúc 1 chương trình C++ cơ bản.
  • Ghi nhớ cách khai báo biến, cấu trúc lệnh if else và swicth.
  • Một số thư viện cần nhớ:
    • #include <bits/stdc++.h> - thư viện gọi tất cả các thư viện.
    • iostream- thư viện chứ hàm cin, cout,…
    • math.h - thư viện chứa hàm sqrt(tính căn bậc 2), abs(trị tuyệt đối), sin(tính sin),…
    • stdio.h - thư viện chứa printf, scanf,…
    • iomanip - thư viện chứa setprecision,…
  • Cách in số thực y làm tròn sau dấy phẩy x chữ số: cout<<fixed<<setprecision(x)<<y;

Ưu điểm của C++

  • C++ là một ngôn ngữ hiệu năng cao.
  • Nhiều ứng dụng - từ Học máy đến xây dựng trò chơi trong Unity và Unreal đến mô phỏng toán học thời gian thực, đến lập trình các hợp đồng thông minh Blockchain. Nếu bạn chưa biết Tensorflow, một trong những thư viện Máy học được sử dụng rộng rãi nhất trên thế giới sử dụng C++ làm ngôn ngữ lập trình phụ trợ để tăng tốc độ thực thi.
  • Quản lý bộ nhớ - C++ cung cấp cho người dùng quyền kiểm soát hoàn toàn, đó là một lợi thế và một bất lợi vì điều này làm tăng trách nhiệm của người dùng trong việc quản lý bộ nhớ thay vì được quản lý bởi bộ thu gom rác.
  • Hỗ trợ Thư viện - thư viện tiêu chuẩn cho các vùng chứa khác nhau như sets, map, hash, v.v.
  • Ngôn ngữ lập trình hướng đối tượng - bốn nguyên tắc của lập trình hướng đối tượng là đóng gói, trừu tượng hóa, kế thừa và đa hình. Nhìn chung, điều này giúp tránh trùng lặp mã và tăng khả năng tái sử dụng mã.
    • Tính năng đóng gói làm cho dữ liệu trừu tượng hóa (bảo mật hoặc quyền riêng tư đối với dữ liệu) có thể thực hiện được với sự trợ giúp của một lớp.
    • Kế thừa được sử dụng để cung cấp khái niệm về khả năng tái sử dụng mã.
    • Tính đa hình làm cho một ngôn ngữ có thể thực hiện các tác vụ khác nhau ở các trường hợp khác nhau.
    • Tính trừu tượng thể hiện thông tin cần thiết trong một chương trình mà không cần trình bày chi tiết.

Người sáng tạo

Năm 1983, Bjarne Stroustrup phát hành C++, ông là nhân viên của Bell AT&T và bắt đầu làm việc trên ngôn ngữ “C với các lớp”. Giờ đây, C++ phát triển thêm nhiều tính năng mở rộng và được ứng dụng rộng rãi trong nhiều lĩnh vực. Nói về Bell AT&T Labs là một trong những nơi ươm mầm những phát kiến lớn nhất của lĩnh vực Công nghệ thông tin và truyền thông thế kỉ 20.

C++

Nó là một ngôn ngữ cấp cao được thiết kế để phát triển ứng dụng nhanh chóng. Bạn không cần phải học C để sử dụng C ++.

Một dự án C++

Nó sẽ luôn có hai giai đoạn: biên dịch mã thành một hoặc nhiều tệp object và sau đó liên kết các tệp object thành tệp thực thi. Điều này có nghĩa là trình biên dịch C++ của bạn sẽ cung cấp một công cụ khác, được gọi là trình liên kết.

Ngữ nghĩa của cpp

Ở cấp độ rất cơ bản, một project C ++ sẽ chỉ chứa một file: mã nguồn C++, thường có phần mở rộng là cpp, viết tắt của c plus plus.

Bắt đầu với hàm main

Một trong những phần này là hàm main() là hàm chạy đầu tiên. Hiện tại, tất cả những gì bạn cần biết là mọi ứng dụng C ++ đều có một hàm main().

#include <iostream>
// The entry point of the program 
int main() 
{ 
    std::cout << “Hello, world!”;
    return 0; 
}

Chia nhỏ cú pháp

Dòng đầu tiên bắt đầu bằng #include. #include cho phép tái sử dụng mã được viết sẵn tại thư viện trong chương trình của bạn.

#include <iostream>
int main() 
{ 
    std::cout << “Hello, world!”; 
    return 0;
}
  • dấu ngoặc nhọn (<>) chỉ ra rằng trình biên dịch nên tìm thư viện cung cấp sẵn.
  • Comment - dòng bắt đầu bằng //. Một cách khác có thể được bắt đầu bằng /* và kết thúc bằng */ và mọi thứ giữa hai ký hiệu này là một comment, bao gồm cả ngắt dòng. Tất cả kí tự ở giữa comment sẽ không được chạy.
  • Dấu ngoặc nhọn - ** chia tách khối mã {}**, trong trường hợp này được sử dụng cho hàm main để chia tách với các phần khác của chương trình. Tưởng tượng chương trình như sự lắp ghép của các khối, thì {} sẽ chia tách các khối đó với nhau, giúp chương trình biết được mã nào là của khối nào.
  • Dấu ngoặc trống (), hiện tại hàm này không có tham số. Nhưng thông thường, điều này được sử dụng để khai báo các tham số được truyền cho hàm.
  • Hàm int main(), là điểm bắt đầu của ứng dụng c++ của bạn phải trả về int(tức là một số nguyên). chức năng chính là một câu lệnh đơn bắt đầu bằng std và kết thúc bằng dấu chấm phẩy (;) câu lệnh đơn in ra chuỗi Hello, world!.
  • chuỗi được đặt trong dấu ngoặc kép (″ ″).
  • chuỗi được đưa vào std::cout bằng cách sử dụng toán tử « cho phép dữ liệu được in ra.

Sử dụng std namespace thay thế

Trong trường hợp này, std là viết tắt của standard namespace. Điều đó bao gồm cout, cin, string, vector, map, v.v. Vì vậy, phổ biến là thêm “using namespace std” ở đầu mã nguồn để bạn không phải nhập lại tiền tố std::. namespace là tên được đặt cho các phần của mã giúp giảm nguy cơ xung đột đặt tên.

Before using Namespace

#include <iostream>
int main() 
{ 
    std::cout << “Hello, world!”; 
}

After using Namespace including Breakdown of the Syntax

//Preprocessor directive
#include <iostream>
// Entry point of the program 
int main() 
{ 
    /*Tell the compiler what namespace to search with namespace std;*/
   using namespace std;
/* Write to the screen using std::cout*/
   cout << “Hello, world!”<< endl;
//Returns a value
    return 0; 
}

Chúc mừng bạn đã thực hiện chương trình đầu tiên. Stay hungry! Stay foolish

Bảng xếp hạng Hackerrank:

Code bài tập trên lớp:

Tặng hoa

Trong CLB ITMO Brain thì anh Trần Đức Mạnh ( a.k.a Mi sa Chan) nổi tiếng là nhiều tiền và đẹp trai, đặc biệt là rất biết quan tâm đến các bạn nữ. Hôm nay là ngày 14 tháng 11 - “Ngày bệnh dư đường thế giới” hay còn gọi là “ngày quốc tế đáo thái đường” (World Diabetes Day), anh Mạnh quyết tâm thể hiện sự ngọt ngào của mình và quyết định sẽ mua hoa tặng tất cả các người yêu của anh.

Anh Mạnh có N người yêu và dự định mua X bông hoa, mỗi bông hoa có giá là P. Ở Saint Petersburg hoa rất đắt, sinh hoạt phí kỳ này thì đang chậm nên anh Mạnh phải lên kế hoạch đầu tư hợp lý. Các bạn hãy giúp anh tính số tiền trung bình mà anh đầu tư cho mỗi cô người yêu nhé !

Input Format:
3 số nguyên n, x, p nằm trên cùng 1 dòng
Constraints
1 ≤ n ≤ 10ˆ3
1 ≤ x ≤ 10ˆ6
1 ≤ p ≤ 10ˆ6
Output Format
Số thực duy nhất là số tiền trung bình mà anh Mạnh đầu tư cho mỗi cô người yêu.

Sample Input 0:

4 6 200

Sample Output 0:

300

Solution

// from danghoangducbinh
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */
    double n, x, p;
    cin >> n >> x >> p;
    double a = x*(p/n) ;
    cout << fixed << (a);
    return 0;
}

Đếm nghiệm

Sau màn tặng hoa thể hiện đầy đủ sự giàu có và khả năng thấu hiểu chị em, anh Mạnh đã ghi điểm rất lớn trong lòng các bạn nữ trong CLB ITMO BRAIN. Tuy nhiên các bạn nữ trong CLB chúng ta đều là những người xinh đẹp và thông minh, ai cũng có tiêu chuẩn chọn người yêu rất cao. Ngoài đẹp trai, cao 1m90, nhiều tiền, … anh Mạnh cần phải chứng minh trí tuệ của mình. TN (Thị Nở) - một ứng cử viên tiềm năng cho vị trí người yêu đưa ra cho anh một câu đố:
Với mỗi số nguyên n bạn TN nói ra, anh phải trả lời chính xác số nghiệm thực của phương trình sau:
Anh Mạnh rất bận, còn rất nhiều mục tiêu theo đuổi nữa, không chỉ mình TN. Nên bạn hãy giúp anh Mạnh viết 1 chương trình tự động trả lời câu hỏi của TN nhé!

Input Format:
Gồm 1 số nguyên n trên 1 dòng duy nhất
Constraints
1 ≤ n ≤ 10ˆ9
Output Format
Số nguyên duy nhất là số nghiệm thực của phương trình đã cho

Sample Input 0

2

Sample Output 0:

0

Solution

// from tle15112002
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    cout << 0;
    return 0;
}

Mai làm gì

Khánh Huyền là người đam mê đỏ đen và luôn quyết định ngày mai của mình bằng việc tung xúc xắc. Đầu tiên Huyền tung xúc xắc để quyết định xem có đi học hay không. Nếu xúc xắc ra chẵn thì nghỉ học hoặc ngược lại thì đi học. Nếu đi học, Huyền lại tung xúc xắc tiếp, chẵn thì làm bài, lẻ thì không làm bài. Nếu nghỉ học, Huyền tung xúc xắc ra chẵn thì xem phim, lẻ thì gội đầu.

Input Format:
2 số nguyên x và y - là 2 số Huyền nhận được sau 2 lần tung xúc xắc.
Constraints
0 < x < 7; 0 < y < 7
Output Format
In ra màn hình kết quả ứng với từng số: “nghi hoc”, “di hoc”, “lam bai”, “khong lam bai”, “xem phim”, “goi dau” và các kết quả được ngăn cách bởi chữ ‘va’.

Sample Input 0

6 1

Sample Output 0:

nghi hoc va goi dau

Solution

// from kh280174
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    int x, y;
    cin >> x >> y;
    if(x%2==1){
        if(y%2==1){cout<<"di hoc va khong lam bai";}
        else cout<<"di hoc va lam bai";
    };
    if(x%2==0){
        if(y%2==1){cout<<"nghi hoc va goi dau";}
        else cout<<"nghi hoc va xem phim ";
    };
    
    return 0;
}

Main function
Cpp type
6.096 Introduction to C++: Introduction