diff --git a/README.md b/README.md index 640177cce..b9e2f35e7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # Codeshow-100days_of_code 100DaysOfCode is a challenge/community, where you publicly commit to code for 1 hour for the next 100 days. - # Rules -In our version, of 100DaysOfCode, you need to do anything that helps you enhance your tech stack i.e. competitive coding, try learning a new language, read technical articles/ books, make open source contributions, add features to a personal project, etc. @@ -9,7 +8,6 @@ -Keep defining your short term goals (measurable) and strive hard to achieve them. (Eg. Getting better at competitive coding is not a measurable goal but achiving 2000 rating in Codechef is measurable. -Update everyday progress and submit a pull request. - -(Optional) Follow 100DaysOfCode Twitter Bot that retweets the tweets that contain the #100DaysOfCode hashtag and timely tweet your progress with #100DaysOfCode hashtag. -Try to add detailed description of what you did, add corresponding links, if you solve questions, you can add your codes in the same folder and provid a link in the README (not for active contests). @@ -61,3 +59,4 @@ Basic git: -Update the progress in your README according to date and submit a pull request. -If you need more clarification, feel free to reach us at Whatsapp. + diff --git a/Tanay/C++Function_Overloading.txt b/Tanay/C++Function_Overloading.txt new file mode 100644 index 000000000..6ee959c09 --- /dev/null +++ b/Tanay/C++Function_Overloading.txt @@ -0,0 +1,46 @@ +C++ Function Overloading +Function Overloading +With function overloading, multiple functions can have the same name with different parameters: + +Example +int myFunction(int x) +float myFunction(float x) +double myFunction(double x, double y) +Consider the following example, which have two functions that add numbers of different type: + +Example +int plusFuncInt(int x, int y) { + return x + y; +} + +double plusFuncDouble(double x, double y) { + return x + y; +} + +int main() { + int myNum1 = plusFuncInt(8, 5); + double myNum2 = plusFuncDouble(4.3, 6.26); + cout << "Int: " << myNum1 << "\n"; + cout << "Double: " << myNum2; + return 0; +} +Instead of defining two functions that should do the same thing, it is better to overload one. + +In the example below, we overload the plusFunc function to work for both int and double: + +Example +int plusFunc(int x, int y) { + return x + y; +} + +double plusFunc(double x, double y) { + return x + y; +} + +int main() { + int myNum1 = plusFunc(8, 5); + double myNum2 = plusFunc(4.3, 6.26); + cout << "Int: " << myNum1 << "\n"; + cout << "Double: " << myNum2; + return 0; +} diff --git a/Tanay/CPP/C++ Booleans b/Tanay/CPP/C++ Booleans index f22a66119..586889d4c 100644 --- a/Tanay/CPP/C++ Booleans +++ b/Tanay/CPP/C++ Booleans @@ -1,3 +1,4 @@ + C++ Booleans Very often, in programming, you will need a data type that can only have one of two values, like: diff --git a/Tanay/CPP/C++ Declare Multiple Variables.txt b/Tanay/CPP/C++ Declare Multiple Variables.txt index b935c34e5..5d258284e 100644 --- a/Tanay/CPP/C++ Declare Multiple Variables.txt +++ b/Tanay/CPP/C++ Declare Multiple Variables.txt @@ -1,3 +1,4 @@ + C++ Declare Multiple Variables Declare Many Variables To declare more than one variable of the same type, use a comma-separated list: diff --git a/Tanay/CPP/C++ Else If.txt b/Tanay/CPP/C++ Else If.txt new file mode 100644 index 000000000..9fa69597e --- /dev/null +++ b/Tanay/CPP/C++ Else If.txt @@ -0,0 +1,27 @@ + +The else if Statement + +Use the else if statement to specify a new condition if the first condition is false. + +Syntax +if (condition1) { + // block of code to be executed if condition1 is true +} else if (condition2) { + // block of code to be executed if the condition1 is false and condition2 is true +} else { + // block of code to be executed if the condition1 is false and condition2 is false +} +Example +int time = 22; +if (time < 10) { + cout << "Good morning."; +} else if (time < 20) { + cout << "Good day."; +} else { + cout << "Good evening."; +} +// Outputs "Good evening." +Example explained +In the example above, time (22) is greater than 10, so the first condition is false. The next condition, in the else if statement, is also false, so we move on to the else condition since condition1 and condition2 is both false - and print to the screen "Good evening". + +However, if the time was 14, our program would print "Good day." diff --git a/Tanay/CPP/C++ How To Add Two Numbers b/Tanay/CPP/C++ How To Add Two Numbers new file mode 100644 index 000000000..8c05d0c29 --- /dev/null +++ b/Tanay/CPP/C++ How To Add Two Numbers @@ -0,0 +1,19 @@ +Learn how to add two numbers in C++: + +Example +int x = 5; +int y = 6; +int sum = x + y; +cout << sum; +Add Two Numbers with User Input +In this example, the user must input two numbers. Then we print the sum by calculating (adding) the two numbers: + +Example +int x, y; +int sum; +cout << "Type a number: "; +cin >> x; +cout << "Type another number: "; +cin >> y; +sum = x + y; +cout << "Sum is: " << sum; diff --git a/Tanay/CPP/C++ If ... Else.txt b/Tanay/CPP/C++ If ... Else.txt index 5d3177b3d..830cbcc50 100644 --- a/Tanay/CPP/C++ If ... Else.txt +++ b/Tanay/CPP/C++ If ... Else.txt @@ -1,3 +1,4 @@ + C++ If ... Else C++ Conditions and If Statements C++ supports the usual logical conditions from mathematics: diff --git a/Tanay/CPP/C++ Output (Print Text) b/Tanay/CPP/C++ Output (Print Text) index 6beeccf59..a97493abd 100644 --- a/Tanay/CPP/C++ Output (Print Text) +++ b/Tanay/CPP/C++ Output (Print Text) @@ -1,3 +1,4 @@ + C++ Output (Print Text) C++ Output (Print Text) The cout object, together with the << operator, is used to output values/print text: diff --git a/Tanay/CPP/C++ Syntax.cpp b/Tanay/CPP/C++ Syntax.cpp index 7d2219ea0..14b3c58b2 100644 --- a/Tanay/CPP/C++ Syntax.cpp +++ b/Tanay/CPP/C++ Syntax.cpp @@ -1,3 +1,4 @@ + ### C++ Syntax et's break up the following code to understand it better: diff --git a/Tanay/CPP/C++Arrays.txt b/Tanay/CPP/C++Arrays.txt new file mode 100644 index 000000000..1459564da --- /dev/null +++ b/Tanay/CPP/C++Arrays.txt @@ -0,0 +1,34 @@ + +C++ Arrays. +Arrays are used to store multiple values in a single variable, instead of declaring separate variables for each value. + +To declare an array, define the variable type, specify the name of the array followed by square brackets and specify the number of elements it should store: + +string cars[4]; +We have now declared a variable that holds an array of four strings. To insert values to it, we can use an array literal - place the values in a comma-separated list, inside curly braces: + +string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; +To create an array of three integers, you could write: + +int myNum[3] = {10, 20, 30}; +Access the Elements of an Array +You access an array element by referring to the index number. + +This statement accesses the value of the first element in cars: + +Example +string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; +cout << cars[0]; +// Outputs Volvo +Note: Array indexes start with 0: [0] is the first element. [1] is the second element, etc. + +Change an Array Element +To change the value of a specific element, refer to the index number: + +Example +cars[0] = "Opel"; +Example +string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"}; +cars[0] = "Opel"; +cout << cars[0]; +// Now outputs Opel instead of Volvo diff --git a/Tanay/CPP/C++Do_While_Loop.txt b/Tanay/CPP/C++Do_While_Loop.txt new file mode 100644 index 000000000..e36444aca --- /dev/null +++ b/Tanay/CPP/C++Do_While_Loop.txt @@ -0,0 +1,20 @@ + +C++ Do/While Loop +The Do/While Loop +The do/while loop is a variant of the while loop. This loop will execute the code block once, before checking if the condition is true, then it will repeat the loop as long as the condition is true. + +Syntax +do { + // code block to be executed +} +while (condition); +The example below uses a do/while loop. The loop will always be executed at least once, even if the condition is false, because the code block is executed before the condition is tested: + +Example +int i = 0; +do { + cout << i << "\n"; + i++; +} +while (i < 5); +Do not forget to increase the variable used in the condition, otherwise the loop will never end! diff --git a/Tanay/CPP/C++Logical_Operators,txt b/Tanay/CPP/C++Logical_Operators,txt index ccc26d7a1..380d886c1 100644 --- a/Tanay/CPP/C++Logical_Operators,txt +++ b/Tanay/CPP/C++Logical_Operators,txt @@ -1,3 +1,4 @@ + C++ Logical Operators Logical Operators Logical operators are used to determine the logic between variables or values: diff --git a/Tanay/CPP/C++_Access_Specifiers.txt b/Tanay/CPP/C++_Access_Specifiers.txt new file mode 100644 index 000000000..345229716 --- /dev/null +++ b/Tanay/CPP/C++_Access_Specifiers.txt @@ -0,0 +1,49 @@ + +C++ Access Specifiers +Access Specifiers +By now, you are quite familiar with the public keyword that appears in all of our class examples: + +Example +class MyClass { // The class + public: // Access specifier + // class members goes here +}; +The public keyword is an access specifier. Access specifiers define how the members (attributes and methods) of a class can be accessed. In the example above, the members are public - which means that they can be accessed and modified from outside the code. + +However, what if we want members to be private and hidden from the outside world? + +In C++, there are three access specifiers: + +public - members are accessible from outside the class +private - members cannot be accessed (or viewed) from outside the class +protected - members cannot be accessed from outside the class, however, they can be accessed in inherited classes. You will learn more about Inheritance later. +In the following example, we demonstrate the differences between public and private members: + +Example +class MyClass { + public: // Public access specifier + int x; // Public attribute + private: // Private access specifier + int y; // Private attribute +}; + +int main() { + MyClass myObj; + myObj.x = 25; // Allowed (public) + myObj.y = 50; // Not allowed (private) + return 0; +} +If you try to access a private member, an error occurs: + +error: y is private +Note: It is possible to access private members of a class using a public method inside the same class. See the next chapter (Encapsulation) on how to do this. + +Tip: It is considered good practice to declare your class attributes as private (as often as you can). This will reduce the possibility of yourself (or others) to mess up the code. This is also the main ingredient of the Encapsulation concept, which you will learn more about in the next chapter. + +Note: By default, all members of a class are private if you don't specify an access specifier: + +Example +class MyClass { + int x; // Private attribute + int y; // Private attribute +}; diff --git a/Tanay/CPP/C++_Access_Strings.txt b/Tanay/CPP/C++_Access_Strings.txt index 1ef71b14d..ff7c8672e 100644 --- a/Tanay/CPP/C++_Access_Strings.txt +++ b/Tanay/CPP/C++_Access_Strings.txt @@ -1,3 +1,4 @@ + C++ Access Strings Access Strings You can access the characters in a string by referring to its index number inside square brackets []. diff --git a/Tanay/CPP/C++_Assignment Operators.txt b/Tanay/CPP/C++_Assignment Operators.txt index 37e277ef4..e7e7f5b66 100644 --- a/Tanay/CPP/C++_Assignment Operators.txt +++ b/Tanay/CPP/C++_Assignment Operators.txt @@ -1,3 +1,4 @@ + C++ Assignment Operators Assignment Operators Assignment operators are used to assign values to variables. diff --git a/Tanay/CPP/C++_Break_and_Continue.txt b/Tanay/CPP/C++_Break_and_Continue.txt new file mode 100644 index 000000000..f674b40b1 --- /dev/null +++ b/Tanay/CPP/C++_Break_and_Continue.txt @@ -0,0 +1,50 @@ +C++ Break and Continue +C++ Break +You have already seen the break statement used in an earlier chapter of this tutorial. It was used to "jump out" of a switch statement. + +The break statement can also be used to jump out of a loop. + +This example jumps out of the loop when i is equal to 4: + +Example +for (int i = 0; i < 10; i++) { + if (i == 4) { + break; + } + cout << i << "\n"; +} +C++ Continue +The continue statement breaks one iteration (in the loop), if a specified condition occurs, and continues with the next iteration in the loop. + +This example skips the value of 4: + +Example +for (int i = 0; i < 10; i++) { + if (i == 4) { + continue; + } + cout << i << "\n"; +} + +Break and Continue in While Loop +You can also use break and continue in while loops: + +Break Example +int i = 0; +while (i < 10) { + cout << i << "\n"; + i++; + if (i == 4) { + break; + } +} +Continue Example +int i = 0; +while (i < 10) { + if (i == 4) { + i++; + continue; + } + cout << i << "\n"; + i++; +} diff --git a/Tanay/CPP/C++_Class_Methods.txt b/Tanay/CPP/C++_Class_Methods.txt new file mode 100644 index 000000000..a750658e6 --- /dev/null +++ b/Tanay/CPP/C++_Class_Methods.txt @@ -0,0 +1,63 @@ +Class Methods +Methods are functions that belongs to the class. + +There are two ways to define functions that belongs to a class: + +Inside class definition +Outside class definition +In the following example, we define a function inside the class, and we name it "myMethod". + +Note: You access methods just like you access attributes; by creating an object of the class and using the dot syntax (.): + +Inside Example +class MyClass { // The class + public: // Access specifier + void myMethod() { // Method/function defined inside the class + cout << "Hello World!"; + } +}; + +int main() { + MyClass myObj; // Create an object of MyClass + myObj.myMethod(); // Call the method + return 0; +} +To define a function outside the class definition, you have to declare it inside the class and then define it outside of the class. This is done by specifiying the name of the class, followed the scope resolution :: operator, followed by the name of the function: + +Outside Example +class MyClass { // The class + public: // Access specifier + void myMethod(); // Method/function declaration +}; + +// Method/function definition outside the class +void MyClass::myMethod() { + cout << "Hello World!"; +} + +int main() { + MyClass myObj; // Create an object of MyClass + myObj.myMethod(); // Call the method + return 0; +} +Parameters +You can also add parameters: + + Example +#include +using namespace std; + +class Car { + public: + int speed(int maxSpeed); +}; + +int Car::speed(int maxSpeed) { + return maxSpeed; +} + +int main() { + Car myObj; // Create an object of Car + cout << myObj.speed(200); // Call the method with an argument + return 0; +} diff --git a/Tanay/CPP/C++_Classes_and_Objects.txt b/Tanay/CPP/C++_Classes_and_Objects.txt new file mode 100644 index 000000000..c518e1c9c --- /dev/null +++ b/Tanay/CPP/C++_Classes_and_Objects.txt @@ -0,0 +1,84 @@ +C++ Classes and Objects +C++ Classes/Objects +C++ is an object-oriented programming language. + +Everything in C++ is associated with classes and objects, along with its attributes and methods. For example: in real life, a car is an object. The car has attributes, such as weight and color, and methods, such as drive and brake. + +Attributes and methods are basically variables and functions that belongs to the class. These are often referred to as "class members". + +A class is a user-defined data type that we can use in our program, and it works as an object constructor, or a "blueprint" for creating objects. + +Create a Class +To create a class, use the class keyword: + +Example +Create a class called "MyClass": + +class MyClass { // The class + public: // Access specifier + int myNum; // Attribute (int variable) + string myString; // Attribute (string variable) +}; +Example explained +The class keyword is used to create a class called MyClass. +The public keyword is an access specifier, which specifies that members (attributes and methods) of the class are accessible from outside the class. You will learn more about access specifiers later. +Inside the class, there is an integer variable myNum and a string variable myString. When variables are declared within a class, they are called attributes. +At last, end the class definition with a semicolon ;. +Create an Object +In C++, an object is created from a class. We have already created the class named MyClass, so now we can use this to create objects. + +To create an object of MyClass, specify the class name, followed by the object name. + +To access the class attributes (myNum and myString), use the dot syntax (.) on the object: + +Example +Create an object called "myObj" and access the attributes: + +class MyClass { // The class + public: // Access specifier + int myNum; // Attribute (int variable) + string myString; // Attribute (string variable) +}; + +int main() { + MyClass myObj; // Create an object of MyClass + + // Access attributes and set values + myObj.myNum = 15; + myObj.myString = "Some text"; + + // Print attribute values + cout << myObj.myNum << "\n"; + cout << myObj.myString; + return 0; +} +Multiple Objects +You can create multiple objects of one class: + +Example +// Create a Car class with some attributes +class Car { + public: + string brand; + string model; + int year; +}; + +int main() { + // Create an object of Car + Car carObj1; + carObj1.brand = "BMW"; + carObj1.model = "X5"; + carObj1.year = 1999; + + // Create another object of Car + Car carObj2; + carObj2.brand = "Ford"; + carObj2.model = "Mustang"; + carObj2.year = 1969; + + // Print attribute values + cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n"; + cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n"; + return 0; +} diff --git a/Tanay/CPP/C++_Constructors.txt b/Tanay/CPP/C++_Constructors.txt new file mode 100644 index 000000000..28ab50c9c --- /dev/null +++ b/Tanay/CPP/C++_Constructors.txt @@ -0,0 +1,76 @@ +C++ Constructors +Constructors +A constructor in C++ is a special method that is automatically called when an object of a class is created. + +To create a constructor, use the same name as the class, followed by parentheses (): + +Example +class MyClass { // The class + public: // Access specifier + MyClass() { // Constructor + cout << "Hello World!"; + } +}; + +int main() { + MyClass myObj; // Create an object of MyClass (this will call the constructor) + return 0; +} +Note: The constructor has the same name as the class, it is always public, and it does not have any return value. + +Constructor Parameters +Constructors can also take parameters (just like regular functions), which can be useful for setting initial values for attributes. + +The following class have brand, model and year attributes, and a constructor with different parameters. Inside the constructor we set the attributes equal to the constructor parameters (brand=x, etc). When we call the constructor (by creating an object of the class), we pass parameters to the constructor, which will set the value of the corresponding attributes to the same: + +Example +class Car { // The class + public: // Access specifier + string brand; // Attribute + string model; // Attribute + int year; // Attribute + Car(string x, string y, int z) { // Constructor with parameters + brand = x; + model = y; + year = z; + } +}; + +int main() { + // Create Car objects and call the constructor with different values + Car carObj1("BMW", "X5", 1999); + Car carObj2("Ford", "Mustang", 1969); + + // Print values + cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n"; + cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n"; + return 0; +} +Just like functions, constructors can also be defined outside the class. First, declare the constructor inside the class, and then define it outside of the class by specifying the name of the class, followed by the scope resolution :: operator, followed by the name of the constructor (which is the same as the class): + +Example +class Car { // The class + public: // Access specifier + string brand; // Attribute + string model; // Attribute + int year; // Attribute + Car(string x, string y, int z); // Constructor declaration +}; + +// Constructor definition outside the class +Car::Car(string x, string y, int z) { + brand = x; + model = y; + year = z; +} + +int main() { + // Create Car objects and call the constructor with different values + Car carObj1("BMW", "X5", 1999); + Car carObj2("Ford", "Mustang", 1969); + + // Print values + cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n"; + cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n"; + return 0; +} diff --git a/Tanay/CPP/C++_Encapsulation.txt b/Tanay/CPP/C++_Encapsulation.txt new file mode 100644 index 000000000..278b28eb5 --- /dev/null +++ b/Tanay/CPP/C++_Encapsulation.txt @@ -0,0 +1,44 @@ +Encapsulation +The meaning of Encapsulation, is to make sure that "sensitive" data is hidden from users. To achieve this, you must declare class variables/attributes as private (cannot be accessed from outside the class). If you want others to read or modify the value of a private member, you can provide public get and set methods. + +Access Private Members +To access a private attribute, use public "get" and "set" methods: + +Example +#include +using namespace std; + +class Employee { + private: + // Private attribute + int salary; + + public: + // Setter + void setSalary(int s) { + salary = s; + } + // Getter + int getSalary() { + return salary; + } +}; + +int main() { + Employee myObj; + myObj.setSalary(50000); + cout << myObj.getSalary(); + return 0; +} +Example explained +The salary attribute is private, which have restricted access. + +The public setSalary() method takes a parameter (s) and assigns it to the salary attribute (salary = s). + +The public getSalary() method returns the value of the private salary attribute. + +Inside main(), we create an object of the Employee class. Now we can use the setSalary() method to set the value of the private attribute to 50000. Then we call the getSalary() method on the object to return the value. + +Why Encapsulation? +It is considered good practice to declare your class attributes as private (as often as you can). Encapsulation ensures better control of your data, because you (or others) can change one part of the code without affecting other parts +Increased security of data diff --git a/Tanay/CPP/C++_Examples.cpp b/Tanay/CPP/C++_Examples.cpp new file mode 100644 index 000000000..dfa5cd6cc --- /dev/null +++ b/Tanay/CPP/C++_Examples.cpp @@ -0,0 +1,20 @@ +C++ Examples +C++ Syntax +C++ Output/Print +C++ Comments +C++ Variables +C++ User Input +C++ Data Types +C++ Operators +C++ Strings +C++ Math +C++ Booleans +C++ If...Else (Conditions) +C++ Switch +C++ Loops +C++ Arrays +C++ References +C++ Pointers +C++ Files +C++ Functions +C++ Classes/Objects diff --git a/Tanay/CPP/C++_Exceptions.txt b/Tanay/CPP/C++_Exceptions.txt new file mode 100644 index 000000000..3f893aabf --- /dev/null +++ b/Tanay/CPP/C++_Exceptions.txt @@ -0,0 +1,78 @@ +C++ Exceptions +When executing C++ code, different errors can occur: coding errors made by the programmer, errors due to wrong input, or other unforeseeable things. + +When an error occurs, C++ will normally stop and generate an error message. The technical term for this is: C++ will throw an exception (throw an error). + +C++ try and catch +Exception handling in C++ consist of three keywords: try, throw and catch: + +The try statement allows you to define a block of code to be tested for errors while it is being executed. + +The throw keyword throws an exception when a problem is detected, which lets us create a custom error. + +The catch statement allows you to define a block of code to be executed, if an error occurs in the try block. + +The try and catch keywords come in pairs: + +Example +try { + // Block of code to try + throw exception; // Throw an exception when a problem arise +} +catch () { + // Block of code to handle errors +} +Consider the following example: + +Example +try { + int age = 15; + if (age >= 18) { + cout << "Access granted - you are old enough."; + } else { + throw (age); + } +} +catch (int myNum) { + cout << "Access denied - You must be at least 18 years old.\n"; + cout << "Age is: " << myNum; +} +Example explained +We use the try block to test some code: If the age variable is less than 18, we will throw an exception, and handle it in our catch block. + +In the catch block, we catch the error and do something about it. The catch statement takes a parameter: in our example we use an int variable (myNum) (because we are throwing an exception of int type in the try block (age)), to output the value of age. + +If no error occurs (e.g. if age is 20 instead of 15, meaning it will be be greater than 18), the catch block is skipped: + +Example +int age = 20; +You can also use the throw keyword to output a reference number, like a custom error number/code for organizing purposes: + +Example +try { + int age = 15; + if (age >= 18) { + cout << "Access granted - you are old enough."; + } else { + throw 505; + } +} +catch (int myNum) { + cout << "Access denied - You must be at least 18 years old.\n"; + cout << "Error number: " << myNum; +} +Handle Any Type of Exceptions (...) +If you do not know the throw type used in the try block, you can use the "three dots" syntax (...) inside the catch block, which will handle any type of exception: + +Example +try { + int age = 15; + if (age >= 18) { + cout << "Access granted - you are old enough."; + } else { + throw 505; + } +} +catch (...) { + cout << "Access denied - You must be at least 18 years old.\n"; +} diff --git a/Tanay/CPP/C++_Exercises.cpp b/Tanay/CPP/C++_Exercises.cpp new file mode 100644 index 000000000..b341a5d8e --- /dev/null +++ b/Tanay/CPP/C++_Exercises.cpp @@ -0,0 +1,15 @@ +C++ Exercises +You can test your C++ skills with W3Schools' Exercises. + +Exercises +We have gathered a variety of C++ exercises (with answers) for each C++ Chapter. + +Try to solve an exercise by editing some code, or show the answer to see what you've done wrong. + +Count Your Score +You will get 1 point for each correct answer. Your score and total score will always be displayed. + +Start C++ Exercises +Good luck! + + diff --git a/Tanay/CPP/C++_Files.txt b/Tanay/CPP/C++_Files.txt new file mode 100644 index 000000000..b3e46a670 --- /dev/null +++ b/Tanay/CPP/C++_Files.txt @@ -0,0 +1,58 @@ + +C++ Files +The fstream library allows us to work with files. + +To use the fstream library, include both the standard AND the header file: + +Example +#include +#include +There are three classes included in the fstream library, which are used to create, write or read files: + +Class Description +ofstream Creates and writes to files +ifstream Reads from files +fstream A combination of ofstream and ifstream: creates, reads, and writes to files +Create and Write To a File +To create a file, use either the ofstream or fstream class, and specify the name of the file. + +To write to the file, use the insertion operator (<<). + +Example +#include +#include +using namespace std; + +int main() { + // Create and open a text file + ofstream MyFile("filename.txt"); + + // Write to the file + MyFile << "Files can be tricky, but it is fun enough!"; + + // Close the file + MyFile.close(); +} +Why do we close the file? +It is considered good practice, and it can clean up unnecessary memory space. + +Read a File +To read from a file, use either the ifstream or fstream class, and the name of the file. + +Note that we also use a while loop together with the getline() function (which belongs to the ifstream class) to read the file line by line, and to print the content of the file: + +Example +// Create a text string, which is used to output the text file +string myText; + +// Read from the text file +ifstream MyReadFile("filename.txt"); + +// Use a while loop together with the getline() function to read the file line by line +while (getline (MyReadFile, myText)) { + // Output the text from the file + cout << myText; +} + +// Close the file +MyReadFile.close(); diff --git a/Tanay/CPP/C++_For_Loop.txt b/Tanay/CPP/C++_For_Loop.txt new file mode 100644 index 000000000..c47e4aa5c --- /dev/null +++ b/Tanay/CPP/C++_For_Loop.txt @@ -0,0 +1,34 @@ +C++ For Loop +C++ For Loop +When you know exactly how many times you want to loop through a block of code, use the for loop instead of a while loop: + +Syntax +for (statement 1; statement 2; statement 3) { + // code block to be executed +} +Statement 1 is executed (one time) before the execution of the code block. + +Statement 2 defines the condition for executing the code block. + +Statement 3 is executed (every time) after the code block has been executed. + +The example below will print the numbers 0 to 4: + +Example +for (int i = 0; i < 5; i++) { + cout << i << "\n"; +} +Example explained +Statement 1 sets a variable before the loop starts (int i = 0). + +Statement 2 defines the condition for the loop to run (i must be less than 5). If the condition is true, the loop will start over again, if it is false, the loop will end. + +Statement 3 increases a value (i++) each time the code block in the loop has been executed. + +Another Example +This example will only print even values between 0 and 10: + +Example +for (int i = 0; i <= 10; i = i + 2) { + cout << i << "\n"; +} diff --git a/Tanay/CPP/C++_Function_Parameters.txt b/Tanay/CPP/C++_Function_Parameters.txt new file mode 100644 index 000000000..75d639e2b --- /dev/null +++ b/Tanay/CPP/C++_Function_Parameters.txt @@ -0,0 +1,28 @@ + +C++ Function Parameters +Parameters and Arguments +Information can be passed to functions as a parameter. Parameters act as variables inside the function. + +Parameters are specified after the function name, inside the parentheses. You can add as many parameters as you want, just separate them with a comma: + +Syntax +void functionName(parameter1, parameter2, parameter3) { + // code to be executed +} +The following example has a function that takes a string called fname as parameter. When the function is called, we pass along a first name, which is used inside the function to print the full name: + +Example +void myFunction(string fname) { + cout << fname << " Refsnes\n"; +} + +int main() { + myFunction("Liam"); + myFunction("Jenny"); + myFunction("Anja"); + return 0; +} + +// Liam Refsnes +// Jenny Refsnes +// Anja Refsnes diff --git a/Tanay/CPP/C++_Functions.txt b/Tanay/CPP/C++_Functions.txt new file mode 100644 index 000000000..0689c401d --- /dev/null +++ b/Tanay/CPP/C++_Functions.txt @@ -0,0 +1,97 @@ +C++ Functions +A function is a block of code which only runs when it is called. + +You can pass data, known as parameters, into a function. + +Functions are used to perform certain actions, and they are important for reusing code: Define the code once, and use it many times. + +Create a Function +C++ provides some pre-defined functions, such as main(), which is used to execute code. But you can also create your own functions to perform certain actions. + +To create (often referred to as declare) a function, specify the name of the function, followed by parentheses (): + +Syntax +void myFunction() { + // code to be executed +} +Example Explained +myFunction() is the name of the function +void means that the function does not have a return value. You will learn more about return values later in the next chapter +inside the function (the body), add code that defines what the function should do +Call a Function +Declared functions are not executed immediately. They are "saved for later use", and will be executed later, when they are called. + +To call a function, write the function's name followed by two parentheses () and a semicolon ; + +In the following example, myFunction() is used to print a text (the action), when it is called: + +Example +Inside main, call myFunction(): + +// Create a function +void myFunction() { + cout << "I just got executed!"; +} + +int main() { + myFunction(); // call the function + return 0; +} + +// Outputs "I just got executed!" +A function can be called multiple times: + +Example +void myFunction() { + cout << "I just got executed!\n"; +} + +int main() { + myFunction(); + myFunction(); + myFunction(); + return 0; +} + +// I just got executed! +// I just got executed! +// I just got executed! +Function Declaration and Definition +A C++ function consist of two parts: + +Declaration: the function's name, return type, and parameters (if any) +Definition: the body of the function (code to be executed) +void myFunction() { // declaration + // the body of the function (definition) +} +Note: If a user-defined function, such as myFunction() is declared after the main() function, an error will occur. It is because C++ works from top to bottom; which means that if the function is not declared above main(), the program is unaware of it: + +Example +int main() { + myFunction(); + return 0; +} + +void myFunction() { + cout << "I just got executed!"; +} + +// Error +However, it is possible to separate the declaration and the definition of the function - for code optimization. + +You will often see C++ programs that have function declaration above main(), and function definition below main(). This will make the code better organized and easier to read: + +Example +// Function declaration +void myFunction(); + +// The main method +int main() { + myFunction(); // call the function + return 0; +} + +// Function definition +void myFunction() { + cout << "I just got executed!"; +} diff --git a/Tanay/CPP/C++_Inheritance.txt b/Tanay/CPP/C++_Inheritance.txt new file mode 100644 index 000000000..d9bcedc72 --- /dev/null +++ b/Tanay/CPP/C++_Inheritance.txt @@ -0,0 +1,33 @@ +Inheritance +In C++, it is possible to inherit attributes and methods from one class to another. We group the "inheritance concept" into two categories: + +derived class (child) - the class that inherits from another class +base class (parent) - the class being inherited from +To inherit from a class, use the : symbol. + +In the example below, the Car class (child) inherits the attributes and methods from the Vehicle class (parent): + +Example +// Base class +class Vehicle { + public: + string brand = "Ford"; + void honk() { + cout << "Tuut, tuut! \n" ; + } +}; + +// Derived class +class Car: public Vehicle { + public: + string model = "Mustang"; +}; + +int main() { + Car myCar; + myCar.honk(); + cout << myCar.brand + " " + myCar.model; + return 0; +} +Why And When To Use "Inheritance"? +- It is useful for code reusability: reuse attributes and methods of an existing class when you create a new class. diff --git a/Tanay/CPP/C++_OOP.txt b/Tanay/CPP/C++_OOP.txt new file mode 100644 index 000000000..d5744c9a1 --- /dev/null +++ b/Tanay/CPP/C++_OOP.txt @@ -0,0 +1,45 @@ +C++ What is OOP? +OOP stands for Object-Oriented Programming. + +Procedural programming is about writing procedures or functions that perform operations on the data, while object-oriented programming is about creating objects that contain both data and functions. + +Object-oriented programming has several advantages over procedural programming: + +OOP is faster and easier to execute +OOP provides a clear structure for the programs +OOP helps to keep the C++ code DRY "Don't Repeat Yourself", and makes the code easier to maintain, modify and debug +OOP makes it possible to create full reusable applications with less code and shorter development time +Tip: The "Don't Repeat Yourself" (DRY) principle is about reducing the repetition of code. You should extract out the codes that are common for the application, and place them at a single place and reuse them instead of repeating it. + +C++ What are Classes and Objects? +Classes and objects are the two main aspects of object-oriented programming. + +Look at the following illustration to see the difference between class and objects: + +class +Fruit + +objects +Apple + +Banana + +Mango + +Another example: + +class +Car + +objects +Volvo + +Audi + +Toyota + +So, a class is a template for objects, and an object is an instance of a class. + +When the individual objects are created, they inherit all the variables and functions from the class. + +You will learn much more about classes and objects in the next chapter. diff --git a/Tanay/CPP/C++_Online Compiler.cpp b/Tanay/CPP/C++_Online Compiler.cpp new file mode 100644 index 000000000..1ec913288 --- /dev/null +++ b/Tanay/CPP/C++_Online Compiler.cpp @@ -0,0 +1,24 @@ + +C++ Compiler (Editor) +With our online C++ compiler, you can edit C++ code, and view the result in your browser. + +#include +using namespace std; + +int main() { + cout << "Hello World!"; + return 0; +} +Hello World! +Click on the "Try it Yourself" button to see how it works. + +C++ Compiler Explained +The window to the left is editable - edit the code and click on the "Run" button to view the result in the right window. + +The icons are explained in the table below: + +Icon Description +Go to www.w3schools.com +Menu button for more options +Change orientation (horizontally or vertically) +Change color theme (dark or light) diff --git a/Tanay/CPP/C++_Pointers.txt b/Tanay/CPP/C++_Pointers.txt new file mode 100644 index 000000000..6ddb92ed1 --- /dev/null +++ b/Tanay/CPP/C++_Pointers.txt @@ -0,0 +1,38 @@ +C++ Pointers +C++ Pointers +Creating Pointers +You learned from the previous chapter, that we can get the memory address of a variable by using the & operator: + +Example +string food = "Pizza"; // A food variable of type string + +cout << food; // Outputs the value of food (Pizza) +cout << &food; // Outputs the memory address of food (0x6dfed4) +A pointer however, is a variable that stores the memory address as its value. + +A pointer variable points to a data type (like int or string) of the same type, and is created with the * operator. The address of the variable you're working with is assigned to the pointer: + +Example +string food = "Pizza"; // A food variable of type string +string* ptr = &food; // A pointer variable, with the name ptr, that stores the address of food + +// Output the value of food (Pizza) +cout << food << "\n"; + +// Output the memory address of food (0x6dfed4) +cout << &food << "\n"; + +// Output the memory address of food with the pointer (0x6dfed4) +cout << ptr << "\n"; +Example explained +Create a pointer variable with the name ptr, that points to a string variable, by using the asterisk sign * (string* ptr). Note that the type of the pointer has to match the type of the variable you're working with. + +Use the & operator to store the memory address of the variable called food, and assign it to the pointer. + +Now, ptr holds the value of food's memory address. + +Tip: There are three ways to declare pointer variables, but the first way is preferred: + +string* mystring; // Preferred +string *mystring; +string * mystring; diff --git a/Tanay/CPP/C++_Polymorphism.txt b/Tanay/CPP/C++_Polymorphism.txt new file mode 100644 index 000000000..8aa9de1ef --- /dev/null +++ b/Tanay/CPP/C++_Polymorphism.txt @@ -0,0 +1,71 @@ +C++ Polymorphism +Polymorphism +Polymorphism means "many forms", and it occurs when we have many classes that are related to each other by inheritance. + +Like we specified in the previous chapter; Inheritance lets us inherit attributes and methods from another class. Polymorphism uses those methods to perform different tasks. This allows us to perform a single action in different ways. + +For example, think of a base class called Animal that has a method called animalSound(). Derived classes of Animals could be Pigs, Cats, Dogs, Birds - And they also have their own implementation of an animal sound (the pig oinks, and the cat meows, etc.): + +Example +// Base class +class Animal { + public: + void animalSound() { + cout << "The animal makes a sound \n" ; + } +}; + +// Derived class +class Pig : public Animal { + public: + void animalSound() { + cout << "The pig says: wee wee \n" ; + } +}; + +// Derived class +class Dog : public Animal { + public: + void animalSound() { + cout << "The dog says: bow wow \n" ; + } +}; +Remember from the Inheritance chapter that we use the : symbol to inherit from a class. + +Now we can create Pig and Dog objects and override the animalSound() method: + +Example +// Base class +class Animal { + public: + void animalSound() { + cout << "The animal makes a sound \n" ; + } +}; + +// Derived class +class Pig : public Animal { + public: + void animalSound() { + cout << "The pig says: wee wee \n" ; + } +}; + +// Derived class +class Dog : public Animal { + public: + void animalSound() { + cout << "The dog says: bow wow \n" ; + } +}; + +int main() { + Animal myAnimal; + Pig myPig; + Dog myDog; + + myAnimal.animalSound(); + myPig.animalSound(); + myDog.animalSound(); + return 0; +} diff --git a/Tanay/CPP/C++_Quiz.txt b/Tanay/CPP/C++_Quiz.txt new file mode 100644 index 000000000..4f86fe356 --- /dev/null +++ b/Tanay/CPP/C++_Quiz.txt @@ -0,0 +1,15 @@ +C++ Quiz +You can test your C++ skills with W3Schools' Quiz. + +The Test +The test contains 25 questions and there is no time limit. + +The test is not official, it's just a nice way to see how much you know, or don't know, about C++. + +Count Your Score +You will get 1 point for each correct answer. At the end of the Quiz, your total score will be displayed. Maximum score is 25 points. + +Start the Quiz +Good luck! + + diff --git a/Tanay/CPP/C++_References.txt b/Tanay/CPP/C++_References.txt new file mode 100644 index 000000000..ceb6ce8a1 --- /dev/null +++ b/Tanay/CPP/C++_References.txt @@ -0,0 +1,14 @@ +C++ References +Creating References +A reference variable is a "reference" to an existing variable, and it is created with the & operator: + +string food = "Pizza"; // food variable +string &meal = food; // reference to food +Now, we can use either the variable name food or the reference name meal to refer to the food variable: + +Example +string food = "Pizza"; +string &meal = food; + +cout << food << "\n"; // Outputs Pizza +cout << meal << "\n"; // Outputs Pizza diff --git a/Tanay/CPP/C++_Short_Hand_If_Else.txt b/Tanay/CPP/C++_Short_Hand_If_Else.txt new file mode 100644 index 000000000..504f2f4c4 --- /dev/null +++ b/Tanay/CPP/C++_Short_Hand_If_Else.txt @@ -0,0 +1,21 @@ +C++ Short Hand If Else +Short Hand If...Else (Ternary Operator) +There is also a short-hand if else, which is known as the ternary operator because it consists of three operands. It can be used to replace multiple lines of code with a single line. It is often used to replace simple if else statements: + +Syntax +variable = (condition) ? expressionTrue : expressionFalse; +Instead of writing: + +Example +int time = 20; +if (time < 18) { + cout << "Good day."; +} else { + cout << "Good evening."; +} +You can simply write: + +Example +int time = 20; +string result = (time < 18) ? "Good day." : "Good evening."; +cout << result; diff --git a/Tanay/CPP/C++_Switch.txt b/Tanay/CPP/C++_Switch.txt new file mode 100644 index 000000000..0f20cea12 --- /dev/null +++ b/Tanay/CPP/C++_Switch.txt @@ -0,0 +1,75 @@ +C++ Switch +C++ Switch Statements +Use the switch statement to select one of many code blocks to be executed. + +Syntax +switch(expression) { + case x: + // code block + break; + case y: + // code block + break; + default: + // code block +} +This is how it works: + +The switch expression is evaluated once +The value of the expression is compared with the values of each case +If there is a match, the associated block of code is executed +The break and default keywords are optional, and will be described later in this chapter +The example below uses the weekday number to calculate the weekday name: + +Example +int day = 4; +switch (day) { + case 1: + cout << "Monday"; + break; + case 2: + cout << "Tuesday"; + break; + case 3: + cout << "Wednesday"; + break; + case 4: + cout << "Thursday"; + break; + case 5: + cout << "Friday"; + break; + case 6: + cout << "Saturday"; + break; + case 7: + cout << "Sunday"; + break; +} +// Outputs "Thursday" (day 4) +The break Keyword +When C++ reaches a break keyword, it breaks out of the switch block. + +This will stop the execution of more code and case testing inside the block. + +When a match is found, and the job is done, it's time for a break. There is no need for more testing. + +A break can save a lot of execution time because it "ignores" the execution of all the rest of the code in the switch block. + + +The default Keyword +The default keyword specifies some code to run if there is no case match: + +Example +int day = 4; +switch (day) { + case 6: + cout << "Today is Saturday"; + break; + case 7: + cout << "Today is Sunday"; + break; + default: + cout << "Looking forward to the Weekend"; +} +// Outputs "Looking forward to the Weekend" diff --git a/Tanay/CPP/C++_While_Loop.txt b/Tanay/CPP/C++_While_Loop.txt new file mode 100644 index 000000000..ded3a68d3 --- /dev/null +++ b/Tanay/CPP/C++_While_Loop.txt @@ -0,0 +1,23 @@ + +C++ While Loop +C++ Loops +Loops can execute a block of code as long as a specified condition is reached. + +Loops are handy because they save time, reduce errors, and they make code more readable. + +C++ While Loop +The while loop loops through a block of code as long as a specified condition is true: + +Syntax +while (condition) { + // code block to be executed +} +In the example below, the code in the loop will run, over and over again, as long as a variable (i) is less than 5: + +Example +int i = 0; +while (i < 5) { + cout << i << "\n"; + i++; +} +Note: Do not forget to increase the variable used in the condition, otherwise the loop will never end! diff --git a/Tanay/CPP/readme.md b/Tanay/CPP/readme.md index 434c06859..e94505da2 100644 --- a/Tanay/CPP/readme.md +++ b/Tanay/CPP/readme.md @@ -1 +1,2 @@ + This is all about C++ diff --git a/Tanay/readme.md b/Tanay/readme.md index 37fc9b401..ebeb7bf9c 100644 --- a/Tanay/readme.md +++ b/Tanay/readme.md @@ -1,2 +1,7 @@ Want to Learn Js and Py + and improve in C++ + + + +