# C++ Programming Basics: A Complete Beginner's Guide

Welcome to the world of C++ programming! This guide will walk you through everything you need to know to get started with one of the most powerful and widely-used programming languages in the world.

## What is C++?

C++ is a general-purpose programming language created by Bjarne Stroustrup. It's an extension of the C programming language, adding features like object-oriented programming, templates, and exception handling. C++ is used to create everything from system software to video games to mobile applications.

## Setting Up Your Environment

Before you can write C++, you need a compiler. Here are some popular options:

### Option 1: Visual Studio (Windows)
- Download Visual Studio Community (free)
- Comes with built-in C++ support

### Option 2: Code::Blocks
- Free IDE for Windows, Mac, and Linux
- Easy to set up and use

### Option 3: Online Compilers
- Compiler Explorer (godbolt.org)
- Replit.com
- OnlineGDB.com

## Your First C++ Program

Let's start with the classic "Hello, World!" program:

```cpp
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}
```

### Breaking It Down:
- `#include <iostream>` - Includes input/output library
- `using namespace std;` - Lets us use 'cout' without typing 'std::'
- `int main()` - The main function where program execution begins
- `cout << "Hello, World!" << endl;` - Prints text to screen
- `return 0;` - Tells the system the program ended successfully

## Basic Concepts

### Variables and Data Types

Variables are containers that hold values. Here are the most common data types:

```cpp
int age = 25;           // Integer (whole numbers)
double price = 19.99;   // Decimal number
char letter = 'A';      // Single character
bool isTrue = true;     // Boolean (true or false)
string name = "Alice";  // Text string
```

### Basic Operations

```cpp
int a = 10;
int b = 5;

int sum = a + b;        // Addition: 15
int difference = a - b; // Subtraction: 5
int product = a * b;    // Multiplication: 50
int quotient = a / b;   // Division: 2
int remainder = a % b;  // Modulo (remainder): 0

// Increment and decrement
a++;        // Same as a = a + 1
b--;        // Same as b = b - 1
```

### Input and Output

```cpp
#include <iostream>
using namespace std;

int main() {
    int age;
    cout << "Enter your age: ";
    cin >> age;                    // Read input from user
    cout << "You are " << age << " years old!" << endl;
    return 0;
}
```

## Control Flow

### If Statements

```cpp
int score = 85;

if (score >= 90) {
    cout << "Grade: A" << endl;
} else if (score >= 80) {
    cout << "Grade: B" << endl;
} else {
    cout << "Grade: C or below" << endl;
}
```

### Loops

#### For Loop
```cpp
for (int i = 1; i <= 5; i++) {
    cout << "Count: " << i << endl;
}
```

#### While Loop
```cpp
int count = 1;
while (count <= 5) {
    cout << "Count: " << count << endl;
    count++;
}
```

## Functions

Functions are reusable blocks of code that perform specific tasks:

```cpp
// Function definition
int add(int a, int b) {
    return a + b;
}

int main() {
    // Calling the function
    int result = add(5, 3);
    cout << "Result: " << result << endl;  // Output: Result: 8
    return 0;
}
```

## Arrays

Arrays store multiple values of the same type:

```cpp
// Declare and initialize array
int numbers[5] = {1, 2, 3, 4, 5};

// Access elements (arrays are 0-indexed)
cout << numbers[0] << endl;  // Output: 1

// Change an element
numbers[2] = 10;
```

## Strings

```cpp
#include <string>
using namespace std;

string name = "John";
string greeting = "Hello, " + name + "!";

int length = name.length();        // Get string length
char firstChar = name[0];         // Access character at index 0
```

## Practice Exercise

Try writing a simple program that:
1. Asks the user for their name and age
2. Calculates how many years until they turn 100
3. Displays the result

Here's what it might look like:

```cpp
#include <iostream>
#include <string>
using namespace std;

int main() {
    string name;
    int age, yearsUntil100;
    
    cout << "What is your name? ";
    cin >> name;
    cout << "How old are you? ";
    cin >> age;
    
    yearsUntil100 = 100 - age;
    
    cout << "Hello " << name << "! You have " 
         << yearsUntil100 << " years until you turn 100!" << endl;
    
    return 0;
}
```

## Common Mistakes for Beginners

1. **Forgetting semicolons** - Every statement ends with `;`
2. **Missing includes** - Don't forget `#include <iostream>` for input/output
3. **Using `=` instead of `==`** - Use `==` for comparison, `=` for assignment
4. **Array index out of bounds** - Arrays go from 0 to size-1

## Next Steps

Once you're comfortable with these basics, try:
- Working with more complex data structures
- Creating your own functions
- Learning about pointers and memory management
- Exploring object-oriented programming concepts

Remember: Practice is key in programming. The more code you write, the better you'll become!

Happy coding!